From 6276e182b20b623ddc3c41f040d9fba6710f20aa Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Mon, 31 Jul 2023 13:05:20 +0300 Subject: [PATCH 01/63] fix: setting default sidebar pages on config #9950 --- src/main/frontend/components/container.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/container.cljs b/src/main/frontend/components/container.cljs index 126e7d8d2b92..725a1302c27c 100644 --- a/src/main/frontend/components/container.cljs +++ b/src/main/frontend/components/container.cljs @@ -587,7 +587,7 @@ (let [page (util/safe-page-name-sanity-lc page) [db-id block-type] (if (= page "contents") ["contents" :contents] - [page :page])] + [(:db/id (db/pull [:block/name page])) :page])] (state/sidebar-add-block! current-repo db-id block-type))) (reset! sidebar-inited? true)))) (when (state/mobile?) From f2d1de9e9988913dd77193d8005e8bf733977d94 Mon Sep 17 00:00:00 2001 From: einmeterhecht <119974780+einmeterhecht@users.noreply.github.com> Date: Fri, 28 Jul 2023 17:40:01 +0200 Subject: [PATCH 02/63] Translate all missing entries to german --- src/resources/dicts/de.edn | 369 ++++++++++++++++++++++++++++++++++--- 1 file changed, 347 insertions(+), 22 deletions(-) diff --git a/src/resources/dicts/de.edn b/src/resources/dicts/de.edn index 50abf8081e74..a8f0f4b52c19 100644 --- a/src/resources/dicts/de.edn +++ b/src/resources/dicts/de.edn @@ -12,6 +12,8 @@ :discourse-title "Unser Forum!" :download "Herunterladen" :export "Exportieren" + :export-copied-to-clipboard "In die Zwischenablage kopiert!" + :export-copy-to-clipboard "Kopieren" :export-edn "Als EDN exportieren" :export-graph "Graph exportieren" :export-json "Als JSON exportieren" @@ -20,21 +22,28 @@ :export-page "Seite exportieren" :export-public-pages "Öffentliche Seiten exportieren" :export-roam-json "Als Roam JSON exportieren" + :export-save-to-file "Als Datei speichern" + :export-transparent-background "Transparenter Hintergrund" :graph "Graph" :graph-search "Graph durchsuchen" :heading "Überschrift {1}" :highlight "Hervorhebung" + :home "Startseite" :host "Host" :import "Importieren" :importing "Importiere" :italics "Kursiv" :join-community "Treten Sie der Community bei" :language "Sprache" + :loading "Lädt..." :loading-files "Dateien laden" :login "Einloggen" :logout "Ausloggen" + :logout-user "Ausloggen ({1})" :more "Mehr" :new-graph "Neuen Graphen hinzufügen" + :new-page "Neue Seite:" + :new-whiteboard "Neues Whiteboard:" :open-a-directory "Öffne ein lokales Verzeichnis" :open-new-window "Neues Fenster" :page-search "In der aktuellen Seite suchen" @@ -48,6 +57,7 @@ :relaunch-confirm-to-work "Sie sollten die App neu starten, damit sie funktioniert. Möchten Sie sie jetzt neu starten?" :remove-background "Hintergrund entfernen" :remove-heading "Überschrift entfernen" + :remove-orphaned-pages "Nie referenzierte Seiten löschen?" :save "Speichern" :search "Suchen oder Seite erstellen" :settings "Einstellungen" @@ -58,8 +68,11 @@ :sync-from-local-files "Aktualisieren" :sync-from-local-files-detail "Änderungen aus lokalen Dateien importieren" :themes "Themen" + :toggle-theme "Thema umschalten" :type "Typ" :untitled "Ohne Titel" + :whiteboard "Whiteboard" + :whiteboards "Whiteboards" :yes "Ja" :accessibility/skip-to-main-content "Zum Hauptinhalt springen" @@ -73,6 +86,29 @@ :asset/show-in-folder "Bild im Ordner anzeigen" :block/name "Seitenname" + + :bug-report/main-title "Bug melden" + :bug-report/clipboard-inspector-title "Untersuchung der Zwischenablage" + :bug-report/main-desc "Können Sie uns mit einer Fehlermeldung helfen? Wir werden es schnellstmöglich beheben." + :bug-report/section-clipboard-title "Steht der Fehler in Zusammenhang mit einer dieser Funktionen?" + :bug-report/section-clipboard-desc "Sie können diese praktischen Werkzeuge verwenden, um uns zusätzliche Informationen zu geben." + :bug-report/section-clipboard-btn-title "Zwischenablagenhelfer" + :bug-report/section-clipboard-btn-desc "Daten der Zwischenablage sammeln und einsehen" + :bug-report/section-issues-title "Oder..." + :bug-report/section-issues-desc "Wenn Ihnen keine Werkzeuge zum Sammeln zusätzlicher Information zur Verfügung stehen, melden Sie den Fehler bitte direkt." + :bug-report/section-issues-btn-title "Fehlerbericht einsenden" + :bug-report/section-issues-btn-desc "Helfen Sie, Logseq zu verbessern!" + :bug-report/inspector-page-desc-1 "Drücken Sie Ctrl+V / ⌘+V, um Ihre Zwischenablage einzusehen" + :bug-report/inspector-page-desc-2 "oder klicken Sie hier zum Einfügen, wenn Sie die mobile Version nutzen" + :bug-report/inspector-page-placeholder "Auf Mobilgeräten hier lang gedrückt halten" + :bug-report/inspector-page-tip "Etwas stimmt nicht? Kein Problem, klicken Sie hier, um zum letzten Schritt zurückzugehen." + :bug-report/inspector-page-btn-back "Zurück" + :bug-report/inspector-page-btn-copy "Ergebnis kopieren" + :bug-report/inspector-page-copy-notif "In die Zwischenablage kopiert!" + :bug-report/inspector-page-btn-create-issue "Issue erstellen" + :bug-report/inspector-page-desc-clipboard "Hier sind die Daten aus der Zwischenablage." + :bug-report/inspector-page-desc-copy "Wenn Sie das teilen wollen, drücken Sie den \"Kopieren\"-Knopf." + :bug-report/inspector-page-desc-create-issue "Sie können nun die Ergebnisse melden. Bitte fügen Sie den Inhalt der Zwischenablage im Abschnitt 'Additional Context' ein und beschreiben Sie, woher Sie ihn ursprünglich kopiert haben. Danke viel Mal!" :color/gray "Grau" :color/red "Rot" @@ -95,6 +131,7 @@ :file-sync/graph-deleted "Der aktuelle Remote-Graph wurde gelöscht" :file-sync/other-user-graph "Aktueller lokaler Graph ist an den Remote-Graph des anderen Benutzers gebunden. Kann also nicht mit der Synchronisierung beginnen." + :file-sync/rsapi-cannot-upload-err "Konnte nicht mit der Synchronisierung beginnen; bitte überprüfen Sie, ob die lokale Zeit korrekt ist." :file/format-not-supported "Format .{1} wird nicht unterstützt." :file/last-modified-at "Zuletzt geändert am" @@ -102,6 +139,7 @@ :file/no-data "Keine Daten" :file/validate-existing-file-error "Seite existiert bereits mit einer anderen Datei: {1}, aktuelle Datei: {2}. Bitte behalten Sie nur eine davon und indizieren Sie Ihren Graphen neu." + :file-rn/all-action "Alle Aktionen anwenden! ({1})" :file-rn/apply-rename "Anwenden des Vorgangs zur Datei-Umbenennung" :file-rn/close-panel "Das Panel schließen" :file-rn/confirm-proceed "Format aktualisieren!" @@ -127,32 +165,73 @@ :file-rn/suggest-rename "Aktion erforderlich: " :file-rn/unreachable-title "Warnung! Der Seitenname wird unter dem aktuellen Dateinamenformat zu {1}, es sei denn, die Eigenschaft `title::` wird manuell gesetzt" + :flashcards/modal-btn-forgotten "Vergessen" + :flashcards/modal-btn-hide-answers "Antworten verstecken" + :flashcards/modal-btn-next-card "Nächste" + :flashcards/modal-btn-recall "Erinnern ging eine Weile" + :flashcards/modal-btn-remembered "Gewusst" + :flashcards/modal-btn-reset "Zurücksetzen" + :flashcards/modal-btn-reset-tip "Setzen Sie diese Karte zurück, um sie sofort wieder zu prüfen." + :flashcards/modal-btn-show-answers "Antworten zeigen" + :flashcards/modal-btn-show-clozes "Clozes zeigen" + :flashcards/modal-current-total "Aktuell/Total" + :flashcards/modal-finished "Gratulation, alle Karten für diese Runde sind geschafft, bis zum nächsten Mal! 💯" + :flashcards/modal-overdue-total "Überfällig/Total" + :flashcards/modal-select-all "Alle" + :flashcards/modal-select-switch "Wechseln zu" + :flashcards/modal-toggle-preview-mode "Vorschau-Modus umschalten" + :flashcards/modal-toggle-random-mode "Zufall-Modus umschalten" + :flashcards/modal-welcome-desc-1 "Fügen Sie \"#card\" zu einem beliebigen Block hinzu, um daraus eine Karte zu machen, oder nutzen Sie \"/cloze\", um Clozes zu erstellen." + :flashcards/modal-welcome-desc-2 "Sie können " + :flashcards/modal-welcome-desc-3 "diesen Link öffnen" + :flashcards/modal-welcome-desc-4 " um die Dokumentation einzusehen." + :flashcards/modal-welcome-title "Zeit, eine Karte zu erstellen!" + :graph/all-graphs "Alle Graphen" + :graph/local-graphs "Lokale Graphen:" :graph/persist "Logseq synchronisiert gerade den internen Status, bitte warten Sie einige Sekunden." :graph/persist-error "Synchronisation des internen Status fehlgeschlagen." + :graph/remote-graphs "Remote-Graphen:" :graph/save "Speichern..." :graph/save-error "Speichern fehlgeschlagen" :graph/save-success "Erfolgreich gespeichert" + + :header/go-back "Zurück" + :header/go-forward "Vorwärts" + :header/more "Weitere Optionen" + :header/search "Suchen" + :header/toggle-left-sidebar "Linke Seitenleiste umschalten" - :help-shortcut-title "Hier klicken, um Tastenkombinationen und weitere Tipps zu sehen" :help/about "Über Logseq" + :help/awesome-logseq "Awesome Logseq" :help/block-content-autocomplete "Blockinhalt (Quelltext, Zitate, Abfragen, etc.) Autovervollständigung" :help/block-reference "Blockverweis" + :help/blog "Logseq Blog" :help/bug "Fehlerbericht" :help/changelog "Änderungsprotokoll" :help/context-menu "Kontextmenü" :help/docs "Dokumentation" :help/feature "Feature-Anfrage" + :help/forum-community "Forum" + :help/markdown-syntax "Syntax von Markdown" + :help/open-link-in-sidebar "Link in Seitenleiste öffnen" + :help/org-mode-syntax "Syntax von Org-mode" :help/privacy "Datenschutzrichtlinie" :help/reference-autocomplete "Seitenverweis Autovervollständigung" + :help/roadmap "Roadmap" :help/shortcut "Tastaturkürzel" :help/shortcut-page-title "Tastaturbefehl" :help/shortcuts "Tastaturkürzel" + :help-shortcut-title "Hier klicken, um Tastenkombinationen und weitere Tipps zu sehen" :help/shortcuts-triggers "Auslöser" :help/slash-autocomplete "/-Autovervollständigung" :help/start "Einstieg" :help/terms "Nutzungsbedingungen" - :help/open-link-in-sidebar "Link in Seitenleiste öffnen" + :help/title-about "About" + :help/title-community "Community" + :help/title-development "Entwicklung" + :help/title-terms "Rechtliches" + :help/title-usage "Bedienung" :left-side-bar/create "Erstellen" :left-side-bar/journals "Journale" @@ -160,44 +239,103 @@ :left-side-bar/nav-recent-pages "Neuste" :left-side-bar/new-page "Neue Seite" :left-side-bar/new-whiteboard "Neues Whiteboard" + :left-side-bar/switch "Wechseln zu:" :linked-references/filter-search "Suche in verknüpften Seiten" :notification/clear-all "Alles löschen" :on-boarding/add-graph "Graph hinzufügen" + :on-boarding/command-palette-quick-tour "Kurze Tour für Neueinsteiger" :on-boarding/demo-graph "Dies ist ein Demo-Graph. Änderungen werden nicht gespeichert, solange Sie kein lokales Verzeichnis öffnen." - :on-boarding/new-graph-desc-1 "Logseq unterstützt sowohl Markdown als auch Org-mode. Sie können ein bestehendes Verzeichnis öffnen oder auf Ihrem Rechner ein neues Verzeichnis anlegen. Ein Verzeichnis wird auch als Ordner bezeichnet. Ihre Daten werden nur auf diesem Gerät gespeichert." - :on-boarding/new-graph-desc-2 "Nachdem Sie ein Verzeichnis geöffnet haben, werden darin drei Ordner angelegt:" + + :on-boarding/importing-desc "Logseq importiert JSON, EDN und Markdown." + :on-boarding/importing-lsq-desc "Ein früheres Backup eines Logseq-Graphen aus EDN oder JSON importieren" + :on-boarding/importing-main-desc "Sie können dies auch später in der App tun." + :on-boarding/importing-main-title "Vorhandene Notizen importieren" + :on-boarding/importing-opml-desc " OPML-Dateien importieren" + :on-boarding/importing-roam-desc "Einen Roam JSON Export importieren" + :on-boarding/importing-title "Möchten Sie bestehende Notizen importieren?" + + :on-boarding/main-desc "Wählen Sie zunächst einen Verzeichnis, wo Logseq Ihre Gedanken, Ideen und Notizen aufbewahren kann." + :on-boarding/main-title (fn [] ["Willkommen bei " [:strong "Logseq!"]]) + :on-boarding/new-graph-desc-1 "Zur Textformatierung unterstützt Logseq sowohl Markdown als auch Org-mode. Ihre Daten werden nur auf diesem Gerät gespeichert. Sie können ein bestehendes Verzeichnis auf Ihrem Rechner öffnen ein neues anlegen. Ein Verzeichnis wird auch als Ordner bezeichnet." + :on-boarding/new-graph-desc-2 "Nachdem Sie ein Verzeichnis geöffnet haben, werden darin Unterordner angelegt:" :on-boarding/new-graph-desc-3 "/journals - enthält Ihre Journal-Seiten" :on-boarding/new-graph-desc-4 "/pages - enthält die anderen Seiten" - :on-boarding/new-graph-desc-5 "/logseq - enthält die Konfiguration, custom.css und Metadaten." + :on-boarding/new-graph-desc-5 "/logseq - enthält Einstellungen, Metadaten und die custom.css" :on-boarding/open-local-dir "Lokales Verzeichnis öffnen" + + :on-boarding/quick-tour-btn-back "Zurück" + :on-boarding/quick-tour-btn-finish "Beenden" + :on-boarding/quick-tour-btn-next "Weiter" + :on-boarding/quick-tour-btn-skip "Tour überspringen" + :on-boarding/quick-tour-favorites-desc-1 "Heften Sie Ihre Lieblingsseiten mit dem `... ` - Menu zu den Favoriten an." + :on-boarding/quick-tour-favorites-desc-2 "Wir haben einige Vorlagenseiten hinzugefügt, um Ihnen beim Einstieg zu helfen. Sie können diese Seiten entfernen, wenn Sie sie nicht mehr benötigen." + :on-boarding/quick-tour-favorites-title "⭐️ Favoriten" + :on-boarding/quick-tour-help-desc "Hier können Sie jederzeit Hilfe und andere Informationen zu Logseq erhalten." + :on-boarding/quick-tour-help-title "❓ Hilfe" + :on-boarding/quick-tour-journal-page-desc-1 "Das ist die heutige Seite im Journal. Hier können Sie Ihre Überlegungen, Erkenntnisse und Ideen festhalten. Sorgen Sie sich nicht um Organisation. Schreiben Sie drauflos und" + :on-boarding/quick-tour-journal-page-desc-2 "[[verlinken]]" + :on-boarding/quick-tour-journal-page-desc-3 "Sie zu früheren Gedanken." + :on-boarding/quick-tour-journal-page-title "📆 Seiten im täglichen Journal" + :on-boarding/quick-tour-left-sidebar-desc "Öffnen Sie die linke Seitenleiste, um wichtige Menus in Logseq zu erkunden." + :on-boarding/quick-tour-left-sidebar-title "👀 Linke Seitenleiste" + :on-boarding/quick-tour-steps "SCHRITT " + + :on-boarding/section-app "APP Internes" + :on-boarding/section-assets "Eingefügte Grafiken & Dokumente" + :on-boarding/section-btn-desc "Vorhandenen Ordner öffnen oder Einen neuen anlegen" + :on-boarding/section-btn-title "Ordner auswählen" + :on-boarding/section-computer "Computer" + :on-boarding/section-config "Konfigurationsdatei" + :on-boarding/section-desc "Im gewählten Ordner wird Logseq 4 Unterordner anlegen." + :on-boarding/section-journals "Tägliche Notizen" + :on-boarding/section-pages "SEITEN" + :on-boarding/section-phone "Telefon" + :on-boarding/section-tip-1 "Jede Seite ist eine Datei, die nur auf ihrem {1} gespeichert ist." + :on-boarding/section-tip-2 "Wenn Sie möchten, können Sie Ihre Notizen später synchronisieren." + :on-boarding/section-title "Wie Logseq Ihre Arbeit speichert" + + :on-boarding/tour-whiteboard-btn-back "Zurück" + :on-boarding/tour-whiteboard-btn-finish "Beenden" + :on-boarding/tour-whiteboard-btn-next "Weiter" :on-boarding/tour-whiteboard-home "{1} Zuhause für Ihre Whiteboards" :on-boarding/tour-whiteboard-home-description "Whiteboards haben einen eigenen Bereich in der App, in dem Sie sie auf einen Blick sehen, neue erstellen oder einfach löschen können." :on-boarding/tour-whiteboard-new "{1} Erstelle neues Whiteboard" :on-boarding/tour-whiteboard-new-description "Es gibt mehrere Möglichkeiten, ein neues Whiteboard zu erstellen. Eine davon ist immer direkt hier im Dashboard." - :on-boarding/welcome-whiteboard-modal-title "Eine neue Leinwand für Ihre Gedanken." + :on-boarding/welcome-whiteboard-modal-description "Whiteboards sind ein großartiges Werkzeug für Brainstorming und Organisation. Jetzt können Sie jeden Ihrer Gedanken aus der Wissensdatenbank oder neue Gedanken nebeneinander auf einer räumlichen Leinwand platzieren, um sie zu verbinden, zu assoziieren und auf neue Weise zu verstehen." :on-boarding/welcome-whiteboard-modal-skip "Überspringen" :on-boarding/welcome-whiteboard-modal-start "Whiteboarding beginnen" + :on-boarding/welcome-whiteboard-modal-title "Eine neue Leinwand für Ihre Gedanken." :page/add-to-favorites "Zu Favoriten hinzufügen" + :page/backlinks "Backlinks" :page/copy-page-url "Seiten-URL kopieren" :page/created-at "Erstellt am" :page/delete "Seite löschen" :page/delete-confirmation "Diese Seite und die zugehörige Datei löschen?" :page/earlier "Früher" + :page/illegal-page-name "Seitenname nicht zulässig!" + :page/logseq-is-having-a-problem "Logseq hat ein Problem festgestellt. Versuche zurückzukehren ..." :page/make-private "Privat machen" :page/make-public "Beim Export in HTML veröffentlichen" :page/open-backup-directory "Verzeichnis für Seiten-Backups öffnen" :page/open-in-finder "Im Verzeichnis öffnen" :page/open-with-default-app "Mit Standard-Anwendung öffnen" + :page/page-already-exists "Page “{1}” already exists!" :page/show-journals "Journal anzeigen" :page/show-whiteboards "Whiteboards anzeigen" + :page/slide-view "View as slides" + :page/slide-view-tip-go-fullscreen (fn [] [[:span.opacity-70 "Tip: press "] [:code "f"] [:span.opacity-70 " to go fullscreen"]]) + :page/something-went-wrong "Es ist etwas schief gelaufen." + :page/step "Schritt {1}" + :page/try "Versuch" :page/unfavorite "Seite aus Favoriten entfernen" :page/updated-at "Aktualisiert am" :page/version-history "Seitenverlauf anzeigen" + :page/whiteboard-to-journal-error "Whiteboard pages cannot be renamed to journal titles!" :paginates/next "Weiter" :paginates/pages "Total {1} Seiten" @@ -211,36 +349,56 @@ :pdf/toggle-dashed "Gestrichelter Stil für die Hervorhebung von Bereichen" :plugin/all "Alle" + :plugin/all-updated "Alle aktualisiert!" + :plugin/auto-check-for-updates "Automatisch Updates suchen" :plugin/check-all-updates "Alle Updates überprüfen" :plugin/check-update "Update überprüfen" + :plugin/checking-for-updates "Suche nach Aktualisierungen für Plugins ..." :plugin/contribute "✨ Schreiben und veröffentlichen Sie ein neues Plugin" :plugin/custom-js-alert "Datei custom.js gefunden. Darf sie ausgeführt werden? (Wenn Sie den Inhalt dieser Datei nicht verstehen, wird empfohlen, die Ausführung nicht zuzulassen, da dies gewisse Sicherheitsrisiken birgt)." :plugin/delete-alert "Wollen Sie wirklich das Plugin [{1}] deinstallieren?" :plugin/disabled "Deaktiviert" + :plugin/downloads "Downloads" :plugin/enabled "Aktiviert" + :plugin/found-n-updates "{1} Aktualisierungen gefunden" + :plugin/found-updates "Aktualisierungen gefunden" :plugin/install "Installieren" :plugin/installed "Installiert" + :plugin/installed-plugin "Plugin installiert: {1}" :plugin/installing "Installiere" + :plugin/list-of-updates "Aktualisierungen für Plugins: " :plugin/load-unpacked "Entpacktes Plugin laden" :plugin/marketplace "Marktplatz" :plugin/not-installed "Nicht installiert" + :plugin/open-logseq-dir "Öffnen" :plugin/open-package "Paket öffnen" + :plugin/open-preferences "Einstellungen öffnen" :plugin/open-settings "Einstellungen öffnen" :plugin/refresh-lists "Liste aktualisieren" :plugin/reload "Neu laden" + :plugin/remote-error "Serverfehler: " :plugin/restart "App neu starten" + :plugin/search-plugin "Plugins suchen" + :plugin/security-warning "Plugins haben Zugriff auf Ihre Graphen und die Dateien auf Ihrem Computer und können über Netzwerke kommunizieren." :plugin/stars "Sterne" + :plugin/title "Titel ({1})" :plugin/uninstall "Deinstallieren" :plugin/unpacked "Entpackt" :plugin/unpacked-tips "Plugin-Verzeichnis auswählen" + :plugin/up-to-date "Ist aktualisert: {1}" :plugin/update "Aktualisierung" + :plugin/update-all-selected "Alle ausgewählten aktualisieren" :plugin/update-available "Aktualisierung verfügbar" + :plugin/update-plugin "Aktualisiere plugin: {1} - {2}" + :plugin/updates-downloading "Aktualisierungen werden heruntergeladen" :plugin/updating "Aktualisiere" :plugin.install-from-file/menu-title "Aus plugins.edn installieren" :plugin.install-from-file/title "Plugins aus plugins.edn installieren" :plugin.install-from-file/notice "Die folgenden Plugins werden Ihre Plugins ersetzen:" :plugin.install-from-file/success "Alle Plugins installiert!" + + :query/config-property-settings "Einstellungen für diese Query:" :right-side-bar/all-pages "Alle Seiten" :right-side-bar/block-ref "Blockreferenz" @@ -248,20 +406,170 @@ :right-side-bar/flashcards "Karteikarten" :right-side-bar/graph-view "Graph-Ansicht" :right-side-bar/help "Hilfe" + :right-side-bar/history "(Dev) Verlauf rückgängig machen / wiederherstellen" + :right-side-bar/history-global "global" + :right-side-bar/history-pageonly "nur Seite" + :right-side-bar/history-redos "Redos" + :right-side-bar/history-undos "Undos" :right-side-bar/new-page "Neue Seite" :right-side-bar/page-graph "Seiten-Graph" :right-side-bar/separator "Griff zur Größenänderung der rechten Seitenleiste" :right-side-bar/show-journals "Zeige Journale" :right-side-bar/switch-theme "Zu {1} Thema wechseln" + :right-side-bar/toggle-right-sidebar "Rechte Seitenleiste umschalten" :right-side-bar/whiteboards "Whiteboards" - + + :select/default-select-multiple "Ein oder mehrere auswählen" + + :settings-page/app-updated "Ihre Version ist aktuell 🎉" + :settings-page/auto-expand-block-refs "Automatisch beim Heranzoomen Blockreferenzen erweitern..." + :settings-page/auto-expand-block-refs-tip "Diese Option steuert, ob Blockreferenzen beim Heranzoomen automatisch ausgeklappt werden." + :settings-page/changelog "Was ist neu?" + :settings-page/check-for-updates "Nach Updates suchen" + :settings-page/checking "Überprüfe ..." + :settings-page/custom-date-format-notification "Sie müssen den Graphen neu indizieren, damit diese Änderung wirksam wird." + :settings-page/git-desc-1 "Den Seitenverlauf können Sie über das Dreipunktemenu in der oberen rechten Ecke anzeigen." + :settings-page/git-desc-2 "Für professionelle Anwender unterstützt Logseq " + :settings-page/git-desc-3 " als Versionskontrollesystem. Verwenden Sie Git auf eigene Gefahr. Allgemeine Probleme von Git werden vom Logseq-Team nicht unterstützt." + :settings-page/git-tip "Wenn Sie Logseq Sync verwenden, können sie die Bearbeitungsgeschichte einer Seite direkt anzeigen. This section is for tech-savvy only." + :settings-page/native-titlebar "Native Titelleiste" + :settings-page/native-titlebar-desc "Die klassische Titelleiste auf Windows und Linux verwenden." + :settings-page/preferred-outdenting-tip "Linke Seite: Ausrücken mit Standardeinstellung - Rechte Seite: Ausrücken mit aktivierter Logischer Ausrückung" + :settings-page/preferred-outdenting-tip-more "→ Mehr erfahren" + :settings-page/preferred-pasting-file-hint "Wenn aktiviert, werden eingefügte Bilder aus dem Internet heruntergeladen und in assets/ gespeichert. Wenn deaktiviert, wird ein Weblink zum Bild eingefügt." + :settings-page/revision "Revision: " + :settings-page/sync-desc-1 "Klicken Sie" + :settings-page/sync-desc-2 "hier" + :settings-page/sync-desc-3 "für Anweisungen, wie Sie Synchronisation einrichten und nutzen können." + :settings-page/sync-diff-merge "Smart Merge bei der Synchronisation aktivieren" + :settings-page/sync-diff-merge-desc "Führt bei Konflikten die lokalen Änderungen automatisch mit den Dateien auf dem Server zusammen, anstatt die Dateien auf dem Server zu überschreiben." + :settings-page/sync-diff-merge-warn "Die Smart Merge-Fähigkeit kann auf einem Client erst nach der ersten erfolgreichen Synchronisation mit dem Server auf dem Graphen mit der neuen Logseq-Version aktiviert werden. Aktivieren Sie dies auf allen Geräten, um die beste Erfahrung zu erhalten." + :settings-page/tab-account "Account" + :settings-page/tab-editor "Editor" + :settings-page/theme-dark "Dunkel" + :settings-page/theme-light "Hell" + :settings-page/theme-system "System" + :settings-page/update-available "Neue Version gefunden: " + :settings-page/update-error-1 "⚠️ Ups, Etwas ist schiefgelaufen!" + :settings-page/update-error-2 " Überprüfen Sie den " + + :settings-permission/start-granting "Erlauben" + + :tips/all-done "Alles erledigt!" + + :tutorial/text #resource "tutorials/tutorial-en.md" + :tutorial/dummy-notes #resource "tutorials/dummy-notes-en.md" + + :whiteboard/add-block-or-page "Block oder Seite hinzufügen" + :whiteboard/align-bottom "Am unteren Rand ausrichten" + :whiteboard/align-center-horizontally "Horizontal mittig ausrichten" + :whiteboard/align-center-vertically "Vertikal mittig ausrichten" + :whiteboard/align-left "Am linken Rand ausrichten" + :whiteboard/align-right "Am rechten Rand ausrichten" + :whiteboard/align-top "Am oberen Rand ausrichten" + :whiteboard/arrow-head "Pfeilspitze" + :whiteboard/auto-resize "Automatisch Grösse ändern" + :whiteboard/bold "Fett" + :whiteboard/cache-outdated "Der Cache ist veraltet. Klicken Sie auf 'Neu indizieren' im Dropdown-Menu des Graphen." + :whiteboard/circle "Kreis" + :whiteboard/collapse "Einklappen" + :whiteboard/color "Farbe" + :whiteboard/connector "Verbindung" + :whiteboard/copy "Kopieren" + :whiteboard/cut "Ausschneiden" + :whiteboard/dashboard-card-created "Erstellt " + :whiteboard/dashboard-card-edited "Bearbeitet " + :whiteboard/dashboard-card-new-whiteboard "Neues Whiteboard" + :whiteboard/delete "Löschen" + :whiteboard/deselect-all "Auswahl zurücksetzen" + :whiteboard/dev-print-shape-props "(Dev) Eigenschaften anzeigen" + :whiteboard/distribute-horizontally "Horizontal verteilen" + :whiteboard/distribute-vertically "Vertikal verteilen" + :whiteboard/draw "Zeichnen" + :whiteboard/edit-pdf "PDF bearbeiten" + :whiteboard/eraser "Radiergummi" + :whiteboard/expand "Ausklappen" + :whiteboard/export "Exportieren" + :whiteboard/extra-large "Sehr Gross" + :whiteboard/extra-small "Sehr Klein" + :whiteboard/fill "Füllen" + :whiteboard/flip-horizontally "Horizontal spiegeln" + :whiteboard/flip-vertically "Vertikal spiegeln" + :whiteboard/group "Gruppieren" + :whiteboard/highlight "Hervorheben" + :whiteboard/huge "Gigantisch" + :whiteboard/italic "Kursiv" + :whiteboard/large "Gross" + :whiteboard/link "Verknüpfung" + :whiteboard/link-to-any-page-or-block "Auf Seiten oder Blöcke verlinken" + :whiteboard/link-whiteboard-or-block "Whiteboard/Seite/Block verknüpfen" + :whiteboard/lock "Sperren" + :whiteboard/medium "Normal" + :whiteboard/move-to-back "In den Hintergrund" + :whiteboard/move-to-front "In den Vordergrund" + :whiteboard/new-block "Neuer Block:" + :whiteboard/new-block-no-colon "Neuer Block" + :whiteboard/new-page "Neue Seite:" + :whiteboard/new-whiteboard "Neues Whiteboard" + :whiteboard/opacity "Deckkraft" + :whiteboard/open-page "Seite öffnen" + :whiteboard/open-page-in-sidebar "Seite in Seitenleiste öffnen" + :whiteboard/open-twitter-url "Link zu Twitter öffnen" + :whiteboard/open-website-url "Weblink öffnen" + :whiteboard/open-youtube-url "Link zu YouTube öffnen" + :whiteboard/pack-into-rectangle "In Rechteck packen" + :whiteboard/pan "Verschieben" + :whiteboard/paste "Einfügen" + :whiteboard/paste-as-link "Als Link einfügen" + :whiteboard/rectangle "Rechteck" + :whiteboard/redo "Wiederherstellen" + :whiteboard/references "Verweise" + :whiteboard/reload "Neu laden" + :whiteboard/remove-link "Link entfernen" + :whiteboard/scale-level "Grösse" + :whiteboard/search-only-blocks "Nur Blöcke suchen" + :whiteboard/search-only-pages "Nur Seiten suchen" + :whiteboard/select "Auswählen" + :whiteboard/select-all "Alle auswählen" + :whiteboard/select-custom-color "Benutzerdefinierte Farbe" + :whiteboard/shape "Form" + :whiteboard/shape-quick-links "Schnelllinks formen" + :whiteboard/small "Klein" + :whiteboard/snap-to-grid "Am Gitter einrasten" + :whiteboard/start-typing-to-search "Start typing to search..." + :whiteboard/stroke-type "Schriftart" + :whiteboard/text "Text" + :whiteboard/toggle-grid "Gitter anzeigen/ausblenden" + :whiteboard/triangle "Dreieck" + :whiteboard/twitter-url "Link zu Twitter" + :whiteboard/undo "Rückgängig" + :whiteboard/ungroup "Gruppierung aufheben" + :whiteboard/unlock "Entsperren" + :whiteboard/website-url "Weblink" + :whiteboard/youtube-url "Link zu YouTube" + :whiteboard/zoom-in "Heranzoomen" + :whiteboard/zoom-out "Herauszoomen" + :whiteboard/zoom-to-fit "Zoom an Zeichnung anpassen" + + :window/minimize "Minimieren" + :window/maximize "Maximieren" + :window/restore "Wiederherstellen" + :window/close "Schliessen" + :window/exit-fullscreen "Vollbild verlassen" + + :search/blocks-in-page "Suche nach Blöcken auf der Seite:" + :search/cache-outdated "Der Cache ist veraltet. Klicken Sie auf 'Neu indizieren' im Dropdown-Menu des Graphen." + :search/command-palette-tip-1 "Tipp: " + :search/command-palette-tip-2 " um die Befehlspalette zu öffnen" :search/items "Einträge" :search/page-names "In Seitennamen suchen" :search/publishing "Suchen" + :search/recent "Kürzlich gesucht:" :search/result-for "Suchergebnisse für" :search-item/block "Block" :search-item/file "Datei" + :search-item/no-result "Keine übereinstimmenden Treffer" :search-item/page "Seite" :search-item/whiteboard "Whiteboard" @@ -342,6 +650,7 @@ :context-menu/preview-flashcard "Vorschau der Karteikarte" :context-menu/template-exists-warning "Vorlage existiert bereits!" :context-menu/template-include-parent-block "Einschließlich des übergeordneten Blocks in der Vorlage?" + :context-menu/toggle-number-list "Toggle number list" :dev/show-block-ast "(Dev) Block-AST anzeigen" :dev/show-block-data "(Dev) Block-Daten anzeigen" :dev/show-page-ast "(Dev) Seiten-AST anzeigen" @@ -350,19 +659,6 @@ :editor/cycle-todo "Den TODO-Status des aktuellen Elements rotieren" :editor/delete-selection "Ausgewählte Blöcke entfernen" :editor/expand-block-children "Alles ausklappen" - :page/logseq-is-having-a-problem "Logseq hat ein Problem festgestellt. Versuche zurückzukehren ..." - :page/something-went-wrong "Es ist etwas schief gelaufen." - :page/step "Schritt {1}" - :page/try "Versuch" - :plugin/found-n-updates "{1} Aktualisierungen gefunden" - :plugin/found-updates "Aktualisierungen gefunden" - :plugin/update-all-selected "Alle ausgewählten aktualisieren" - :plugin/updates-downloading "Aktualisierungen werden heruntergeladen" - :right-side-bar/history "(Dev) Verlauf rückgängig machen / wiederherstellen" - :select/default-select-multiple "Ein oder mehrere auswählen" - :settings-page/auto-expand-block-refs "Automatisch beim Heranzoomen Blockreferenzen erweitern..." - - :whiteboard/link-whiteboard-or-block "Whiteboard/Seite/Block verknüpfen" :command.auto-complete/complete "Automatische Vervollständigung: Ausgewähltes Element auswählen" :command.auto-complete/next "Automatische Vervollständigung: Nächstes Element auswählen" @@ -374,9 +670,9 @@ :command.cards/recall "Karten: Nehmen Sie sich eine Weile Zeit, um sich zu erinnern" :command.cards/remembered "Karten: Gemerkt" :command.cards/toggle-answers "Karten: Antworten/Lücken ein-/ausblenden" + :command.command-palette/toggle "Befehlspalette umschalten" :command.command/run "Git-Befehl ausführen" :command.command/toggle-favorite "Zu Favoriten hinzufügen/entfernen" - :command.command-palette/toggle "Befehlspalette umschalten" :command.date-picker/complete "Datumsauswahl: Den gewünschten Tag wählen" :command.date-picker/next-day "Datumsauswahl: Den nächsten Tag wählen" :command.date-picker/next-week "Datumsauswahl: Die nächste Woche wählen" @@ -411,6 +707,7 @@ :command.editor/forward-word "Cursor ein Wort vorwärts bewegen" :command.editor/highlight "Hervorheben" :command.editor/indent "Block einrücken" + :command.editor/insert-link "HTML Link" :command.editor/insert-youtube-timestamp "YouTube-Zeitstempel einfügen" :command.editor/italics "Kursiv" :command.editor/kill-line-after "Zeile nach der Cursorposition löschen" @@ -437,6 +734,7 @@ :command.editor/select-parent "Übergeordneten Block auswählen" :command.editor/select-up "Inhalt oben auswählen" :command.editor/strike-through "Durchgestrichen" + :command.editor/toggle-number-list "Nummeriert/Unnummeriert umschalten" :command.editor/toggle-open-blocks "Öffnen von Blöcken umschalten (alle Blöcke ein- oder ausklappen)" :command.editor/toggle-undo-redo-mode "Rückgängig / Wiederherstellen umschalten (global oder nur die Seite)" :command.editor/undo "Rückgängig" @@ -468,6 +766,7 @@ :command.graph/re-index "Aktuellen Graph neu indizieren" :command.graph/remove "Einen Graph entfernen" :command.graph/save "Aktuellen Graph auf Festplatte speichern" + :command.misc/copy "Kopieren" :command.pdf/close "PDF: Aktuelles PDF-Dokument schließen" :command.pdf/find "PDF: Text des aktuellen PDF-Dokuments durchsuchen" :command.pdf/next-page "PDF: Nächste Seite des aktuellen PDF-Dokuments" @@ -488,13 +787,39 @@ :command.ui/toggle-right-sidebar "Rechte Seitenleiste umschalten" :command.ui/toggle-left-sidebar "Linke Seitenleiste umschalten" :command.ui/toggle-settings "Einstellungen umschalten" - :command.ui/toggle-wide-mode "Breitbildmodus umschalten" :command.ui/toggle-theme "Umschalten zwischen dunklem/hellem Theme" + :command.ui/toggle-wide-mode "Breitbildmodus umschalten" + :command.whiteboard/bring-forward "Eine Ebene nach vorne schieben" + :command.whiteboard/bring-to-front "In den Vordergrund" + :command.whiteboard/connector "Verknüpfungen zeichnen" + :command.whiteboard/ellipse "Ellipsen zeichnen" + :command.whiteboard/eraser "Radiergummi" + :command.whiteboard/group "Auswahl gruppieren" + :command.whiteboard/highlighter "Leuchtstift" + :command.whiteboard/lock "Auswahl sperren" + :command.whiteboard/pan "Verschiebewerkzeug" + :command.whiteboard/pencil "Stift" + :command.whiteboard/portal "Portalwerkzeug" + :command.whiteboard/rectangle "Rechtecke zeichnen" + :command.whiteboard/reset-zoom "Zoom zurücksetzen" + :command.whiteboard/select "Auswahlwerkzeug" + :command.whiteboard/send-backward "Eine Ebene nach hinten schieben" + :command.whiteboard/send-to-back "In den Hintergrund" + :command.whiteboard/text "Textwerkzeug" + :command.whiteboard/toggle-grid "Gitter anzeigen/ausblenden" + :command.whiteboard/ungroup "Gruppierung aufheben" + :command.whiteboard/unlock "Auswahl entsperren" + :command.whiteboard/zoom-in "Heranzoomen" + :command.whiteboard/zoom-out "Herauszoomen" + :command.whiteboard/zoom-to-fit "Zoom an Zeichnung anpassen" + :command.whiteboard/zoom-to-selection "Zoom auf Auswahl fokussieren" :shortcut.category/basics "Grundlagen" :shortcut.category/block-command-editing "Blockbefehl bearbeiten" :shortcut.category/block-editing "Blockbearbeitung allgemein" :shortcut.category/block-selection "Blockauswahl (Esc drücken, um die Auswahl zu beenden)" :shortcut.category/formatting "Formatierung" :shortcut.category/navigating "Navigation" + :shortcut.category/whiteboard "Whiteboard" + :shortcut.category/plugins "Plugins" :shortcut.category/others "Sonstiges" :shortcut.category/toggle "Umschalten"} From 51658c16c07727136fe4c8bb290d70a547b42ab2 Mon Sep 17 00:00:00 2001 From: einmeterhecht <119974780+einmeterhecht@users.noreply.github.com> Date: Sun, 30 Jul 2023 10:52:52 +0200 Subject: [PATCH 03/63] Update de.edn Removed or translated german texts identical to the english ones --- src/resources/dicts/de.edn | 46 +++++++++++--------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/src/resources/dicts/de.edn b/src/resources/dicts/de.edn index a8f0f4b52c19..341574721ad8 100644 --- a/src/resources/dicts/de.edn +++ b/src/resources/dicts/de.edn @@ -48,7 +48,6 @@ :open-new-window "Neues Fenster" :page-search "In der aktuellen Seite suchen" :parsing-files "Dateien analysieren" - :plugins "Plugins" :port "Port" :re-index "Neu indizieren" :re-index-detail "Graph neu aufbauen" @@ -71,8 +70,6 @@ :toggle-theme "Thema umschalten" :type "Typ" :untitled "Ohne Titel" - :whiteboard "Whiteboard" - :whiteboards "Whiteboards" :yes "Ja" :accessibility/skip-to-main-content "Zum Hauptinhalt springen" @@ -203,7 +200,6 @@ :header/toggle-left-sidebar "Linke Seitenleiste umschalten" :help/about "Über Logseq" - :help/awesome-logseq "Awesome Logseq" :help/block-content-autocomplete "Blockinhalt (Quelltext, Zitate, Abfragen, etc.) Autovervollständigung" :help/block-reference "Blockverweis" :help/blog "Logseq Blog" @@ -218,7 +214,6 @@ :help/org-mode-syntax "Syntax von Org-mode" :help/privacy "Datenschutzrichtlinie" :help/reference-autocomplete "Seitenverweis Autovervollständigung" - :help/roadmap "Roadmap" :help/shortcut "Tastaturkürzel" :help/shortcut-page-title "Tastaturbefehl" :help/shortcuts "Tastaturkürzel" @@ -227,8 +222,6 @@ :help/slash-autocomplete "/-Autovervollständigung" :help/start "Einstieg" :help/terms "Nutzungsbedingungen" - :help/title-about "About" - :help/title-community "Community" :help/title-development "Entwicklung" :help/title-terms "Rechtliches" :help/title-usage "Bedienung" @@ -257,7 +250,7 @@ :on-boarding/importing-roam-desc "Einen Roam JSON Export importieren" :on-boarding/importing-title "Möchten Sie bestehende Notizen importieren?" - :on-boarding/main-desc "Wählen Sie zunächst einen Verzeichnis, wo Logseq Ihre Gedanken, Ideen und Notizen aufbewahren kann." + :on-boarding/main-desc "Wählen Sie ein Verzeichnis, wo Logseq Ihre Gedanken, Ideen und Notizen aufbewahren kann." :on-boarding/main-title (fn [] ["Willkommen bei " [:strong "Logseq!"]]) :on-boarding/new-graph-desc-1 "Zur Textformatierung unterstützt Logseq sowohl Markdown als auch Org-mode. Ihre Daten werden nur auf diesem Gerät gespeichert. Sie können ein bestehendes Verzeichnis auf Ihrem Rechner öffnen ein neues anlegen. Ein Verzeichnis wird auch als Ordner bezeichnet." :on-boarding/new-graph-desc-2 "Nachdem Sie ein Verzeichnis geöffnet haben, werden darin Unterordner angelegt:" @@ -283,7 +276,7 @@ :on-boarding/quick-tour-left-sidebar-title "👀 Linke Seitenleiste" :on-boarding/quick-tour-steps "SCHRITT " - :on-boarding/section-app "APP Internes" + :on-boarding/section-app "App-Internes" :on-boarding/section-assets "Eingefügte Grafiken & Dokumente" :on-boarding/section-btn-desc "Vorhandenen Ordner öffnen oder Einen neuen anlegen" :on-boarding/section-btn-title "Ordner auswählen" @@ -291,7 +284,7 @@ :on-boarding/section-config "Konfigurationsdatei" :on-boarding/section-desc "Im gewählten Ordner wird Logseq 4 Unterordner anlegen." :on-boarding/section-journals "Tägliche Notizen" - :on-boarding/section-pages "SEITEN" + :on-boarding/section-pages "Seiten" :on-boarding/section-phone "Telefon" :on-boarding/section-tip-1 "Jede Seite ist eine Datei, die nur auf ihrem {1} gespeichert ist." :on-boarding/section-tip-2 "Wenn Sie möchten, können Sie Ihre Notizen später synchronisieren." @@ -311,7 +304,6 @@ :on-boarding/welcome-whiteboard-modal-title "Eine neue Leinwand für Ihre Gedanken." :page/add-to-favorites "Zu Favoriten hinzufügen" - :page/backlinks "Backlinks" :page/copy-page-url "Seiten-URL kopieren" :page/created-at "Erstellt am" :page/delete "Seite löschen" @@ -324,18 +316,18 @@ :page/open-backup-directory "Verzeichnis für Seiten-Backups öffnen" :page/open-in-finder "Im Verzeichnis öffnen" :page/open-with-default-app "Mit Standard-Anwendung öffnen" - :page/page-already-exists "Page “{1}” already exists!" + :page/page-already-exists "Die Seite “{1}” existiert bereits!" :page/show-journals "Journal anzeigen" :page/show-whiteboards "Whiteboards anzeigen" - :page/slide-view "View as slides" - :page/slide-view-tip-go-fullscreen (fn [] [[:span.opacity-70 "Tip: press "] [:code "f"] [:span.opacity-70 " to go fullscreen"]]) + :page/slide-view "Als Slides anzeigen" + :page/slide-view-tip-go-fullscreen (fn [] [[:span.opacity-70 "Tipp: Drücken Sie "] [:code "f"] [:span.opacity-70 ", um zum Vollbild zu wechseln"]]) :page/something-went-wrong "Es ist etwas schief gelaufen." :page/step "Schritt {1}" :page/try "Versuch" :page/unfavorite "Seite aus Favoriten entfernen" :page/updated-at "Aktualisiert am" :page/version-history "Seitenverlauf anzeigen" - :page/whiteboard-to-journal-error "Whiteboard pages cannot be renamed to journal titles!" + :page/whiteboard-to-journal-error "Whiteboards können nicht den gleichen Namen wie ein Journal verwenden" :paginates/next "Weiter" :paginates/pages "Total {1} Seiten" @@ -358,7 +350,6 @@ :plugin/custom-js-alert "Datei custom.js gefunden. Darf sie ausgeführt werden? (Wenn Sie den Inhalt dieser Datei nicht verstehen, wird empfohlen, die Ausführung nicht zuzulassen, da dies gewisse Sicherheitsrisiken birgt)." :plugin/delete-alert "Wollen Sie wirklich das Plugin [{1}] deinstallieren?" :plugin/disabled "Deaktiviert" - :plugin/downloads "Downloads" :plugin/enabled "Aktiviert" :plugin/found-n-updates "{1} Aktualisierungen gefunden" :plugin/found-updates "Aktualisierungen gefunden" @@ -407,17 +398,16 @@ :right-side-bar/graph-view "Graph-Ansicht" :right-side-bar/help "Hilfe" :right-side-bar/history "(Dev) Verlauf rückgängig machen / wiederherstellen" - :right-side-bar/history-global "global" - :right-side-bar/history-pageonly "nur Seite" - :right-side-bar/history-redos "Redos" - :right-side-bar/history-undos "Undos" + :right-side-bar/history-global "Global" + :right-side-bar/history-pageonly "Nur Seite" + :right-side-bar/history-redos "Rückgängig gemacht" + :right-side-bar/history-undos "Wiederhergestellt" :right-side-bar/new-page "Neue Seite" :right-side-bar/page-graph "Seiten-Graph" :right-side-bar/separator "Griff zur Größenänderung der rechten Seitenleiste" :right-side-bar/show-journals "Zeige Journale" :right-side-bar/switch-theme "Zu {1} Thema wechseln" :right-side-bar/toggle-right-sidebar "Rechte Seitenleiste umschalten" - :right-side-bar/whiteboards "Whiteboards" :select/default-select-multiple "Ein oder mehrere auswählen" @@ -437,15 +427,12 @@ :settings-page/preferred-outdenting-tip "Linke Seite: Ausrücken mit Standardeinstellung - Rechte Seite: Ausrücken mit aktivierter Logischer Ausrückung" :settings-page/preferred-outdenting-tip-more "→ Mehr erfahren" :settings-page/preferred-pasting-file-hint "Wenn aktiviert, werden eingefügte Bilder aus dem Internet heruntergeladen und in assets/ gespeichert. Wenn deaktiviert, wird ein Weblink zum Bild eingefügt." - :settings-page/revision "Revision: " :settings-page/sync-desc-1 "Klicken Sie" :settings-page/sync-desc-2 "hier" :settings-page/sync-desc-3 "für Anweisungen, wie Sie Synchronisation einrichten und nutzen können." :settings-page/sync-diff-merge "Smart Merge bei der Synchronisation aktivieren" :settings-page/sync-diff-merge-desc "Führt bei Konflikten die lokalen Änderungen automatisch mit den Dateien auf dem Server zusammen, anstatt die Dateien auf dem Server zu überschreiben." :settings-page/sync-diff-merge-warn "Die Smart Merge-Fähigkeit kann auf einem Client erst nach der ersten erfolgreichen Synchronisation mit dem Server auf dem Graphen mit der neuen Logseq-Version aktiviert werden. Aktivieren Sie dies auf allen Geräten, um die beste Erfahrung zu erhalten." - :settings-page/tab-account "Account" - :settings-page/tab-editor "Editor" :settings-page/theme-dark "Dunkel" :settings-page/theme-light "Hell" :settings-page/theme-system "System" @@ -536,9 +523,8 @@ :whiteboard/shape-quick-links "Schnelllinks formen" :whiteboard/small "Klein" :whiteboard/snap-to-grid "Am Gitter einrasten" - :whiteboard/start-typing-to-search "Start typing to search..." + :whiteboard/start-typing-to-search "Suche mit Tippen beginnen..." :whiteboard/stroke-type "Schriftart" - :whiteboard/text "Text" :whiteboard/toggle-grid "Gitter anzeigen/ausblenden" :whiteboard/triangle "Dreieck" :whiteboard/twitter-url "Link zu Twitter" @@ -571,7 +557,6 @@ :search-item/file "Datei" :search-item/no-result "Keine übereinstimmenden Treffer" :search-item/page "Seite" - :search-item/whiteboard "Whiteboard" :select/default-prompt "Wählen Sie einen" @@ -608,7 +593,6 @@ :settings-page/enable-shortcut-tooltip "Tooltips für Verknüpfungen aktivieren" :settings-page/enable-timetracking "Zeiterfassung einschalten" :settings-page/enable-tooltip "Tooltips" - :settings-page/enable-whiteboards "Whiteboards" :settings-page/export-theme "Theme exportieren" :settings-page/filename-format "Dateinamen-Format" :settings-page/git-commit-delay "Anzahl Sekunden für Git Auto Commit" @@ -617,7 +601,6 @@ :settings-page/home-default-page "Standard-Homepage einrichten" :settings-page/login-prompt "Um vor allen anderen auf neue Funktionen zugreifen zu können, müssen Sie ein Open Collective Sponsor oder Backer von Logseq sein und sich daher zuerst anmelden." :settings-page/network-proxy "Netzwerk-Proxy" - :settings-page/plugin-system "Plugins" :settings-page/preferred-file-format "Bevorzugtes Datei-Format" :settings-page/preferred-outdenting "Logische Ausrückung" :settings-page/preferred-pasting-file "Einfügen der Datei bevorzugen" @@ -650,7 +633,7 @@ :context-menu/preview-flashcard "Vorschau der Karteikarte" :context-menu/template-exists-warning "Vorlage existiert bereits!" :context-menu/template-include-parent-block "Einschließlich des übergeordneten Blocks in der Vorlage?" - :context-menu/toggle-number-list "Toggle number list" + :context-menu/toggle-number-list "Nummeriert/Unnummeriert umschalten" :dev/show-block-ast "(Dev) Block-AST anzeigen" :dev/show-block-data "(Dev) Block-Daten anzeigen" :dev/show-page-ast "(Dev) Seiten-AST anzeigen" @@ -707,7 +690,6 @@ :command.editor/forward-word "Cursor ein Wort vorwärts bewegen" :command.editor/highlight "Hervorheben" :command.editor/indent "Block einrücken" - :command.editor/insert-link "HTML Link" :command.editor/insert-youtube-timestamp "YouTube-Zeitstempel einfügen" :command.editor/italics "Kursiv" :command.editor/kill-line-after "Zeile nach der Cursorposition löschen" @@ -819,7 +801,5 @@ :shortcut.category/block-selection "Blockauswahl (Esc drücken, um die Auswahl zu beenden)" :shortcut.category/formatting "Formatierung" :shortcut.category/navigating "Navigation" - :shortcut.category/whiteboard "Whiteboard" - :shortcut.category/plugins "Plugins" :shortcut.category/others "Sonstiges" :shortcut.category/toggle "Umschalten"} From 4d2bab847178b66df1cfe0a207cfa8113859ad3b Mon Sep 17 00:00:00 2001 From: einmeterhecht <119974780+einmeterhecht@users.noreply.github.com> Date: Sun, 30 Jul 2023 11:56:51 +0200 Subject: [PATCH 04/63] Translate the tutorial to german --- src/resources/tutorials/dummy-notes-de.md | 14 ++++++++++ src/resources/tutorials/tutorial-de.md | 34 +++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/resources/tutorials/dummy-notes-de.md create mode 100644 src/resources/tutorials/tutorial-de.md diff --git a/src/resources/tutorials/dummy-notes-de.md b/src/resources/tutorials/dummy-notes-de.md new file mode 100644 index 000000000000..3df18117abf8 --- /dev/null +++ b/src/resources/tutorials/dummy-notes-de.md @@ -0,0 +1,14 @@ +--- +title: Wie macht man Notizen? +--- + +- Hallo, ich bin ein Block! +:PROPERTIES: +:id: 5f713e91-8a3c-4b04-a33a-c39482428e2d +:END: +- Und ich? Ich bin auch ein Block! +:PROPERTIES: +:id: 5f713ea8-8cba-403d-ac00-9964b1ec7190 +:END: + - Man kann uns auch einrücken (mit TAB)! + - Wir sind jetzt unserem Elternblock untergeordnet. diff --git a/src/resources/tutorials/tutorial-de.md b/src/resources/tutorials/tutorial-de.md new file mode 100644 index 000000000000..6660c1bd6358 --- /dev/null +++ b/src/resources/tutorials/tutorial-de.md @@ -0,0 +1,34 @@ +## Hi, Willkommen bei Logseq ! + +Logseq ist eine privacy-first, [Open-Source](https://github.com/logseq/logseq)-Plattform für Wissen und Zusammenarbeit. +Das hier ist ein 3-Minuten-Tutorial über die Verwendung von Logseq. Los geht's! +- --- +- Das Wichtigste: + - Ein Stichpunkt heisst in Logseq **Block**. + - Klicken, um einen Block zu bearbeiten. + - `Enter`, um einen neuen Block zu erstellen. + - `Umschalt+Enter`, + um eine neue Zeile im gleichen Block zu beginnen. +- --- +- Erstellen wir eine Seite namens [[Wie macht man Notizen?]]. Klicken Sie darauf, um zu dieser Seite zu gelangen. Wenn Sie dabei `Umschalt` gedrückt halten, wird die Seite rechts neben diesem Text angezeigt. Jetzt sollten Sie _Verknüpfte_ und _Nicht verknüpfte Referenzen_ sehen. +- --- +- Verknüpfen wir einige Blöcke aus [[Wie macht man Notizen?]]. Auch hier kann man den Block mit `Umschalt+Klicken` in der rechten Seitenleiste zeigen. Bearbeiten Sie den Text dort! Die Änderungen gehen direkt auf die verknüpfte Seite. + - ((5f713e91-8a3c-4b04-a33a-c39482428e2d)) : Das ist eine Blockreferenz. + - ((5f713ea8-8cba-403d-ac00-9964b1ec7190)) : Hier ist noch eine. +- --- +- Gibt es so etwas wie Tags? + - Natürlich, hier ist ein #dummy Tag. +- --- +- Was ist mit Aufgaben? Gibt es TODO/DOING/DONE? Und ein System für Prioritäten? + - Ja, geben Sie `/` ein und wählen Sie ihr bevorzugtes TODO-Schlagwort. Setzen Sie mit `/A`, `/B`, `/C` Prioritäten. + - NOW [#A] Ein Crashkurs über "Wie macht man Notizen?" + - LATER [#A] Ein Video von [:a {:href "https://twitter.com/shuomi3" :target "_blank"} "@shuomi3"] schauen, wie man mit Logseq Notizen macht und sich organisiert: + {{youtube https://www.youtube.com/watch?v=BhHfF0P9A80&ab_channel=ShuOmi}} + - DONE Eine Seite erstellen + - CANCELED [#C] Eine Seite mit über 1000 Blöcken schreiben +- --- +- Das war's! Erstellen Sie mehr Stichpunkte oder öffnen Sie einen lokalen Ordner, um Notizen zu importieren! + --- + #+BEGIN_TIP + Logseq läuft auf PCs genauso wie auf Smartphones. Sie können die App von [https://logseq.com/downloads](https://logseq.com/downloads) auf Ihre anderen Geräte holen. + #+END_TIP From ac1e0982b52b1a9a84e5a76887f57a1932c164e0 Mon Sep 17 00:00:00 2001 From: einmeterhecht <119974780+einmeterhecht@users.noreply.github.com> Date: Sun, 30 Jul 2023 12:05:40 +0200 Subject: [PATCH 05/63] Link to german tutorial in de.edn And not to the english one --- src/resources/dicts/de.edn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/resources/dicts/de.edn b/src/resources/dicts/de.edn index 341574721ad8..bf9d862de5e3 100644 --- a/src/resources/dicts/de.edn +++ b/src/resources/dicts/de.edn @@ -444,8 +444,8 @@ :tips/all-done "Alles erledigt!" - :tutorial/text #resource "tutorials/tutorial-en.md" - :tutorial/dummy-notes #resource "tutorials/dummy-notes-en.md" + :tutorial/text #resource "tutorials/tutorial-de.md" + :tutorial/dummy-notes #resource "tutorials/dummy-notes-de.md" :whiteboard/add-block-or-page "Block oder Seite hinzufügen" :whiteboard/align-bottom "Am unteren Rand ausrichten" From cf6333d5e4a407e187e7e35a1e8aa443535d129b Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Tue, 25 Jul 2023 14:08:07 +0300 Subject: [PATCH 06/63] fix persist when updating existing elements #8706 --- src/main/frontend/extensions/excalidraw.cljs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/extensions/excalidraw.cljs b/src/main/frontend/extensions/excalidraw.cljs index 6ff0b005704e..7527f4bbcfd8 100644 --- a/src/main/frontend/extensions/excalidraw.cljs +++ b/src/main/frontend/extensions/excalidraw.cljs @@ -1,6 +1,5 @@ (ns frontend.extensions.excalidraw - (:require [cljs-bean.core :as bean] - [clojure.string :as string] + (:require [clojure.string :as string] ;; NOTE: Always use production build of excalidraw ;; See-also: https://github.com/excalidraw/excalidraw/pull/3330 ["@excalidraw/excalidraw/dist/excalidraw.production.min" :refer [Excalidraw serializeAsJSON]] @@ -108,7 +107,7 @@ (gobj/get app-state "editingElement") (gobj/get app-state "editingGroupId") (gobj/get app-state "editingLinearElement")) - (let [elements->clj (bean/->clj elements)] + (let [elements->clj (js->clj elements {:keywordize-keys true})] (when (and (seq elements->clj) (not= elements->clj @*elements)) ;; not= requires clj collections (reset! *elements elements->clj) From 401078ab183c803dc5afd12adf22c4c16fa29852 Mon Sep 17 00:00:00 2001 From: charlie Date: Mon, 31 Jul 2023 16:48:05 +0800 Subject: [PATCH 07/63] fix(pdf): incorrect highlights state when update hlighlight. related #9900 --- src/main/frontend/extensions/pdf/core.cljs | 36 +++++++++++++--------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/main/frontend/extensions/pdf/core.cljs b/src/main/frontend/extensions/pdf/core.cljs index c5920bdbce4d..536607f685f0 100644 --- a/src/main/frontend/extensions/pdf/core.cljs +++ b/src/main/frontend/extensions/pdf/core.cljs @@ -260,11 +260,12 @@ rects)])) (rum/defc ^:large-vars/cleanup-todo pdf-highlight-area-region - [^js viewer vw-hl hl {:keys [show-ctx-menu! upd-hl!]}] + [^js viewer vw-hl hl {:keys [show-ctx-menu!] :as ops}] - (let [{:keys [id]} hl + (let [{:keys [id]} hl *el (rum/use-ref nil) *dirty (rum/use-ref nil) + *ops-ref (rum/use-ref ops) open-ctx-menu! (fn [^js/MouseEvent e] (.preventDefault e) (when-not (rum/deref *dirty) @@ -275,7 +276,13 @@ dragstart-handle! (fn [^js e] (when-let [^js dt (and id (.-dataTransfer e))] - (.setData dt "text/plain" (str "((" id "))"))))] + (.setData dt "text/plain" (str "((" id "))")))) + update-hl! (fn [hl] (some-> (rum/deref *ops-ref) (:upd-hl!) (apply [hl])))] + + (rum/use-effect! + (fn [] + (rum/set-ref! *ops-ref ops)) + [ops]) ;; resizable (rum/use-effect! @@ -321,7 +328,7 @@ (.removeAttribute target "data-x") (.removeAttribute target "data-y") - (upd-hl! hl')) 200)))) + (update-hl! hl')) 200)))) (js/setTimeout #(rum/set-ref! *dirty false)))) @@ -541,16 +548,17 @@ (let [vw-pos (pdf-utils/scaled-to-vw-pos viewer (:position hl))] (set-ctx-menu-state! (apply merge (list* {:highlight hl :vw-pos vw-pos :point point} ops))))) - add-hl! (fn [hl] (when (:id hl) - ;; fix js object - (let [highlights (pdf-utils/fix-nested-js highlights)] - (set-highlights! (conj highlights hl))) - - (when-let [vw-pos (and (pdf-assets/area-highlight? hl) - (pdf-utils/scaled-to-vw-pos viewer (:position hl)))] - ;; exceptions - (pdf-assets/persist-hl-area-image$ viewer (:pdf/current @state/state) - hl nil (:bounding vw-pos))))) + add-hl! (fn [hl] + (when (:id hl) + ;; fix js object + (let [highlights (pdf-utils/fix-nested-js highlights)] + (set-highlights! (conj highlights hl))) + + (when-let [vw-pos (and (pdf-assets/area-highlight? hl) + (pdf-utils/scaled-to-vw-pos viewer (:position hl)))] + ;; exceptions + (pdf-assets/persist-hl-area-image$ viewer (:pdf/current @state/state) + hl nil (:bounding vw-pos))))) upd-hl! (fn [hl] (let [highlights (pdf-utils/fix-nested-js highlights)] From 97fad3e349c53991c18d6f8cafb44a0f955da2a3 Mon Sep 17 00:00:00 2001 From: atxulo <6602781+atxulo@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:20:19 +0200 Subject: [PATCH 08/63] Enhance: Improvements in Spanish translation (#9896) * Improvements in Spanish translation * Update es.edn, merged #9732 --------- Co-authored-by: Gabriel Horner <97210743+logseq-cldwalker@users.noreply.github.com> --- src/resources/dicts/es.edn | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/resources/dicts/es.edn b/src/resources/dicts/es.edn index 7d1a5699782b..34bbc58b1eef 100644 --- a/src/resources/dicts/es.edn +++ b/src/resources/dicts/es.edn @@ -23,7 +23,7 @@ :export-opml "Exportar a OPML" :export-page "Exportar página" :export-public-pages "Exportar páginas públicas" - :export-roam-json "Export a Roam JSON" + :export-roam-json "Exportar a Roam JSON" :export-save-to-file "Guardar a archivo" :export-transparent-background "Fondo transparente" :graph "Grafo" @@ -165,13 +165,13 @@ :command.editor/insert-link "Enlace html" :command.editor/insert-youtube-timestamp "Insertar marca de tiempo de YouTube" :command.editor/italics "Cursiva" - :command.editor/kill-line-after "Borrar linea despues del cursor" - :command.editor/kill-line-before "Borrar linea antes del cursor" + :command.editor/kill-line-after "Borrar línea despues del cursor" + :command.editor/kill-line-before "Borrar línea antes del cursor" :command.editor/left "Mover cursor a la izquierda / Abrir bloque seleccionado al inicio" :command.editor/move-block-down "Mover bloque abajo" :command.editor/move-block-up "Mover bloque arriba" :command.editor/new-block "Crear bloque nuevo" - :command.editor/new-line "Nueva linea en bloque" + :command.editor/new-line "Nueva línea en bloque" :command.editor/new-whiteboard "Nueva pizarra" :command.editor/open-edit "Editar bloque seleccionado" :command.editor/open-file-in-default-app "Abrir archivo en aplicación por defecto" @@ -312,10 +312,10 @@ :file-rn/format-deprecated "Está utilizando un formato obsoleto. Se recomienda actualizar al formato más reciente. Realice una copia de seguridad de sus datos y cierre los clientes de Logseq en otros dispositivos antes de la operación." :file-rn/instruct-1 "Actualizar el formato de nombre es un proceso de 2 pasos:" :file-rn/instruct-2 "1. Clic " - :file-rn/instruct-3 "2. Siga las intrucciones indicadas abajo para renombrar los archivos al nuevo formato: " + :file-rn/instruct-3 "2. Siga las instrucciones indicadas abajo para renombrar los archivos al nuevo formato: " :file-rn/legend "🟢 Acciones de cambio de nombre opcionales; 🟡 Cambio de nombre obligatorio para evitar el cambio de título; 🔴 Cambio destructor." :file-rn/need-action "Se sugieren acciones de cambio de nombre de archivo para que coincidan con el nuevo formato. Cuando se sincronicen los archivos renombrados se requiere volver a indexar en todos los dispositivos." - :file-rn/no-action "¡Bien hecho! No se necesario realizar más acciones." + :file-rn/no-action "¡Bien hecho! No es necesario realizar más acciones." :file-rn/optional-rename "Sugerencia: " :file-rn/or-select-actions-2 ". Estas acciones no estarán disponibles una vez cierres este panel." :file-rn/or-select-actions " o cambie el nombre de los archivos a continuación individualmente, luego " @@ -327,7 +327,7 @@ :file-rn/suggest-rename "Acción necesaria: " :file-rn/unreachable-title "¡Advertencia! El nombre de la página se convertirá en {1} en el formato de nombre de archivo actual, a no ser que la propiedad `title::` se establezca manualmente" :file-sync/graph-deleted "El gráfico remoto actual se ha eliminado" - :file-sync/other-user-graph "El gráfico local actual está unido al gráfico remoto de otro usuario. Así que no se puede empezar a sincronizar" + :file-sync/other-user-graph "El gráfico local actual está unido al gráfico remoto de otro usuario, así que no se puede empezar a sincronizar" :file-sync/rsapi-cannot-upload-err "Incapaz de comenzar la sincronización, comprueba si el tiempo local es correcto." :file/validate-existing-file-error "La página existe en otro archivo: {1}, archivo actual: {2}. Por favor conserva solo uno de ellos y reindexa tu grafo. " :flashcards/modal-btn-forgotten "Olvidado" @@ -346,7 +346,7 @@ :flashcards/modal-select-switch "Cambiar a" :flashcards/modal-toggle-preview-mode "Alternar modo de vista previa" :flashcards/modal-toggle-random-mode "Alternar modo aleatorio" - :flashcards/modal-welcome-desc-1 "Puedes agregar \"#card\" a cualquier bloque para conertirlo en una tarjeta o ejecutar \"/cloze\" para agregar algunos clozes." + :flashcards/modal-welcome-desc-1 "Puedes agregar \"#card\" a cualquier bloque para convertirlo en una tarjeta o ejecutar \"/cloze\" para agregar algunos clozes." :flashcards/modal-welcome-desc-2 "Puedes" :flashcards/modal-welcome-desc-3 "dar clic en este enlace" :flashcards/modal-welcome-desc-4 " para revisar la documentación." @@ -453,12 +453,12 @@ :on-boarding/tour-whiteboard-btn-finish "Terminar" :on-boarding/tour-whiteboard-btn-next "Siguiente" :on-boarding/tour-whiteboard-home "{1} Hogar para tus pizarras" - :on-boarding/tour-whiteboard-home-description "Las pizarras tienen su propia section en la aplicación donde puedes darles un vistazo, crear nuevas o eliminarlas fácilmente." - :on-boarding/tour-whiteboard-new "{1} Crear una pizarra nueva" + :on-boarding/tour-whiteboard-home-description "Las pizarras tienen su propia sección en la aplicación donde puedes darles un vistazo, crear nuevas o eliminarlas fácilmente." + :on-boarding/tour-whiteboard-new "{1} Crear una pizarra nueva" :on-boarding/tour-whiteboard-new-description "Existen muchas formas de crear una pizarra nueva. Una de ellas está siempre aquí en el panel." :on-boarding/welcome-whiteboard-modal-description "Las pizarras son una gran herramienta para lluvia de ideas y organización. Ahora puedes colocar cualquiera de tus pensamientos de la base de conocimiento o nuevos uno al lado del otro en un lienzo espacial para conectarlos, asociarlos y entenderlos de nuevas maneras." :on-boarding/welcome-whiteboard-modal-skip "Saltar" - :on-boarding/welcome-whiteboard-modal-start "Comenzar a pizarrear" + :on-boarding/welcome-whiteboard-modal-start "Comenzar a utilizar la pizarra" :on-boarding/welcome-whiteboard-modal-title "Un nuevo lienzo para tus pensamientos." :page/add-to-favorites "Añadir a Favoritos" :page/backlinks "Vínculos de retroceso" @@ -579,12 +579,12 @@ :select/default-prompt "Seleccione uno" :select/default-select-multiple "Seleccionar uno o varios" :select.graph/add-graph "Sí, añadir otro grafo" - :select.graph/empty-placeholder-description "No encontramos un grafo. Querie añadir otro?" + :select.graph/empty-placeholder-description "No encontramos un grafo. ¿Quiere añadir otro?" :select.graph/prompt "Seleccione un grafo" :settings-page/alpha-features "Características Alfa" :settings-page/app-updated "Tu aplicación está actualizada 🎉" - :settings-page/auto-expand-block-refs "Expandir referencias de bloque automaticamente al hacer un acercamiento" - :settings-page/auto-expand-block-refs-tip "Esta opción controla si expandir el bloque de referencias automaticamente al hacer un acercamiento." + :settings-page/auto-expand-block-refs "Expandir referencias de bloque automáticamente al hacer un acercamiento" + :settings-page/auto-expand-block-refs-tip "Esta opción controla si expandir el bloque de referencias automáticamente al hacer un acercamiento." :settings-page/auto-updater "Auto actualizador" :settings-page/beta-features "Características Beta" :settings-page/changelog "¿Qué hay de nuevo?" @@ -648,7 +648,7 @@ :settings-page/sync-desc-1 "Clic" :settings-page/sync-desc-2 "aquí" :settings-page/sync-desc-3 "por instrucciones de cómo configurar y usar Sync." - :settings-page/sync-diff-merge-desc "Unir actualizaciones locales con archivos remotos automaticamente cuando ocurre un conflicto, en lugar de sobreescribir los archivos remotos" + :settings-page/sync-diff-merge-desc "Unir actualizaciones locales con archivos remotos automáticamente cuando ocurre un conflicto, en lugar de sobreescribir los archivos remotos" :settings-page/sync-diff-merge "Habilitar unión inteligente al sincronizar" :settings-page/sync-diff-merge-warn "La capacidad de unión inteligente solo se activa en un cliente después de la primera sincronización exitosa con el servidor remoto en el grafo en la nueva versión de LogSeq. Habilita esto en todos los dispositivos para alcanzar la mejor experiencia." :settings-page/sync "Sincronizar" @@ -688,7 +688,7 @@ :whiteboard/align-right "Alinear a la derecha" :whiteboard/align-top "Alinear arriba" :whiteboard/arrow-head "Cabeza de flecha" - :whiteboard/auto-resize "Cambiar tamaño automaticamente" + :whiteboard/auto-resize "Cambiar tamaño automáticamente" :whiteboard/bold "Negrita" :whiteboard/cache-outdated "La caché está desactualizada. Por favor da clic en el botón 'Reindexar' en el menú desplegable del grafo." :whiteboard/circle "Círculo" From 486edc31c06a9786ac73d47665190ca16b354846 Mon Sep 17 00:00:00 2001 From: Andelf Date: Tue, 1 Aug 2023 15:35:12 +0800 Subject: [PATCH 09/63] chore(release): release 0.9.12 --- android/app/build.gradle | 4 ++-- resources/forge.config.js | 2 +- resources/package.json | 2 +- src/main/frontend/version.cljs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 3975ba2910d6..8d7ab3c193ff 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.logseq.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 64 - versionName "0.9.11" + versionCode 65 + versionName "0.9.12" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/resources/forge.config.js b/resources/forge.config.js index bb02f7a3227c..e8e7967450e1 100644 --- a/resources/forge.config.js +++ b/resources/forge.config.js @@ -4,7 +4,7 @@ module.exports = { packagerConfig: { name: 'Logseq', icon: './icons/logseq_big_sur.icns', - buildVersion: 64, + buildVersion: 65, protocols: [ { "protocol": "logseq", diff --git a/resources/package.json b/resources/package.json index 8f1d4057e7e5..da8b1cf462f6 100644 --- a/resources/package.json +++ b/resources/package.json @@ -1,7 +1,7 @@ { "name": "Logseq", "productName": "Logseq", - "version": "0.9.11", + "version": "0.9.12", "main": "electron.js", "author": "Logseq", "license": "AGPL-3.0", diff --git a/src/main/frontend/version.cljs b/src/main/frontend/version.cljs index 7f43f3c0b3d1..50595439b388 100644 --- a/src/main/frontend/version.cljs +++ b/src/main/frontend/version.cljs @@ -1,3 +1,3 @@ (ns ^:no-doc frontend.version) -(defonce version "0.9.11") +(defonce version "0.9.12") From e40f595a1d255cab9661c9a15eaf5d08182b7f37 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 2 Aug 2023 01:02:35 +0800 Subject: [PATCH 10/63] Fix/markdown heading export (#9967) * fix: top heading if it's the first block --- src/main/frontend/modules/file/core.cljs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/modules/file/core.cljs b/src/main/frontend/modules/file/core.cljs index 59fb35662d98..17991cf86fb4 100644 --- a/src/main/frontend/modules/file/core.cljs +++ b/src/main/frontend/modules/file/core.cljs @@ -48,8 +48,10 @@ (str content "\n")) :else - (let [markdown-top-heading? (and markdown? - (= parent page) + (let [ + ;; first block is a heading, Markdown users prefer to remove the `-` before the content + markdown-top-heading? (and markdown? + (= parent page left) heading) [prefix spaces-tabs] (cond From 4b4b4e88719aff4beab63c03b4de75480aa38e8b Mon Sep 17 00:00:00 2001 From: Andelf Date: Wed, 2 Aug 2023 01:03:25 +0800 Subject: [PATCH 11/63] chore(release): bump version 0.9.13 --- android/app/build.gradle | 4 ++-- ios/App/App.xcodeproj/project.pbxproj | 8 ++++---- resources/forge.config.js | 2 +- resources/package.json | 2 +- src/main/frontend/version.cljs | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 8d7ab3c193ff..5fd524937875 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.logseq.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 65 - versionName "0.9.12" + versionCode 66 + versionName "0.9.13" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index dd1d1752a149..83afec363d5e 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -519,7 +519,7 @@ INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 0.9.12; + MARKETING_VERSION = 0.9.13; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.logseq.logseq; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -546,7 +546,7 @@ INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 0.9.12; + MARKETING_VERSION = 0.9.13; PRODUCT_BUNDLE_IDENTIFIER = com.logseq.logseq; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; @@ -571,7 +571,7 @@ INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 0.9.12; + MARKETING_VERSION = 0.9.13; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.logseq.logseq.ShareViewController; @@ -598,7 +598,7 @@ INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 0.9.12; + MARKETING_VERSION = 0.9.13; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.logseq.logseq.ShareViewController; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/resources/forge.config.js b/resources/forge.config.js index e8e7967450e1..c27715e1a12a 100644 --- a/resources/forge.config.js +++ b/resources/forge.config.js @@ -4,7 +4,7 @@ module.exports = { packagerConfig: { name: 'Logseq', icon: './icons/logseq_big_sur.icns', - buildVersion: 65, + buildVersion: 66, protocols: [ { "protocol": "logseq", diff --git a/resources/package.json b/resources/package.json index da8b1cf462f6..f7e41ef12d75 100644 --- a/resources/package.json +++ b/resources/package.json @@ -1,7 +1,7 @@ { "name": "Logseq", "productName": "Logseq", - "version": "0.9.12", + "version": "0.9.13", "main": "electron.js", "author": "Logseq", "license": "AGPL-3.0", diff --git a/src/main/frontend/version.cljs b/src/main/frontend/version.cljs index 50595439b388..e9a54c05323f 100644 --- a/src/main/frontend/version.cljs +++ b/src/main/frontend/version.cljs @@ -1,3 +1,3 @@ (ns ^:no-doc frontend.version) -(defonce version "0.9.12") +(defonce version "0.9.13") From bc4b09d877ee4c09552a65ae289786171a0746aa Mon Sep 17 00:00:00 2001 From: Andelf Date: Wed, 2 Aug 2023 18:05:39 +0800 Subject: [PATCH 12/63] fix(editor): display of embedded drawing See-also #9533 --- src/main/frontend/extensions/excalidraw.cljs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/frontend/extensions/excalidraw.cljs b/src/main/frontend/extensions/excalidraw.cljs index 7527f4bbcfd8..c6fdc3a8cd42 100644 --- a/src/main/frontend/extensions/excalidraw.cljs +++ b/src/main/frontend/extensions/excalidraw.cljs @@ -41,7 +41,10 @@ nil (.. el -classList (contains "block-content")) - (let [width (.-clientWidth el)] + (let [client-width (.-clientWidth el) + width (if (zero? client-width) + (.-width (.-getBoundingClientRect el)) + client-width)] (reset! (::draw-width state) width)) :else From a254775a81964225fe08debfccff44ee41931f11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Aug 2023 21:00:34 +0800 Subject: [PATCH 13/63] chore(deps): bump word-wrap from 1.2.3 to 1.2.5 in /tldraw (#9915) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tldraw/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tldraw/yarn.lock b/tldraw/yarn.lock index 1d88823bb2e9..1ea6196f491a 100644 --- a/tldraw/yarn.lock +++ b/tldraw/yarn.lock @@ -4918,9 +4918,9 @@ which@^3.0.0: isexe "^2.0.0" word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wrap-ansi@^6.2.0: version "6.2.0" From ade8848e4a2ae4fcbdb4a0af31e0cc29692900ad Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 5 Jul 2023 17:03:24 +0300 Subject: [PATCH 14/63] wip: right sidebar --- src/main/frontend/components/container.css | 29 +++++++++++++++---- .../frontend/components/right_sidebar.cljs | 22 +++++++------- .../frontend/components/right_sidebar.css | 7 +++-- src/main/frontend/extensions/graph.css | 5 ++++ 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index d8b1acb57eac..257b514791a5 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -531,14 +531,13 @@ html[data-theme='dark'] { .cp__right-sidebar { z-index: var(--ls-z-index-level-1); transition: width 0.3s; - background-color: var(--ls-secondary-background-color, #d8e1e8); position: relative; user-select: none; .resizer { @apply absolute top-0 bottom-0; touch-action: none; - left: 0; + left: 2px; width: 4px; user-select: none; cursor: col-resize !important; @@ -592,7 +591,6 @@ html[data-theme='dark'] { top: 0; left: 0; right: 0; - background-color: var(--ls-secondary-background-color, #d8e1e8); z-index: 999; user-select: none; -webkit-app-region: drag; @@ -622,16 +620,37 @@ html[data-theme='dark'] { } .sidebar-item { - @apply p-4; + overflow: hidden; + flex: 1 1 auto; + min-height: 140px; + + &.collapsed { + flex: 0; + overflow: initial; + min-height: initial; + } + + .initial { + flex: 1; + } .close { transform: scale(0.8); - transition: transform 0.1s; + transition: transform 0.1s, opacity 0.1s; + visibility: hidden; + opacity: 0; &:hover { transform: scale(1); } } + + &:hover { + .close { + visibility: visible; + opacity: 1; + } + } } } diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index dd0cb20360e7..263d115b0b0a 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -186,19 +186,21 @@ [repo idx db-id block-type] (let [item (build-sidebar-item repo idx db-id block-type)] (when item - (let [collapse? (state/sub [:ui/sidebar-collapsed-blocks db-id])] - [:div.sidebar-item.content.color-level.px-4.shadow-md + (let [collapsed? (state/sub [:ui/sidebar-collapsed-blocks db-id])] + [:div.flex.sidebar-item.content.color-level.shadow-md {:class (when collapsed? "collapsed")} (let [[title component] item] - [:div.flex.flex-col - [:div.flex.flex-row.justify-between + [:div.flex.flex-col.w-full + [:button.flex.flex-row.justify-between.p-4 + {:on-click (fn [e] + (.preventDefault e) + (state/sidebar-block-toggle-collapse! db-id))} [:div.flex.flex-row.justify-center - [:a.opacity-50.hover:opacity-100.flex.items-center.pr-1 - {:on-click #(state/sidebar-block-toggle-collapse! db-id)} - (ui/rotating-arrow collapse?)] + [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 + (ui/rotating-arrow collapsed?)] [:div.ml-1.font-medium title]] (close #(state/sidebar-remove-block! idx))] - [:div {:class (if collapse? "hidden" "initial")} + [:div.scrollbar-spacing.p-4 {:class (if collapsed? "hidden" "initial")} component]])])))) (defn- get-page @@ -336,12 +338,12 @@ (state/sidebar-add-block! repo "help" :help))} (t :right-side-bar/help)]] - (when config/dev? [:div.text-sm + (when (and config/dev? (state/sub [:ui/developer-mode?])) [:div.text-sm [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [_e] (state/sidebar-add-block! repo "history" :history))} (t :right-side-bar/history)]])]] - [:.sidebar-item-list.flex-1.scrollbar-spacing.flex.flex-col.gap-2 + [:.sidebar-item-list.flex-1.flex.flex-col.gap-2.pb-2.mx-2 (if @*anim-finished? (for [[idx [repo db-id block-type]] (medley/indexed blocks)] (rum/with-key diff --git a/src/main/frontend/components/right_sidebar.css b/src/main/frontend/components/right_sidebar.css index db1b78590035..48a23782a662 100644 --- a/src/main/frontend/components/right_sidebar.css +++ b/src/main/frontend/components/right_sidebar.css @@ -11,8 +11,11 @@ html[data-theme=light] { } } +.cp__right-sidebar-settings-btn { + background-color: var(--ls-secondary-background-color); +} + .sidebar-item-list { - padding-bottom: 150px; height: calc(100vh - 48px); } @@ -27,7 +30,7 @@ html[data-theme=light] a.toggle:hover { } html[data-theme=dark] { - .cp__header a, .cp__header button, .cp__right-sidebar-topbar button { + .cp__header a, .cp__header button { opacity: 0.7; } } diff --git a/src/main/frontend/extensions/graph.css b/src/main/frontend/extensions/graph.css index a0a163575961..0253733c84ce 100644 --- a/src/main/frontend/extensions/graph.css +++ b/src/main/frontend/extensions/graph.css @@ -8,6 +8,11 @@ z-index: 4; } + .graph { + height: 500px; +} + +#main-content-container.graph { height: calc(100vh - 100px) !important; } From dffa2ace68844a24c48d3e3dad4265a504a2ba80 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 5 Jul 2023 17:10:41 +0300 Subject: [PATCH 15/63] fix: graph height --- src/main/frontend/extensions/graph.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/extensions/graph.css b/src/main/frontend/extensions/graph.css index 0253733c84ce..09a61d1e88f2 100644 --- a/src/main/frontend/extensions/graph.css +++ b/src/main/frontend/extensions/graph.css @@ -13,6 +13,6 @@ height: 500px; } -#main-content-container.graph { +#main-content-container .graph { height: calc(100vh - 100px) !important; } From ee541e6f300dc13e1d88b24a02282579de7a1ef4 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 5 Jul 2023 17:31:49 +0300 Subject: [PATCH 16/63] re-enable scrolling on list --- src/main/frontend/components/right_sidebar.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 263d115b0b0a..9375c83c2bc5 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -343,7 +343,7 @@ (state/sidebar-add-block! repo "history" :history))} (t :right-side-bar/history)]])]] - [:.sidebar-item-list.flex-1.flex.flex-col.gap-2.pb-2.mx-2 + [:.sidebar-item-list.flex-1.scrollbar-spacing.flex.flex-col.gap-2.pb-2.mx-2 (if @*anim-finished? (for [[idx [repo db-id block-type]] (medley/indexed blocks)] (rum/with-key From 6b50f874bbdf171fd41a06bd39310b964d816ab7 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 5 Jul 2023 19:02:49 +0300 Subject: [PATCH 17/63] style: indentation --- src/main/frontend/components/right_sidebar.cljs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 9375c83c2bc5..31494576366e 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -338,10 +338,11 @@ (state/sidebar-add-block! repo "help" :help))} (t :right-side-bar/help)]] - (when (and config/dev? (state/sub [:ui/developer-mode?])) [:div.text-sm - [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [_e] - (state/sidebar-add-block! repo "history" :history))} - (t :right-side-bar/history)]])]] + (when (and config/dev? (state/sub [:ui/developer-mode?])) + [:div.text-sm + [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [_e] + (state/sidebar-add-block! repo "history" :history))} + (t :right-side-bar/history)]])]] [:.sidebar-item-list.flex-1.scrollbar-spacing.flex.flex-col.gap-2.pb-2.mx-2 (if @*anim-finished? From 3bfba8fb7c09a200091af36e99a5631f0403dae1 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 5 Jul 2023 19:12:00 +0300 Subject: [PATCH 18/63] fix: always expand block when added to sidebar --- src/main/frontend/state.cljs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 20a1d5486bc5..d0811dd02020 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1087,6 +1087,7 @@ Similar to re-frame subscriptions" (->> (remove #(= (second %) db-id) blocks) (cons [repo db-id block-type]) (distinct)))) + (set-state! [:ui/sidebar-collapsed-blocks db-id] false) (open-right-sidebar!) (when-let [elem (gdom/getElementByClass "sidebar-item-list")] (util/scroll-to elem 0))))) From 99bef71704fff5d7222b1f19ef83ca602dbb87b2 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 6 Jul 2023 13:13:34 +0300 Subject: [PATCH 19/63] fix: show close button on mobile --- src/main/frontend/components/container.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 257b514791a5..ad9d8e11ce3f 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -644,7 +644,8 @@ html[data-theme='dark'] { transform: scale(1); } } - + + .is-mobile &, &:hover { .close { visibility: visible; From 775825d7298ab6f31ad45c43b447f29dccae52c6 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 6 Jul 2023 18:31:15 +0300 Subject: [PATCH 20/63] wip: right sidebar --- src/main/frontend/components/container.css | 39 +++++++++++++++++-- .../frontend/components/right_sidebar.cljs | 33 +++++++++++++--- .../frontend/components/right_sidebar.css | 6 ++- src/main/frontend/components/theme.css | 9 ++--- 4 files changed, 72 insertions(+), 15 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index ad9d8e11ce3f..9100d1abc1b5 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -82,7 +82,6 @@ width: var(--ls-left-sidebar-sm-width); overflow-y: auto; overflow-x: hidden; - background-color: var(--ls-primary-background-color); transition: transform .3s; transform: translate3d(-100%, 0, 0); z-index: 3; @@ -621,14 +620,48 @@ html[data-theme='dark'] { .sidebar-item { overflow: hidden; - flex: 1 1 auto; - min-height: 140px; + flex: 1 1; + min-height: 100px; + border: 1px solid transparent; + transition: border-color 0.1s; + + .sidebar-item-header { + white-space: nowrap; + overflow: hidden; + .breadcrumb { + margin-top: 0; + margin-bottom: 0; + } + } + + &.drag-over { + border-color: var(--ls-active-primary-color); + } + + &.item-type-block .sidebar-item-header { + background: linear-gradient(0deg, var(--ls-secondary-background-color), var(--ls-tertiary-background-color)); + } + &.collapsed { flex: 0; overflow: initial; min-height: initial; + + &.item-type-block .sidebar-item-header { + background: var(--ls-tertiary-background-color); + } + } + + /* + &:not(:hover) { + ::-webkit-scrollbar-thumb, + ::-webkit-scrollbar, + ::-webkit-scrollbar-thumb:active { + background-color: transparent; + } } + */ .initial { flex: 1; diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 31494576366e..9597a6bd8f37 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -182,17 +182,40 @@ (assoc :class class)) svg/close])) +(defonce *drag-to + (atom nil)) + +(defonce *drag-from + (atom nil)) + (rum/defc sidebar-item < rum/reactive [repo idx db-id block-type] - (let [item (build-sidebar-item repo idx db-id block-type)] + (let [item (build-sidebar-item repo idx db-id block-type) + drag-to (rum/react *drag-to) + drag-from (rum/react *drag-from)] (when item (let [collapsed? (state/sub [:ui/sidebar-collapsed-blocks db-id])] - [:div.flex.sidebar-item.content.color-level.shadow-md {:class (when collapsed? "collapsed")} + [:div.flex.sidebar-item.content.color-level.shadow-md.rounded + {:class [(str "item-type-" (name block-type)) + (when collapsed? "collapsed") + (when (and (= idx drag-to) (not= drag-to drag-from)) "drag-over")] + :on-drag-over #(reset! *drag-to idx)} (let [[title component] item] [:div.flex.flex-col.w-full - [:button.flex.flex-row.justify-between.p-4 - {:on-click (fn [e] - (.preventDefault e) + [:button.flex.flex-row.justify-between.p-2.sidebar-item-header.color-level + {:draggable true + :on-drag-leave #(reset! *drag-to nil) + :on-drag-over #(reset! *drag-to idx) + :on-drag-start (fn [event] + (.setData (gobj/get event "dataTransfer") + "block-dom-id" + db-id) + (reset! *drag-from idx)) + :on-drag-end (fn [_event] + (reset! *drag-to nil) + (reset! *drag-from nil)) + :on-click (fn [event] + (.preventDefault event) (state/sidebar-block-toggle-collapse! db-id))} [:div.flex.flex-row.justify-center [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 diff --git a/src/main/frontend/components/right_sidebar.css b/src/main/frontend/components/right_sidebar.css index 48a23782a662..f9d1b44c7b9c 100644 --- a/src/main/frontend/components/right_sidebar.css +++ b/src/main/frontend/components/right_sidebar.css @@ -24,11 +24,15 @@ html[data-theme=light] a.toggle:hover { color: var(--ls-primary-text-color); } -.cp__header a, .cp__header button, .cp__right-sidebar-topbar button { +.cp__header a, .cp__header button { opacity: 1; color: var(--ls-header-button-background); } +.cp__right-sidebar-topbar button { + opacity: 1; +} + html[data-theme=dark] { .cp__header a, .cp__header button { opacity: 0.7; diff --git a/src/main/frontend/components/theme.css b/src/main/frontend/components/theme.css index f35d65c38a31..e8470658dded 100644 --- a/src/main/frontend/components/theme.css +++ b/src/main/frontend/components/theme.css @@ -17,17 +17,14 @@ html { ::-webkit-scrollbar { background-color: var(--ls-scrollbar-background-color); + width: var(--ls-scrollbar-width); + height: 8px; } ::-webkit-scrollbar-thumb:active { background-color: var(--ls-scrollbar-thumb-hover-color); } - - ::-webkit-scrollbar { - width: var(--ls-scrollbar-width); - height: 8px; - } - + ::-webkit-scrollbar-corner { background: transparent; } From 553a43f370b9384f2083dabb29665d651e620b3f Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Fri, 7 Jul 2023 13:05:56 +0300 Subject: [PATCH 21/63] support default and custom icons --- .../frontend/components/right_sidebar.cljs | 51 +++++++++---------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 9597a6bd8f37..3eb4d0c5465a 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -61,12 +61,12 @@ (defn- block-with-breadcrumb [repo block idx sidebar-key ref?] (when-let [block-id (:block/uuid block)] - [[:div.mt-1 {:class (if ref? "ml-8" "ml-1")} + [[:.flex.items-center {:class (when ref? "ml-8")} + (ui/icon "block" {:class "text-md mr-2"}) (block/breadcrumb {:id "block-parent" :block? true - :sidebar-key sidebar-key} repo block-id {})] - [:div.ml-2 - (block-cp repo idx block)]])) + :sidebar-key sidebar-key} repo block-id {:indent? false})] + (block-cp repo idx block)])) (rum/defc history-action-info [[k v]] @@ -116,18 +116,18 @@ [repo idx db-id block-type] (case (keyword block-type) :contents - [(t :right-side-bar/contents) + [[:.flex.items-center (ui/icon "list-details" {:class "text-md mr-2"}) (t :right-side-bar/contents)] (contents)] :help - [(t :right-side-bar/help) (onboarding/help)] + [[:.flex.items-center (ui/icon "help" {:class "text-md mr-2"}) (t :right-side-bar/help)] (onboarding/help)] :page-graph - [(t :right-side-bar/page-graph) + [[:.flex.items-center (ui/icon "chart-bubble" {:class "text-md mr-2"}) (t :right-side-bar/page-graph)] (page/page-graph)] :history - [(t :right-side-bar/history) + [[:.flex.items-center (ui/icon "history" {:class "text-md mr-2"}) (t :right-side-bar/history)] (history)] :block-ref @@ -144,20 +144,15 @@ (block-with-breadcrumb repo block idx [repo db-id block-type] false))) :page - (when-let [page-name (if (integer? db-id) - (:block/name (db/entity db-id)) - db-id)] - [[:a.page-title {:href (if (db-model/whiteboard-page? page-name) - (rfe/href :whiteboard {:name page-name}) - (rfe/href :page {:name page-name})) - :draggable true - :on-drag-start (fn [event] (editor-handler/block->data-transfer! page-name event)) - :on-click (fn [e] - (when (gobj/get e "shiftKey") - (.preventDefault e)))} + (let [lookup (if (integer? db-id) db-id [:block/uuid db-id]) + page (db/entity repo lookup) + page-name (:block/name page)] + [[:.flex.items-center.page-title + (if-let [icon (get-in page [:block/properties :icon])] + [:.text-md.mr-2 icon] + (ui/icon "page" {:class "text-md mr-2"})) (db-model/get-page-original-name page-name)] - [:div.ml-2 - (page-cp repo page-name)]]) + (page-cp repo page-name)]) :page-slide-view (let [page-name (:block/name (db/entity db-id))] @@ -195,11 +190,10 @@ drag-from (rum/react *drag-from)] (when item (let [collapsed? (state/sub [:ui/sidebar-collapsed-blocks db-id])] - [:div.flex.sidebar-item.content.color-level.shadow-md.rounded + [:div.flex.sidebar-item.content.color-level.shadow-md.rounded {:class [(str "item-type-" (name block-type)) - (when collapsed? "collapsed") - (when (and (= idx drag-to) (not= drag-to drag-from)) "drag-over")] - :on-drag-over #(reset! *drag-to idx)} + (when collapsed? "collapsed") + (when (and (= idx drag-to) (not= drag-to drag-from)) "drag-over")]} (let [[title component] item] [:div.flex.flex-col.w-full [:button.flex.flex-row.justify-between.p-2.sidebar-item-header.color-level @@ -207,9 +201,10 @@ :on-drag-leave #(reset! *drag-to nil) :on-drag-over #(reset! *drag-to idx) :on-drag-start (fn [event] - (.setData (gobj/get event "dataTransfer") - "block-dom-id" - db-id) + (when-let [page-name (if (integer? db-id) + (:block/name (db/entity db-id)) + db-id)] + (editor-handler/block->data-transfer! page-name event)) (reset! *drag-from idx)) :on-drag-end (fn [_event] (reset! *drag-to nil) From d59fb99a77470a2bdb9b17a40d665753e62e4013 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Fri, 7 Jul 2023 14:20:42 +0300 Subject: [PATCH 22/63] fix whiteboard icon --- src/main/frontend/components/right_sidebar.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 3eb4d0c5465a..0a65e75f6c7b 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -150,7 +150,7 @@ [[:.flex.items-center.page-title (if-let [icon (get-in page [:block/properties :icon])] [:.text-md.mr-2 icon] - (ui/icon "page" {:class "text-md mr-2"})) + (ui/icon (if (= "whiteboard" (:block/type page)) "whiteboard" "page") {:class "text-md mr-2"})) (db-model/get-page-original-name page-name)] (page-cp repo page-name)]) From 478f20dc9fe80914ac217bc468917c2311c71cee Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Fri, 7 Jul 2023 15:26:08 +0300 Subject: [PATCH 23/63] fix: header overflow --- src/main/frontend/components/container.css | 2 ++ src/main/frontend/components/right_sidebar.cljs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 9100d1abc1b5..e51148e1884a 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -632,6 +632,8 @@ html[data-theme='dark'] { .breadcrumb { margin-top: 0; margin-bottom: 0; + text-overflow: ellipsis; + overflow: hidden; } } diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 0a65e75f6c7b..c0037f89b7e7 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -212,10 +212,10 @@ :on-click (fn [event] (.preventDefault event) (state/sidebar-block-toggle-collapse! db-id))} - [:div.flex.flex-row.justify-center + [:div.flex.flex-row.overflow-hidden [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 (ui/rotating-arrow collapsed?)] - [:div.ml-1.font-medium + [:div.ml-1.font-medium.overflow-hidden title]] (close #(state/sidebar-remove-block! idx))] [:div.scrollbar-spacing.p-4 {:class (if collapsed? "hidden" "initial")} From 7a671d6a0ac422d089d46ce9937f2ca8295f3970 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Mon, 10 Jul 2023 13:21:04 +0300 Subject: [PATCH 24/63] remove unneeded dependency --- src/main/frontend/components/right_sidebar.cljs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index c0037f89b7e7..553b6c0b4223 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -19,7 +19,6 @@ [frontend.util :as util] [frontend.config :as config] [frontend.modules.editor.undo-redo :as undo-redo] - [goog.object :as gobj] [medley.core :as medley] [reitit.frontend.easy :as rfe] [rum.core :as rum])) From c6db111635c16f619ffff47ccd073479af8346db Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Mon, 10 Jul 2023 13:21:39 +0300 Subject: [PATCH 25/63] fix graph icon --- src/main/frontend/components/right_sidebar.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 553b6c0b4223..bb5a3d5f96d5 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -122,7 +122,7 @@ [[:.flex.items-center (ui/icon "help" {:class "text-md mr-2"}) (t :right-side-bar/help)] (onboarding/help)] :page-graph - [[:.flex.items-center (ui/icon "chart-bubble" {:class "text-md mr-2"}) (t :right-side-bar/page-graph)] + [[:.flex.items-center (ui/icon "hierarchy" {:class "text-md mr-2"}) (t :right-side-bar/page-graph)] (page/page-graph)] :history From bf17c700c8d5d217631e342cedc085acb6e36b21 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Mon, 10 Jul 2023 18:24:31 +0300 Subject: [PATCH 26/63] add middle click action and context menu --- src/main/frontend/components/container.css | 22 +++---- .../frontend/components/right_sidebar.cljs | 59 +++++++++++++------ src/main/frontend/state.cljs | 11 ++++ 3 files changed, 60 insertions(+), 32 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index e51148e1884a..526165eb7ad5 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -644,7 +644,7 @@ html[data-theme='dark'] { &.item-type-block .sidebar-item-header { background: linear-gradient(0deg, var(--ls-secondary-background-color), var(--ls-tertiary-background-color)); } - + &.collapsed { flex: 0; overflow: initial; @@ -655,35 +655,31 @@ html[data-theme='dark'] { } } - /* &:not(:hover) { ::-webkit-scrollbar-thumb, ::-webkit-scrollbar, ::-webkit-scrollbar-thumb:active { background-color: transparent; - } + } } - */ .initial { flex: 1; } - .close { - transform: scale(0.8); - transition: transform 0.1s, opacity 0.1s; - visibility: hidden; + .item-actions { + @apply h-full invisible; opacity: 0; - &:hover { - transform: scale(1); + .button { + @apply p-0 pl-2 flex items-center h-full; } } - + .is-mobile &, &:hover { - .close { - visibility: visible; + .item-actions { + @apply visible; opacity: 1; } } diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index bb5a3d5f96d5..b67bd33ff903 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -21,7 +21,8 @@ [frontend.modules.editor.undo-redo :as undo-redo] [medley.core :as medley] [reitit.frontend.easy :as rfe] - [rum.core :as rum])) + [rum.core :as rum] + [frontend.handler.common :as common-handler])) (rum/defc toggle [] @@ -165,23 +166,30 @@ ["" [:span]])) -(defn close - ([on-close] - (close nil on-close)) - ([class on-close] - [:a.close.flex.items-center - (cond-> {:on-click on-close - :style {:margin-right -4}} - class - (assoc :class class)) - svg/close])) - (defonce *drag-to (atom nil)) (defonce *drag-from (atom nil)) +(rum/defc context-menu-content + [db-id idx collapsed?] + [:.menu-links-wrapper + (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} "Close" nil) + (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} "Close others" nil) + (ui/menu-link {:on-click (fn [] + (state/clear-sidebar-blocks!) + (state/hide-right-sidebar!))} "Close all" nil) + [:hr.menu-separator] + (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (if collapsed? "Expand" "Collapse") nil) + (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} "Collapse others" nil) + (when (integer? db-id) [:hr.menu-separator]) + (when (integer? db-id) + (let [name (:block/name (db/entity db-id))] + (ui/menu-link {:href (if (db-model/whiteboard-page? name) + (rfe/href :whiteboard {:name name}) + (rfe/href :page {:name name}))} "Open as page" nil)))]) + (rum/defc sidebar-item < rum/reactive [repo idx db-id block-type] (let [item (build-sidebar-item repo idx db-id block-type) @@ -193,30 +201,43 @@ {:class [(str "item-type-" (name block-type)) (when collapsed? "collapsed") (when (and (= idx drag-to) (not= drag-to drag-from)) "drag-over")]} - (let [[title component] item] + (let [[title component] item + page-name (if (integer? db-id) + (:block/name (db/entity db-id)) + db-id)] [:div.flex.flex-col.w-full [:button.flex.flex-row.justify-between.p-2.sidebar-item-header.color-level {:draggable true :on-drag-leave #(reset! *drag-to nil) :on-drag-over #(reset! *drag-to idx) :on-drag-start (fn [event] - (when-let [page-name (if (integer? db-id) - (:block/name (db/entity db-id)) - db-id)] - (editor-handler/block->data-transfer! page-name event)) + (editor-handler/block->data-transfer! page-name event) (reset! *drag-from idx)) :on-drag-end (fn [_event] (reset! *drag-to nil) (reset! *drag-from nil)) :on-click (fn [event] (.preventDefault event) - (state/sidebar-block-toggle-collapse! db-id))} + (js/console.log event.which) + (state/sidebar-block-toggle-collapse! db-id)) + :on-mouse-up (fn [event] + (when (= (.-which (.-nativeEvent event)) 2) + (state/sidebar-remove-block! idx))) + :on-context-menu (fn [e] + (util/stop e) + (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed?)))} [:div.flex.flex-row.overflow-hidden [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 (ui/rotating-arrow collapsed?)] [:div.ml-1.font-medium.overflow-hidden title]] - (close #(state/sidebar-remove-block! idx))] + [:.item-actions.flex + (ui/dropdown (fn [{:keys [toggle-fn]}] + [:button.button {:on-click (fn [e] + (util/stop e) + (toggle-fn))} (ui/icon "dots")]) + #(context-menu-content db-id idx collapsed?)) + [:button.button.close {:on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] [:div.scrollbar-spacing.p-4 {:class (if collapsed? "hidden" "initial")} component]])])))) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index d0811dd02020..214da97223da 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1101,6 +1101,12 @@ Similar to re-frame subscriptions" (when (empty? (:sidebar/blocks @state)) (hide-right-sidebar!))) +(defn sidebar-remove-rest! + [db-id] + (update-state! :sidebar/blocks (fn [blocks] + (remove #(not= (second %) db-id) blocks))) + (set-state! [:ui/sidebar-collapsed-blocks db-id] false)) + (defn sidebar-replace-block! [old-sidebar-key new-sidebar-key] (update-state! :sidebar/blocks (fn [blocks] @@ -1121,6 +1127,11 @@ Similar to re-frame subscriptions" (when db-id (update-state! [:ui/sidebar-collapsed-blocks db-id] not))) +(defn sidebar-block-collapse-rest! + [db-id] + (let [items (disj (set (map second (:sidebar/blocks @state))) db-id)] + (for [item items] (set-state! [:ui/sidebar-collapsed-blocks item] true)))) + (defn get-edit-block [] (get @state :editor/block)) From d47c4d2c28d09849e0a576002d957467f8f08e83 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Mon, 10 Jul 2023 19:28:56 +0300 Subject: [PATCH 27/63] add more context menu actions --- src/main/frontend/components/right_sidebar.cljs | 7 +++++-- src/main/frontend/state.cljs | 8 +++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index b67bd33ff903..2a6177adf8ef 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -181,8 +181,12 @@ (state/clear-sidebar-blocks!) (state/hide-right-sidebar!))} "Close all" nil) [:hr.menu-separator] - (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (if collapsed? "Expand" "Collapse") nil) + (when-not collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Collapse" nil)) (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} "Collapse others" nil) + (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! true)} "Collapse all" nil) + [:hr.menu-separator] + (when collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Expand" nil)) + (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! false)} "Expand all" nil) (when (integer? db-id) [:hr.menu-separator]) (when (integer? db-id) (let [name (:block/name (db/entity db-id))] @@ -218,7 +222,6 @@ (reset! *drag-from nil)) :on-click (fn [event] (.preventDefault event) - (js/console.log event.which) (state/sidebar-block-toggle-collapse! db-id)) :on-mouse-up (fn [event] (when (= (.-which (.-nativeEvent event)) 2) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 214da97223da..918b3bbddf2e 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1130,7 +1130,13 @@ Similar to re-frame subscriptions" (defn sidebar-block-collapse-rest! [db-id] (let [items (disj (set (map second (:sidebar/blocks @state))) db-id)] - (for [item items] (set-state! [:ui/sidebar-collapsed-blocks item] true)))) + (doseq [item items] (set-state! [:ui/sidebar-collapsed-blocks item] true)))) + +(defn sidebar-block-set-collapsed-all! + [collapsed?] + (let [items (map second (:sidebar/blocks @state))] + (doseq [item items] + (set-state! [:ui/sidebar-collapsed-blocks item] collapsed?)))) (defn get-edit-block [] From 79bf300dcbaca11fe6768ac9fb116d6e35e8120e Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Tue, 11 Jul 2023 14:43:22 +0300 Subject: [PATCH 28/63] add reordering support --- src/main/frontend/components/container.css | 24 ++- .../frontend/components/right_sidebar.cljs | 142 ++++++++++-------- .../frontend/components/right_sidebar.css | 3 +- src/main/frontend/state.cljs | 11 ++ 4 files changed, 114 insertions(+), 66 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 526165eb7ad5..8f15040f97b3 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -618,7 +618,23 @@ html[data-theme='dark'] { margin-left: 12px; } + .sidebar-drop-area { + @apply relative; + height: 8px; + + &.drag-over { + &::after { + @apply absolute block w-full; + top: 2px; + height: 4px; + content: " "; + background-color: var(--ls-active-primary-color); + } + } + } + .sidebar-item { + @apply relative; overflow: hidden; flex: 1 1; min-height: 100px; @@ -637,8 +653,12 @@ html[data-theme='dark'] { } } - &.drag-over { - border-color: var(--ls-active-primary-color); + .sidebar-item-drop-overlay-wrapper { + @apply flex flex-col absolute h-full w-full; + } + + .sidebar-item-drop-overlay { + flex: 1 1 50%; } &.item-type-block .sidebar-item-header { diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 2a6177adf8ef..dfed7707c23a 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -5,7 +5,6 @@ [frontend.components.onboarding :as onboarding] [frontend.components.page :as page] [frontend.components.shortcut :as shortcut] - [frontend.components.svg :as svg] [frontend.context.i18n :refer [t]] [frontend.date :as date] [frontend.db :as db] @@ -173,20 +172,20 @@ (atom nil)) (rum/defc context-menu-content - [db-id idx collapsed?] + [db-id idx collapsed? block-count] [:.menu-links-wrapper (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} "Close" nil) - (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} "Close others" nil) - (ui/menu-link {:on-click (fn [] - (state/clear-sidebar-blocks!) - (state/hide-right-sidebar!))} "Close all" nil) + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} "Close others" nil)) + (when (> block-count 1) (ui/menu-link {:on-click (fn [] + (state/clear-sidebar-blocks!) + (state/hide-right-sidebar!))} "Close all" nil)) [:hr.menu-separator] (when-not collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Collapse" nil)) - (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} "Collapse others" nil) - (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! true)} "Collapse all" nil) - [:hr.menu-separator] + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} "Collapse others" nil)) + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! true)} "Collapse all" nil)) + (when (or collapsed? (> block-count 1)) [:hr.menu-separator]) (when collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Expand" nil)) - (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! false)} "Expand all" nil) + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! false)} "Expand all" nil)) (when (integer? db-id) [:hr.menu-separator]) (when (integer? db-id) (let [name (:block/name (db/entity db-id))] @@ -194,55 +193,70 @@ (rfe/href :whiteboard {:name name}) (rfe/href :page {:name name}))} "Open as page" nil)))]) +(rum/defc drop-area + [idx drag-to] + [:.sidebar-drop-area {:id (str "drop-area-" idx) + :on-drag-over #(when (not= drag-to idx) (reset! *drag-to idx)) + :class (when (= idx drag-to) "drag-over")}]) + (rum/defc sidebar-item < rum/reactive - [repo idx db-id block-type] + [repo idx db-id block-type block-count] (let [item (build-sidebar-item repo idx db-id block-type) drag-to (rum/react *drag-to) drag-from (rum/react *drag-from)] (when item (let [collapsed? (state/sub [:ui/sidebar-collapsed-blocks db-id])] - [:div.flex.sidebar-item.content.color-level.shadow-md.rounded - {:class [(str "item-type-" (name block-type)) - (when collapsed? "collapsed") - (when (and (= idx drag-to) (not= drag-to drag-from)) "drag-over")]} - (let [[title component] item - page-name (if (integer? db-id) - (:block/name (db/entity db-id)) - db-id)] - [:div.flex.flex-col.w-full - [:button.flex.flex-row.justify-between.p-2.sidebar-item-header.color-level - {:draggable true - :on-drag-leave #(reset! *drag-to nil) - :on-drag-over #(reset! *drag-to idx) - :on-drag-start (fn [event] - (editor-handler/block->data-transfer! page-name event) - (reset! *drag-from idx)) - :on-drag-end (fn [_event] - (reset! *drag-to nil) - (reset! *drag-from nil)) - :on-click (fn [event] - (.preventDefault event) - (state/sidebar-block-toggle-collapse! db-id)) - :on-mouse-up (fn [event] - (when (= (.-which (.-nativeEvent event)) 2) - (state/sidebar-remove-block! idx))) - :on-context-menu (fn [e] - (util/stop e) - (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed?)))} - [:div.flex.flex-row.overflow-hidden - [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 - (ui/rotating-arrow collapsed?)] - [:div.ml-1.font-medium.overflow-hidden - title]] - [:.item-actions.flex - (ui/dropdown (fn [{:keys [toggle-fn]}] - [:button.button {:on-click (fn [e] - (util/stop e) - (toggle-fn))} (ui/icon "dots")]) - #(context-menu-content db-id idx collapsed?)) - [:button.button.close {:on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] - [:div.scrollbar-spacing.p-4 {:class (if collapsed? "hidden" "initial")} - component]])])))) + [:<> + (when (zero? idx) (drop-area (dec idx) drag-to)) + [:div.flex.sidebar-item.content.color-level.shadow-md.rounded + {:class [(str "item-type-" (name block-type)) + (when collapsed? "collapsed")]} + (let [[title component] item + page-name (if (integer? db-id) + (:block/name (db/entity db-id)) + db-id)] + [:div.flex.flex-col.w-full.relative + [:button.flex.flex-row.justify-between.p-2.sidebar-item-header.color-level + {:draggable true + :on-drag-start (fn [event] + (editor-handler/block->data-transfer! page-name event) + (reset! *drag-from idx)) + :on-drag-end (fn [_event] + (state/sidebar-move-block! idx drag-to) + (reset! *drag-to nil) + (reset! *drag-from nil)) + :on-click (fn [event] + (.preventDefault event) + (state/sidebar-block-toggle-collapse! db-id)) + :on-mouse-up (fn [event] + (when (= (.-which (.-nativeEvent event)) 2) + (state/sidebar-remove-block! idx))) + :on-context-menu (fn [e] + (util/stop e) + (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed? block-count)))} + [:div.flex.flex-row.overflow-hidden + [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 + (ui/rotating-arrow collapsed?)] + [:div.ml-1.font-medium.overflow-hidden + title]] + [:.item-actions.flex + (ui/dropdown (fn [{:keys [toggle-fn]}] + [:button.button {:on-click (fn [e] + (util/stop e) + (toggle-fn))} (ui/icon "dots")]) + #(context-menu-content db-id idx collapsed? block-count)) + [:button.button.close {:on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] + [:div.scrollbar-spacing.p-4 {:class (if collapsed? "hidden" "initial")} + component] + (when drag-from + [:.sidebar-item-drop-overlay-wrapper + [:.sidebar-item-drop-overlay.top + {:on-drag-over #(when (not= drag-to (dec idx)) + (reset! *drag-to (dec idx)))}] + [:.sidebar-item-drop-overlay.bottom + {:on-drag-over #(when (not= drag-to idx) + (reset! *drag-to idx))}]])])] + (drop-area idx drag-to)])))) (defn- get-page [match] @@ -354,7 +368,8 @@ (js/setTimeout (fn [] (reset! (get state ::anim-finished?) true)) 300) state)} [state repo t blocks] - (let [*anim-finished? (get state ::anim-finished?)] + (let [*anim-finished? (get state ::anim-finished?) + block-count (count blocks)] [:div.cp__right-sidebar-inner.flex.flex-col.h-full#right-sidebar-container [:div.cp__right-sidebar-scrollable @@ -362,21 +377,21 @@ [:div.cp__right-sidebar-settings.hide-scrollbar.gap-1 {:key "right-sidebar-settings"} [:div.text-sm [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [_e] - (state/sidebar-add-block! repo "contents" :contents))} + (state/sidebar-add-block! repo "contents" :contents))} (t :right-side-bar/contents)]] [:div.text-sm [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [] - (when-let [page (get-current-page)] - (state/sidebar-add-block! - repo - page - :page-graph)))} + (when-let [page (get-current-page)] + (state/sidebar-add-block! + repo + page + :page-graph)))} (t :right-side-bar/page-graph)]] [:div.text-sm [:button.button.cp__right-sidebar-settings-btn {:on-click (fn [_e] - (state/sidebar-add-block! repo "help" :help))} + (state/sidebar-add-block! repo "help" :help))} (t :right-side-bar/help)]] (when (and config/dev? (state/sub [:ui/developer-mode?])) @@ -385,11 +400,12 @@ (state/sidebar-add-block! repo "history" :history))} (t :right-side-bar/history)]])]] - [:.sidebar-item-list.flex-1.scrollbar-spacing.flex.flex-col.gap-2.pb-2.mx-2 + [:.sidebar-item-list.flex-1.scrollbar-spacing.flex.flex-col.mx-2 + {:on-drag-leave #(reset! *drag-to nil)} (if @*anim-finished? (for [[idx [repo db-id block-type]] (medley/indexed blocks)] (rum/with-key - (sidebar-item repo idx db-id block-type) + (sidebar-item repo idx db-id block-type block-count) (str "sidebar-block-" idx))) [:div.p-4 [:span.font-medium.opacity-50 "Loading ..."]])]]])) diff --git a/src/main/frontend/components/right_sidebar.css b/src/main/frontend/components/right_sidebar.css index f9d1b44c7b9c..64d154f8a1af 100644 --- a/src/main/frontend/components/right_sidebar.css +++ b/src/main/frontend/components/right_sidebar.css @@ -16,7 +16,8 @@ html[data-theme=light] { } .sidebar-item-list { - height: calc(100vh - 48px); + margin-top: -8px; + height: calc(100vh - 40px); } diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 918b3bbddf2e..84f6615fcd41 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1092,6 +1092,17 @@ Similar to re-frame subscriptions" (when-let [elem (gdom/getElementByClass "sidebar-item-list")] (util/scroll-to elem 0))))) +(defn sidebar-move-block! + [idx move-to] + (update-state! :sidebar/blocks (fn [blocks] + (let [move-to (if (> idx move-to) (inc move-to) move-to)] + (if (and move-to (not= move-to idx)) + (let [item (nth blocks idx) + blocks (keep-indexed #(when (not= %1 idx) %2) blocks) + [l r] (split-at move-to blocks)] + (concat l [item] r)) + blocks))))) + (defn sidebar-remove-block! [idx] (update-state! :sidebar/blocks (fn [blocks] From d158eb17dfc92eef866404b069995ef1e0616abb Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Tue, 11 Jul 2023 16:34:12 +0300 Subject: [PATCH 29/63] fix dropdown visibility --- src/main/frontend/components/container.css | 1 - src/main/frontend/components/right_sidebar.cljs | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 8f15040f97b3..1214020872d4 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -643,7 +643,6 @@ html[data-theme='dark'] { .sidebar-item-header { white-space: nowrap; - overflow: hidden; .breadcrumb { margin-top: 0; diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index dfed7707c23a..2e1e81482671 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -173,13 +173,14 @@ (rum/defc context-menu-content [db-id idx collapsed? block-count] - [:.menu-links-wrapper + [:.menu-links-wrapper.text-left + {:on-click (fn [e] (util/stop e))} (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} "Close" nil) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} "Close others" nil)) (when (> block-count 1) (ui/menu-link {:on-click (fn [] (state/clear-sidebar-blocks!) (state/hide-right-sidebar!))} "Close all" nil)) - [:hr.menu-separator] + (when (or (not collapsed?) (> block-count 1))[:hr.menu-separator]) (when-not collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Collapse" nil)) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} "Collapse others" nil)) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! true)} "Collapse all" nil)) @@ -195,8 +196,7 @@ (rum/defc drop-area [idx drag-to] - [:.sidebar-drop-area {:id (str "drop-area-" idx) - :on-drag-over #(when (not= drag-to idx) (reset! *drag-to idx)) + [:.sidebar-drop-area {:on-drag-over #(when (not= drag-to idx) (reset! *drag-to idx)) :class (when (= idx drag-to) "drag-over")}]) (rum/defc sidebar-item < rum/reactive @@ -226,7 +226,7 @@ (reset! *drag-to nil) (reset! *drag-from nil)) :on-click (fn [event] - (.preventDefault event) + (util/stop event) (state/sidebar-block-toggle-collapse! db-id)) :on-mouse-up (fn [event] (when (= (.-which (.-nativeEvent event)) 2) From 6be56c155f358085badc7d5e0be383f8de18d65a Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 12 Jul 2023 16:01:45 +0300 Subject: [PATCH 30/63] dnd fixes and initial state --- .../frontend/components/right_sidebar.cljs | 21 +++++---------- src/main/frontend/state.cljs | 26 +++++++++++++------ 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 2e1e81482671..18125a8ff743 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -196,7 +196,7 @@ (rum/defc drop-area [idx drag-to] - [:.sidebar-drop-area {:on-drag-over #(when (not= drag-to idx) (reset! *drag-to idx)) + [:.sidebar-drop-area {:on-drag-enter #(when (not= drag-to idx) (reset! *drag-to idx)) :class (when (= idx drag-to) "drag-over")}]) (rum/defc sidebar-item < rum/reactive @@ -211,18 +211,15 @@ [:div.flex.sidebar-item.content.color-level.shadow-md.rounded {:class [(str "item-type-" (name block-type)) (when collapsed? "collapsed")]} - (let [[title component] item - page-name (if (integer? db-id) - (:block/name (db/entity db-id)) - db-id)] + (let [[title component] item] [:div.flex.flex-col.w-full.relative [:button.flex.flex-row.justify-between.p-2.sidebar-item-header.color-level {:draggable true :on-drag-start (fn [event] - (editor-handler/block->data-transfer! page-name event) + (editor-handler/block->data-transfer! (:block/name (db/entity db-id)) event) (reset! *drag-from idx)) :on-drag-end (fn [_event] - (state/sidebar-move-block! idx drag-to) + (when drag-to (state/sidebar-move-block! idx drag-to)) (reset! *drag-to nil) (reset! *drag-from nil)) :on-click (fn [event] @@ -251,11 +248,9 @@ (when drag-from [:.sidebar-item-drop-overlay-wrapper [:.sidebar-item-drop-overlay.top - {:on-drag-over #(when (not= drag-to (dec idx)) - (reset! *drag-to (dec idx)))}] + {:on-drag-enter #(reset! *drag-to (dec idx))}] [:.sidebar-item-drop-overlay.bottom - {:on-drag-over #(when (not= drag-to idx) - (reset! *drag-to idx))}]])])] + {:on-drag-enter #(reset! *drag-to idx)}]])])] (drop-area idx drag-to)])))) (defn- get-page @@ -401,7 +396,6 @@ (t :right-side-bar/history)]])]] [:.sidebar-item-list.flex-1.scrollbar-spacing.flex.flex-col.mx-2 - {:on-drag-leave #(reset! *drag-to nil)} (if @*anim-finished? (for [[idx [repo db-id block-type]] (medley/indexed blocks)] (rum/with-key @@ -413,9 +407,6 @@ (rum/defcs sidebar < rum/reactive [state] (let [blocks (state/sub-right-sidebar-blocks) - blocks (if (empty? blocks) - [[(state/get-current-repo) "contents" :contents nil]] - blocks) sidebar-open? (state/sub :ui/sidebar-open?) width (state/sub :ui/sidebar-width) repo (state/sub :git/current-repo)] diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 84f6615fcd41..db9226275c10 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1069,11 +1069,21 @@ Similar to re-frame subscriptions" (defn toggle-sidebar-open?! [] - (swap! state update :ui/sidebar-open? not)) + (let [current-repo (get-current-repo) + blocks (filter #(= (first %) current-repo) (:sidebar/blocks @state))] + (when (and (not (:ui/sidebar-open? @state)) (empty? blocks)) + (swap! state assoc :sidebar/blocks [[current-repo "contents" :contents nil]]) + (set-state! [:ui/sidebar-collapsed-blocks "contents"] false)) + (swap! state update :ui/sidebar-open? not))) (defn open-right-sidebar! [] - (swap! state assoc :ui/sidebar-open? true)) + (let [current-repo (get-current-repo) + blocks (filter #(= (first %) current-repo) (:sidebar/blocks @state))] + (when (empty? blocks) + (swap! state assoc :sidebar/blocks [[current-repo "contents" :contents nil]]) + (set-state! [:ui/sidebar-collapsed-blocks "contents"] false)) + (swap! state assoc :ui/sidebar-open? true))) (defn hide-right-sidebar! [] @@ -1093,13 +1103,13 @@ Similar to re-frame subscriptions" (util/scroll-to elem 0))))) (defn sidebar-move-block! - [idx move-to] + [from to] (update-state! :sidebar/blocks (fn [blocks] - (let [move-to (if (> idx move-to) (inc move-to) move-to)] - (if (and move-to (not= move-to idx)) - (let [item (nth blocks idx) - blocks (keep-indexed #(when (not= %1 idx) %2) blocks) - [l r] (split-at move-to blocks)] + (let [to (if (> from to) (inc to) to)] + (if (not= to from) + (let [item (nth blocks from) + blocks (keep-indexed #(when (not= %1 from) %2) blocks) + [l r] (split-at to blocks)] (concat l [item] r)) blocks))))) From d7998cf8b73c6a4a71e8aa1daa42426769f309b7 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 12 Jul 2023 19:58:49 +0300 Subject: [PATCH 31/63] varous fixes --- src/main/frontend/components/container.css | 15 +++++++----- .../frontend/components/right_sidebar.cljs | 23 +++++++++++-------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 1214020872d4..f663d6f2d8b7 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -635,7 +635,6 @@ html[data-theme='dark'] { .sidebar-item { @apply relative; - overflow: hidden; flex: 1 1; min-height: 100px; border: 1px solid transparent; @@ -687,19 +686,23 @@ html[data-theme='dark'] { } .item-actions { - @apply h-full invisible; - opacity: 0; + @apply h-full; .button { - @apply p-0 pl-2 flex items-center h-full; + @apply invisible p-0 ml-2 flex items-center h-full; + + &:focus { + @apply visible; + } } } .is-mobile &, &:hover { .item-actions { - @apply visible; - opacity: 1; + .button { + @apply visible; + } } } } diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 18125a8ff743..d5e79c1dcb57 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -172,15 +172,17 @@ (atom nil)) (rum/defc context-menu-content - [db-id idx collapsed? block-count] + [db-id idx collapsed? block-count toggle-fn] [:.menu-links-wrapper.text-left - {:on-click (fn [e] (util/stop e))} + {:on-click (fn [e] + (.stopPropagation e) + (toggle-fn))} (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} "Close" nil) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} "Close others" nil)) (when (> block-count 1) (ui/menu-link {:on-click (fn [] (state/clear-sidebar-blocks!) (state/hide-right-sidebar!))} "Close all" nil)) - (when (or (not collapsed?) (> block-count 1))[:hr.menu-separator]) + (when (or (not collapsed?) (> block-count 1)) [:hr.menu-separator]) (when-not collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Collapse" nil)) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} "Collapse others" nil)) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! true)} "Collapse all" nil)) @@ -197,6 +199,7 @@ (rum/defc drop-area [idx drag-to] [:.sidebar-drop-area {:on-drag-enter #(when (not= drag-to idx) (reset! *drag-to idx)) + :on-drag-over util/stop :class (when (= idx drag-to) "drag-over")}]) (rum/defc sidebar-item < rum/reactive @@ -219,7 +222,7 @@ (editor-handler/block->data-transfer! (:block/name (db/entity db-id)) event) (reset! *drag-from idx)) :on-drag-end (fn [_event] - (when drag-to (state/sidebar-move-block! idx drag-to)) + (when drag-to (state/sidebar-move-block! idx drag-to)) (reset! *drag-to nil) (reset! *drag-from nil)) :on-click (fn [event] @@ -230,7 +233,7 @@ (state/sidebar-remove-block! idx))) :on-context-menu (fn [e] (util/stop e) - (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed? block-count)))} + (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed? block-count #())))} [:div.flex.flex-row.overflow-hidden [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 (ui/rotating-arrow collapsed?)] @@ -238,15 +241,17 @@ title]] [:.item-actions.flex (ui/dropdown (fn [{:keys [toggle-fn]}] - [:button.button {:on-click (fn [e] - (util/stop e) - (toggle-fn))} (ui/icon "dots")]) - #(context-menu-content db-id idx collapsed? block-count)) + [:button.button {:on-click (fn [e] + (util/stop e) + (toggle-fn))} (ui/icon "dots")]) + (fn [{:keys [close-fn]}] + (context-menu-content db-id idx collapsed? block-count close-fn))) [:button.button.close {:on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] [:div.scrollbar-spacing.p-4 {:class (if collapsed? "hidden" "initial")} component] (when drag-from [:.sidebar-item-drop-overlay-wrapper + {:on-drag-over util/stop} [:.sidebar-item-drop-overlay.top {:on-drag-enter #(reset! *drag-to (dec idx))}] [:.sidebar-item-drop-overlay.bottom From bd2a02116b0bee78ca6da61e61a82e8a56deb509 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 11:49:17 +0300 Subject: [PATCH 32/63] fix event propagation --- src/main/frontend/components/right_sidebar.cljs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index d5e79c1dcb57..e2f24682d9f2 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -174,9 +174,7 @@ (rum/defc context-menu-content [db-id idx collapsed? block-count toggle-fn] [:.menu-links-wrapper.text-left - {:on-click (fn [e] - (.stopPropagation e) - (toggle-fn))} + {:on-click toggle-fn} (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} "Close" nil) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} "Close others" nil)) (when (> block-count 1) (ui/menu-link {:on-click (fn [] @@ -216,7 +214,7 @@ (when collapsed? "collapsed")]} (let [[title component] item] [:div.flex.flex-col.w-full.relative - [:button.flex.flex-row.justify-between.p-2.sidebar-item-header.color-level + [:.flex.flex-row.justify-between.pr-2.sidebar-item-header.color-level {:draggable true :on-drag-start (fn [event] (editor-handler/block->data-transfer! (:block/name (db/entity db-id)) event) @@ -225,16 +223,16 @@ (when drag-to (state/sidebar-move-block! idx drag-to)) (reset! *drag-to nil) (reset! *drag-from nil)) - :on-click (fn [event] - (util/stop event) - (state/sidebar-block-toggle-collapse! db-id)) :on-mouse-up (fn [event] (when (= (.-which (.-nativeEvent event)) 2) (state/sidebar-remove-block! idx))) :on-context-menu (fn [e] (util/stop e) (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed? block-count #())))} - [:div.flex.flex-row.overflow-hidden + [:button.flex.flex-row.p-2.items-center.w-full.overflow-hidden + {:on-click (fn [event] + (util/stop event) + (state/sidebar-block-toggle-collapse! db-id))} [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 (ui/rotating-arrow collapsed?)] [:div.ml-1.font-medium.overflow-hidden From 05719505b01b5ecc3d03985b4af930a324ebb51d Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 12:08:52 +0300 Subject: [PATCH 33/63] enhance accesibility --- src/main/frontend/components/container.css | 2 +- .../frontend/components/right_sidebar.cljs | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index f663d6f2d8b7..39a88c05aac0 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -689,7 +689,7 @@ html[data-theme='dark'] { @apply h-full; .button { - @apply invisible p-0 ml-2 flex items-center h-full; + @apply invisible p-0 ml-2 flex items-center; &:focus { @apply visible; diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index e2f24682d9f2..06c568bb30e4 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -230,22 +230,30 @@ (util/stop e) (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed? block-count #())))} [:button.flex.flex-row.p-2.items-center.w-full.overflow-hidden - {:on-click (fn [event] + {:area-expanded (not collapsed?) + :id (str "sidebar-panel-header-" idx) + :aria-controls (str "sidebar-panel-content-" idx) + :on-click (fn [event] (util/stop event) (state/sidebar-block-toggle-collapse! db-id))} [:span.opacity-50.hover:opacity-100.flex.items-center.pr-1 (ui/rotating-arrow collapsed?)] [:div.ml-1.font-medium.overflow-hidden title]] - [:.item-actions.flex + [:.item-actions.flex.items-center (ui/dropdown (fn [{:keys [toggle-fn]}] - [:button.button {:on-click (fn [e] + [:button.button {:title "More" + :on-click (fn [e] (util/stop e) (toggle-fn))} (ui/icon "dots")]) (fn [{:keys [close-fn]}] (context-menu-content db-id idx collapsed? block-count close-fn))) - [:button.button.close {:on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] - [:div.scrollbar-spacing.p-4 {:class (if collapsed? "hidden" "initial")} + [:button.button.close {:title "Close" + :on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] + [:div.scrollbar-spacing.p-4 {:role "region" + :id (str "sidebar-panel-content-" idx) + :aria-labelledby (str "sidebar-panel-header-" idx) + :class (if collapsed? "hidden" "initial")} component] (when drag-from [:.sidebar-item-drop-overlay-wrapper From aa05d47da6403c5514d84bfa17c9c248b391ffee Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 12:21:08 +0300 Subject: [PATCH 34/63] area expanded fix --- src/main/frontend/components/right_sidebar.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 06c568bb30e4..66e67488c37e 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -230,7 +230,7 @@ (util/stop e) (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed? block-count #())))} [:button.flex.flex-row.p-2.items-center.w-full.overflow-hidden - {:area-expanded (not collapsed?) + {:aria-expanded (str (not collapsed?)) :id (str "sidebar-panel-header-" idx) :aria-controls (str "sidebar-panel-content-" idx) :on-click (fn [event] From bd868fab37614a13cdac9700ee4aee4abba1d2b7 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 12:38:11 +0300 Subject: [PATCH 35/63] add translations --- .../frontend/components/right_sidebar.cljs | 22 +++++++++---------- src/resources/dicts/en.edn | 10 +++++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 66e67488c37e..c10efe1a77f7 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -175,24 +175,24 @@ [db-id idx collapsed? block-count toggle-fn] [:.menu-links-wrapper.text-left {:on-click toggle-fn} - (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} "Close" nil) - (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} "Close others" nil)) + (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} (t :right-side-bar/pane-close) nil) + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-remove-rest! db-id)} (t :right-side-bar/pane-clese-others) nil)) (when (> block-count 1) (ui/menu-link {:on-click (fn [] (state/clear-sidebar-blocks!) - (state/hide-right-sidebar!))} "Close all" nil)) + (state/hide-right-sidebar!))} (t :right-side-bar/pane-clese-all) nil)) (when (or (not collapsed?) (> block-count 1)) [:hr.menu-separator]) - (when-not collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Collapse" nil)) - (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} "Collapse others" nil)) - (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! true)} "Collapse all" nil)) + (when-not collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (t :right-side-bar/pane-collapse) nil)) + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-collapse-rest! db-id)} (t :right-side-bar/pane-collapse-others) nil)) + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! true)} (t :right-side-bar/pane-collapse-all) nil)) (when (or collapsed? (> block-count 1)) [:hr.menu-separator]) - (when collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} "Expand" nil)) - (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! false)} "Expand all" nil)) + (when collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (t :right-side-bar/pane-expand) nil)) + (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! false)} (t :right-side-bar/pane-expand-all) nil)) (when (integer? db-id) [:hr.menu-separator]) (when (integer? db-id) (let [name (:block/name (db/entity db-id))] (ui/menu-link {:href (if (db-model/whiteboard-page? name) (rfe/href :whiteboard {:name name}) - (rfe/href :page {:name name}))} "Open as page" nil)))]) + (rfe/href :page {:name name}))} (t :right-side-bar/pane-open-as-page) nil)))]) (rum/defc drop-area [idx drag-to] @@ -242,13 +242,13 @@ title]] [:.item-actions.flex.items-center (ui/dropdown (fn [{:keys [toggle-fn]}] - [:button.button {:title "More" + [:button.button {:title (t :right-side-bar/pane-more) :on-click (fn [e] (util/stop e) (toggle-fn))} (ui/icon "dots")]) (fn [{:keys [close-fn]}] (context-menu-content db-id idx collapsed? block-count close-fn))) - [:button.button.close {:title "Close" + [:button.button.close {:title (t :right-side-bar/pane-close) :on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] [:div.scrollbar-spacing.p-4 {:role "region" :id (str "sidebar-panel-content-" idx) diff --git a/src/resources/dicts/en.edn b/src/resources/dicts/en.edn index 3c5ab37aa998..656de41f8ca0 100644 --- a/src/resources/dicts/en.edn +++ b/src/resources/dicts/en.edn @@ -148,6 +148,16 @@ :right-side-bar/show-journals "Show Journals" :right-side-bar/separator "Right sidebar resize handler" :right-side-bar/toggle-right-sidebar "Toggle right sidebar" + :right-side-bar/pane-close "Close" + :right-side-bar/pane-clese-others "Close others" + :right-side-bar/pane-clese-all "Close all" + :right-side-bar/pane-collapse "Collapse" + :right-side-bar/pane-collapse-others "Collapse others" + :right-side-bar/pane-collapse-all "Collapse all" + :right-side-bar/pane-expand "Expand" + :right-side-bar/pane-expand-all "Expand all" + :right-side-bar/pane-open-as-page "Open as page" + :right-side-bar/pane-more "More" :left-side-bar/switch "Switch to:" :left-side-bar/journals "Journals" :left-side-bar/create "Create" From 49b28ab03fc19df1b8d6bd0dd7c15b44431206fa Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 14:55:19 +0300 Subject: [PATCH 36/63] refactoring --- src/main/frontend/components/container.css | 6 ++-- .../frontend/components/right_sidebar.cljs | 29 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 39a88c05aac0..99e0b52bf902 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -618,7 +618,7 @@ html[data-theme='dark'] { margin-left: 12px; } - .sidebar-drop-area { + .sidebar-drop-indicator { @apply relative; height: 8px; @@ -651,11 +651,11 @@ html[data-theme='dark'] { } } - .sidebar-item-drop-overlay-wrapper { + .sidebar-item-drop-area { @apply flex flex-col absolute h-full w-full; } - .sidebar-item-drop-overlay { + .sidebar-item-drop-area-overlay { flex: 1 1 50%; } diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index c10efe1a77f7..645bd838d27f 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -194,11 +194,20 @@ (rfe/href :whiteboard {:name name}) (rfe/href :page {:name name}))} (t :right-side-bar/pane-open-as-page) nil)))]) -(rum/defc drop-area +(rum/defc drop-indicator [idx drag-to] - [:.sidebar-drop-area {:on-drag-enter #(when (not= drag-to idx) (reset! *drag-to idx)) - :on-drag-over util/stop - :class (when (= idx drag-to) "drag-over")}]) + [:.sidebar-drop-indicator {:on-drag-enter #(when (not= drag-to idx) (reset! *drag-to idx)) + :on-drag-over util/stop + :class (when (= idx drag-to) "drag-over")}]) + +(rum/defc drop-area + [idx] + [:.sidebar-item-drop-area + {:on-drag-over util/stop} + [:.sidebar-item-drop-area-overlay.top + {:on-drag-enter #(reset! *drag-to (dec idx))}] + [:.sidebar-item-drop-area-overlay.bottom + {:on-drag-enter #(reset! *drag-to idx)}]]) (rum/defc sidebar-item < rum/reactive [repo idx db-id block-type block-count] @@ -208,7 +217,7 @@ (when item (let [collapsed? (state/sub [:ui/sidebar-collapsed-blocks db-id])] [:<> - (when (zero? idx) (drop-area (dec idx) drag-to)) + (when (zero? idx) (drop-indicator (dec idx) drag-to)) [:div.flex.sidebar-item.content.color-level.shadow-md.rounded {:class [(str "item-type-" (name block-type)) (when collapsed? "collapsed")]} @@ -255,14 +264,8 @@ :aria-labelledby (str "sidebar-panel-header-" idx) :class (if collapsed? "hidden" "initial")} component] - (when drag-from - [:.sidebar-item-drop-overlay-wrapper - {:on-drag-over util/stop} - [:.sidebar-item-drop-overlay.top - {:on-drag-enter #(reset! *drag-to (dec idx))}] - [:.sidebar-item-drop-overlay.bottom - {:on-drag-enter #(reset! *drag-to idx)}]])])] - (drop-area idx drag-to)])))) + (when drag-from (drop-area idx))])] + (drop-indicator idx drag-to)])))) (defn- get-page [match] From d0f05c7667d2de1624a004c7eb4df4aa8d3eb2de Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 16:53:00 +0300 Subject: [PATCH 37/63] enhance performance --- .../frontend/components/right_sidebar.cljs | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 645bd838d27f..b4de87db0cc1 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -209,11 +209,17 @@ [:.sidebar-item-drop-area-overlay.bottom {:on-drag-enter #(reset! *drag-to idx)}]]) + +(rum/defc inner-component < + {:should-update (fn [_prev-state state] (last (:rum/args state)))} + [component _should-update?] + component) + (rum/defc sidebar-item < rum/reactive [repo idx db-id block-type block-count] - (let [item (build-sidebar-item repo idx db-id block-type) + (let [drag-from (rum/react *drag-from) drag-to (rum/react *drag-to) - drag-from (rum/react *drag-from)] + item (build-sidebar-item repo idx db-id block-type)] (when item (let [collapsed? (state/sub [:ui/sidebar-collapsed-blocks db-id])] [:<> @@ -251,19 +257,19 @@ title]] [:.item-actions.flex.items-center (ui/dropdown (fn [{:keys [toggle-fn]}] - [:button.button {:title (t :right-side-bar/pane-more) - :on-click (fn [e] - (util/stop e) - (toggle-fn))} (ui/icon "dots")]) - (fn [{:keys [close-fn]}] - (context-menu-content db-id idx collapsed? block-count close-fn))) - [:button.button.close {:title (t :right-side-bar/pane-close) + [:button.button {:title (t :right-side-bar/pane-more) + :on-click (fn [e] + (util/stop e) + (toggle-fn))} (ui/icon "dots")]) + (fn [{:keys [close-fn]}] + (context-menu-content db-id idx collapsed? block-count close-fn))) + [:button.button.close {:title (t :right-side-bar/pane-close) :on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] [:div.scrollbar-spacing.p-4 {:role "region" :id (str "sidebar-panel-content-" idx) :aria-labelledby (str "sidebar-panel-header-" idx) :class (if collapsed? "hidden" "initial")} - component] + (inner-component component (not drag-from))] (when drag-from (drop-area idx))])] (drop-indicator idx drag-to)])))) @@ -349,8 +355,8 @@ ratio (.toFixed (/ offset width) 6) ratio (if (= handler-position :west) (- 1 ratio) ratio)] (when (and (> ratio min-ratio) (< ratio max-ratio) (not (zero? keyboard-step))) - ((add-resizing-class) - (set-width! ratio))))))) + (do (add-resizing-class) + (set-width! ratio))))))) (.on "keyup" remove-resizing-class))) #()) []) @@ -414,7 +420,7 @@ (for [[idx [repo db-id block-type]] (medley/indexed blocks)] (rum/with-key (sidebar-item repo idx db-id block-type block-count) - (str "sidebar-block-" idx))) + (str "sidebar-block-" db-id))) [:div.p-4 [:span.font-medium.opacity-50 "Loading ..."]])]]])) From 20bd31d66234f66a673e3b740ea54bcb576dff23 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 17:13:46 +0300 Subject: [PATCH 38/63] enhance text overflow --- src/main/frontend/components/container.css | 6 +++--- src/main/frontend/components/right_sidebar.cljs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 99e0b52bf902..787a05464498 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -689,10 +689,10 @@ html[data-theme='dark'] { @apply h-full; .button { - @apply invisible p-0 ml-2 flex items-center; + @apply hidden p-0 ml-2 flex items-center; &:focus { - @apply visible; + @apply flex; } } } @@ -701,7 +701,7 @@ html[data-theme='dark'] { &:hover { .item-actions { .button { - @apply visible; + @apply flex; } } } diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index b4de87db0cc1..653a83d9f96a 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -150,7 +150,7 @@ (if-let [icon (get-in page [:block/properties :icon])] [:.text-md.mr-2 icon] (ui/icon (if (= "whiteboard" (:block/type page)) "whiteboard" "page") {:class "text-md mr-2"})) - (db-model/get-page-original-name page-name)] + [:span.overflow-hidden.text-ellipsis (db-model/get-page-original-name page-name)]] (page-cp repo page-name)]) :page-slide-view From 1ef3980f59cbdb53d46cfe4dc1d1d28abeb8f187 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 17:28:07 +0300 Subject: [PATCH 39/63] fix page link --- src/main/frontend/components/right_sidebar.cljs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 653a83d9f96a..360aa71ee91c 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -172,7 +172,7 @@ (atom nil)) (rum/defc context-menu-content - [db-id idx collapsed? block-count toggle-fn] + [db-id idx type collapsed? block-count toggle-fn] [:.menu-links-wrapper.text-left {:on-click toggle-fn} (ui/menu-link {:on-click #(state/sidebar-remove-block! idx)} (t :right-side-bar/pane-close) nil) @@ -187,8 +187,8 @@ (when (or collapsed? (> block-count 1)) [:hr.menu-separator]) (when collapsed? (ui/menu-link {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (t :right-side-bar/pane-expand) nil)) (when (> block-count 1) (ui/menu-link {:on-click #(state/sidebar-block-set-collapsed-all! false)} (t :right-side-bar/pane-expand-all) nil)) - (when (integer? db-id) [:hr.menu-separator]) - (when (integer? db-id) + (when (= type :page) [:hr.menu-separator]) + (when (= type :page) (let [name (:block/name (db/entity db-id))] (ui/menu-link {:href (if (db-model/whiteboard-page? name) (rfe/href :whiteboard {:name name}) @@ -243,7 +243,7 @@ (state/sidebar-remove-block! idx))) :on-context-menu (fn [e] (util/stop e) - (common-handler/show-custom-context-menu! e (context-menu-content db-id idx collapsed? block-count #())))} + (common-handler/show-custom-context-menu! e (context-menu-content db-id idx block-type collapsed? block-count #())))} [:button.flex.flex-row.p-2.items-center.w-full.overflow-hidden {:aria-expanded (str (not collapsed?)) :id (str "sidebar-panel-header-" idx) @@ -262,7 +262,7 @@ (util/stop e) (toggle-fn))} (ui/icon "dots")]) (fn [{:keys [close-fn]}] - (context-menu-content db-id idx collapsed? block-count close-fn))) + (context-menu-content db-id idx block-type collapsed? block-count close-fn))) [:button.button.close {:title (t :right-side-bar/pane-close) :on-click #(state/sidebar-remove-block! idx)} (ui/icon "x")]]] [:div.scrollbar-spacing.p-4 {:role "region" From ff778447677500a0f22f1fed108e5c49f9dd2c79 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 17:59:41 +0300 Subject: [PATCH 40/63] drag enter fix --- src/main/frontend/components/right_sidebar.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 360aa71ee91c..0e6d0cce0f47 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -196,7 +196,7 @@ (rum/defc drop-indicator [idx drag-to] - [:.sidebar-drop-indicator {:on-drag-enter #(when (not= drag-to idx) (reset! *drag-to idx)) + [:.sidebar-drop-indicator {:on-drag-enter #(when drag-to (reset! *drag-to idx)) :on-drag-over util/stop :class (when (= idx drag-to) "drag-over")}]) From ef7672de6ac9b0ee774e6aec7430bff91b469ea7 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 19:37:20 +0300 Subject: [PATCH 41/63] add rounded corners and transition --- src/main/frontend/components/container.css | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 787a05464498..28ddd40c1e40 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -622,12 +622,16 @@ html[data-theme='dark'] { @apply relative; height: 8px; + &::after { + @apply absolute block w-full rounded; + top: 2px; + height: 4px; + content: " "; + transition: background-color 200ms; + } + &.drag-over { &::after { - @apply absolute block w-full; - top: 2px; - height: 4px; - content: " "; background-color: var(--ls-active-primary-color); } } From 59adfc2436bc45fb9062d837a1705a75baaf122f Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 13 Jul 2023 19:44:16 +0300 Subject: [PATCH 42/63] add keyboard shortcuts icon --- src/main/frontend/components/right_sidebar.cljs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 0e6d0cce0f47..7fdc266a2cbd 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -161,7 +161,8 @@ (slide/slide page-name)]]) :shortcut-settings - [(t :help/shortcuts) (shortcut-settings)] + [[:.flex.items-center (ui/icon "command" {:class "text-md mr-2"}) (t :help/shortcuts)] + (shortcut-settings)] ["" [:span]])) From d704e3c9c15288a4d22eec32c32463aabd7cf936 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Fri, 14 Jul 2023 16:09:44 +0300 Subject: [PATCH 43/63] revert left sidebar change --- src/main/frontend/components/container.css | 1 + src/main/frontend/components/right_sidebar.cljs | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index 28ddd40c1e40..a97fdc816021 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -82,6 +82,7 @@ width: var(--ls-left-sidebar-sm-width); overflow-y: auto; overflow-x: hidden; + background-color: var(--ls-primary-background-color); transition: transform .3s; transform: translate3d(-100%, 0, 0); z-index: 3; diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 7fdc266a2cbd..1e59798b131e 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -210,7 +210,6 @@ [:.sidebar-item-drop-area-overlay.bottom {:on-drag-enter #(reset! *drag-to idx)}]]) - (rum/defc inner-component < {:should-update (fn [_prev-state state] (last (:rum/args state)))} [component _should-update?] From 09476eff273d505a43fd659257ded5b00f3d2096 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Mon, 24 Jul 2023 16:23:38 +0300 Subject: [PATCH 44/63] revert initial sidebar state changes --- src/main/frontend/components/right_sidebar.cljs | 3 +++ src/main/frontend/state.cljs | 14 ++------------ 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 1e59798b131e..b7e80dadf736 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -427,6 +427,9 @@ (rum/defcs sidebar < rum/reactive [state] (let [blocks (state/sub-right-sidebar-blocks) + blocks (if (empty? blocks) + [[(state/get-current-repo) "contents" :contents nil]] + blocks) sidebar-open? (state/sub :ui/sidebar-open?) width (state/sub :ui/sidebar-width) repo (state/sub :git/current-repo)] diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index db9226275c10..85533531043f 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1069,21 +1069,11 @@ Similar to re-frame subscriptions" (defn toggle-sidebar-open?! [] - (let [current-repo (get-current-repo) - blocks (filter #(= (first %) current-repo) (:sidebar/blocks @state))] - (when (and (not (:ui/sidebar-open? @state)) (empty? blocks)) - (swap! state assoc :sidebar/blocks [[current-repo "contents" :contents nil]]) - (set-state! [:ui/sidebar-collapsed-blocks "contents"] false)) - (swap! state update :ui/sidebar-open? not))) + (swap! state update :ui/sidebar-open? not)) (defn open-right-sidebar! [] - (let [current-repo (get-current-repo) - blocks (filter #(= (first %) current-repo) (:sidebar/blocks @state))] - (when (empty? blocks) - (swap! state assoc :sidebar/blocks [[current-repo "contents" :contents nil]]) - (set-state! [:ui/sidebar-collapsed-blocks "contents"] false)) - (swap! state assoc :ui/sidebar-open? true))) + (swap! state assoc :ui/sidebar-open? true)) (defn hide-right-sidebar! [] From e2206d303ac50eea4d2748b7f631fd27c5c498b0 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Fri, 28 Jul 2023 13:15:02 +0300 Subject: [PATCH 45/63] fix border radius --- src/main/frontend/components/right_sidebar.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index b7e80dadf736..e4443b350665 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -224,7 +224,7 @@ (let [collapsed? (state/sub [:ui/sidebar-collapsed-blocks db-id])] [:<> (when (zero? idx) (drop-indicator (dec idx) drag-to)) - [:div.flex.sidebar-item.content.color-level.shadow-md.rounded + [:div.flex.sidebar-item.content.color-level.shadow-md.rounded-md.overflow-hidden {:class [(str "item-type-" (name block-type)) (when collapsed? "collapsed")]} (let [[title component] item] From f7f470a4af20f5982f6f22c7de4e42f3dd7c21de Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 3 Aug 2023 11:00:41 +0300 Subject: [PATCH 46/63] fix: border and rounded corners --- src/main/frontend/components/container.css | 2 -- src/main/frontend/components/right_sidebar.cljs | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/frontend/components/container.css b/src/main/frontend/components/container.css index a97fdc816021..4b777856f8cb 100644 --- a/src/main/frontend/components/container.css +++ b/src/main/frontend/components/container.css @@ -642,8 +642,6 @@ html[data-theme='dark'] { @apply relative; flex: 1 1; min-height: 100px; - border: 1px solid transparent; - transition: border-color 0.1s; .sidebar-item-header { white-space: nowrap; diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index e4443b350665..6ccea545552f 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -229,8 +229,9 @@ (when collapsed? "collapsed")]} (let [[title component] item] [:div.flex.flex-col.w-full.relative - [:.flex.flex-row.justify-between.pr-2.sidebar-item-header.color-level - {:draggable true + [:.flex.flex-row.justify-between.pr-2.sidebar-item-header.color-level.rounded-t-md + {:class (when collapsed? "rounded-b-md") + :draggable true :on-drag-start (fn [event] (editor-handler/block->data-transfer! (:block/name (db/entity db-id)) event) (reset! *drag-from idx)) From 8f5cfbbfbad224f947e547dd083e56c4155008d5 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 3 Aug 2023 11:14:47 +0300 Subject: [PATCH 47/63] fix: dnd delay --- src/main/frontend/components/right_sidebar.cljs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 6ccea545552f..94b0b6b54692 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -389,6 +389,7 @@ [:div.cp__right-sidebar-inner.flex.flex-col.h-full#right-sidebar-container [:div.cp__right-sidebar-scrollable + {:on-drag-over util/stop} [:div.cp__right-sidebar-topbar.flex.flex-row.justify-between.items-center.px-2.h-12 [:div.cp__right-sidebar-settings.hide-scrollbar.gap-1 {:key "right-sidebar-settings"} [:div.text-sm From 56e6e934b85792f0e8324331b32f50e5241935a8 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 26 Jul 2023 11:35:35 +0300 Subject: [PATCH 48/63] handle marked js --- gulpfile.js | 3 ++- package.json | 1 + resources/js/marked.min.js | 6 ------ yarn.lock | 5 +++++ 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 resources/js/marked.min.js diff --git a/gulpfile.js b/gulpfile.js index 11be0ede2dfc..88b1dea89e5a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -60,7 +60,8 @@ const common = { 'node_modules/interactjs/dist/interact.min.js', 'node_modules/photoswipe/dist/umd/*.js', 'node_modules/reveal.js/dist/reveal.js', - 'node_modules/shepherd.js/dist/js/shepherd.min.js' + 'node_modules/shepherd.js/dist/js/shepherd.min.js', + 'node_modules/marked/marked.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', diff --git a/package.json b/package.json index 71c3b49072e9..56eb9530e41f 100644 --- a/package.json +++ b/package.json @@ -121,6 +121,7 @@ "interactjs": "^1.10.17", "jszip": "3.8.0", "katex": "^0.16.7", + "marked": "^5.1.2", "mldoc": "1.5.7", "path": "0.12.7", "path-complete-extname": "1.0.0", diff --git a/resources/js/marked.min.js b/resources/js/marked.min.js deleted file mode 100644 index b165759a531b..000000000000 --- a/resources/js/marked.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * marked - a markdown parser - * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).marked=t()}(this,function(){"use strict";function r(e,t){for(var u=0;ue.length)&&(t=e.length);for(var u=0,n=new Array(t);u=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var t={exports:{}};function e(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}t.exports={defaults:e(),getDefaults:e,changeDefaults:function(e){t.exports.defaults=e}};function u(e){return D[e]}var n=/[&<>"']/,s=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,a=/[<>"']|&(?!#?\w+;)/g,D={"&":"&","<":"<",">":">",'"':""","'":"'"};var c=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(c,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}var p=/(^|[^\[])\^/g;var f=/[^\w:]/g,g=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;var F={},A=/^[^:]+:\/*[^/]*$/,C=/^([^:]+:)[\s\S]*$/,d=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){F[" "+e]||(A.test(e)?F[" "+e]=e+"/":F[" "+e]=E(e,"/",!0));var u=-1===(e=F[" "+e]).indexOf(":");return"//"===t.substring(0,2)?u?t:e.replace(C,"$1")+t:"/"===t.charAt(0)?u?t:e.replace(d,"$1")+t:e+t}function E(e,t,u){var n=e.length;if(0===n)return"";for(var r=0;rt)u.splice(t);else for(;u.length>=1,e+=e;return u+e},T=t.exports.defaults,R=_,I=y,Z=x,q=z;function O(e,t,u,n){var r=t.href,i=t.title?Z(t.title):null,t=e[1].replace(/\\([\[\]])/g,"$1");if("!"===e[0].charAt(0))return{type:"image",raw:u,href:r,title:i,text:Z(t)};n.state.inLink=!0;t={type:"link",raw:u,href:r,title:i,text:t,tokens:n.inlineTokens(t,[])};return n.state.inLink=!1,t}_=function(){function e(e){this.options=e||T}var t=e.prototype;return t.space=function(e){e=this.rules.block.newline.exec(e);if(e)return 1=u.length?e.slice(u.length):e}).join("\n")}(u,t[3]||"");return{type:"code",raw:u,lang:t[2]&&t[2].trim(),text:e}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var u=t[2].trim();/#$/.test(u)&&(e=R(u,"#"),!this.options.pedantic&&e&&!/ $/.test(e)||(u=e.trim()));u={type:"heading",raw:t[0],depth:t[1].length,text:u,tokens:[]};return this.lexer.inline(u.text,u.tokens),u}},t.hr=function(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){e=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(e,[]),text:e}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var u,n,r,i,s,l,a,o,D,c=1<(p=t[1].trim()).length,h={type:"list",raw:"",ordered:c,start:c?+p.slice(0,-1):"",loose:!1,items:[]},p=c?"\\d{1,9}\\"+p.slice(-1):"\\"+p;this.options.pedantic&&(p=c?p:"[*+-]");for(var f=new RegExp("^( {0,3}"+p+")((?: [^\\n]*| *)(?:\\n[^\\n]*)*(?:\\n|$))");e&&!this.rules.block.hr.test(e)&&(t=f.exec(e));){o=t[2].split("\n"),D=this.options.pedantic?(i=2,o[0].trimLeft()):(i=t[2].search(/[^ ]/),i=t[1].length+(4=i)&&a.trim()){u=t[1]+o.slice(0,F).join("\n")+"\n";break}D+="\n"+a.slice(i)}else a.trim()||(s=!0),a.search(/[^ ]/)>=i?D+="\n"+a.slice(i):D+="\n"+a}h.loose||(l?h.loose=!0:/\n *\n *$/.test(u)&&(l=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(D))&&(r="[ ] "!==n[0],D=D.replace(/^\[[ xX]\] +/,"")),h.items.push({type:"list_item",raw:u,task:!!n,checked:r,loose:!1,text:D}),h.raw+=u,e=e.slice(u.length)}h.items[h.items.length-1].raw=u.trimRight(),h.items[h.items.length-1].text=D.trimRight(),h.raw=h.raw.trimRight();var A=h.items.length;for(F=0;F/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):Z(e[0]):e[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var u=t[2].trim();if(!this.options.pedantic&&/^$/.test(u))return;e=R(u.slice(0,-1),"\\");if((u.length-e.length)%2==0)return}else{var n=q(t[2],"()");-1$/.test(u)?n.slice(1):n.slice(1,-1):n)&&n.replace(this.rules.inline._escapes,"$1"),title:i&&i.replace(this.rules.inline._escapes,"$1")},t[0],this.lexer)}},t.reflink=function(e,t){if((u=this.rules.inline.reflink.exec(e))||(u=this.rules.inline.nolink.exec(e))){e=(u[2]||u[1]).replace(/\s+/g," ");if((e=t[e.toLowerCase()])&&e.href)return O(u,e,u[0],this.lexer);var u=u[0].charAt(0);return{type:"text",raw:u,text:u}}},t.emStrong=function(e,t,u){void 0===u&&(u="");var n=this.rules.inline.emStrong.lDelim.exec(e);if(n&&(!n[3]||!u.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||""===u||this.rules.inline.punctuation.exec(u)){var i,s=n[0].length-1,l=s,a=0,o="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(o.lastIndex=0,t=t.slice(-1*e.length+s);null!=(n=o.exec(t));)if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6])if(i=i.length,n[3]||n[4])l+=i;else if(!((n[5]||n[6])&&s%3)||(s+i)%3){if(!(0<(l-=i))){if(i=Math.min(i,i+l+a),Math.min(s,i)%2){var D=e.slice(1,s+n.index+i);return{type:"em",raw:e.slice(0,s+n.index+i+1),text:D,tokens:this.lexer.inlineTokens(D,[])}}D=e.slice(2,s+n.index+i-1);return{type:"strong",raw:e.slice(0,s+n.index+i+1),text:D,tokens:this.lexer.inlineTokens(D,[])}}}else a+=i}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var u=t[2].replace(/\n/g," "),n=/[^ ]/.test(u),e=/^ /.test(u)&&/ $/.test(u);return n&&e&&(u=u.substring(1,u.length-1)),u=Z(u,!0),{type:"codespan",raw:t[0],text:u}}},t.br=function(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}},t.del=function(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2],[])}},t.autolink=function(e,t){e=this.rules.inline.autolink.exec(e);if(e){var u,t="@"===e[2]?"mailto:"+(u=Z(this.options.mangle?t(e[1]):e[1])):u=Z(e[1]);return{type:"link",raw:e[0],text:u,href:t,tokens:[{type:"text",raw:u,text:u}]}}},t.url=function(e,t){var u,n,r,i;if(u=this.rules.inline.url.exec(e)){if("@"===u[2])r="mailto:"+(n=Z(this.options.mangle?t(u[0]):u[0]));else{for(;i=u[0],u[0]=this.rules.inline._backpedal.exec(u[0])[0],i!==u[0];);n=Z(u[0]),r="www."===u[1]?"http://"+n:n}return{type:"link",raw:u[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},t.inlineText=function(e,t){e=this.rules.inline.text.exec(e);if(e){t=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):Z(e[0]):e[0]:Z(this.options.smartypants?t(e[0]):e[0]);return{type:"text",raw:e[0],text:t}}},e}(),y=w,z=b,w=v,b={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:y,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};b.def=z(b.def).replace("label",b._label).replace("title",b._title).getRegex(),b.bullet=/(?:[*+-]|\d{1,9}[.)])/,b.listItemStart=z(/^( *)(bull) */).replace("bull",b.bullet).getRegex(),b.list=z(b.list).replace(/bull/g,b.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+b.def.source+")").getRegex(),b._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",b._comment=/|$)/,b.html=z(b.html,"i").replace("comment",b._comment).replace("tag",b._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),b.paragraph=z(b._paragraph).replace("hr",b.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",b._tag).getRegex(),b.blockquote=z(b.blockquote).replace("paragraph",b.paragraph).getRegex(),b.normal=w({},b),b.gfm=w({},b.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)\\|?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),b.gfm.table=z(b.gfm.table).replace("hr",b.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",b._tag).getRegex(),b.pedantic=w({},b.normal,{html:z("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",b._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:y,paragraph:z(b.normal._paragraph).replace("hr",b.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",b.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});y={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:y,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/\_\_[^_*]*?\*[^_*]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/\*\*[^_*]*?\_[^_*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:y,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};y.punctuation=z(y.punctuation).replace(/punctuation/g,y._punctuation).getRegex(),y.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,y.escapedEmSt=/\\\*|\\_/g,y._comment=z(b._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),y.emStrong.lDelim=z(y.emStrong.lDelim).replace(/punct/g,y._punctuation).getRegex(),y.emStrong.rDelimAst=z(y.emStrong.rDelimAst,"g").replace(/punct/g,y._punctuation).getRegex(),y.emStrong.rDelimUnd=z(y.emStrong.rDelimUnd,"g").replace(/punct/g,y._punctuation).getRegex(),y._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,y._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,y._email=/[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])?)+(?![-_])/,y.autolink=z(y.autolink).replace("scheme",y._scheme).replace("email",y._email).getRegex(),y._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,y.tag=z(y.tag).replace("comment",y._comment).replace("attribute",y._attribute).getRegex(),y._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,y._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,y._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,y.link=z(y.link).replace("label",y._label).replace("href",y._href).replace("title",y._title).getRegex(),y.reflink=z(y.reflink).replace("label",y._label).getRegex(),y.reflinkSearch=z(y.reflinkSearch,"g").replace("reflink",y.reflink).replace("nolink",y.nolink).getRegex(),y.normal=w({},y),y.pedantic=w({},y.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:z(/^!?\[(label)\]\((.*?)\)/).replace("label",y._label).getRegex(),reflink:z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",y._label).getRegex()}),y.gfm=w({},y.normal,{escape:z(y.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\'+(u?e:V(e,!0))+"\n":"
"+(u?e:V(e,!0))+"
\n"},t.blockquote=function(e){return"
\n"+e+"
\n"},t.html=function(e){return e},t.heading=function(e,t,u,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
\n":"
\n"},t.list=function(e,t,u){var n=t?"ol":"ul";return"<"+n+(t&&1!==u?' start="'+u+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return"\n\n"+e+"\n"+(t=t&&""+t+"")+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var u=t.header?"th":"td";return(t.align?"<"+u+' align="'+t.align+'">':"<"+u+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,u){if(null===(e=G(this.options.sanitize,this.options.baseUrl,e)))return u;e='"},t.image=function(e,t,u){if(null===(e=G(this.options.sanitize,this.options.baseUrl,e)))return u;u=''+u+'":">"},t.text=function(e){return e},e}(),S=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),B=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u))for(n=this.seen[e];u=e+"-"+ ++n,this.seen.hasOwnProperty(u););return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});var u=this.serialize(e);return this.getNextSafeSlug(u,t.dryrun)},e}(),H=b,J=S,K=B,W=t.exports.defaults,Y=m,ee=y,te=function(){function u(e){this.options=e||W,this.options.renderer=this.options.renderer||new H,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new J,this.slugger=new K}u.parse=function(e,t){return new u(t).parse(e)},u.parseInline=function(e,t){return new u(t).parseInline(e)};var e=u.prototype;return e.parse=function(e,t){void 0===t&&(t=!0);for(var u,n,r,i,s,l,a,o,D,c,h,p,f,g,F,A,C="",d=e.length,k=0;kAn error occurred:

    "+se(e.message+"",!0)+"
    ";throw e}}return ae.options=ae.setOptions=function(e){return re(ae.defaults,e),le(ae.defaults),ae},ae.getDefaults=$,ae.defaults=x,ae.use=function(){for(var u=this,e=arguments.length,t=new Array(e),n=0;nAn error occurred:

    "+se(e.message+"",!0)+"
    ";throw e}},ae.Parser=te,ae.parser=te.parse,ae.Renderer=ne,ae.TextRenderer=S,ae.Lexer=ee,ae.lexer=ee.lex,ae.Tokenizer=ue,ae.Slugger=B,ae.parse=ae}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index d78b5a4d7331..3e3a37d90405 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4501,6 +4501,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +marked@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz#62b5ccfc75adf72ca3b64b2879b551d89e77677f" + integrity sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg== + matchdep@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" From 1a9017f757a0fcb55effe176556b5f9d237a0435 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 26 Jul 2023 12:01:00 +0300 Subject: [PATCH 49/63] handle highlight.js --- gulpfile.js | 3 ++- package.json | 2 +- resources/js/highlight.min.js | 2 -- yarn.lock | 10 +++++----- 4 files changed, 8 insertions(+), 9 deletions(-) delete mode 100644 resources/js/highlight.min.js diff --git a/gulpfile.js b/gulpfile.js index 88b1dea89e5a..18d73b17b043 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -61,7 +61,8 @@ const common = { 'node_modules/photoswipe/dist/umd/*.js', 'node_modules/reveal.js/dist/reveal.js', 'node_modules/shepherd.js/dist/js/shepherd.min.js', - 'node_modules/marked/marked.min.js' + 'node_modules/marked/marked.min.js', + 'node_modules/@highlightjs/cdn-assets/highlight.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', diff --git a/package.json b/package.json index 56eb9530e41f..76811112dc86 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "@capacitor/status-bar": "^4.0.0", "@capawesome/capacitor-background-task": "^2.0.0", "@excalidraw/excalidraw": "0.12.0", + "@highlightjs/cdn-assets": "10.4.1", "@hugotomazi/capacitor-navigation-bar": "^2.0.0", "@logseq/capacitor-file-sync": "0.0.32", "@logseq/diff-merge": "0.2.2", @@ -114,7 +115,6 @@ "fuse.js": "6.4.6", "grapheme-splitter": "1.0.4", "graphology": "0.20.0", - "highlight.js": "10.4.1", "html2canvas": "^1.4.1", "ignore": "5.1.8", "inter-ui": "^3.19.3", diff --git a/resources/js/highlight.min.js b/resources/js/highlight.min.js deleted file mode 100644 index d3543ffd00ee..000000000000 --- a/resources/js/highlight.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! highlight.js v9.18.1 | BSD3 License | git.io/hljslicense */ -!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"==typeof exports||exports.nodeType?n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs})):e(exports)}(function(a){var f=[],o=Object.keys,_={},g={},C=!0,n=/^(no-?highlight|plain|text)$/i,E=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},m="",O="Could not find the language '{}', did you forget to load/include a language module?",B={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},c="of and for in not or if then".split(" ");function x(e){return e.replace(/&/g,"&").replace(//g,">")}function d(e){return e.nodeName.toLowerCase()}function R(e){return n.test(e)}function i(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function p(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),d(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function v(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function l(e){a+=""}function u(e){("start"===e.event?c:l)(e.node)}for(;e.length||n.length;){var s=o();if(a+=x(t.substring(r,s[0].offset)),r=s[0].offset,s===e){for(i.reverse().forEach(l);u(s.splice(0,1)[0]),(s=o())===e&&s.length&&s[0].offset===r;);i.reverse().forEach(c)}else"start"===s[0].event?i.push(s[0].node):i.pop(),u(s.splice(0,1)[0])}return a+x(t.substr(r))}function l(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return i(n,{v:null},e)})),n.cached_variants?n.cached_variants:function e(n){return!!n&&(n.eW||e(n.starts))}(n)?[i(n,{starts:n.starts?i(n.starts):null})]:Object.isFrozen(n)?[i(n)]:[n]}function u(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(u)}}function M(n,t){var i={};return"string"==typeof n?r("keyword",n):o(n).forEach(function(e){r(e,n[e])}),i;function r(a,e){t&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n,t,r=e.split("|");i[r[0]]=[a,(n=r[0],(t=r[1])?Number(t):function(e){return-1!=c.indexOf(e.toLowerCase())}(n)?0:1)]})}}function S(r){function s(e){return e&&e.source||e}function f(e,n){return new RegExp(s(e),"m"+(r.cI?"i":"")+(n?"g":""))}function a(a){var i,e,o={},c=[],l={},t=1;function n(e,n){o[t]=e,c.push([e,n]),t+=new RegExp(n.toString()+"|").exec("").length-1+1}for(var r=0;r')+n+(t?"":m)}function o(){p+=(null!=d.sL?function(){var e="string"==typeof d.sL;if(e&&!_[d.sL])return x(v);var n=e?T(d.sL,v,!0,R[d.sL]):w(v,d.sL.length?d.sL:void 0);return 0")+'"');if("end"===n.type){var r=s(n);if(null!=r)return r}return v+=t,t.length}var g=D(n);if(!g)throw console.error(O.replace("{}",n)),new Error('Unknown language: "'+n+'"');S(g);var E,d=t||g,R={},p="";for(E=d;E!==g;E=E.parent)E.cN&&(p=c(E.cN,"",!0)+p);var v="",M=0;try{for(var b,h,N=0;d.t.lastIndex=N,b=d.t.exec(i);)h=r(i.substring(N,b.index),b),N=b.index+h;for(r(i.substr(N)),E=d;E.parent;E=E.parent)E.cN&&(p+=m);return{relevance:M,value:p,i:!1,language:n,top:d}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{i:!0,relevance:0,value:x(i)};if(C)return{relevance:0,value:x(i),language:n,top:d,errorRaised:e};throw e}}function w(t,e){e=e||B.languages||o(_);var r={relevance:0,value:x(t)},a=r;return e.filter(D).filter(L).forEach(function(e){var n=T(e,t,!1);n.language=e,n.relevance>a.relevance&&(a=n),n.relevance>r.relevance&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function b(e){return B.tabReplace||B.useBR?e.replace(t,function(e,n){return B.useBR&&"\n"===e?"
    ":B.tabReplace?n.replace(/\t/g,B.tabReplace):""}):e}function s(e){var n,t,r,a,i,o,c,l,u,s,f=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=E.exec(i)){var o=D(t[1]);return o||(console.warn(O.replace("{}",t[1])),console.warn("Falling back to no-highlight mode for this block.",e)),o?t[1]:"no-highlight"}for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=f?T(f,i,!0):w(i),(t=p(n)).length&&((a=document.createElement("div")).innerHTML=r.value,r.value=v(t,p(a),i)),r.value=b(r.value),e.innerHTML=r.value,e.className=(o=e.className,c=f,l=r.language,u=c?g[c]:l,s=[o.trim()],o.match(/\bhljs\b/)||s.push("hljs"),-1===o.indexOf(u)&&s.push(u),s.join(" ").trim()),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,s)}}var N={disableAutodetect:!0};function D(e){return e=(e||"").toLowerCase(),_[e]||_[g[e]]}function L(e){var n=D(e);return n&&!n.disableAutodetect}return a.highlight=T,a.highlightAuto=w,a.fixMarkup=b,a.highlightBlock=s,a.configure=function(e){B=i(B,e)},a.initHighlighting=h,a.initHighlightingOnLoad=function(){window.addEventListener("DOMContentLoaded",h,!1),window.addEventListener("load",h,!1)},a.registerLanguage=function(n,e){var t;try{t=e(a)}catch(e){if(console.error("Language definition for '{}' could not be registered.".replace("{}",n)),!C)throw e;console.error(e),t=N}u(_[n]=t),t.rawDefinition=e.bind(null,a),t.aliases&&t.aliases.forEach(function(e){g[e]=n})},a.listLanguages=function(){return o(_)},a.getLanguage=D,a.requireLanguage=function(e){var n=D(e);if(n)return n;throw new Error("The '{}' language is required, but not loaded.".replace("{}",e))},a.autoDetection=L,a.inherit=i,a.debugMode=function(){C=!1},a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",relevance:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,relevance:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,relevance:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,relevance:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,relevance:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,relevance:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,relevance:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,relevance:0},[a.BE,a.ASM,a.QSM,a.PWM,a.C,a.CLCM,a.CBCM,a.HCM,a.NM,a.CNM,a.BNM,a.CSSNM,a.RM,a.TM,a.UTM,a.METHOD_GUARD].forEach(function(e){!function n(t){Object.freeze(t);var r="function"==typeof t;Object.getOwnPropertyNames(t).forEach(function(e){!t.hasOwnProperty(e)||null===t[e]||"object"!=typeof t[e]&&"function"!=typeof t[e]||r&&("caller"===e||"callee"===e||"arguments"===e)||Object.isFrozen(t[e])||n(t[e])});return t}(e)}),a});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",relevance:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",relevance:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]{0,3}(?=\\W)",relevance:0},{b:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",a={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,a]},{b:/[:\(,=]\s*/,relevance:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[a]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,relevance:0}])}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",relevance:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/^\*{15}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("ruby",function(e){var c="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",b={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},n=[e.C("#","$",{c:[r]}),e.C("^\\=begin","^\\=end",{c:[r],relevance:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:b},t={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,rB:!0,c:[{b:/<<[-~]?'?/},{b:/\w+/,endSameAsBegin:!0,c:[e.BE,s]}]}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:b},l=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(n)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:c}),i].concat(n)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",relevance:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:c}],relevance:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:b},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(n),relevance:0}].concat(n);s.c=l;var d=[{b:/^\s*=>/,starts:{e:"$",c:i.c=l}},{cN:"meta",b:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:b,i:/\/\*/,c:n.concat(d).concat(l)}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},c:[{cN:"string",b:"'",e:"'",c:[{b:"''"}]},{cN:"string",b:'"',e:'"',c:[{b:'""'}]},{cN:"string",b:"`",e:"`"},e.CNM,e.CBCM,t,e.HCM]},e.CBCM,t,e.HCM]}});hljs.registerLanguage("plaintext",function(e){return{disableAutodetect:!0}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},a={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,relevance:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],relevance:0},e.HCM,a,{cN:"",b:/\\"/},{cN:"string",b:/'/,e:/'/},t]}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("prolog",function(e){var c={b:/\(/,e:/\)/,relevance:0},b={b:/\[/,e:/\]/},n={cN:"comment",b:/%/,e:/$/,c:[e.PWM]},r={cN:"string",b:/`/,e:/`/,c:[e.BE]},a=[{b:/[a-z][A-Za-z0-9_]*/,relevance:0},{cN:"symbol",v:[{b:/[A-Z][a-zA-Z0-9_]*/},{b:/_[A-Za-z0-9_]*/}],relevance:0},c,{b:/:-/},b,n,e.CBCM,e.QSM,e.ASM,r,{cN:"string",b:/0\'(\\\'|.)/},{cN:"string",b:/0\'\\s/},e.CNM];return c.c=a,{c:(b.c=a).concat([{b:/\.$/}])}});hljs.registerLanguage("scss",function(e){var t="@[a-z-]+",r={cN:"variable",b:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={cN:"number",b:"#[0-9A-Fa-f]+"};e.CSSNM,e.QSM,e.ASM,e.CBCM;return{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",relevance:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",relevance:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{cN:"selector-pseudo",b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{cN:"selector-pseudo",b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},r,{cN:"attribute",b:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[r,i,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@(page|font-face)",l:t,k:"@page @font-face"},{b:"@",e:"[{;]",rB:!0,k:"and or not only",c:[{b:t,cN:"keyword"},r,e.QSM,e.ASM,i,e.CSSNM]}]}});hljs.registerLanguage("typescript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},n={cN:"meta",b:"@"+r},a={b:"\\(",e:/\)/,k:t,c:["self",e.QSM,e.ASM,e.NM]},c={cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:[e.CLCM,e.CBCM,n,a]},s={cN:"number",v:[{b:"\\b(0[bB][01]+)n?"},{b:"\\b(0[oO][0-7]+)n?"},{b:e.CNR+"n?"}],relevance:0},o={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},i={b:"html`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"xml"}},l={b:"css`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"css"}},b={cN:"string",b:"`",e:"`",c:[e.BE,o]};return o.c=[e.ASM,e.QSM,i,l,b,s,e.RM],{aliases:["ts"],k:t,c:[{cN:"meta",b:/^\s*['"]use strict['"]/},e.ASM,e.QSM,i,l,b,e.CLCM,e.CBCM,s,{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+e.IR+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:e.IR},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:["self",e.CLCM,e.CBCM]}]}]}],relevance:0},{cN:"function",bK:"function",e:/[\{;]/,eE:!0,k:t,c:["self",e.inherit(e.TM,{b:r}),c],i:/%/,relevance:0},{bK:"constructor",e:/[\{;]/,eE:!0,c:["self",c]},{b:/module\./,k:{built_in:"module"},relevance:0},{bK:"module",e:/\{/,eE:!0},{bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,relevance:0},n,a]}});hljs.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={cN:"symbol",b:e.UIR+"@"},n={cN:"subst",b:"\\${",e:"}",c:[e.CNM]},c={cN:"variable",b:"\\$"+e.UIR},r={cN:"string",v:[{b:'"""',e:'"""(?=[^"])',c:[c,n]},{b:"'",e:"'",i:/\n/,c:[e.BE]},{b:'"',e:'"',i:/\n/,c:[e.BE,c,n]}]};n.c.push(r);var i={cN:"meta",b:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UIR+")?"},l={cN:"meta",b:"@"+e.UIR,c:[{b:/\(/,e:/\)/,c:[e.inherit(r,{cN:"meta-string"})]}]},s={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},b=e.C("/\\*","\\*/",{c:[e.CBCM]}),o={v:[{cN:"type",b:e.UIR},{b:/\(/,e:/\)/,c:[]}]},d=o;return d.v[1].c=[o],o.v[1].c=[d],{aliases:["kt"],k:t,c:[e.C("/\\*\\*","\\*/",{relevance:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,b,{cN:"keyword",b:/\b(break|continue|return|this)\b/,starts:{c:[{cN:"symbol",b:/@\w+/}]}},a,i,l,{cN:"function",bK:"fun",e:"[(]|$",rB:!0,eE:!0,k:t,i:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,c:[{b:e.UIR+"\\s*\\(",rB:!0,relevance:0,c:[e.UTM]},{cN:"type",b://,k:"reified",relevance:0},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:t,relevance:0,c:[{b:/:/,e:/[=,\/]/,eW:!0,c:[o,e.CLCM,b],relevance:0},e.CLCM,b,i,l,r,e.CNM]},b]},{cN:"class",bK:"class interface trait",e:/[:\{(]|$/,eE:!0,i:"extends implements",c:[{bK:"public protected internal private constructor"},e.UTM,{cN:"type",b://,eB:!0,eE:!0,relevance:0},{cN:"type",b:/[,:]\s*/,e:/[<\(,]|$/,eB:!0,rE:!0},i,l]},r,{cN:"meta",b:"^#!/usr/bin/env",e:"$",i:"\n"},s]}});hljs.registerLanguage("cs",function(e){var a={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},r=e.inherit(c,{i:/\n/}),n={cN:"subst",b:"{",e:"}",k:a},t=e.inherit(n,{i:/\n/}),s={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,t]},l={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},n]},b=e.inherit(l,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},t]});n.c=[l,s,c,e.ASM,e.QSM,i,e.CBCM],t.c=[b,s,r,e.ASM,e.QSM,i,e.inherit(e.CBCM,{i:/\n/})];var o={v:[l,s,c,e.ASM,e.QSM]},d=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:a,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",relevance:0},{b:"\x3c!--|--\x3e"},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},o,i,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",relevance:0},{cN:"function",b:"("+d+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:a,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],relevance:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:a,relevance:0,c:[o,i,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("go",function(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:n,i:""}]}});hljs.registerLanguage("python",function(e){var r={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},b={cN:"meta",b:/^(>>>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={b:/\{\{/,relevance:0},l={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[e.BE,b],relevance:10},{b:/(u|b)?r?"""/,e:/"""/,c:[e.BE,b],relevance:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[e.BE,b,a,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[e.BE,b,a,c]},{b:/(u|r|ur)'/,e:/'/,relevance:10},{b:/(u|r|ur)"/,e:/"/,relevance:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[e.BE,a,c]},{b:/(fr|rf|f)"/,e:/"/,c:[e.BE,a,c]},e.ASM,e.QSM]},n={cN:"number",relevance:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},i={cN:"params",b:/\(/,e:/\)/,c:["self",b,n,l,e.HCM]};return c.c=[l,n,b],{aliases:["py","gyp","ipython"],k:r,i:/(<\/|->|\?)|=>/,c:[b,n,{bK:"if",relevance:0},l,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,i,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("swift",function(e){var i={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},t=e.C("/\\*","\\*/",{c:["self"]}),n={cN:"subst",b:/\\\(/,e:"\\)",k:i,c:[]},r={cN:"string",c:[e.BE,n],v:[{b:/"""/,e:/"""/},{b:/"/,e:/"/}]},a={cN:"number",b:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return n.c=[a],{k:i,c:[r,e.CLCM,t,{cN:"type",b:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{cN:"type",b:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},a,{cN:"function",bK:"func",e:"{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{b://},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:i,c:["self",a,r,e.CBCM,{b:":"}],i:/["']/}],i:/\[|%/},{cN:"class",bK:"struct protocol class extension enum",k:i,e:"\\{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{cN:"meta",b:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{bK:"import",e:/$/,c:[e.CLCM,t]}]}});hljs.registerLanguage("cpp",function(e){function t(e){return"(?:"+e+")?"}var r="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",i=(t(a),t("<.*?>"),{cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"}),c={cN:"string",v:[{b:'(u8?|U|L)?"',e:'"',i:"\\n",c:[e.BE]},{b:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",e:"'",i:"."},{b:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},s={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},c:[{b:/\\\n/,relevance:0},e.inherit(c,{cN:"meta-string"}),{cN:"meta-string",b:/<.*?>/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},o={cN:"title",b:t(a)+e.IR,relevance:0},l=t(a)+e.IR+"\\s*\\(",u={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},p=[i,e.CLCM,e.CBCM,s,c],m={v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:u,c:p.concat([{b:/\(/,e:/\)/,k:u,c:p.concat(["self"]),relevance:0}]),relevance:0},d={cN:"function",b:"((decltype\\(auto\\)|(?:[a-zA-Z_]\\w*::)?[a-zA-Z_]\\w*(?:<.*?>)?)[\\*&\\s]+)+"+l,rB:!0,e:/[{;=]/,eE:!0,k:u,i:/[^\w\s\*&:<>]/,c:[{b:r,k:u,relevance:0},{b:l,rB:!0,c:[o],relevance:0},{cN:"params",b:/\(/,e:/\)/,k:u,relevance:0,c:[e.CLCM,e.CBCM,c,s,i,{b:/\(/,e:/\)/,k:u,relevance:0,c:["self",e.CLCM,e.CBCM,c,s,i]}]},i,e.CLCM,e.CBCM,n]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],k:u,i:"",k:u,c:["self",i]},{b:e.IR+"::",k:u},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},e.TM]}]),exports:{preprocessor:n,strings:c,k:u}}});hljs.registerLanguage("clojure",function(e){var t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r={b:n,relevance:0},a={cN:"number",b:"[-+]?\\d+(\\.\\d+)?",relevance:0},o=e.inherit(e.QSM,{i:null}),s=e.C(";","$",{relevance:0}),c={cN:"literal",b:/\b(true|false|nil)\b/},i={b:"[\\[\\{]",e:"[\\]\\}]"},d={cN:"comment",b:"\\^"+n},l=e.C("\\^\\{","\\}"),m={cN:"symbol",b:"[:]{1,2}"+n},p={b:"\\(",e:"\\)"},u={eW:!0,relevance:0},f={k:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},l:n,cN:"name",b:n,starts:u},h=[p,o,d,l,s,m,i,a,c,r];return p.c=[e.C("comment",""),f,u],u.c=h,i.c=h,l.c=[i],{aliases:["clj"],i:/\S/,c:[p,o,d,l,s,m,i,a,c]}});hljs.registerLanguage("scheme",function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",r="(\\-|\\+)?\\d+([./]\\d+)?",a={cN:"literal",b:"(#t|#f|#\\\\"+t+"|#\\\\.)"},i={cN:"number",v:[{b:r,relevance:0},{b:"(\\-|\\+)?\\d+([./]\\d+)?[+\\-](\\-|\\+)?\\d+([./]\\d+)?i",relevance:0},{b:"#b[0-1]+(/[0-1]+)?"},{b:"#o[0-7]+(/[0-7]+)?"},{b:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},n=e.QSM,c=[e.C(";","$",{relevance:0}),e.C("#\\|","\\|#")],l={b:t,relevance:0},s={cN:"symbol",b:"'"+t},o={eW:!0,relevance:0},u={v:[{b:/'/},{b:"`"}],c:[{b:"\\(",e:"\\)",c:["self",a,n,i,l,s]}]},p={cN:"name",b:t,l:t,k:{"builtin-name":"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"}},d={v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}],c:[{b:/lambda/,eW:!0,rB:!0,c:[p,{b:/\(/,e:/\)/,endsParent:!0,c:[l]}]},p,o]};return o.c=[a,i,n,l,s,u,d].concat(c),{i:/\S/,c:[{cN:"meta",b:"^#!",e:"$"},i,n,s,u,d].concat(c)}});hljs.registerLanguage("ini",function(e){var b={cN:"number",relevance:0,v:[{b:/([\+\-]+)?[\d]+_[\d_]+/},{b:e.NR}]},a=e.C();a.v=[{b:/;/,e:/$/},{b:/#/,e:/$/}];var c={cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"literal",b:/\bon|off|true|false|yes|no\b/},n={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",relevance:10},{b:'"""',e:'"""',relevance:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[a,{cN:"section",b:/\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_\.-]+(?=\s*=\s*)/,cN:"attr",starts:{e:/$/,c:[a,{b:/\[/,e:/\]/,c:[a,r,c,n,b,"self"],relevance:0},r,c,n,b]}}]}});hljs.registerLanguage("objectivec",function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,i="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},l:t,i:"/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},{cN:"class",b:"("+i.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:i,l:t,c:[e.UTM]},{b:"\\."+e.UIR,relevance:0}]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.CLCM,e.CBCM],c=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:c,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})].concat(n),i:"\\S"},a={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return c.push(t,a),n.forEach(function(e){c.push(e)}),{c:c,k:i,i:"\\S"}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,relevance:0}]},c=[e.BE,r,n],a=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:c,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",relevance:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",relevance:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",relevance:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",relevance:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",relevance:5},{b:"qw\\s+q",e:"q",relevance:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],relevance:0},{b:"-?\\w+\\s*\\=\\>",c:[],relevance:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",relevance:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],relevance:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,relevance:5,c:[e.TM]},{b:"-\\w\\b",relevance:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=a,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:s.c=a}});hljs.registerLanguage("haskell",function(e){var i={v:[e.C("--","$"),e.C("{-","-}",{c:["self"]})]},a={cN:"meta",b:"{-#",e:"#-}"},l={cN:"meta",b:"^#",e:"$"},c={cN:"type",b:"\\b[A-Z][\\w']*",relevance:0},n={b:"\\(",e:"\\)",i:'"',c:[a,l,{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TM,{b:"[_a-z][\\w']*"}),i]};return{aliases:["hs"],k:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",c:[{bK:"module",e:"where",k:"module where",c:[n,i],i:"\\W\\.|;"},{b:"\\bimport\\b",e:"$",k:"import qualified as hiding",c:[n,i],i:"\\W\\.|;"},{cN:"class",b:"^(\\s*)?(class|instance)\\b",e:"where",k:"class family instance where",c:[c,n,i]},{cN:"class",b:"\\b(data|(new)?type)\\b",e:"$",k:"data family type newtype deriving",c:[a,c,n,{b:"{",e:"}",c:n.c},i]},{bK:"default",e:"$",c:[c,n,i]},{bK:"infix infixl infixr",e:"$",c:[e.CNM,i]},{b:"\\bforeign\\b",e:"$",k:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",c:[c,e.QSM,i]},{cN:"meta",b:"#!\\/usr\\/bin\\/env runhaskell",e:"$"},a,l,e.QSM,e.CNM,c,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),i,{b:"->|<-"}]}});hljs.registerLanguage("smalltalk",function(e){var a="[a-z][a-zA-Z0-9_]*",s={cN:"string",b:"\\$.{1}"},l={cN:"symbol",b:"#"+e.UIR};return{aliases:["st"],k:"self super nil true false thisContext",c:[e.C('"','"'),e.ASM,{cN:"type",b:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{b:a+":",relevance:0},e.CNM,l,s,{b:"\\|[ ]*"+a+"([ ]+"+a+")*[ ]*\\|",rB:!0,e:/\|/,i:/\S/,c:[{b:"(\\|[ ]*)?"+a}]},{b:"\\#\\(",e:"\\)",c:[e.ASM,s,e.CNM,l]}]}});hljs.registerLanguage("java",function(e){var a="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",t={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{relevance:0,c:[{b:/\w+@/,relevance:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",relevance:0},{cN:"function",b:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,relevance:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,relevance:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},t,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",relevance:0},{b:"[a-z_]\\w*'[\\w']*",relevance:0},e.inherit(e.ASM,{cN:"string",relevance:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{b:/[-=]>/}]}});hljs.registerLanguage("css",function(e){var c={b:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM,e.CSSNM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$",c:[e.ASM,e.QSM]},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(page|font-face)",l:"@[a-z-]+",k:"@page @font-face"},{b:"@",e:"[{;]",i:/:/,rB:!0,c:[{cN:"keyword",b:/@\-?\w[\w]*(\-\w+)*/},{b:/\s/,eW:!0,eE:!0,relevance:0,k:"and or not only",c:[{b:/[a-z-]+:/,cN:"attribute"},e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,c]}]}});hljs.registerLanguage("makefile",function(e){var i={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%",rB:!0,i:"\\(|#|//|/\\*|\\\\|:|;",c:[u,e.inherit(e.TM,{b:r})],starts:{e:";|\\.",k:n,c:s}},a,{b:"^-",e:"\\.",relevance:0,eE:!0,rB:!0,l:"-"+e.IR,k:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",c:[u]},b,e.QSM,v,o,t,d,{b:/\.$/}]}});hljs.registerLanguage("reasonml",function(e){var a="~?[a-z$_][0-9a-zA-Z$_]*",r="`?[A-Z$_][0-9a-zA-Z$_]*",c="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(e){return e.split("").map(function(e){return"\\"+e}).join("")}).join("|")+"|==|===)",n="\\s+"+c+"\\s+",l={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},t="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",i={cN:"number",relevance:0,v:[{b:t},{b:"\\(\\-"+t+"\\)"}]},s={cN:"operator",relevance:0,b:c},b=[{cN:"identifier",relevance:0,b:a},s,i],o=[e.QSM,s,{cN:"module",b:"\\b"+r,rB:!0,e:".",c:[{cN:"identifier",b:r,relevance:0}]}],v=[{cN:"module",b:"\\b"+r,rB:!0,e:".",relevance:0,c:[{cN:"identifier",b:r,relevance:0}]}],u={cN:"function",relevance:0,k:l,v:[{b:"\\s(\\(\\.?.*?\\)|"+a+")\\s*=>",e:"\\s*=>",rB:!0,relevance:0,c:[{cN:"params",v:[{b:a},{b:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{b:/\(\s*\)/}]}]},{b:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",e:"\\s=>",rB:!0,relevance:0,c:[{cN:"params",relevance:0,v:[{b:a,e:"(,|\\n|\\))",relevance:0,c:[s,{cN:"typing",b:":",e:"(,|\\n)",rB:!0,relevance:0,c:v}]}]}]},{b:"\\(\\.\\s"+a+"\\)\\s*=>"}]};o.push(u);var _={cN:"constructor",b:r+"\\(",e:"\\)",i:"\\n",k:l,c:[e.QSM,s,{cN:"params",b:"\\b"+a}]},N={cN:"pattern-match",b:"\\|",rB:!0,k:l,e:"=>",relevance:0,c:[_,s,{relevance:0,cN:"constructor",b:r}]},d={cN:"module-access",k:l,rB:!0,v:[{b:"\\b("+r+"\\.)+"+a},{b:"\\b("+r+"\\.)+\\(",e:"\\)",rB:!0,c:[u,{b:"\\(",e:"\\)",skip:!0}].concat(o)},{b:"\\b("+r+"\\.)+{",e:"}"}],c:o};return v.push(d),{aliases:["re"],k:l,i:"(:\\-|:=|\\${|\\+=)",c:[e.C("/\\*","\\*/",{i:"^(\\#,\\/\\/)"}),{cN:"character",b:"'(\\\\[^']+|[^'])'",i:"\\n",relevance:0},e.QSM,{cN:"literal",b:"\\(\\)",relevance:0},{cN:"literal",b:"\\[\\|",e:"\\|\\]",relevance:0,c:b},{cN:"literal",b:"\\[",e:"\\]",relevance:0,c:b},_,{cN:"operator",b:n,i:"\\-\\->",relevance:0},i,e.CLCM,N,u,{cN:"module-def",b:"\\bmodule\\s+"+a+"\\s+"+r+"\\s+=\\s+{",e:"}",rB:!0,k:l,relevance:0,c:[{cN:"module",relevance:0,b:r},{b:"{",e:"}",skip:!0}].concat(o)},d]}});hljs.registerLanguage("julia",function(e){var r={keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},t="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",a={l:t,k:r,i:/<\//},n={cN:"subst",b:/\$\(/,e:/\)/,k:r},o={cN:"variable",b:"\\$"+t},i={cN:"string",c:[e.BE,n,o],v:[{b:/\w*"""/,e:/"""\w*/,relevance:10},{b:/\w*"/,e:/"\w*/}]},l={cN:"string",c:[e.BE,n,o],b:"`",e:"`"},c={cN:"meta",b:"@"+t};return a.c=[{cN:"number",b:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{cN:"string",b:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},i,l,c,{cN:"comment",v:[{b:"#=",e:"=#",relevance:10},{b:"#",e:"$"}]},e.HCM,{cN:"keyword",b:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{b:/<:/}],n.c=a.c,a});hljs.registerLanguage("xml",function(e){var c={cN:"symbol",b:"&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;"},s={b:"\\s",c:[{cN:"meta-keyword",b:"#?[a-z_][a-z1-9_-]+",i:"\\n"}]},a=e.inherit(s,{b:"\\(",e:"\\)"}),t=e.inherit(e.ASM,{cN:"meta-string"}),l=e.inherit(e.QSM,{cN:"meta-string"}),r={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],cI:!0,c:[{cN:"meta",b:"",relevance:10,c:[s,l,t,a,{b:"\\[",e:"\\]",c:[{cN:"meta",b:"",c:[s,a,l,t]}]}]},e.C("\x3c!--","--\x3e",{relevance:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",relevance:10},c,{cN:"meta",b:/<\?xml/,e:/\?>/,relevance:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:")",e:">",k:{name:"style"},c:[r],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:")",e:">",k:{name:"script"},c:[r],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,relevance:0},r]}]}});hljs.registerLanguage("javascript",function(e){var r="<>",a="",t={b:/<[A-Za-z0-9\\._:-]+/,e:/\/[A-Za-z0-9\\._:-]+>|\/>/},c="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},s={cN:"number",v:[{b:"\\b(0[bB][01]+)n?"},{b:"\\b(0[oO][0-7]+)n?"},{b:e.CNR+"n?"}],relevance:0},o={cN:"subst",b:"\\$\\{",e:"\\}",k:n,c:[]},i={b:"html`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"xml"}},b={b:"css`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"css"}},l={cN:"string",b:"`",e:"`",c:[e.BE,o]};o.c=[e.ASM,e.QSM,i,b,l,s,e.RM];var u=o.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx","mjs","cjs"],k:n,c:[{cN:"meta",relevance:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,b,l,e.CLCM,e.C("/\\*\\*","\\*/",{relevance:0,c:[{cN:"doctag",b:"@[A-Za-z]+",c:[{cN:"type",b:"\\{",e:"\\}",relevance:0},{cN:"variable",b:c+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{b:/(?=[^\n])\s/,relevance:0}]}]}),e.CBCM,s,{b:/[{,\n]\s*/,relevance:0,c:[{b:c+"\\s*:",rB:!0,relevance:0,c:[{cN:"attr",b:c,relevance:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+c+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:c},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:n,c:u}]}]},{cN:"",b:/\s/,e:/\s*/,skip:!0},{v:[{b:r,e:a},{b:t.b,e:t.e}],sL:"xml",c:[{b:t.b,e:t.e,skip:!0,c:["self"]}]}],relevance:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:c}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:u}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("fsharp",function(e){var t={b:"<",e:">",c:[e.inherit(e.TM,{b:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],k:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",i:/\/\*/,c:[{cN:"keyword",b:/\b(yield|return|let|do)!/},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},{cN:"string",b:'"""',e:'"""'},e.C("\\(\\*","\\*\\)"),{cN:"class",bK:"type",e:"\\(|=|$",eE:!0,c:[e.UTM,t]},{cN:"meta",b:"\\[<",e:">\\]",relevance:10},{cN:"symbol",b:"\\B('[A-Za-z])\\b",c:[e.BE]},e.CLCM,e.inherit(e.QSM,{i:null}),e.CNM]}});hljs.registerLanguage("properties",function(e){var r="[ \\t\\f]*",t="("+r+"[:=]"+r+"|[ \\t\\f]+)",n="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",a="([^\\\\:= \\t\\f\\n]|\\\\.)+",c={e:t,relevance:0,starts:{cN:"string",e:/$/,relevance:0,c:[{b:"\\\\\\n"}]}};return{cI:!0,i:/\S/,c:[e.C("^\\s*[!#]","$"),{b:n+t,rB:!0,c:[{cN:"attr",b:n,endsParent:!0,relevance:0}],starts:c},{b:a+t,rB:!0,relevance:0,c:[{cN:"meta",b:a,endsParent:!0,relevance:0}],starts:c},{cN:"attr",relevance:0,b:a+r+"$"}]}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,relevance:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,relevance:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("lua",function(e){var t="\\[=*\\[",a="\\]=*\\]",n={b:t,e:a,c:["self"]},l=[e.C("--(?!"+t+")","$"),e.C("--"+t,a,{c:[n],relevance:10})];return{l:e.UIR,k:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},c:l.concat([{cN:"function",bK:"function",e:"\\)",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{cN:"params",b:"\\(",eW:!0,c:l}].concat(l)},e.CNM,e.ASM,e.QSM,{cN:"string",b:t,e:a,c:[n],relevance:5}])}});hljs.registerLanguage("elixir",function(e){var b="[a-zA-Z_][a-zA-Z0-9_.]*(\\!|\\?)?",c="and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0",n={cN:"subst",b:"#\\{",e:"}",l:b,k:c},r="[/|([{<\"']",a={cN:"string",b:"~[a-z](?="+r+")",c:[{endsParent:!0,c:[{c:[e.BE,n],v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/\//,e:/\//},{b:/\|/,e:/\|/},{b:/\(/,e:/\)/},{b:/\[/,e:/\]/},{b:/\{/,e:/\}/},{b://}]}]}]},i={cN:"string",b:"~[A-Z](?="+r+")",c:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/\//,e:/\//},{b:/\|/,e:/\|/},{b:/\(/,e:/\)/},{b:/\[/,e:/\]/},{b:/\{/,e:/\}/},{b:/\/}]},l={cN:"string",c:[e.BE,n],v:[{b:/"""/,e:/"""/},{b:/'''/,e:/'''/},{b:/~S"""/,e:/"""/,c:[]},{b:/~S"/,e:/"/,c:[]},{b:/~S'''/,e:/'''/,c:[]},{b:/~S'/,e:/'/,c:[]},{b:/'/,e:/'/},{b:/"/,e:/"/}]},s={cN:"function",bK:"def defp defmacro",e:/\B\b/,c:[e.inherit(e.TM,{b:b,endsParent:!0})]},t=e.inherit(s,{cN:"class",bK:"defimpl defmodule defprotocol defrecord",e:/\bdo\b|$|;/}),d=[l,i,a,e.HCM,t,s,{b:"::"},{cN:"symbol",b:":(?![\\s:])",c:[l,{b:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{cN:"symbol",b:b+":(?!:)",relevance:0},{cN:"number",b:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)",relevance:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"->"},{b:"("+e.RSR+")\\s*",c:[e.HCM,{cN:"regexp",i:"\\n",c:[e.BE,n],v:[{b:"/",e:"/[a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],relevance:0}];return{l:b,k:c,c:n.c=d}});hljs.registerLanguage("lisp",function(e){var b="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",c="\\|[^]*?\\|",a="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",l={cN:"literal",b:"\\b(t{1}|nil)\\b"},n={cN:"number",v:[{b:a,relevance:0},{b:"#(b|B)[0-1]+(/[0-1]+)?"},{b:"#(o|O)[0-7]+(/[0-7]+)?"},{b:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{b:"#(c|C)\\("+a+" +"+a,e:"\\)"}]},r=e.inherit(e.QSM,{i:null}),i=e.C(";","$",{relevance:0}),t={b:"\\*",e:"\\*"},v={cN:"symbol",b:"[:&]"+b},s={b:b,relevance:0},u={b:c},d={c:[n,r,t,v,{b:"\\(",e:"\\)",c:["self",l,r,n,s]},s],v:[{b:"['`]\\(",e:"\\)"},{b:"\\(quote ",e:"\\)",k:{name:"quote"}},{b:"'"+c}]},f={v:[{b:"'"+b},{b:"#'"+b+"(::"+b+")*"}]},m={b:"\\(\\s*",e:"\\)"},o={eW:!0,relevance:0};return m.c=[{cN:"name",v:[{b:b},{b:c}]},o],o.c=[d,f,m,l,n,r,i,t,v,u,s],{i:/\S/,c:[n,{cN:"meta",b:"^#!",e:"$"},l,r,i,d,f,m,s]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],relevance:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],relevance:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("yaml",function(e){var b="true false yes no null",a={cN:"string",relevance:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/\S+/}],c:[e.BE,{cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]}]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[{cN:"attr",v:[{b:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{b:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{b:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{cN:"meta",b:"^---s*$",relevance:10},{cN:"string",b:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,relevance:0},{cN:"type",b:"!"+e.UIR},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"\\-(?=[ ]|$)",relevance:0},e.HCM,{bK:b,k:{literal:b}},{cN:"number",b:e.CNR+"\\b"},a]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php","php3","php4","php5","php6","php7"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("elm",function(e){var i={v:[e.C("--","$"),e.C("{-","-}",{c:["self"]})]},t={cN:"type",b:"\\b[A-Z][\\w']*",relevance:0},c={b:"\\(",e:"\\)",i:'"',c:[{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},i]};return{k:"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription",c:[{bK:"port effect module",e:"exposing",k:"port effect module where command subscription exposing",c:[c,i],i:"\\W\\.|;"},{b:"import",e:"$",k:"import as exposing",c:[c,i],i:"\\W\\.|;"},{b:"type",e:"$",k:"type alias",c:[t,c,{b:"{",e:"}",c:c.c},i]},{bK:"infix infixl infixr",e:"$",c:[e.CNM,i]},{b:"port",e:"$",k:"port",c:[i]},{cN:"string",b:"'\\\\?.",e:"'",i:"."},e.QSM,e.CNM,t,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),i,{b:"->|<-"}],i:/;/}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",relevance:0},{cN:"bullet",b:"^\\s*([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",relevance:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```\\w*\\s*$",e:"^```[ ]*$"},{b:"`.+?`"},{b:"^( {4}|\\t)",e:"$",relevance:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,relevance:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],relevance:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("sml",function(e){return{aliases:["ml"],k:{keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:/\[(\|\|)?\]|\(\)/,relevance:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",relevance:0},{b:"[a-z_]\\w*'[\\w']*"},e.inherit(e.ASM,{cN:"string",relevance:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{b:/[-=]>/}]}});hljs.registerLanguage("less",function(e){function r(e){return{cN:"string",b:"~?"+e+".*?"+e}}function t(e,r,t){return{cN:e,b:r,relevance:t}}var a="[\\w-]+",c="("+a+"|@{"+a+"})",s=[],n=[],b={b:"\\(",e:"\\)",c:n,relevance:0};n.push(e.CLCM,e.CBCM,r("'"),r('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},t("number","#[0-9A-Fa-f]+\\b"),b,t("variable","@@?"+a,10),t("variable","@{"+a+"}"),t("built_in","~?`[^`]*?`"),{cN:"attribute",b:a+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var i=n.concat({b:"{",e:"}",c:s}),l={bK:"when",eW:!0,c:[{bK:"and not"}].concat(n)},o={b:c+"\\s*:",rB:!0,e:"[;}]",relevance:0,c:[{cN:"attribute",b:c,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",relevance:0,c:n}}]},u={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:n,relevance:0}},v={cN:"variable",v:[{b:"@"+a+"\\s*:",relevance:15},{b:"@"+a}],starts:{e:"[;}]",rE:!0,c:i}},C={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:c,e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",relevance:0,c:[e.CLCM,e.CBCM,l,t("keyword","all\\b"),t("variable","@{"+a+"}"),t("selector-tag",c+"%?",0),t("selector-id","#"+c),t("selector-class","\\."+c,0),t("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:i},{b:"!important"}]};return s.push(e.CLCM,e.CBCM,u,v,o,C),{cI:!0,i:"[=>'/<($\"]",c:s}}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 3e3a37d90405..240667055f87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -357,6 +357,11 @@ dependencies: dotenv "10.0.0" +"@highlightjs/cdn-assets@10.4.1": + version "10.4.1" + resolved "https://registry.npmjs.org/@highlightjs/cdn-assets/-/cdn-assets-10.4.1.tgz#261bc7a391cd22e86e19ba809a9b997ca37f1514" + integrity sha512-dJ6ZNFZ0TIatflV7h+5S6swUrc+hfivRgylKCcUk4+sb2Gi7uj5rSSv3x0p/fwIpyYlrKhxA2LqtdVBZ1Evk5Q== + "@hugotomazi/capacitor-navigation-bar@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@hugotomazi/capacitor-navigation-bar/-/capacitor-navigation-bar-2.0.0.tgz#d5297025da12c486e7f733e311e367eeebd8a011" @@ -3578,11 +3583,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -highlight.js@10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" - integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg== - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" From 20421e4cc4cc89f969653ffb391f0c9ab36ddeb3 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 26 Jul 2023 12:37:20 +0300 Subject: [PATCH 50/63] handle lightning-fs --- gulpfile.js | 3 ++- package.json | 1 + resources/js/lightning-fs.min.js | 8 ------- resources/js/worker.js | 2 +- src/main/frontend/fs.cljs | 4 ++-- yarn.lock | 37 ++++++++++++++++++++++++++++++++ 6 files changed, 43 insertions(+), 12 deletions(-) delete mode 100644 resources/js/lightning-fs.min.js diff --git a/gulpfile.js b/gulpfile.js index 18d73b17b043..7ed02998c9ca 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -62,7 +62,8 @@ const common = { 'node_modules/reveal.js/dist/reveal.js', 'node_modules/shepherd.js/dist/js/shepherd.min.js', 'node_modules/marked/marked.min.js', - 'node_modules/@highlightjs/cdn-assets/highlight.min.js' + 'node_modules/@highlightjs/cdn-assets/highlight.min.js', + 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', diff --git a/package.json b/package.json index 76811112dc86..1ebc3a9f4d62 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "@excalidraw/excalidraw": "0.12.0", "@highlightjs/cdn-assets": "10.4.1", "@hugotomazi/capacitor-navigation-bar": "^2.0.0", + "@isomorphic-git/lightning-fs": "^4.6.0", "@logseq/capacitor-file-sync": "0.0.32", "@logseq/diff-merge": "0.2.2", "@logseq/react-tweet-embed": "1.3.1-1", diff --git a/resources/js/lightning-fs.min.js b/resources/js/lightning-fs.min.js deleted file mode 100644 index 1b212da7ecb3..000000000000 --- a/resources/js/lightning-fs.min.js +++ /dev/null @@ -1,8 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.LightningFS=e():t.LightningFS=e()}(self,(function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(i,n,function(e){return t[e]}.bind(null,n));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=4)}([function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){function r(t){if(0===t.length)return".";let e=n(t);return e=e.reduce(o,[]),i(...e)}function i(...t){if(0===t.length)return"";let e=t.join("/");return e=e.replace(/\/{2,}/g,"/"),e}function n(t){if(0===t.length)return[];if("/"===t)return["/"];let e=t.split("/");return""===e[e.length-1]&&e.pop(),"/"===t[0]?e[0]="/":"."!==e[0]&&e.unshift("."),e}function o(t,e){if(0===t.length)return t.push(e),t;if("."===e)return t;if(".."===e){if(1===t.length){if("/"===t[0])throw new Error("Unable to normalize path - traverses above root directory");if("."===t[0])return t.push(e),t}return".."===t[t.length-1]?(t.push(".."),t):(t.pop(),t)}return t.push(e),t}t.exports={join:i,normalize:r,split:n,basename:function(t){if("/"===t)throw new Error(`Cannot get basename of "${t}"`);const e=t.lastIndexOf("/");return-1===e?t:t.slice(e+1)},dirname:function(t){const e=t.lastIndexOf("/");if(-1===e)throw new Error(`Cannot get dirname of "${t}"`);return 0===e?"/":t.slice(0,e)},resolve:function(...t){let e="";for(let n of t)e=n.startsWith("/")?n:r(i(e,n));return e}}},function(t,e){function r(t){return class extends Error{constructor(...e){super(...e),this.code=t,this.message?this.message=t+": "+this.message:this.message=t}}}const i=r("EEXIST"),n=r("ENOENT"),o=r("ENOTDIR"),s=r("ENOTEMPTY"),a=r("ETIMEDOUT");t.exports={EEXIST:i,ENOENT:n,ENOTDIR:o,ENOTEMPTY:s,ETIMEDOUT:a}},function(t,e,r){"use strict";r.r(e),r.d(e,"Store",(function(){return i})),r.d(e,"get",(function(){return a})),r.d(e,"set",(function(){return u})),r.d(e,"update",(function(){return c})),r.d(e,"del",(function(){return f})),r.d(e,"clear",(function(){return l})),r.d(e,"keys",(function(){return p})),r.d(e,"close",(function(){return d}));class i{constructor(t="keyval-store",e="keyval"){this.storeName=e,this._dbName=t,this._storeName=e,this.id=`dbName:${t};;storeName:${e}`,this._init()}_init(){this._dbp||(this._dbp=new Promise((t,e)=>{const r=indexedDB.open(this._dbName);r.onerror=()=>e(r.error),r.onsuccess=()=>t(r.result),r.onupgradeneeded=()=>{r.result.createObjectStore(this._storeName)}}))}_withIDBStore(t,e){return this._init(),this._dbp.then(r=>new Promise((i,n)=>{const o=r.transaction(this.storeName,t);o.oncomplete=()=>i(),o.onabort=o.onerror=()=>n(o.error),e(o.objectStore(this.storeName))}))}_close(){return this._init(),this._dbp.then(t=>{t.close(),this._dbp=void 0})}}class n{constructor(t){this.executor=t,this.items=[]}async process(){const t=this.items;this.items=[],await this.executor(t.map(({item:t})=>t)),t.map(({onProcessed:t})=>t()),this.items.length?this.ongoing=this.process():this.ongoing=void 0}async queue(t){const e=new Promise(e=>this.items.push({item:t,onProcessed:e}));return this.ongoing||(this.ongoing=this.process()),e}}let o;function s(){return o||(o=new i),o}function a(t,e=s()){let r;return e._withIDBStore("readwrite",e=>{r=e.get(t)}).then(()=>r.result)}const h={};function u(t,e,r=s()){return h[r.id]||(h[r.id]=new n(t=>r._withIDBStore("readwrite",e=>{for(const r of t)e.put(r.value,r.key)}))),h[r.id].queue({key:t,value:e})}function c(t,e,r=s()){return r._withIDBStore("readwrite",r=>{const i=r.get(t);i.onsuccess=()=>{r.put(e(i.result),t)}})}function f(t,e=s()){return e._withIDBStore("readwrite",e=>{e.delete(t)})}function l(t=s()){return t._withIDBStore("readwrite",t=>{t.clear()})}function p(t=s()){const e=[];return t._withIDBStore("readwrite",t=>{(t.openKeyCursor||t.openCursor).call(t).onsuccess=function(){this.result&&(e.push(this.result.key),this.result.continue())}}).then(()=>e)}function d(t=s()){return t._close()}},function(t,e,r){const i=r(5),n=r(6);function o(t,e){"function"==typeof t&&(e=t);return[(...t)=>e(null,...t),e=i(e)]}t.exports=class{constructor(...t){this.promises=new n(...t),this.init=this.init.bind(this),this.readFile=this.readFile.bind(this),this.writeFile=this.writeFile.bind(this),this.unlink=this.unlink.bind(this),this.readdir=this.readdir.bind(this),this.mkdir=this.mkdir.bind(this),this.rmdir=this.rmdir.bind(this),this.rename=this.rename.bind(this),this.stat=this.stat.bind(this),this.lstat=this.lstat.bind(this),this.readlink=this.readlink.bind(this),this.symlink=this.symlink.bind(this),this.backFile=this.backFile.bind(this),this.du=this.du.bind(this)}init(t,e){this.promises.init(t,e)}readFile(t,e,r){const[i,n]=o(e,r);this.promises.readFile(t,e).then(i).catch(n)}writeFile(t,e,r,i){const[n,s]=o(r,i);this.promises.writeFile(t,e,r).then(n).catch(s)}unlink(t,e,r){const[i,n]=o(e,r);this.promises.unlink(t,e).then(i).catch(n)}readdir(t,e,r){const[i,n]=o(e,r);this.promises.readdir(t,e).then(i).catch(n)}mkdir(t,e,r){const[i,n]=o(e,r);this.promises.mkdir(t,e).then(i).catch(n)}rmdir(t,e,r){const[i,n]=o(e,r);this.promises.rmdir(t,e).then(i).catch(n)}rename(t,e,r){const[i,n]=o(r);this.promises.rename(t,e).then(i).catch(n)}stat(t,e,r){const[i,n]=o(e,r);this.promises.stat(t).then(i).catch(n)}lstat(t,e,r){const[i,n]=o(e,r);this.promises.lstat(t).then(i).catch(n)}readlink(t,e,r){const[i,n]=o(e,r);this.promises.readlink(t).then(i).catch(n)}symlink(t,e,r){const[i,n]=o(r);this.promises.symlink(t,e).then(i).catch(n)}backFile(t,e,r){const[i,n]=o(e,r);this.promises.backFile(t,e).then(i).catch(n)}du(t,e){const[r,i]=o(e);this.promises.du(t).then(r).catch(i)}}},function(t,e){t.exports=function(t){var e,r;if("function"!=typeof t)throw new Error("expected a function but got "+t);return function(){return e?r:(e=!0,r=t.apply(this,arguments))}}},function(t,e,r){const{encode:i,decode:n}=r(7),o=r(13),s=r(14),a=r(15),{ENOENT:h,ENOTEMPTY:u,ETIMEDOUT:c}=r(2),f=r(16),l=r(17),p=r(18),d=r(19),w=r(1);r(20);function _(t,e){return void 0!==e&&"function"!=typeof e||(e={}),"string"==typeof e&&(e={encoding:e}),[t=w.normalize(t),e]}function y(t,e){return[w.normalize(t),w.normalize(e)]}t.exports=class{constructor(t,e){this.init=this.init.bind(this),this.readFile=this._wrap(this.readFile,!1),this.writeFile=this._wrap(this.writeFile,!0),this.unlink=this._wrap(this.unlink,!0),this.readdir=this._wrap(this.readdir,!1),this.mkdir=this._wrap(this.mkdir,!0),this.rmdir=this._wrap(this.rmdir,!0),this.rename=this._wrap(this.rename,!0),this.stat=this._wrap(this.stat,!1),this.lstat=this._wrap(this.lstat,!1),this.readlink=this._wrap(this.readlink,!1),this.symlink=this._wrap(this.symlink,!0),this.backFile=this._wrap(this.backFile,!0),this.du=this._wrap(this.du,!1),this.saveSuperblock=o(()=>{this._saveSuperblock()},500),this._deactivationPromise=null,this._deactivationTimeout=null,this._activationPromise=null,this._operations=new Set,t&&this.init(t,e)}async init(...t){return this._initPromiseResolve&&await this._initPromise,this._initPromise=this._init(...t),this._initPromise}async _init(t,{wipe:e,url:r,urlauto:i,fileDbName:n=t,fileStoreName:o=t+"_files",lockDbName:s=t+"_lock",lockStoreName:h=t+"_lock",defer:u=!1}={}){await this._gracefulShutdown(),this._name=t,this._idb=new f(n,o),this._mutex=navigator.locks?new d(t):new p(s,h),this._cache=new a(t),this._opts={wipe:e,url:r},this._needsWipe=!!e,r&&(this._http=new l(r),this._urlauto=!!i),this._initPromiseResolve&&(this._initPromiseResolve(),this._initPromiseResolve=null),u||this.stat("/")}async _gracefulShutdown(){this._operations.size>0&&(this._isShuttingDown=!0,await new Promise(t=>this._gracefulShutdownResolve=t),this._isShuttingDown=!1,this._gracefulShutdownResolve=null)}_wrap(t,e){return async(...r)=>{let i={name:t.name,args:r};this._operations.add(i);try{return await this._activate(),await t.apply(this,r)}finally{this._operations.delete(i),e&&this.saveSuperblock(),0===this._operations.size&&(this._deactivationTimeout||clearTimeout(this._deactivationTimeout),this._deactivationTimeout=setTimeout(this._deactivate.bind(this),500))}}}async _activate(){if(this._initPromise||console.warn(new Error(`Attempted to use LightningFS ${this._name} before it was initialized.`)),await this._initPromise,this._deactivationTimeout&&(clearTimeout(this._deactivationTimeout),this._deactivationTimeout=null),this._deactivationPromise&&await this._deactivationPromise,this._deactivationPromise=null,this._activationPromise||(this._activationPromise=this.__activate()),await this._activationPromise,!await this._mutex.has())throw new c}async __activate(){if(this._cache.activated)return;this._needsWipe&&(this._needsWipe=!1,await this._idb.wipe(),await this._mutex.release({force:!0})),await this._mutex.has()||await this._mutex.wait();const t=await this._idb.loadSuperblock();if(t)this._cache.activate(t);else if(this._http){const t=await this._http.loadSuperblock();this._cache.activate(t),await this._saveSuperblock()}else this._cache.activate()}async _deactivate(){return this._activationPromise&&await this._activationPromise,this._deactivationPromise||(this._deactivationPromise=this.__deactivate()),this._activationPromise=null,this._gracefulShutdownResolve&&this._gracefulShutdownResolve(),this._deactivationPromise}async __deactivate(){await this._mutex.has()&&await this._saveSuperblock(),this._cache.deactivate();try{await this._mutex.release()}catch(t){console.log(t)}await this._idb.close()}async _saveSuperblock(){this._cache.activated&&(this._lastSavedAt=Date.now(),await this._idb.saveSuperblock(this._cache._root))}async _writeStat(t,e,r){let i=w.split(w.dirname(t)),n=i.shift();for(let t of i){n=w.join(n,t);try{this._cache.mkdir(n,{mode:511})}catch(t){}}return this._cache.writeStat(t,e,r)}async readFile(t,e){[t,e]=_(t,e);const{encoding:r}=e;if(r&&"utf8"!==r)throw new Error('Only "utf8" encoding is supported in readFile');let i=null,o=null;try{o=this._cache.stat(t),i=await this._idb.readFile(o.ino)}catch(t){if(!this._urlauto)throw t}if(!i&&this._http){let e=this._cache.lstat(t);for(;"symlink"===e.type;)t=w.resolve(w.dirname(t),e.target),e=this._cache.lstat(t);i=await this._http.readFile(t)}if(i&&(o&&o.size==i.byteLength||(o=await this._writeStat(t,i.byteLength,{mode:o?o.mode:438}),this.saveSuperblock()),"utf8"===r&&(i=n(i))),!o)throw new h(t);return i}async writeFile(t,e,r){[t,r]=_(t,r);const{mode:n,encoding:o="utf8"}=r;if("string"==typeof e){if("utf8"!==o)throw new Error('Only "utf8" encoding is supported in writeFile');e=i(e)}const s=await this._cache.writeStat(t,e.byteLength,{mode:n});return await this._idb.writeFile(s.ino,e),null}async unlink(t,e){[t,e]=_(t,e);const r=this._cache.lstat(t);return this._cache.unlink(t),"symlink"!==r.type&&await this._idb.unlink(r.ino),null}async readdir(t,e){return[t,e]=_(t,e),this._cache.readdir(t)}async mkdir(t,e){[t,e]=_(t,e);const{mode:r=511}=e;return await this._cache.mkdir(t,{mode:r}),null}async rmdir(t,e){if([t,e]=_(t,e),"/"===t)throw new u;return this._cache.rmdir(t),null}async rename(t,e){return[t,e]=y(t,e),this._cache.rename(t,e),null}async stat(t,e){[t,e]=_(t,e);const r=this._cache.stat(t);return new s(r)}async lstat(t,e){[t,e]=_(t,e);let r=this._cache.lstat(t);return new s(r)}async readlink(t,e){return[t,e]=_(t,e),this._cache.readlink(t)}async symlink(t,e){return[t,e]=y(t,e),this._cache.symlink(t,e),null}async backFile(t,e){[t,e]=_(t,e);let r=await this._http.sizeFile(t);return await this._writeStat(t,r,e),null}async du(t){return this._cache.du(t)}}},function(t,e,r){r(8),t.exports={encode:t=>(new TextEncoder).encode(t),decode:t=>(new TextDecoder).decode(t)}},function(t,e,r){(function(t,e){!function(t){function r(){}function i(t,e){if(t=void 0===t?"utf-8":t,e=void 0===e?{fatal:!1}:e,-1===o.indexOf(t.toLowerCase()))throw new RangeError("Failed to construct 'TextDecoder': The encoding label provided ('"+t+"') is invalid.");if(e.fatal)throw Error("Failed to construct 'TextDecoder': the 'fatal' option is unsupported.")}function n(t){for(var e=0,r=Math.min(65536,t.length+1),i=new Uint16Array(r),n=[],o=0;;){var s=e=r-1){if(n.push(String.fromCharCode.apply(null,i.subarray(0,o))),!s)return n.join("");t=t.subarray(e),o=e=0}if(0==(128&(s=t[e++])))i[o++]=s;else if(192==(224&s)){var a=63&t[e++];i[o++]=(31&s)<<6|a}else if(224==(240&s)){a=63&t[e++];var h=63&t[e++];i[o++]=(31&s)<<12|a<<6|h}else if(240==(248&s)){65535<(s=(7&s)<<18|(a=63&t[e++])<<12|(h=63&t[e++])<<6|63&t[e++])&&(s-=65536,i[o++]=s>>>10&1023|55296,s=56320|1023&s),i[o++]=s}}}if(t.TextEncoder&&t.TextDecoder)return!1;var o=["utf-8","utf8","unicode-1-1-utf-8"];Object.defineProperty(r.prototype,"encoding",{value:"utf-8"}),r.prototype.encode=function(t,e){if((e=void 0===e?{stream:!1}:e).stream)throw Error("Failed to encode: the 'stream' option is unsupported.");e=0;for(var r=t.length,i=0,n=Math.max(32,r+(r>>>1)+7),o=new Uint8Array(n>>>3<<3);e=s){if(e=s)continue}if(i+4>o.length&&(n+=8,n=(n*=1+e/t.length*2)>>>3<<3,(a=new Uint8Array(n)).set(o),o=a),0==(4294967168&s))o[i++]=s;else{if(0==(4294965248&s))o[i++]=s>>>6&31|192;else if(0==(4294901760&s))o[i++]=s>>>12&15|224,o[i++]=s>>>6&63|128;else{if(0!=(4292870144&s))continue;o[i++]=s>>>18&7|240,o[i++]=s>>>12&63|128,o[i++]=s>>>6&63|128}o[i++]=63&s|128}}return o.slice?o.slice(0,i):o.subarray(0,i)},Object.defineProperty(i.prototype,"encoding",{value:"utf-8"}),Object.defineProperty(i.prototype,"fatal",{value:!1}),Object.defineProperty(i.prototype,"ignoreBOM",{value:!1});var s=n;"function"==typeof e&&e.from?s=function(t){return e.from(t.buffer,t.byteOffset,t.byteLength).toString("utf-8")}:"function"==typeof Blob&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&(s=function(t){var e=URL.createObjectURL(new Blob([t],{type:"text/plain;charset=UTF-8"}));try{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(),r.responseText}catch(e){return n(t)}finally{URL.revokeObjectURL(e)}}),i.prototype.decode=function(t,e){if((e=void 0===e?{stream:!1}:e).stream)throw Error("Failed to decode: the 'stream' option is unsupported.");return t=t instanceof Uint8Array?t:t.buffer instanceof ArrayBuffer?new Uint8Array(t.buffer):new Uint8Array(t),s(t)},t.TextEncoder=r,t.TextDecoder=i}("undefined"!=typeof window?window:void 0!==t?t:this)}).call(this,r(0),r(9).Buffer)},function(t,e,r){"use strict";(function(t){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var i=r(10),n=r(11),o=r(12);function s(){return h.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function d(t,e){if(h.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return C(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return j(t).length;default:if(i)return C(t).length;e=(""+e).toLowerCase(),i=!0}}function w(t,e,r){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return x(this,e,r);case"utf8":case"utf-8":return P(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return S(this,e,r);case"base64":return A(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function _(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function y(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:m(t,e,r,i,n);if("number"==typeof e)return e&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function m(t,e,r,i,n){var o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){var c=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){for(var f=!0,l=0;ln&&(i=n):i=n;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");i>o/2&&(i=o/2);for(var s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function A(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function P(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n239?4:u>223?3:u>191?2:1;if(n+f<=r)switch(f){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[n+1]))&&(h=(31&u)<<6|63&o)>127&&(c=h);break;case 3:o=t[n+1],s=t[n+2],128==(192&o)&&128==(192&s)&&(h=(15&u)<<12|(63&o)<<6|63&s)>2047&&(h<55296||h>57343)&&(c=h);break;case 4:o=t[n+1],s=t[n+2],a=t[n+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(h=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&h<1114112&&(c=h)}null===c?(c=65533,f=1):c>65535&&(c-=65536,i.push(c>>>10&1023|55296),c=56320|1023&c),i.push(c),n+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r="",i=0;for(;i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},h.prototype.compare=function(t,e,r,i,n){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),u=this.slice(i,n),c=t.slice(e,r),f=0;fn)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return g(this,t,e,r);case"utf8":case"utf-8":return v(this,t,e,r);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return E(this,t,e,r);case"base64":return k(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function R(t,e,r){var i="";r=Math.min(t.length,r);for(var n=e;ni)&&(r=i);for(var n="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function O(t,e,r,i){e<0&&(e=65535+e+1);for(var n=0,o=Math.min(t.length-r,2);n>>8*(i?n:1-n)}function I(t,e,r,i){e<0&&(e=4294967295+e+1);for(var n=0,o=Math.min(t.length-r,4);n>>8*(i?n:3-n)&255}function D(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Y(t,e,r,i,o){return o||D(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return o||D(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){var r,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUInt8=function(t,e){return e||U(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return e||U(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return e||U(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return e||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return e||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||U(t,e,this.length);for(var i=this[t],n=1,o=0;++o=(n*=128)&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||U(t,e,this.length);for(var i=e,n=1,o=this[t+--i];i>0&&(n*=256);)o+=this[t+--i]*n;return o>=(n*=128)&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return e||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){e||U(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){e||U(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return e||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return e||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return e||U(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return e||U(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return e||U(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return e||U(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,r,i){(t=+t,e|=0,r|=0,i)||M(this,t,e,r,Math.pow(2,8*r)-1,0);var n=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,255,0),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):I(this,t,e,!0),e+4},h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);M(this,t,e,r,n-1,-n)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);M(this,t,e,r,n-1,-n)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,127,-128),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):I(this,t,e,!0),e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},h.prototype.writeFloatLE=function(t,e,r){return Y(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return Y(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e=0;--n)t[n+e]=this[n+r];else if(o<1e3||!h.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function j(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(L,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,r,i){for(var n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}}).call(this,r(0))},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,i=u(t),s=i[0],a=i[1],h=new o(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),c=0,f=a>0?s-4:s;for(r=0;r>16&255,h[c++]=e>>8&255,h[c++]=255&e;2===a&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,h[c++]=255&e);1===a&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,h[c++]=e>>8&255,h[c++]=255&e);return h},e.fromByteArray=function(t){for(var e,r=t.length,n=r%3,o=[],s=0,a=r-n;sa?a:s+16383));1===n?(e=t[r-1],o.push(i[e>>2]+i[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],o.push(i[e>>10]+i[e>>4&63]+i[e<<2&63]+"="));return o.join("")};for(var i=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,r){for(var n,o,s=[],a=e;a>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,c=-7,f=r?n-1:0,l=r?-1:1,p=t[e+f];for(f+=l,o=p&(1<<-c)-1,p>>=-c,c+=a;c>0;o=256*o+t[e+f],f+=l,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=256*s+t[e+f],f+=l,c-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,i),o-=u}return(p?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,c=(1<>1,l=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,p=i?0:o-1,d=i?1:-1,w=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+f>=1?l/h:l*Math.pow(2,1-f))*h>=2&&(s++,h/=2),s+f>=c?(a=0,s=c):s+f>=1?(a=(e*h-1)*Math.pow(2,n),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,n),s=0));n>=8;t[r+p]=255&a,p+=d,a/=256,n-=8);for(s=s<0;t[r+p]=255&s,p+=d,s/=256,u-=8);t[r+p-d]|=128*w}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e){t.exports=function(t,e,r){var i;return function(){if(!e)return t.apply(this,arguments);var n=this,o=arguments,s=r&&!i;return clearTimeout(i),i=setTimeout((function(){if(i=null,!s)return t.apply(n,o)}),e),s?t.apply(this,arguments):void 0}}},function(t,e){t.exports=class{constructor(t){this.type=t.type,this.mode=t.mode,this.size=t.size,this.ino=t.ino,this.mtimeMs=t.mtimeMs,this.ctimeMs=t.ctimeMs||t.mtimeMs,this.uid=1,this.gid=1,this.dev=1}isFile(){return"file"===this.type}isDirectory(){return"dir"===this.type}isSymbolicLink(){return"symlink"===this.type}}},function(t,e,r){const i=r(1),{EEXIST:n,ENOENT:o,ENOTDIR:s,ENOTEMPTY:a}=r(2);t.exports=class{constructor(){}_makeRoot(t=new Map){return t.set(0,{mode:511,type:"dir",size:0,ino:0,mtimeMs:Date.now()}),t}activate(t=null){this._root=null===t?new Map([["/",this._makeRoot()]]):"string"==typeof t?new Map([["/",this._makeRoot(this.parse(t))]]):t}get activated(){return!!this._root}deactivate(){this._root=void 0}size(){return this._countInodes(this._root.get("/"))-1}_countInodes(t){let e=1;for(let[r,i]of t)0!==r&&(e+=this._countInodes(i));return e}autoinc(){return this._maxInode(this._root.get("/"))+1}_maxInode(t){let e=t.get(0).ino;for(let[r,i]of t)0!==r&&(e=Math.max(e,this._maxInode(i)));return e}print(t=this._root.get("/")){let e="";const r=(t,i)=>{for(let[n,o]of t){if(0===n)continue;let t=o.get(0),s=t.mode.toString(8);e+=`${"\t".repeat(i)}${n}\t${s}`,"file"===t.type?e+=`\t${t.size}\t${t.mtimeMs}\n`:(e+="\n",r(o,i+1))}};return r(t,0),e}parse(t){let e=0;function r(t){const r=++e,i=1===t.length?"dir":"file";let[n,o,s]=t;return n=parseInt(n,8),o=o?parseInt(o):0,s=s?parseInt(s):Date.now(),new Map([[0,{mode:n,type:i,size:o,mtimeMs:s,ino:r}]])}let i=t.trim().split("\n"),n=this._makeRoot(),o=[{indent:-1,node:n},{indent:0,node:null}];for(let t of i){let e=t.match(/^\t*/)[0].length;t=t.slice(e);let[i,...n]=t.split("\t"),s=r(n);if(e<=o[o.length-1].indent)for(;e<=o[o.length-1].indent;)o.pop();o.push({indent:e,node:s}),o[o.length-2].node.set(i,s)}return n}_lookup(t,e=!0){let r=this._root,n="/",s=i.split(t);for(let a=0;a1)throw new a;let r=this._lookup(i.dirname(t)),n=i.basename(t);r.delete(n)}readdir(t){let e=this._lookup(t);if("dir"!==e.get(0).type)throw new s;return[...e.keys()].filter(t=>"string"==typeof t)}writeStat(t,e,{mode:r}){let n;try{let e=this.stat(t);null==r&&(r=e.mode),n=e.ino}catch(t){}null==r&&(r=438),null==n&&(n=this.autoinc());let o=this._lookup(i.dirname(t)),s=i.basename(t),a={mode:r,type:"file",size:e,mtimeMs:Date.now(),ino:n},h=new Map;return h.set(0,a),o.set(s,h),a}unlink(t){let e=this._lookup(i.dirname(t)),r=i.basename(t);e.delete(r)}rename(t,e){let r=i.basename(e),n=this._lookup(t);this._lookup(i.dirname(e)).set(r,n),this.unlink(t)}stat(t){return this._lookup(t).get(0)}lstat(t){return this._lookup(t,!1).get(0)}readlink(t){return this._lookup(t,!1).get(0).target}symlink(t,e){let r,n;try{let t=this.stat(e);null===n&&(n=t.mode),r=t.ino}catch(t){}null==n&&(n=40960),null==r&&(r=this.autoinc());let o=this._lookup(i.dirname(e)),s=i.basename(e),a={mode:n,type:"symlink",target:t,size:0,mtimeMs:Date.now(),ino:r},h=new Map;return h.set(0,a),o.set(s,h),a}_du(t){let e=0;for(const[r,i]of t.entries())e+=0===r?i.size:this._du(i);return e}du(t){let e=this._lookup(t);return this._du(e)}}},function(t,e,r){const i=r(3);t.exports=class{constructor(t,e){this._database=t,this._storename=e,this._store=new i.Store(this._database,this._storename)}saveSuperblock(t){return i.set("!root",t,this._store)}loadSuperblock(){return i.get("!root",this._store)}readFile(t){return i.get(t,this._store)}writeFile(t,e){return i.set(t,e,this._store)}unlink(t){return i.del(t,this._store)}wipe(){return i.clear(this._store)}close(){return i.close(this._store)}}},function(t,e){t.exports=class{constructor(t){this._url=t}loadSuperblock(){return fetch(this._url+"/.superblock.txt").then(t=>t.ok?t.text():null)}async readFile(t){const e=await fetch(this._url+t);if(200===e.status)return e.arrayBuffer();throw new Error("ENOENT")}async sizeFile(t){const e=await fetch(this._url+t,{method:"HEAD"});if(200===e.status)return e.headers.get("content-length");throw new Error("ENOENT")}}},function(t,e,r){const i=r(3),n=t=>new Promise(e=>setTimeout(e,t));t.exports=class{constructor(t,e){this._id=Math.random(),this._database=t,this._storename=e,this._store=new i.Store(this._database,this._storename),this._lock=null}async has({margin:t=2e3}={}){if(this._lock&&this._lock.holder===this._id){const e=Date.now();return this._lock.expires>e+t||await this.renew()}return!1}async renew({ttl:t=5e3}={}){let e;return await i.update("lock",r=>{const i=Date.now()+t;return e=r&&r.holder===this._id,this._lock=e?{holder:this._id,expires:i}:r,this._lock},this._store),e}async acquire({ttl:t=5e3}={}){let e,r,n;if(await i.update("lock",i=>{const o=Date.now(),s=o+t;return r=i&&i.expires(e=t||i&&i.holder===this._id,r=void 0===i,n=i&&i.holder!==this._id,this._lock=e?void 0:i,this._lock),this._store),await i.close(this._store),!e&&!t){if(r)throw new Error("Mutex double-freed");if(n)throw new Error("Mutex lost ownership")}return e}}},function(t,e){t.exports=class{constructor(t){this._id=Math.random(),this._database=t,this._has=!1,this._release=null}async has(){return this._has}async acquire(){return new Promise(t=>{navigator.locks.request(this._database+"_lock",{ifAvailable:!0},e=>(this._has=!!e,t(!!e),new Promise(t=>{this._release=t})))})}async wait({timeout:t=6e5}={}){return new Promise((e,r)=>{const i=new AbortController;setTimeout(()=>{i.abort(),r(new Error("Mutex timeout"))},t),navigator.locks.request(this._database+"_lock",{signal:i.signal},t=>(this._has=!!t,e(!!t),new Promise(t=>{this._release=t})))})}async release({force:t=!1}={}){this._has=!1,this._release?this._release():t&&navigator.locks.request(this._database+"_lock",{steal:!0},t=>!0)}}},function(t,e){const r="undefined"==typeof window?"worker":"main";t.exports=function(t){return performance.mark(t+" start"),console.log(`${r}: ${t}`),console.time(`${r}: ${t}`),function(){performance.mark(t+" end"),console.timeEnd(`${r}: ${t}`),performance.measure(""+t,t+" start",t+" end")}}}])})); \ No newline at end of file diff --git a/resources/js/worker.js b/resources/js/worker.js index 7067e66e1abb..fe041decf9e1 100644 --- a/resources/js/worker.js +++ b/resources/js/worker.js @@ -1,6 +1,6 @@ importScripts( // Batched optimization - "./lightning-fs.min.js?v=0.0.2.3", + "./lightning-fs.min.js", // Fixed a bug "./magic_portal.js" ); diff --git a/src/main/frontend/fs.cljs b/src/main/frontend/fs.cljs index 3104e432e352..414dc5e97746 100644 --- a/src/main/frontend/fs.cljs +++ b/src/main/frontend/fs.cljs @@ -127,7 +127,7 @@ [repo old-path new-path] (let [new-path (gp-util/path-normalize new-path)] (cond - ; See https://github.com/isomorphic-git/lightning-fs/issues/41 + ; See https://github.com/isomorphic-git/lightning-fs/issues/41 (= old-path new-path) (p/resolved nil) @@ -187,7 +187,7 @@ (defn get-files "List all files in the directory, recursively. - + Wrap as {:path string :files []}, using relative path" [dir] (let [fs-record (get-native-backend)] diff --git a/yarn.lock b/yarn.lock index 240667055f87..4e65f427b799 100644 --- a/yarn.lock +++ b/yarn.lock @@ -456,6 +456,21 @@ untildify "^4.0.0" wrap-ansi "^7.0.0" +"@isomorphic-git/idb-keyval@3.3.2": + version "3.3.2" + resolved "https://registry.npmjs.org/@isomorphic-git/idb-keyval/-/idb-keyval-3.3.2.tgz#c0509a6c5987d8a62efb3e47f2815bcc5eda2489" + integrity sha512-r8/AdpiS0/WJCNR/t/gsgL+M8NMVj/ek7s60uz3LmpCaTF2mEVlZJlB01ZzalgYzRLXwSPC92o+pdzjM7PN/pA== + +"@isomorphic-git/lightning-fs@^4.6.0": + version "4.6.0" + resolved "https://registry.npmjs.org/@isomorphic-git/lightning-fs/-/lightning-fs-4.6.0.tgz#a7f49784c121241a50cefba6198cff8d6e86eb20" + integrity sha512-tfon8f1h6LawjFI/d8lZPWRPTxmdvyTMbkT/j5yo6dB0hALhKw5D9JsdCcUu/D1pAcMMiU7GZFDsDGqylerr7g== + dependencies: + "@isomorphic-git/idb-keyval" "3.3.2" + isomorphic-textencoder "1.0.1" + just-debounce-it "1.1.0" + just-once "1.1.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -2915,6 +2930,11 @@ fast-sort@^2.2.0: resolved "https://registry.yarnpkg.com/fast-sort/-/fast-sort-2.2.0.tgz#20903763531fbcbb41c9df5ab1bf5f2cefc8476a" integrity sha512-W7zqnn2zsYoQA87FKmYtgOsbJohOrh7XrtZrCVHN5XZKqTBTv5UG+rSS3+iWbg/nepRQUOu+wnas8BwtK8kiCg== +fast-text-encoding@^1.0.0: + version "1.0.6" + resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" + integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== + fastdom@^1.0.9: version "1.0.11" resolved "https://registry.yarnpkg.com/fastdom/-/fastdom-1.0.11.tgz#f22984f9df6b9a6081e5ce2e49cfb5525daf198a" @@ -4161,6 +4181,13 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-textencoder@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/isomorphic-textencoder/-/isomorphic-textencoder-1.0.1.tgz#38dcd3b4416d29cd33e274f64b99ae567cd15e83" + integrity sha512-676hESgHullDdHDsj469hr+7t3i/neBKU9J7q1T4RHaWwLAsaQnywC0D1dIUId0YZ+JtVrShzuBk1soo0+GVcQ== + dependencies: + fast-text-encoding "^1.0.0" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4232,11 +4259,21 @@ jszip@3.8.0: readable-stream "~2.3.6" set-immediate-shim "~1.0.1" +just-debounce-it@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.1.0.tgz#8e92578effc155358a44f458c52ffbee66983bef" + integrity sha512-87Nnc0qZKgBZuhFZjYVjSraic0x7zwjhaTMrCKlj0QYKH6lh0KbFzVnfu6LHan03NO7J8ygjeBeD0epejn5Zcg== + just-debounce@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== +just-once@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/just-once/-/just-once-1.1.0.tgz#fe81a185ebaeeb0947a7e705bf01cb6808db0ad8" + integrity sha512-+rZVpl+6VyTilK7vB/svlMPil4pxqIJZkbnN7DKZTOzyXfun6ZiFeq2Pk4EtCEHZ0VU4EkdFzG8ZK5F3PErcDw== + katex@^0.16.7: version "0.16.8" resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.8.tgz#89b453f40e8557f423f31a1009e9298dd99d5ceb" From eb6a0456191b35a3147683b342d43ed62d7676cc Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 26 Jul 2023 13:10:31 +0300 Subject: [PATCH 51/63] handle magic-portal --- gulpfile.js | 4 ++++ package.json | 2 ++ resources/js/magic_portal.js | 1 - yarn.lock | 10 ++++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 resources/js/magic_portal.js diff --git a/gulpfile.js b/gulpfile.js index 7ed02998c9ca..ec7356be52af 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,6 +3,7 @@ const utils = require('util') const cp = require('child_process') const exec = utils.promisify(cp.exec) const path = require('path') +const rename = require('gulp-rename') const gulp = require('gulp') const cleanCSS = require('gulp-clean-css') const del = require('del') @@ -65,6 +66,9 @@ const common = { 'node_modules/@highlightjs/cdn-assets/highlight.min.js', 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), + () => gulp.src([ + 'node_modules/magic-portal/dist/index.umd.js', + ]).pipe(rename('magic_portal.js')).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', 'node_modules/inter-ui/inter.css', diff --git a/package.json b/package.json index 1ebc3a9f4d62..237c1e54a566 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "del": "^6.0.0", "gulp": "^4.0.2", "gulp-clean-css": "^4.3.0", + "gulp-rename": "^2.0.0", "ip": "1.1.8", "npm-run-all": "^4.1.5", "playwright": "=1.31.0", @@ -122,6 +123,7 @@ "interactjs": "^1.10.17", "jszip": "3.8.0", "katex": "^0.16.7", + "magic-portal": "^1.0.0", "marked": "^5.1.2", "mldoc": "1.5.7", "path": "0.12.7", diff --git a/resources/js/magic_portal.js b/resources/js/magic_portal.js deleted file mode 100644 index e1660ea65413..000000000000 --- a/resources/js/magic_portal.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.MagicPortal=t()}(this,function(){var e=function(e){var t=this;this.rpc_counter=0,this.channel=e,this.foreign=new Map,this.local=new Map,this.calls=new Map,this.queue=[],this.connectionEstablished=!1,this.channel.addEventListener("message",function(e){var n=e.data;if(n&&"object"==typeof n)switch(n.type){case"MP_INIT":return t.onInit(n);case"MP_SET":return t.onSet(n);case"MP_CALL":return t.onCall(n);case"MP_RETURN":return t.onReturn(n)}}),this.channel.postMessage({type:"MP_INIT",id:1,reply:!0})};e.prototype.onInit=function(e){this.connectionEstablished=!0;var t=this.queue;this.queue=[];for(var n=0,o=t;n Date: Wed, 26 Jul 2023 13:54:17 +0300 Subject: [PATCH 52/63] Revert "handle lightning-fs" This reverts commit 005f56deb42d6d40776282baf91fe79cd2c30d29. --- gulpfile.js | 3 +-- package.json | 1 - resources/js/lightning-fs.min.js | 8 +++++++ resources/js/worker.js | 2 +- src/main/frontend/fs.cljs | 4 ++-- yarn.lock | 37 -------------------------------- 6 files changed, 12 insertions(+), 43 deletions(-) create mode 100644 resources/js/lightning-fs.min.js diff --git a/gulpfile.js b/gulpfile.js index ec7356be52af..f732b977f533 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -63,8 +63,7 @@ const common = { 'node_modules/reveal.js/dist/reveal.js', 'node_modules/shepherd.js/dist/js/shepherd.min.js', 'node_modules/marked/marked.min.js', - 'node_modules/@highlightjs/cdn-assets/highlight.min.js', - 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' + 'node_modules/@highlightjs/cdn-assets/highlight.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/magic-portal/dist/index.umd.js', diff --git a/package.json b/package.json index 237c1e54a566..ffe922cb660e 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,6 @@ "@excalidraw/excalidraw": "0.12.0", "@highlightjs/cdn-assets": "10.4.1", "@hugotomazi/capacitor-navigation-bar": "^2.0.0", - "@isomorphic-git/lightning-fs": "^4.6.0", "@logseq/capacitor-file-sync": "0.0.32", "@logseq/diff-merge": "0.2.2", "@logseq/react-tweet-embed": "1.3.1-1", diff --git a/resources/js/lightning-fs.min.js b/resources/js/lightning-fs.min.js new file mode 100644 index 000000000000..1b212da7ecb3 --- /dev/null +++ b/resources/js/lightning-fs.min.js @@ -0,0 +1,8 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.LightningFS=e():t.LightningFS=e()}(self,(function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(i,n,function(e){return t[e]}.bind(null,n));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=4)}([function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){function r(t){if(0===t.length)return".";let e=n(t);return e=e.reduce(o,[]),i(...e)}function i(...t){if(0===t.length)return"";let e=t.join("/");return e=e.replace(/\/{2,}/g,"/"),e}function n(t){if(0===t.length)return[];if("/"===t)return["/"];let e=t.split("/");return""===e[e.length-1]&&e.pop(),"/"===t[0]?e[0]="/":"."!==e[0]&&e.unshift("."),e}function o(t,e){if(0===t.length)return t.push(e),t;if("."===e)return t;if(".."===e){if(1===t.length){if("/"===t[0])throw new Error("Unable to normalize path - traverses above root directory");if("."===t[0])return t.push(e),t}return".."===t[t.length-1]?(t.push(".."),t):(t.pop(),t)}return t.push(e),t}t.exports={join:i,normalize:r,split:n,basename:function(t){if("/"===t)throw new Error(`Cannot get basename of "${t}"`);const e=t.lastIndexOf("/");return-1===e?t:t.slice(e+1)},dirname:function(t){const e=t.lastIndexOf("/");if(-1===e)throw new Error(`Cannot get dirname of "${t}"`);return 0===e?"/":t.slice(0,e)},resolve:function(...t){let e="";for(let n of t)e=n.startsWith("/")?n:r(i(e,n));return e}}},function(t,e){function r(t){return class extends Error{constructor(...e){super(...e),this.code=t,this.message?this.message=t+": "+this.message:this.message=t}}}const i=r("EEXIST"),n=r("ENOENT"),o=r("ENOTDIR"),s=r("ENOTEMPTY"),a=r("ETIMEDOUT");t.exports={EEXIST:i,ENOENT:n,ENOTDIR:o,ENOTEMPTY:s,ETIMEDOUT:a}},function(t,e,r){"use strict";r.r(e),r.d(e,"Store",(function(){return i})),r.d(e,"get",(function(){return a})),r.d(e,"set",(function(){return u})),r.d(e,"update",(function(){return c})),r.d(e,"del",(function(){return f})),r.d(e,"clear",(function(){return l})),r.d(e,"keys",(function(){return p})),r.d(e,"close",(function(){return d}));class i{constructor(t="keyval-store",e="keyval"){this.storeName=e,this._dbName=t,this._storeName=e,this.id=`dbName:${t};;storeName:${e}`,this._init()}_init(){this._dbp||(this._dbp=new Promise((t,e)=>{const r=indexedDB.open(this._dbName);r.onerror=()=>e(r.error),r.onsuccess=()=>t(r.result),r.onupgradeneeded=()=>{r.result.createObjectStore(this._storeName)}}))}_withIDBStore(t,e){return this._init(),this._dbp.then(r=>new Promise((i,n)=>{const o=r.transaction(this.storeName,t);o.oncomplete=()=>i(),o.onabort=o.onerror=()=>n(o.error),e(o.objectStore(this.storeName))}))}_close(){return this._init(),this._dbp.then(t=>{t.close(),this._dbp=void 0})}}class n{constructor(t){this.executor=t,this.items=[]}async process(){const t=this.items;this.items=[],await this.executor(t.map(({item:t})=>t)),t.map(({onProcessed:t})=>t()),this.items.length?this.ongoing=this.process():this.ongoing=void 0}async queue(t){const e=new Promise(e=>this.items.push({item:t,onProcessed:e}));return this.ongoing||(this.ongoing=this.process()),e}}let o;function s(){return o||(o=new i),o}function a(t,e=s()){let r;return e._withIDBStore("readwrite",e=>{r=e.get(t)}).then(()=>r.result)}const h={};function u(t,e,r=s()){return h[r.id]||(h[r.id]=new n(t=>r._withIDBStore("readwrite",e=>{for(const r of t)e.put(r.value,r.key)}))),h[r.id].queue({key:t,value:e})}function c(t,e,r=s()){return r._withIDBStore("readwrite",r=>{const i=r.get(t);i.onsuccess=()=>{r.put(e(i.result),t)}})}function f(t,e=s()){return e._withIDBStore("readwrite",e=>{e.delete(t)})}function l(t=s()){return t._withIDBStore("readwrite",t=>{t.clear()})}function p(t=s()){const e=[];return t._withIDBStore("readwrite",t=>{(t.openKeyCursor||t.openCursor).call(t).onsuccess=function(){this.result&&(e.push(this.result.key),this.result.continue())}}).then(()=>e)}function d(t=s()){return t._close()}},function(t,e,r){const i=r(5),n=r(6);function o(t,e){"function"==typeof t&&(e=t);return[(...t)=>e(null,...t),e=i(e)]}t.exports=class{constructor(...t){this.promises=new n(...t),this.init=this.init.bind(this),this.readFile=this.readFile.bind(this),this.writeFile=this.writeFile.bind(this),this.unlink=this.unlink.bind(this),this.readdir=this.readdir.bind(this),this.mkdir=this.mkdir.bind(this),this.rmdir=this.rmdir.bind(this),this.rename=this.rename.bind(this),this.stat=this.stat.bind(this),this.lstat=this.lstat.bind(this),this.readlink=this.readlink.bind(this),this.symlink=this.symlink.bind(this),this.backFile=this.backFile.bind(this),this.du=this.du.bind(this)}init(t,e){this.promises.init(t,e)}readFile(t,e,r){const[i,n]=o(e,r);this.promises.readFile(t,e).then(i).catch(n)}writeFile(t,e,r,i){const[n,s]=o(r,i);this.promises.writeFile(t,e,r).then(n).catch(s)}unlink(t,e,r){const[i,n]=o(e,r);this.promises.unlink(t,e).then(i).catch(n)}readdir(t,e,r){const[i,n]=o(e,r);this.promises.readdir(t,e).then(i).catch(n)}mkdir(t,e,r){const[i,n]=o(e,r);this.promises.mkdir(t,e).then(i).catch(n)}rmdir(t,e,r){const[i,n]=o(e,r);this.promises.rmdir(t,e).then(i).catch(n)}rename(t,e,r){const[i,n]=o(r);this.promises.rename(t,e).then(i).catch(n)}stat(t,e,r){const[i,n]=o(e,r);this.promises.stat(t).then(i).catch(n)}lstat(t,e,r){const[i,n]=o(e,r);this.promises.lstat(t).then(i).catch(n)}readlink(t,e,r){const[i,n]=o(e,r);this.promises.readlink(t).then(i).catch(n)}symlink(t,e,r){const[i,n]=o(r);this.promises.symlink(t,e).then(i).catch(n)}backFile(t,e,r){const[i,n]=o(e,r);this.promises.backFile(t,e).then(i).catch(n)}du(t,e){const[r,i]=o(e);this.promises.du(t).then(r).catch(i)}}},function(t,e){t.exports=function(t){var e,r;if("function"!=typeof t)throw new Error("expected a function but got "+t);return function(){return e?r:(e=!0,r=t.apply(this,arguments))}}},function(t,e,r){const{encode:i,decode:n}=r(7),o=r(13),s=r(14),a=r(15),{ENOENT:h,ENOTEMPTY:u,ETIMEDOUT:c}=r(2),f=r(16),l=r(17),p=r(18),d=r(19),w=r(1);r(20);function _(t,e){return void 0!==e&&"function"!=typeof e||(e={}),"string"==typeof e&&(e={encoding:e}),[t=w.normalize(t),e]}function y(t,e){return[w.normalize(t),w.normalize(e)]}t.exports=class{constructor(t,e){this.init=this.init.bind(this),this.readFile=this._wrap(this.readFile,!1),this.writeFile=this._wrap(this.writeFile,!0),this.unlink=this._wrap(this.unlink,!0),this.readdir=this._wrap(this.readdir,!1),this.mkdir=this._wrap(this.mkdir,!0),this.rmdir=this._wrap(this.rmdir,!0),this.rename=this._wrap(this.rename,!0),this.stat=this._wrap(this.stat,!1),this.lstat=this._wrap(this.lstat,!1),this.readlink=this._wrap(this.readlink,!1),this.symlink=this._wrap(this.symlink,!0),this.backFile=this._wrap(this.backFile,!0),this.du=this._wrap(this.du,!1),this.saveSuperblock=o(()=>{this._saveSuperblock()},500),this._deactivationPromise=null,this._deactivationTimeout=null,this._activationPromise=null,this._operations=new Set,t&&this.init(t,e)}async init(...t){return this._initPromiseResolve&&await this._initPromise,this._initPromise=this._init(...t),this._initPromise}async _init(t,{wipe:e,url:r,urlauto:i,fileDbName:n=t,fileStoreName:o=t+"_files",lockDbName:s=t+"_lock",lockStoreName:h=t+"_lock",defer:u=!1}={}){await this._gracefulShutdown(),this._name=t,this._idb=new f(n,o),this._mutex=navigator.locks?new d(t):new p(s,h),this._cache=new a(t),this._opts={wipe:e,url:r},this._needsWipe=!!e,r&&(this._http=new l(r),this._urlauto=!!i),this._initPromiseResolve&&(this._initPromiseResolve(),this._initPromiseResolve=null),u||this.stat("/")}async _gracefulShutdown(){this._operations.size>0&&(this._isShuttingDown=!0,await new Promise(t=>this._gracefulShutdownResolve=t),this._isShuttingDown=!1,this._gracefulShutdownResolve=null)}_wrap(t,e){return async(...r)=>{let i={name:t.name,args:r};this._operations.add(i);try{return await this._activate(),await t.apply(this,r)}finally{this._operations.delete(i),e&&this.saveSuperblock(),0===this._operations.size&&(this._deactivationTimeout||clearTimeout(this._deactivationTimeout),this._deactivationTimeout=setTimeout(this._deactivate.bind(this),500))}}}async _activate(){if(this._initPromise||console.warn(new Error(`Attempted to use LightningFS ${this._name} before it was initialized.`)),await this._initPromise,this._deactivationTimeout&&(clearTimeout(this._deactivationTimeout),this._deactivationTimeout=null),this._deactivationPromise&&await this._deactivationPromise,this._deactivationPromise=null,this._activationPromise||(this._activationPromise=this.__activate()),await this._activationPromise,!await this._mutex.has())throw new c}async __activate(){if(this._cache.activated)return;this._needsWipe&&(this._needsWipe=!1,await this._idb.wipe(),await this._mutex.release({force:!0})),await this._mutex.has()||await this._mutex.wait();const t=await this._idb.loadSuperblock();if(t)this._cache.activate(t);else if(this._http){const t=await this._http.loadSuperblock();this._cache.activate(t),await this._saveSuperblock()}else this._cache.activate()}async _deactivate(){return this._activationPromise&&await this._activationPromise,this._deactivationPromise||(this._deactivationPromise=this.__deactivate()),this._activationPromise=null,this._gracefulShutdownResolve&&this._gracefulShutdownResolve(),this._deactivationPromise}async __deactivate(){await this._mutex.has()&&await this._saveSuperblock(),this._cache.deactivate();try{await this._mutex.release()}catch(t){console.log(t)}await this._idb.close()}async _saveSuperblock(){this._cache.activated&&(this._lastSavedAt=Date.now(),await this._idb.saveSuperblock(this._cache._root))}async _writeStat(t,e,r){let i=w.split(w.dirname(t)),n=i.shift();for(let t of i){n=w.join(n,t);try{this._cache.mkdir(n,{mode:511})}catch(t){}}return this._cache.writeStat(t,e,r)}async readFile(t,e){[t,e]=_(t,e);const{encoding:r}=e;if(r&&"utf8"!==r)throw new Error('Only "utf8" encoding is supported in readFile');let i=null,o=null;try{o=this._cache.stat(t),i=await this._idb.readFile(o.ino)}catch(t){if(!this._urlauto)throw t}if(!i&&this._http){let e=this._cache.lstat(t);for(;"symlink"===e.type;)t=w.resolve(w.dirname(t),e.target),e=this._cache.lstat(t);i=await this._http.readFile(t)}if(i&&(o&&o.size==i.byteLength||(o=await this._writeStat(t,i.byteLength,{mode:o?o.mode:438}),this.saveSuperblock()),"utf8"===r&&(i=n(i))),!o)throw new h(t);return i}async writeFile(t,e,r){[t,r]=_(t,r);const{mode:n,encoding:o="utf8"}=r;if("string"==typeof e){if("utf8"!==o)throw new Error('Only "utf8" encoding is supported in writeFile');e=i(e)}const s=await this._cache.writeStat(t,e.byteLength,{mode:n});return await this._idb.writeFile(s.ino,e),null}async unlink(t,e){[t,e]=_(t,e);const r=this._cache.lstat(t);return this._cache.unlink(t),"symlink"!==r.type&&await this._idb.unlink(r.ino),null}async readdir(t,e){return[t,e]=_(t,e),this._cache.readdir(t)}async mkdir(t,e){[t,e]=_(t,e);const{mode:r=511}=e;return await this._cache.mkdir(t,{mode:r}),null}async rmdir(t,e){if([t,e]=_(t,e),"/"===t)throw new u;return this._cache.rmdir(t),null}async rename(t,e){return[t,e]=y(t,e),this._cache.rename(t,e),null}async stat(t,e){[t,e]=_(t,e);const r=this._cache.stat(t);return new s(r)}async lstat(t,e){[t,e]=_(t,e);let r=this._cache.lstat(t);return new s(r)}async readlink(t,e){return[t,e]=_(t,e),this._cache.readlink(t)}async symlink(t,e){return[t,e]=y(t,e),this._cache.symlink(t,e),null}async backFile(t,e){[t,e]=_(t,e);let r=await this._http.sizeFile(t);return await this._writeStat(t,r,e),null}async du(t){return this._cache.du(t)}}},function(t,e,r){r(8),t.exports={encode:t=>(new TextEncoder).encode(t),decode:t=>(new TextDecoder).decode(t)}},function(t,e,r){(function(t,e){!function(t){function r(){}function i(t,e){if(t=void 0===t?"utf-8":t,e=void 0===e?{fatal:!1}:e,-1===o.indexOf(t.toLowerCase()))throw new RangeError("Failed to construct 'TextDecoder': The encoding label provided ('"+t+"') is invalid.");if(e.fatal)throw Error("Failed to construct 'TextDecoder': the 'fatal' option is unsupported.")}function n(t){for(var e=0,r=Math.min(65536,t.length+1),i=new Uint16Array(r),n=[],o=0;;){var s=e=r-1){if(n.push(String.fromCharCode.apply(null,i.subarray(0,o))),!s)return n.join("");t=t.subarray(e),o=e=0}if(0==(128&(s=t[e++])))i[o++]=s;else if(192==(224&s)){var a=63&t[e++];i[o++]=(31&s)<<6|a}else if(224==(240&s)){a=63&t[e++];var h=63&t[e++];i[o++]=(31&s)<<12|a<<6|h}else if(240==(248&s)){65535<(s=(7&s)<<18|(a=63&t[e++])<<12|(h=63&t[e++])<<6|63&t[e++])&&(s-=65536,i[o++]=s>>>10&1023|55296,s=56320|1023&s),i[o++]=s}}}if(t.TextEncoder&&t.TextDecoder)return!1;var o=["utf-8","utf8","unicode-1-1-utf-8"];Object.defineProperty(r.prototype,"encoding",{value:"utf-8"}),r.prototype.encode=function(t,e){if((e=void 0===e?{stream:!1}:e).stream)throw Error("Failed to encode: the 'stream' option is unsupported.");e=0;for(var r=t.length,i=0,n=Math.max(32,r+(r>>>1)+7),o=new Uint8Array(n>>>3<<3);e=s){if(e=s)continue}if(i+4>o.length&&(n+=8,n=(n*=1+e/t.length*2)>>>3<<3,(a=new Uint8Array(n)).set(o),o=a),0==(4294967168&s))o[i++]=s;else{if(0==(4294965248&s))o[i++]=s>>>6&31|192;else if(0==(4294901760&s))o[i++]=s>>>12&15|224,o[i++]=s>>>6&63|128;else{if(0!=(4292870144&s))continue;o[i++]=s>>>18&7|240,o[i++]=s>>>12&63|128,o[i++]=s>>>6&63|128}o[i++]=63&s|128}}return o.slice?o.slice(0,i):o.subarray(0,i)},Object.defineProperty(i.prototype,"encoding",{value:"utf-8"}),Object.defineProperty(i.prototype,"fatal",{value:!1}),Object.defineProperty(i.prototype,"ignoreBOM",{value:!1});var s=n;"function"==typeof e&&e.from?s=function(t){return e.from(t.buffer,t.byteOffset,t.byteLength).toString("utf-8")}:"function"==typeof Blob&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&(s=function(t){var e=URL.createObjectURL(new Blob([t],{type:"text/plain;charset=UTF-8"}));try{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(),r.responseText}catch(e){return n(t)}finally{URL.revokeObjectURL(e)}}),i.prototype.decode=function(t,e){if((e=void 0===e?{stream:!1}:e).stream)throw Error("Failed to decode: the 'stream' option is unsupported.");return t=t instanceof Uint8Array?t:t.buffer instanceof ArrayBuffer?new Uint8Array(t.buffer):new Uint8Array(t),s(t)},t.TextEncoder=r,t.TextDecoder=i}("undefined"!=typeof window?window:void 0!==t?t:this)}).call(this,r(0),r(9).Buffer)},function(t,e,r){"use strict";(function(t){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var i=r(10),n=r(11),o=r(12);function s(){return h.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function d(t,e){if(h.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return C(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return j(t).length;default:if(i)return C(t).length;e=(""+e).toLowerCase(),i=!0}}function w(t,e,r){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return x(this,e,r);case"utf8":case"utf-8":return P(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return S(this,e,r);case"base64":return A(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function _(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function y(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:m(t,e,r,i,n);if("number"==typeof e)return e&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function m(t,e,r,i,n){var o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){var c=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){for(var f=!0,l=0;ln&&(i=n):i=n;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");i>o/2&&(i=o/2);for(var s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function A(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function P(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n239?4:u>223?3:u>191?2:1;if(n+f<=r)switch(f){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[n+1]))&&(h=(31&u)<<6|63&o)>127&&(c=h);break;case 3:o=t[n+1],s=t[n+2],128==(192&o)&&128==(192&s)&&(h=(15&u)<<12|(63&o)<<6|63&s)>2047&&(h<55296||h>57343)&&(c=h);break;case 4:o=t[n+1],s=t[n+2],a=t[n+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(h=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&h<1114112&&(c=h)}null===c?(c=65533,f=1):c>65535&&(c-=65536,i.push(c>>>10&1023|55296),c=56320|1023&c),i.push(c),n+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r="",i=0;for(;i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},h.prototype.compare=function(t,e,r,i,n){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),u=this.slice(i,n),c=t.slice(e,r),f=0;fn)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return g(this,t,e,r);case"utf8":case"utf-8":return v(this,t,e,r);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return E(this,t,e,r);case"base64":return k(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function R(t,e,r){var i="";r=Math.min(t.length,r);for(var n=e;ni)&&(r=i);for(var n="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function O(t,e,r,i){e<0&&(e=65535+e+1);for(var n=0,o=Math.min(t.length-r,2);n>>8*(i?n:1-n)}function I(t,e,r,i){e<0&&(e=4294967295+e+1);for(var n=0,o=Math.min(t.length-r,4);n>>8*(i?n:3-n)&255}function D(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Y(t,e,r,i,o){return o||D(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return o||D(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){var r,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUInt8=function(t,e){return e||U(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return e||U(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return e||U(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return e||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return e||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||U(t,e,this.length);for(var i=this[t],n=1,o=0;++o=(n*=128)&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||U(t,e,this.length);for(var i=e,n=1,o=this[t+--i];i>0&&(n*=256);)o+=this[t+--i]*n;return o>=(n*=128)&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return e||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){e||U(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){e||U(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return e||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return e||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return e||U(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return e||U(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return e||U(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return e||U(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,r,i){(t=+t,e|=0,r|=0,i)||M(this,t,e,r,Math.pow(2,8*r)-1,0);var n=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,255,0),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):I(this,t,e,!0),e+4},h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);M(this,t,e,r,n-1,-n)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);M(this,t,e,r,n-1,-n)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,127,-128),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):I(this,t,e,!0),e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},h.prototype.writeFloatLE=function(t,e,r){return Y(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return Y(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e=0;--n)t[n+e]=this[n+r];else if(o<1e3||!h.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function j(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(L,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,r,i){for(var n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}}).call(this,r(0))},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,i=u(t),s=i[0],a=i[1],h=new o(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),c=0,f=a>0?s-4:s;for(r=0;r>16&255,h[c++]=e>>8&255,h[c++]=255&e;2===a&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,h[c++]=255&e);1===a&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,h[c++]=e>>8&255,h[c++]=255&e);return h},e.fromByteArray=function(t){for(var e,r=t.length,n=r%3,o=[],s=0,a=r-n;sa?a:s+16383));1===n?(e=t[r-1],o.push(i[e>>2]+i[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],o.push(i[e>>10]+i[e>>4&63]+i[e<<2&63]+"="));return o.join("")};for(var i=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,r){for(var n,o,s=[],a=e;a>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,c=-7,f=r?n-1:0,l=r?-1:1,p=t[e+f];for(f+=l,o=p&(1<<-c)-1,p>>=-c,c+=a;c>0;o=256*o+t[e+f],f+=l,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=256*s+t[e+f],f+=l,c-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,i),o-=u}return(p?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,c=(1<>1,l=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,p=i?0:o-1,d=i?1:-1,w=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+f>=1?l/h:l*Math.pow(2,1-f))*h>=2&&(s++,h/=2),s+f>=c?(a=0,s=c):s+f>=1?(a=(e*h-1)*Math.pow(2,n),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,n),s=0));n>=8;t[r+p]=255&a,p+=d,a/=256,n-=8);for(s=s<0;t[r+p]=255&s,p+=d,s/=256,u-=8);t[r+p-d]|=128*w}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e){t.exports=function(t,e,r){var i;return function(){if(!e)return t.apply(this,arguments);var n=this,o=arguments,s=r&&!i;return clearTimeout(i),i=setTimeout((function(){if(i=null,!s)return t.apply(n,o)}),e),s?t.apply(this,arguments):void 0}}},function(t,e){t.exports=class{constructor(t){this.type=t.type,this.mode=t.mode,this.size=t.size,this.ino=t.ino,this.mtimeMs=t.mtimeMs,this.ctimeMs=t.ctimeMs||t.mtimeMs,this.uid=1,this.gid=1,this.dev=1}isFile(){return"file"===this.type}isDirectory(){return"dir"===this.type}isSymbolicLink(){return"symlink"===this.type}}},function(t,e,r){const i=r(1),{EEXIST:n,ENOENT:o,ENOTDIR:s,ENOTEMPTY:a}=r(2);t.exports=class{constructor(){}_makeRoot(t=new Map){return t.set(0,{mode:511,type:"dir",size:0,ino:0,mtimeMs:Date.now()}),t}activate(t=null){this._root=null===t?new Map([["/",this._makeRoot()]]):"string"==typeof t?new Map([["/",this._makeRoot(this.parse(t))]]):t}get activated(){return!!this._root}deactivate(){this._root=void 0}size(){return this._countInodes(this._root.get("/"))-1}_countInodes(t){let e=1;for(let[r,i]of t)0!==r&&(e+=this._countInodes(i));return e}autoinc(){return this._maxInode(this._root.get("/"))+1}_maxInode(t){let e=t.get(0).ino;for(let[r,i]of t)0!==r&&(e=Math.max(e,this._maxInode(i)));return e}print(t=this._root.get("/")){let e="";const r=(t,i)=>{for(let[n,o]of t){if(0===n)continue;let t=o.get(0),s=t.mode.toString(8);e+=`${"\t".repeat(i)}${n}\t${s}`,"file"===t.type?e+=`\t${t.size}\t${t.mtimeMs}\n`:(e+="\n",r(o,i+1))}};return r(t,0),e}parse(t){let e=0;function r(t){const r=++e,i=1===t.length?"dir":"file";let[n,o,s]=t;return n=parseInt(n,8),o=o?parseInt(o):0,s=s?parseInt(s):Date.now(),new Map([[0,{mode:n,type:i,size:o,mtimeMs:s,ino:r}]])}let i=t.trim().split("\n"),n=this._makeRoot(),o=[{indent:-1,node:n},{indent:0,node:null}];for(let t of i){let e=t.match(/^\t*/)[0].length;t=t.slice(e);let[i,...n]=t.split("\t"),s=r(n);if(e<=o[o.length-1].indent)for(;e<=o[o.length-1].indent;)o.pop();o.push({indent:e,node:s}),o[o.length-2].node.set(i,s)}return n}_lookup(t,e=!0){let r=this._root,n="/",s=i.split(t);for(let a=0;a1)throw new a;let r=this._lookup(i.dirname(t)),n=i.basename(t);r.delete(n)}readdir(t){let e=this._lookup(t);if("dir"!==e.get(0).type)throw new s;return[...e.keys()].filter(t=>"string"==typeof t)}writeStat(t,e,{mode:r}){let n;try{let e=this.stat(t);null==r&&(r=e.mode),n=e.ino}catch(t){}null==r&&(r=438),null==n&&(n=this.autoinc());let o=this._lookup(i.dirname(t)),s=i.basename(t),a={mode:r,type:"file",size:e,mtimeMs:Date.now(),ino:n},h=new Map;return h.set(0,a),o.set(s,h),a}unlink(t){let e=this._lookup(i.dirname(t)),r=i.basename(t);e.delete(r)}rename(t,e){let r=i.basename(e),n=this._lookup(t);this._lookup(i.dirname(e)).set(r,n),this.unlink(t)}stat(t){return this._lookup(t).get(0)}lstat(t){return this._lookup(t,!1).get(0)}readlink(t){return this._lookup(t,!1).get(0).target}symlink(t,e){let r,n;try{let t=this.stat(e);null===n&&(n=t.mode),r=t.ino}catch(t){}null==n&&(n=40960),null==r&&(r=this.autoinc());let o=this._lookup(i.dirname(e)),s=i.basename(e),a={mode:n,type:"symlink",target:t,size:0,mtimeMs:Date.now(),ino:r},h=new Map;return h.set(0,a),o.set(s,h),a}_du(t){let e=0;for(const[r,i]of t.entries())e+=0===r?i.size:this._du(i);return e}du(t){let e=this._lookup(t);return this._du(e)}}},function(t,e,r){const i=r(3);t.exports=class{constructor(t,e){this._database=t,this._storename=e,this._store=new i.Store(this._database,this._storename)}saveSuperblock(t){return i.set("!root",t,this._store)}loadSuperblock(){return i.get("!root",this._store)}readFile(t){return i.get(t,this._store)}writeFile(t,e){return i.set(t,e,this._store)}unlink(t){return i.del(t,this._store)}wipe(){return i.clear(this._store)}close(){return i.close(this._store)}}},function(t,e){t.exports=class{constructor(t){this._url=t}loadSuperblock(){return fetch(this._url+"/.superblock.txt").then(t=>t.ok?t.text():null)}async readFile(t){const e=await fetch(this._url+t);if(200===e.status)return e.arrayBuffer();throw new Error("ENOENT")}async sizeFile(t){const e=await fetch(this._url+t,{method:"HEAD"});if(200===e.status)return e.headers.get("content-length");throw new Error("ENOENT")}}},function(t,e,r){const i=r(3),n=t=>new Promise(e=>setTimeout(e,t));t.exports=class{constructor(t,e){this._id=Math.random(),this._database=t,this._storename=e,this._store=new i.Store(this._database,this._storename),this._lock=null}async has({margin:t=2e3}={}){if(this._lock&&this._lock.holder===this._id){const e=Date.now();return this._lock.expires>e+t||await this.renew()}return!1}async renew({ttl:t=5e3}={}){let e;return await i.update("lock",r=>{const i=Date.now()+t;return e=r&&r.holder===this._id,this._lock=e?{holder:this._id,expires:i}:r,this._lock},this._store),e}async acquire({ttl:t=5e3}={}){let e,r,n;if(await i.update("lock",i=>{const o=Date.now(),s=o+t;return r=i&&i.expires(e=t||i&&i.holder===this._id,r=void 0===i,n=i&&i.holder!==this._id,this._lock=e?void 0:i,this._lock),this._store),await i.close(this._store),!e&&!t){if(r)throw new Error("Mutex double-freed");if(n)throw new Error("Mutex lost ownership")}return e}}},function(t,e){t.exports=class{constructor(t){this._id=Math.random(),this._database=t,this._has=!1,this._release=null}async has(){return this._has}async acquire(){return new Promise(t=>{navigator.locks.request(this._database+"_lock",{ifAvailable:!0},e=>(this._has=!!e,t(!!e),new Promise(t=>{this._release=t})))})}async wait({timeout:t=6e5}={}){return new Promise((e,r)=>{const i=new AbortController;setTimeout(()=>{i.abort(),r(new Error("Mutex timeout"))},t),navigator.locks.request(this._database+"_lock",{signal:i.signal},t=>(this._has=!!t,e(!!t),new Promise(t=>{this._release=t})))})}async release({force:t=!1}={}){this._has=!1,this._release?this._release():t&&navigator.locks.request(this._database+"_lock",{steal:!0},t=>!0)}}},function(t,e){const r="undefined"==typeof window?"worker":"main";t.exports=function(t){return performance.mark(t+" start"),console.log(`${r}: ${t}`),console.time(`${r}: ${t}`),function(){performance.mark(t+" end"),console.timeEnd(`${r}: ${t}`),performance.measure(""+t,t+" start",t+" end")}}}])})); \ No newline at end of file diff --git a/resources/js/worker.js b/resources/js/worker.js index fe041decf9e1..7067e66e1abb 100644 --- a/resources/js/worker.js +++ b/resources/js/worker.js @@ -1,6 +1,6 @@ importScripts( // Batched optimization - "./lightning-fs.min.js", + "./lightning-fs.min.js?v=0.0.2.3", // Fixed a bug "./magic_portal.js" ); diff --git a/src/main/frontend/fs.cljs b/src/main/frontend/fs.cljs index 414dc5e97746..3104e432e352 100644 --- a/src/main/frontend/fs.cljs +++ b/src/main/frontend/fs.cljs @@ -127,7 +127,7 @@ [repo old-path new-path] (let [new-path (gp-util/path-normalize new-path)] (cond - ; See https://github.com/isomorphic-git/lightning-fs/issues/41 + ; See https://github.com/isomorphic-git/lightning-fs/issues/41 (= old-path new-path) (p/resolved nil) @@ -187,7 +187,7 @@ (defn get-files "List all files in the directory, recursively. - + Wrap as {:path string :files []}, using relative path" [dir] (let [fs-record (get-native-backend)] diff --git a/yarn.lock b/yarn.lock index 54efbdbef055..1fdb56d27f70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -456,21 +456,6 @@ untildify "^4.0.0" wrap-ansi "^7.0.0" -"@isomorphic-git/idb-keyval@3.3.2": - version "3.3.2" - resolved "https://registry.npmjs.org/@isomorphic-git/idb-keyval/-/idb-keyval-3.3.2.tgz#c0509a6c5987d8a62efb3e47f2815bcc5eda2489" - integrity sha512-r8/AdpiS0/WJCNR/t/gsgL+M8NMVj/ek7s60uz3LmpCaTF2mEVlZJlB01ZzalgYzRLXwSPC92o+pdzjM7PN/pA== - -"@isomorphic-git/lightning-fs@^4.6.0": - version "4.6.0" - resolved "https://registry.npmjs.org/@isomorphic-git/lightning-fs/-/lightning-fs-4.6.0.tgz#a7f49784c121241a50cefba6198cff8d6e86eb20" - integrity sha512-tfon8f1h6LawjFI/d8lZPWRPTxmdvyTMbkT/j5yo6dB0hALhKw5D9JsdCcUu/D1pAcMMiU7GZFDsDGqylerr7g== - dependencies: - "@isomorphic-git/idb-keyval" "3.3.2" - isomorphic-textencoder "1.0.1" - just-debounce-it "1.1.0" - just-once "1.1.0" - "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -2930,11 +2915,6 @@ fast-sort@^2.2.0: resolved "https://registry.yarnpkg.com/fast-sort/-/fast-sort-2.2.0.tgz#20903763531fbcbb41c9df5ab1bf5f2cefc8476a" integrity sha512-W7zqnn2zsYoQA87FKmYtgOsbJohOrh7XrtZrCVHN5XZKqTBTv5UG+rSS3+iWbg/nepRQUOu+wnas8BwtK8kiCg== -fast-text-encoding@^1.0.0: - version "1.0.6" - resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" - integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== - fastdom@^1.0.9: version "1.0.11" resolved "https://registry.yarnpkg.com/fastdom/-/fastdom-1.0.11.tgz#f22984f9df6b9a6081e5ce2e49cfb5525daf198a" @@ -4186,13 +4166,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isomorphic-textencoder@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/isomorphic-textencoder/-/isomorphic-textencoder-1.0.1.tgz#38dcd3b4416d29cd33e274f64b99ae567cd15e83" - integrity sha512-676hESgHullDdHDsj469hr+7t3i/neBKU9J7q1T4RHaWwLAsaQnywC0D1dIUId0YZ+JtVrShzuBk1soo0+GVcQ== - dependencies: - fast-text-encoding "^1.0.0" - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4264,21 +4237,11 @@ jszip@3.8.0: readable-stream "~2.3.6" set-immediate-shim "~1.0.1" -just-debounce-it@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.1.0.tgz#8e92578effc155358a44f458c52ffbee66983bef" - integrity sha512-87Nnc0qZKgBZuhFZjYVjSraic0x7zwjhaTMrCKlj0QYKH6lh0KbFzVnfu6LHan03NO7J8ygjeBeD0epejn5Zcg== - just-debounce@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== -just-once@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/just-once/-/just-once-1.1.0.tgz#fe81a185ebaeeb0947a7e705bf01cb6808db0ad8" - integrity sha512-+rZVpl+6VyTilK7vB/svlMPil4pxqIJZkbnN7DKZTOzyXfun6ZiFeq2Pk4EtCEHZ0VU4EkdFzG8ZK5F3PErcDw== - katex@^0.16.7: version "0.16.8" resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.8.tgz#89b453f40e8557f423f31a1009e9298dd99d5ceb" From 46208a77539fb3ee628a6eb883a8269a2dfff812 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 26 Jul 2023 14:09:44 +0300 Subject: [PATCH 53/63] Revert "Revert "handle lightning-fs"" This reverts commit 840cb90ed5f0fc2704b80f975d08179050cee8b0. --- gulpfile.js | 3 ++- package.json | 1 + resources/js/lightning-fs.min.js | 8 ------- resources/js/worker.js | 2 +- src/main/frontend/fs.cljs | 4 ++-- yarn.lock | 37 ++++++++++++++++++++++++++++++++ 6 files changed, 43 insertions(+), 12 deletions(-) delete mode 100644 resources/js/lightning-fs.min.js diff --git a/gulpfile.js b/gulpfile.js index f732b977f533..ec7356be52af 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -63,7 +63,8 @@ const common = { 'node_modules/reveal.js/dist/reveal.js', 'node_modules/shepherd.js/dist/js/shepherd.min.js', 'node_modules/marked/marked.min.js', - 'node_modules/@highlightjs/cdn-assets/highlight.min.js' + 'node_modules/@highlightjs/cdn-assets/highlight.min.js', + 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/magic-portal/dist/index.umd.js', diff --git a/package.json b/package.json index ffe922cb660e..237c1e54a566 100644 --- a/package.json +++ b/package.json @@ -92,6 +92,7 @@ "@excalidraw/excalidraw": "0.12.0", "@highlightjs/cdn-assets": "10.4.1", "@hugotomazi/capacitor-navigation-bar": "^2.0.0", + "@isomorphic-git/lightning-fs": "^4.6.0", "@logseq/capacitor-file-sync": "0.0.32", "@logseq/diff-merge": "0.2.2", "@logseq/react-tweet-embed": "1.3.1-1", diff --git a/resources/js/lightning-fs.min.js b/resources/js/lightning-fs.min.js deleted file mode 100644 index 1b212da7ecb3..000000000000 --- a/resources/js/lightning-fs.min.js +++ /dev/null @@ -1,8 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.LightningFS=e():t.LightningFS=e()}(self,(function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(i,n,function(e){return t[e]}.bind(null,n));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=4)}([function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){function r(t){if(0===t.length)return".";let e=n(t);return e=e.reduce(o,[]),i(...e)}function i(...t){if(0===t.length)return"";let e=t.join("/");return e=e.replace(/\/{2,}/g,"/"),e}function n(t){if(0===t.length)return[];if("/"===t)return["/"];let e=t.split("/");return""===e[e.length-1]&&e.pop(),"/"===t[0]?e[0]="/":"."!==e[0]&&e.unshift("."),e}function o(t,e){if(0===t.length)return t.push(e),t;if("."===e)return t;if(".."===e){if(1===t.length){if("/"===t[0])throw new Error("Unable to normalize path - traverses above root directory");if("."===t[0])return t.push(e),t}return".."===t[t.length-1]?(t.push(".."),t):(t.pop(),t)}return t.push(e),t}t.exports={join:i,normalize:r,split:n,basename:function(t){if("/"===t)throw new Error(`Cannot get basename of "${t}"`);const e=t.lastIndexOf("/");return-1===e?t:t.slice(e+1)},dirname:function(t){const e=t.lastIndexOf("/");if(-1===e)throw new Error(`Cannot get dirname of "${t}"`);return 0===e?"/":t.slice(0,e)},resolve:function(...t){let e="";for(let n of t)e=n.startsWith("/")?n:r(i(e,n));return e}}},function(t,e){function r(t){return class extends Error{constructor(...e){super(...e),this.code=t,this.message?this.message=t+": "+this.message:this.message=t}}}const i=r("EEXIST"),n=r("ENOENT"),o=r("ENOTDIR"),s=r("ENOTEMPTY"),a=r("ETIMEDOUT");t.exports={EEXIST:i,ENOENT:n,ENOTDIR:o,ENOTEMPTY:s,ETIMEDOUT:a}},function(t,e,r){"use strict";r.r(e),r.d(e,"Store",(function(){return i})),r.d(e,"get",(function(){return a})),r.d(e,"set",(function(){return u})),r.d(e,"update",(function(){return c})),r.d(e,"del",(function(){return f})),r.d(e,"clear",(function(){return l})),r.d(e,"keys",(function(){return p})),r.d(e,"close",(function(){return d}));class i{constructor(t="keyval-store",e="keyval"){this.storeName=e,this._dbName=t,this._storeName=e,this.id=`dbName:${t};;storeName:${e}`,this._init()}_init(){this._dbp||(this._dbp=new Promise((t,e)=>{const r=indexedDB.open(this._dbName);r.onerror=()=>e(r.error),r.onsuccess=()=>t(r.result),r.onupgradeneeded=()=>{r.result.createObjectStore(this._storeName)}}))}_withIDBStore(t,e){return this._init(),this._dbp.then(r=>new Promise((i,n)=>{const o=r.transaction(this.storeName,t);o.oncomplete=()=>i(),o.onabort=o.onerror=()=>n(o.error),e(o.objectStore(this.storeName))}))}_close(){return this._init(),this._dbp.then(t=>{t.close(),this._dbp=void 0})}}class n{constructor(t){this.executor=t,this.items=[]}async process(){const t=this.items;this.items=[],await this.executor(t.map(({item:t})=>t)),t.map(({onProcessed:t})=>t()),this.items.length?this.ongoing=this.process():this.ongoing=void 0}async queue(t){const e=new Promise(e=>this.items.push({item:t,onProcessed:e}));return this.ongoing||(this.ongoing=this.process()),e}}let o;function s(){return o||(o=new i),o}function a(t,e=s()){let r;return e._withIDBStore("readwrite",e=>{r=e.get(t)}).then(()=>r.result)}const h={};function u(t,e,r=s()){return h[r.id]||(h[r.id]=new n(t=>r._withIDBStore("readwrite",e=>{for(const r of t)e.put(r.value,r.key)}))),h[r.id].queue({key:t,value:e})}function c(t,e,r=s()){return r._withIDBStore("readwrite",r=>{const i=r.get(t);i.onsuccess=()=>{r.put(e(i.result),t)}})}function f(t,e=s()){return e._withIDBStore("readwrite",e=>{e.delete(t)})}function l(t=s()){return t._withIDBStore("readwrite",t=>{t.clear()})}function p(t=s()){const e=[];return t._withIDBStore("readwrite",t=>{(t.openKeyCursor||t.openCursor).call(t).onsuccess=function(){this.result&&(e.push(this.result.key),this.result.continue())}}).then(()=>e)}function d(t=s()){return t._close()}},function(t,e,r){const i=r(5),n=r(6);function o(t,e){"function"==typeof t&&(e=t);return[(...t)=>e(null,...t),e=i(e)]}t.exports=class{constructor(...t){this.promises=new n(...t),this.init=this.init.bind(this),this.readFile=this.readFile.bind(this),this.writeFile=this.writeFile.bind(this),this.unlink=this.unlink.bind(this),this.readdir=this.readdir.bind(this),this.mkdir=this.mkdir.bind(this),this.rmdir=this.rmdir.bind(this),this.rename=this.rename.bind(this),this.stat=this.stat.bind(this),this.lstat=this.lstat.bind(this),this.readlink=this.readlink.bind(this),this.symlink=this.symlink.bind(this),this.backFile=this.backFile.bind(this),this.du=this.du.bind(this)}init(t,e){this.promises.init(t,e)}readFile(t,e,r){const[i,n]=o(e,r);this.promises.readFile(t,e).then(i).catch(n)}writeFile(t,e,r,i){const[n,s]=o(r,i);this.promises.writeFile(t,e,r).then(n).catch(s)}unlink(t,e,r){const[i,n]=o(e,r);this.promises.unlink(t,e).then(i).catch(n)}readdir(t,e,r){const[i,n]=o(e,r);this.promises.readdir(t,e).then(i).catch(n)}mkdir(t,e,r){const[i,n]=o(e,r);this.promises.mkdir(t,e).then(i).catch(n)}rmdir(t,e,r){const[i,n]=o(e,r);this.promises.rmdir(t,e).then(i).catch(n)}rename(t,e,r){const[i,n]=o(r);this.promises.rename(t,e).then(i).catch(n)}stat(t,e,r){const[i,n]=o(e,r);this.promises.stat(t).then(i).catch(n)}lstat(t,e,r){const[i,n]=o(e,r);this.promises.lstat(t).then(i).catch(n)}readlink(t,e,r){const[i,n]=o(e,r);this.promises.readlink(t).then(i).catch(n)}symlink(t,e,r){const[i,n]=o(r);this.promises.symlink(t,e).then(i).catch(n)}backFile(t,e,r){const[i,n]=o(e,r);this.promises.backFile(t,e).then(i).catch(n)}du(t,e){const[r,i]=o(e);this.promises.du(t).then(r).catch(i)}}},function(t,e){t.exports=function(t){var e,r;if("function"!=typeof t)throw new Error("expected a function but got "+t);return function(){return e?r:(e=!0,r=t.apply(this,arguments))}}},function(t,e,r){const{encode:i,decode:n}=r(7),o=r(13),s=r(14),a=r(15),{ENOENT:h,ENOTEMPTY:u,ETIMEDOUT:c}=r(2),f=r(16),l=r(17),p=r(18),d=r(19),w=r(1);r(20);function _(t,e){return void 0!==e&&"function"!=typeof e||(e={}),"string"==typeof e&&(e={encoding:e}),[t=w.normalize(t),e]}function y(t,e){return[w.normalize(t),w.normalize(e)]}t.exports=class{constructor(t,e){this.init=this.init.bind(this),this.readFile=this._wrap(this.readFile,!1),this.writeFile=this._wrap(this.writeFile,!0),this.unlink=this._wrap(this.unlink,!0),this.readdir=this._wrap(this.readdir,!1),this.mkdir=this._wrap(this.mkdir,!0),this.rmdir=this._wrap(this.rmdir,!0),this.rename=this._wrap(this.rename,!0),this.stat=this._wrap(this.stat,!1),this.lstat=this._wrap(this.lstat,!1),this.readlink=this._wrap(this.readlink,!1),this.symlink=this._wrap(this.symlink,!0),this.backFile=this._wrap(this.backFile,!0),this.du=this._wrap(this.du,!1),this.saveSuperblock=o(()=>{this._saveSuperblock()},500),this._deactivationPromise=null,this._deactivationTimeout=null,this._activationPromise=null,this._operations=new Set,t&&this.init(t,e)}async init(...t){return this._initPromiseResolve&&await this._initPromise,this._initPromise=this._init(...t),this._initPromise}async _init(t,{wipe:e,url:r,urlauto:i,fileDbName:n=t,fileStoreName:o=t+"_files",lockDbName:s=t+"_lock",lockStoreName:h=t+"_lock",defer:u=!1}={}){await this._gracefulShutdown(),this._name=t,this._idb=new f(n,o),this._mutex=navigator.locks?new d(t):new p(s,h),this._cache=new a(t),this._opts={wipe:e,url:r},this._needsWipe=!!e,r&&(this._http=new l(r),this._urlauto=!!i),this._initPromiseResolve&&(this._initPromiseResolve(),this._initPromiseResolve=null),u||this.stat("/")}async _gracefulShutdown(){this._operations.size>0&&(this._isShuttingDown=!0,await new Promise(t=>this._gracefulShutdownResolve=t),this._isShuttingDown=!1,this._gracefulShutdownResolve=null)}_wrap(t,e){return async(...r)=>{let i={name:t.name,args:r};this._operations.add(i);try{return await this._activate(),await t.apply(this,r)}finally{this._operations.delete(i),e&&this.saveSuperblock(),0===this._operations.size&&(this._deactivationTimeout||clearTimeout(this._deactivationTimeout),this._deactivationTimeout=setTimeout(this._deactivate.bind(this),500))}}}async _activate(){if(this._initPromise||console.warn(new Error(`Attempted to use LightningFS ${this._name} before it was initialized.`)),await this._initPromise,this._deactivationTimeout&&(clearTimeout(this._deactivationTimeout),this._deactivationTimeout=null),this._deactivationPromise&&await this._deactivationPromise,this._deactivationPromise=null,this._activationPromise||(this._activationPromise=this.__activate()),await this._activationPromise,!await this._mutex.has())throw new c}async __activate(){if(this._cache.activated)return;this._needsWipe&&(this._needsWipe=!1,await this._idb.wipe(),await this._mutex.release({force:!0})),await this._mutex.has()||await this._mutex.wait();const t=await this._idb.loadSuperblock();if(t)this._cache.activate(t);else if(this._http){const t=await this._http.loadSuperblock();this._cache.activate(t),await this._saveSuperblock()}else this._cache.activate()}async _deactivate(){return this._activationPromise&&await this._activationPromise,this._deactivationPromise||(this._deactivationPromise=this.__deactivate()),this._activationPromise=null,this._gracefulShutdownResolve&&this._gracefulShutdownResolve(),this._deactivationPromise}async __deactivate(){await this._mutex.has()&&await this._saveSuperblock(),this._cache.deactivate();try{await this._mutex.release()}catch(t){console.log(t)}await this._idb.close()}async _saveSuperblock(){this._cache.activated&&(this._lastSavedAt=Date.now(),await this._idb.saveSuperblock(this._cache._root))}async _writeStat(t,e,r){let i=w.split(w.dirname(t)),n=i.shift();for(let t of i){n=w.join(n,t);try{this._cache.mkdir(n,{mode:511})}catch(t){}}return this._cache.writeStat(t,e,r)}async readFile(t,e){[t,e]=_(t,e);const{encoding:r}=e;if(r&&"utf8"!==r)throw new Error('Only "utf8" encoding is supported in readFile');let i=null,o=null;try{o=this._cache.stat(t),i=await this._idb.readFile(o.ino)}catch(t){if(!this._urlauto)throw t}if(!i&&this._http){let e=this._cache.lstat(t);for(;"symlink"===e.type;)t=w.resolve(w.dirname(t),e.target),e=this._cache.lstat(t);i=await this._http.readFile(t)}if(i&&(o&&o.size==i.byteLength||(o=await this._writeStat(t,i.byteLength,{mode:o?o.mode:438}),this.saveSuperblock()),"utf8"===r&&(i=n(i))),!o)throw new h(t);return i}async writeFile(t,e,r){[t,r]=_(t,r);const{mode:n,encoding:o="utf8"}=r;if("string"==typeof e){if("utf8"!==o)throw new Error('Only "utf8" encoding is supported in writeFile');e=i(e)}const s=await this._cache.writeStat(t,e.byteLength,{mode:n});return await this._idb.writeFile(s.ino,e),null}async unlink(t,e){[t,e]=_(t,e);const r=this._cache.lstat(t);return this._cache.unlink(t),"symlink"!==r.type&&await this._idb.unlink(r.ino),null}async readdir(t,e){return[t,e]=_(t,e),this._cache.readdir(t)}async mkdir(t,e){[t,e]=_(t,e);const{mode:r=511}=e;return await this._cache.mkdir(t,{mode:r}),null}async rmdir(t,e){if([t,e]=_(t,e),"/"===t)throw new u;return this._cache.rmdir(t),null}async rename(t,e){return[t,e]=y(t,e),this._cache.rename(t,e),null}async stat(t,e){[t,e]=_(t,e);const r=this._cache.stat(t);return new s(r)}async lstat(t,e){[t,e]=_(t,e);let r=this._cache.lstat(t);return new s(r)}async readlink(t,e){return[t,e]=_(t,e),this._cache.readlink(t)}async symlink(t,e){return[t,e]=y(t,e),this._cache.symlink(t,e),null}async backFile(t,e){[t,e]=_(t,e);let r=await this._http.sizeFile(t);return await this._writeStat(t,r,e),null}async du(t){return this._cache.du(t)}}},function(t,e,r){r(8),t.exports={encode:t=>(new TextEncoder).encode(t),decode:t=>(new TextDecoder).decode(t)}},function(t,e,r){(function(t,e){!function(t){function r(){}function i(t,e){if(t=void 0===t?"utf-8":t,e=void 0===e?{fatal:!1}:e,-1===o.indexOf(t.toLowerCase()))throw new RangeError("Failed to construct 'TextDecoder': The encoding label provided ('"+t+"') is invalid.");if(e.fatal)throw Error("Failed to construct 'TextDecoder': the 'fatal' option is unsupported.")}function n(t){for(var e=0,r=Math.min(65536,t.length+1),i=new Uint16Array(r),n=[],o=0;;){var s=e=r-1){if(n.push(String.fromCharCode.apply(null,i.subarray(0,o))),!s)return n.join("");t=t.subarray(e),o=e=0}if(0==(128&(s=t[e++])))i[o++]=s;else if(192==(224&s)){var a=63&t[e++];i[o++]=(31&s)<<6|a}else if(224==(240&s)){a=63&t[e++];var h=63&t[e++];i[o++]=(31&s)<<12|a<<6|h}else if(240==(248&s)){65535<(s=(7&s)<<18|(a=63&t[e++])<<12|(h=63&t[e++])<<6|63&t[e++])&&(s-=65536,i[o++]=s>>>10&1023|55296,s=56320|1023&s),i[o++]=s}}}if(t.TextEncoder&&t.TextDecoder)return!1;var o=["utf-8","utf8","unicode-1-1-utf-8"];Object.defineProperty(r.prototype,"encoding",{value:"utf-8"}),r.prototype.encode=function(t,e){if((e=void 0===e?{stream:!1}:e).stream)throw Error("Failed to encode: the 'stream' option is unsupported.");e=0;for(var r=t.length,i=0,n=Math.max(32,r+(r>>>1)+7),o=new Uint8Array(n>>>3<<3);e=s){if(e=s)continue}if(i+4>o.length&&(n+=8,n=(n*=1+e/t.length*2)>>>3<<3,(a=new Uint8Array(n)).set(o),o=a),0==(4294967168&s))o[i++]=s;else{if(0==(4294965248&s))o[i++]=s>>>6&31|192;else if(0==(4294901760&s))o[i++]=s>>>12&15|224,o[i++]=s>>>6&63|128;else{if(0!=(4292870144&s))continue;o[i++]=s>>>18&7|240,o[i++]=s>>>12&63|128,o[i++]=s>>>6&63|128}o[i++]=63&s|128}}return o.slice?o.slice(0,i):o.subarray(0,i)},Object.defineProperty(i.prototype,"encoding",{value:"utf-8"}),Object.defineProperty(i.prototype,"fatal",{value:!1}),Object.defineProperty(i.prototype,"ignoreBOM",{value:!1});var s=n;"function"==typeof e&&e.from?s=function(t){return e.from(t.buffer,t.byteOffset,t.byteLength).toString("utf-8")}:"function"==typeof Blob&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&(s=function(t){var e=URL.createObjectURL(new Blob([t],{type:"text/plain;charset=UTF-8"}));try{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(),r.responseText}catch(e){return n(t)}finally{URL.revokeObjectURL(e)}}),i.prototype.decode=function(t,e){if((e=void 0===e?{stream:!1}:e).stream)throw Error("Failed to decode: the 'stream' option is unsupported.");return t=t instanceof Uint8Array?t:t.buffer instanceof ArrayBuffer?new Uint8Array(t.buffer):new Uint8Array(t),s(t)},t.TextEncoder=r,t.TextDecoder=i}("undefined"!=typeof window?window:void 0!==t?t:this)}).call(this,r(0),r(9).Buffer)},function(t,e,r){"use strict";(function(t){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var i=r(10),n=r(11),o=r(12);function s(){return h.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function d(t,e){if(h.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return C(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return j(t).length;default:if(i)return C(t).length;e=(""+e).toLowerCase(),i=!0}}function w(t,e,r){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return x(this,e,r);case"utf8":case"utf-8":return P(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return S(this,e,r);case"base64":return A(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function _(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function y(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:m(t,e,r,i,n);if("number"==typeof e)return e&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function m(t,e,r,i,n){var o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){var c=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){for(var f=!0,l=0;ln&&(i=n):i=n;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");i>o/2&&(i=o/2);for(var s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function A(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function P(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n239?4:u>223?3:u>191?2:1;if(n+f<=r)switch(f){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[n+1]))&&(h=(31&u)<<6|63&o)>127&&(c=h);break;case 3:o=t[n+1],s=t[n+2],128==(192&o)&&128==(192&s)&&(h=(15&u)<<12|(63&o)<<6|63&s)>2047&&(h<55296||h>57343)&&(c=h);break;case 4:o=t[n+1],s=t[n+2],a=t[n+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(h=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&h<1114112&&(c=h)}null===c?(c=65533,f=1):c>65535&&(c-=65536,i.push(c>>>10&1023|55296),c=56320|1023&c),i.push(c),n+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r="",i=0;for(;i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},h.prototype.compare=function(t,e,r,i,n){if(!h.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),u=this.slice(i,n),c=t.slice(e,r),f=0;fn)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return g(this,t,e,r);case"utf8":case"utf-8":return v(this,t,e,r);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return E(this,t,e,r);case"base64":return k(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function R(t,e,r){var i="";r=Math.min(t.length,r);for(var n=e;ni)&&(r=i);for(var n="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function O(t,e,r,i){e<0&&(e=65535+e+1);for(var n=0,o=Math.min(t.length-r,2);n>>8*(i?n:1-n)}function I(t,e,r,i){e<0&&(e=4294967295+e+1);for(var n=0,o=Math.min(t.length-r,4);n>>8*(i?n:3-n)&255}function D(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Y(t,e,r,i,o){return o||D(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return o||D(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){var r,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUInt8=function(t,e){return e||U(t,1,this.length),this[t]},h.prototype.readUInt16LE=function(t,e){return e||U(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUInt16BE=function(t,e){return e||U(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUInt32LE=function(t,e){return e||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUInt32BE=function(t,e){return e||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||U(t,e,this.length);for(var i=this[t],n=1,o=0;++o=(n*=128)&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||U(t,e,this.length);for(var i=e,n=1,o=this[t+--i];i>0&&(n*=256);)o+=this[t+--i]*n;return o>=(n*=128)&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return e||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){e||U(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){e||U(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return e||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return e||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readFloatLE=function(t,e){return e||U(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return e||U(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return e||U(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return e||U(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUIntLE=function(t,e,r,i){(t=+t,e|=0,r|=0,i)||M(this,t,e,r,Math.pow(2,8*r)-1,0);var n=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,255,0),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):I(this,t,e,!0),e+4},h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);M(this,t,e,r,n-1,-n)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);M(this,t,e,r,n-1,-n)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,127,-128),h.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):I(this,t,e,!0),e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),h.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},h.prototype.writeFloatLE=function(t,e,r){return Y(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return Y(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e=0;--n)t[n+e]=this[n+r];else if(o<1e3||!h.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function j(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(L,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,r,i){for(var n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}}).call(this,r(0))},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,i=u(t),s=i[0],a=i[1],h=new o(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),c=0,f=a>0?s-4:s;for(r=0;r>16&255,h[c++]=e>>8&255,h[c++]=255&e;2===a&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,h[c++]=255&e);1===a&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,h[c++]=e>>8&255,h[c++]=255&e);return h},e.fromByteArray=function(t){for(var e,r=t.length,n=r%3,o=[],s=0,a=r-n;sa?a:s+16383));1===n?(e=t[r-1],o.push(i[e>>2]+i[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],o.push(i[e>>10]+i[e>>4&63]+i[e<<2&63]+"="));return o.join("")};for(var i=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,h=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,r){for(var n,o,s=[],a=e;a>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,c=-7,f=r?n-1:0,l=r?-1:1,p=t[e+f];for(f+=l,o=p&(1<<-c)-1,p>>=-c,c+=a;c>0;o=256*o+t[e+f],f+=l,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=256*s+t[e+f],f+=l,c-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,i),o-=u}return(p?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,c=(1<>1,l=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,p=i?0:o-1,d=i?1:-1,w=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+f>=1?l/h:l*Math.pow(2,1-f))*h>=2&&(s++,h/=2),s+f>=c?(a=0,s=c):s+f>=1?(a=(e*h-1)*Math.pow(2,n),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,n),s=0));n>=8;t[r+p]=255&a,p+=d,a/=256,n-=8);for(s=s<0;t[r+p]=255&s,p+=d,s/=256,u-=8);t[r+p-d]|=128*w}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e){t.exports=function(t,e,r){var i;return function(){if(!e)return t.apply(this,arguments);var n=this,o=arguments,s=r&&!i;return clearTimeout(i),i=setTimeout((function(){if(i=null,!s)return t.apply(n,o)}),e),s?t.apply(this,arguments):void 0}}},function(t,e){t.exports=class{constructor(t){this.type=t.type,this.mode=t.mode,this.size=t.size,this.ino=t.ino,this.mtimeMs=t.mtimeMs,this.ctimeMs=t.ctimeMs||t.mtimeMs,this.uid=1,this.gid=1,this.dev=1}isFile(){return"file"===this.type}isDirectory(){return"dir"===this.type}isSymbolicLink(){return"symlink"===this.type}}},function(t,e,r){const i=r(1),{EEXIST:n,ENOENT:o,ENOTDIR:s,ENOTEMPTY:a}=r(2);t.exports=class{constructor(){}_makeRoot(t=new Map){return t.set(0,{mode:511,type:"dir",size:0,ino:0,mtimeMs:Date.now()}),t}activate(t=null){this._root=null===t?new Map([["/",this._makeRoot()]]):"string"==typeof t?new Map([["/",this._makeRoot(this.parse(t))]]):t}get activated(){return!!this._root}deactivate(){this._root=void 0}size(){return this._countInodes(this._root.get("/"))-1}_countInodes(t){let e=1;for(let[r,i]of t)0!==r&&(e+=this._countInodes(i));return e}autoinc(){return this._maxInode(this._root.get("/"))+1}_maxInode(t){let e=t.get(0).ino;for(let[r,i]of t)0!==r&&(e=Math.max(e,this._maxInode(i)));return e}print(t=this._root.get("/")){let e="";const r=(t,i)=>{for(let[n,o]of t){if(0===n)continue;let t=o.get(0),s=t.mode.toString(8);e+=`${"\t".repeat(i)}${n}\t${s}`,"file"===t.type?e+=`\t${t.size}\t${t.mtimeMs}\n`:(e+="\n",r(o,i+1))}};return r(t,0),e}parse(t){let e=0;function r(t){const r=++e,i=1===t.length?"dir":"file";let[n,o,s]=t;return n=parseInt(n,8),o=o?parseInt(o):0,s=s?parseInt(s):Date.now(),new Map([[0,{mode:n,type:i,size:o,mtimeMs:s,ino:r}]])}let i=t.trim().split("\n"),n=this._makeRoot(),o=[{indent:-1,node:n},{indent:0,node:null}];for(let t of i){let e=t.match(/^\t*/)[0].length;t=t.slice(e);let[i,...n]=t.split("\t"),s=r(n);if(e<=o[o.length-1].indent)for(;e<=o[o.length-1].indent;)o.pop();o.push({indent:e,node:s}),o[o.length-2].node.set(i,s)}return n}_lookup(t,e=!0){let r=this._root,n="/",s=i.split(t);for(let a=0;a1)throw new a;let r=this._lookup(i.dirname(t)),n=i.basename(t);r.delete(n)}readdir(t){let e=this._lookup(t);if("dir"!==e.get(0).type)throw new s;return[...e.keys()].filter(t=>"string"==typeof t)}writeStat(t,e,{mode:r}){let n;try{let e=this.stat(t);null==r&&(r=e.mode),n=e.ino}catch(t){}null==r&&(r=438),null==n&&(n=this.autoinc());let o=this._lookup(i.dirname(t)),s=i.basename(t),a={mode:r,type:"file",size:e,mtimeMs:Date.now(),ino:n},h=new Map;return h.set(0,a),o.set(s,h),a}unlink(t){let e=this._lookup(i.dirname(t)),r=i.basename(t);e.delete(r)}rename(t,e){let r=i.basename(e),n=this._lookup(t);this._lookup(i.dirname(e)).set(r,n),this.unlink(t)}stat(t){return this._lookup(t).get(0)}lstat(t){return this._lookup(t,!1).get(0)}readlink(t){return this._lookup(t,!1).get(0).target}symlink(t,e){let r,n;try{let t=this.stat(e);null===n&&(n=t.mode),r=t.ino}catch(t){}null==n&&(n=40960),null==r&&(r=this.autoinc());let o=this._lookup(i.dirname(e)),s=i.basename(e),a={mode:n,type:"symlink",target:t,size:0,mtimeMs:Date.now(),ino:r},h=new Map;return h.set(0,a),o.set(s,h),a}_du(t){let e=0;for(const[r,i]of t.entries())e+=0===r?i.size:this._du(i);return e}du(t){let e=this._lookup(t);return this._du(e)}}},function(t,e,r){const i=r(3);t.exports=class{constructor(t,e){this._database=t,this._storename=e,this._store=new i.Store(this._database,this._storename)}saveSuperblock(t){return i.set("!root",t,this._store)}loadSuperblock(){return i.get("!root",this._store)}readFile(t){return i.get(t,this._store)}writeFile(t,e){return i.set(t,e,this._store)}unlink(t){return i.del(t,this._store)}wipe(){return i.clear(this._store)}close(){return i.close(this._store)}}},function(t,e){t.exports=class{constructor(t){this._url=t}loadSuperblock(){return fetch(this._url+"/.superblock.txt").then(t=>t.ok?t.text():null)}async readFile(t){const e=await fetch(this._url+t);if(200===e.status)return e.arrayBuffer();throw new Error("ENOENT")}async sizeFile(t){const e=await fetch(this._url+t,{method:"HEAD"});if(200===e.status)return e.headers.get("content-length");throw new Error("ENOENT")}}},function(t,e,r){const i=r(3),n=t=>new Promise(e=>setTimeout(e,t));t.exports=class{constructor(t,e){this._id=Math.random(),this._database=t,this._storename=e,this._store=new i.Store(this._database,this._storename),this._lock=null}async has({margin:t=2e3}={}){if(this._lock&&this._lock.holder===this._id){const e=Date.now();return this._lock.expires>e+t||await this.renew()}return!1}async renew({ttl:t=5e3}={}){let e;return await i.update("lock",r=>{const i=Date.now()+t;return e=r&&r.holder===this._id,this._lock=e?{holder:this._id,expires:i}:r,this._lock},this._store),e}async acquire({ttl:t=5e3}={}){let e,r,n;if(await i.update("lock",i=>{const o=Date.now(),s=o+t;return r=i&&i.expires(e=t||i&&i.holder===this._id,r=void 0===i,n=i&&i.holder!==this._id,this._lock=e?void 0:i,this._lock),this._store),await i.close(this._store),!e&&!t){if(r)throw new Error("Mutex double-freed");if(n)throw new Error("Mutex lost ownership")}return e}}},function(t,e){t.exports=class{constructor(t){this._id=Math.random(),this._database=t,this._has=!1,this._release=null}async has(){return this._has}async acquire(){return new Promise(t=>{navigator.locks.request(this._database+"_lock",{ifAvailable:!0},e=>(this._has=!!e,t(!!e),new Promise(t=>{this._release=t})))})}async wait({timeout:t=6e5}={}){return new Promise((e,r)=>{const i=new AbortController;setTimeout(()=>{i.abort(),r(new Error("Mutex timeout"))},t),navigator.locks.request(this._database+"_lock",{signal:i.signal},t=>(this._has=!!t,e(!!t),new Promise(t=>{this._release=t})))})}async release({force:t=!1}={}){this._has=!1,this._release?this._release():t&&navigator.locks.request(this._database+"_lock",{steal:!0},t=>!0)}}},function(t,e){const r="undefined"==typeof window?"worker":"main";t.exports=function(t){return performance.mark(t+" start"),console.log(`${r}: ${t}`),console.time(`${r}: ${t}`),function(){performance.mark(t+" end"),console.timeEnd(`${r}: ${t}`),performance.measure(""+t,t+" start",t+" end")}}}])})); \ No newline at end of file diff --git a/resources/js/worker.js b/resources/js/worker.js index 7067e66e1abb..fe041decf9e1 100644 --- a/resources/js/worker.js +++ b/resources/js/worker.js @@ -1,6 +1,6 @@ importScripts( // Batched optimization - "./lightning-fs.min.js?v=0.0.2.3", + "./lightning-fs.min.js", // Fixed a bug "./magic_portal.js" ); diff --git a/src/main/frontend/fs.cljs b/src/main/frontend/fs.cljs index 3104e432e352..414dc5e97746 100644 --- a/src/main/frontend/fs.cljs +++ b/src/main/frontend/fs.cljs @@ -127,7 +127,7 @@ [repo old-path new-path] (let [new-path (gp-util/path-normalize new-path)] (cond - ; See https://github.com/isomorphic-git/lightning-fs/issues/41 + ; See https://github.com/isomorphic-git/lightning-fs/issues/41 (= old-path new-path) (p/resolved nil) @@ -187,7 +187,7 @@ (defn get-files "List all files in the directory, recursively. - + Wrap as {:path string :files []}, using relative path" [dir] (let [fs-record (get-native-backend)] diff --git a/yarn.lock b/yarn.lock index 1fdb56d27f70..54efbdbef055 100644 --- a/yarn.lock +++ b/yarn.lock @@ -456,6 +456,21 @@ untildify "^4.0.0" wrap-ansi "^7.0.0" +"@isomorphic-git/idb-keyval@3.3.2": + version "3.3.2" + resolved "https://registry.npmjs.org/@isomorphic-git/idb-keyval/-/idb-keyval-3.3.2.tgz#c0509a6c5987d8a62efb3e47f2815bcc5eda2489" + integrity sha512-r8/AdpiS0/WJCNR/t/gsgL+M8NMVj/ek7s60uz3LmpCaTF2mEVlZJlB01ZzalgYzRLXwSPC92o+pdzjM7PN/pA== + +"@isomorphic-git/lightning-fs@^4.6.0": + version "4.6.0" + resolved "https://registry.npmjs.org/@isomorphic-git/lightning-fs/-/lightning-fs-4.6.0.tgz#a7f49784c121241a50cefba6198cff8d6e86eb20" + integrity sha512-tfon8f1h6LawjFI/d8lZPWRPTxmdvyTMbkT/j5yo6dB0hALhKw5D9JsdCcUu/D1pAcMMiU7GZFDsDGqylerr7g== + dependencies: + "@isomorphic-git/idb-keyval" "3.3.2" + isomorphic-textencoder "1.0.1" + just-debounce-it "1.1.0" + just-once "1.1.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -2915,6 +2930,11 @@ fast-sort@^2.2.0: resolved "https://registry.yarnpkg.com/fast-sort/-/fast-sort-2.2.0.tgz#20903763531fbcbb41c9df5ab1bf5f2cefc8476a" integrity sha512-W7zqnn2zsYoQA87FKmYtgOsbJohOrh7XrtZrCVHN5XZKqTBTv5UG+rSS3+iWbg/nepRQUOu+wnas8BwtK8kiCg== +fast-text-encoding@^1.0.0: + version "1.0.6" + resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" + integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== + fastdom@^1.0.9: version "1.0.11" resolved "https://registry.yarnpkg.com/fastdom/-/fastdom-1.0.11.tgz#f22984f9df6b9a6081e5ce2e49cfb5525daf198a" @@ -4166,6 +4186,13 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-textencoder@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/isomorphic-textencoder/-/isomorphic-textencoder-1.0.1.tgz#38dcd3b4416d29cd33e274f64b99ae567cd15e83" + integrity sha512-676hESgHullDdHDsj469hr+7t3i/neBKU9J7q1T4RHaWwLAsaQnywC0D1dIUId0YZ+JtVrShzuBk1soo0+GVcQ== + dependencies: + fast-text-encoding "^1.0.0" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4237,11 +4264,21 @@ jszip@3.8.0: readable-stream "~2.3.6" set-immediate-shim "~1.0.1" +just-debounce-it@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-1.1.0.tgz#8e92578effc155358a44f458c52ffbee66983bef" + integrity sha512-87Nnc0qZKgBZuhFZjYVjSraic0x7zwjhaTMrCKlj0QYKH6lh0KbFzVnfu6LHan03NO7J8ygjeBeD0epejn5Zcg== + just-debounce@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== +just-once@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/just-once/-/just-once-1.1.0.tgz#fe81a185ebaeeb0947a7e705bf01cb6808db0ad8" + integrity sha512-+rZVpl+6VyTilK7vB/svlMPil4pxqIJZkbnN7DKZTOzyXfun6ZiFeq2Pk4EtCEHZ0VU4EkdFzG8ZK5F3PErcDw== + katex@^0.16.7: version "0.16.8" resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.8.tgz#89b453f40e8557f423f31a1009e9298dd99d5ceb" From a19c5feb853883b130385a88de434809fbc657c2 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 26 Jul 2023 14:09:58 +0300 Subject: [PATCH 54/63] Revert "handle magic-portal" This reverts commit 8146430b0fc88b600a8f93164e0b39d05353bbb6. --- gulpfile.js | 4 ---- package.json | 2 -- resources/js/magic_portal.js | 1 + yarn.lock | 10 ---------- 4 files changed, 1 insertion(+), 16 deletions(-) create mode 100644 resources/js/magic_portal.js diff --git a/gulpfile.js b/gulpfile.js index ec7356be52af..7ed02998c9ca 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,7 +3,6 @@ const utils = require('util') const cp = require('child_process') const exec = utils.promisify(cp.exec) const path = require('path') -const rename = require('gulp-rename') const gulp = require('gulp') const cleanCSS = require('gulp-clean-css') const del = require('del') @@ -66,9 +65,6 @@ const common = { 'node_modules/@highlightjs/cdn-assets/highlight.min.js', 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), - () => gulp.src([ - 'node_modules/magic-portal/dist/index.umd.js', - ]).pipe(rename('magic_portal.js')).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', 'node_modules/inter-ui/inter.css', diff --git a/package.json b/package.json index 237c1e54a566..1ebc3a9f4d62 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "del": "^6.0.0", "gulp": "^4.0.2", "gulp-clean-css": "^4.3.0", - "gulp-rename": "^2.0.0", "ip": "1.1.8", "npm-run-all": "^4.1.5", "playwright": "=1.31.0", @@ -123,7 +122,6 @@ "interactjs": "^1.10.17", "jszip": "3.8.0", "katex": "^0.16.7", - "magic-portal": "^1.0.0", "marked": "^5.1.2", "mldoc": "1.5.7", "path": "0.12.7", diff --git a/resources/js/magic_portal.js b/resources/js/magic_portal.js new file mode 100644 index 000000000000..e1660ea65413 --- /dev/null +++ b/resources/js/magic_portal.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.MagicPortal=t()}(this,function(){var e=function(e){var t=this;this.rpc_counter=0,this.channel=e,this.foreign=new Map,this.local=new Map,this.calls=new Map,this.queue=[],this.connectionEstablished=!1,this.channel.addEventListener("message",function(e){var n=e.data;if(n&&"object"==typeof n)switch(n.type){case"MP_INIT":return t.onInit(n);case"MP_SET":return t.onSet(n);case"MP_CALL":return t.onCall(n);case"MP_RETURN":return t.onReturn(n)}}),this.channel.postMessage({type:"MP_INIT",id:1,reply:!0})};e.prototype.onInit=function(e){this.connectionEstablished=!0;var t=this.queue;this.queue=[];for(var n=0,o=t;n Date: Wed, 26 Jul 2023 16:28:50 +0300 Subject: [PATCH 55/63] Revert "Revert "handle magic-portal"" This reverts commit 9011fa7f9e54ae8a3b587da6d61affa31e3cd727. --- gulpfile.js | 4 ++++ package.json | 2 ++ resources/js/magic_portal.js | 1 - yarn.lock | 10 ++++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 resources/js/magic_portal.js diff --git a/gulpfile.js b/gulpfile.js index 7ed02998c9ca..ec7356be52af 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,6 +3,7 @@ const utils = require('util') const cp = require('child_process') const exec = utils.promisify(cp.exec) const path = require('path') +const rename = require('gulp-rename') const gulp = require('gulp') const cleanCSS = require('gulp-clean-css') const del = require('del') @@ -65,6 +66,9 @@ const common = { 'node_modules/@highlightjs/cdn-assets/highlight.min.js', 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), + () => gulp.src([ + 'node_modules/magic-portal/dist/index.umd.js', + ]).pipe(rename('magic_portal.js')).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', 'node_modules/inter-ui/inter.css', diff --git a/package.json b/package.json index 1ebc3a9f4d62..237c1e54a566 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "del": "^6.0.0", "gulp": "^4.0.2", "gulp-clean-css": "^4.3.0", + "gulp-rename": "^2.0.0", "ip": "1.1.8", "npm-run-all": "^4.1.5", "playwright": "=1.31.0", @@ -122,6 +123,7 @@ "interactjs": "^1.10.17", "jszip": "3.8.0", "katex": "^0.16.7", + "magic-portal": "^1.0.0", "marked": "^5.1.2", "mldoc": "1.5.7", "path": "0.12.7", diff --git a/resources/js/magic_portal.js b/resources/js/magic_portal.js deleted file mode 100644 index e1660ea65413..000000000000 --- a/resources/js/magic_portal.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.MagicPortal=t()}(this,function(){var e=function(e){var t=this;this.rpc_counter=0,this.channel=e,this.foreign=new Map,this.local=new Map,this.calls=new Map,this.queue=[],this.connectionEstablished=!1,this.channel.addEventListener("message",function(e){var n=e.data;if(n&&"object"==typeof n)switch(n.type){case"MP_INIT":return t.onInit(n);case"MP_SET":return t.onSet(n);case"MP_CALL":return t.onCall(n);case"MP_RETURN":return t.onReturn(n)}}),this.channel.postMessage({type:"MP_INIT",id:1,reply:!0})};e.prototype.onInit=function(e){this.connectionEstablished=!0;var t=this.queue;this.queue=[];for(var n=0,o=t;n Date: Wed, 26 Jul 2023 18:05:34 +0300 Subject: [PATCH 56/63] Revert "Revert "Revert "handle magic-portal""" This reverts commit b1f12048ac310ea80fba835f932d7e38f74056b9. --- gulpfile.js | 4 ---- package.json | 2 -- resources/js/magic_portal.js | 1 + yarn.lock | 10 ---------- 4 files changed, 1 insertion(+), 16 deletions(-) create mode 100644 resources/js/magic_portal.js diff --git a/gulpfile.js b/gulpfile.js index ec7356be52af..7ed02998c9ca 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,7 +3,6 @@ const utils = require('util') const cp = require('child_process') const exec = utils.promisify(cp.exec) const path = require('path') -const rename = require('gulp-rename') const gulp = require('gulp') const cleanCSS = require('gulp-clean-css') const del = require('del') @@ -66,9 +65,6 @@ const common = { 'node_modules/@highlightjs/cdn-assets/highlight.min.js', 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), - () => gulp.src([ - 'node_modules/magic-portal/dist/index.umd.js', - ]).pipe(rename('magic_portal.js')).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', 'node_modules/inter-ui/inter.css', diff --git a/package.json b/package.json index 237c1e54a566..1ebc3a9f4d62 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "del": "^6.0.0", "gulp": "^4.0.2", "gulp-clean-css": "^4.3.0", - "gulp-rename": "^2.0.0", "ip": "1.1.8", "npm-run-all": "^4.1.5", "playwright": "=1.31.0", @@ -123,7 +122,6 @@ "interactjs": "^1.10.17", "jszip": "3.8.0", "katex": "^0.16.7", - "magic-portal": "^1.0.0", "marked": "^5.1.2", "mldoc": "1.5.7", "path": "0.12.7", diff --git a/resources/js/magic_portal.js b/resources/js/magic_portal.js new file mode 100644 index 000000000000..e1660ea65413 --- /dev/null +++ b/resources/js/magic_portal.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.MagicPortal=t()}(this,function(){var e=function(e){var t=this;this.rpc_counter=0,this.channel=e,this.foreign=new Map,this.local=new Map,this.calls=new Map,this.queue=[],this.connectionEstablished=!1,this.channel.addEventListener("message",function(e){var n=e.data;if(n&&"object"==typeof n)switch(n.type){case"MP_INIT":return t.onInit(n);case"MP_SET":return t.onSet(n);case"MP_CALL":return t.onCall(n);case"MP_RETURN":return t.onReturn(n)}}),this.channel.postMessage({type:"MP_INIT",id:1,reply:!0})};e.prototype.onInit=function(e){this.connectionEstablished=!0;var t=this.queue;this.queue=[];for(var n=0,o=t;n Date: Wed, 26 Jul 2023 19:00:26 +0300 Subject: [PATCH 57/63] remove public.css and related fonts --- resources/fonts/IBMPlexMono-Text-Latin1.woff | Bin 18224 -> 0 bytes resources/fonts/IBMPlexSans-Bold.woff | Bin 76988 -> 0 bytes resources/fonts/IBMPlexSans-Text.woff | Bin 81512 -> 0 bytes resources/fonts/IBMPlexSans-TextItalic.woff | Bin 87548 -> 0 bytes resources/public.css | 182 ------------------- 5 files changed, 182 deletions(-) delete mode 100644 resources/fonts/IBMPlexMono-Text-Latin1.woff delete mode 100644 resources/fonts/IBMPlexSans-Bold.woff delete mode 100644 resources/fonts/IBMPlexSans-Text.woff delete mode 100644 resources/fonts/IBMPlexSans-TextItalic.woff delete mode 100644 resources/public.css diff --git a/resources/fonts/IBMPlexMono-Text-Latin1.woff b/resources/fonts/IBMPlexMono-Text-Latin1.woff deleted file mode 100644 index 253f978ef7d01a76d1be33e8499b1676c23c7d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18224 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

    =eNNNI5sgF}B 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

    8C>3{dLk-gK6} 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

    5_5~H^Jh_{>VTn3rU8rQq|>?N?i7u3saHK$ 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 diff --git a/resources/fonts/IBMPlexSans-Text.woff b/resources/fonts/IBMPlexSans-Text.woff deleted file mode 100644 index 9f1d0b6e7534b01840ccf867aa2e4631ae2bb4fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81512 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 M59%DADG-qV1tA!CcK`qY diff --git a/resources/fonts/IBMPlexSans-TextItalic.woff b/resources/fonts/IBMPlexSans-TextItalic.woff deleted file mode 100644 index 880189966a29d6967c12f2165be3003e91184db3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87548 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�Xp0q>A^;|%Lu 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 DNpv(? diff --git a/resources/public.css b/resources/public.css deleted file mode 100644 index b17e4b505a21..000000000000 --- a/resources/public.css +++ /dev/null @@ -1,182 +0,0 @@ -/* Copied from https://tonsky.me/, should change this asap */ -* { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -@font-face { font-family: 'body'; src: url('/static/fonts/IBMPlexSans-Text.woff') format('woff'); } -@font-face { font-family: 'body'; font-style: italic; src: url('/static/fonts/IBMPlexSans-TextItalic.woff') format('woff'); } -@font-face { font-family: 'body'; font-weight: 800; src: url('/static/fonts/IBMPlexSans-Bold.woff') format('woff'); } - -@font-face { font-family: 'mono'; src: url('/static/fonts/IBMPlexMono-Text-Latin1.woff') format('woff'); } - -body { font: 18px/28px body, sans-serif; } -pre, code { font-family: mono, monospace; } - -body { - color: #000; - -webkit-font-feature-settings: "kern" 1,"liga" 1,"calt" 1; - -moz-font-feature-settings: "kern" 1,"liga" 1,"calt" 1; - font-feature-settings: "kern" 1,"liga" 1,"calt" 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-rendering: optimizeLegibility; - margin: 50px auto; -} -.pub-page { max-width: 700px; margin: 0 auto; padding: 0 24px; overflow-x: hidden; } - -.spacer { flex-grow: 1; } - -.starred { margin: 0 0.5em 0 -1.5em; } - -.post { margin: 0 auto; - position: relative; - } - -a { color: inherit; text-decoration: none; border-bottom: 2px solid rgba(0,0,0,0.2); } - -a.page-ref {border-bottom: 2px solid #93c763; } -a:hover { border-color: currentColor; } -p, blockquote { margin: 15px 0; } -h1 + p + blockquote { margin-bottom: 30px; margin-right: 1em; } -blockquote { padding-left: 1em; color: rgba(0,0,0,0.55); } -blockquote::before {content: "> "; float: left; margin: 0 0 0 -1em; } - -.quote-author { text-align: right; font-size: 15px; } -strong { font-weight: 700; } -h1, h2 { margin: 2.5em 0 0.5em; } -h1 { font-size: 1.7em; } -h2 { font-size: 1.4em; } -h1 + h2 { margin: -0.75em 0 0.9em; } -.title { font-size: 2.5em; line-height: 50px; margin: 1.5em 0 0.75em 0; } - -p > img, .fig, figure { margin: 2em 0; } -img { max-width: 100%; } - -.fig, figure { text-align: center; font-size: 12px; line-height: 20px; font-style: italic; } -@media (min-width: 600px) { - .fig, figure { width: 600px; margin-left: -28px; margin-right: -28px; } -} -.fig img, figure > img, figure > video, figure > a > img { margin: 0 auto 1em; display: block; border-radius: 3px; } -figure > video { max-width: 100%; } -.label { text-align: center; font-size: 12px; font-style: italic; margin: -1em 0 1em 0; } - -code { font-style: normal; background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-size: 17px; white-space: nowrap; } -pre { font-size: 16px; - background: rgba(0,0,0,0.06); - padding: 16px 30px 14px; - margin: 1em -30px; - border-radius: 8px; - white-space: pre-wrap; - word-wrap: break-word; - font-style: normal; } -pre > code { background: none; padding: 0; font-size: inherit; white-space: unset; } - -ul { padding: 0 0 0 1em; list-style-type: square; } -ul > li, ol > li { margin: 0.5em 0; } - -sup, sub, .note-ref, .note-number { vertical-align: baseline; position: relative; font-size: .7em; line-height: 1; } -sup, .note-ref, .note-number { bottom: 1.4ex; } -sub { top: .5ex; } - -.btn-subscribe { line-height: 20px; text-decoration: none; background: rgba(0,0,0,0.1); border: none; font-size: 12px; padding: 0px 7px; display: inline-block; border-radius: 4px; position: relative; top: -1px; margin-top: 6px;} -.btn-subscribe:hover { background: rgba(0,0,0,0.2); } -.btn-subscribe > svg { width: 21px; height: 21px; vertical-align: bottom; margin: 0 -2px 0 -5px; } - -.footnote { margin: 0 5px; } -.footnotes-br { width: 100px; height: 2px; background: #000000; margin-top: 5em; } -.footnotes > ol { padding-left: 1em; } - -.notes { font-size: 0.8em; } -.note-number { margin-left: -1em; } - -.date { color: rgba(0,0,0,0.55); font-size: 14px; margin-left: 6px; } - -.footer{ color: rgba(0,0,0,0.55); } -.footer { font-size: 16px; margin-bottom: 5em; } -.footer > .separator { margin: 0 4px; } -.footer > a { margin-right: 5px; } -.footer > a:hover { color: #000; } - -.hoverable { object-fit: cover; object-position: center top; } -.hoverable.clicked { object-position: center bottom; } - -@media (hover: hover) { - .hoverable.clicked:hover { object-fit: cover; object-position: center top; } - .hoverable:hover { object-position: center bottom; } -} - -img.avatar { - width: 48px; - height: 48px; - border-radius: 50%; - margin-top: 0px; - margin-bottom: 0px; - margin-left: 6px; -} - -img.avatar-bigger { - width: 96px; - height: 96px; -} - -.flex { - display: flex; -} - -.flex-1 { - display: flex; - flex: 1; -} - -.row { - flex-direction: row; -} - -.space-between { - justify-content: space-between; -} - -.items-center { - align-items: center; -} - -.project-card .title { - margin-top: 0em; - margin-bottom: 0em; -} - -.project-card { - margin-top: 6em; - margin-bottom: 2em; - flex-wrap: wrap; -} - -@media (max-width: 600px) { - .project-card { - margin-top: 1em; - } -} - -.description { - font-size: 90%; - opacity: 0.7; - margin-left: 4px; -} - -p { - overflow-wrap: break-word; -} - -a.back, a.avatar { - border-bottom: none; -} - -a.back { - opacity: 0.5; -} - -a.back:hover { - opacity: 1; -} From abbd35a04274d68984e29bf9d29cbf457ba3304c Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Wed, 26 Jul 2023 19:58:47 +0300 Subject: [PATCH 58/63] handle pdfjs --- gulpfile.js | 8 + package.json | 1 + resources/js/pdfjs/cmaps/78-EUC-H.bcmap | Bin 2404 -> 0 bytes resources/js/pdfjs/cmaps/78-EUC-V.bcmap | Bin 173 -> 0 bytes resources/js/pdfjs/cmaps/78-H.bcmap | Bin 2379 -> 0 bytes resources/js/pdfjs/cmaps/78-RKSJ-H.bcmap | Bin 2398 -> 0 bytes resources/js/pdfjs/cmaps/78-RKSJ-V.bcmap | Bin 173 -> 0 bytes resources/js/pdfjs/cmaps/78-V.bcmap | Bin 169 -> 0 bytes resources/js/pdfjs/cmaps/78ms-RKSJ-H.bcmap | Bin 2651 -> 0 bytes resources/js/pdfjs/cmaps/78ms-RKSJ-V.bcmap | Bin 290 -> 0 bytes resources/js/pdfjs/cmaps/83pv-RKSJ-H.bcmap | Bin 905 -> 0 bytes resources/js/pdfjs/cmaps/90ms-RKSJ-H.bcmap | Bin 721 -> 0 bytes resources/js/pdfjs/cmaps/90ms-RKSJ-V.bcmap | Bin 290 -> 0 bytes resources/js/pdfjs/cmaps/90msp-RKSJ-H.bcmap | Bin 715 -> 0 bytes resources/js/pdfjs/cmaps/90msp-RKSJ-V.bcmap | Bin 291 -> 0 bytes resources/js/pdfjs/cmaps/90pv-RKSJ-H.bcmap | Bin 982 -> 0 bytes resources/js/pdfjs/cmaps/90pv-RKSJ-V.bcmap | Bin 260 -> 0 bytes resources/js/pdfjs/cmaps/Add-H.bcmap | Bin 2419 -> 0 bytes resources/js/pdfjs/cmaps/Add-RKSJ-H.bcmap | Bin 2413 -> 0 bytes resources/js/pdfjs/cmaps/Add-RKSJ-V.bcmap | Bin 287 -> 0 bytes resources/js/pdfjs/cmaps/Add-V.bcmap | Bin 282 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-CNS1-0.bcmap | Bin 317 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-CNS1-1.bcmap | Bin 371 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-CNS1-2.bcmap | Bin 376 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-CNS1-3.bcmap | Bin 401 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-CNS1-4.bcmap | Bin 405 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-CNS1-5.bcmap | Bin 406 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-CNS1-6.bcmap | Bin 406 -> 0 bytes .../js/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 41193 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-GB1-0.bcmap | Bin 217 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-GB1-1.bcmap | Bin 250 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-GB1-2.bcmap | Bin 465 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-GB1-3.bcmap | Bin 470 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-GB1-4.bcmap | Bin 601 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-GB1-5.bcmap | Bin 625 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap | Bin 33974 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Japan1-0.bcmap | Bin 225 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Japan1-1.bcmap | Bin 226 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Japan1-2.bcmap | Bin 233 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Japan1-3.bcmap | Bin 242 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Japan1-4.bcmap | Bin 337 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Japan1-5.bcmap | Bin 430 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Japan1-6.bcmap | Bin 485 -> 0 bytes .../js/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap | Bin 40951 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Korea1-0.bcmap | Bin 241 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Korea1-1.bcmap | Bin 386 -> 0 bytes resources/js/pdfjs/cmaps/Adobe-Korea1-2.bcmap | Bin 391 -> 0 bytes .../js/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap | Bin 23293 -> 0 bytes resources/js/pdfjs/cmaps/B5-H.bcmap | Bin 1086 -> 0 bytes resources/js/pdfjs/cmaps/B5-V.bcmap | Bin 142 -> 0 bytes resources/js/pdfjs/cmaps/B5pc-H.bcmap | Bin 1099 -> 0 bytes resources/js/pdfjs/cmaps/B5pc-V.bcmap | Bin 144 -> 0 bytes resources/js/pdfjs/cmaps/CNS-EUC-H.bcmap | Bin 1780 -> 0 bytes resources/js/pdfjs/cmaps/CNS-EUC-V.bcmap | Bin 1920 -> 0 bytes resources/js/pdfjs/cmaps/CNS1-H.bcmap | Bin 706 -> 0 bytes resources/js/pdfjs/cmaps/CNS1-V.bcmap | Bin 143 -> 0 bytes resources/js/pdfjs/cmaps/CNS2-H.bcmap | Bin 504 -> 0 bytes resources/js/pdfjs/cmaps/CNS2-V.bcmap | 3 - resources/js/pdfjs/cmaps/ETHK-B5-H.bcmap | Bin 4426 -> 0 bytes resources/js/pdfjs/cmaps/ETHK-B5-V.bcmap | Bin 158 -> 0 bytes resources/js/pdfjs/cmaps/ETen-B5-H.bcmap | Bin 1125 -> 0 bytes resources/js/pdfjs/cmaps/ETen-B5-V.bcmap | Bin 158 -> 0 bytes resources/js/pdfjs/cmaps/ETenms-B5-H.bcmap | 3 - resources/js/pdfjs/cmaps/ETenms-B5-V.bcmap | Bin 172 -> 0 bytes resources/js/pdfjs/cmaps/EUC-H.bcmap | Bin 578 -> 0 bytes resources/js/pdfjs/cmaps/EUC-V.bcmap | Bin 170 -> 0 bytes resources/js/pdfjs/cmaps/Ext-H.bcmap | Bin 2536 -> 0 bytes resources/js/pdfjs/cmaps/Ext-RKSJ-H.bcmap | Bin 2542 -> 0 bytes resources/js/pdfjs/cmaps/Ext-RKSJ-V.bcmap | Bin 218 -> 0 bytes resources/js/pdfjs/cmaps/Ext-V.bcmap | Bin 215 -> 0 bytes resources/js/pdfjs/cmaps/GB-EUC-H.bcmap | Bin 549 -> 0 bytes resources/js/pdfjs/cmaps/GB-EUC-V.bcmap | Bin 179 -> 0 bytes resources/js/pdfjs/cmaps/GB-H.bcmap | 4 - resources/js/pdfjs/cmaps/GB-V.bcmap | Bin 175 -> 0 bytes resources/js/pdfjs/cmaps/GBK-EUC-H.bcmap | Bin 14692 -> 0 bytes resources/js/pdfjs/cmaps/GBK-EUC-V.bcmap | Bin 180 -> 0 bytes resources/js/pdfjs/cmaps/GBK2K-H.bcmap | Bin 19662 -> 0 bytes resources/js/pdfjs/cmaps/GBK2K-V.bcmap | Bin 219 -> 0 bytes resources/js/pdfjs/cmaps/GBKp-EUC-H.bcmap | Bin 14686 -> 0 bytes resources/js/pdfjs/cmaps/GBKp-EUC-V.bcmap | Bin 181 -> 0 bytes resources/js/pdfjs/cmaps/GBT-EUC-H.bcmap | Bin 7290 -> 0 bytes resources/js/pdfjs/cmaps/GBT-EUC-V.bcmap | Bin 180 -> 0 bytes resources/js/pdfjs/cmaps/GBT-H.bcmap | Bin 7269 -> 0 bytes resources/js/pdfjs/cmaps/GBT-V.bcmap | Bin 176 -> 0 bytes resources/js/pdfjs/cmaps/GBTpc-EUC-H.bcmap | Bin 7298 -> 0 bytes resources/js/pdfjs/cmaps/GBTpc-EUC-V.bcmap | Bin 182 -> 0 bytes resources/js/pdfjs/cmaps/GBpc-EUC-H.bcmap | Bin 557 -> 0 bytes resources/js/pdfjs/cmaps/GBpc-EUC-V.bcmap | Bin 181 -> 0 bytes resources/js/pdfjs/cmaps/H.bcmap | Bin 553 -> 0 bytes resources/js/pdfjs/cmaps/HKdla-B5-H.bcmap | Bin 2654 -> 0 bytes resources/js/pdfjs/cmaps/HKdla-B5-V.bcmap | Bin 148 -> 0 bytes resources/js/pdfjs/cmaps/HKdlb-B5-H.bcmap | Bin 2414 -> 0 bytes resources/js/pdfjs/cmaps/HKdlb-B5-V.bcmap | Bin 148 -> 0 bytes resources/js/pdfjs/cmaps/HKgccs-B5-H.bcmap | Bin 2292 -> 0 bytes resources/js/pdfjs/cmaps/HKgccs-B5-V.bcmap | Bin 149 -> 0 bytes resources/js/pdfjs/cmaps/HKm314-B5-H.bcmap | Bin 1772 -> 0 bytes resources/js/pdfjs/cmaps/HKm314-B5-V.bcmap | Bin 149 -> 0 bytes resources/js/pdfjs/cmaps/HKm471-B5-H.bcmap | Bin 2171 -> 0 bytes resources/js/pdfjs/cmaps/HKm471-B5-V.bcmap | Bin 149 -> 0 bytes resources/js/pdfjs/cmaps/HKscs-B5-H.bcmap | Bin 4437 -> 0 bytes resources/js/pdfjs/cmaps/HKscs-B5-V.bcmap | Bin 159 -> 0 bytes resources/js/pdfjs/cmaps/Hankaku.bcmap | Bin 132 -> 0 bytes resources/js/pdfjs/cmaps/Hiragana.bcmap | Bin 124 -> 0 bytes resources/js/pdfjs/cmaps/KSC-EUC-H.bcmap | Bin 1848 -> 0 bytes resources/js/pdfjs/cmaps/KSC-EUC-V.bcmap | Bin 164 -> 0 bytes resources/js/pdfjs/cmaps/KSC-H.bcmap | Bin 1831 -> 0 bytes resources/js/pdfjs/cmaps/KSC-Johab-H.bcmap | Bin 16791 -> 0 bytes resources/js/pdfjs/cmaps/KSC-Johab-V.bcmap | Bin 166 -> 0 bytes resources/js/pdfjs/cmaps/KSC-V.bcmap | Bin 160 -> 0 bytes resources/js/pdfjs/cmaps/KSCms-UHC-H.bcmap | Bin 2787 -> 0 bytes resources/js/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap | Bin 2789 -> 0 bytes resources/js/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap | Bin 169 -> 0 bytes resources/js/pdfjs/cmaps/KSCms-UHC-V.bcmap | Bin 166 -> 0 bytes resources/js/pdfjs/cmaps/KSCpc-EUC-H.bcmap | Bin 2024 -> 0 bytes resources/js/pdfjs/cmaps/KSCpc-EUC-V.bcmap | Bin 166 -> 0 bytes resources/js/pdfjs/cmaps/Katakana.bcmap | Bin 100 -> 0 bytes resources/js/pdfjs/cmaps/LICENSE | 36 - resources/js/pdfjs/cmaps/NWP-H.bcmap | Bin 2765 -> 0 bytes resources/js/pdfjs/cmaps/NWP-V.bcmap | Bin 252 -> 0 bytes resources/js/pdfjs/cmaps/RKSJ-H.bcmap | Bin 534 -> 0 bytes resources/js/pdfjs/cmaps/RKSJ-V.bcmap | Bin 170 -> 0 bytes resources/js/pdfjs/cmaps/Roman.bcmap | Bin 96 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UCS2-H.bcmap | Bin 48280 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UCS2-V.bcmap | Bin 156 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UTF16-H.bcmap | Bin 50419 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UTF16-V.bcmap | Bin 156 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UTF32-H.bcmap | Bin 52679 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UTF32-V.bcmap | Bin 160 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UTF8-H.bcmap | Bin 53629 -> 0 bytes resources/js/pdfjs/cmaps/UniCNS-UTF8-V.bcmap | Bin 157 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UCS2-H.bcmap | Bin 43366 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UCS2-V.bcmap | Bin 193 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UTF16-H.bcmap | Bin 44086 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UTF16-V.bcmap | Bin 178 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UTF32-H.bcmap | Bin 45738 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UTF32-V.bcmap | Bin 182 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UTF8-H.bcmap | Bin 46837 -> 0 bytes resources/js/pdfjs/cmaps/UniGB-UTF8-V.bcmap | Bin 181 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UCS2-H.bcmap | Bin 25439 -> 0 bytes .../js/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap | Bin 119 -> 0 bytes .../js/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap | Bin 680 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UCS2-V.bcmap | Bin 664 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UTF16-H.bcmap | Bin 39443 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UTF16-V.bcmap | Bin 643 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UTF32-H.bcmap | Bin 40539 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UTF32-V.bcmap | Bin 677 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UTF8-H.bcmap | Bin 41695 -> 0 bytes resources/js/pdfjs/cmaps/UniJIS-UTF8-V.bcmap | Bin 678 -> 0 bytes .../js/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap | Bin 39534 -> 0 bytes .../js/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap | Bin 647 -> 0 bytes .../js/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap | Bin 40630 -> 0 bytes .../js/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap | Bin 681 -> 0 bytes .../js/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap | Bin 41779 -> 0 bytes .../js/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap | Bin 682 -> 0 bytes .../js/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap | Bin 705 -> 0 bytes .../js/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap | Bin 689 -> 0 bytes .../js/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap | Bin 726 -> 0 bytes .../js/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap | Bin 40517 -> 0 bytes .../js/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap | Bin 684 -> 0 bytes .../pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 40608 -> 0 bytes .../pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap | Bin 688 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UCS2-H.bcmap | Bin 25783 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UCS2-V.bcmap | Bin 178 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UTF16-H.bcmap | Bin 26327 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UTF16-V.bcmap | Bin 164 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UTF32-H.bcmap | Bin 26451 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UTF32-V.bcmap | Bin 168 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UTF8-H.bcmap | Bin 27790 -> 0 bytes resources/js/pdfjs/cmaps/UniKS-UTF8-V.bcmap | Bin 169 -> 0 bytes resources/js/pdfjs/cmaps/V.bcmap | Bin 166 -> 0 bytes resources/js/pdfjs/cmaps/WP-Symbol.bcmap | Bin 179 -> 0 bytes resources/js/pdfjs/pdf.js | 16424 ---- resources/js/pdfjs/pdf.worker.js | 74430 ---------------- resources/js/pdfjs/pdf.worker.min.js | 22 - resources/js/pdfjs/pdf_viewer.js | 8565 -- yarn.lock | 18 + 176 files changed, 27 insertions(+), 99487 deletions(-) delete mode 100644 resources/js/pdfjs/cmaps/78-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/78-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/78-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/78-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/78-RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/78-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/78ms-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/78ms-RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/83pv-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/90ms-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/90ms-RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/90msp-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/90msp-RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/90pv-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/90pv-RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Add-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Add-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Add-RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Add-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-0.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-1.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-3.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-4.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-5.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-6.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-GB1-0.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-GB1-1.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-GB1-2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-GB1-3.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-GB1-4.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-GB1-5.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-0.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-1.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-3.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-4.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-5.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-6.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Korea1-0.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Korea1-1.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Korea1-2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap delete mode 100644 resources/js/pdfjs/cmaps/B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/B5pc-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/B5pc-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/CNS-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/CNS-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/CNS1-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/CNS1-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/CNS2-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/CNS2-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/ETHK-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/ETHK-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/ETen-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/ETen-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/ETenms-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/ETenms-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Ext-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Ext-RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Ext-RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Ext-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GB-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GB-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GB-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GB-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBK-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBK-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBK2K-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBK2K-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBKp-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBKp-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBT-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBT-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBT-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBT-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBTpc-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBTpc-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBpc-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/GBpc-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKdla-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKdla-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKdlb-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKdlb-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKgccs-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKgccs-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKm314-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKm314-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKm471-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKm471-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKscs-B5-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/HKscs-B5-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Hankaku.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Hiragana.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSC-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSC-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSC-Johab-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSC-Johab-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSCms-UHC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSCms-UHC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSCpc-EUC-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/KSCpc-EUC-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Katakana.bcmap delete mode 100644 resources/js/pdfjs/cmaps/LICENSE delete mode 100644 resources/js/pdfjs/cmaps/NWP-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/NWP-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/RKSJ-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/RKSJ-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/Roman.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UCS2-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UCS2-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UTF16-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UTF16-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UTF32-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UTF32-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UTF8-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniCNS-UTF8-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UCS2-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UCS2-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UTF16-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UTF16-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UTF32-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UTF32-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UTF8-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniGB-UTF8-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UCS2-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UCS2-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UTF16-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UTF16-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UTF32-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UTF32-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UTF8-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS-UTF8-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UCS2-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UCS2-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UTF16-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UTF16-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UTF32-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UTF32-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UTF8-H.bcmap delete mode 100644 resources/js/pdfjs/cmaps/UniKS-UTF8-V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/V.bcmap delete mode 100644 resources/js/pdfjs/cmaps/WP-Symbol.bcmap delete mode 100644 resources/js/pdfjs/pdf.js delete mode 100644 resources/js/pdfjs/pdf.worker.js delete mode 100644 resources/js/pdfjs/pdf.worker.min.js delete mode 100644 resources/js/pdfjs/pdf_viewer.js diff --git a/gulpfile.js b/gulpfile.js index 7ed02998c9ca..8dad149ec3be 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -65,6 +65,14 @@ const common = { 'node_modules/@highlightjs/cdn-assets/highlight.min.js', 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), + () => gulp.src([ + 'node_modules/pdfjs-dist/build/pdf.js', + 'node_modules/pdfjs-dist/build/pdf.worker.js', + 'node_modules/pdfjs-dist/web/pdf_viewer.js' + ]).pipe(gulp.dest(path.join(outputPath, 'js', 'pdfjs'))), + () => gulp.src([ + 'node_modules/pdfjs-dist/cmaps/*.*', + ]).pipe(gulp.dest(path.join(outputPath, 'js', 'pdfjs', 'cmaps'))), () => gulp.src([ 'node_modules/@tabler/icons/iconfont/tabler-icons.min.css', 'node_modules/inter-ui/inter.css', diff --git a/package.json b/package.json index 1ebc3a9f4d62..8155458bf36c 100644 --- a/package.json +++ b/package.json @@ -126,6 +126,7 @@ "mldoc": "1.5.7", "path": "0.12.7", "path-complete-extname": "1.0.0", + "pdfjs-dist": "2.14.305", "photoswipe": "^5.3.7", "pixi-graph-fork": "0.2.0", "pixi.js": "6.2.0", diff --git a/resources/js/pdfjs/cmaps/78-EUC-H.bcmap b/resources/js/pdfjs/cmaps/78-EUC-H.bcmap deleted file mode 100644 index 2655fc70ae706c7ba52a5d647cbfdfad6072c697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2404 zcmW+#SyWV47TvdAJ*r+6RRxF)G8F|XpkSd0DozL*KyfC)0pS@-L>YX5;1pdiNgJS` zL=Y%uFUFQ8f-Z~Eh|{myy!p1b$i=bHX> zys+`=ji%a~OD*o~?c2SXo4wxc?t%-A=Y8%IH=0{~_08^*hPNA=t~NHQExrp`wt~7k z_y6}dyPJH?zNXf1lP7#Wch;suC58JBpV$uq9mEuPwC72IzEbHXNYZPniTj*hqlSv? zy9b^WRK9;h_c*@u*1JTx7ix*U7ZnnF&#SLHey>!|EdL-u&xrn@*&5w$*NfflDK2+= zkrwuXqTL7MnA~22Pf9KA4fr?~%bt+->oAUIcL2r-sbdR_la`KcFv>|sf##T_){a6L zZz>&SFy1nCRKTb(b)1E9TI#5Vab|sosCYJ_)2Z3#X-H=>j7lt*z&MxFxdBF1Os5K? znsnZRp`!DS7QR5yc^Ag{L_fj2D*Kc1G--`L4aVDMe-VreA^uVrKH@))*=&=)9L7b- ze@e40Qn$YnMh&K$tX+cWC8^7XMR$0Y3r1~Bmq(SCsM3`${#?eYt^)$EU{}`}E&L@# zcPxy$knT7b^=rCQu(H|Gy$41^e0MR7M!EYUjH_~YJq!)qEijtU-Ks^sqNeUP7|r3` zf_Y15zzO4;B@hpz)f89@qm2a8VO%!{HsZCz64(smhCPrE<7P-e6ul({j>5RD%CBie zpj>cy2lha%z&qF(Xw_WHRJkwOeAjk=HyD)rrC=oHemQ0;UH2QoOmYvvB&o*&W;XYP zs+JX+-4iZyG9r441ct!gQz6g-rN^f!29ReQNEi0ZYj2)4&qthisov>87Kbo+0Qh$=>`~j8wQ^3-&*x>3Hw9>=- zcY6s*N`t`uwl zJ1hsAweX+N_@Hq1h-oMq>}c3f9AU@ILs^8KkcPH`l}kfA2z!$Z?FFl_4HaUk-ZFGV zbNrNAhJ^G}&Y^0s)A2)B!Ol2`g^y>kAUv%!4GW9Tg$<`_j-OG}u&7jJ9o`OBjbTAg z^$ZKU&W8@yg1sF++y-{RI%3npeois6iZGvTBnqqsQ~4MXj$I-nYr$%j5iuHDe6<}sNk|Fmn#UW714D_*&efd>yQ_i2~OPOauHUkuj&1aB|`CO7Re_m7mPE89T7)~S$Ht^iY1qXPZcOeCQn{%ODQ~p827A}Bq zPhV(7m(#MC48Fs;m;s(|S=^zLZ$3wVhU)l+Zdlw$)+{y>Wyvm9l2ziFj!tF)!oDx|dspKQGU!)^ENB-zje1rJn-dodCW^Ovqk+2Y7)PjD4}- zg_`Z3H071Z9I(Br0)NB&>I!&q+$#-%Z1586YnMv?MJr#&XtsY-`|DQlQpd7*1_xcs k5om7%Ka{$hiq3Rpxm1<^LpLp-6zwQO#)>TPFtC#SKLc+9MgRZ+ diff --git a/resources/js/pdfjs/cmaps/78-EUC-V.bcmap b/resources/js/pdfjs/cmaps/78-EUC-V.bcmap deleted file mode 100644 index f1ed8538287499647d923d7d8f517a00cdac4e3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TVQ!)88tSa;k;uAm5#wHeUdFwF voJ@OznOOFQu?X&sb`)LsaBps_Jp&^YN;1fUS!@iAMpy(B8JB)#+{Xj}Q4TH^ diff --git a/resources/js/pdfjs/cmaps/78-H.bcmap b/resources/js/pdfjs/cmaps/78-H.bcmap deleted file mode 100644 index 39e89d3339c74cbe06e7e4f76d60bf3556b0d4b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2379 zcmW+#`CAjo7Cn_tlXOB7KxC0E6;J^M1G0!Hh@b)rDv093(r8qa#RddiM!%k!=Kz6- zAR+9oPaY$vEGl%>eDkNgKjqcDAL=`OZ&%$q=bl@p|JIdvKX}yBe&=qVJEy3~o0aSJ z7P-rAb+`H4^^bb{e4V}Ss;-;eJrBBj)IQ&>Y+G4Jhx`Bgd)+<0USCiDKgoKZ&z*hf zTvhq0+WJ$3P^#}Vsdh@6et)EU9RIrVD^XsATjF2DgvGz`>igTdVHlSz!$)8= zkl`}TkwdM+YY0@hN4GKOM$Rv%dnytuTKz3?K2= zVJ*kxZ-8-I@?X_#dDQK1f^i2cJ=Re{^sY2&!=^iO)CHqGZq%d7`BWJ#7Ju$x*XU`1 z_i=pmx)xbLF%}P_BWx@IM(3WfRP5wh#!6vyC5~0X=$6NB!+0Q%b;8gv)(4{pWBpo8 zAvKK+!03$}6U_U<15OwZErCQB{ieWP7y~4b0b|e{IEbGPOCT4ULyiuS9%D7Kcim5y<&RNNLKbV5?M_@Ml_!BUD z#Vf07Jx2Gvsu8;#zczp_tCci!d=JC81TT_)OJ7H<^R4ifpq^T6mSw`ilRIqex zcDbemt&GU2V_=zN>O9y1=TsfoLF-f-SXT5@hvqs-6M_UR+Zjv-JLCvvgL&oPaj+a) zumUXC9K1l-VL5mOEFZyU%~ek2U<+6Qg0~4PB*AvViX6dCu;QHHQ?O&w^dYe0@^l_p z37Ia|Top87TGT65rmumWz_bsnj7$saCoz2wtX!Jzz~5)(X$|l5J=23)!YPVS0$7C< zN&-72hdf}X!$KKgXDp!{uu4nlC|DHr(K(@ZSbg@~C1!Y-O;vI(n~X7a%rq?x0HT_!Upz#45c<=E=9 z%$(O8XQ*XHNWbcwX$8BMIP(DPx^q_ecmo^4(Qq!!c)MA}20&B&r zpr?9fgEM}u|Q=Y?I}N%O+r2j=-|&3Tq$UKp&&^B2K--1CiK zy-D+rv2)nG5D(TDwvd9q4&u!r^Fq4jI!6yIWPv@jEeKEg%?r1|2FOAO*x>GkZmbI# zkFaO~dyGY)@`+}zp%IIAu&0TO!joT2i^X8i%!{Si$#X0UiO-`KFR8X#nz7hUvX-Jv zrlkr!)wxtjq@_kemYPWXQmbB*xAYiT*pK~hyec_gfVBZtu00EmY{H4Y7hH0In=Rn7 zrd*^6ZyLeFtZyEITTE}BgIn=d0$03mWtG&?rnd!}Qcs=lqQPy}cWK~u&%11Jhy7h0 zxHIZqi%PBz!oOeLb%}c3^^oNEF~IZy;@=nOo`m-oNZR{OvggAt-GdL=2)xNT171=RQ}dVa*r7lYVOePdNhaj=@g8o(E3NgnKlljVh}#;AzFH6fe85 z+KkXeX|)x6uXEL>T5i(x)jojlgLN%g;C_MWfd3Lw)^auF7L8pKT~4>J-N(|6#5K`| z4C@zBFVpqKt(w|Bc=fOlez!{6v#}_vi9QS%Fz7{Bl|Mq@8>Ux`|+@q$AFw7>C4I6kt^o9ex(7TZee#E)apegrh#KtY~qKu7xj5;lw z6#S@jGZVbnvUyY`9W|KBR2?1kz~)J^XS16qTXwNxbkD&pH%Z*8CD`g9t}QVumaS(b z>br%+eNQ0!zUK>nzTZ%-9qr)9#LdU`tKcO`;H6?hPUuI$%fw)uj0Z2*Y!7Ja50N=- z`_Te^#{A|N;KN^GfuPhQ2Wn*@M_1lcm`)(+ff)A06&+uoraMN ZWxHCHd+DL=OQIb$$lQ?y)&e^@{{yR6zuEu* diff --git a/resources/js/pdfjs/cmaps/78-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/78-RKSJ-H.bcmap deleted file mode 100644 index e4167cb51f66c60ef7d9500b450303b5da175574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2398 zcmW+%X4)d#tmFZT%e3CqAV65xJ4VEnS`dH zL7+EQ*O3^3$f82sn)^Iqy?t_}J*`zImsoz3p0` zy|l8@v3sw>QE9Ke(tX)&Z@Sal=kDya*LQu@-E*_MN9}W8DKXb}blCqN-)rx2_qu!f z|99EscH2w#d|vN5biC;h2nIpOpu(y_p41TXQQ54v6J!szwG#WK!8X-8s5t+0hZO($ zz+kTYO|+EuO)`HR#>Q_Njyu22B+1`iFr|FkYf2fiwA+XBVr)ZoByOlliyd0PkQ@3b zai|SHHAq8U_%RKexlu#6p*NO#0li7^mO(!)c@IE8L%g+`#jBXSF6d`v?=k4-4Blqw z%?9rU=wAxnR_Nz5yl&0v^_YhZ&@ZG7+n`^>W;%}}aVdOB!8^{_tuf_R1*&}zMcSMb* zL+{)+nuo2u(r69zu8h$m(7VOatI%(Xqn*$-jP^nA!Dzo0Golzq2cY-HjdK2d(SAPN zEy6>+>9)I`SnL1m2J0X193?}1vjKQ^h7-*f13i6Q!NKQT@i z4cQYGmprkH$P*Q$V4_wf{=Z?hP!;`u1-05hZ6cvDouF}M(0DCw%ww6jPH2KKahuR2 z+r$IVl;}wwmujBO08LArECAhRn&dO23zJ7cGtwrHsp7a|nr!35GqHP8!FR4O&Y=ocE^)T?cgup$`0XR19f&UY;AettCt<2&aSA3E@o8Lt;1=^l((T z5cD%CTnc(b3LgZmCt(+8gE4%V(4#{57?xV3aHEzs=@G)b&oNWD1&b$za64XC2;nZ! zkbJ_T@7*F;%=6J7L<~gogzj5v==m44HJ8?T{t{badoI9A8K<{Fn z4|z|MLrUzt1@wN#Joo2o!#p?lfpNYDTlFq9BR4uc6XU`7c{)Z~bg{-hZ! z%Jk$Gm}GeJ5X^+90+<~4R8-0I&j<~u@e$AcrztMmvqWNgmQQk@l@L5@B<5#Lr2JV6 z$$Fkl(w-{9}^>Jc)-K&c8SHRMYVB2!Q(s{>>N0nfit^7y#=&)+~s5oEWCwbpjk^SGdlB73j zM0(?J$!`u2;f>3%`%S${KK=(=<*M=H3$W}1VD=8M93x@5n*4W9!J7fF{HmoKjCEn@ z62hm1rB<-*wk5YJ{j3x$^#N=LOv_mucXBKMe5Zlsy_)>9r((GbtiZB-0}B^2mT!X< znpTp*iegsms^uR_%8G+$?E+TnITk}+Im&T2QdiCr*Ge}(mtg-7`&`Z+IyCD)J;K{v zV0(nO4lsxGwj8W9>#Y-PulV*7SlRx!Zm@mwYL+VfqF|Ntczg@y)goYCMA2#m=Vga+ z^|B`a;>lTU!*mu|GlNwmu5lyxJJz_R2W)F+RPk3OcI^u9U5UcAeqh7~vYw+^e)Wj! zJm#Qny$GzTZ2cetMcdZ9!K&pA3)m;}MzSjWrW9}3d9D+&8^<-vZyw7=3s?;{xTZ?V zMi*FZ{5!t9pQgS`2XpOsSFV!Z73aGPn)!Fnr|K!Rk#P zVpQ^n;{1@Rng8$8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TX>Oq#ygOX=*YO&pO=jMENuV) diff --git a/resources/js/pdfjs/cmaps/78-V.bcmap b/resources/js/pdfjs/cmaps/78-V.bcmap deleted file mode 100644 index d7af99b5e2ae9a21d534f1965c35a2b572143322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TVs4@9k;tm3#JJa=mvL_(C)3_w qCYHTnEP{KZ9Yqxr_vW_RGcZD-B!fJd#m3NRgheosQMHtD9}@un{3-|l diff --git a/resources/js/pdfjs/cmaps/78ms-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/78ms-RKSJ-H.bcmap deleted file mode 100644 index 37077d01e26f9ee2427592f6deebb145d628e731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2651 zcmW+&>su379)3?IlVlPI_nQO=7v(Aj5fH&R7(l=(3boRT!dN4sTpU0UwHkd20)c>B zl5n?bS84?+7Zv6VTibnh{|&dhz3ubte%bx9{j_KMVV?IlGv{}E-`~tRn)fx1_UpYJ z%}rOjtT}~+w!QmpwnA&krS^+XYi)05m$S9gTG{q#d&l+m4yns|Dce}m(qjF6eW$g< z+3D=){{O>Tr_-9f?}JK5*~!{65ZnhL_eHfB%z{z!J&v^D)zC+!d8NaVwML)61g zL)3t&**cIMWF9CbAp^Cit)DM$7idCtX2BdE5^wI&L^3mynek^WK^AjaN>oayL>`K9 z3MU6XY#>S^b}mCn!Oj&Zd$4nrC~4SfAxb88t`Q|0JMB6phk4w^J5ClJx;W(^c6yA; zVf5WXUoZNJPN_gYh*B*F4=iH93FS0D(1dTR^aE|!iNRKqZr~=Anw&vEspST9p?s(x zJP73s87z@agQ8*30p%lM@C1~zn!!3Kb(+C?D4%eHjZn^62Ay)?pvyRI+UAQPZr(=a-RKi;INDH zN1UAB{Ym1ze#9>dHgPDRKNsV7j2xdfX0MRq=D`-Ot2nexrqu; zOU%Rxi60XU6YS%mao9T{GmHm6X_d`mF3<%1WGbjNV$ueh7(aOoG%0Da2{c)lG7*}> zPel>Bhnq@}O^-x=Dj75l8*M>TnV{(*Q^lYeWU3l8(>zrJnk9!kav7#Bg6_3VwSZ=u zz44&?0=?OwHr{&}G{@*=Z0*;2PZ65Sd(VRA!Fxd##zo%S0Gbc)WkL&xx0%qwKridN zDA9XIju>|Z`BJp~pG@2`o40 z{WWsTgp2dDJSPnP1}vT8{LOfg&-vRxPbT?0L8~>>QJ|-Sr(+2{t)0#$w3eIB13kk{ zA0qT4GA)AE8K)iCY}HR!OZrJsKYf$x$ZQE{OWyL9sj*vZ1xOZj z@z$-KzYN+#=Gjc#jF@l78Y8C{3wqF7SYS=wmIa>}ykG*oV_9JOe5P4o;@;IR9KrSh z?LwJk^0^EPRm8sVA=$eauF))(mYNqU2)9^A$l`etv)Gt*VDT0(pNiDSHi`JpV5LXW z`36Dn9f68$qLOl`To6>P9x5*j(_-x7I;c9s;~P-*n#cE`8t?@NRS5Zlm&nWy@Ug9C z+I8oPD2Mq;I59j)AxTfN37*st#WuEQrKD3nS;A z*&OyS14!bR$H~WEwmIy7sE~x2YN$p5swo+2U?5a;KGdN5F;Ii|Kn<}#4ShhMhReoz z7t{#ja|6^!|G zF)ld>mY81tE8v$-lcuFQhy5#&O-m-ENYPw-H5^6@!s#P-mO^jN#F|SNuwUS{L zgw^8=_ab`rBjQ+XXLdFUzB%Bqf72od{@umB%7nU)du4-a)4$4tniK!Z4s}2O>H^f< zf>%zc2ZXhFN&lmWHCD%?8!)bA01G@a*78|hR%q8Q%EFJX#I+{O#FKR+)co*uCS-wa zok@DoynaUFe-eY&FR|Q(NMG*;hRq-wiL&V@7r(*Q95QcYKrPDMIE1N;T^sFCi-k=S z)WgDNq{RI!W^G!TuN}dgCuP&mF4JZM)FaqroQhGKZBR=>U$fyo8vQyJs$_%p#y8C4nD)&zs1>nqWO#C*RvO+0N#s}2{x(`R{_4tjdlqU{;1-+o z<3U@Y7+@NGkg}D6p>$!ZN+SRIFZ$Xg^3M&7R!Zi7i2JsfBI*eQZu7*l9medF&~E2| zd|TfaYk!wYa^GDh$G+R;uzz=vw0xha5&mc)nw>IP_)TP{phU5F>>kQdD2Lc#h@F0t c-la;q-(1!2s=%@!^LOuZa_4*AVfvHif0(Q+AOHXW diff --git a/resources/js/pdfjs/cmaps/78ms-RKSJ-V.bcmap b/resources/js/pdfjs/cmaps/78ms-RKSJ-V.bcmap deleted file mode 100644 index acf23231aea22e1a95761f7eafd35f1d42ea6b84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TZElfUtQ+JV?4|3G$lSPsp*5L- zp*4wtu{9x)to?* z-GEF#OMV%BCslD3bEiU{_ISp9EDQ%Z8TPR=9292Q$H{O|h;bh`!$AqgeS8cDWf=Df PG8~jmWNdF>+$RD6ERIW@ diff --git a/resources/js/pdfjs/cmaps/83pv-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/83pv-RKSJ-H.bcmap deleted file mode 100644 index 2359bc529d160857cce4c1d1bfca1322290205c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmaiy;cpXl7{{OI+O^wmYtyl`HDmR3WD>!x+fX(zk2fF27#QYSGOjrry9(r-~(pVo1{Nw?mtLYJ4UUE`k0lkkCo*kO1UE(D(}Ha zIX$MVRMvM&ErC!&C=p47ic-|WsE3L1&Ed_Vp)Ij3En2goQt2?lasb+wwgN2;Lt;6| zwA_i2WgTGY5s;UQrFk$;02m7ZCI-O-t-D+~RMwf^W)!C+rc;Y3P7~9a-6+nSV0x#B z;@u~h&i0`=n`3$}i{kw*rgPg+oO_k&gBcVbb~2ssKyiMW>7z*$A19bDw4u20BGV`1 zC_arcUEGA?Vv6arQ52ttm@dgEF74;u%JB9>6;J2#3n;#bF|D?uSWPosc^1W&VWz81 zD6Sr0`f4AFuf2cP{3zC#>6(h-+M*UPR}ZZ3Otn{i7_C0k7_RpF0@Zzp)zK+0oTa^* zw4u^B0>!txwbtKNy55iCdXee70*deZm~JFd+{iNhFpJ{HZA>?}qPRK3^iu}K&mBy+ z6co26nSPl-@oO8??Kq0t<4kv+!-v;5Y52z#{B2@hzN>;4wmsUkBG4YIH)P39qY?Al z&-;u-#D2+V?9k-9C&B0ku;<`WW7q$+Vyxj_#Xjl|yL;UscaO{N)9#?F&dc}K;$|A` ze8QXqy8u=**sp^X2K#uO6#={Gx8h?Bj%vT*Jnrmp`kY>;$4NTfPM79$M&eedr~f9j zS?YYFb5gPx0b5+mtNTAx&)Lh;5 ZujiWNPKIm#2-aGseD|Rg2PkC##Gk&38VCRY diff --git a/resources/js/pdfjs/cmaps/90ms-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/90ms-RKSJ-H.bcmap deleted file mode 100644 index af8293829c90ce63cc4c5eda0318003785ffcba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 721 zcmW-eTTc^l5XJwq#gw8#R@%k}Gf`{k zMMO~)MNz7F#ryrXv0C+m@CEc;pImvE1P@4ZMh0a$e!5_#hJh!c`*BVy;Neh zTkWo5mpv{y40IUiYAY)$v->KYl_e^qm8H6=e}1|X^yMOVNa&R!*CX^Qk?RA!TI52Y zyG8CW=pK;^oAnw)aZ=<>{nqqplU^rs@wxhDkvt)i10n@xy-}nD=&hzZk)D1k^M|e31e5HzTtO9tf zi|}eE@HH3Vcq#Dse!}Z*z&9L(6AOSR{De1Kfp6IfCvCu!&9pYVV^v4ixO00S@Es@N z)I#8?0O8%;!1sy>@6Q9izmxDmBk)5D;iCfJN2E$w1*a9@=~D-cn9ek)@cWNQhE@3W zR*W>Mt{DX%Gw_p*giq^$pT-HF#ekpJ629;PzX%h)3<1A#6TYqnejOxy(+&K#g7BRT z{H~MmeLL`nQo@gmfIqeoe%cG=pBD)D)}AcI{0gYeAA%j u^{--}Rd*VGj9%#5gucOu!1#H2euZlOd%88>EDV>zJ*#d2{xOGaKc#=yUE^>7 diff --git a/resources/js/pdfjs/cmaps/90ms-RKSJ-V.bcmap b/resources/js/pdfjs/cmaps/90ms-RKSJ-V.bcmap deleted file mode 100644 index 780549de19de05b6cbea4ccd4737351bc9ff6104..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TZE28OtQ+JV?4|3G$lSPsp*5L- zp*4wtu{9x)to?* z-GEF#OMV%BCslD3bEiU{_ISp9EDQ%Z8TPR=9292Q$H{O|h;bh`!$AqgeS8cDWf=Df PG8~jmWNdF>+$RD6C)7)p diff --git a/resources/js/pdfjs/cmaps/90msp-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/90msp-RKSJ-H.bcmap deleted file mode 100644 index bfd3119c62d9976dde9b1e59c572c678cf5811a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmW-eTTc^l5XJw~VoNEO2&Pqmx?BQ85Gy1Kg5&B40vb?if-xX2vLIS5w2cHZ5is;3 zUQoQDs8tjNMNzzg8>r(=1dvVfUk4O5y@0Wb4U-e!1H*~A2RJ`p_EmhUK zs|1K40Wc(gs}%5L55S7NSSf+n3@1T40ZQtSjKh6U6fCovgKDBFc+P4I2F&J=F+qf^ zjh0Zdd1J_~mn)$$R9BDTOt6QW6CGiHq9bDMk|H@Nw#a^17jYkvhNEA18d6O*i_N*t zY3nuEb+qf~Y|2Q9qDB-#>D2`>}yh(Xyh zBIC#a@D(JyS^<2upYU2Q@bw*pqou&3KEfMb;G4ySV}-zDX9#a~0^iOfypscbr;YG# zEATxh;dnam_;JGfO~4QAgcE7N6ODuq8-O3#2p?O4AJ`z>C7g2s&v^;od4S&+63!O@&vz1jXb1k7L-e=3qL;^Px1}0SA^g5iYfXXF1DY`JMrWSXGZ@Ro2m> pIdngIFSLC^+oeaK|2#XMub5T`8{&0BcPR@0tE+*R*O2w6;V*K+;HLlp diff --git a/resources/js/pdfjs/cmaps/90msp-RKSJ-V.bcmap b/resources/js/pdfjs/cmaps/90msp-RKSJ-V.bcmap deleted file mode 100644 index 25ef14ab4af42f4b70ccac76cddac8f3b22d8813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TV`-3ET%a4|9qgs+k;vS*f}u5; zfuS{tfw46qk*(2@aj!owG3?DvWNLI~IN-y;a3IK0v~kS= zzs90gM@9w+lw^69KH^V^*#(jJY2W1%d Q2{Ig%O=N6uVB9AH0G^~w2LJ#7 diff --git a/resources/js/pdfjs/cmaps/90pv-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/90pv-RKSJ-H.bcmap deleted file mode 100644 index 02f713bb838a8cd46f5b262c934d0edc8c6e8fe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 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 diff --git a/resources/js/pdfjs/cmaps/Add-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/Add-RKSJ-H.bcmap deleted file mode 100644 index a3065e441a0e1f1a65e9109ec9bc4f826fccac24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2413 zcmW+&Yg<#t7JgTDc9NYyAOwPxTexVs69h$s#!VxNsHort6_ss`c;R9I;draTQz>^5 zB-}yKw$@sywYJqgd*Ivo8$RvnH=n29&!;oze3<>NJu~k+Yt~xN%$Pnj1Uj$X=(^l` zsmEJVQQ<4x>ho22t1on(4|*GKboT_?yS@85zUb__*4d@?1TPfXtJ~VV|DWIO?Fx1W zyL$iE*%%CZi;55I3)Iv%)_~9tqJGt=0zKYE^g(@B;gL7U}%yTf_E$7&sr%ouPqC<9T}qydj;K6ArB9ZcM_-~V+gdA@G8C4Sv)OB{4u z_6}ynI0tu=Yq0T%_p6on<)%1`Q*oxb(wu!Jk1##LOgoVhlj5w&PRx$0HVv)}2JzSN zQ1svv=U^*%l69~TdPB(&pf}P`DflNC+7A7wb!Z3lV>DD9iXKvJLjmZ=twRUFlQDE0 z`U%re6L^Ygs2TbxX{ZJI>6D?Mm>RYZo1ix*4LhNq!Ei40vt`5i(9g-k8hEN}_!9IM zY50~V4XYTwD^@*^su2oB4~Oj|e&`o0BX!V&@<;>pi`gS5p|>g{ccEYMjM|}J-ZYx2 z$s?*VS}B-U;2zy0@G84aeD1G1$MURD}9&~}3tu@a#Q3Iv5M$O zJ6L5#P#irE@kEvn2MPoShY0M3Kl4uX$!?oshCX$ z+bzweg4M{gnP7V?v$%d<}SB-25@H^Xc=K z!7kVq?4jss6$@@+LHmM`Xr%?Qp-Z%|8SJvMAbh_PwNMInHFlvoUaZsPh-zItBz)_Fcdl88sIc}ZlZkCxiN{^3~?b$kQMRV{XI5?o@L1T7Pm%NSb#gtCY1@-Ts(Dhc*=LS`-4+SEBY}OH z0Cu;74B7)jih*Ia!jSJtFf8In(WIIGfEV5qnJel6FAgd5s&h3ShTXQB4Z{(&S_JNk zU#)@>jnxJ*9Ja4E!f=9@l&!YFhymZa`Dr3}sq3j_@0!2!dQ2P3h+07jA+PS(r|v*2atiEq1C2VUOq z1K$x+R>JuHE_lWM7lN8+}oo?e^C7|Zd2S3l@#;CAu9i& zh0+CEa& z_S2@dK8#}NwGW2R`g$9T zlFhIEFiK-z2f=swUiWFz$GsQ;aQ~)gH?)+$RR7O8l=^ckee%X)^1aC-=bK}J*f$rb z;7u>dzhu$5U-Bsats_wI)=RN(>uJl|a}@WhmDFF81O8u|ss6WQD){Ycp#1kuB>#Sd z@_s)-(eEUReHTZ?@3I5M?~au$E;rrIsR73IE0M@*l19U hBiJ~FjYe!VVdI#~IGtd0&_=Ch`g=^e-y*oZ{{`ID*(m@3 diff --git a/resources/js/pdfjs/cmaps/Add-RKSJ-V.bcmap b/resources/js/pdfjs/cmaps/Add-RKSJ-V.bcmap deleted file mode 100644 index 040014cfc0880371c20a89212942727c5dc30a78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<(QJ98{{4ArR$N%-RQ`;*Pnsm zfDaG{aWn1>~Fdm56S{nsR6Mn5Gw+)3Jb$Qmev}EgS-IcxJ}{! diff --git a/resources/js/pdfjs/cmaps/Add-V.bcmap b/resources/js/pdfjs/cmaps/Add-V.bcmap deleted file mode 100644 index 2f816d320f08b8671498299c4d00e4564d2ece6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>X?$E>ygNGht``8&6_OUQ99OMMjtU#KJf$^YlAa{AfKF&6QHh#7?i8gWe mHX)Wa;Wmy$_VR4TgR($XYCxDx8|p%l=LmHM8lDo74dk4_$_P(g(w!-Hg>R!685l< z1014^3aY5#2*)_VDe5@GIWEvZ6D?e#jSjAGjT_wJ4)^Hd0grgXGhWccE8ft@07Hy0 T#ycjM;sc-f!Z&`z(oFmT7oB|o diff --git a/resources/js/pdfjs/cmaps/Adobe-CNS1-1.bcmap b/resources/js/pdfjs/cmaps/Adobe-CNS1-1.bcmap deleted file mode 100644 index 03a501477c91d8156723f0c274a37d397ed65bad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmW;IQAa~@7{~FmUG^&eZ(!@RyK_0)E=Ic8c?GTgwb(lAe~#GII?0+zl4K@HGLs}p zW|AaHlF3YxOp+u?l9{CMiRbhDcsy4>e>V}aa(Oi|o_55LVd#O7t{WnpvXWAmdE1d$ zTf`^FES0m=s3TLsfp8`x{{L;Eq%GC7cQmCG!NK8pBsOBkd_GNc=L=I&qQJ~z4n>qu z#sU_xgk`K?6%|ymhIMRU6I-aEj&1B<7kk*p0S?hX6Gu442~Kf_b6nsOSGYzCH)x}S qTioFu59s0%Pk6=)Uh#%^eBcvb_(l(X{NNYvjJLc7T(1JRsQm#8LY3P9 diff --git a/resources/js/pdfjs/cmaps/Adobe-CNS1-2.bcmap b/resources/js/pdfjs/cmaps/Adobe-CNS1-2.bcmap deleted file mode 100644 index 2aa95141f9f5802818e34b0aa626e34e7cfee805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmW;I(MLmJ7{~FmF8eFqf1vHu-MQP$xfto9^A}WmtyrDyJxAWRfH^ z$xM>WB$*^hCP|WHk|gPS;`uy39?#XUt34QZGdVSu8udl5WtlyFrfG>-(jAt<$$7pU z_e5f1#8nwr4f!$|?vAC?;{V?hN_tXF21iFq5svgH;`V@JheC#-XY*N`$TL%z#te#> z!#ozSh$SqegcYn}4eQvzCbqDRGIp?wJ?!HE6;yGEBh*mGF-~xbGc?e|IWBOC7OrrO s8{Fa!_h{n*k9fi}Uhs-HyrY8;eBuk=_`xr9Ay`2JI;cR?K~xuwKLRC}r~m)} diff --git a/resources/js/pdfjs/cmaps/Adobe-CNS1-3.bcmap b/resources/js/pdfjs/cmaps/Adobe-CNS1-3.bcmap deleted file mode 100644 index 86d8b8c79cfa3907281aa3f25a46f178b87aedfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmW;IK`TU26u|K}mcGN({Q|~g_m$`K@18oH)xWONo(l2>)7#w>sV2{J8=76$Q^{=5sg+*{Bi$FO zOn+Bk@`34ybT(0+%;nVoeW;8MwHdTaUu%_UY|W(7ZGJiya~zo}4zw_eykU%>gi(xP z921yC8Pk}-Eaote1uS9-%UHoG*07EZY+?)B*ugILu#W>A;t0n$!70vgjtgAk3fH*7 zE$(oS2UPHgDr$JbGhXnDH@xEmpZLNze((z!vY#y=Hi6g%Vk3yHAU1>84nl~yl$}3x CU7_Cq diff --git a/resources/js/pdfjs/cmaps/Adobe-CNS1-4.bcmap b/resources/js/pdfjs/cmaps/Adobe-CNS1-4.bcmap deleted file mode 100644 index f50fc6c14e67a228c4ba9a61b1357c16410e8228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmW;IK`TU26u|K}mexMN{Q|~g_m#NRlK?k|s%# zBuSDaNs^>Vk|arzB>7);fA`estp0Vij%1K8n7*FgNHu$&+t}i|o=RkbF0K4R80r2{ zrE}eZ$p@x0(wTUDBAZqJ_n|U6)Mn5weXUizsV$vMwfm`9%yDG8IMB){@`f>jQH)_6 z6PUylN+@FnvzWs?7O;pVETe)ItYQsStYZV4*upk;u!}wH;{b;^!ZA*8iZh(!0++bL zHEwW=JJfKG2Rz~l&v?Nr-tdkOeBuk=_`xq^$bPnf*aTu5h>ak&g4hgVJBSS-C8t5k F&L0K8qip~H diff --git a/resources/js/pdfjs/cmaps/Adobe-CNS1-5.bcmap b/resources/js/pdfjs/cmaps/Adobe-CNS1-5.bcmap deleted file mode 100644 index 6caf4a83146a60a2db652647b9cfed5fb71bd97c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmW;IK`TU26u|K}mNve^{Q|~g_mN!#-X5)|zBpQ#PGx_A`luPwPmMBxy;KBx#c*Ns=T< zk|arzv`LaANs=W0qwepXI-RF~O|>;06pCSYXIE?*JkPCbbY0J+azVQ_eldz|Ph_&a z9YI(K!nWAvlC`OP-u&N3CbW?a`*rDCYm)WN*>tAG&m-sM?B#fFL=cp-tmD?eBm2E_=ODUrv*e4h&B+7AX-5*gJ=iQ5JCxG%FZ9F CgrqG1 diff --git a/resources/js/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap b/resources/js/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap deleted file mode 100644 index 69d79a2c2c2b00207ab27b68ebf4404aa17c6f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41193 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 R!5J=ag&W-A0Z)>CkuT=vPT>Fm diff --git a/resources/js/pdfjs/cmaps/Adobe-GB1-1.bcmap b/resources/js/pdfjs/cmaps/Adobe-GB1-1.bcmap deleted file mode 100644 index 707bb1065c76d69551c287141cb258519132ef8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmW;C!HPjq0LJmd(o>ur8(emGDOo64xKA)R4P{);y(uf1rfHfqO`0Z2k|asfBuSDa zNgD6qQRYv5zs=X*d(Fh{N?jKp3$BcqrV)%9hACrtJFBEscU<-4$YeQZ>x!)(T$K;` zVx^M2_m0%cQMz_JEu~~AoJz(MX)EFJ2ytmt{X#Sw>=`e3#T(wy!UsOl#uvWPK^Hyr kF~ATbj4{C!GyLEeb1bmL3Ttez#SVKMaKs5`(G2{Fe=CDsrT_o{ diff --git a/resources/js/pdfjs/cmaps/Adobe-GB1-2.bcmap b/resources/js/pdfjs/cmaps/Adobe-GB1-2.bcmap deleted file mode 100644 index f7648cc3ff02c44e9594ccbd71deec742e253c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmW;IK`TU26u|K}mOjP(0>)!E%W0a$lq|f3HRgsI^TvBGHLGzXNs=TL-VlZ{f>DfN z921zt6s9qQS&{5KST4 dLNtbG4bdE;Jw$_u77-d=%W0a$lq7Fsi@BkOH{N@xS&bt}k|arzBx%w#BuSDa zNs=TU}~*Hl|me!dX&bah9j!F3aLjfsS7l3BmQ8m|yWwl_4H zzD_^L`$2nTv+>$wE@%GlLlfB01_QeEtTplarc5f`?4@Hd$C0&Se;cF78^SO~Fp4pZ zV*-4l~8|5gz6Tq;Wr6vm{3v&eie4&Qnn@L%5OOhl>k|arzBuSDaNs=T< zlB5Yqk|arzT(^3E?^93D>MAPKr?QAtrsV)XL*F@Qk~ zVHhJA#Tdphfk{kZ8Z(&19OkirMJ!<%D_F%E*0F(2Y+)Na*u@_9aezY{;TR`4#Tm|V zflFNB8aKE_0e5)7BcAY#7rf#P@A$wczVMA7{6c;HTtH4BH;^O9732(Z2RVdXLQWyK zkYmU-4m-=_tMvz_6R8WHFJ2IRbyaP#C_M$ZFh@BuSDaNs=TCWD$wYeo5lqC}J;_`Sr5mYp#8^R#fo5_alnIPHG zn2tKrQGGUSDk-XHYYYDGGeHz)!l>KJR2T*&r8UXQs@halK|w60mt0p5BggB<00uFH zVT@oDV;IK-CNYI+%wQICn8yMZv4mx;U=?dv#|AdBg>CF$7kk*p0S|+(wQg*OBwcedIuLAvuxUNRA{|k~7Jj ijwRQUbIHBrU~(}zncPf{rl(l7o@0OOeg}^L diff --git a/resources/js/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap b/resources/js/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap deleted file mode 100644 index 7586525936cc5398b86d3752a4eb45b15825b25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33974 zcmbSyg#^~;Dq`SLCNL%sw+i2N{zNG!^ z$?Yk$5++TC7EIHnbl@j zL>j^%M!o;^j0oPervI<+6Q?2wVGh2R4+reFD~3GkG$FYsWlU|O`ryo7Cx}AGcZY)y zxsPa^R$VF>bccxgAnSh6i^M5Kw40o9+-AI+wOSW<^;T!D3K)+#RruRmSh72~5X)V# z-T|%ochcM4uxZZv7+gyHqKeh!_-lLDY)7n!H8Eo%`FO!4GknRxko>LUi&DGoCuy}s zfAX&z;xJptdPg7;|?<=Zs- znM9ir8jGLO2K){r-Ozd>nt4A?g zlM(Vbk|{oJLa=XV{LRK8tzHA77?akx>58?KiL!3{8tsAHL;kyru_^u}qty~6qGoG) zWXmSP3#+77PeXmua`g*Ic&)V06D^fD7WKFdv4ydxV^_L|0EtGDStAtM!rM) zw#F6Kfq-AL>LhWDj{$=xvV_GEMI6d}Gy~g$_r#&qw%QZfXF_Z2urmU;TqlcaopB}x zha?9LCiBL;rmQbUU`nrDeOKPU0jQbTA&yOk|IWQpw$vFXTp`M=VVz4RI@NGW_m#p% zSIPaRCj^8O&bWTne-wsl#y!PTPE8W;)v-Sp0~Cy;)&;z&JS>mnG1%yEKpy*i`p3d?YxKWwJqxHWdtrs5x!9#vjH{k`K)eT>ep )hMjqg! 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 U103N5XSl!>Zg7VOJW1|FzIH}ZoB#j- diff --git a/resources/js/pdfjs/cmaps/Adobe-Japan1-1.bcmap b/resources/js/pdfjs/cmaps/Adobe-Japan1-1.bcmap deleted file mode 100644 index dad42c5ad7dad57954fc9a051ee7e222e83bee45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmW;C(F(y(0LJk%m!9Idac9QeF4x+{N-pdPuoG%*&RJ?#Ymy{Mk|arzBuSDai8t{m zKI;43eEnmeg6?_&uT`o(&8Vu9$|{OVHQOyQY6Ze)bwSNW+2x+gi$1gExaK(Y-wVo_ zV7&D^Eyk#v&Y8NAw+u-lghV0Mh7NS02Ynd85JoVD2~1%Ib6CI`GD7x@CoEK=wI diff --git a/resources/js/pdfjs/cmaps/Adobe-Japan1-2.bcmap b/resources/js/pdfjs/cmaps/Adobe-Japan1-2.bcmap deleted file mode 100644 index 090819a064533f20aa68f562275556397683ae81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmW;C!HPjq0LJmd(q>-alr^r|-KAuqWZ^!6;WQL3=iZc+NRl*3(xgd}BuSbiNs@RE zkK#{#zs=X*`$$FYa!u#IbFK`VrV;ow3{yt3_Lq`Y&2d%Hk?~T-)@56#U6l>`B87r{ z_m0%cQM&p%Eu~~Il!!-TNh{{@2yw4h{6aM9tce!d=%9-pe$dANLyYi?G5#>Y6f?}R Zz!EF0vB4Jq*kO+YjyU0r3$EhhCY~ULRonmo diff --git a/resources/js/pdfjs/cmaps/Adobe-Japan1-3.bcmap b/resources/js/pdfjs/cmaps/Adobe-Japan1-3.bcmap deleted file mode 100644 index 087dfc155860e65d2dc828dd432ffe88239fde23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmW;C!Ab&A0EOW@?&>M-#%1H=ZkB`0VnAFpPf*Pzg~>bJ83I>gL_|b{h=@pth)9G) zNJNB)MCe=iDE;OXBS?d4* diff --git a/resources/js/pdfjs/cmaps/Adobe-Japan1-4.bcmap b/resources/js/pdfjs/cmaps/Adobe-Japan1-4.bcmap deleted file mode 100644 index 46aa9bffe576e9a8b714646aed7f9e1a4e99dfe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmW;CQAa~z0LJlmyWFREzd-BM-MQ#uW*1|2(fI_`UM;qr?LEiX)ig;aNs=U)B$;HA zWRlEGW+pQ;NhZlmk|cH4fARco9)Is(HfX1FdTBB4$|=({CZ-L;l!2H%ucVc8T$OZW zIJIEww5{h{74!Q7iG=*`9jTS0bas4NN=g4@BpeJyt&qnf#BV+`BgAr^6|jO;tf7c? zY+w^x*v1Zav4?#epoBvl;TR_<;}mD8;2amY#1*Qz#tm*!Lmds=p@|mSxJL(F^w7rx a9`S?$p7DZL3^BqR-tmD?eBoPIKjIHvDu)yR diff --git a/resources/js/pdfjs/cmaps/Adobe-Japan1-5.bcmap b/resources/js/pdfjs/cmaps/Adobe-Japan1-5.bcmap deleted file mode 100644 index 5b4b65cc6292a5ba7d89e976565bf08814bb88b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 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 BxW^%pYjuN-9#jwV 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 diff --git a/resources/js/pdfjs/cmaps/Adobe-Korea1-0.bcmap b/resources/js/pdfjs/cmaps/Adobe-Korea1-0.bcmap deleted file mode 100644 index cef1a9985191f53c4a8a35811d1caeecdd1a1820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmW;CK}*750LJlm9s3mT#ba}M+i{E?2I0Ydf^;t$thU~bV5eb3M1+Wlh=_;<6+}yI|M2!7c7^j|X(nMGt)pFvJLB jOfba^k9fi}Uhs-HyyF9NeBuk=Sl|as{9=Vak*&o)>2O)q diff --git a/resources/js/pdfjs/cmaps/Adobe-Korea1-1.bcmap b/resources/js/pdfjs/cmaps/Adobe-Korea1-1.bcmap deleted file mode 100644 index 11ffa36df8404ab970df2a24b2d80b1dc6348436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmW;IVMjwz7{KwnUhY$zFR*p%-F-PT8QF{OC#ZI;vURs}uh^?~l4MqrBuSDalO#zd zNs=Ts!7SO2zVPu$BF)nH~I5FL(VM>=iW5wWz_Cxu(|1DW$h za=719c~A8QG93-avRUze?+Yb;sYcAwl~P38yOZ%m%1wkqmZhgkg)T;kH->RcU=n3i zFpU|^Vh;0Iz#^8gj1{b64eQuI6`RR!J?x`~103QA$2h?$&Tx(kT;dAXxWO&% wP)7szXyO5nc)~MUc)=^)@Qx3B;tSvS!7ucv`Ah+A5@^#vn+Tc;L%L%90TF_m@Bjb+ diff --git a/resources/js/pdfjs/cmaps/Adobe-Korea1-2.bcmap b/resources/js/pdfjs/cmaps/Adobe-Korea1-2.bcmap deleted file mode 100644 index 3172308c79d57147cdbe05930228043faa48ca54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 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 f42+FTOpJ|eK+FZid_XJ }}!1;lb046pnFxKb%J diff --git a/resources/js/pdfjs/cmaps/B5pc-H.bcmap b/resources/js/pdfjs/cmaps/B5pc-H.bcmap deleted file mode 100644 index ce0013167f852a873b639e301088c094d468a750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1099 zcmW-g`%~0q6vodN6a}qhlS>5pun5Mq5J!##vdM@Bf}@NT7m;gd^fxrqTR%L%JoC!)l4};NoKa|MO+K-CAa~m;Yy` zTdjJ8G1Z)yv?e_XG;o5ZH6}Pa2(*7(bPX13xi0#9ng;QCPDf*cZvnXeZG=E4V1^R` zoRvxy;O4Ai+72k&S1{ECpkGb4=2BAudTmq=)uyA=8JOxyQ9dy;?RWuYM=I0Kr6@a# zm_A*FvdfKWmj&gsAg0|K%I*ZFJ®2-Ds;%-*{dpuU>v^DLBo-c0)(C|^V~)q7$@ z{aT1<0Hy{bN<#_Lm#HZG=P~UsLiy@7rUPy$2a=c$2B93xXF8OCa!B3vwV)jKXF9wU zz5g(KznM_BQqZ}<``gR@4u?0-WN-(%F9AX;RGaa9ga(p$@iBOaih3t7U8K5x( z!cJ~LIW>#vR6fe-K&I2xDBlrNlRvsQZG!Zs_nFSbV(6JFfF>(MH3zZYoCyKVmFUyr z4bWm#ih#tHNcL)R05n%X$XO4Rvr$av7NDFerWB1l#fLaIWt>s{7^F{x*Fn~56 z2yaUP&$bGt^X|C*e2VhQ!L5A}Q~MH>b_>(@D^V_JOc!!cE-L@xHk2RYm@d77a%lro zM+{2GM@&B|SeF&7%L>*{3f2_`>xzPPRl&NdVEwFMT~n~GS#W7*5I}bZEbB~TQ!#G>3#<@hBFz@ zM%>t20?@00cFW9kYcD~&Idml6XmW^`%Ri^t@ zD8IkS^uQbCftv9!8s(v#>5sK2k6vPWv<0=k*I`qik>BW_2Xp&XCjAQLV+HeZA^Qy^ zL(o7zrVY9Q^hLn@K~;vq0(@&o6}_Kf@lX!aP&LjSCde30VR{mP<|o+zV++AB63jGW zLK&%Kucw&+!>b_VX)%V5E(93JgQ!tr9Q_dHjClb}%IsOxnO}JO%^D zQz35L#>*$dzIW`GnjFD7QmDR{H8-t vrdKjO(@~zOJ)g&;Jm1DKe{F<0GX}&NKY$rerFbPXc+3#E&b*VWK6&oH7Gi0w diff --git a/resources/js/pdfjs/cmaps/B5pc-V.bcmap b/resources/js/pdfjs/cmaps/B5pc-V.bcmap deleted file mode 100644 index 73b99ff2fbca40e7ca5501f61e3f2f29c1fc1af6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=44ustm~1;v(TI2l^-9&YkfwB h*M71;l(nECj@2Kr98sav2P-`~e{wDhU7p diff --git a/resources/js/pdfjs/cmaps/CNS-EUC-H.bcmap b/resources/js/pdfjs/cmaps/CNS-EUC-H.bcmap deleted file mode 100644 index 61d1d0cb001dd484630e52eb7e47eaabbdee62cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmeIy+gDU&9LDkA-kV{N7%VIoIuhGKu~2XrO+`8pQjuoF2qrneFl_OF49p-n=(4rp z-2+WBSyWb*wJk$C%#4~H6s;_^QahLCDe_RpU(xgP!rQ!QtuDIxto6R@z54FG9(lO3 z)ZZEktY})^t`-&*IrCjkXOUXc=x@+ecPQAdtq!W?Ek1vs)gSP-YmEh|CC$z1)%QU) zpar!+2Vc51O)Z$dpuDtfp}UME(n(RGrfKT?Jl%&K*Oa8ISE@wWBNg?MT02tVv+_HS zPj`6q65WyCovl}Tx*ygZ^LwUBa!;r3%Pa+^P)YbG<|i>x5{)Dr6l*1sLt+_;5XII=qKm{NMXV<=Sutdab&!!vB3Cj} zBqL20Q)DAu5_uHsRE!ETsz^*zjA|13$wm#uQx(HY@w6mEqqt2mR#Lb+XpfpZOiOq% zg=;C?Ac+EN*hg`f9A2gLc2FWi?(ItI-H_5}p~M(UWGa25DKX9xNuga$)<`-DCq?XX zL{<97k|`G=D!S4IO9+lYu-d_s#&IKQ2G9BQSW&+^53h;da_#us134VMK{FDoRPGTCsFZY6z zw=(O&sT%O>9B_Ip(+BSGeC5?)Mk^<&5Nct^c?LZLa_74z$_-g%xPCUH1lfi~k>h>l%Q+0o(|0 ALjV8( diff --git a/resources/js/pdfjs/cmaps/CNS-EUC-V.bcmap b/resources/js/pdfjs/cmaps/CNS-EUC-V.bcmap deleted file mode 100644 index 1a393a51e079d1b5e7898423463fac5e87170da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 zcmeIy`%_eP7{~GFoWo_^SS+j^bOnx!Vxi!&+J)#M5fy1jtYA?KEX#@)WZ7K=7a5uZ z-?Pvrt3_pHS%)&T%d&RQ=w_*1?0&x)S(fcz(dXG8`k9%gnSN;Inb*wu&hyjz%sk3W zeU-mE9NgTosYfjDp%s%u@69_ddT88nTiQ(_(^a+T4!l$f6$HPPXY%xE?V2SsgiR8_{TB+8Vr z0`s0Cd3<}w5;G1NG`*6>chK}IX*`_1*CX$%pyRD{GDqIOQ<@+;Fh`nn(kY8q!}d`_ z70%%nw{U58w_XM!bD3>mWDOX-2;7;;ptL($1@2nJ+yQpE!B_=|&1d?+?gp@DCAj-M z#t-hnzj2Q*1NY8hI>3F^;Qm6eS7KVg16P6vZA=(Ev;pk97(6_W34lk|f&C@m(Q}y1 z;IZq0u>?#gj0Ze^HFzSA*$EEZ3ZA?aOkTi*z`>irp%vgM3$qnGT?3w33Z6}8yqdi@ zUO9B4!5#0!_tcFbaUnRI!L)UUWP%#P@7xMc6WB24|Xx8 zY35Ho20e9rXrB%2sdE||WmzF8D zqL^bn7bOfE!Cp|rMG$>}M-|Zz=*<^{kS$U~2(ra_!hozx5jVl=kGhX&4r>6cYhaBq zY<5~<$ojc8p`_*^SH@F|d8s=ED-Ot&L#{$uDTQ36BV7PL#+>OAKp&*tJgq9L2LW4^ z)#{?PI-Z$}x*9atYlF-!*gM8D3CBi=Z+5`1VfbCfx0cv8z)m6C^}`=msN=MzqCYvL zV~{Eot%Ox7nIcj>#7YBk&nYp8bSH6NliVd9=)`IV@vu^|Ks@Rr*4l{2`y~-#ohH#U zO~jKz$r$mpi+EN;Y%s|X@%$w5!YxS8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=Ij@2sOyo)qo~91%8!qshLNF; gfw7T^iLsFlh`E564~T_;SPY1zfLN|EgW;7w0IZHEdH?_b diff --git a/resources/js/pdfjs/cmaps/CNS2-H.bcmap b/resources/js/pdfjs/cmaps/CNS2-H.bcmap deleted file mode 100644 index c89b3527fe57ad3b32061f36b73c756ead3fb071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmW;IX)8ow0L5`6Ns=T<(sPF-F)m3)lCgy(%}A1wWv;C;ce;0)jHG-a`#Sc0-}im& z!>4eLH@_FB^Xebsx0I?buh!Gm?H1W4lbo3&%O+vAtL=)gdUdzbr;93QhpM?$twYNk~HkIwOJ&|HsTmI*hZ_tSQ;1)BX%%R z0wx6+0#nUkx&X|?6AzfJ2Xi@KKAJdzuLdlngT-*t36{#hvH`3FkruF82-XrvKUi-7 z8@XUJhPc31E!fTgI}xNC>{fui6tEvcTERgPI7}o1;HVKC=Yf-0qJh&oaApMOk)#(~ zRD#P?a1~10!F4gXNg{*bwh7$jgZnt*1`ihSD1)ac!hX-}_riXD_VcsfEBn2%-y8eA dv)>2%eX`#t`+c$BH~R(HFTj33=$HJP{s+tZ#wGv& diff --git a/resources/js/pdfjs/cmaps/CNS2-V.bcmap b/resources/js/pdfjs/cmaps/CNS2-V.bcmap deleted file mode 100644 index 7588cec83e27..000000000000 --- a/resources/js/pdfjs/cmaps/CNS2-V.bcmap +++ /dev/null @@ -1,3 +0,0 @@ -RCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSECNS2-H \ No newline at end of file diff --git a/resources/js/pdfjs/cmaps/ETHK-B5-H.bcmap b/resources/js/pdfjs/cmaps/ETHK-B5-H.bcmap deleted file mode 100644 index cb29415de4f5a669c1b47e34ab889b5fdee6e428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4426 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 VUn5lgC0;DLe}&hDRI?#j{~y^L&k+Cs diff --git a/resources/js/pdfjs/cmaps/ETHK-B5-V.bcmap b/resources/js/pdfjs/cmaps/ETHK-B5-V.bcmap deleted file mode 100644 index f09aec6318dbec88491e3e488526882eaa930f37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^EnUt?Oi}>ygN@FqW~AiHWh1 w4T!mbm=B1BfLIKOrGQv2k!7Jb!z({NhS&Ox46h9v*%)5=Co&#;!uU=Q09TwZ8~^|S diff --git a/resources/js/pdfjs/cmaps/ETen-B5-H.bcmap b/resources/js/pdfjs/cmaps/ETen-B5-H.bcmap deleted file mode 100644 index c2d77462d298cdb261f5e2eed5218fcba35cbe4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1125 zcmW-g`&ZOe6vfY1bQH7_;w1qNhb4%_41%&6h$BY=Az6ZfV9H5>nS>Pr!NhA>tPy-< zY6h8_Y2qsc1xeEk6EqM_%``zCBG1qU{U5sZ!~SKjv(CMDfA*a=@?LCVQAKgyrd+Fj zvB?w~5*8Y2(zCfR+oDgcD6v{Lm*^77PG;L^Yiup&zI(^f#)x{RsX2feB@wQ1F5HlUhRlx;3d+lo-O8<}>zg0drtY3Cx8oq0^3uRz(Q zW7=g#`NE%Rw}!GihG~y4${u0b8-!!;IuV3&BA1;{#sk!+LGa17D5s_~ zoytZz?ZQJ6V>x;>xdSvAl?)Ku z6v}Q*R)EGb2t4bAayE?V++37%$xO{5=u=$@o;CA8Hx&-h;tIY~kxWzXqrC8BdQpmD zFPG*!Hs=G>SV7-h3N9_4=-m>mW<4OJB>|jU%9zeO;+pdb$}0t3t1naQ0+d!W(~rwh zE@(^_HlSQo{>3dQKSeQJnul^}Ez{))l*^wm{j7LiQ9Q3Gp1&xbZHi}`;(1l^ysCKq zs(4;gJg=E?QM*4tXBsSSPi9kx2GC^!hmI(e4poxtJ}B2SnQla)+)(BDEd!%FRTk~5 zz_(Ln-D$-cUEz??rQUec1?A>yrfwsy>n;H3)i~KTFsEPjr9TJX9#9{lmtp?E2Bv{3 zoHa<0HkiQl#0L|fWCD!1g3C|<(~t>esGQxNrUMMFfWW8u7&Pn((3b^a!^AlJG0Yrs z0~p%~E+Z_$7eu=kfZbUs SS}75n>;w+>cVXen+8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^B!nr|V>@>ygN@FqW~AiHWh1 w4T!mbm=B1BfLIKOrGQv2k!7Jb!z({NhS&Ox46h9v*%)5=Co&#;!uU=Q0BE@{TmS$7 diff --git a/resources/js/pdfjs/cmaps/ETenms-B5-H.bcmap b/resources/js/pdfjs/cmaps/ETenms-B5-H.bcmap deleted file mode 100644 index a7d69db5e326..000000000000 --- a/resources/js/pdfjs/cmaps/ETenms-B5-H.bcmap +++ /dev/null @@ -1,3 +0,0 @@ -RCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSE ETen-B5-H` ^ \ No newline at end of file diff --git a/resources/js/pdfjs/cmaps/ETenms-B5-V.bcmap b/resources/js/pdfjs/cmaps/ETenms-B5-V.bcmap deleted file mode 100644 index adc5d618d6912cb3a67e4745b63764120f93d17f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?HZDrms_msWUA}o$hOe?l^;Xn zWoOQ25yqxk#>Oidj7*6<3u74@nV1+G*?^b}i1~n62#CdiSPF>cfS5@MD9-?tKV{GO GP7na4qA}0_ diff --git a/resources/js/pdfjs/cmaps/EUC-H.bcmap b/resources/js/pdfjs/cmaps/EUC-H.bcmap deleted file mode 100644 index e92ea5b3b99b1f20d31c9760481de0472e72685b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmW;HX-^Yj6b0a!LR#wJkfLdA#QItYF__k&#-$pgwHAR0XbY(^j9ToQiYX4xOdvHz z^BOzU4fhQfs9HsF!Cm{wpW;vPT)#Xy_vC!JuD|J|F9gk~~n5M;9B5#aw zmMK{_pRicpnUjV&X_z^i=c6kU#UlH^x0uN-Zcb5|;haS`AM8t}1~Vy1mV_j`W*7F< z5~8j%Sz0d&CuDX^6mmYamwIXm{c=f!SC+Gir_7t&NfCV zHDQ96hrp{Ss5KL(!Rub|rV}hS5@X=)UhpnNoCixs!TTNHgP*X$$29n)fn}8_g3tZn n%SQ0kP2|D1ec(GIE`T4S;O9>8YYj04eh-UqLp>(Re@6cS^@+ph diff --git a/resources/js/pdfjs/cmaps/EUC-V.bcmap b/resources/js/pdfjs/cmaps/EUC-V.bcmap deleted file mode 100644 index 7a7c183228dfdc5c236b7914ca68298520ac60a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>Kf{->ygO1a1rBPe_qDDft*Zx sgPB`_!~OsLz3v`wueYcFuf=+=*PWVn zy}YQTs=kB}N|oa#DU8z6zYh`Dt1F6VfA!-q5nkI&;jcpi!e4uo({-;al$3^_qm|^) zpL@-rqgJKNJsRh9j~0)l6(|pYkpM&wCn{pWa4BL&Oo~`DavB&;fOTYGM8>P9z^ftP zH8J5eBol4NarS)Pwc{KmJzCY15S0o}^}IenEh9v&mPkqq{?N;I55=e#YOQnhK90nI z(Ltzn>0^LeuOB-H^@eHeJk$mJP$LCDb2vV~tQ7$=Ge8-qeq^LcNtR z#tYpJ9(Tyr3>q*_p*G>D9BOms_!+1zVdE0iRx); zF*d@N2=$J^R}A%TfUg3om-yzjubVmrb%0DIK^-(q zoyB*%X(|Kikaa2_>eGNJUi6uMss`$F$#|XyPc?8Ze}i?Zo#P8!nCh3Exm1|uZGLH) zE&zitT>(bIrW>%+0j=dz?8@|tBm^BdQjGeX0 z!bK{~o&gIIX0yS9GiM74JE5N)Bz^W1%~=#)7bEXMfO4Hj#9n*io^z4ge}%M@=*z-Y|dQZP|`%eTe} z^H##*jq{;|oz~CC%8o*6oR0%b#6g#Hp3_PSn!f;+Oy;Y>&N$}lz|NZI+rUy>^BuDD z3XNPKV5yFU7_c<^LMoWYxNs3H-Lg;&mSI?^A?%!S;YYA6EHul`B5GV{0n5h1J;HLx zLOWr(_JvNc{PczAU>Ed@XgTE|&Hff_)#&~0*v{7byTGc9{$4rgDvk1UORIHDput@(BBZEL{d`v@8|ju+y|uE!#_}X^D%z=~!w7`zdPaG1x7~GI#Jc_PLu)x@B%o zbKr8kY%im_WnQVpyqpWxie*ku5|_DAZMNlhuscD^17LT}D;7DhoMPn!VP4Bh2-tmW zW*IJ&OSD* zR><~i6sz1?*|=H@*5h7n1nZ4neTw6AhP808KGRw(-lZAV5@qLgdS)#J?1^QKThVV= zy9YKv);hojPp)-ik82phx(Vzl*15!IvbB;1u3N#LN3C;1{-#^c2YX>yzl7sV`#RV6 z(zSj=vQ*Ke^>&i7;nL|gij_FWMj6p>G!nAWM8Y>(mCDQw{+(S*K*BqZM5?o~J0KaW zu0ca8(TH*in%)V`V1j0pg<2Ze@_&X0vS;L$g~q>!3M;H(Mlfa}d4+$#sK@n>{4veF(5PfbjR(iWvF6 zhQz<`BoV)!P(=KiN~(VK5bFmhV$%nkBI-UoBsV{F@!!Tj%82EonGY8+esn8h=*QC} z_~Rww`B*PmZt(k@${@5rE+I%MfEHX0?ZikrG}mxGw3Ak7AjJb$Y*oYmz_?WlElSvGlyuFx@OS3J_fm4+rcGOIoY+4v^Xs=` z$jR*-61QDN%-g++SiAk4SbnQkM8j`Ck(}RJ$;nUQ#PrFdh{C7yME|Kscl}ejWNNN~ z7CkINi%~M5#h!=e4#9Djk_n9(h$hNH8x?j!pvC9!P)v7Wry2fQ{Z1>iQ;r?4WV%BW zclrSBG|am(91}Pu0=^rF-OZ4NyEJr{w>{Ci`v@Diqjq^ulFXlZy=3QSw-n~3p`Shc z)EVG&ImfdQK40UQf}GDkC}RBY4n9dm&hMFuc;)vFK1qZA%U>rvFn!75m=5cg0!0k| zQo$z~Fn(#~cn&#Vyc{zj?8V4JJH=ii-aN7FC1c%a+slTQ6}49kpF3`^O%@(f-F^U; zW5~V*TDEK74lT#C9|!HcW4}Qb9?`)4yU=oz_WLp6Fda~6d5(i*X!)jtJc)EvVm?`N zbkH*gS4hM`HxUl4e1s_C*+VypI;>$oV9vai(3ljX*M8dvClG9(a6tU>*Z4&m4 zNko6%BJ*#j@=&4f@8HO9H=DLc41D)&i~6 z@a++_vdC{Trg*~2&EK68k!jQSFxk>Wt>62hRoIXCi*n6*6pYaUXxHP9;xV2i992l< z`7^xgmdMj=OqWZxUYd4vgLkeH$;U>HRlsq&Pi*=lK@nYl8cFG&5j=5!^4L}W=dw=t KcNEe6tK@(8IPMSt diff --git a/resources/js/pdfjs/cmaps/Ext-RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/Ext-RKSJ-H.bcmap deleted file mode 100644 index ea4d2d97b8bc1df2abebce0d4f8c58789f723eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2542 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 n1WGc8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>RM5v>ygN#sKmI}pMl|k4-f~j zG8_m1(*FERdxM!+_J#r3kw6>*#Nj|3#vr&i+EGF=`+zS48-q}zgLHFIt0N-=1WGc< ggIR10jYd!*Mh1jnBC~2K<36T-PyT%@0*w1a03e<=y#N3J diff --git a/resources/js/pdfjs/cmaps/GB-EUC-H.bcmap b/resources/js/pdfjs/cmaps/GB-EUC-H.bcmap deleted file mode 100644 index e39908b9844939a3c6d6baccced5771b8c1b1b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmW;HX-^Yj6b0bvh=x@^fcgdPo2C^bbR!B*V$ecRss^bX`N|ESR}dF ziYT(U;(|CJ$SNud2>cj-3g`OeNzTp5Nv`@Y)R0Q|8Qq;-8R6G7pS#-U(?lSVit8fW zXJ+&VrU>?Qq>OaRh-LJIr!bIAivN967`mw&y?hMoy6|{!1{)fi!;OkfA;o61EZUXA zrr7tLQB^4WPDMWP#3Gg@qg3suI<?M`$=f?v}^3bnaxfB>#NYMU^7k zeoSNs$ZOA)=ecs1NV}1XlOHqWu#XgvM&(EqIpotqrVET-1<#z|xynSrSRHs#&h&%v z2$-k=lVywnrf!3m7?rPznS0=M6L@n5yv<|c;N2B4eVQ2r@7uwLi{Rr4CIdc&z>E)k zKFTD)>~-+vEU@sWv=U&h9?T1JMCOO6LVj&UT(|%hOPPn@+byu<2FpcEH(0p_R$XB2 z5EBFIm%;Z_%mCPE13zlP&*O{KFoB0odEc2XC8swyI@Z{ E08&E2d;kCd diff --git a/resources/js/pdfjs/cmaps/GB-EUC-V.bcmap b/resources/js/pdfjs/cmaps/GB-EUC-V.bcmap deleted file mode 100644 index d5be5446aa40898742183202ce0624b8acee5234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T;qIjC8tSa;ktnio5kreT14D}) z8$(MN1LGbEAUm9ex5dqlVUJX^5<`m<8)J(L6GMwFBf}nPZpIb|AT7hl(Bdr3utyfi TmIJaQq#0U5fOIGW!yb76lc_S5 diff --git a/resources/js/pdfjs/cmaps/GB-H.bcmap b/resources/js/pdfjs/cmaps/GB-H.bcmap deleted file mode 100644 index 39189c54e363..000000000000 --- a/resources/js/pdfjs/cmaps/GB-H.bcmap +++ /dev/null @@ -1,4 +0,0 @@ -RCopyright 1990-2009 Adobe Systems Incorporated. -All rights reserved. -See ./LICENSE!!]aX!!]`21> p z$]"Rd-U7* 4%+ Z {/%<9Kb1]." `],"] -"]h"]F"]$"]"]`"]>"]"]z"]X"]6"]"]r"]P"]."] "]j"]H"]&"]"]b"]@"]"]|"]Z"]8"]"]t"]R"]0"]"]l"]J"]("]"]d"]B"] "X~']W"]5"]"]q"]O"]-"] "]i"]G"]%"]"]a"]?"]"]{"]Y"]7"]"]s"]Q"]/"] "]k"]I"]'"]"]c"]A"]"]}"]["]9 \ No newline at end of file diff --git a/resources/js/pdfjs/cmaps/GB-V.bcmap b/resources/js/pdfjs/cmaps/GB-V.bcmap deleted file mode 100644 index 310834512ffe49cbb7ca903abc2dc1aaa934e6f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T;_jsDktm|5#L!~Tz|dmH#?TVR zz_>>O$PQ=WZE>?>*dx^plyqWaY;j>?Xt8Bv*dxu&*x~@BWf&P+oTVA|$O74NKz4*Q OLrVyd4rO52BM$&=>M(}@ diff --git a/resources/js/pdfjs/cmaps/GBK-EUC-H.bcmap b/resources/js/pdfjs/cmaps/GBK-EUC-H.bcmap deleted file mode 100644 index 05fff7e8254c995031783fb3b4892d58a6b176ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14692 zcmW-IcVJajw*Gg{?YZdJ3#$D519tTp;uiPU!t^q)QQL(gGoLoOx4y zGjDG1EshAnz!OD9L7xH&h=}O#CR@YdTSI%i4SGss{{{N?6mS0o3tg>e1 z>&mf}mHF*Eln)y?c;wi@kRTvQ!X#ey%a@R6E0`(g!&U(Ew)U1dVe0w8B)~Np>VKz5 zntx{kUImr^ZUQ)Kp!-l}o0(~xV%%&>{V){`O%gsVgtuGrhh5+=SARGNu1x8}VX)1@ zhh<9kW-A=|(ud`6Z8Cm160T`!A5MWcz1fFLV5@{*%DkEk{|H=d2~Qks{d8AbA+||% zwIh7(Rad*ho(X>$e2a0lCp?Yht0hX#nNq&t!ap|d>J&I7_0>xFl5uq*{G)Jn5qxR5x){zm9MlSDvifQj z{1c?BHSmvyf24GEIT|F*)s?WV)L&f>UnlKH8raiRAH~BzM*4^op9ueW_$%}urNUmB z@KFw2g~cDWhJBRoqw$Jiiz(?NGn|w2KH|7pp>juY)>}x&X>=%D+4D2It zZ3eupacw5Nb8*cAPfNH|(zRLebT(d_gFp-U+ETbuq-)FIUJ-w7g%Y>blzd%=e=r== zaXk(GA^Pj-a93-uH-&d}qw57q(pIbXdLQ^pYsSY*;cX(_(84`T zdqWTJ(v~-p;4$Jx54fk}Mo-w=NHKh{wSfjo% z7J(YWjY&$*b`v}cc zV+8^VZmdLLf%?WO#FnStSdT!pbTbKorMQ`*blq;n%~S+Pu}r?1hQKD=%tT;0ZZ?9u zn{=}=>{Ah|QQgc&V2SExF1$TdH=84{LVdFcL0P_840mqa&GrZ^!p#!6O4K)dp&?Jc z*&l%o@UFnk0SHRkn*$M8hrmX7%cYyc;h!qqEJt7=8VtBO5)F-1H@U^la&C@APz6U{ z+^mK-Np*9nMYqEQ-w^KZ8<1`;2Rs{rn=8qkK#!ZNl++#8lK*r-piT0B7Qk=R{%0+m z8tImVK%w@Q3W2ujTX6`qH{MEuPXk*|=~fPG%XGJzD(O2-akmQLoQ*&UZgoVU7`Hkh z&`!S98JW=F8ttu>a8Jgq4RD$@w>H8v&v07}ZPX92Cm)+w8HIl1X`+Z zXTVl0-Oh%;z2*>72m zpYXsIB!4m(!BuIWOh9m@`jdqSZcu$vjo@nSC(96Ai%-@fxDn1)hELWZBx&zx5Zt7@ z6ORzochcc&rn-{_PxFL3O%=m#lj=?}g6j--I>0kUd#426O4S_`Toaq!8KmUxw#MC= z3wI^%DDZTEy9GSWaHj@d3ad)Zon^376!y^GSp#P-{6+B2$ESdO3hX6~KIMr{Oa3$q zE;8XfeA))VQ6^lbbCylKOMsb8i3EZPJvZX79?su+lXL-lC;;P zxvNGnKJjiGg2}kcX>`HeZ20=b-_3z@f%@8JyXTYz)-Ps7L6YkDIP=}yab(i9oLsRMw(%xMKTW16{+PfR! zNP}Zp+UFWLXQq6fr5N{_Qa&fo>0n!pV0+kC!qG|dd0)5&Yd#+c&+4qthbdY6teVd` z{0e-&0KOH*&le)L1fQ>jy`%j3D!5hnd@a0s`SW#%tG$D1vQ$;TIh((%YtfUrbQa-?ldSG6TV`aBa-~vNPD@VFUKHQlK$m* z*jgdjH|a}Wqi)idygI!!U#>^6i}s$ZG~I8K?it{jrMqW@Z949y!Dg24r6brwy4MJf z4hYYX?`0uK1{^8fYXa98`Ccx9eQ>WC+=~qNn#0#wd#^2Q{pEXI;L3r!4}$%qd)<}n z{Z`dIiqrPGdwpPEC*KZzDISM9)E8noYUcJfnfK9dsER6kMMN) z-U5VY%J&u{*i(P68g@y#x4I&3|A)?vo2Tx|^>qAK#=p`dQzKLSecxQC828^+-`jw& zMfyrcxP|sBHNpkzuZ-|5!&k}hb~JvKVv*i4_4}%+lJJhT+gH=zt;qa36`m&ex-|l3 z`Rg`lkPTnAgC_y5DNVknR!dL}2TVy{kAruU@#{HoOiKBBDLhlv_hs0->+b86yaQI_ z{Uo@jCf(0LV5atdF#;Cc?+lm8c%J|yQNG_F&Kc7E0SHXT{XwuT)ZM2hk#+ZZLTTFj z;}Mu4-=79McW<2P{tP(u(*4m%~w`yT2Ol#?k}8HU{njIGVtpgaVY1C*?15SceeHcccPE{AictHu*SLaLz8EoXYP#| zH>P_kJ#(V#EYiVsss}kr=0Pibli?yi%~n0ggR?c9>l;020bBdz2fbnMg9qjC4A4Iq z0aq?;1LGb{KzLl-0}FiB+6RkapV;)lGK=bvsna(pR3zxmFy+6?t~)HWm4-;IT@Ci}Zd2rX;(-7b`FV z`$p~etrg?DCiV9n5n3UC-wnPv_4hsDsLubsFGBP2{d9N`_x%hd?_DdtUx?63{r8LD zXbJbk)bE!gv|j&E2WPXmheUL3;L=DBa}Zi=eApDOe)7ZCu$8MGa&^6=hlHi-#D|^X zrhqXav`YW56rttP!{Kn7jStI}#G@wp;UqZb?xae|@}mrdW!0m`a5s}4HGwl#`zRNVo{5hN5!PrPbwwBmEy1H+ z2(3eyJE&+M^+uQ@F2$n(2ra;)fe3BVJQ{>hwd&DugeB?GNci$~k4D3}Lj7nG+{;yu z%m{6e9$64tBR`sr&_?Z}xd^Q_JgQO>kC_aQC=h2GA4_nzi+`Mea2XyGn2yyy&VgsL z>Tv;Fl)zoIk6S6Z$E>=?9blU#Kkk9BUiG*a!aDWieh9}&j|U=bK-eff9t@{SemoSO zBsiyP9&?X66g(b{uu1)R1$wsXtDEYr6W!D)^|YX5q&gxW_g6k+&gFenN3NSN$YW$v9!v zJmG9-XFQ=8HOD`p9$wV+2~lk~)src36lFY_4jb8CuX?f^_P%(s8i7*dlQnRZNl!KK zrz%+|P0~{xJO%Po16*$)I8*&J9M%0_S4Y zQ$ml0s;5&BoDEN+>M4;;5nO7+(^+sf)jp+Qu9TiGgKv)fbOpk*R8Oh-rb|zGy#~cS z-3WhoxLYSYqh=|Vo)NVcO3%ozM(J4&94n<~P2s7+vpl6)tx5eXA1+CHM#C)yw$Zw0 zWZ@=w)&apOc-9fFv6^R{5L|%Z9O+pPc*o;e34(LwXT1=dp?cOAwo%fvQUoVU&j!Mk zj%Qp9C$~ubYzTsr5L_ZXD^s#+t?FkZ(2$5{)QMI4XJg@9t9mvKL9TMX;n_@hwDPls zaB+fF@XS>`Bhsi=J>yAo!zW44Rv|dA&$Bh~w$T67-J&^VO8BWi#noEm{WOALrVxog zRVi7gtSLXOhpV~zc_P9S;-3?__mZCH!@fj%-W=iaInN8=Yb8H7Av`hl`9QeW>z_}6 zT_-)Cf$${ta|`UfbkFC)lZEF?l#J6R`8g%lV(EDe!jq-v%i(LOdQLDhL;ZX${CVo< zo8T~OepbWT2S3LlJSF~TBRs>TpBuw9#PD;rl789>7m|K1fHztCxhs5n{M;S(xhX%B zR|cm4JPhvggrBD)U^4tnSzMv|c_qAU6MyFD9g=9!{%C(%zfh^4YotQ7_3 z&05iX%;q_w-S{_qh&GM3B6ehpoujD{L^`#>*AAJFFipt&mdgBDW82LqIZ%cl4jS@3p;t#7jzMeudQ z3tsj{@{3^zW=Jo};p-1i8~MdZ#crOQFcq{4zvp{Y$xI_+_Oey@VA1QkK*&lVsz|bjA1wlm2BsLYB0b ztr40ky`-?8rFq#Oj&X4>2O~7Y@N%?b_=8n?IR);;s+W|-X8Gkzgl4N>Qu@tFd^z8u z`J*ZA4m5pc@=@o@&E4(UF z41Y4=RZA(_0k2vi+R5;$HKJ`*ue!iCQhL>+!tkewK6&rx-DQvG+{?Px_@3dO{z)fx znkhwjp(xBM5$&OU)d%(kNv~+77vj}ei}p{}%va+$8x!z~V8x#e?W@HwZ*Qx_{n-@v zih^SaUJ>K=#j8zlQsQ>TZ`|#H#lJ}w^`EVozqJDz)X@Jn2<9Deis3IN{5AsN>Vn@! zBD_TX+cLP8Ykpge2A$!zjTZSYb>vZIvnO*1xmu-P3%7r_Efe_f~}=NSSfkuvhN~<=fRZ<`(l-_Exc5ydLbOLib4dsj!e+J%fGZI~3`UrSY0qXt46(@X zTl0mO&n`2S#Q!!Wh|LE0GbFLO5$w>4%~^=8GKkIjh!HH(L@7=Zo7*5l88cNQHuth< z{@V&~4j?x3P-7d=RBSGVd3Qf0{U0V-Y$j*r!>eWUEV!%KV>Y5CtX}}%5@j}Dd z!sg|O_JnUHb1UGUl_55-gr`(1-i)`%|EM$XX~JXNv(}>h$7VQ(iV?7tCL=m03r=k_ zIJ*#hS6lS|uu9_1G^we0GehJhi8s4Q{5Mc)EZ!U|$>Pn$QWNoJHT{ZP;+3TTF)>Yq zzW`zjN1C53wxl3Bo0T-@Q#4{r0itvDVoMuD=P{uTQ)&=f`X~wiV^xVQLl9laj>F+h zVp4`Ek7P?ZqKlHmmeFvJhN~&-XPWm;QquoL_und=*g`R$kRY}!Ky(4WvI1kR$h1m6A7+LS!|Wj&>~4})mZfZ;z4cAfO%i{(iE|^JK1OjG5&gJ z#MU?1r{HyFWQD{1Abrg`|2lypA7nCjYYC8@E;{O2r=2 zFPnbZC^om)Z8%V5(c4x^po-TVX{EXxdH>wI`SAykA=Aw2o4t}(xzt~9rE)3>gGCmSK| z`_@$mwPM9;geYNKvw{jHoyj`*`!QJ$TPLm9x&fiK5ZkEEx*5eb4MN3mc96uj6u9`6 zIkMPB7}bmvnea$jv8@q2>){!WP&*Rk!Z}V!v0K@k4`&6No59wFrB(>N9)x1KJxj$1 zb%b}ST5KbVp2Q*P+8n@ASM%F77QMs78gj0me_|UsH`E=h>C4?uWTAu`zs*!(a8!5) z@0_)(Ol+I`Yu3SmJLl}l+CN9ha!euZP`G9wL|dUVe9Jiq-Kb3v>IAn&CAO6z)Qxi) zg-~xM6>#=Is0+V77B1SE(@9QyqAQywBh(j8144b2CJrlyoeIYi*e8)=Btk!&DfWH?URcf)l5kg}S zsxXM{+^X>$qX>Q?$4nJ(9zx?dcCq=L_DV~a3GQ_)wMWRL5!*Y#Qv`bBQ%9$@VGWHp>lIsv&HuDWXoB+Cfk=%Q)Tm-Y*%1D5U(VM6rBp0Ik19^s*x@U5}vJSSzb zGeH6gN}`Xfx~n7HS&3p-C)nE|{07{u*k*z& zk4=N%<|W@n4K|#WL(GTON{ZjaEM+kdXBTn65SB*4XNG^eTI?bdwKa-eli;y%5_90| z4ew+)%itW=NbH(t(fh5O2Zf%^0-bm(mFHK@^LvXT(Ak*M@2wn|56@DJ0TU~mBD$1S zlqz~ARBWrW#anc-H%}06(f{1tDBdcw$N>uKw*NEM` zof}kQcUuIy$YOU#iyS2V?k+IDo2$f!_?g|~;204vcGD9?uHQ}5N=X&F=fG>!iruRa z7?vn@Z-mcCYO7Z4NkCwTLF}P>dMLymy8Wq6_T-_VnJo6u`kTe1$o%elB`$1A6np5{ z8iBwYO~js_u+3x#er2#m?3n;ZDhHcp(S@xfn@x?+0ZM|sZ4em6%616!Wr?2qK?rn$ z*xMC>G9@8mWwsjvy*XHS1V)pRK(;HqMI5gb-ZIuRBr#qi_6|26>#1Z$O&n!30+dsG z$HGBzx_2A`9a%XZ4Lq^EbR|sDiM>-07_Jt3xqT@lnFo)~Aok8jpnsCsTLb5E1O`fC zpRB}3xr_VM@TF?RK6(drve=h`z+}DHN3Z!fh1`DIxL6AOeO$=|CM5{;(20G0;9L_Y_Ho^>DH$}gaMUqMT+Esv_Kk%- zLoN1M;2Or-xo`~NJm$eUpQKgh<1|JZ>dYs`Skw(~BRWNg=tMCRp7wF@cDCpmO#Q^Z zr35-}ccAinyT7CpZx0c9MdIy|l0m$^LNbcCHz{!+aFh2N;muWx{qcxSOBMU6KNm}4 zKZOl9dVi7mWJe|K-#pm;g!?l!Vt;q|*0G@vqSIxuzaOHOM6tgVQ69v8diED_zzK*> zB?-~0fh3a=oy^iSCE?$%zeeY6idO8WI-=z;K_~XlMbwPw487RD1kP$w5Ccsz*Cr}y zADZID{?%}_mc={tK2Bw#hij!qykmsF5lbm(NM?!lT7Q*zhn~I05bxx|u1^r}CTQ- z2=~;91H|^d%%@u^+1Du84y;7D4=LBeJ%=RpXP2(q{o}T?# zEcJr7#$2aW3a^`3>J86mj!Z6~hCSFH{z^{T1Ur@8!9nokv5j`NnWbUykl_xN!9S0c z~^EKii&yX8&kk{+=1Q?&;O+3h`+5)&=Z;1u|g-m9{|GGptnrqQr zw=z4A3tdT#$kdm~BR;r*u9_aNGm9z`uJ7`+73U!SWPB%e@2b5k#mVL3e9uZ61L10R|-UZS=`p_ZKK55rQ*Hu z9GPaoA$o9zGD(Do>hDkroYPohFqp9XPzLNPm^6Z~F%t%dhA?690T$KAZ@E7KpQpMeR^gJ4BqX7U!3UTC=E~CTc50?P&ggt5}Ku_-&3}2-i&bH!;@= z{*ACxyBuOLBc2s}u&{!q4(2lhl*Aj1OwhnP#K0_N5(V5Lig;qaLzM3fq#F5QJ_?w@ ziXI3USn64kd}B;N-nU_IM{&BRII~Hd*(hq~iQ2j1Vl#0uUtFBAbMaQQI9o2x7N_*0cEy2i;xDblg=IU|@0lvz z8!74+SyVUHkgA*quYJ7@qc~?PD=H93V3Ep$u2O2zG_^Q10sh%c$fdnh;?PXER%^wf zIp+F&CFiDzeHOv5XTuT%7@1t85r=9JNatKu!^8Dwz%!qPHE<7#7l+m&zymp~gD(p{ zim}56xW}_19u6v|!-?>jSW1I^tVSHpP?B$QQimDz9>ydWu^c9}R;u7$4RN>tPDbUk z*sl-)8u5pzXd3Co;o?d48!ejuP=X%r3b@~(bKx+33ib_XBMuKylK*2(5{DJodc(H~ z;)n!CJZzKUC{T$bGTg-4iwj)^_?BMI4^ObDZ>^QYk=NImQK4`*p66;M{gxH>ar^+IOv}{b2;Zo* zMwrs56+HB03}satgxka4iCsIuHV1{dBvi?y%p{ydPG+XS_A3i!;VHo zH)s(Y2PRbPTwvjaA-BLp7cZa^tl~HHE zTS3Bi%_2`N-mR4M;@yQ6hEGOC*PpbUTqust6c5{}zy3z<-kESchpAhUE&4g_oeDmPw4kuyCQNFC132`(Z;dqTW z+6>_YR`S7vfM<2{LLakLlwSqRg5$wW8_;Z%;%AK^yq zWrC9s@8}?evzZXCXE7N9-z0<^a{@yV&SAw!ILH%oITA5Z5yE+JOqRk;*?*jpdB;i$ zhN>7wYQnishOHM|Q`ttVcPZyb?|42-v*4lGe3ZCJ$7DWyOX2Im+(LxMaDc_|b}?UU zr!@Z51Rv)?1Li1YbSn-}4c~e=JM!!Fq&GK+qpRQ;0&z@2kk>1NIV#rVIB`q`8{y@# zMA)0cMthKfqBcfxEXAVz)S4oW@j}MdffXGX1|n7#$9ltj$*5$0#!qf!u@78X262qG zd+!8sY$$wGgU80h(GT__coRAF1b7#-jt`cIYL88UkJinxsql2sh+}*=LX2>%vefX| zD)%VRGbR40hxh~c_YWN*{zkU`8^7|`Drrk!#qgOREo1r$$6<7I2nVl%i!Th8Wr$-- z&6gG^Nq1?A9@ip}YZS+6+;xc)$7#dlOX7Gtc!%o5@ec6!fjCZa-Gm9)6`De5Fun_JxVr0)$_WQwV!ioH)T-Ms#$7 zK3S^d6P*#>2=@qf?ShCN5pMK}o``5=ae@)UO>ieOM{~psMeNmL3O5m}K= zoM5nQJm*~o2hEHVqm)KpSP{`70z@<#abh$gy!t05Ad*m)yJ)7DO5$Lg08}HX@Cg%!Q4Ndtw112^^h4 zjvx!EU{BNE3Yu96}t+-ctVHV`K@h%kan>~&I$2*ZL+C2`V# zNM|+?Y^+lml+G>Bh=t z@FgHp#9VXpdlseTJ#HNrN6#?{Iw8`8Jz5}As1_&50wYLQ4DS>sbimahLR5RQ9bBVW zLE?c-I>S4W3F8m1KgOY2^J6^_AwQoifqfI_+8dGnBpHmzAd(D0qy_BBi1b2)nCav& zMEWWj_b60Ol7CCttqdNXWYWb{lK53F+ryW+CiU_YEaat`W`38xbn*Z2T z$^O~|H$i1>E+UgvqLyxTo;Gh!Z6SOcn6yHKShltpuJ!EG9ua!KYC9k@ok=Iyx*9}n z7kH+#tuG=oiNyNBOR@5Lazjg{udR-pQtj7kBD1kZipLoBTgB2_rc(9S>qPA^88Rd& zDPM0TF<-&tbC6MpRI)_&v2Y>WOJcyrr|7MlOKPRY4Xd{#RX zktLixxugV<*UOnFMdl;22)1etx)9Dmh|FVd5h64*YZoKd)F^7nE)-$4>ky&XtmT%j z;`}!t(p)P}kvqCb;#7i?cHhc02`+NasT4%IBf=xAmc^-5_|p(s&0Gc|)U&4=BeH^U zG+T<4B4TEaKDBJ~e@#|$A8?YV3J_Tf7cuiG>eyAJ=iX8so+5V?u(=qKbt-X+n56}~ zc1DDf>J+a!_2el!FwUveAZ%*!&kXU;bm39Gy;6z)W`QhD z8{k`@6Q>Dz$;7AA;UKVG13T^G(;0AdgFBAZjg+i!tO)WA7(=?8>FLJsjbdj$`zs@1 z9=yv))eK$+-1!n=B!a^cB!ixAj^Jn#6e33LdAcQnrA!#xTY_MP`Og_j%C{ysc`m10 zBghMXx-Ei?^pAtRv09w&07qMrcSVq({B$?i6f~qT*8{=91>!XI-M3Z*ve}KVbGXf? zX2+|d zF^JO};Gqz!qldh|TGZ*`<9XC2z(rHFj?YdBIqLY@rqCejQsAM}zK#!D2C=d!?0nNP zQ6=hf;fjMhmA#u=wEss)S=W*FW4Cn1Z`*I${JJbu-}V953o-Ax6hyT{Zjzb)s&iMg5(XgKVU^)dB`_CLQL#c2F|E z=V)hg(U6fW&d`%U*Xo&Wh?ymEhL4C-ne;(y2E-Y1eFEGYNKEg#iBybplabFbAVa=8 zQ;ra?@tF}8>3b_j8dH({{eJH-;pi;v-S$X3`U&@P;pn#6uz&r&vBHro{+1;EmMB~u zgsZ*y<3RSRGyg3?$$v=S3vm?PgM5hE0d{iw8TwNC!_}3!MTibli8D(OeS=@Ffsgjm z83q{3I4g#qHn5ThvXP|?h?c`iKVZEI?h=T44ZK9&^;$Tms6{=^ZN7E2D47qfi1MiG z(-7sW{gtw)C(38suYz5&@j9+m&!_bS-1T%3^Gep|BTDpH-yDuMtmMPD8bqn0>x;~P zTcqSYGQmra+Bmp)y7hFpje>ibM%1^4gD|GPgA^`jeOELzX2NZzXQjS7!Xw$%6X8)> zQQsGC>VbOV>(NXIdKf3E9|Ai$zkW1=lqU6K5ZlPoSS8~T1y}ue1e;1hUby;+2sUFf z33i3`eC?Xc(o_T~?dqq&Lx9^Io^D+2Y&hGoiH@_^Q=f1C`!J>XV_xoh;>#BB(Z;V| z1p7R;@oh~3+zc7dVYeml^<*92Qc#)IFNc${mU=!R8ORmV%hz5n>iJl=i7d|Q5G+!O zvvCM=3TMdy-4JZa`XmI2GtQ>MMaRb3G%46xNq$TT!O$NccC=*|3Xg?wQ+u9efO;+~ zauDPFI-3U@HN@F`1lt+J*%s#aTPkTkFc5y0Xo3&22Eak|cD6sfoc!5R*m>RyjNQoge%Kh&SH%5b4N=B*6+W}@O%vV{;q58@*;o9t zj|eW<+tZ@`VHZD2*SVuVIEgCy(C0CzaCRxo|E*E7ek41bT@5Eiz}XG3t4OjDp(L$1 zCn1ywH$!L%8gWjK5c%mGD|#f0bIAxYu5qpzLMaH*({PUQ>7{CMt_4CGc=)(GLrMRU za^M`_HP2-;z3hydr6H6og)-q*RN@>1V{sg?GeUF&p6iMbrQf-3aJFQLj=J@1>uvt; z*-FL}N=t^php|G`15$7f%MvuX{1!yRM zXE|cC5u3%a7g{t=tVVH;ft1(^q>6LvX!w`I{Et#4^C>ssd?I3N4dQ$n8uB&bd{e~c zL!2jC<6S<_d&B_c`9cKCRpNXRf`lmN+rZZ^Nt`c6tdbpiBQ}SXrSO$l^iQp6;yisq zuHh7d=O^%!d62~UDa_=)u9*h&Kl7B#XRp6I6R~`DtVFCCKR*|-<}58mtR-wEh!twZ zc?B^7%k!%dYmZoQoH$R5x(#Avg9{qOTESal6c@Bg(lc)Pg;d14BSr)ALLFvG+*CxKkHKBgR0h zUMntCDDgkNp5-LOMzGzC7!9ZkGZ3p_i910`V$ll}|J1b?Dl3dX9gcPGt{3mO67RPV z?>86kFA(p~7w=b#_m_zGi!IVmb>{z>s^mPUw7WpyM5oJzC5TO8iAT@(Fn?haVtfV6o$R0z7kMBpZT$i6n2yr7yBd1lfB3vQccr{i-X|Mz-?r&;fP9!;v&Vd3Q?IAQ{Y_^ zCob}VE8WKz=fXFTl~f8kCW{ee?CxTflJv8c#cD)p^Ihbxe+YFh@)r)(9C{g|afrrq zUVLszx9cSp9JFmNX%Qt1e8C{eB|6zhBg%knl1^NrrJ4@=Oj6_`%4Z}QtfK;G1aYYq z+}&BvzyV!>m-uUdm5Jg~JH_~dCv%C>0}W{yRLRndO9K#PZ2J;Xg-^{I6{+4TomQ}rKNBz=2R6#o3o9^ zY?a&Oo#XQAQCj)Anu&UvorTvo%La zd&%hTV)9Jwc=d`XkoSX?ea16ASWF=*g^&>Fuy9!?sP%bA;C z(Y>Tc^72G7Y!YLOm*+8~@K`U?aT4V_H*tBnlJ={KBd$}{5LE0h<>h*2BS)VnedF{;fg^AV#% z@CtvfL1}fR3Ngm;t}KDOhP{^|#;SG<=j<8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>F(sM>l*5;>yaq3a1ld`Jp)6F z9UDVS7z5)T2_QS1g}24cj$w~fvl2s#6B}cT3ll?&EhEDoX>P_A2OurO$k5^}&9Fxn U$d&`LBcvHxLV$EA1H&G90L*YQ;Q#;t diff --git a/resources/js/pdfjs/cmaps/GBK2K-H.bcmap b/resources/js/pdfjs/cmaps/GBK2K-H.bcmap deleted file mode 100644 index 46f6ba5967cdfb381f001eb1193f17b43d943962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19662 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 BHq8J4 diff --git a/resources/js/pdfjs/cmaps/GBKp-EUC-H.bcmap b/resources/js/pdfjs/cmaps/GBKp-EUC-H.bcmap deleted file mode 100644 index 5cb0af687ee20a10ecc367892ae49d7b1e74acd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14686 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 diff --git a/resources/js/pdfjs/cmaps/GBKp-EUC-V.bcmap b/resources/js/pdfjs/cmaps/GBKp-EUC-V.bcmap deleted file mode 100644 index bca93b8efbb18a13e15025ad41d23db8267d2577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|Tof+Gg1Hm diff --git a/resources/js/pdfjs/cmaps/GBT-EUC-H.bcmap b/resources/js/pdfjs/cmaps/GBT-EUC-H.bcmap deleted file mode 100644 index 4b4e2d32294538b5093ed3870bb9de37abf21599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7290 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 diff --git a/resources/js/pdfjs/cmaps/GBT-EUC-V.bcmap b/resources/js/pdfjs/cmaps/GBT-EUC-V.bcmap deleted file mode 100644 index 38f706699f395dcdad5c6ad93d1a9b6fe9f66c78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>FyMw>l*5;>yaq3a1ld`Jp)6F z9UDVS7z5)T2_QS1g}24cj$w~fvl2s#6B}cT3ll?&EhEDoX>P_A2OurO$k5^}&9Fxn U$d&`LBcvHxLV$EA1H&G90MDZ`>Hq)$ diff --git a/resources/js/pdfjs/cmaps/GBT-H.bcmap b/resources/js/pdfjs/cmaps/GBT-H.bcmap deleted file mode 100644 index 8437ac33771536813228e3f9c1cb6c35af3acc72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7269 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 WM;6GI1F|Ee8CpVsbSMME9(e#*4Ku$0 diff --git a/resources/js/pdfjs/cmaps/GBpc-EUC-H.bcmap b/resources/js/pdfjs/cmaps/GBpc-EUC-H.bcmap deleted file mode 100644 index c9edf67cf6d640607080ad2775c14760df77dd96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmW;JSx*yT6b9g#5sk8Wp~4N)&xVRox)HTbV$ezus|KWvvDSQMS~>x=+B(ya0BUlu z6%kOt4Hc2GF1UglxbS2ABPP6unKL6=RYgKy|sm^&HD=; z+9wK$t)ehQepj)s%u_r}`l(`yg7UVH+^&(zQA3V2kz3v=XL`Ztad5W*jA@Jk##_Kd z9Ww~-#lii9U~)TSfvGcK8b{@WO6C%Hcmh1y4IY;=1Zf!{oti z6ubz4xoRc@UY-Q=dw_$U(n*6?$3RJtJ6^g;jq>$5#5V`P+ilD>@U9aqc)|M$rVo5* z2OmA)(*`C9J|6*Jb}~a?@jO@xfv-Cl8+_{m-~Hf66>}N8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|To({Gim?; diff --git a/resources/js/pdfjs/cmaps/H.bcmap b/resources/js/pdfjs/cmaps/H.bcmap deleted file mode 100644 index 7b24ea4629d0d4cc9f0cd5852edde324156ef0b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmW;HTTc^F6a`>fNJ|+U1WZdKHfIVU1k*BRx(Q8g4%)hO%E=p&pZ zbEd^7Ox8PjMK`8&BW>|axS~6oW&igkGq}l(87h;Uvv6yFZ!CT`8Fx4oMHIF4enru4 z=0tE`J|(&Hyxf(akmS7OcH5<8CAK8mJa(nqZ+l&STNO*h{HDE1f!7`2 zO)W7E7S4gi5O^yQV7GO1K*p$4;PUEKTm>RjJOVd4}m{N!QVP! Q2JBoE!O~)+#IZZH2g5hHiU0rr diff --git a/resources/js/pdfjs/cmaps/HKdla-B5-H.bcmap b/resources/js/pdfjs/cmaps/HKdla-B5-H.bcmap deleted file mode 100644 index 7d30c0500520d563d0e5891c8f4781c61ddcca5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2654 zcmW-fc~p~E8piLJgoLoDV1iVG#EWdQB!Dska^Z@KEGiKJt6VieWR+b7OJVMpTBmj!JFV@ww9{?uR9m&JOC9YvJu_$KuQ_Vzd^3MM|2*fO=e_Uydjxkk zm-X}x_qVsU4JvaA3e;J-YIT7UxAZjWl(oYHgStHf%8Kshp8npRe(j*HB|8Flbt(V< zen8o;8_@Od`=42>(l)3 z5_3C7W8#28sxAh9N4WMd$)m11OH42hj!JPI28xLDHX45P6A}5PLQrD$ZsAaCQO6I=ddkoZXMn>rz{cbfRZ!j3W zu@jQ>ynlWKk~fPmdh0nz-r9=M+xd{Zy%(c*cv$c9u-@fi{ho()froX0hxHy0>pdRU zA9z^r^RV7;fy+Kf0^rgXkn_PNTyT*A;Bo;FUMzy-BHw@y6CnAp5u=X^A^C`J#vdDC z@g;uI4>p3um-s_o8iZk&^FYJpLX57&LUKie(Nz`PcC{OTs|;X1uE6NyDo8$w!03}U zNdA6O5 z0B)Cq)E~NF`W+bn-)ceb9faYXJ|MX(2jKoL5PO%u&s{Z6y*CGdAA5lOUOrrMuNoBH z>%q(KX8`GaEhP6laq^E9ApXZ*IRAkZfP39w-GcZ1 z*f5LIpX{hHKy!>);gx&0*sJYz)=EPI+r=(0R|)l5F2!`8f6%JZ59>$tNqY5!E~K=V zTNiLc`YkgW!xod`NL;gnjCYK`5N+346rMbn+FWm6XX(^4292RReV((`ImqQXdXJC!_bHv5U)?UWD{U!X6n!SL9x#vjlBPtFQT9el&rG6k#4*p2 zVM%hYG&OLW9L%vcu6bNb7avMKw0NTN)YxRx^79mE#^|#4E2O?df~~r zN72z%SG_l%O*s***ZJU~hG4y=V6w<5*5p4e{YT;HQ7>~yHd$itVWUh5&NyeUUgcjg zHDYY!P_WhC@4@audUp~1d7ro0v_>$!VWqRup*^ zG@Ihd^E7$(dgswfeU?6DwPBq(r-$EW#d>|WVUMBLH*9DQ=F*rwmMp76AmBzPvbd-{ z`UrM~p(|U+_DhVN?C5m+jKa9nsh~~nM}8Y+vHUq*G^_qfnlDpw%s&fU+I_IhwQob9(!YiX*+$GL+{kvchE<} z^e2(Xw3o|tByvl+PEE9o$X%aUSIvD*hb200lQ$u^I7Yvj*DvsL4eUVM?hyZ#(=BF%-SwbR>N z&sWihQu=VtVs{Pwr<{I1472&JDDSx02)CG12S|>J&OGMUP#zv#oHbA4y zGWT3_lx-`u4pUoGg+)V)G$p^3{yIv_sW>Xes3s zwsnSZw^U`GPd}`nA4dhof&%eiyF|0&m(Z^(U;j;DwQFggC@3`47%D;?LXj}sD4(ti zcNRKxWYQ>SyyJzCa;`Aet#zgz9t}6{rI#i2vO?llg%s9G57Rn6dPL&Nx9<#=imudM z=}HXZU?xq@4;0PRICnY~GtxkuE8VWU6LUuv0Pg(B4VEzHMpni?XO1z5^;Kp?5W}fz z{VJQ(u}0#kHH?}wgXMvgnRNSzYt_tfFe(@w7}BK8mOh<7UKvcDIY4EBy)$d5dc4Y~ zz92oNpc!euF>KQJvkPfwgd|KF>rA(&POqm~(*?A~FB1yG4pyG2^=~b6L?3R`GP7;W zlTM9%wu5q`u2ycqlQ)&=UrSdy)2<4y3Y-a(rH1YXM|+ge*&EKL$7^J>p(~rOFP~CR zCHb=1N`I@T(Ssv=g{EQ?@)i5CeTlZ!_8no|3O@Qx=3l!t>u2Alzg?jZo08a;+tQ7T z&ZV7>v}M}Xu;GqP&TdO8C-a2~d`(=Dc`2JD@GgoJc%#Bu#H!fkbd2trO7{*er=qDG zuOQ!B;;uI?vTkIX&3(pjM!LhBo?^ QxJF!^-VRzcnd;s4Uw8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<>8%@lc?)ts_T)+v(TI2l^-9& lYkfwB*M71;l(nECj@2Kr98sav2P-`~ljyD=Pp1 diff --git a/resources/js/pdfjs/cmaps/HKdlb-B5-H.bcmap b/resources/js/pdfjs/cmaps/HKdlb-B5-H.bcmap deleted file mode 100644 index d829a231015161e107123e211d4a78110daab6bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2414 zcmW;KX;hO}8VB$j_OQsJG{|PSK#(=aRsp%;$|5LKBC^T_S%M&IO_arj-Z$Gz_5=fj z1VX@Cs}=3EQ`_lc+tJ!qJ5D>*+SPSz$IhI7m~(pO%=EPL&V2ZPdCq(8z3=n;d)?bp zHZnSKsQ*BpLb#={Fgr6RJG)Sbdq%os!ukohLN+89Ru6ZN92y-t)Txm5WCh~ELE-B;W z>=~{S^;T8=(q_#RJ5FO4i>c5VZ75m`ou9Nf8*`oVGS$>tnzf9nTkfR7MP!W81!^;V zwykXOG^!MuZoU8P5p}fETA5h1wR5Hhvv7sxWE7|U9cf4}_ ze82Ocr+9vyre9N~sWy9gv+J$tb5(N_svvFbeELE5|e?s^WIqqRpM|qx_izCj;nF%}(a1GS}GZNHzEwqh1&}Ri!&HKhz|Z zSW2ntIPEd7cLmYNA-B*NV3L@MPPUkeXu4bCiB^?qTB~$2O@K_U${6xr95Dx2kGzzx z&oLd-$5U7OjoRs~)mD0`w|~v|VxCoQNpg1wdB%Oc)&4F?uvugq-leYhSMR4EAEnp* zV$=<)M!IQfi?rS1`DId7YR)Iz@*=7gD^ur4noDzY5u5$HD)gD)`w`{X+w}(%ssS~B~R?k00w8Sw; zu|1#ONT5IXFnu}+D`Gc=vwK{Tt|CN`JYGcT%;$g0I zv-OML1bO-_y^KD`|Ftpp1dHwMrbs$z$TLU+)M8r%*XS~OJ%N7Ita*02nF(hHmqD&v z77sF_W1e)nV=>2_NuxEPj8_ZOd#;fQI!`P$OZ(Zw?%LIW9-6D#peJ;YKAz~La!+Yg zH}L*Z3=$}Sdnp8fj&m6UeslsO20+3{FjB_BXk{DEOF2dXQq@DEj=)Gg3W-LHkv0Sp zZ4E|j8YFB#M$w!d{h>?K@iJ=rDV>~2Af|02hwwWdYuuWlPZi2+}6h;;W zB-UJvY~e7=RtK_X07f%nNM?pHI#~mWJqROvKP0o8F`Dy(WUd0E`9w(OyD)N;LgL`g zS|E@(V=;10LgFgKXi)&kVk1UNd5|p0F>*^GSq{T!c^Ha3nV`VafYC}YBrCfxT1|yy zwGW4%sszBZ7o?wRhU9r4jGpg;7u!0bz6|7V^*R1NCQmF?z8GroK1*>Na1_Y?r<#9XpK*|}^Sc}@Yq*)fpvQXnKR(Qe2tekADiD5Q45N#D*l@9mn;ijuFUMo_axx?@_h9t9?U1~} z!|0U`NM7aUuO5Ts_r(~!wh@xonlZXm0Li7p7`@J6y}@CQVMkyjMZ_i8R^x>|(M2N95bAjRmK7`9#;2H+YG@II`@=)+x*d=!Y$ zM}3fdoPyDHUr4T(V{`*Ta-$QYPb83hass12wLx+-2BVu3ko8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<>8%@lceips_T)+v(TI2l^-9& lYkfwB*M71;l(nECj@2Kr98sav2P-`~lkWD=Yv2 diff --git a/resources/js/pdfjs/cmaps/HKgccs-B5-H.bcmap b/resources/js/pdfjs/cmaps/HKgccs-B5-H.bcmap deleted file mode 100644 index 971a4f23f791f75d4e604ad717735ee55529eda5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2292 zcmW+&3s{t87Cz_yhk+4LK)HmV!xluLDa-%_0}!{Q89xgv!bn_%)-tr4wyp+MR&IvNCGYw6h3((wIh9R8} zvURRQ=(1v9R}@;ik`TL!a#Z(9^u8U0 zgKvl1;C2j_+>Vvvj+y-LWSA!0DMa5MFGiq@?uo?Uo(%HoDZ!AQN{s4x5>0m_G3YKy zue*=n#Jf{S-L02?_X^PWUK!f%t)Nl&2jj&1NmAUeqQqZfG3FN~#joC^e$AB0y`wbf zUBFm47J5s3p|{iwy^8fR9ec}l=(QvCRv`8+w)<{L6UHVVnrUpxDnX;oPXnWEFqgA! z$iNXWa0H@mv<2xbg$x{_1GX?3wc}c^LkBO=xcU~zd~k+?4raE*fG>En91Vd`%pO11 z%rJ;wNnm0f+3&-r9e1A7TxRLNv)yGuPOvacFpE!oaKS*R9d})V4~E(C#VWYD!k)gX z3|%1sx+_f6ToD?&Mk2VP2wa5dvT3?&H0v=MxMDSL*EkcnlF;l**1IQ*?08$Od;h=gnkWrnKzNb7v2f4%>%n?LppLuwh(6yYa-H zw6MjdCb0mc~m!j6(Xn<%bB-I)uMQbgoP4QB+`IBnP zm11)&sm;r!_)Qk6EoLdURFe9wO^TtEwE){TNb$RQq@E3t z;@JjLzvn647D#d1@*!?JNU=Sh)b>?U{2`arbG}kMx17`;$4c?Mnbh+cQtYsi+EF3J z3u&ZY;JbDzQoACg*tM3_i>XrV4kfjFt`sjNlX|IMia!;QdO1Lfmsio4J>wx|Pq7qx z{YdSdEyXJ_q+VGj17FPq*i!`KUY$>BpGk^+6{KE^lH#=ur2Z_V*dIZb{UuPie~A>Y zPo|jHn*jDZAn|}rS`W;H$OCIA^k4|U!FWa-q#sO>!3P@v4m3ja8-qx_ktoHR0i@o{ zlj6|$R%tm@4baj6)qz}&iWKiXMC!fyQoNr+>is9A_<)=BAvfzoZq{G9Ss!t; zKH_G5%+30koAozt)+gMoPbw+)s14vm5llFmCsU6hz{yn5kMT-5#uM;qB&knJr8qvB z)N!7Szt5v-C-{RNodY9Ia3N1Lkk`p1n0Ior6rTl=`m8{TQ}ML$)GB~e{N?;SM~cs9 zllo$i6kjYO^^a&NzVssXbp8A{+& zDOYP`a{D;2wA)FwSIN=WavWXjJA!TVMa(XDWRTY-#ej2swrOMrfBR!b8ck6#XZ%bRP# zX|>~?1^R#E?G?NC>F#`99!0z$ikav0LRrAPkWpencPTH3GF}vm7!_=*)J$#%$F49% zxmO~3hDh=RGAC=`NkQ;TG=panbE=M>$;?w3yevI}&@&x1kJQk^OUIMRayIA8W;vJr zb6Cz}Uq0tOhPtPS?ekgZ_u(mJR$8d1oO2r4zm|EO)I1wd@6!!r16b%Gfwd3d0ynk%qAp{S2oUCK%2jX)&DX{IlkK6wz=N;1I)E zhyjLkG5Q$J1`0KtPqCvp7)Kk;p=dFhr*TMgmh>^2=V7wZyomCRmSFTXT9(L%jTZh7 eV6=`zFQYYve2mt3Of*_2X?{j)l{Um^UGsmAm(QgD diff --git a/resources/js/pdfjs/cmaps/HKgccs-B5-V.bcmap b/resources/js/pdfjs/cmaps/HKgccs-B5-V.bcmap deleted file mode 100644 index d353ca256b54236a4acefafdbc08e5b719892014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?ctrCoLsEyWUA|t$g|L!;gugB m!)tv;hS!D+jEzi8jE!tS%mu`JKr95rVn8ef#Bv!7ulxZLvn!hb diff --git a/resources/js/pdfjs/cmaps/HKm314-B5-H.bcmap b/resources/js/pdfjs/cmaps/HKm314-B5-H.bcmap deleted file mode 100644 index 576dc01112bd7f28c30804661f546ece203c53d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1772 zcmW-hX;9Q>62|+_CEy8y9C8dzGJu2|ML=I^i69Frj-ce=RRZ<=ems{ZVz@n00OLs6mXL4yS)n(eWt+g{b8nYHPhBhV` zV~s&}MupK|AES5C?@aXe(gzPD%ZWYP%&}bo&G9<5Xj3W82dfrZw7-Togc}@{-JWu7 zce0!suUp)3Nabr8nU|gmbTq$cUTuyws~vn)ihy3niMSzcSCUz+KiC@68g0lk?AJ@h za;+}3ccrOb^gJ)gEm0~D%SBnvXkD!LvKuThq?$G~d6{cYDP`!Y8Qgg?O0Q~MI<&j3 zWZ6MN93R;%yHT`+! zWVu+bG87HI+*#~p^c3-5M0_JTTK@HOFq|re2r#5W94vrsV60Xttx3ODFEG|GHYRLK z8~pu{o1L9&S9w=`cTV>qTbt(U>S6aTKe?bMZ#c+M))Cgfsx`&FHMJ?dBl3j%2}P4% zr&^b;wzU?B8R-DeqQORPa#k(3mi)5ojjf$==A_QUo%OwmW#+BA!tui4Ej_lKFP~k~ zRoD%SCOlL=){%dvtdP^Y)-F62+*3ECv3=oahH-Vr^2y-Iph>0Kf3S3{cywQTWLv1N zPPuMi?Lg|lMzxLgQ|a+akRJP~oUE7TqZ-RPv>iFkRA1A!-B6--uzn%7DFk@DQ@mx% zUVwiyfO&fn*rRf@UVBo~Q{(2`AK4$&?%YB04u4aHIc`FERBhyqPL0YVTlzAMp8MUc zkEGvRM7|t;wud#O@0??=h#hC-(I^l^v6QKYT9uPLM8C)i6h@Ex9?PoU&?*KSV`VpIa z9{FTGv3EBje@`Oz-Y(?t3;+E?$UjIV_MsQ@4__ko(Hi6*RTKMzpv%XCE*}fJ{87;5 zoS@4&L6=ViT|N30u;xjL70l&-Q^Dk@B{z?qwTuC7IxhwL|Rm3b2_==?rz#@TUO(SMa zM}F0r*wrHBUjz~R(jNJjFB1C-k$KhBe@rJm`4MCrqf<8Bk$op0b1m4QS%-aqC z*TZ4aZ9%WwdvM(yf#n+n{&#i}yK@*F?=r}~yP4SczL@rXF2IxyiI-h}Qi56<9Fqia6^HFzX_;UMLNmXBpVe{_ekxKy8fx diff --git a/resources/js/pdfjs/cmaps/HKm314-B5-V.bcmap b/resources/js/pdfjs/cmaps/HKm314-B5-V.bcmap deleted file mode 100644 index 0e96d0e228e0608f77f035655140c6a235d4ea56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?ctqkY-pnEWUA|t$g|L!;gugB m!)tv;hS!D+jEzi8jE!tS%mu`JKr95rVn8ef#Bv!7ulxb;p(_9Y diff --git a/resources/js/pdfjs/cmaps/HKm471-B5-H.bcmap b/resources/js/pdfjs/cmaps/HKm471-B5-H.bcmap deleted file mode 100644 index 11d170c75ed8696f0705f9fb9f5afcf3b0aff4c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2171 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 W3S-b|;bUNIW?^7zv1XQNu>%0E(j#{O diff --git a/resources/js/pdfjs/cmaps/KSC-EUC-H.bcmap b/resources/js/pdfjs/cmaps/KSC-EUC-H.bcmap deleted file mode 100644 index a45c65f008e7d6ff34edaf53af15ea471d4f6d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1848 zcmW-i`CC-i8OOixy)y#?3=?IQ2uv?U1Z7bx1Vjvs#IU1aP?TlFfka8h8Nemd^tlqE zY0{)i(l!C)+;eVZ(YZ5oO(85Me?Xr;PnRG1OMmDOZIdqcZ|Ir+a6jjH&vMW5e&6?1 z{(8DH>z9aSZHI+weYU+K>S3_5VzP>wC)4?~Vd~I)yg(5dXk-&8DYE@eE zYf=pZr-eS649DE_8slzhYA6a`Kh#!yh# zPV0XC#L&G|T|0VjoXY3+>6&}a?{v>~rR2>Gq~^_q^n?C)Q}o8}cRTbW>U;rVzKBxh zi>YhAOxK3yXLRk{dwqK4`TGa-3g7)%ukS(O{pz6yO>*%4{Yktn@#6~;AJj^Gn4LsK z;wQZlA5}?woRP#eiJ!hI@v{RGKX)W?MdBAPOMFt4#H_@pgA%`dN#a+zNlZ)p`kcgP zH4>j^&Phz_TGc{3z_Q_3xC1N>!@KYf~RQ{cH^jl>Rs=Mg*TK?ST%UH z!j6I;13ON<7Q8-O_D2J(mUx50>Qvqc?gwiCKdrJ8;IF2!QxL@pYbWtNh*GdFhd2On z7_6H_rBl=>q7JNw#7Twql4u6&gYZMh^Y%mZtKu~hmmo$}c3u^;WD?j#GF2xV3^e`8 z7-FMRAVw2l3?rM%7h?xOJYUyTUI2L^IOL7wePm~eY)8?<<=f`+8EKqBmdKE8Cu)RG z*UH6N;BgJ|#9i8FW=S`gl@ed1C-H`^l{`8FtQMp2(RJWa1NN=BaP^Y>Z7;A^E5BR1wr8!54zIOIBLe5zOHI(c4R(IO z`Ij%SJ$$blJ9TqS*gW*085;rp5VqRGd4D%DqE`@&P&7om%^3}YcOZI;c$X`B8@wkq z`Xlf@SgGLsu-xG16)O#VK(jo=2O<4v)qr0P*Z#u*A0g`qcz~>9;8z^haqu9l28B<+ zl3u^2SdGN5E7mFSkjrWTdl^<6@i1BKV9hS86MR~+`oL$%dJX(0Sr@=s$QlH{1?w{S zZL)^I-v++}eizmV_$;hZ;_tw&CMy6zu*M)1`9x%0g;2qy>|TL24&iiI6XB9?4Tu!g znuJIt>js1yA{|yF>2~2EYYHOMW6eN#5mT`{p~f5#dmyruSSmygV(AdMh-Hw-qnHPx zAT8#F*ssP4APNyHf++IFiV-b!#j3-e?~K-1Er~O(*epbwl&&MLLUbUWn$%!i?%hf8 zG>ERS`=5q0o&nLT#`i*;EsEzt^p(etKC9i|IrD%mfu$sus0J}tXF3de-=fli` zT>vx3VZTUbzGC}eN^?KiCB!bf?NXRUF6kZ9M|LetjqI0TexK|HGD|&nBbjBe+hJCy zc1OVd+)&KQ4?SQb@3p|F)BP~=yf7-#U`)?|%^l||SZ2R6r$vNa)7#a4(iw_W7k&Y_C! yV!7M4%-TEI$l7s`XGdn5p&eNauv8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^gB>>l*5;>yaq1a1rCa3Py%~ zRSXOV8JL*%RRh^|EZqC*bs6?^H=8o-=V4>q&&$NHpP!LozW_JuenDx5{o+8j1Q1I~ IGw+uI04wP+sQ>@~ diff --git a/resources/js/pdfjs/cmaps/KSC-H.bcmap b/resources/js/pdfjs/cmaps/KSC-H.bcmap deleted file mode 100644 index b9b22b67879d4043c75b617a24f96b0bd47cf4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1831 zcmW-i`Cn648pfaZ-Xstpq{U(4L1XORb!_ZPeu>guX1 zE>>69d7H-P?uESmXY&i8*?Diaa zWmRWeOKZ2kmB{DQ4+Ft#K3^cDYuEJ_{Yv0Ps;*spF+pX^r*zG^++uewccpli2U0!D zbNbnqZ&UP!?r%Hv3+hTfVWp5#R*I-=rBv4fD~r0;_nlv_xb^akUhaLls3t;!n0D?n(UlGl{m8S0;@K7)-O=bdYi7Lua5xhgXmqK*0npY8-Ul1P&RUd)G>*DSCG2yLGDwfC~usdX^b~YGn^!oyAR0?FX5!f6?HkU8P&VqQJuBkj9@IxPdH@A=^$=3$Lz~iJQRNYIwwRI%Q-@Hy9NX|4vWhfvy$5xdCh!q2SFl z@TMN8ww!XCtzx>pC1s{=1K1is<+e?>izwK>M9%G-x;D6dSN^sa*r}1<6J0y8Q%mP} z+N2SIedjT-JByqhshghNlYkjU#;(*<`tF<@=||)4b2+mWAHA)Y=Xl$pYyNj-l=|-1 zda)zw0Nz!iKPsI+Fb*p(Xdf!U;qZ%Y9Mvv2V*lK$ChP_Eb2w-ZdqTd9=siRu6rCg9 zW{-x!I}m+Byvq@N3f_|%{RZ3*GZnlarW5>@Vy1x)Xr_z!AfzA7YVe_O&4dqpgv<-z zK{79a-?N#Q!9y_X6+Q`5dVNYU8;DOU<~8s+huIAF8O%1~VKUpnnjB^)_<~~k!57K= z68tflx51jp90Y#?a|rw?nE~*xz@LFXhdBbi1ap-5*RZO{3_=jhF$hII5t-u^5^UTs$e|mZF+75UFH7f^b5l!;B=|E?i{JLu9(lMF=-yDvl@Bm<{3tM3xdu zg~&lH9U>R83=$rSxghe>Vs41jYAhe30I@=dLU*hP(Go|jD(t%NYmL>AxZ#K`L9|Kf z+Ttoi2jZzo4aVi(ofJ=l=n6X@`0Vivh+Z{*65?iIJQu=W7Qc*Ne&vXdgfpgmMezy5 zrnQ6vBIrt#felci7Gg|I)Io%hxC${5&YSiriAIR~lxTvOLPCbj4A||=#B~x6k&r?3 zNJ+>D3Pa2*i2)J|YGM%L2_=RV@l@*EmKcS2UXlofOJ;mFD;Fg_ux zo{SQg)j&omtacdXs?`y6&iWLi;zt+Q$al@ytkqkv>2YJTJPn%*E8SR~Xu(>;ax>N^ zgSOd+*qQvk8}G&%5KaGK5nH3d(%DbitR8Z|m(`%|eHma4Lwi3aL*yq%65|s8Y1Xxm z_q=pvuYuIPr@H3eTcXZ=naS<@cjStGwC>B4`qOE+f0juh@bhI^C=Rj+2NS^l7*Y-< zWvV!sqs&7GIS+HF{IE#wb||y=~ivf-csQK7Np5q&`=XgZdQa)Uz L{tvCv`X&E=BnB!` diff --git a/resources/js/pdfjs/cmaps/KSC-Johab-H.bcmap b/resources/js/pdfjs/cmaps/KSC-Johab-H.bcmap deleted file mode 100644 index 2531ffcf41acc01338f781c845c7f50f62fcc84a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16791 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 diff --git a/resources/js/pdfjs/cmaps/KSC-Johab-V.bcmap b/resources/js/pdfjs/cmaps/KSC-Johab-V.bcmap deleted file mode 100644 index 367ceb226ab1e33624b30512716a3b65feb5a100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%l_>y@98n565GC~(t=abE=^ z!@ep8hJy@DO#7;V>^c_ief7Ew`?(uU8TRwAG4AJOV%X2m$gp34n{~gSG{b&zAX@^6 KC3TtiO923;%QA`p diff --git a/resources/js/pdfjs/cmaps/KSC-V.bcmap b/resources/js/pdfjs/cmaps/KSC-V.bcmap deleted file mode 100644 index 6ae2f0b6b7238adc67bd9231668d9853ea3c8e1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>K*K?>yap+sKmIhf{|fg6$8UT z1}3I`)j)O~3-`WyU55SK&87_ddDs~D^D;5)=VxTtFTl;ZUr?H1zc`RB0mPEh%=@JP DC895z diff --git a/resources/js/pdfjs/cmaps/KSCms-UHC-H.bcmap b/resources/js/pdfjs/cmaps/KSCms-UHC-H.bcmap deleted file mode 100644 index a8d4240e6adb3ac1db859085b769a0715be03c72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2787 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 P^z)@`@$;3W7gGNZsUm@q diff --git a/resources/js/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap b/resources/js/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap deleted file mode 100644 index b655dbcfb123ed06c7eeb87dfc96ecf6759363dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=N;^vTdW)E;jHTsuIrH~uy7IM zz6wT$eN_w$2N{@{_EiJfbu8Tb>UA0Rb2pnZ?B`))+|SFzu%DliVZQ)3>wZCLhW+9| NwgeDMN;B`50suw^GhF}x diff --git a/resources/js/pdfjs/cmaps/KSCms-UHC-V.bcmap b/resources/js/pdfjs/cmaps/KSCms-UHC-V.bcmap deleted file mode 100644 index 21f97f65b4a61adfa13f55d5a096ceab45eb485b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%l#TdW)E;jHVCD6nu5x=3`|5QW_H#FzGVJGJW8BZn#IT>Akzv08H|u^uX@>pcK(+)B KOG-2EmjVE*uriJS diff --git a/resources/js/pdfjs/cmaps/KSCpc-EUC-H.bcmap b/resources/js/pdfjs/cmaps/KSCpc-EUC-H.bcmap deleted file mode 100644 index e06f361eb6d429290806b9f9cd7a0aebce22be4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2024 zcmW-i*H27iO?oT*=I*WEh>y zWZwfw)x9+eYFE?kLGTF?ZkWX&sp}x1yUFzOj=XcJL{@hkG za{2n`g`xA~u00hMC53xSN-A8{=SKQ{uJ-F=KpToUWs(J`+TmV;>Nm~+UE9J5L641UahVi1pSv>ge>ZlTsm4xiL@ zUR92$HR^%xThXer_tqfgPo=AheX7Q4pK6Lqo$8EEof=W|YCeim-OV30sC(q;48pXN zqNcN`X*yR`x~C^prS0Q(weZC4ooa#W_GE(VPUh|6?mJat@RRKk+z|NoDS=PR1U^fO zU{v5ctpeXI68K(R1Q!Lqe@x&9I|Y7diJ)KLM~4M|?2KSi;3r)IKix0zvy=$N1%BQp z@QV_GU&c=f4691fOg*3_!7_6lnC(Hr%m7Pp@|W`a?N=-A$JDlSJ!h)XdoRZZ$n^{es8+ zT#}v752-uc&wFI&i*4fNMWr0`;%c*HL&}ghqK>#XVrBcrG0C>kCRsO5OSI8jo4(=o zxHoRf&X@aJ<6m}q+%E@Z=c{aWN9ik%+US0DMRvX}?TC5Z=5fF7mYr`hI^{PNkTyqa z+;0xbDQ|8R#BXldVcB%myEk*P6E^$T%kk{2-~L-2^Xa&IF=;+SFlD|Nvy-v&??TIV z&A0h8ey8u99|KE)<|b_?SSo3GR+a{>0D(M-Il&ZYyJVIPZ8umhv_fJ9(2BrzOIk5l zv83$HjCKe-OVa9z?*Pw%)@0#3 z!FNMzCSGXeB@!=()$LY1y#wucNAF2Lgu|oz`aVO-?xix?q}1f`yvwL z1pxOuQM6zY?F2FxO3A)(TvfUj&WO*p0*hthxvDB#7Rzb(Vx2HXVO_ieJa`Yui$dBh z54HlPA8`+a>|-B{h>;FdJ-8`m*5aLqmEs%^8&swJQ9eaK`j(n)3)p~1Md%1Py!6Mv zAe`p4{^@h9_S|a5)AFe*EbqEgjVE4p7gp;1sejeu0{sY#QecEwoi*SGYe3*Cu_jyK z8dyto;6t!>n9*PzFzsL`Br^uAQ!yRHx*+^$mVll0m;Fr#>m_p!n3v2_uzriV56lO% zQes0eh1V}irkmI$$vgx$VlzF^4#TV?<|nfrTD8q=1RIykcCZODPl8<`^At1>nO$I4 zVV(uMMrJqI4Y2EAH(~aIO~ULW_5s4hWO~5~<^Z@Pei51Hz-4GccJIO*1h-nuA%FJQ zI(U?94ueONc^TXe9t(3c;&$#Ja|}G*VNQT2ASh#PNDf-Sw}2-~!D#Sg1Y^Nd5R4<9 zNg$PYdy zg*u6k%b_mts}$;y_%)$(OQ;Y0W=_cG&-u4*3CF^)!HA~tJ1}D8@K%^rWW+%`L*Wz{ zTPU0cBN5>Y7|E9KHZszrunUGTw^KNqw6peb4h*MFc*k&2xD19u;r%eaLE%a=avWhd z8Mz48!zhr$4PN_OT`~$kb3p6;*aN*>t%07J0KFgv`uKD+W(I38>z?vpZpdqS`yVV0 zebS6a18xLjKb^q+K5y<@qb}S+36Dj=s(73agnOVo9uOh&g)M?}0>AR8%C;viI`G6z z@{?<-lJI1b8ka?}u`Zt$D>_iSEVBL=+mZ04NDAFw?i00aC6TZ)2rLgEYGp{Iij@(H zU$v2aHJJ)lv&3$zqOd$oLgG^kIi8A4)BRM`E39RbXU#&XYez-TTCb`^Jv&Gp&uWGB LRYsqvzytpSc&T|h diff --git a/resources/js/pdfjs/cmaps/KSCpc-EUC-V.bcmap b/resources/js/pdfjs/cmaps/KSCpc-EUC-V.bcmap deleted file mode 100644 index f3c9113fcf0b02e1deea8246bfd27408becc8401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%k~kgV$(>a6RLD6nu5x=3`|5QW_H#FzGVJGJW8BZn#IT>Akzv08H|u^uX@>pcK(+)B KOG-2EmjVE${4#z3 diff --git a/resources/js/pdfjs/cmaps/Katakana.bcmap b/resources/js/pdfjs/cmaps/Katakana.bcmap deleted file mode 100644 index 524303c4f0c20e6cd19aa1d35805e98c2c05cb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100 zcmZR25agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe y$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55UU{bJea$}HdW(NS2fFFMV diff --git a/resources/js/pdfjs/cmaps/LICENSE b/resources/js/pdfjs/cmaps/LICENSE deleted file mode 100644 index b1ad168ad0dd..000000000000 --- a/resources/js/pdfjs/cmaps/LICENSE +++ /dev/null @@ -1,36 +0,0 @@ -%%Copyright: ----------------------------------------------------------- -%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated. -%%Copyright: All rights reserved. -%%Copyright: -%%Copyright: Redistribution and use in source and binary forms, with or -%%Copyright: without modification, are permitted provided that the -%%Copyright: following conditions are met: -%%Copyright: -%%Copyright: Redistributions of source code must retain the above -%%Copyright: copyright notice, this list of conditions and the following -%%Copyright: disclaimer. -%%Copyright: -%%Copyright: Redistributions in binary form must reproduce the above -%%Copyright: copyright notice, this list of conditions and the following -%%Copyright: disclaimer in the documentation and/or other materials -%%Copyright: provided with the distribution. -%%Copyright: -%%Copyright: Neither the name of Adobe Systems Incorporated nor the names -%%Copyright: of its contributors may be used to endorse or promote -%%Copyright: products derived from this software without specific prior -%%Copyright: written permission. -%%Copyright: -%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -%%Copyright: ----------------------------------------------------------- diff --git a/resources/js/pdfjs/cmaps/NWP-H.bcmap b/resources/js/pdfjs/cmaps/NWP-H.bcmap deleted file mode 100644 index afc5e4b05ee6f4be4f17eb616742b59aee4c5ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2765 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 K#KF2yhX4S!xj~o! diff --git a/resources/js/pdfjs/cmaps/RKSJ-H.bcmap b/resources/js/pdfjs/cmaps/RKSJ-H.bcmap deleted file mode 100644 index fb8d298e9bb8e090139bbc5e958f11a237672825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmW-dVM|kS6vlV1!_6jlIAtre^(Q4FZ7qdzD5oo@Ra#hW!6IgQZI@-tuH22r;(#pN zc3YNZS(fEYv$QPBvQ!BADC=#XqScEBemwl(fk!HbNFU1>Bk}7gaWoL{A8z;i1EMFU z4{IWvNv5>Xr0BhQO*h7LLrrNh->#lSLj3oW!qAeMaqC|h)->Tea;}$x{o$YmELjUc zR{7a&frS$QWo5ftfMs7cJ_O=wHmj={)2+bMHwYicfu9^8oM{H0876!>2>i@TINJz3dxh|M1o(xUaIPMBE=2h9Jn$=- zaNYqt-$(7G(`^H#%Fe=N;MX3)#RlNTFyYb#;5Saf(o zt}4K*<3p7z@0?PlvV!j!_(PZ4@LR#PPT;jP;l~v4rw+n(Kk&Lv_&EXmrIm2wAn-<< p@M{eCTQlLN0NxxV{2m4V(MY(p8+a>1xP1xs@6@aCX9<2q{{oKurl8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T7UUi5rR$N%+UUr**PoYhZy+br u-e4w{y8J;XlZGnYh++xso>knU|bjRFGekSdyBe u$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55UU{r`}Oa}lMG#?cJ diff --git a/resources/js/pdfjs/cmaps/UniCNS-UCS2-H.bcmap b/resources/js/pdfjs/cmaps/UniCNS-UCS2-H.bcmap deleted file mode 100644 index d5db27c5cf1f5b0e66e16f6314d042a4ef707222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48280 zcmXVY2Y6FQ*7ljXO;=s+z1!GejA^EWFTL89ZQQYuJ8qcXAtS3;asf;UgqDyH(jg>d zVHc83*aVUV$%>6h%*OwQB&3mSc2mAh|Bv#0kDn{)O83s3Id|rq_q^wf=|A)5t!>}7 zeoaH;#<=m*re%(ukeN9xPN`j6T^CodZNtX8)(vq>+G^IWZ(qCKvazlRv;?*R?BEDXp@gMc1fIZycD?YR31T0t zgYd5c2z+I-@G-9f>uUpG2Xy$-*Y5vhP}Fe=jZ_PqW+&wY6-{9CnU*jU$BYV%5BaKI z4GM{Sj=2;|MEq*mTATuGE8e*Yk1cp?#xAjUwiAyX3}04qz$);44IYgY*lq%B7s^(L z=dF0&CIItyy;cNP8w_lf4p=#!SE9a4X8~&n2i9Z};@f4L-Y&-4CJ?aY&z3v3t7RK+ zq4Af#$gydFYoef}B@W=*gU8<9;3E07-Y&LL49dN1uJS5;a0~JA1uEiWn zv2Ym<%G}YYA$J@h%pI?gj1%?>e0|F;E1HZ$%$+EL3MT^nV>(DUp9pBc5|Hr`9N3%- zwoz<3)By1-cOoh<2naLc5r#(;9$FlbfGw*e!bVe-)xye?I?UE>z!cU*tif7pHCm)h zfqprCTK<=cOun2#S3U?5;LBM+zMO2G0AJNvgp8XgTZUiCOc6hg$0z5W*fEnZ*Fr^{ z_?R^)ftO{PivwM#a5-Qr0Gz&xwRqCxZ)d69`H9X2`tIGLt1PUike(C5`sQnogXR$u z;#kPD_z-Kb`cTnwR-x;P)E_Pod$XXgOmk*efUR0S+^BJ`h_Y_rwsUqpmnQCQ3EofC zLXtg8b`ee2O#Z|Sxl@2g!-6}Nh>prwSDnGm362WbTgDv>6>VGjgPX_`v*DBiPsWi$ z(=^=z*f$b;rr0%>vu=W(YzCc5Se$5+$6Golaa0#EEzsfb(O;A%~Hv_W-Z zA^-5axliN;oQzZ-ip!i6^>~%Mzg~JILVR)?+1oC#r8Ibob*Jj^DDiBnzLCzS4ioQ4 zH#&2{xzqSW4fKJ$Z+-NB9p4qiJ13LA9nvGI;7Fh6UNFJBksM2oU~K`N!Df~a*`aVx z>Vr?{s4Sg`i*U{)N5*lzJb5H7ASCjH7EWryP8zx1wOpTh_Wqo$wkcfqbiO-W=tEAcc#84M*a9$>B$s+Z!@^I z3Ej!kqti7EqvI6PZEyr|;w zybu~}ou-{ByL9;{YSf)&bf13iJ{oeMK(%+4;gP9gZ(4+Px$0mh*tf_hxWs^IuC>I~ zXk;^&?w5>gcOcs)@7);6XY|CU^(9c&i}yMv_Aj+>trDuGR2x6mw64(x$A*}Fl`*Ly^UW?Pa9?@ukC3! z*mH!v29fR1xOT)ay}?>9c7zgJM9|^orl-=hj-U{CV5lu?R^+%$U3cErj*Zbr*K>zA zgdNa~jhb@0Wy;}Ew0p9uH;(pfH5?g5I`gO_joO2uYi=?JU9qH3KhHUn%Hku%=|?JK z*`j#XklDF}@S-y-ts_C>Xp3}?5nYgYYC**_yA^KI>&&%dXPR?{sIc%!%UM@orU z6k8}8V~pf^NDk6MINB+$o{R~!mj$!6z^YVij;=)S+Du&IBDzydHnV77HKC&}u_sFu zv}}W(kL(OYzd}eBHC_h(d$(LWhDWLs<~Zr1G|zF(N`O~fOqc_X=Ff{OO@Uk z%sJC}H<7!lm0r_odq$inf>A{Ck7hTJ&WBVn#MZFb)}mS#Xfq|+sw1feboQ|!_Dmj@ z+2dE(vsUq`Y)(9zZQ|8DGpfSD#7mTwvfNa*I?cLbjI}aQWm1`_1QvCim~Y(y9b%R? z#W_02nauPmBXmGmAq}uE%d+Qf3INCE>b-&5&KOO{3OX~iW3&dsR5Mkxc;bkk>4-B@ zmcdV=0glP@9NFoV#kmX_u86FT#?&4i%jpSeSZ~(kNH44#Gzq*g7%(tvV5u;$j8mkX zAp3g1-y%H7U_BB+W>`p03~{t60XZq|RD$c0C6RpeIrg2La~okvP)OKRu46K{m84Uk zsOPDFI5aUQYO5X8tK-L zj7@Zqw=7CnzB(vyU}zO-+G`0zM^sqq#HYP{!_w`w%!RwzQw zpO|$f`ICmcSpm;A({nQ|a?V@Co=Ay3g@8R-pc2dHVXc8qwJ@3BlG{h~yBu3U;4I zI^)cNx%ubE$o-tDU)3MjpW@xaj|o$c>5uE@`n8eXZQh-VD!1YMX!7@R@TwpLyc3Cc z0(j>@fH@*}{eRc9f9&xZy_{#as1>}N#?wYU>%zUN5UqEVS7q?*@lww&FEDEx^X*a$ zxjpU)B#Hnp@qt8Rbnp-^aG-|}DVatPi5SghM!qASyxw?Ma{){McQC zNIjU-pw>=*yGVGxg&v&7ca7IR7GT!oUVpiPT>y3=*i-5$`L*)bX3xAxW3WPV2VSlK zm06oR^m3!8S@P6+ialkrr#URpAS>$JkN;Z_?y=&pOUMlc#*!Fdcjw|U1H3rV|L&Vcj9eHA7YsC&1S&L7xP-_MpUjW{n#i4~6^>T&hw3aOPfPYq#9#H7#>0(e zW^JBnpTc=(dZ)Yx?*)4+yb2fWoo`gcyqHT-;GG5DGVm_*_vI}%>++KKP362zUUO&) z^`?6#vp0ACFe5rjQRPj%lnmb%!nX^EiT4(8@5P{Qe4JU6x8TY`wJ)-NcmKBj-G=@x z{X6?NsjzkP6*C!2`quy(TnwyZ8hj0AIj`&>?ceQ_`*+F_kwORxTSKlaMPcg>^1!?* zyrS{-sV+-m!q*~ubq`+3_2(%8c^ePPXpbaN(P*?T&I(?VIF9H2Ygz`CWRjiJK}U>A zVBY#Gvms9JDgpzi=Yjzv9Zn>{z~NKIfD3dyRlDnn8qqkP$G*)G&qhcNOR&2fMY%wZ zDN0b@#ben-jX|6wazrgUc7lX$2q1A(EfIkPaRyvPdR)vLD6x4jztu#H7>Q|UD83p& zATnO00g2}rCJO_G{l5!lP4m@FR6jLiio60dAGh@Ks(l`j&0@Hd^os< z9IX%NGofaGKFzboBi;;^3?FP_S1Q<*;tyIr*rvDeW|8=?x6>*BAA*0Mps38oGdd!n zNunsYEuVl&P&8)K5Kkl=3*c+#b`%V4Aoi?MIJ55Cg>bYi>JgnqGLI!A1_J$PgGTfK zXQu!>vkAyQw-fSQqhd18u~k3@G!YEkCg5YR>hXo5TC7F>54B1F*6;_J55_;<_;>^N+uUEbvR`IgF1cK)Nai}*D#9Y5BO4qW zfqmHs?0+!Ci?I-ME3v2J1?!wT&YB0dB!5?2w_Z5XjNLqR#vmTZ$9^_4_ZfxO}t>jLM49fqwF%rM!h!iH%3anK!S#ev z=MHk90s*IJTZqE^NE{Lc_i{>Xt1%wlM5%o|!8SQ?22$cQS-5-|&V^Dq7lMvuu|+Wd z0<0^Nz;AfTR};~%IO8$yeyCIt^Fy3LAPZd^MOPwfP*nK*z;laKtjr%|;z{gptKn>n z@c3Bh(OZQ4G}1YP12@h%w;4wt3gkkN5|E$eF2JSf_mPsICH4|TSTedje;_Uijw~V| z<`ZxgO8Jv71nTV*hZK+ zG4E-kMazIIp^a-!Y7uFgS&DejI*Z`P&?y<&UDHts{D)W zp$d-IfN0;tb>@I`j^5S|N4KH4_sFq49RH8DIAEh;J1X_#W4VNrdw7cS+7?n*9A|IC zRzJU)jK<8hlyJ1Kk#=uIE&N98lL`E^jUx^n0cQx#=IQth!xdA3u4ftPi9qvpvKd$k zunclMh&vuk{RV(o3&nj?`9rnDv01!W4%T%3#9~EPpuaSi?%xiabS9qU(OSx>ABm!; zBDe!H=`rB%m4Y2tVZkWY6~iAj3&r%DIXEu>%$IT)#g6ezY@k_5JJu=}mb|5_Z; zrAOQEH<|W&da#5%nMPPTt_+mSrKQ~)_>M-u(J5GdE*xruS%u2FL6HjPvc5%{eS)6J zI6{8^eEP%=!BJw73fhS?oIvM1JmwSXt{~8}f`fgld9cs22nFlm{7e~MUN684?Gl_@ z!IAT`EL;Jar-yc^kQPH5${yOKa0QR_Ia270OX2N!KM55D8if|T{LkI#ht?|Eg7d5^!FX^SbWg&# zO*}Q0vy1S22pkU-jt4;BTCk53>=Vq|g3lbWoK`SIM9NVd7pkZWzIR|p-`B(GXkY`m zGyp;g`yrdM@8+SGl+A`h(V5!6w7(!2*QJ&Z4RQ6c8cLDn>gMF53A%&Ak zXNjUMoZ4B0o)bV#Mv)YRT@uCEgNR(9A{9XhgZzUP!lR4vrn1FqrGrdUat2*(?`szmV+Np)z_Z z4W4zLcB%-4Hg^+P?G<>GgQpr%n!d2hy-D`0_pD(L^4Wt1L~E_qhc+LNWgpiG?Bk{E z&=iF$e8jz;uutpBX{|Z9@X?EWcocgs`=E{;F?*IoB*&Rl@t!=jNAVPSR#<`R@W%SPGaFZq zzG7jW?d<)6{_Q>@^{?;W<)av%l&H8nJDl47or<_}#+7y$Mcz&XHZm31!FABT!z{0y zcQ8frseC3j9KbraG3R>rKIaQkv@3HDju!mLC4|@Do^jIXeyM$V0Gn+E0qvI zB5}AXgG@03Sy{lG8FF{DrjsK*HG(w*x>R7zw2+mX$dz)1uH5qaBBUuto7F3KJiLP+ zNEsjl{J_M4gn@9iEeS{9U@U{ZYaUR&yDm*X5aOK}UyEETl+BPKBA}BE!v$;du6H#mDnh!_$UShht6nW#p-V;i;;B*0aBa zv)8isRUXovo~=kl$-itRAI6fwco-3h1b2+UF2-Y15vgRLOy8wppLzo z`OhgMh7sdPu%arOb2?Nn@*IcwvRxHIOdu+zqFKIh1e`LGJQ78>ekz0*aJ_Iu(y0CJ zZ9PF2-tRJt=KZo;M%)W+c&BuE@o@Q{kmKaFEAw zbd%w^icr*hb{f+05^sw#Sc|Z^1H%gEOu(tDLi^^&J3>+4w<#KgTGPl=^XVgt@YW~E zhXfV<)H7QIYpGxdzu)5#85KSAA?FWoK;{uyP;@k0(K*(&g)qI;S&27ZC7&!+G)2RX zu{d_N8(%oi+Ad%>ydc{~^Y${uSoGKDn$as!fyMbfC~4#K1U6b?ll<3WS0bnCSd3Am zq3E?=R&g(+5i7!G46JNgjF^~_ctO)6sQYBX5n0nSh4xIhsEY}?ga~)vHVRiZ0vyc3 zV=BOv4fu|b`1MkNBOyFFR;!TWSlf1mD-JmoPdMq+LPaVLx^99m7V|^nz*Uce{iPBP z?68pH1adAy(G;gT$AL&OMnT|+i5sZ{<1iwNXsL@wpUX$gM77KxcnQT5zTc+3m_<(p zLINFYRu?ZhU+As!Rtnx?%5yqzC0=52@1m$Se{+hexcY)301d{0_@4&CP`sj$?M2Qn zo4dS(JF-=>rlBAk$b~tISiHr(omUI?2ZEXprJakRb0P`ESuGbo#`e_;)=C;H zJ7w`%6Fn3u?5p4$m3nKmSzG*%E8D&fIk1@xm_%Pla)i&|GcuQ+xdeO~pI<1y@UK?v3uT+3Yr{jL35`?tycO{1e(Cwi(9xUwV37tMy_SmzGkWa`su?(A`F z_Nk)8Kt)wzys9NXZYMvb@rWgjsLTN!yt~t^DTzB0E3m%?eHDmi()j!8-&?6}Kv4LS z^w(ScDu;n&3n|GYMLPbzhu_+SmIs>|Cz)+)ozwc z7JWbWQ^nmlWac$Pc_Pv-CFWxd5CB8jFq8{JWq3*Pu{GRK{ZQRdJv&^;4zC(&W_Q}L zrRrntDw$BpQI7)GT#rLTXr#fSiWsSTI#J^lYksPudqV{`!lVk6ecP!~!xOZz!|}S| zNrN*6vy8(Fl;9HksZ?H2aVq<6oHv}PCidB2pT~2&ptkR($U@*6vQ0(2f`8P8Xjw@t zaon7V_DF>(V?Cw=)ew(8tGQ@Y76$$*WC(Zx4Hn)bsa#Ds9W=-fU{rusj0&AC7_AGq zI=k2ZvF6n!M_G3mbQNl!8c&@?!V?Yr8(HwQ#2-&KbWb-Pi$jHukY~0kT*;TV9l+Go zQHEo?_sn);P2p_`>Yj~?RPs;8O6iqo&V^=D`dd3WH4i#g;hjH{BXNqcQ6!1}uuO zXt`^gg_MR9=Ojg28r4O(13WpDgXUKtFJqjq`ojWIV8|RRv^4#kNYfRrG?uZNfc<#{ zEK=zd;>^MTwGgp+JAv~hm}@}Ke_;V3T{!bgmvm9MTgctsf|JS5KzK@Ea2(k4u-9U; zpD3!*vi+RUJCitP@V#Xin)qXejbKL`R9bO0n0HN(4^2hcF&@u1t4rHQLiaDUrn9%w zthMYxJA1J1-JJe;yjfGa<6Mc*Kc#;<)%B0#B%vSU%~E&g4l40F&{Kq`ics2new82X ziuqEotP1oR1$HuneKlF| zZ1imNtVif87-bU*_Fm5>q9rB~sU`FN|p5JF|ojI!Xv!1P< zdQS~|e>xk8y^)iQSzCvW+2XaLC>eOxJKJ5xj;48*d6siQh^z}ei`ctS?A%W5L<=1^TeLgxQziV;0Tovfis>TvOd;Kkj7j#SY9LAHW_`v4;r$aP&Jh`_l@3 zU^YKSVr+Nc*ngQ7vFyz2+tBe3#FBwYMsssfM;`*)x*{>ae}Hu4jZA5%O&gAF3MK{!z;D5`~lvFe^0&l-<6WH$07_!^?x! zp%I*D7|unkrm%A{gKLLpDXOy1ZmxpiVi=z3$HRz_G~`|;Hu;}_ZF);_js9TQh~K?m z+RPr76m_}k^f2PZ`+-mT%nz(}1=)ox@v*?Gi zB9~`BhZz`mJ0kIQ!1mR{W9#7BQh03{HhlyvVtF31?ZLze_F-R$$&!hLIOh=3xd&S) zf^!uXzI++Ek7XsF1p<7I^YOd!id0_F>Bm8~2^>0E-kw7oaSC5veW93w*gczcVk)w{ zp1E^KM-+c@msu`vKWKJlz7zING<(j-PHbUsCVf%tX;xI_+s`6x5=5*O@a`12-A;Tf z!B+_0X$mRdF46H5v4^SW>I6&`L-g~}=!&;(7 z#96d_AKSl1dukNkcM^x5tLVy4_ws-68)(raM=FtVEPhBKA&rc*M)}!G+W=WmC+ZSA ze}-8xRw{q(V3BVj=Uc)CV%R_;hpv$?zj-7bod_}|sE2pnFk%CUB&dLX#+`>9-)2@5 zapYU%^7qK~sXUxQ%yudp;O1(4pNX}PnHNL zN5h)}hFg^|kO96@g4r1Cry}$&&aB40gr;+46yO@LL+6cU`87JjZoSY)2>k=_tm%t-23FO>r3tv$KH>)}DO(A3? zoWkdvg;o^6Z&VFGH7KN_+oe_Hik;`G2rpSfi01zuH6|JGM?15|qwxEPOIE~+zVj`( zh`md|i^V{fvcR^*98z(d^_8*LEX=x_b?7vnOn`aFsOmOld1W6nV*QpChSWF@*{=wddQ{Kn!B4-uku zv>~)X^8t=6;Mgi4d8zJf_d{mF<1#@wi@!xcFj^2lSu7}0#V4$L3U_df0C6JkPN43@ z!0sBeZdJzBW$aNsdo8K4%BiZXOztiA)2tcUD<7IwmqfxZ0X0z@z=^!BoLFcl-UJK`J4tgSr zJJoEoZV|dFY3KOh~cTu!__OUdU8UCUS@jnAXoV8E>h0$OIhMt@x|Pol5>(lF$)> zPqkw!njI?IvlOmUX4Y)d+bTL1T1aI)y|`2{R3`Tt1P2D80zR@oupI9U@f$rNiB7%b z48S=Aimo#0Vh-n@aB7!U=BR5fmLR&b{J0qB4ad1lu=NaPogC;Y6wa){)=S9E^=7%U z{M3Svsqp4f_ITY$*hsiwuTw~6{m@j4SlK{^a6G>G0K=;=*R=xQD}andq3~;mroo{U z!Y&c8mVq?}`ZJ+_GB&rhYy4wT=O$Vgv&y}x2lJmAbsOP!rPF1kz~h{)w4O^LJ2@-H z`TpmJPmor2Fsq904?vL)k*>*#s`BBkiGGc6_UZoBFu~9MqbiSG%oqO{KB6f{Jx)YF z_IGSTX|n&c?W0PN}pa7c@HHo;g6uI)>pXA}R6Ao0s<5>Iv)NtGc$AjQ_uti-JM9?pT12ZFz z*=Rl+utI7DVtu4(TtSpxz;UwfOdwrT6$wk6rgQcz&XK`6(H-#40J%3zk*iWKtQYJH ziK7LhCKvu79oS0UWq$uyHJw>=%<8JerfF$QcgfQdi>oJQIk2KIV#1ap(CF{Jt< zS-udE&bBQD&qh?6XA5?__7>*Gsw#de6Zf|1sj6d}MXq{?bj`rvWs846n2qZV2e?=Q z&>MwE7#=Zz>Q%H=-M!IB?fcg#E&{ap0{tUKL^JEe5Uc9&)gnIuCb%&9s?e$@*hA^m zR%jtrPm?2a6|w5M<2aYZ?(Jv;>}$BayHP*SzA=Hgv(a=P*vPrU`941;>YNVUm3aS) zKZmJ0(acxt9SI#FIO>j2&bb;H7@Go!>p84ywk^W-j!QhG z>g{u*1oY6T2^5%EM`7`lBaU{oB8=pqqltEG;{8)e&1o>|m5_YFOrOG4{f)VrLY`5$ z6N}A;)$&V*NFhS=_6qwPubO{*)!QXrg9_ssMO+d9S;boTj_6J_d%!Jtf5f>%$tum|n3 zglR=o57tVRfukIab+CVxq5ncomWv>c<=|LF93|kWLqe8cJ)T)D^4@CwfjQEXCX}?g zH`Nj3&^XjLnjFh-uXMyYkaTv0+^D}%=NP5vR_{4Pd8Y|S>lCRI%eqA%Jf}eoI0Gn> zMT%+l`im7hG+`7Sp$ij%JJ7MXM6PoK>0D1-62($(&Yv~X@fsZcrtgZ#;R^BauGr)A z1$zNKxXc`|`ux=j<2$pkj)L7?qH=6}XQpq|@NCyOUm~yZ#YOP0bhB>twX038h~aXr z=!zw!_~uBCIFNI*%CTjjY+&UFyWMFw8=M?J zQ2pcbA6KXc>Ktumy@h*YzAF6YGInVyyR^cwX<%v8gRShc#VI=)Z|+nKmVhJ0G?;g+ z$H(FnsAD(h*uy!4FefXDm;m3(JN8h=c5oV$088K-bC6TxiIE5O!L8t4f}Y%6NZh&p z0taMW-0i%(4%`blcPU_s+7kZj<`4$jV>|f+f<am zDoZWHB<+`&>J5XD@o=D-V9aq_2ZP)3{@%r-q9Dki7%kg;dEmmjedQvLe|q&#=EMBtAw};{MbT~ zEW3W6#W~gsysmdL?F~g&ez?pWWI1~}_tW}&quwhV38o{e5$=QC8t%PC@2z$%@0{>O zIrFH$EdQ|f!)Cny%CLoeQ4aUg;fe~bnBar8a6iHA1hdth0Rote;*^{d(uuyFOq4*_?l8|65^6_2133XscCVH>34eFq%Wp=0w`Z zSpeWlz$2bQ7k<~3$B{#!h&xIMIUZr*tFdw+RShqhc(@!V!gY&j6J{D`qoEgDKp%IX!aI-PaT zRNEGiL*p%^dM>%xVwS5HUXJ(9ai%+V@E$>y--68n)!STS zy?LB>rMJ>sWy`Zwd8^s6GIng8x0roV!oHa7ovQZMP`teRMFaNPOI|dhbo-byoBa~1 zQ+cO*=R|X1DA7__S{GOHIDIxuI{UKovk|DHo;u0e%Sa!L9BPi zdrhd}S%G+Y_T`z#{(4vZkp!)oPcEmJwKWU(FY^{^y%z6m&O45aR`cF`MXFi3e~HPN zfw3k>LNQ!1DVmzX%M(c~q@yK75<%VBBqiX3l^{W(HMPGllAKzzT(jxw?svvG12KoX zKbzgFk$h2!*w~)mFg5z_MDUG<@!<2P3Vd1Ev-9e9U$hQsd3PooEPtmW89DlZ2;W3S zs5$t?axz>6zD)3?L6BKfbL>#6FFjaD@D-=TJ2tlzV0|#2-xIqmX?*=`)MA;>I5X_-9 zx8EooXc!bt#(^EeKt1;zd?)D!>e#1Q?9*AVYx|b66H%;hio0Q;A?$;#7E<#SInsaw z`|d~+uhKd;iZT|KVctS9)cos>eAJO^JGdi}Qc{By;7)=hwDjR5j?BTCuf^g0mvsct zzDhW`f>71T#TIpK2sxgLhIu`K>sWqv1F`Y(Bm&1{@H+&$*IV#A3CQ(L3RgS&cr4mO ztaYnRy55RUC=l}iCLsjhWrfs^xfO0!*G^zvrOa8}AKagDXUv_jAEy2=>xcZ~b&60s z>v%lK0ZtY4G?Si6Y%co-prGN3SUcxdhDL*rIEZMefQ^)#s<@l_UEFuMVc|h{4R?bM z#VUMl!>Jl9apUZ3h`mvfYU^%Iz?c#NYv(SUDxK8?!}r>C-<4ZP?Rs(xQ<}9KZ$+!* z)Vpc+&Gt(MQ1Z59T*w$U5{e&B4W z#5N6w`1Vjfa=QM?NseHgiyaR9#>x98nf0~*JX^+I*~wnnbU%pp3Q0=(LP4L8Dle@eci5r#z=)*$`yc@hfq6L}i*qP4$0T}Z5Dg0);_E#s{zh=3># z{+E#q2EMyQXAvCB#}o>AGK1a>B==J+q;4_UU!gtcI6VPuvHj}QIU>~oj>T2J>vJ51BFbB@N zCvomV+PM{PZ2qo=9B;G8bz8{kwHTdZ4CGsn2WD4?$|>f#FiOSmFMEhvrCUc~=2 zl^ejh2P32DD`Sag29l=4iM47dlkG#~dUDBu5{0j`vyMdQTTBk_fc-`k?F4yaBdX!l zajb;jOka)%Rz}?DL8G8&H+9s4qXp%8>ZJsXkg%mkZ{fb8<(jiA@Xiaww+S1(Y%itV zSzwRi9I1Hvr>9G~0|A^p8~Hyxy~sL7LH}BEVv=yC(!$qWBbOEA)o=ipvoRU8Krz(a zdQ}HLOx?q9Ek0*=678RdF~lp|;C2?gF4O(Rz)A=P)0kta8y;QfM%4LO z$7p&)&>!)u`2lg3;dlRbO;_1A3tCjn*XOq4l~$ZN_=d1ruxZg)8x>ObJL_I*4yvbJ zJ3JM#*3+Q%ESEh?FvU@a6+RZ~spd?cDo(GE`Y_fp-mI&SdPP?MCbC;5$+KO>P6n{A z3?{GW#Z^k`$GoC5tLw-1F7gI>P3#uWZV}IVm1vTbfO=(rwSSHf3C4-0@Y?@k+B?zxl{^)kvy)>>xL=U0?_2vd?BHeEmaj?Bs3* z0=roO-;cGBdM7!asi^B+$H#GM&ar`aG@)kvbRMQ|Z~>?lZN2-336+LPY210C;Y7i` z)UQR!<(Go5@BLop&WX|!@p8{rv!VWZ*0-4bzi}fWnh|+KJ+hHq6-LCttikc`RY~`< zFk4rDb*KjSBHq{xH@0y1#vl?B;a&pV8)H$`e*^Y%M1Z&t)HQ=bFY+7vYXA=AAl({E z$WgG!^+RyB78%zX3Qyzgc@{HH&tk^?Iiysd+eG2{oie;M-lDI6hYTTqJyZ`^S%-x7 zcNlFCRZ|$o`n?fM8H|jl@L@PlJ}Tqjqf!c=MHBKlw)HFSifDj`+o?;u%iSKe7K@&_>H+&`u($W4RnTr zYZja;Qgw}?k1sRJjS-iZvEJpZcb1-=UCPd`o8;ZaKFU+njmej55nF&iT^T|#yi;()Kx4uFW}H0i-MMgRn|PK=y&$k7n9gr(C9j4na^u=pWBlYk z))QbJA{2a4SS_kx<2zo>icSc}aDTLKN@_6ss*QcM2DcEgliBQ~tTt(}=>vxfA&eRX zJsK;3WE{)hSCbLu&xUx;h_uEyZUP+zsS0U4^8IMDsqsn1YT0|C0sY$pVnv_OzttCL zlzbuYt+|(TS7NVW6@BC7pMtnUIc9C+HP%tV?(Si4#(gnrbm(9#dq0J}KXH&B6b2Je zoBh{f!Um@e)aMVH2i1cTa$SwXN5jZK2@dQ7a&45NZTx>n{Xx}W7#YOG>Q*ud2B*Pb z3ex*45NPVm#>TIYY6m0Saqa~J8wP2{;G98GiW`g#9zCe$%ptfJrK5_oO=WYKZT!HN z!TIAUJ3v`qGp7u!q676>{h&OsF$9s*n#|*~70sH^Ye~8gekGC(NMnt`E(|0I<^dwv zHDNy|kOlCtWIVA^c2}6SYi8V-5-|Rol5aL8snY!AkDcZ;W>2t?HH*oOB)nni@oc!$ zhU;kt%r%c$W4#OuMuAPL*TMNV4{WhDhYkT1R zO2UxuV*eb+u`6X1^T7ha7{shzbKq9-J;l*}H*V5{kOvDQ?#?loBi5X}RrVYGZN`Mx z)7f#$-I$oW3+@Koop^Ur#9iesBH-Y=6M}Ugum4!NJLB%s1$PaopUbzfeqzmEPHnjx z79`VqG3;vT-IBX=?ndEnZ{4z(XB*e^+|n!{Tme8WOz4*j7%{bngUPn8cB+ry(nvB z0efL#f7;vA-<~m&ERDoqWg%@!JiWTHUc`AFf z{C=uB{QkK6nW6U$W@8i94b^=#C-QzgyJYmOm9TCx=zcPPKRrC^>FG}|P`IXNS$6}l zw}RpGY>U+N0(lyvm|rl={s9v}Porxd!3+cIZp7@!bR6=fr&q)0sp!K$pG-bahvy49 z_Amj-EH}M5GD#HQX+II$xAf2D5|)-Wc|Y`1K^pQP4cIjdP@3NRarF7{2V)(x{?qbc z@`IT=jeQA@=96bd@*oB5Duh0^E%1d2wTHQfYLxA#=eB~N!W2o5r>Y&iqM?*IIps2P+JO)1-E>l5axH2;QauCyYLVSz?FsE%S))E5kW6@TTi+p zm4N1^-ZgZH@_$zNz69vh!wn6wspuWdK&(PXP3-9O(!iTaylG^Jg0~z)w)aJaG;bbA zKnd0|cQD^QQRu1`?HI*3_mEc=?04_0{uF`BpJX1K41*akI1vUhaS&rsHJ_xn>Il3$ z3gF!oz)k%4o{R^^>UT7h+|er9<`>Sc!|;weaJxnv`73TDOo1DFsB<~)6ZSWA3x!Z< z^YeE#w0kOw@;d8ovC!sg%9Xhrh+ryLrUkLh!#fVAc<33Uc~5rt5e7-mSM94q%+p{10Z6kVoC0gQ9;)4y~bZ zG#=pE3_`BW8&spzzWPN?w`I!R3uSygJ`PTB6|JV-(twd2KfQu-GiOOnj7kd6u;^ zfL)Z?(^J_`YuOj|#|qg+1XV4wm=p7n50(Ex3Qfi_+uPyq*%bd>2Rj`E?6ko`Tb7aY zDvbWx6{#i9*~0sC(?~HOWsWnBZ^=C`Pz_+(>IA!6XRA5fy&xeyJL4 zt8mwCBxlPcwqzc6-GU7_gSMRdw@eRAz-FIe-D|B(j`2*uLbSUg>kjuC*u6Y+!WuG;% z&%?bUJDkT3FH0L8i}Bxbk2xU}yLrIlkQ}*uI1C0 ziagEU5O#PrJG_I72=|QX3hGMsF zxb06h#NTf4j@HMU6s|S2cN^}8(K!k56TIWSF&5G~i}dcmrj_1}p^iy_ z>TR9#$}+^yx?sm*!H6{i-cI*{1c6j z2#c*-8~%*{*?>><16PH%u4DM`e2&jDC%10w3-0F??@BJjo0T0Nri+eZXXdgqW}|?6 zeDb{;IKA52=KpwO4Ey_Lq(dfZyu~4-*vA>{;6zMjwmx%M&yB(iXCOr{-}>yU3qcgo zc%tl2uhgd@W{OtM}Dv>RYMzEgTmYp5mJ~ezXrgaqBz@aUpnWT=bJR$x7Ih` zr!gB_KRc|!-Nlk%^hNkaU2k(``NsIN@Yf>WWc(&pQMLYfXcs;lPNsplAJVZ497QAo z2k^_aIp7*k$5FQ!rc=Z=ignPP+c4GFSs^^Br(h0gi@i2?aI8GoHdrTWjDux?tZ!z| zI%eB27_A$eJ!l!+Y#6K=TsnxgvTc*ewU%{q+f+E30@teG=ybSNK&~x-qqF_BaM#Rm zZJC8{n+Hc{qEW$`g=<)3bPWw&+mdVZ{QhTfv02@=;^;IZyIsu|{k|u|G`Qt93^tns z+DeX&XZ?*ouN&Mom=hi_7(19MB@Su^=S%wA++fLIq9U}l9i0R`jR?_*NabkTny*y~ z9Ek_Fj1|&o5=8wn-tA{zCeuuXZ`=HBf$&(2yg!3~W*drrfZQm=ZVn%>dN1X@iSI=* zTL!Z=+*$SiS^DmPsE+mRnNzkey+{#M6tQEkQH}+%yNbQ8z0#!@2iRS9>7Z~mHli{1 zn8X{6nqY3!L``HxP!JGQN^CJ2qxariM8-6>;jPI8>;7T|0Tyd9s_q?B;?xkM@P_8}BBumJrr5>2A7< z%V?K6=ellnT37JZ#k*17f%n(vkG;j&Tx`zXbv^IK*E##;MO;S?HlpsQ4di!l4SLJQ z{)IEV`!0eBgF50@%JL}=czRPw8Wxa-u~;)2jI?1GY4A7rM!Y_tY6uN!SOQP?S=@8i zQR+s$OY5fAx&94fpKW?JxFNP-Q>O_|HxsSouED(_Nm53-{E|W%Hljr2w4?)2NXp3d)l*?h zRm2nO1_H5Cv@wolPcY~s8|6*7juA-TrjP)w2(3?=QSR z_kKugzt%wyLLN8|6z`A2^@^&e(ZP6jz^uSqx5SVNN^ zMrt3%Se9DmY8(T6-MB~okGvl_YuJf6b|MY8K6f|h5q%hUssE)Zs;BdxPIyF>TH#?7 zdhTlVKx>%L#mn6iWtq^+Thc_{X4zq+I-0b1<-7>10DJ*I6G;0YSTYeE-%LM?mmDG= ze3p(xnFje(kOfhX(h(n3)+Q8HW!4ChTq7SgKw$-`6J$aJM?rzI+=<@gQy{uwbb)jt zTCQLkDVU1PZYT8qzghNhO$m?{Q962mg2YET+z%s;vq8^B zE1!iwo5en!$v$52ECk1Qgs7n7I%Q@T2yls#dsO!aL#WAsny;K%Pb4P5C?Y5d z+Qc1^IVwqbTReXHa5BV9uJh8Uz6_LVE^0bCkt~ptVMayN1lqQc(6(iiwm}1}ZLyMc z=s2!JZRDd+TFMSb79igVos;j3(-)qcVsMOF{A&PTw7k&yPs5*61(E6AczM5d>9>FB ze&kZ3Hqs}P(a_DNbwaj>2nQ6E&8XM5R*edPx^$ z%bOtA0XPu^2$P3GF4oCmijo&4r>M-Y67ahg30+Pj*E^MnR`k>X^dtBj0&o_*q>V~v z+4D$IGR@T}cS?b0`t@c>6Lt3MwWMkQVRwh%BazHZ zCt`~wxpN8I<4PGA?5AAOv@6{Co_Oe=O1c`fQP)d4+d(9ZVLR4BMudIu_A)@@2=rA{ zEoIq@@L+W%erO)Av22mlQFqUG1>&$Po6w% zFK7FwbnbL(?yW&KjWy}k1omUpn*mrvqq*wqOS<&H!SnaT(K=sJH;u=npGscAWa_-u#)7G{1|%DY}ehuXvWm zvf^2DLTiN5L(ety_v0Mijr}aP)*wn^^pS&Ic^E9Esk@+;bkUzxuK~YGC&*+!CGi9M z$=a8PiU)Pa)13TYXGJmLiWYK3qm6v@C3<%#Vv~V{ewrXDqksA|8Z10m2Gn*yTaeVz zSMCPOoM|*0gBZT18gd~t`qpnB8EN!AdN%~m(D-S*%;3@C0g(lV&ki)qfyGt5P)1W5n@KayB|(v zB(`ZbG0mVTYRQ0XI6N`xzeWosn@GiGqdLZwK0>VrJ^~@H5P`qiNJ*O!6CSDU6Djz8 z1)&|N*Tr=EwL4)m$=Nv+?i~vyZ~e*JiG*F7L^5;Sj5MY%%|nSLCb-a9_#%#6or!F9v`y8o|7X8z(#>kNBe`@pOy zp065$bJyohp+q!+GeS851UFU8rmq0f*a8cP>^tgh=v*FmUiWS^ZkR$VsicWXE9*pV z&BV04zM7b032T}|A;Cy$R^s4CC|u1k4l%ixd7B5X_}`ZQMf0}|4aqmdZq8^( zYKXG}c^R|2dOc}Y8D}?@(}GcyJOJ46xEmo4#^M9z!Uv;qx6e+blIJmUmfj># z_Tw~kp$@E6Ex9$6+!{jJ0k{$|XXt69MPn}IO{1pKkW_#<7a$D7ORh2JznI3!yhvyT zVf9gR5Q;NxA*NUiAe1i=fa#G#RZ#%YV(_59Fw0b2uZ0$R;NB14dxG;Y91tf!{Ycd$ zK)i{l1o%m5(8s(vKh*BUi*^r{y$5ISWbJDmssjOA5@TJAVwIH&qQJ&43LVRqGUEwuRGCf6By8PFm9YMK0-^^ev z)u4|JzO3M&00#6@O_Dj3Jy@4F?tfch+m*3n_khqKm{$TGr^=g8O|c3*j6-b5HBYp` z)?Ktgy^`7xKk|UKrQ@ee21Jl9@v#!i-=fG}t0wr%6UWb~#tQ30VY`GOJ^Z z%GkB!ZWy6=CsA@2zAdsDAX$m~Lx1c(3Qk9dA}AlJ%a^;+fn?z$Tp8v?8i@kCdf(6cO zj~{y)S+&j|q6clMrj>g)<094P#{;#1;5~0CK9OkMU3z{p8dZOO6!E}93g4U9``{ui zCH>i3?x@eZDQqXC2j;y?eV63sY7e*u;#}hC^s9%jx%@=#ZKWqA}>>f_AN{ ziL2Gt#ETlonzc3SG@4qy3MUPvyOv5~-0(k*WG2}cgvHzu;A#gnXWU*|H>OUi3$5LB zhc+fQu6>(YzM_1XQHYyLuR)dO8gfoh2cXxwO6oYnH9y?zO(1#WPU_|nb~1w0_M>&9 zi5~Y@Lid7r8@G&sBgAgWDIsPLrOzWtgIpVDKLi<^;?~~`zM0HEbv8w_Q&AtoT1GdL zhg;3-8j?BX^Tg)~&m+(Y=?8&*;6&UnsTxYR@M5gMGWSA42Of<)lj4&9G${8E!9A_C zIu6g3d$6a@6a*kQ{7W>Us3C}224gxxZzqVe3bQfS zrm$}|RH@sCW{uC9pllDux)*o)h_lYDp_!93nG*#l4>`x3Y(PE$bvG?%UIlw7^N<%& z+eBg;jZ6+4EsPJ-R0?b^?r`QmJzW3c$L~k3Uw+lMS$;D6KIwJf>prjhD!EsE-uSZ1 zo9}Hv!|&7cQw^H9ma@Qh?&@6IpzKv|1$@U|g|Twuqh)Bxv$FuHQC8fSFc>I>k&k;r z%X;d_fq_bTm>6|&uj%>eBDoAF_gWvkqu%)RBIM>EN^cJ4Np(7Ab{a?S&f!VJK*BZj z#})of-pA?4`{fW%F%6eg+uV=Fb5}>wVihfLA?+}|rU2TphWs=|61KVCUxDdlno4rU zNZd9rmdgvdo<_Q@2i>(gTC*)k&H|oxB-UtRjUt6z$XO?Hxhts8he^b4Rr|H9PEhjXF|__uEs2odigtq(6i2xX4|wvWNzUBiddlpyhXe`Ua-WW z9ZSy7!tYjJyjjJzsmwGEAl-71P#4l2yvBxn@V2$ItPdV$)2?;0fsBM!stm#oQxt-1 zfxmCL8~|*f%>y_{n*%{{-x|ovszuw@GgF9Ilt_w__@YGRz7?wCc?R`1+sWy_%)7Uo zeYLP?8@u1{cU`0UoZ6_^wu|P0x|TOzpoKw%76yu>u!n+{j5LbdcF-@vIdaC;ft+>a z$XRIeo;Mh|ZTry6lU>NWeiFa!3^Rp6Vxu4VDa_!o?Oe$?(LO{ALaWw3mRH()vHBpE zlVKl?BY!M`4#!(3%3gFfsvm54I!iwx%5h4Gb=G6E0F-M>`G}_FfMlYa-Ukt z*TmJNu!gD3JfkM5CJ~>gnhdU%;DYU!d%}6L^)vcesi2N~_ zDY%9Rt}!fsd|zgo>QFpXfUGo)52Fo34C?slM?Bb#`JZ$x9`wuHUuLqiJsyXD=Yjjo zKMKt#MP?{&27(6x`-TJc8EA+21^3rtW-6$jH-+)0DPn=ZWv&Dv0ykLqt~bd_Rpx~n z#rSA?3Vr)0lEkb4i{_IFfC>zV*2E{0!rtU8)D{awx(jIA)x@%moQ6yW;IUuKC)PM4 z7oSb?7E!LSk0i$DmV|JY4FVuMJXqF}GTvGlM6CXJO3nsmIdAJmOT8s7K95<#`D`^F zY!7!ElF{*}fLACV!56F)OF7{ie=ZkZOK*7&;0>4qC4Ky%hT+t_oVNvHK0v6eT@;Un zbJkR@WDG5EBep=XeuiLyWs9$1CTMwM$s{wAHM^Y zu?v3fHO#ubPLeAA!GRI-tBNP4F62>v@@O!9vWB!zFlgeR-QQ>nWakH%eQU<^HxnSj z6MHirXS_WNr9uNDIAK=FjraHHESpP(cET}9~|gy75sZbU**Nf=Q|iiB?G*P?o5 z?MAI$q7}qfiBIVMegnhy%hZRlpK`W>leHu}-POuyt4!Rq3NH{^#CFIWJ;nTw!n%#}Ghtl?0q&v zG6Lqu@b`^kiKD^#& z4^ePxNDJ79iS`Nh+4gbv5%$UUVUn0Qykr(pYAjIIcQ9{|bcvHH$8a)VQ$}ORydX!l zO-CJ24Mr4^IFecBa|KDHz$lpI(2_eohd*WzkIkn0cr1HHnz)8u9xc(tb*#YCph?_t zc_OcDBE`i;WSdWlKkXLf9gR1SV=U|Yje>q z>)!4N<$!=hUQJB2T$`a3fCfRrQQ{JF-ax7fhnAyWhb!(sFb=XZvW+!QLM};RikCwq z&df_riMy^XgnX)vAOU7g0$LbPrA811;Q)+0M}*}Z#NKcNjHWF}A?N<%( z(A!>kk}C(t7#tISWTvfceT3%G%I09DO4%IH-2E!q-@k1@GnSLYyA1Nh`7k}{0B*pt# zMw;YG?{CEkUdR1)nb1T{@_aB;PCeqjpr1;7Qb6kmC@GHYNn1r6Im*0=&)p!2Nxe_> zkgw!qTS-k$l0#CjR^%Z@kxMS*k~8M19Zm-+nnk`HNebuF-1UU1=%w+*f>0tUgyyY8 z3&x-EH>i^)o*lqftpI(jDxBjDo=LOL$J-@)D9@|y;}ilr@07QOT}`m}=jCm4sBfX9m9)Nc9Jz%&f6_);86pWuTgxWu^21PCL`^`(fx} zZYEv+&kXvH2r;V%PQ677CrQerx{@^tBsOsd$ot5TDwAr@1_McI@s{5R)vAHQOR8aJ zrGEDkqax`kJrAnFdDyG-=^S~}6Q6FBR)*oczse>F<_H1QJ@8s#Od=$G(!VPwLr1|T z^MyGX5z5rmn#!Muuk3Nl z2U9h920iQ~sguJS<|4>wUqIUDV@ATU;>=UYWvXLG`6Mq{<=>t%5j(4NvcvnJO zwJ^^bN;`mzOO7+6DDTaguqF#8*lx}Y=@vsGiFNU(6aYxv+97gbp#HRDx|7I-{6b78;ew`++7#yaAW# z+9rVjR7egWRd8Smp*PnXw8^IqPUYFol_%0rmgB9xMTLCj^M~O|6@`+@nY7J|v@bLA z$(Lxud_sR4P3SRR@<{&iL=czNm)z_jK5$W30*QT!2q*;4q4H4cM`{D`6Rn`tlStzz z(l}aCK7#vcJ+Uq)HX748tSCOKV&!c{_UKe~uytyT!`j%*ph>$V5Jx#DN+#!?U6q1aTe)hmru7{;VwtF zr?ju)U6h=}r-}^=0aERN_Dia|VYQQ2`$lE^25q;ey_mhb#HG5k?MD8GxdwHr53?+~ zHCgj`U3MRmAhHWo41B=iNH#589=k}DHtL<|%_Ko(18qvO%voD3@+6MbPr9x?+ z&Fk!&)c|dz_1W#pnNu+Qlqj)4{7-}y4E`Kc83UCaUZp1jTE`J5Ad_iYk9W(BG;J)c zjKCowWs3-4WPmcd!zZckM5_Cd>OmZ29n)sKU-st`*V+NKqm<50wL@#WNls}?_D9Jl>QSwP!czGo+YnS=(0-PMj56hIJ#ukdsLkJa3E=O#-{@hHt8e&A(E5F4swX^Y>va(m|W;q-+w4eGQ#2bML?zBBF4(ne$By2fRV zL*Df^IHet~a_(6(s>U^-at`}AL)kb}-)MB;*&a8x#|wg)X=lOUZ0tuGLrJ3nPu92& zPmF=ET+*af9#{`EgI@aJexVVKqiN%8(zp?a+@MuRXQutaAh!8-7WsQI3<*Omm>r); zJ_i&z?aptJUq?2Nb5b|=z1o+3x?0gZzIjn|C_3`d!DWP%$vDTaw;>W}9**Cdd(-BT z=*i!1hcwS^p2;^4ZwPBx%gRQ59qEcj{^#Ht(%hFcPo}JPEIB$?__>e4IbDhD`hf*1 z$49BI9?qIa(TmmM$;RTc(V(}(&K3II1V=or^j@XkiO`c3p`d-5+qIf{AK|IPK!Az zn_J|b`TZeew^E|%YgzsroU@T0?~7|~K8^$_(h*(A?vXH$&gn4^jL+6TTjvO($g|bY zHe|1RF`0i6b~^s_HvYvFoNjK5!r2zuwpCK3+uCH9;mbwjS^_p!Suq@azN*oGCabu#vFz!Se21Ih8|Ex@!5&Q0!Z;cV2K|~q&|vR^`xUe$4*ZM02A%m zLo2r-mx64?Wn@G$KDoS&)SwjjNgAnl!yPzM?*j;Gr;HP~Cvd;^Wj}6i9$}r@N?(TF z55K>tWAw9#XIuG~)3b)WTyfpC*{#ZWcbI*%eH{`T8CObD={*EwMn%TYqzsg-GQ{0w z>nPprt0o7~vj-xLs*LNjGLe!>1ZqxXzdGoXiIogaS@@6@nvaQN1 zXXWcLuRm&@+&mWILH7nfN;Zlazth8gC^<4&B*)w+Ip$8t5y;SIydsTQxEkU2G-XiQ z?1(e~CUC}o$qNUACgXjp*NbUCMQ3J{%xqf5<@L(ze$DBHi^Ol&?)D>xBvJ?_%ytKQ zHcZlNcPd*be&l`trq_;O$ePeQ zYpF>^9znW_T7tR5zNAFre;o;S8#RZ5PA3W5yRd>W0u~GoX|C;~=?hOnN(DkLAUj$L zf9(=Die(!Kxr9f!gypPkgFr7sf_?j(-TpiQrckXjkH{=X5cW@;4vAd(Kx3Vam?p?zj-KJ59 zx#qqmZ(K8Iqc<-8%=UBM6|NC*&B; zJQpbfNzayChpx;AaBe5yC-j^f1>1&$z7)vjlx<~}iMU7--8)}Wv5W)BSXpK2AOcX8 zDFRW4hGkWCL469QT23~Bo|m%}-GrIUQdz-lWr3#yoEG*mcW{#=umcCTDox1gsd>qf z?Yli2?xM^(vyKO!7(oZ{5i)Md34WrQYH*29S;1VPaD}#Ht-*zTQ#Yu2Qu`)Nd$de0 z{#jr@tHt&Rp*^WR@yChm)ZlhtAlT21m_AU8`mnyRTeKNDIad2%D=zsgR*ukL%pxzQ z(kv+bFDHKlplL1i@iK#&Jv^oOna|Acl9?s_?)Q^>;gI%C?1&>C`dKOVYax%;fY9f{ z-Rno#fsLdPyq4M+ocxx%qLQ50e-ES)+XixR9bD!sSEkFHHU;0=O)WUJfAE zr5wI02>P&d6MKJlImMP`rQSMgG`|lhdJNr6?Sly2?s$Vb)BC-Vy%=z4Vsm`;+%GoQ zO*F5pLMk`2$Axi(6?;?m06CU(y^S=pHwAHk&+J?3gPmT%T}IBX2Pf~;ZYFGMz=4;y!;sAs5~Z1ASuW>p2{Lk- z^SHV(@KlFLG;`gFVG`)kjdD>F%3FBZ6sn#`1LA~LZ<1k;Xyyjm+F4R&Zte&qnE)@$ zChTACBrAe`8$`bMGUzkoE_qouu~HXyX+c&PyXb4q_Zt0Z>V>vIn^)u5#tGG%@eBvb zIfFLqld|OM5LFjVwXr(LLsPw)eF4C4)~QP);bjRbW?f})&HA=1l~s*+73&3~7w;t8 zaj%^nJkYy#K`msF*w6jnEEyoFvTj`&Mr+0scC3dSfxDC5WH|PQ!5tc|jIT|r9pzCw zt55B^K@%L^3{F`cS3JeqS$CWUk9fTDvGI;xrFN)YQ@gEpRaZROzjp@<-l9JVgp;bu z`p*>?0-Hsq(K!S}e8E?u*&-`gVbEo(uk@{5t9S71QXAeQaPauH{*or!gKb9azv`@V? zv^km`3%fp!uOG@Px3mxDe7n@Au&OnzYAt&JKH!4-e)WT<)<+tgvN!KFa=Q9>AMJII zk~K{|cwD4=PI;~VS2yD1?*JfiTYyEy(DB`t^m0*h}=fl6@^P&tKfVc z8`pU{5AkoD)fm&5(iktPv+q<*zE{);7jU(Ry-9!pu`?5P|4UAg$vx6xV zOIr5J>lhi?k8jJO&1yanW~?73gdQz;Q$zg!-03oU z8QaV*Ecr!MGSgL)f8uzQ&wk@l^(l>F6c# zrX5FCkoHZ)&!9K`qj8|CPy04?hlfw!(JnHfT4g$XWGz;k%qWs2Z!evhE|;ru?avzB zB&F$#=0HU6AdX{F!9TzyzHRpN_H?cYtC-AdR6aV@6R545emT}zUa^GCV5KNIm~J$8 zL*Q>3MNESQRBz?LA9(>dH?q(skU_Y73oF=aq^4GSd<6d2{t#QlnSOnc@Lb6~i+9kU z9DlNh=#N=tdehqD<$~wjQyBkkREo?4vtMf#S_9=o z1^#+2jw_ueLb`PanohF@ldS#{HM_BVBqz;&?VPKQ&yuo+K0`*r9gE75jGd zCa4~N1ReBh@>(P>*&j6%5k8)RRc6SI5rdCj(;g} zwlEwW$~|6zrp!3qiCp!Um0$omu>^}qnV2CQ0Ka)>1poa2Nifg3uo_;Lbr6RPv3c5) zvBcT!p9X;Ah!qHAd}D#59YuDoq`83Pn77h1;GmkL^EFD-Ci!~@^HR{Gbmqu2lW;In zC8Fd;{jK=GfqG7R;9~NHt5Wsm%CK2tcHQ|W!S;CIzg;nSNocRL1 zG?max;HsM|FMU+Kwt55KsXC*2UG-XRbxieYH2Frk6RD2iZ^V*20`(-dpvs!>T;FON z?FAE_TANgxF4iVE;=tD3GgV40!YSYq;HNs6A6}UR+6lJOLuY@ewW@4mF%aGHM%4-( z-scNe5N)K`$Z~JIL2D7NZ|qc`rswaG`q=uVf(t6-7T3Ly__uVb=)`M93=2tPajuFW zo(eA#M0%kh=OnwWEiO|sM)XaY1CLst)B{>Et1M`3bX>9u>e8=iGJf3SJt*g}6xNB;yFCH+LSyqukxSn4wpskQKwiMC2NQt-XJ3JnP zgOhZYlDc&;tKR=Nm(im=NjKnb)C37a%cp;-41SiQ@3&mt+Tq^et<-5eKkNOO*fFJJ zl&6PQ=ilMOcldet3+w>MNe^UE0{$&c! zzf8}ZEgtQEba3Xp%=wu!GAHgIwYS%#v9A}sUI=$KCnN`wk2%9m1#yIq5=*v7s+^&Z zWtb4pv*n~eZp(2;qKq8&3cHX@=QoNNP9X>#7ursiwae4o0BHdOR;vY9D? z+dIoGe#(2}MA(j+(HC9R4!IOY6N;mfgq&Z!GFMAg00r$E$$$lpp~E$_f&U)C#<5vZSyMIy{-r4o9DY ztEvD{%{ri-!jLGar5h6Ss7)bh05xRZw1$%{HS!V?Z=LWz55ByUSmAF}TW8Z|R8bm% zPHdh?$XgGTRmT(Z5Nfaweemf_=tFFnX9fx#L6b0Q1P%Mv(d>@<>kE;<6+s6_3T!hSh*H z$=lPg(xEgvoOFzp|ID?n;9o@G>+C@CVl`zJKn~4=$?K^YF)tT5|CB)*Vlez=>^ z=nw1rjT%=cD~QC_?W{oM#Fh`RZWh=?wEG^tvR>k>jW<-pHVOUEd;>r|?jB#C%xkWX zy)+A8S?g0fl~+?-i&zyn=M`;SgaPpSSTBlZWOtVv@kb|;8Aks2i2fNyG6BS@9BHIT z_7$llPn)U;Gc}$forD47jNFG3ohYySdYQYfrz)5$C|@IUqk_v}PNk@c+JtjR^J#Jf zt#!N#3>6;O0h{mJ09^$~5A-rG4p@wch5`bt#Wo)P zpb5x&?Hm{}D!3$zu53}-LU7vp_b7teV(31V|JFnKEs!L( zgB4%{xq7SFK5w?KYZG>Hw0-`&gpBnRP-$50M0`f#uyZvNTPC+Gb!>@jN!7QkXjzWV z`_~~K8_H=6BxC&pXwd)5H+-BvO#aVbI7k{zC!Wsa<)&( zUfvp^Q965g;xg@rXFz9HO_=yIz*6VnULVjKFJZ(?@T7-+druC?#+1?ypf=4t_ zn!Sm%=}2oV#Bf@ZNgEu$TuKkmm&9D*NIK~VLADaTYVgd}97*X2!}{2@V?{@J$K;MN zDxGDVCD^fJT1P1UyQ*V#$I^~P9iu)Q29qH1xk1NzBbSD}T5h*SBQY(6j=j7}dZ7b- z(YL7JQCX7-#$KYi{oZ>Sw7DaX^?9;Rbaip92;0-=`Gn^)FQ7`5JE`53{OL@7)yaU! z=OfAU5kzI=a;MYZ0aZ8-y~o_y54!;h0IQ>WZqTT4%F^SL$jepa6zVa1jpW5bdTIA!N_!mpmFSbaE+{hD?kyT}Gm@uy}U(o@{wA~FIkap6UV>C0dx<%Fu`qqJrU|zT7LeY+JVqFE`Gr8LXSA33bgnZFy2bfLl%*F>0gFbK4uM)es z`BCC6Y8lnBivMME%gPqxONZ7pcFk83^TJQ9CfA^}5l0F+?%E`yDsL&hv=!?N>JYov zVy!{8`UZ^V4R3sWDYa`Pb>60mAxQ0#>}Zl5C1!^T#bM;)NaRQh0KCjgxd=>WC}%^# zL{jEOHb%*B9tO;`2D^=-W7K)s^oAd@;#K=^S<2I%^a(`)8&poFWm7^-tkv+ce>s2REy>)UQ`$rc|X#9 z{*>&4dvODh>~~(+u31lM#RzoN?TX&wIrRGKBq|wR`cn`3m|F`lb1*<6zZrED^bS<{&BZ z)ena%EFlC6&RV)75=L3#^0f?X&hpVlO}>X5jgkL>4)p7IN=^;Ha4rNZm)R7d#0Io} zc`za6@bqqUmDKs0D@K7o#+{kK<$^rMSvYk83M&Eviu^70=obRk#kFO84hRhBT)B;$ z%?}4~oNYV-W-CAW52LaSTNdXR&>KDQmcd=P5r9u0+#m=y*jX`#Gs+Z~;YX3r3JE3$-Z-wk+ZEzkH(Be-pwL^~d#ZUlm>^zl>ID+#T-p zzzDb#Ai3u^@9RnKX~;cCa!(2?as#RkW}d zm%BxGFc@czq4hyHXl#7|ET1D{={CJVUoi2ou}xJ!zj|QD3OHLGOO^a(@5`PzZf;`& zF{P5H2pHf(7+eY#9SeTS@y>4gC)=KEad3SS%RPyIlJX?^ml3}VG&xABf-T4Aq8x&I z^Qc}3EE#!ev0&@NQB(mxPTsCsEQn^7^?dP1)Ll^!MoWDR+JfxXkQZxTEPuJ=<>D9X znT~sZVFopa9J7^RO%4o-Uj7aPc+%XROw{#`kV?T)&RGfk- zE;#sjGtYq;32qj>P=(z`rXE>Vnr-J39)lcLMHo=kLgg zpn|{m4I=ljgCy>%BKNw|dz}clC539TZy=1^U?r&lJ+eZ=2idBM5F=Npq&LQL{JtfcK+D~Ezv5yPTK-hV_}a&p{Ob$ToSUwP+^i0kJ-~d z#Q3sjtt$+uNx}}O(8-O%TSJTnlZc2#0gZeZlEQw!ujcXtolJhXT`1QK1;=CH5xfO& zpgB2OT{wdr8$pgQpbsaIhvUgZi9DP{j?X8p6KU&sgT8QK>m;=*tM}=k)4jx3+SiN! znDxg@mW~lzxDNX(ZIm>H5zMx^y9LzzoR3JwLRsXLeKVG0U-h62yREa*ZD9C26rMc3 zko9FVuZktfJIAv_8}>|L7yD(FO)Tt}?O5I&ena5}`rplxQ{lhB>iO^nl`u!}m-J=@ zGGNI1Q5^yoSVsB7n{HmXsu84voa?6t`!a1ie&@H;iw;-&CARvgM@$Er|g@9 z4^B3?7QQZBWKY!G((BlH&>#liBHS%%j}dP1%3Fdx#hz|YbCi@t`to7$fz%KWmgkqd z#20D5hrcSIE>xs?w^E(i!=NkjDj&*uRHxr|7SyWSn%ipU+d4^G)c<1{X9!1v0B_2h zH(`H5LOcb`gra`PYT?bPY_R_V!KGm8ocN1F4Gu+9ZcMt@nP-)QSfxLFSXF)cJ$Jy* z&i9t|MGGq?;*sUVr<^v^q9mylF!+(Fg5M()t*^UYyS$=p= zzJI}&grik{N%^;q5joc&%w$oHUGoYNBey#|N8{$5Rf##Vtv|G64;xXamT2+@S(xHpv=-h=ai3al@3`YIR1tZ3D@J$?y5iXvdvVq|Sjk}3Fluc8;KLq(>&R!WlEh-e-&2%o zKnhDjRVP6lE{>o#W=XU->fH!~x;Vz(muniSWM{EipF7_)0wcaS_3udj_5`C)oJ9`J z<;fvzC~(Mt&m5z&n9*7Y0AP~_S_{Nvtp+HW5K8JLxN&2RTyY-IOj|%yLY}v{;Q!p$^yzf>+_Nf3{8|H$%zIX*8=Z{bV}XClUty8yKo= zI?0c6J~&8KI7~bQ_)PH=`aQD5#m~!UD%BV$&%TH37Kh~rZVeP-uw>HW|Nfb1a43Fv zb=>Wxw~eB+ua}F?`OZ9cc_O&`?;Rie8(THa%o9bZRkJCi%p@Sg5W#S+uoNK4%4 z$Bq(L;`gyDtd6$C3`Qq$hcB@rRap|m3f<``?DS_aXiI``%y~vUuMT0{xnjWv_Yrf<}i%s<=M=`s90k?kPkM zNm;U)72>K86yQnYOwu?RqfKS-E{V4fw69^O0-9zzHw{%ZO?U8bGO#oA?^3IwVJ!Q6 za?>i6^R?yImN_~0aQaW8L`#Y*fNv@(tytVNq*K$prqHHoO=|)in+7zkGw4eW*oSme zYCH2z-J4c4ts1CknjtAlzC5%-M%KX`V7FjNEICsfjKMxoErPzIC^^Ln5iKhJwSw&M z;8{310f0lv546?^PkrT3_=6!2dOT35^f_yCA{|5@{g4NpANYQ~>FXqP+1*-ij3h0^ z#)P%2Q8)@f^+jXQlssaEKCD*Bj=KDqp>fwg5LvD2Tr}?dn;o)Mqex2zX^9}0hT%qk zP*&L4;8^nJ-@?U3Z4=tYirv~4fjs>r!P#Y?$Ei-N6kElYIvvgs1TH&-WMe-TNnfg{ z4@Kl2f)9`EIqKCw4LT7BR0^nwmnz>l8{A7f*M|piZCyPa+q(JYENNWU#0luUG$$46$R5!MSvKQ^2|Y z=Vo+*zOZ_5$2|7akd^`ebhG&%cm6Df6)x*od9s_tl|~)yiQNnhy3*K}e#IJAq3u}Z zdo=jyI7<&paL=#%vVACAm2Piw`?L!yb?%to+P`#4d5T3k?(g^%HKo$L77<r8;CrCw^Ci!>bQPYj{f&Ibedj7Xk5q}z7iv%Vp`#ka z@9#Zdq<8Z?8YOW%_!Cgz*}2K!wnNdnx$}O9{YqiLAb*vYBG5fR!MW6G*p;5Y14OjL zhh>J*U8A_#J_hZM?yn}W^-J>Re7ZHuTk*>MmB+1kb{V@4?g(y|OQx^;{2lPBUU~)UKApLtS zJoRb#J&e$kfWz%rdCEbyt&)1jykEnxX78WM6$H@YejkA7har(NL!vvd^*1cpjt%s2 zpuuU!rc(p|T$dYc3*fmolio~xGv!U#FoAy)`zGT0C_H)!!_HXj2qY|aq|sB$;C8Gb z^a-FDI}`Ff;li1nh{Xve9kqvzM=J7B!1_G&qPi3Y^=({&WrUMQSJg$4v%!HsTUStg0voIRPVgb9YvsA zzX`4vu>URogtj0xatuq~u^ISGa69F`3n8wQ&!JBotBf^GkH-f!K4#enCsKKR+(kHfUK zFbLec+xiOo$Eh-V@dq{-Y1uTcC_qw_%`WPuwD=-%g$Na{x3X;JIiLUYE{IZ@6U-rh zRW|>x^*CV_E!`}s%GQ)diIx!RfLtQb%$A<=sFH-T&EE$iYam1EXxT@$@jdpeh$NN*<4YpLX10L=$wDVeiIV25D>ZrYvs@&di+!}X5V z$6zBZq>oXnUx}yr_T^9`Uv`y#+y?>VJVN)aLJMx}GZM3on4QTzz>>ioc=ESwl z%bxjsxdP^>+tUE?Y2T;4o_3S;We<!s(Kxd|ZctRE;N}yVE@xA3QUrp&P{S62;R4(BvibGw|igm*;n*pDPG-E8u^g zoKN$U$%VO^y_hYMqI}c$y{T=f+#}RBl^{1#zU(c;_9cC}18*CSizLt+=>}bSvVDQ7 zX?0ULr_(BwqM~UvE^J{egw*lmTo5@ofIR4f$?%{r{uQ41p$E$A6WgY>g_=|Usro1O z9zQaS6;1e6FhxBb`E-!*bfm5FI+IY+$xPr~Wm1q7NNXXTXR z>DlDO6!MjVe5K@eg^{u;q$~{Qe#r`lYRticc_7+&nf^K*-EyNSh?IdTP=58)P%cDm zn}7{A@E|`v?n{mdLIbEo#2SLxeJ+?D8IAt{(ePnP;|fjO!w7Wr^P*nhcO4YC;yE-E zY}xV_Apgr|(9BV&)2fP=($6Omi$IR~aqRz|oxne1BBky0x#TPMve=)Mj=!m0rkK>E-9V+&fQqd6@omgxm=yZE3_l zgI>-gU(cX*(d64Lq%OuxtM#PuV4l9(n>6OqzcQSZXk#{MJVY9E2(JQ=DP2e&WYH@J zReklCYX@Y|BDQI)P)4?aL82M;)PQj1T|N5YdpJEoG8gIs#qnKI&K<=0PBD}*RjD4= z$E0(6_11j3RtVM`s}mn5>g2Xiel`BzQi{h&H<$DGppffVf3qd9SvKuvNrau;?;d1}-4U19gg~91o=?MgGRV(>NP)OtxKkxtq_$)#xfOsCzM~JJVW#Hc zwc}5h$jZ}1{)r#|Wc1T{PgTVI7tUJNO?n(6Rb5T%BSDxGd^)jl8vw^}_p|0{hay+T zBL~mpjGOCjngD>bdd#evVfuI@#`>3A3lP6;76d$?w?|Y&GU;k{PZBhStK`G8?TgxD zuWCL#t4g&&t$G~qoJNyxZRkfQofpD|a8E6tVRT4%}9Upn(8`yXHTBzL5HwtKqdp6Q+{jH;`B@5R=) zU85ykyGYj-^a$vTW=-u{atE)kw*)iV0$mI(ag4M;uTBeY7uROc7aJ*QTg6CQx=dcq zqU04cYQBo3^wmtWRJ(z=F){i=G^A$_3fTK7FY(2k`_4}h`<1QR-PjNxDVC}ch zpeF*5$8vzWqljle=?W%Wk==K+WrV8K{-b3T{cN_^B_fv+P5CC3*8c0OIjG6Qmr?Yi zeEAQF(uaju8uz0xXy>s3Bc+pGgFJEV;EgHT(n8fx+le!xnB3>K{Xd#T%LFPY1c;wg02uXHMbB6zO|KD>2skSc2Z6ud*U)?O% zjik?$0EBj6v(1)Rn+c(lFBXXBmQ+pM#FlwvmUJOv5p>y|%R#iaICfTQnk;OAGmV^y!ZHFstb4qXuLu3^ZzR0tJLpfzn}44 z0jln}F)ak*4dU*l*59%dWI=SF!7@dLs#m0qtSfmml9WvmxMYx4$k$-$$Yr>|0#ry4 zTr@y<1vgcz2~eO164WkSlq7FoiByO;*g}#4N@C9tp|Dcu0x%#*DBBH0M2NDfhC18u zL0Z3;d>Tw@r)W)GG& zQjF|b3!&33PynH?SDppw6=TqE=lwRLHi(y>aN%TEANX;mKOe7p)dxHa#v2@xY{8vk z$s7Cy+;gk<>suh(l9d|;lI;j7O;gHJ%y_g9+Fy`z=A9@Bm!0ZoJjc?sUA*RO6{gR4HEb;>*j2Mi!L*gkM7V%SS0wor69sw&lI^u_7Q zeS!eu>yOhGoP_F6yizf|bvwz`n7#ZbGkJ`+WVh2tQRESXz7VaGKEU=^-vu4RK$pEs zAwLDVd+QpeQ@lWk1ldm=Ro{eM+ZWQ6P>6t-izfl@ADBuK>PcH^NhaQopUo`v+m zpy`=E)LoTDs&WIKRngh9b^G;@B5IgLA0JU!!@IW@W82X;L_a=`LXDsd2jKZ%Tzx`& zM9x9bg5eD}_5Y{wAeZMgYt7RDlwLL?ci zL?B%XgjsOc2QB>Q4VZ@wzoXB$n+y$KKHuv9xBS25STepL_vgEpxzjI)Tpnu*ZTRE! z^&|c?{ZEOO1WN=9G+Gjv(PQN2HhmDMcqVwpNWNOV-)OxW-0-w*H?j}LZUn)K?h%k% zaNViTBj~}@|%B*WFq%DiU;ND5dU;S~V-WQCxlY~4hg!>ry`*`U6(QH-Q zcNcDr-<`IG$I z%%0_k?FURgjn`f+=hsttH)yQ>-{BeEk_&jFZ%P^9R4^Oz3|r-6KS47E(Vcv`Ly1^F7H;Q z#y|a_Xn(bVUC&lo0PY%gY?DiIClPufClBbqvWb`Ai+#s&9HM(ir5tDDDrzNa6KBgxJDwMh7=#9v- zu=0Z~n|bN6R%1!JbTv%XG-=w75)Tdm=NNG)Ag1$6fCNpx^x+wmH3c>ndV{ak6ny)L zRH9M6ngSlplP(-4SHlSokb=5z^`?B3DWqxQ4+h9|to~|VZP-6Dz&`q!c8(}M**Ui} z+OpRYDS2jkrt&PPT?iJ zmd0%vnAc`~({6ePa-i;X?6%k%+YI;~p|lNrnKrPz+AwcgRLWi^t4h=HmW1H<$Fed! z%9yLIP*h`6!7FfD(8UsD2Yv0{tadE1WHHNhRzkEjlwLeTtszKwmRFF_;vi?4KG?G zGDyY*D@xbET5p5}f*mi~0~TTt$V$BEkoe65H>2n{2z^C`BE?w*a4-=$_d;*+0A$Za z4fse6TwyY-aLPE3Kxtek1mn0G$Dxf6)_eo3B=NgUSSccxG~r4Yxq$b?`C635H%s`< zM6LK9k!(N6Xgo(`dRW9eCgMSXH|M7n$}JLpE!ZNsMT@i+BT`uW&;&~WvbTgHE6Z3^ z%`zD&EYoEKM4@UH9FMpKVg%f>MEounu9e8%vPxuS62BS3S_fptvPlGF;Zo*dQzjhwx%wRHGQ$AbBw)OL-N1OWmMtT6e@9R zI-tCDy9n4V0`_4ft=S^&ARudDFp zDlY*s52{HG5-*vBB1`6o-*?cw5-dbsvJkTX+@SMe*A@3WfEex__U6uP7nm0^AzHY z*AQotM4c%xX)2;K%aLAdPBu{IHtj1L3hkVH&jf3ZUro`4pfI% zU@PjFha~Yb?MOt7WJ&HwRY=ELnRI|7-vQD%uLwu%Omt7hWX3x7fL01>MaN-uZp9Ro zjKfODS;}14f?YV%yMSc5P&1d0j=4g-h--p|xTaF-nl2L;hTa9CZC(KY?TVGCYaTq~ zk#LE`T*>fTj)LYu z){;)lmCkKQWJVa~TxYgIJCDG9iqg*03USMnx*?XxOd>hvqz!sgUBrp zeh@5nAH(+~zGz<;rE(WwSC@_{UEY*+1uCR#G?Tl+80ngf{|JQ5kVzN1y6bIM<2}|c zsQv1i2lFmtU5gQrsL-wyBkNiNzYPcnm9uLb+*xq%mZdH%v#wk%?J9s4Hc=?J9UiKe zJWvDa36hBi;+Y;4=$R-H&lC;w%w*I9MBan0@We66vjG1Ia3>;865Jpmdsa~9F-ejK zBkI{gB~Pa4s>KrZ>_No+vgA302>A#sV2bAyW!+d;-B{M$dWm-XP}=PecM!fKU_vF* zJyxOJ6M+#<)zI!JM!V<0UqFEwX zPxm3jL!sTr;D-_JK0`?l2qit(8G0bj+~W;(qL5td3DD4q&#jZYjRF*BdSXv82&@D|!KHG?)qI zT`&HZ_NHk_?>feMK?3RBN?C6v%ns<-+|Oul4zkT7tQSw|_CiBf?-@$_a3JbKQGK{| z)#rt;w}$iuDzqTL#28>i5@MYQoOrik@KMer3@e1tS1AyZLfR6)UEDX%W7aRQmWab7` zDh&WK4!nmrsfdHkegND2z*?9MVqi_!ekwqTA6 zd^aH7CK&8#gIn_$lA-A^Kum_B5k8xdp}BAaDH&QI(V=*xTQZpp ztu)K8JP_N7#{OCsQwS@auY|qVocZeC8L!-eeyxP~6|c;~j$XMJeOj3fJfjlekyjo8 zu27jT!2b_juSJGNtPhk!1(W94wWm-q#C&Fx0u6m}n`<@P`kFdCrS9>x@IpCFO} zY;rql%)y|56)8ezQX{v|0#0Gan}ghrI&-@!@>_!1+A$lsJxN&0fRWi#M6wmaTB${T zX~Jbf?d<{`w675vtP|D-;fL<$_RXT)Ey9&4^4pFE+Refx&>j08QP5rydB3m#k-7bV zC@lvYnH|8H+d-4(_IzO-6;T9&Yd=b6^ZcJL zBF-uZl0%rBJ0SeU9Z>x~1Zgbp$Pj;E3J!^mbF4=vIW`DO;I59hewflj0(Es@gBi+3 zr#j4mWEkhAVMRlSfthf}PQr$LB{CeWC&S}$+ifD=51*_d!;w&$=MZNH$6jIW$MkZD zj(6mVh8@N^eu4M{KE@s5RKG~n4=e}nD4=wBiKyQRWCt=TcbtL)!VKI|Xe7hpa8M{FcCVTlQHxtOsICk?L zjM~jOdh;C(G0U&5^o@)Hs(^F6(TZfD>ZI4UH^9-E9CUNkxEpa^e)Pr^aP4k{k{gI6 z-3T;{7!~8?Cp9kskEeMuZ4TEq2P@4%q}jmaz-C!!`=Qqtv+MEF^|_EU9HHpxbvfXg zS${3dEDeCBnSX8)$sy#VnGP7qAE`Olc}3w>;LP$eAXmI94t-Yj_SCUNv^42lYA`>a z0!+RtM>O%!7|7>}F}Uc1-ncks4McilG0)21O@wt63#nYp*7CDJ(`~xhxYjloBUoyH zUn#a>Uh0n?D~046FBK=E(hw0k8lzJRc0IR&55P;ou;(_QT)Z?w1VoAykQ(5nvFO%P zNFs9^gid+s0!$K{sHzQgB3_y(0u~}u+affibeTw&Dt_b9w@?&@C}Jr?1r%}?kl(f# zkiQg=lb4DWTe=U&yHfD1xlI*m^MxPg1qbIIeu*NNGw>?|CybXVBHmKe&z6MzY~sLU z1KWq&#BmnS5>Rg2gcN1ouxtW>D8q$EZrdh8airj7xcA6y+l34CCT=sM&Se3BP_|v7 z3@EkYw!NZ(*_fWTgCf6Nk(GcMHUTqi$FLl2xY)rjfPBp_Kxs3-07ePFFdCz9AslTx zZ$`ZHJE61w{840e{v>jS;&=o=2$+}4IGUA%Ue3$?g)77|0f`F%Ln<^ru!0b~Vx%RO zzK#M573b2|u`qFY`Zse(dlYG(O*yi{2^2aqeJCgbd<4ifl!uuOZ&D~KBiyB(2MRF{z0(=w=$vaJ6 Jqc2`({U4}20Ez$r diff --git a/resources/js/pdfjs/cmaps/UniCNS-UCS2-V.bcmap b/resources/js/pdfjs/cmaps/UniCNS-UCS2-V.bcmap deleted file mode 100644 index 1dc9b7a21bc59b6540d55b3d8933e5a6ba9f8947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 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�ksTLal!IJ% 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 diff --git a/resources/js/pdfjs/cmaps/UniCNS-UTF8-V.bcmap b/resources/js/pdfjs/cmaps/UniCNS-UTF8-V.bcmap deleted file mode 100644 index 22a27e4ddbe26664c57f778a864b6872f6c2ba03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 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 Uyk~SGTv&9{NH!N6NOao&1LeutHUIzs diff --git a/resources/js/pdfjs/cmaps/UniGB-UCS2-V.bcmap b/resources/js/pdfjs/cmaps/UniGB-UCS2-V.bcmap deleted file mode 100644 index 53c534b7fecfd84e465c8943fe3adf500a4444f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl?xY*)9BicPk;tzg!q5^X z$j}nrT*t6SW_C0~i#-EFiybR_iw6T^OAsT&9w{L02E+l)b2AxQoY)v!T$mVIY=JV; k+>9*_j-3Bx_sB55H!Wak%8eoOCt*p0P(FjU;qFB diff --git a/resources/js/pdfjs/cmaps/UniGB-UTF16-H.bcmap b/resources/js/pdfjs/cmaps/UniGB-UTF16-H.bcmap deleted file mode 100644 index b95045b400a77419292cab245f9f66f6298dbb5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44086 zcmXuL2V7KF`ab@ibIaW6^e!EgB4Pmr8&^fe0uCT5A|Qew(xfPe%AR4E!pzWn7X+k; zU^hk+Tgqm$o2F)yY_h4FP1)USV#=oM|FGZR|HJ2V9qwGtJ@?$VJn!>9NBq~sjm0HZ zrAKn}%DtCHMTIY379JkuEoK*I<#;Dmm6hidmU+h&9V#v@DK0%&o|7FW6AKEw|95?v zcWF*pPU-RalSw%_-eF62#BGd?Pl`ndp!Q-7gWiVsVDJ}14MKl~=W2ZDX)h$E!w_P$ z+b|DAE;$ZcxG1kxf^iLSybL%9L<@jp=_kghLB>?zkb+%m%S*5ty96@8`YqtI79bVk z=?_LQ|Kp+9BUKAIrp0vFm4@R9F_#PTYm-e25SH6AHqw(aHy`~P5}?nqQ&hVETb|2H z5F^O26UdMk%P?|azzzfFLjR2d73U;l7{;Cl`AUgg8YlX0s#9(Q#)bvPP67-g!5Ekb z4wxuc#E5n<@vM(-$#CE^kz_9>`w*z<4@sb7Ig_n0a+;J5M@#8%VX%Qf&}n^KrKpBc zGL!f`&-5k{2dJyYJi}rDK?Z6U%rY#CB{G$rhNLWkp$*0u4|k*Md!?jq@nu=}>h1$Q zZX*Y8DM*2QD(*t+4X!!toQrmG^!vfzhK#6h1wNy^I2TOJ7T5m(eLy!AQ<|1{Ah|TqbcO&bLEa>(d-c4rq zlD6$lCHDS2qquUG*e~M$}E~Mou-Ip2p7|BOje4 zV>$0`pHdyurjpP6$%OLV)BRgVqI5~`ttzig{-p3q0pAw!aM7)d$=%waO!Ds|WD$9~ zS=)44xBT&8qv~(Ymg9ePxU^gQyA|3=Ws9PT`C`*YQ3G}_xLNF7U)a6bu;Ia~Pu+>~ zJ>S~R(?@kDrX#-0*01hN`IqKx?ds@Y@E2L~yIfsS_ukQne+Qe8K2s-| zV?_IKCYM?|={W=E{A44kK)P*%Nsk*@LwYsyr?o4%V?N}x%on7?V>wfITG-8GvcRf1Vh<#h*LuM*&{qgr z0c!W)av95nu%r^S71)6xBFjM{*g$O*o*!%hHEkzq$aU*g!2oit%tb_TI`U4A#wA|T z?`KxD1f&~xSaw}sJm>a~(_7qCj+lf;OFIg?+}f0%E51B5WPdSiYP;5d(5@v}qlou4 zA0c%mPop}s{*wHKyhC^k2+1AE@5yU**Vx2|Th5T$UBp;Oj0I1XPZe(#zghIL-?^Z3 zhb@(l^1gShT|T->;~c-SBkUXasrsjrZ`ltV=*WIgcp^1RO>4%Y>XNJ{zt8+f1d(eq zze*!SNr-~fOE2sa74d23DqxHO%PMG!2VE2tu!bPqn$Hie1`(MYWZIP?iq}5Bj~+|^ z#L&s;+Z>*rc~@QQ@}&Ips=lb%W%{LkCw}yO$9>dmva&(awM1m&yUwM{N zcPw<4(7Qc1bkMR?8`oLM#f=@cZ0%h_>I2`h9ba$zbNZJj`j=~@@vpble3wcrKG!^3 zowaV(%E_u>fu8=$Xc4jPuK9=ETkdbU5#!O8(yq;-H2(XhV>D74g3wBp!5{R?fh-XW z^nHr9@t=?SAyWvLLSb+@)9#P-B~a^$SgwoXv`ZvCkzm@1>wFk(I%muTT?RH((nzE&@-}IK|tzBO(=!hRWFq9_Zgy8-dXiU?n6P6e&>NgYZ zskb)1wShElCym>_-}8OS7lmIGd>;Gxrq5$rE9uo6&2hL|20AiVPewr3&ry1AjIeJHP0RWi4xo zXC<79p8MNtkphc=7dRf;i@EwjjbfMd*{tzh=l0CmK2t`T_C6|mR64le%k8B8@GtvB zVV6svJ9Ov3a4LLI4v$XY^K0R^NFWVzjcixI=)SRWfmY0=nLWc{8_CdYOE1DWBG|xY5x{5?_!$Eu@Y|hK`XH4mDp0i zcE&l@<)f>+XlT238m^tf*EmkUSn_N*bQas2()k7zGqO}Z5(!-rwrf6Yv25E))V`Rr zI*E?E;_f>HTQZ<2(wjITg9Oa3_KoRW!%}F<1F{~~h42}SAq87jGL|(GLm9JLsP*R! zN!YT(#u^|hcCCIbhh|ngrQPbivUy;TNqj~Y_Ac!We_JkG zE+RprtKLQ;*4TB&sLW-eOk?vfg;4@0ZC)yCD3>&>Wt&c6fdUSx$ZBj~FGawbawMj5 zjaswbvT8P_&h@W~zb4eVPA;8Gdw(j?x_p?6Js!(GB_oHTje{2$kx<4OBMORDAM@Zq-)|0b!ABF1&ZP;qwa z^wEJ0=A%~oxpnU;K5-tjZHp8Yn%^~rvlbWJd;mIa@ZdqN%LQj5Lm<=O1;$fMQ?b0x zR+MVU=t&@}WqL+16yb&tp&=LJm{=>>i=F@ZRy)*e)ap+mozZV(Qiag%1G^gQkzN| zPm8?f-L^pZr4)Wd*m4vMQMgj$s`+vZ{+#^%g6}=Z?{exQJ}4OrB#j(tWS@jI7XQuV zEBWM>xqd(I%0%ltJe*=sJT&{qTeb)K+72F$@N=reN3# zy#+9_od!9y8V{~w>Zq?JI$bIfaia8%GCP$)DGqYP!$3qBa-Qv>93#vicLaQZ|!@#;efyNnp6%C`oTL22q)~>ETvPw%c1> z?E<-mHPCcOsm*7|8ANtKZ53+p0LwupPLw5Xf0dD1d?kV)Lm-pMRP@O6ES+U?Q zzdJGAdP-YdMh}VV#PjANn00_2S1?OBT?yy{pmv9BJPf*WnUQ_WY(DC!L9Hol z!$~wAK%e;TbL&Jd@%cA3h$86u5TcPMKDxbgy5i4HM7#0BX3SHcraiT}! zCtZ8weU*ZCDRk~*x+E}|1x6?K3S9&@G~vNo!;!uS^o6W;IZVbv!){c&0j{ZV-9bF; z1GPn{BL!Qdnc20>>>63G1hkpZ=pjlHKf1R}WyoYK0l0Sa3WF!ICLn9P$R~dMX0~4# zFG%T+Ql(KQts52knaA;e-2H9X4`n};e!zXeew(B}(^7KP0M>jM_6N&i==Wj*a9<_TA*d~Yb35Te zDr%x`m~`QO6>CUB^;xQBjmRZkek*}mhswc@1&vqI2jh;{3Q3FVqWrBBCVNAkZWA@- zN4puTNXPwNl81<`hQw-J%&|U`CU~D+S)%%OeQ44*3h)$>w=ChtilJo@jFrRCda%TTE+6ZwptF=QhCxFKf3Fx>Lg898 z(r-ZxQq~v;!%0Z*#l4_{J`wt2u$-5&Gz)FSS9ggx`NIcWe05tzS@PpY8xb9!1vd{& z7ljs;;Nq*1?GBz?^EjVaDu|{0d!|n43BG%pbZvc1t$z2)$t@cB?lqH}ALoCQ(^LAm z)^P4;7-#?zqVqcp->;A)Hnf0w-f{CE@lJpi2X50L-kzW2aGXIhYkN zu8}r{ip=hW`yNc~LYZy{{ha)mMnI*4&Y*fSwQtL}JD#YYsEA?T?1moq9-FfPqH4FH z)fHyS;o3o{hU@W+A6kJ0=J^Bgd>ZaXFd(Aqp^^?iI@aVpIogkmM?`ja)8hc8N?}KH zonrUgWa8yz_YeH7@=4W`%HM*1Tl8f2ljOh0{(X}u?0ztr4;`nOj(iD*AUK-~!*DfoW*K)G7_B=O0{ z8>$=2Mf=_VoIJ`YkRLa&6b7;=CX(_TTsexb`=m6XsaEWKW;Ptu1!%)KI# zo^_w>dl3JG`9U`1em&_)!8iLwl(N3jMif$ZOi5@N+3v-)2VymaGcuZ+n3R~u)zGGP zx5zchl*|`OhGO1!f7|VC+v_Qkp>@AjcRT5hG)E8Z(Dsduq72o?)a)YLNOItn~ZZlz+9_LDOl$;Ehv7Ny?W~&Zs4hH&#RM zItH_Sd!R3cuE$qT4r=6kn9j1X9e)n|vh4S6?{Vi=Fk>4oWle~p&mNDd1-Neyqbp<^ zW1!xSRul}(X|P_6uV-=qx3D)(D=rUm;A<8ncY585%bQ84Ic>~#eKAubk~sXGatE5*o(n?E{(54 zETfWM_5!P`q&E?F?1NkW*ai(QfkA)DHBpp@kJJ6 z)KSe0(F))=L#k=9GO(8Ea%8UUWf{c6bB3g<~o)@N0@CPDg_CeI)+-(nQj}QcPSVWI9)UhY+&lQP_q(R zwm@rz-8E14_D1IR21@149#XY!Ri(nRPohq=~kB5B+(q`=a^C>*R^RD@>5dsWB*M zg5m`XjxI8lLZPwQ=X)1jDt~Vy_ughQs3wD|pKA!ypFw)kzg%Jp8jdBMZsd2I=(TS} zUmiAWg5C(w9RTAN^o$1!po>Edj<~TJYJ;F-~-dR8OzLg)x)x{rz6zIAs_1vjpN=4w>SBdtc1?_2#2tx!3ZXE|12 zB{C_Uw1j3`+&I&m0XcgH=U%ut!)b|&gu!03~awG4^S%wc^s+$sWr`Uqu%**U}{U}FF@ zdEkj%=wU3=QYz`(3O#2i8ki2?rk62NZYBfQpM;TY8L)SjO71LUrTBV|w08&edBVg# zm`JB7b8xj?YmGz!m;F_YLNnw^ZQ1Fz)OII;?;&1GKJuF$2Ar zj#)gn2hDBZ6wZQzdYBtVEn9HQW&uR|efL9DV2Ey;@=Gq;f!ThHUl>{y!qb zD_m*kvWUJOoBg}ag?A|4Eq}M-X3#*|_v`+RE<2trANOoKK^D}X{#8L5MNzpw>tYn# zu?5{?xVH=jx8t+Lltn{>$xQ2d7>`G^K7SC$c2VwU|IvG?3ax|4>@WSxnt234?{K=y+;=YNqC2r}BDD+8o$QQ#TJ%GXHEt}2OxqBhq&7@M`x_g5G!FY)XO_Od;{B-i zSN(hOw0tuA;_2a1ede6xTqV(CGR_RGX$eAqGbP% z_4%OP1p}MGNKLW|5Bj6tLv#(E-j)GbNI(4WmnwnPsM6S;1;ns{^hn;@U{U>Px%JGQ z6<5NZ-?{O&`)`YgAwwfebFf4|EV{j#^rVsV8_D?%#85>Hm48|I%05w=<~tDye_sSY zt%WAL`42yDVOu=dnJPR}sZpe@d?D@a<(4xSYF^$j8*4h!nQ7f;@-gGS)gn%dZNV&& zi;}dhT~%NZkTw!&MYWBqfG@FBF3#bvZJjXXyN$Qv4o<%gpT<}88 zj%YF)w=Be+wzB$U*`;W>SHt%n=Xw&*q#fHCgE@{tw3mWjSj}8Xhvqa+Apmd!MKkTr z^loEYp&qR<2$O z)3Nx4c#ehptJ%&}HU&-b@T?DC=O($%!lXSnNxNJ0&E72(73l%@HgXY?Iyc!!9atruy_C$kY`b_JWg)oq&R>_p%6(dh`FXn)RwYeL-MW@;A0+o9PH`Xiwu zoW-&^4v3V$WJllrr39?S?CcH&&9BmW4Qhx2eG=}BU}g`4DFDvJ!NfMO?1ttD&>mn$ zS#Fxrzavy1IWYQCHg<`d5Lq#s*h{+bJkwT?qLAzU&XB-$xW;&KZcL>r|AblF& zEaHxQsP#ha4h*378j;U9^bswY|Ch?==|E-1@A`wysm*p@Ws#u_>vl4;=&PKYJ~zE@ ztghd6Ax{j+Xc}CJ>g;iU5xUDk=Vq8#L-S#qBj4tLx)$QDK57$Wz+j8CB#Ujw1c8xZ82RosgiFf#|^ot zp#T~VIW=T~1T&l89{{2!i=|W7W&4)x~ zW?4%Hwq$T^D%_sRHg9Lmp3J}&UJJ55U(hGwkqCS)4|ODovdojy88jI3oFHJ1cBUDi zJ!+{a$vp9~9S;s}|3~Wzf<~1&b;V)Ay(ju>JJNHM^yGgnc{zk!3;(L-Dz+3pI7~*X zMIrOnbOGFV6?$cG-j2Dp1UeO5&r+rEf?fe7*eZWu(5if7#d3#1ho2d^b~L zoB5e}hgH>lf`pUHYsj^Xmu+5LSevI$*7^NC)w1pNEq!agUO~nWiJqB1b^C%jo1f(P zi%zhZBchBfW5UTnS)Hd2Wk(-0gU0af>g2fM<~}S>G0<}ob6lp;L96a z$0HnF7(L>~g3-)TNoTaZK_y0I{`_JTdzIlDR`CE0t9dCmkPRJ+n5&KyVNr2_aHSjz zyjp(c7)x13j%8Uls!(w9#1If>@1ao~e0l+o9@p-#_q-Q=%kh@O z@Av;c_2Jqpr{_T9l*M21m=b=dA~UN&nF|?8B14JKM?Jsl zzWB|)e9>w_l$}n2ewX#>LKs>K`c2SRLg52$tCDOInXI*! z%Ylj!M4YwZQy1F8kY^q4^6Bs;wWZ|T^64Fe5tf3M-2U9!U4w!s%_=h#;`(j4EgpB+ zV_h{^N*U{Fw%HBZr6S5YGh9ZGr$3FPqcjg4FmGv5ky=ceSD($XdJpB3IvX;(r8Qqv zWev3)23;^10JTV=L4yaDVQ(;=WXE?i`W+0#0%6@oe`!Id>QvBsTJ99biu#yNQ~ zpmEQ-XLTTRbm*kHj9T~Zb$R+D)7ySrLvHOJ@U4p?!+B)pAeqS|<3a5wCl8Wm6{K10 zI&+aZ7g@jAy5O2UeU1-0VsY&WT3P~`#6V2W&|3(U(C9r1mudN)^;N5VqoRL@C63fN zkc;cd#dV~6qb``VJN=k&p-hx#{nD8PU70}1Oyfq>wFivp?4%RAevIunj9UX)!i(sT za4DW1;nQM`;*i_Ox_)~y>_nR4YBhSkS<_Ys z(dgVVMgkWZiZIzbln*$JXCq;>f^FP{Msq~|(7OAYAnj3X0^YLKru`^rb4AIapwC!0 zZ;o|zkRXj1tlpO$LsN%%P5<)j%v%)N_8V z#`e%q+etFwLfVSY<&vApWHOFSZYAS!ZN7S^$q;fq@~0}b-A|=|J0apjm)rKhM4m== z==#X|*0qIL1&r?ls{)PLGBe?l z7Jmv1I}f3;3a-fwh%+XR>})z}j75#1$cdfajiyuJ`6${O18X8>R=GK<0m63=f;NvX zDfDOYLjZjds8@q-P*nw`L3$UU^GTo=_!k9kpbAgfqBqu{=3G3;!63l>V=%|UMO!qs zLDCzB`WdDni)&aW+>xV>UCem20!yZX(3JQ5CH2|T-UJxjfor3wn^AmhUd>&}6>Sf_ zbHB#EKEcz-O6#|K8n?RDQ|%A7Y*d@vnEDKCJ;k;jQRu^DT5q}8iD}72WU1(K=;3F3 zXlX;SoDD4i=XnIRN=3U#a+OpuPkalkR3TN!R2)ya23me9Z8WOvi8cip4}LS^6*L%C zdxqRBAcmF15c!9=`VIG3GQ5}!hicT>H~*IVbH!Zt-wMgx$(NmtUX$XLQy<2W^XvW? z`>HePO?|;uBhUW*om}nFx5~+F_d%8nIQ(4m^BFR*m<)tIqCLm#Cle*myaB$5f!7i= z((Lzpx00^3H{@@~eo_9S_{H`Y8$uhSC~szB{BxR{GhVQmylS8@|o_^byr&fsQ7c#S!%&Z|344J^> zxzk!Vk;}=l?u0Hk+$&{Y^@e+LjWnmE*MVkaGUP~x97uh}m35Cj$+fC4vgpOy=RLu& zlDU15F_pmOgBoQ{(`E6=5^^{1i>NPF-EqC+LT>IMH&e)jBbjh`&;5FY$m9%;P`5I# z1JWU-e{iljrlE}7-axKP$aS7r77|O~-?_80Z#I&f(WK|JVU4&e=cXl<>D|WYDdD+? zYma73rIM~2%;)T~SvN zm}{7`F;KTsM(J9ejJ>cDb=bgw4O_b!H3cbJRH%MC+rL&)8xKv#IVwUaLHcd1DOXC? zpgu=r@!}}0VhMq+M5cZ_YFNOGq%#B6OkXH#I4afeWQ`#(aL}oL71!tNKYEzad)c+o z+EP6aA4k=!DF}C-K|Nt$;h@P^Ql|vsgW4F>ww&+t#*M{HYXKTxiu$&SfjQ4!-o(>N zhEiP=EK*7ag0y9r<0UelkuVB-$~#f!nUM*UfaWNLi6u%TIAR4zzy?bhTZ1EOa9T)v zB+4arWDV!d+KIL~*KhA3GE=ZyU1~6qQ)_kU%HZ@-xV_TFk?7m0lC*4bo6!h>wSOTda; zuK2|vj*@&V?Kx`XxrNlMZYapZxR%hj*K|~C3%}d&-TLp=eYcYS<(b}fFunjarDB~c zI}ps1RU(snYBo#e%uol-J^dx3Vj}vK8d+}ph>A3^t$L5ec8}V zi?veFhQTH}<;$~$v_~(aY8k1BbFX~qNyD5x_wCsn0Y9~&zVl#nR}`^sCKF4^MEFxm zm*jqG3g;WracvqJ-h~E=p~GG_ypGQK@3XnQRN;%2bew;GDavg$>O788t}S-tVbv9z zJ{5ks_~p{4JD#q-5wr_5 zZh3301?Q9dQ=cY3-N!vB>y4ZU9ap!}(3(YFI`AgXJWU~uA*3<*Y1z|KG7wRBnw$$K zH#D_to(t5-^0H>DU)lc3j@c8lr||RKm>p@%dzvF|%{$(AP}aPb(Uw3jV`BkXmj`1! zM)fq%MwKj~h^U~>6B}(6ZOesv9_eCG%MsS<&@56jiT(_ zR!JR|3&k*Fj&7Z&us%gGtwi1q=kvG;AEqVQMH|BE{J92K<~%6-d?X!5eA{g({A=@v{mSLIZTJ5?kK@}fFDVBY<9Hm_mfPdt0x%MNHU}IU)bziM%(PYTfkHb z1810~g|hZ|N$XC=M5RWh$ck`#fVe%cd`^x*zCiB8us$?@c{?bi0*586LP}X(d!^c& zwHL61l2c#~dr+p=5eHx=-Ue)VXX@;BjHiUdA=rUZ|Co9{mP%>y1jvWhZ+5g}j1`oX zQYaUB@?M;SgatLn$XSU3E2T<%8_e6v5v^1y&+RTaAzWD-Z8y&-P`1PlM4!C=dlgZ& ziIN6CNyFwWazwBoSBsORe&s5?w})Xl(x(UL3Y8WcsNZf=!WnW{b1GYF=TOH0sk9|q z?CXwV5NHgyjg`@fXc9K^VEDg%F zB7AlN$nVpEOyoj4?I9nn9kL&h{TfJqf9Tc7UxUfn0MnL{Sn|iPUl)q9qa7p57IYnh z_WfvLuViu$GOl6H9_Q+gp~fYMED=>lyPi$sx>E2=5}t|YW)ff~kw$Nf+iamz$@lw$ z?g-x%#q_3&{L#*TMN$Dc4YYFlz#7@nH_WH!vTmGK-~oYL3Ma3vC$Fs|*OEl}(GQ0c zg&_P%it`6c!W_j+=F0=@h}(g-^j`*<53U>jHb zi6yU8v~D&~<}BuyjlXOlQ*k55MVEqAX9HN19d20-)@9IE#q{tnRfV)_eqaY{T#7n; zn6rD4Whr!2LtQ>JFfhIs*Dm3-zMOVD>Wtv~PcaS7(6L423btMFm2whrwn0FD+xm^Y z(#DOl1avK=1r&fa=GD<+(t{X%RK#dQW*pDTMWMiQVIiK}4wIX(wG^yn>{tbmi-AC{ zEZ5i+3^u693;E=Rl-v-AF?M>p-cRe_8B1P^C&uNsa;%HUwE|*XaxFo0D!AMzV|A-x zLO{9|K$gQq1e~WtOAt$FE$GMi!jL2C-Ym34aK5fW8Y_deaGMbkPp7|!;MrH3X569_q{NqA2JHiapyXKLza&lHi-l%?Zn11oo zH~GYv)0f+@r9H5NKHy#;&z}&Lh4LW}-s;GjJeZac+_IcEd$PJMd|e#v)C%Jf(BlB6 z4A6#%ibD26?0kO}$z%)_mbfyid4d_q8CQ`jRDM$~Q_)@SP;84KxBUMfr*}E7 zA=mpx-aNh6d+6#3^7>w4a(`ywGoi#}M;<#u8Fg>9m9;XaD6&IX}t@km0;7mTNN z;^t#uEMY8^>C9(458yFJsLNw+IB;ioV@nWjasrb*ZV*u2PCVex42Ouguz15gXZbnw)9sKQJc(9O}iv(JC_aA}&Z06E2Xe?s2>sgZ&nfJo*DTV z{m+f$VI~=^x*z@fpo=l$vLdc4i*2z%ohPA%id|CC&E0TwFYa23x*}n$5RWC}t^iE) ze0MIQl+|T9yj;!<#i5~PXh=kZNAdH~=-O(gKN59v0tEsW_6oza4^$+1_81z7#zq&W z!&A;-PJMPU)P*pVs?#ljo2B^q1KeE8o<7rAnD!cJt0p6S@ecO`M!7?CTwH3Re7Wz@e4j9ck<&wg9XQ_ZzTS@g=e zpi6;YmA_LwTTRS)xHT|uYy?RQd&O+z*E;-DD^Zf^fy{b#C)C5u?r6U#bs zY5AKm5B$W1#gQ{=N$);I?_P9vvCMLS(QZHncjnR#=JHX#F(1z5GB2~pmQf%UF_M=O zm>_s5e}1P7Tu4$H#eBh)#erjw{a%{K&t92>om(VJ0o9X_I6@yhR( z(yCcy<1i1!=X1$?86lPV21^xNGw0oIzOL3tOI%*u_iiF-h{B{{#TN&^$b5G>BQ7ZM zn^|N_i37Xm4&mprRiJoQ11~1REn0pq0OJ|f=(9mh-TsqP@!dwl!mBnhym}jU+ zXEigWV5Sq$z+te;;hqc+N%0WPN}{S{;fs4ASW>?Z)o+wH=CX~E;HxmlGPNgg-3qqe zhBNI13h5d=M80I{(?rkE1^xonkJExxS~7Jx>E7wqN>g$DLGlvaI^;*{e91dCqN3!+ zFb#up+*A&&#mw+lXsm&jO>9%4+H@L>F=!~8F;t0M$@R;L6cvF~V5ts;DS77mV3oqg zMWZPBq-8sKv7EeF*mLr-;>ES(RZnt7)9%-}h&;2E%;t!`B|r4LA@c#IZKr%Rh4#*6 zWE<0v115jDF;F@naMm)%mLrJdt6Rc2<00Hrz?0*u)(YOZiY7QVm9@|q(gK=SHepep>GlDTS9@O6Wg)~cYE_) zYw6w-)R(~yU~Jus>uKZgG}oLD%}2Q5!@QMa+YjMRPt+EzYVgB4`gls(8IgfR%b}so zqC?4#-zT^S)9zn9ZPvTYTa$#9t6T%;yY)&t8<(JYyb`XU430)#8qwlsIylD8g&0cy zm3n7A8F!)F*F)i~y~ver>D&&35zIg^T;D+DpvuyeOGk-$)%)@{Bgou3a(_Fyzl~Uw z#G)V%3dw^4^596_dNHW<@TFL|u@N;cV<&jv@hqKW2xD}B+6|l&w5##$0`663c-3j% zs4*xU6_+YtbQ`)80e4o=u2G|i>qJRA4|7x-ln-|qM!%4KkxJOmO$oXwu(veGkj~N- zYIFu2%U|6eRqe8>9D*xgEg;k(XpbmH1Ee%3O0U z&5$u%-n>zJtZfA^5&cSkm^uTqNz4{@&IMs!#$4RZUW`WqJe0$OQ_OS@blbzjGZfiV z%^@x0yUV~727NVfAqMq2;$A0wld4Nn!7QgMebW`rlTA9L=?*4Cpte{Hx~zri>bTYP+?M8-tEL6!#@qd*Caz5$*m&NyLi&+ z8;9@hHHxx|=R>{~K8-T1{72D00>}nK_@`l{cO~hK{4_#bQl=Y>!|h8^_f}*)h)1(% zdHrk>tB+x>InZb~CPj^_@zr&3cLDSlQ2GL{7f`j86a0x||5${ioQ#Ia>4Uh%cb@Ec zaS6N_E>W-o>ZUs>DyhVTVO~4UzK(5XPNVu7h{q%buBWjwn2<;(=%z)!Yq^NZe!Cwd z%FB#DRsC<#S+$))W#h!tlHAFkr8&AhV0IZp+6qY9(fL+xTLoz=Cv8VaTOOgc>HPU) zqO^Q@nSbaslX0wrKb|sb~mE0c5*x5kJz058V z`fQ|qYCP+!u;#MXOlqxYHdK_9*Zk~9H)K-hVOgb9M50Dn{?1F;pYh~fMBWA3u_E1W5i^!uD4S=1SB;t(}hcvIK5q!=NM5 zEy6k<=0PQTP$i-Y#mfOAU;gyxN*Dk6%LJ-a)i_ivI=jf?PVSx|f2nxG|2=#1w@kW$ zZzRW*ayG6toZK%ZABK<*gUKs<+LOqKi%3Jl?+Zm`MXV{FZ%o8pZmgw{rQF(R4D~6Y zT>^S1rsK3!SH_snC`p=VQ?YK=i2^DK74Kq3!J;l-*5oeeocLBBrYRdY<#47wj46d_ za$wAIk*iq$i?7lqAZ&hu8bw88PYt;rN^U5p>E5RTVlMo@_={`Y`t(d-+ z!_caj=jhU0_~j5C>E5*>M)Dp)P_WhrxB#vIxwA`X_Kz=;y0e-3Y$vVsSe`SB-`iaXY(oY0p+1~9U+8?iM*oyTcGAQS_2sxn{ zXJkGDwMs^(R}Ek+&x zM~5%8GwAgKxRZhU6pU#LOuOM*uBiP8?puYg#8BNF(j)XBTuygsvm;BOXA8Pr&amj* zTBtk5OfEuqT)8`La6cBvPIzd8W+RZEs@bDK>x@RcDNMriBJx%b+FOIyGtlelaN8c; zR^S&-K+{G=-C^eSy)aklI z%~Y6v{9nIOS@%5KN`=@o28AOX0!wE&*NuhH+Q;v0&(3s8j9YU>$HLg+&%5Ytj zL|>q6OMvc3)Fc<04zgAcMdwD`;siZ$aDE#eS96n8Ww~7RIPv`zN-;~Q=2F5cRSZup zR)ys>Z`!LA{9FMuw~q!!H4^M6QyD3mOu%Y1$T|-klha*?)V_Gp{=^Ue4Rfb@RSE>C zA96ec4wO`yC#~l*358DHp21Rqr>0*yXx>jg&m*0#q|@d9KRS|52lCIgjO@$<*1hl%#HsV7oT4#%eo#fvQ%6O;TRFcU7y?ysXp8W8FfY zQFc*WD1p|+pe^C*vT*~|6|a`oF9B1UgyMzsHCP`kYm|x+l^0&lW+&Hjlj~q|J@lj_ zt*fF-lu_&oXIBX(fnnIm^>{KAPcBASm|P*5j1ro8wwdD^L)pdk{%Q zr3}_niQpe1$;(?rq3Q+e4s1$5LkiTsiy7uXzlvMP_iqqU)uU?*L|pZILXxPbtExV} z=Jj?0`R88phEF4q`<~?4_2k)gq*F~gRiyKO@8aVnmIP5=^<#4&9@v4-F2#M}vh%Ca z5LH5i31e0G`Wo(1q20J33McV3|9On16e#U#N|d$9a8roLRsBLp8I?CE>|E@q_U7cu zYl}!Hed~p!vw(bEQ=eKzK5-+T*ZdYL@+UWU1lZJDYbaQkqPo-W?eyF4|3*3UWF?_{$iBBF-`kLOiS(Te z^3MX&&WUVwbW;ii*@~9c$Pz3H)k|+2qa)i=`9BW^1sFnDPm!-)MrtGe&nfASDA1^@ z6D*?T_}McJ5#-g)7J-?{@iYKc9VRjP@vKU z!*SH(1sBWt203fVqXY(J@R$Z3vq+c3SqoWfo?N$6R=WiHD)DF;?kd3DZZH@tMpnOm z(^lXq7$5auTLYlEOc-?&Mx7CZMqOm1_8^Cbc+{|+2g#@l(DUYW)V&IiI#V8O)Il*y zx4)!PWdw~-v=Xug3U#~H{gD(*bR1#2!&&VCP@&E^L?W54lhX0!4wyFBC}qvi{|ZFK zGQvD;QDM3r1$xT_T|8LrMVsn3h|bX~aDG3i%FdRSNM4H;twXRVT0vO{TGP^op+1%?IzNBuW1Oh>WJAuO`5RTyP?rs5Q@8YgNfCK^r zic6tIYX1sV+)9gUp-{9qe821W+%q?`V>>%L^UmwLoc$Qjet|wq62!-8A-tBuoap;w z)ne~r>suyMYRHu8QpRMqkaG%qqe1wZp43_?j2D~Z#D<=+D`(qlBu0EO#{=r}X%q1@ znHJT?GJV{POw2)YZR$h$A%>N6DQ||=O&>4f5Kbk{7a0ahi8ac(Y#htz$nzSpj6syq z+mPIb09^&vOImGJH;ClA#*C?yv``c~SaDyzF2Zh3Y$cNxxEU{Cy?6vhdij{3S>+#& zVQ>GoQ`+eC9{CQry6L;1!VYO;vx4%*+G7$w|9S+=sn2XIIgxU}F^^{1gA_>n%p96T zdGpmASQhwDS}pFy@+YzUv7#W9>2;|QD>hTgBAzmxR?cIvMsf`Y4o2w%nTc{+P;P5( z@^FGb2HOJWskCBUO@&LSa5~NeA<}I^))Z+2sL0APhS@3c?QhlXmc*knxqCpc#VuJ? zpuLA@P?U&l^p$EdA2;wk{nmuLuM)OZP3OqZX$~tOJ|F$5IZfiXZEs3 zEbH`RAI$W+p5}FZC?$v`O;9oyi>yW>%cy~6oMK^X=hNC6tRMiJPVoGGYFdAuZf6D6 zn2-3eiu$7;O`tTv^1IXe7?F*a5A*YoJeovQqEy4*eGs|1(##)j+b9f(Pa*MnAiIjqZW-l_RJYWYlcCEUqGOd zUWvJu@Z_pWYKUD~_V4Z)2F1ff0d}$MwM-f6h4bCvvD`N&J~bkL@TzXd$FH@lHGgmV z-YmYKCSTN&yW9K*vzz778>}q7lj3x!c@Fl)boYFo52E7PhOesG&N`qx#B(OH9n%QT zA-uQryqtJs5< z7iJArv#N`t*<5zw=@Wcc&t!XQi!Dt>$~>{9wzhMq!DSbjL0U;oCPO__Im>QqN(1uL zM@W^eo<(vDt)Hsx^kwS+?3b@Q)Dcw8rh&9+5EWH676qA#pzAQwoCK`RDhev|f=~+w zIK=jcV1}tVv(2R;G)GBaXtyn24-u1l=Nip!$)OvlfomQKod7cg1m+c9#r5T_iL$(j zEN_heGj-3@ITck=>C*xBfEATt>WSR~UX5U1Cu(0Wqw}rkd~3F=3pOxYGme)hlFlh< zI?rp${^tfh$3oatwyrPR+TYGs)cK`7+%OqdM8L_62_tYLs|EyzX+@vUhRX6@@_to$ zKT>A3l36X~jS=$3aQSeFU91@XZIHQm5xW%Vu&kKzbzstr47JGGOJ)VUtz8(OGEk<5 zy@gMh6^Z{_#30dK)dZT|<`vF0{nEp}9e%uRjv{}JlUKXQtDWV8nB-}8T2ZiXmcwgB zap??scCP%zSN`H7-}G=+`nmbf@$zLyxns%cZfSM4dB|TC`Km=fhjqm#xr0-d|JqpY zm@9Y8J3pbgo_tsf)yiwg6X9~l0(AM=zC{k(io=;x-I~j$=avS2JIkHka;KMk;`w-_U6CxO>eel1fD_4^gw79xlKA?&@2z{uxAaFyTWBj z)T+k0_8${=3_mwuFL+||X4)vzbdQ`^yN~=~{TTk`eE4huRkpSv%M24d^umfw;yb0H|w8mnG3|M6oSGqmTTrdz!r*BRyZDfCDM=l5NQ|sVVTj| z%~)|*_21G$zUaJaio6P`M_^`UZB@-xjpYxc<%1@hS~_g{ANjqo6OVB{#gysusTTF$ za2rIfos!k*t`~0hVD((F5lBaJUnbA_^K8Z~OdhMosAZ5k(XMJ$FSB6wr)kOTx2)PZq9l3 zob2iLO3oSU>l?~Pv3(PHC1BEu!NfLH;i(Zyrk_|ln#C$!ya#JeUKC`g1YFI=HVslX z#j$O5nXF}3oax`!wqy*lNL9(6jLVf!X#9UH&|z{OkeQ9;v1xl|?U|cBDH{_#R2~~v z(ahe+`SsS}tgeWr1D-r(FoD_TQ1(ZYg>2%>Iqb`YP$&3m5c_Jfh!Go_u?+*k%GiHKg7B{hW?i`SWP`^NhnCWp1=A zYb(oQp?`0WO3L}9vZWw|6@(dVz(fk8L}4vxgtN7+HRzKJDsdwV;PwN&Mnif&3pcP|5RkE|*pE8Khk6qeqex#}^O!B}J#u3+n~8S46( z_Q<5X-(dUH)9iMaHHRln_DY@ZlNHFaDtoxb7y^}~NR!J#&X&9|h!u`BF@ozDSGdp{ zc%-)$CehZMnP|;wsAP<@<&6QyF1@psJf6Ee`O4bL>bY>D0QhB1%9Ysz+|;+1Pe`@! z`VBjJxk*b1A3=$jlNaTLovOpd=dF^0_g6ZckmF=HA{Ok>MjRb(eb*%a?dQEZ)Vgj_ z=(aFLs+tdzeKe;(FR4lEjD`(0*rDpIxEt;EwGT;&{Jb6uB?W998;7Mi9CZ4F@HZPR zqLQXi!BkN&LGuM~(7oV`CL4;DkZLIE%ZrA-as;zz0VD77xD zF!Oa$VqKV$648^nw3Xv(fhn-|(jMzH)AA}5%`6Kifm zmfOf6E78hi?Wq;iQgq zmsvrTEB}cbAlRV)pSL>YRZFVd0lLqk6172d2_ryI5i`EIjw50q>UEI?NnDA zL*8WVNEg~ZRcu(~37zrcFkUv+>RbrJ0VWrVyeM;KHxJmsBsqku0n40XOt8szlx^`T zU#cXJw}+*s9%>ils_Dm}(V*h*6DGDUXL${cS%D(C4$G@fEBkR*Rkvh`!__QvQ}Nq} zv+cu-+ZOU|GmJ1&#-Zh*8cb%pF*Q@>Hw}n1TB|pNmUn>F>Gq)4uhrfjT0$P05CP);<5E)n?A1w-sw z+BjLzP1XFsx%aE=8|JX3eeqSI+zL@`mEzD#%U$#Ij5>NoPD%9T>Dd+U}8d{_p^|`Yfq%`hfFIWVd2_Ay1-p(~Nn3EEfbM$8CO-g}`{-!T`4k zio=|4*t~4-ObPtw|Ml|LMaXsGa-%_R)a1Gvc1rJhK(U9V`+hr_z)DGtp`;od+?UKS z(mRQyC6pPd}Hm-5Q#G#u?@9&;eB59neG(*on_*yW$@j@#kUd|nn=98X&u%LzeYz}< zlj{=gO8TPm1W!4NrB5k9FHB@uPt0U}M`i}o~5pa??Uv(y^ z&R!&g>^yz1Eb{h-JyrU#|4ovcrpnSTvb3|Tm?0~s%hF-8bf_$K$kN{U&!~;w&VM~p zO>X3;*RxyFFMPioS_8o%hQdi>t{K8L95G&)T}{6%i)y>~s|J-khfn&yKk%Hy?D}$j zb6LJzmcvkIf-D^`w?@dV;d1MUw5dtM0<?ue5Wb-@sRQWDyCal zx>+5iW+o{5VsmPkq6f3=0a`YE>U3i%U0L!F(z|)2RTs|XI2Mvro*bxVOy*fbOuD}) zixj29Sh^oMp*`9XBZ3RDgqW^^HSdejto^}5u5T*W*O2S0%WE~aw@It&th{n;ew4$S zv2|_DA#R*wq*yz08%U%u$Kc3w%H zH6p{jVWGn#jv5*FWpM*NZOW>lDZSGg z=MKpooHlJE)EkRE8y5{+<6mq{GM6qXn)d1V{ec;yx4?+6W^wd^wg+N24Ow5w)vj=u zd>$tsh@w{OyB}zg>ajCAdxF_xRCY8q4 zy4`}YZGxq=`+pEH1!1{q{4wt1wXV4`}=A02pP zROXpO?SYwH4$WsdAeXCZsc?1UP_iwd*~_37kHZf_F`+o)SRNcBOaM!qIsKI6T2Q-W zatccu&r&C0RA4)W$>K&+m%y#Kv7n7-NFG*@dC zlrVIvQ(!Z>SgVVXKKQALCpY@qDf6RTS<7L{GP>=j{p9AlvbWqgSZ-@2x3!cNzUlD& zmKE^7HjcookT3nStgn_I7`(l%Ug)9cPe@y`uY1azoiz>`H+QO7x^qhD(9~h2ff-)g zduP`-)(s=hruYf6q)**0A4s>-(eux$fak zqaa=swzo%SO*=GCwRtfskQbKPQDk-ZNDeaQEMS|Ad}9l4ArFFbi=vQ+uLXEMc(6>- zVpzBppo$bj15rmy>nzeb!C(Vs$97xRRJpQq90+mn@PKvTB(_?uZaF?A*?taFcFi=; zgK_enSswM2M?LV*dpmv>2!ItnL!?Ht*;K%S67xtTgao$(p;FR2b0F)y0PSJyR^&9*noF8P(H9InDSEVI{jV(YpJ;a?bIN&}S& zN!l2u$FenT#KvBf-XFrZ>_8@{-LVz&&tCU_w5tc15=_K0ce@W~nRWoLPCuB;Gn7r$Yk+%QgV7^|;O*c-QH z(FTyJ%jC%}YnrTSe5gm7U*QnDDQE7+k$kNeL>2q|***y3sxapr}8 z6ZTU`R_7yq&eY8b)|>s%S)Q!!@XE=}@=x~D3*zL5pt70yYKnL2;L?`sW~`gOdBBDl z`pU6-X`;*9E^;=4D}A~;lSf)QOgYzlIAlIc;)lh`r$0i!t$3xMHV+XxT{TN z%z$0Z`Bs*Mz!eUVLxbY*%(=0)n|vE9FT|^wywF`<=w|q##;U1$lBTZ<{l2rj&{uwF zi#d2%G>DZ9U^%_Smc<+%k9AmEbYM;+&uE3-pY7`8{<46ba-RRX#1WEfD(hZrU2l0| zsJt*pUKl9fMr50dn*I=?ubVI52A)^;_4vM~zK+XnOHTG!+d^NtRDQH?=((|8R=ZWL zzxBKmY4^#kzN@=tWyd1ev2f#>VSHs92JYLwdK>_t%t%m9Ts=$O=Su*9-*x0aOcC4q zvb6zrHMikcttzG0@O5~q@BFzTNvt=b?=LDRg=4na%Tg% zv%dUv`Nkl5F+ktcZFlQ$DsQUI%O>KMDaU59eNjwatc1PRldb9D@XXEmdQ5iM@tX2^ zxL#(`fs&kSBF{CJ_X6d;0C~?>-t&?7g5=C(NR?Oq+EqHoMxJd(J0w_@& zt5^y|JEbP2)PX}Fx2DVPZJ69PRBjt$_sDCp#pt$I;~8}+Pi4@xS-n6> zAEm4@^3DDnS}~b5l#({Iy1(6!*YbxDn;GumROSU?3qb~z*F~-wgm>$mH|a3@&7kM@ z)i*ZMH#U?XLJxOWPt7~E)U9RwZI4s&sjZW$^Z@t1xzOZN2J`r}gN!h|=`>GLoZlqq+2;Kjg6(s{x z%=V6X=YCoUzSOD_Y}H_qHcic5z*bF$hIV33={Nf+~!O@>@`T zN1#k1s~z6jdAT;k+s6hi?0{gu%4TczT9Nh5W}6?5O28V2HGkvJP2}eOa$n8N`f@X@ zWQX|&M%I=UQ1_y6Nr&p{B9c8QyBVO0DG5f0BjDtpOKx^e6Z#b2?0SaW zx`yGD>LFZBK*(^{Xpw2d_axYObH);$JJFQ3h-ADuyBg1q@<@uJta`>Ii;~gZkSYvm z-q35%a_U*6#*#CLFDA@dWOvTg`lJDqh@E5lb1B}KF1 zjua%E-0B=h(oANPtZfKa3Vo?CfGxzBGr)4}D!jST&_FFRh@x0lG>MW%^6bv!B}!Yd zvhhkr12v--)lgT~fU6RVba2_50@bp9R0hxXJ>mISaY4zm4lj&iX^mM{bC#WGE(-$i z_bT{Qmd3lec7AXi<^wXmQgmc3MRAj~Ucm;?oo?;7SUR>7Vcy*zOqYF@T@2c7`jbex9 zxc@KCQa`JYnqTJj_^IQT#I!D3niS9dA3GeBG)6BRZ4WB^bM0`JGfk{%NU5ES>qog= zE5gGy-0|$PiCs&fzCo+1ij-kg)Q2U_2IGse3W4D|Lad6_Y3Fs+&ZUVi>!bxjywH3#4@ZxPFAWiDv1 zxkj604L(*as&Cw8vwIcQIWQGgpB_qk>Itq!Iw4>eVT~H!tc2|2K9~wCUGH5g{R6?OIVeyh<3{`u&(a-vEcL=w4CxU2`h}D+1)5 ziTds(+ZtDNDXmj6d!7F}zt6{Dyf2G-te(EgKW9p5Sn1SV5s*{f8Ln@crT5Vr+kK1G za)WTy0Aq2-5(dUogdw9F+t;2BsB{3k1{QE7Row3A_TzIa%b0BKW@~R8WLJu{ot|z+ z5Z;?sYyjAX*azcw>%BO9i(75#~p< zq^|;=5+$EklRvcjcDbJ3Tt2U{H~3ggdLOhe%$o7Aqx`(Ld|vm<0Xuu^N%iG-hR@-V zuXxLv(d@U0z(x--_NK*O zLY|b=nq|%8(1M0}J~ldBQl+$FJ8RL-<*Gi~XZu2MIxNK~?MKBkl7cTvK@gbPjO#5aqZdo|W6anR2P-RSvEcUQ)aOx@ zK7r+!ML`2f_hY(;nmI=0ykHXXPD4c`R(H zSGItWo>t!1mgVhRu)xSnNez{x7_jj+nw5>7I5%;w8OtlFf=}cV;Bt}a5nA#RwXiGa zz(Xn(eu{(_V6bmx?|_hM{=os&+~)$^mm^k`fJmQUvxmj(@Lc)v z+ivnpER!Z#1d{lhx$?^OMdDpKlPAb$H=ei+5J~}eFx_ZGguZ5%7G%K zBUI5XDGiN!Rj|Yj(#V})Pesk~|?b zc*DqwD(fb>f-ZPn9k(U&^LE=8l+4yA>aH^tbkwt;EVOEE*)q1JDwjiqa|th9T76}rsmMz$if3y&*Ds&eH=Eg; zt=jq}GnUpPJ5TPXGDB_*<<)zdQjZ|%Q6q+s~wn2N!AUT^tWe3h`ea|Jl@s~6`5 zF}XEVgTIuDn^0E5;5dFY##Hgs3 zjk9a3^NXs8jLNKF8Pok(c7jKKu-&$L^TFC$5oamU3@$3t8D%80tj<;-NN{YH)Sl%o zq1@>#AG5o9pWI{*Z;U}+{LyHVhZ@W8hRN@S%5Pi9Z=1_QZRDZW^4O&8=5{KfFN8gO z^}{dQ3Rf?i9--z=hwW>YCrD6$(5z?%-cap^5+*k#*6s|Sq<$V&1C+2Fwvx#|TIJ!n z`uYj0qtm)2MQ?AiZnnNUSU(iBvd@9)pE%HHQNCb@XESI)Wr1ZglYKFQeKFW!Dbb7k z_4VWRt@DnK{d7v^h;O>ezpe6b+b%Y->)AM+pf}sMJ`kn|ot!bUz*&b4I^~hAL5j2JVXt~15Z6;VZ7_e-n0!tAx^7DLa(kmSJ&%lI8SVCszQF>t*;a31>|_sGn;^F=!#QINuJa#2 z0dfKi%V_=Y^f0kjjeWv=!%=STFu8JluizT7z_%kE9;Ly*M0m+BgXNbF_1?U%+Wp$% z*XCc((znjlw@_YRy{MMMT3WYk91?nAPrWcs-d!#}iPH0`=_T{_&BZFIT-qjUJn1t< z(oD)2qO9(!IGg$9#s_Ca`dWOJ`uQ8vrx-z)XHVm4D$lPkT+Nyk_ETKbt*ZwHZ*JmO z*0A1MZ>6xWmKJWq&W4Gxgs`o2<_7b?w85QqlV+f#!BTS$viB>EJ=j5oGKu@au*=eo zYPx_-(@S9G(2m}s7Sp@XYM@8GSV0@%>~6%yQ&KCdsUg6$(*}!TGj!RM3J0rb$16Jd zt{liqM|ot|VY*wb9o&7qe!Umd69A4G@OX;l9cWKYu^T(C6D#ism4xyx*e)CAS~qla za~%vgz0I1MKAa_Y6=}U_2R<045&VO}*##CAXDd6=YQ|+N2p5G~*hMMqYAo-E)dbaP z&gFcOT$RDs*tSNjAl4pL+D>k3hi|<>chvoW2BQ@qL(?Mbghu-YctPrHwYuqJwei!r&>tMXt?#~o(sE9!qV@2z}F6kSdxuQjvf{)F7 zR;`%c(C%}$*fpTOjAhEk`s+NVUG%ATa6+npt3cdbs~;c>;Q1ThZRnFcYS1DnWXX6~ zlq^7ipW{_^?ew|`hB$Wh?o_$Uv9WEEDmxYjRVfbBlu>n9_;BECUM?GHt}ug_D++Pb z&Z=uLtKu5Pf|B@WU1=Jp8GaUAt~aW#@Hr9Vm0ie!ipl0xT9lN@jM#kXmEW$f4< zNu!Gz^O34y4x>a)vluO@*+(C1>*s9dQ7x&poNtmd_4{KqR~tsI-a8V7tDQR$Os;{5 zJ0kQ&=#0<@p*uoX2F8|b&2^0i>SoDFMvtPLt&|!+ipDO4`^ZtGTd5>y6uGL=29HrB zpV7v4qo_|?+Uz|lu+I+K;*rK^OPvcLv}Jx5+Unhjwg!69)`lHvYts(2b+EM2)(P36 zR8a|@8bc7mJa|P_K@~Mrs;Fh4in=wZqBZe~SRxTTH$e$5P+s3K1ZJNYKB5cWZXxGBQv|CN`rtJ+T z()NyeGbpw=yV8z0s3;C~_M-jsUDN23$$AsM&nzd?zG%H4?U`SP_AHcbXs^$B+8YfH z(cZTDMB3ZmllBhQXz#G4eBbb%v@;ry1lDCRLDe*tcFvZwXqPFuDedcmyUe!J4(?QF zPlxKXr>kzFgA?>V^y$zp^y#>s^y!@W^l5cLpVkiHpVkegPn+uk>fm|^eHJWD^!a!h zL5I{fbSMC{z@a`Kbf~`*4>BNt?;dKT-6MTz_joJqo=miRs)2UTRQc{Xf_Bg6w0ogK zyO(%qd%)w`14y|CW}u&soJ5DZ%;ldsWLvRsaU|_Gcc=Zq5wyRGgdKnNFn*}ECmm{> z)|x)|0I%co7*`LzuN8@XvB@K8Umb7S*N|vmW2w;LD2)zBRH4JQy3*lx9(1_99>({M zA=*2h)85ILo#|%2caDsrUGc%RtFK%_hZfhR!@MdTwwm~1Par7=JQO)R~4lGZD{K_<@B6I*^Du%SjvrEIVi*I%p>2L94tIa#;l(hgJJNjs-_uK0q0h!z>9dLW^pu?mc>>o@= z5*yQzMV0wcC6qqx-;R#@byg40fZ7nzuA0puqsYYK$|J(Z#vq|B5`uQFr37* zor1UTQznI<@*+CrE5s>(#Q3oEsSq-ps-hT9MH}fUKbNT-5qs$54Y8*}XS_L` z!Ly$UKsp3bq^Wq7A&o1wfV(stD8fI8hcKO3itvktWHhj@_2&kjTRNFzTxwhEn{Qi-3P zW1_PQz36PBiOzANb5O!NXS6BjJPd|&0Y*9p2yiaKAkI~{(z&{-a<0A)Ki2~FT6@wt zdjLPzMWb`wIX@T2)pPNvKTuQ74Mm$#q@Ei?;v4|px#_4s)6CD!!}UT7od=O{9!!+; z@CtU`B+(Rpu$&iktBdCcee%4RwruJZGdD63BVd^GCTRNIbw_ZzI7*?5W6|e$l`c*q!^J5=T%3zCoVynnBVLNK<$``Eh5rs1^*d1F z-_3}vD*f(7%J2C4((i#N58<}op+@?9Z43S0h%3K0L7kS0@_Q^d{Em6}y$9;`GVspM;txFYA2{It0NVFQ9LnO+zK^E-F$DP| z(FbshKPGU~ACpjj4$2lFe;KDgiRe#!GUiWJp+7Ao{dZMpvVSa?VEBIAAX;*R1UF{*vS9>XRbufvmL&pMF;bgjAjjPw|3A)~x#Pz1cueVgi^){+{y@N{EyW={}z^}(E{Ca|!t`Elb zP%f^I(CGSD6Tdzg`O`_cJ_~&=@Zi_62XBx@H#C)Q;M~4}Z{6MSw(%PQf^GyMud=4z z2uHd)S8qh)8ZhQYLxpZ&?ryX&@EfhsrY+L#Io-e<-sp_b74>?cU!agTdL#6)@*9AG zH*mJy7>u%E2qQVaF&gd1k#b`q0^snC*{XJ99_l0tx`}ss6X(E9ob5MZ!E+PBwVOES zZhD#dP3*~=fk=lS4psThss_3ljq6&dSJ#7XHsXexO*p^VhATILSKRD`vaV)vv!^%R zOc3H`KeQX9@SDSha&r{=ACGpEaj&W9YX%u^;$7TaOzO?0+;EE<=oZe{Te$ZvZ$YH-lW|2HSpU(M!JoCbGr)BZQSQ} zHN=3qw{iB|#@T+mAwpx7-)=_Yc1y0_j|`(#rYi{mF@%>#hoBB z+yOpwr@E2u)JA??lw%LyX^8S>R(_|o(C)PJraK^g@ANYBJADP+8A$xjV6+*Icof1| zO}R4(<N?{zU5@AX6sSbPse-93=<_i)DEn_yG#O+!2vdGpcVVwLVKC;k_4 z!(TXK{<5j`m!~HF0>1c{KPi8K4)`k+ea!cLur}`3!Zn`%eglL?#P8#*xZgt1{Z@!$Q6IS0 z{Z7d5qVW4YRP}yuE8QQ&#r+|uKLP>x#{IDf6O43!3i_I+@%wj|#DgBFm%x<= z{ZKZTvJ5T9nb0S1k~wA>fZwu{x{CNzegh;&-vezN%?!4(egLm z>qAC{hZz4u3-O0I_a1s728?)EiL{5oD2w3quqMiDBj8>Sv1cDPL^<%6hj^xkEme9L zi@2ScKkQ8E!)~Y#yz!xfn;s?@=^^IuA@=M;yvv8<5GD%4!>I=Ta31O|#Pu?+J|a>c z;r%_ba^oW}jUEA4eH2QDM-jvy)fD1U9ZfuHh`5>Hk6IHwYAfiGohy$zAl;SIqwc65 zN7|#_3V$?Ep+`f>{0O@Ej{u(@%|suw5rCgR0*rXHRH1)>v-|_r`ajsG|Ckiz9~<&~ zk@iPkC6rYr?Vm96_$P|ge;RArKdm(NpN=TQdi|#t;@(XB)0dQg1|ki-4iSAS048_D~|`GzY)j>E&F(~;E$&x zo+XsW^A!Ggu@`^B0_h3d6+ST&J@F9y2~6^y_z`~+r0^%926_^Xbfi$8L?K-l=@?E= z8k*=yQ`B#cG(L9wq&3N`PZH360O|}@`IDiDM;PhJ7=@mU_oFA% za6JQk0aiW1oIhEp(vw6|p8zL+s&RU1BzkIA`BR%lPvJ1`X(b~)#o6#Q0--ABPouba zinH)(9n`N!%2TYjr`WSko8!8bsyvPLrl+0J57zlpypN}Gq(1G1cA&GL4nSMrK2L`u zJqB$i2>ukf$U1FqXq|h^k=o#pwXGQ}(vmgL}e+E3|SpbP=LEP{x zl#6FzwmrkTe^!^9pT!_<$!*VCbN&qP;aM+Ip7rL+vwmnZ1lL&S&qfJ)HWuy2o9Njz zg+H5V;LqmS=ox73XE>LhW1l_8x%3?Pz;m-uo`Vtg+y~cyozDY_Kd&srbKrT;Vd(z6 zriGrzpiV zJz;j;!A9(>h_XY6W7ojM}J9!bM z7+%!Slot(A2Yc^DO9bErFYG3I(V6&*u3UT3L(mJrnHT*?yuf~VF%)?tQ3rGXVlv`s z$eY2%i#g~6G{cKUns||@@PA?1{I5p*Uo+?bf=>C@OQnDPi2e=W)_*IR_`fv_^lxoN z{99Lue;bnF-==5-8sgvfR`G8))axnuzr7JBFyp`dxbp9Cq{kT5e18Bhth1NVf?n1o^<@kxFPo5fiGBAH^utTLP+oT6+DqU* zFXNHlN98Z^Y%g&pyc{9K%h9M0TI}T%g}w$FC}p=~b{Wy^2!#E6{(h8e6ni;5NRB<>Hl{_^VDf{;H=UUO70u0qry5u4bUu)p1>m`0M(p1D@RL<_f)Th4MDYYpc;~z|z-X`@imn{5Y?3};psn8n->LzgGn*m&XgZ1-fyp`TeQAcs2Ah<3!!7h~ zET?zl1%EfuMDKvZyqj*Ock@tZfmys;%IQ6PlD`LU>OEl5d!s?Tw2>vyh?0yhd$i$p)c_dBT+tvs~>>7eVEFX z51`jR%u(sXA`^W8z55Xg2p@&2eT01EBlhJ-z@Lv{$P4%2AAxIptRuw77)|{MeDz}s z&Of&DT1@zZlQJp2g(hWyqDUF$E~v_p7v-*3Q<$WzO=c-U zv`YyJQOfoj>UFW;5-(js6B&8^+@%BEmxD=_a;UrBXb*G>xGd!?Jc697;BNs2iLXJT z1H2pwNf`cs8cBEsL&`!Xse>~t^*}s=9&A>m9*)uLQSMTp*AgC3jZ$yGRjIec1L^>0 zQtt%c_j)%o{;(sY-WOxh2PjAlQjs^zT`3*3K;jrdDM zGZzSa>EfhGmx>Nt_&knuc?(6l0^FBin@d-yyPkV!E=WbB3#6}f)xgkPweW1Nx~eK& zjokHGxKnN1U3I_`b%FGhu3p?CUG9bC8fq{|*C=k2F5t7$_l9)+tf$ zY<1G&8#?Mdqsn4bCyp)al=yUBg{z&nK&|sm3Gf~;-p=RFD(igB4Ctz)BQ6~gVB%ZX zv?&A_TGsUmQ>d$+%3Yf5U7ssxLL$1>0IzEUBG82~U|o3EtgA&yd?D7wX4Se_p{?ti zdV*7LDy-{L8O?5~;2|R4^@IU-y`-6&FILRW`z_|K0+hR!KHO87J#NfBbI(!Ue8}!z z$kcT&rI{NajJemqRX5g%@d7`wZ6NO632J=KM-um}xeuxIh?<>%)9yCojS_vIP_ z%_#RxCGRNtfDySLtE1;?`%)wP~>fVl)>c%~2-TUScw3ZNPGIdMmbe~dihN;&5t)teuSvk1cWNOpTxC}=9L zv>u**ww{fQt!Ibwb}~PD_NWDWUjDmVP)<|=<*dM8m_gnRB)g}b8QSwm$yYF-N4m~~ z)nuMZB+*j?01t-)=9vYpJS@BBnFj|wnnxaX+~!#V13ZnBsDks-JYRsCXC344Y=Xp| zZE7KeJUgco?43+yoQUQ*tjfn!a2(a=ISt~T^J2~_1L)g z$phhUVY0V;7Jn;POBHV&wD(H&dF!DX-|Z7LD7lzEyvvw4-WBxWU5%i7*QpBICSLkf zfbneJ7RKx4sE${$)t1eqd0XkodqS1Z(y#YCgYjOfDmO37sd;as54?BP42#penDFMs z_A@VzSL@}E`>eN=WUsVO?_}Wh&Zr>xgaP)>pHAK~n(-YA!CElw6+--jJISrcMsJJS z9)_^JtMfL?q+*2|)9y_Xcb36j0--p4_Z`S4BOR>Ir z^wzfk0DX&?27Sxuqfcu<-zwVnX$|NTR(%|N@w}QUw=ggJc7ssgQOMMHOtA}4x6j2W z``F}I-%Yi+qkegh*7`bX2wp%YKUcfVUy1PhIY==7bXxc^Y0a&ggLq)6O2yDX6Yv6f@-47l^)@n?fNZk>-bD-S0;|A&B@e4!E7%9vQd!`P z^3H)!0MCg9aEbBKx**>~iw5u(S>RDQ|4ICe(*ANP_w(9|_2VA1etam_KMfN1YYz6$ zK^Xd_!uuDZ6#5%gx)RCh|3c09aK!qBTK{Ii_it0M3(oZKQ@x`~egl&IY%Hz+oZwwl za7q1MQS3Tn>%XN~yJGhgh|~QY48Q-S3OMw$paTHGQo0OQ0yKz2i)(VwFNmwh_}frQ z>)~o}0jLEfdO>V#3pOcO?U-!AFCcMn2crz`0kzCnxmw2 zSg4_*!a_^IAhZ%Kz#owiX!Q$ifrud~)zEI$ld&BV{Xz$olzk97rjCv?-q0CDAS9^^ zT~=^afeg8j?55Cd6mp1NkA*rEJXW)(DEJWG84JB(fMIU`^5Qe=U|8%9i``-N?iSX5 zAv{|FE)xD~1EAq~wUjP_Tj53!53fL}hS$K4aI;D`um*%>nTK}@${q}x@Ikr^A5p2$ z4WEP+;Wp)6WU_~G+F1B5$|L-+vdY3QNDh?3oJY)ITx2FIOJpv(FM^}WB1=@|bFhr8swSziHZo(*_is#xg}*5)mARLnBhkoRfUsME{B3fw3#lW>zM-4?J8&y zsNG-?-6JUb7)SJg@{R~VE9B+zCz4WUQ5nHe7jhAmI7PW_WzoA+fhV&nD*1`N0cgxY zX{?OOu?psCtcqd9c;DY*Gmz!jTqb`^yUduD#MpB95tGdsTdR7T7;3BqQ#!Vn2^>2D zM`PMF#W;+x7^mGZPbc5sSnVhM&+{o_MJ|&Lu2a zidZD8VL%eMy(M`T+>-UsIVr4?i`aD~mtvtMzf^JqZIfK3vE)`zOSXVPQqwPqo7R#? z!9FR&ILU1XOSU1@NeNfdr52oySQ3|_C1toLIZU=BUUW-7Q1D2dKNUifwUiTmlfsv7 zscN)usun0InHj0sEJ!I?uBrLh>?tjnsih1dwGx`9WWuM`E7*vXq&Rf6)E-12bpSf2 z@TVH@&Jl3BY^gJ7h7{-gmXaDxU00Vk6>uJCsRzo#qiduhKS+Z~f^@E#N&d|l$SG}rkoT|t%fWO$wy8vNam z!_pr^ob((JPfKN_r83f5!P9(aVrfnuEd7N_H^AhyZ2L4fIxLM_&C2rsPUE{W@rJtf&)6Zdl#zB)zDQiTgn(=42e#9S;!;8$vbe9p6GV?({vrw@mihZVn z6?DQ|;p8o|D7Q{6Hh^w!E1EkeLnU_rOmp1F zvD{H+SneCNOiuGEcMf9bt_aEvRcVLpIU$r2HFA#>JOQEHGXd3BXBZE=4Oc2wL)+nx zpx?3#vmV(kqd2HoNFld5f4 zN@w^E+l%4*0`Lax^V&P)<*&$3aZI)RRJ2=u5e&^YvUSQgsX)^rFC!OJ$G?!5D>VO*5#^s?8{}V-9N|x1Y(xv! zNUf3_$=S#Z2r zCM05%YZ5jp17`FvlpJkUOv4)G9t_VOsPa|R)Mz{Cj*6F~kI?_4Phig&pRd@MgnFzN z#XBamWo#}TjmfnzroF@1vc;6HRzWjs?-&=cY;2=SHv?*nGa4Jy-eydWpt0THJa(Xj z*zvL&8*3BfYiPGI&R%WoJ{%nDaMF=h-0@QK#w%d_copLqmkBUF57frxmmL30rJp~2xzHfF+eveV}ey?jr)6X0>!Icl2m`}Zlg|KvDv0_auaTBW* zlh99ai^V2dl>7=%6MNw`A3!wP#Oa@HcN*Vh61=f{6gfI(+eF#VzusftIULLFyRRKK z$-e7wIhspsuKoU7S6OrVqVbaZWc!0RoG<(WE8>d%Vz$e%zQo?zAHH%qHYoB(uUr)y zOJ>_2zj7S6U(Rq`uwUN9KmGka$9((#RLMj8{;A8c=@G#HT{$`)c z*;4YY{p~}C&9}d6bvbsb(%(ODId_$;vwwKt=&<*VuCiUfS86}hGrk`dI2!DS1ANbK zKiqLScmKB0e!WXge%>5h-= z$19Ep_TwX$gIDU`+HbG9s`r)bv46hiSYsbnLh=u?$v?Qt>r9t(?ZXSlO#ATKxz~PI zrv|@kb2;e$t^Es;gC$SwU)x+|2cPj^;<55J`?u#M)9t4dl~!jz-EcV%O;p&wzp~-| l)c=nvmm{l&|4C#>k^dr+Q{=yi43}7~{f{F4b@snA{|_{wc(?!n diff --git a/resources/js/pdfjs/cmaps/UniGB-UTF16-V.bcmap b/resources/js/pdfjs/cmaps/UniGB-UTF16-V.bcmap deleted file mode 100644 index 51f023e0d609798e72d46bf41309e092d72ccb07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt?xY(U;$~>3>)|Mh z$S^<3kbzm?y;<|z-1mlD+>Gz7_!t=98%w`8Vg%B>(wvM84DVSQS$GoJ3^>?ZJQx^T Wf|wXv+<l88|)g$0q;LY%$kGLNTfd)0sHY(?vmL^bBqh= zV^`>pCq!Q^%&$!`&OumV$JxqG%H4f+QDm+z$6i_G3Vd0vC_$W5j-5e{ym^jO00;IM z1Xuby0@Q-DoZ~nL5fm#V3R!%N-}*Y$X5egj;Or&9aT1Jy3lo5ga6??IJ)O_Q^S;`} z!-3C*liir?L106FNCJJD3)uuC)ud!NQbxZmf^`Ifs&(-du{QLsQ8Jx$SLAw=i6hii zVUgo8fK(1Pu9)X|9!unE`(%;|uo#Bc8KONs3~uk2kh+DJ<=v~g_xHGu9Jr+<1&XQo z3u!lm=0#^+H47s@2>vc)#O7AubE;cjrr7?Vnbf{mZN!NDeV-r0##VJ6?S=c67j(WYyB^yQB{A1s~?*Ul%l*ALtauRA=a+kbc`nchv>wlp2>Uw^J} zWR=O@xNSJVP}S_N?2Ok2bcnO)4e6B26xV&KKEKXe=iIS+{Nx4S>HMZcQ*)alTNK(& z=F?i&vHktq2VJ_;EP2Ll*F>_7Sfa>Rs|KTMU6RPb`bY;)@>)Lm%asK?eJdIyPXeFJ{nMtav4as;y~x24o2E4*r<$tI;}?#Rk57`ZocFd&sgG&W z$maoMLiJvC|E7@$ZSwmo%W6|TExb}7wuL>Ke=B2hr)DUV{QEGOPo8biG*xStJvn4h z|INjG{Ev>8c4~gNTr;U^Q8sa3uKzeyiCP1Jb9G0>GuHBzYEh0EkT z7s8VY(3E3Gj>PZ+B!Ml|Mqu`^IaJ71!9ywUeZz6<=&?HLiyFfA%}~LrnYDT2JKr?l9lu>Kht4S zcl23AXVza*zEpHb-v&Z*NAi2}T0N3&>G@FeX;Qm`7z&A@;F;=~@~z^xiazl_8+7)N zx#Dr&4^FkqMpq`g&f&pPhcsrq=ao*%y_45i?75OZray==ZM2sP|+=gQRP5EKl$1I-3q}m%#_g zKq`~%=z)O;$8J|^yqY80V}6?di?8;;S;y&Zrr-wrZ}B5ZkI-Jx>=G-|>n?SrKu;#T z84hnQ(B4XEF^AG#CJ>GUFh9fN{T^nNA9X~W3qc&9^gjT5a z0iat3WU*9F_dAx2_={10WDEi00vKGzwFe;GQKGeb-tV?T`**V zHUsM`tP}YApTZ;}28qbbZL%C7!K*t>ziG^$)USU#@$DU7&FR=aw0~${EVW<>!Tr(D zxG$NSxP--q^7;)#bL#Ebx7U%zEu?Yt54(Oy{j%`Of-mB}SpP*_YlZcWSW`T%N_M0- zZ0p~AHe%L`1n8E%pZ$66=Z6SMAY}X7#U+Ma`m~vC7nNjmJ)YRzG%$mC{? z>`2?;A9nm&HBxkW+d!nrW7PJs-(%m$KA*1W4~mu0^H;l)WkWWc){CyQV8%R^Ok-Ru zN6$PO-6T!I+pIIW|C*=uX-|8%_T>=Wg2#!EcRWsbuI5sSL3wNY%UeEP|2R2Tpf~-! zwS?2TA-#Z%Y0~!pz2fuHIJPaEc{Oj|&PxQf^~HaCJzUBo5T$|$?ZrZUA=A$tvgfnL zcbwfdYxi6!Y1;j`^l{1HoUgW!`a{3$VUykA+UEh?IWU|CAC|%66ZqU}_$?ergMw}P zj=7_I#%g{!^|;1mz~k+u*PM7RHiRCI98N%F6KW6QyN`2|zA)*>%|V{f7b5fp@ERx7 zSR?I>6DQJS{TsowgKI9sD!Abft-zaBU~>WA8Shk=kFM^ZdwQ)JuARcy1VOh@@_Z5Z(D)d7YY{VSSR}a_y>-`<_u^G_aV+mF9DOALu0zo zumqa&fUHGzAz}unPsQdHoH3$sJivA&G0|*?&#Z?Qcfj1$1Bk24?Q)cFp_BPhAG> z+QQlF6Mxqf%9~wr^M2^G#e)ZgE?1n1^nqN1HyBQFO~r~jJ7!rD$>>QStK>RPsxQI~ zA<~9mWJm@>l3-(dEU)wqAD2R03Dl z0Ef>dBvb88eArp@Ea3gp+LCup|LXs%A8Fv4Bj1dil#|-Mq&AH-Rx=Bf_+DEe{89ox zB5Xba`UqT+>_(4%H3ol9`C-lvp5%8qbzvVK9SbCl0%_!*hBOxc&Gl==L`kB#6grne*J(8Bk0(5#whEhyVK9g{2E!)kEr5wF)Oey* zcyJ|GXVuaq=SxLwxszmXmfEY?B$MWMy6X=A7D?K6k+#(L3NIuQV-#sjWSf(;Y}D3z zP54M$(|)Z7i5`e(vM0aGB8F;WI2G$oFNrY+g25fSY(?!>WZnne+i;r<>Kt)L1v1(R zJ-d-W#r-)q)aHtsHbCnFi8aMQP9qX+O6{OMbMSYjqKrO@=-?(YE9)E zPNMO-*7@IiVGT1`Nq65$L=@XIQyuESlz|k*L zNSD)%?OW~~`qrs!zGgu(4FrvKIup#9Xm+pviqqGtA-M_kwZm8x&QV0V0A;n zH}dxuzqja{71s9@oy{L8?hMceeN#pZs^;y6#lPhf?cDB7U#7hm!89|urt1J62tjq5 zU?>urcVY?ZJPq5ym@T=!1h=IigH_a$yC20c!A!1wJDhGKn?nED(;q573%Ppe;<~Sn znKM6Be`sUz{dy4<)W%Q-O_Qfbkwm+k?~C9}Qe@l%XJo?6W|)}+mV6iv0P{lV_vYr} zz6zv8P+I_Jx50%p)MQoRffd3`df&r&xhvOP||{B{DBA+@7D56Ry2`-kIB*9u9C z`l90P6GjJpo_0MI{Kq>vi{$LGknb3T--bTk z_5A+lQy2nGfwv1kpZ9qnX+NSrN-PzR_dZS|rk$DvMjO(y{9i$qRhET@yq3V))Q;%R zIbWY9zjK*fIUaf(OF0#avB$eiZ+1~?b=T-4*V$GaHjN(r>6>&uNm!by`YF)!}j z-I~!X)y?~9`zJw`&5!r}!{wY6ccrWxP>jzb?aF^7_hk@M=s$e_;q&DR7VM>Ls6T-; zc1WKkG%I-$h}(;BOBK{phqFiMStBMKphn9Qb3P3QKNwx&J_ zCptuQ@cFXOmy)`T7nMv^Q*I1IFo%?KYjW;Q^=su{IX+qP=SXT+1C7fXqG#nN07bEimxE6_Y8&QLdH^jqmGSYbqFRGz02Ku70LX`2;-^Jpq zJD6mreDrXmpLP>7UMWu=(=lVQ3BFfN zx;8zr>d4L&lN*`&*%>vt;Yt3tIXxv$jy^f@Ndg`M$}(ePrB@M0*9 zm8624zm<&JmxFd6Smwg?8a!5wddtA1gz-dK(*lO#b|yUV1wOg&y6iGI(_x*m@n+cR?+VBM*2b%W_LxOM=l;QDsXA1%jH?(TlLyAO9G z7>GgF7f3q%txuf1uRwc|;V^TZJDZ-&RjHNs)WcGV*f~3ybb0B6{eP=?TKTl%x1itV zKi&B>E@@0pXPmA_-(-t%LdA9WKWZx#@JRDGq((off;Jluvw~T~)XW!;4n@D? z@s9gDcGpuSLu-Dm>UP#1ZjKzhE4G5_QGA?j#IliXsdp za;A8t$raAH!!#1QH}g~*bapUKk8m;-6=Piv)_P(Mb_0t3FX}h@2(y^_74*aV0_wMftXP0wh>n>$Y#Kij2Q=U_EaNjOYTgW#?L%ltX zmpGVB#5x;%J(F7ZTU+4P4m=%)#&#fm2|sCvO}^-=8amcOs{nOJVA2srjtIe68wVX( z(6Jp}@P+f?Fsy*-Xy`h^#=Fb@;Re9C)(K(eFm|~-J?`M@KqXnGWXr!RyVZu&d;K`? z$H0%0Rf9_gmwuG?QSwJggzRL?yz4~EHhGgjG%p8DmP*4(8xq*uc9{lUnFQ=A9goBu zPq{g%1h8OBfd;i^yN1SNV=wuSuQa)TtR|*y6YD;fejNYtCemF)x=(-XHsKH(Os~2$ zz6SA}T6WnREN+tCB;2tFZUtalG`JWB1E_{j1cud!V#C>m+-+y66xmS95W~Ux)m)bocWpP%As$|E!n!p=gO||j$e*)OU!TuR^{$Uz40h72 zRhdyODy!hL(-0gLg{G2(cZrdzs%0QEY+EY>MYTURQ>$c$GKxt78peF1Jv1hQ2I1y3xEzPhMdP!3nAGpyb-zZw9qH7zEjgSq)YcGW*O+eCIFDZ{ z(XYX^l~SEOWte#VHY()6bB&9kb_bYtBTj6s6k2$>Wee8tV+6(SgMVJ_F`wCWXD$L}7xRQ7(X@csreXhR0oKi3ehKZEq7f3?^cG#p1d z-O2BSSc*mVEbq(1`t{Ho2HO2#*odCl=mBTl%r4fWgNQ3ut)I=Ze^$TSZ+g1PQvOpf=gxpOMGF$$WiP_2kGiOh@d zS@kZB#|2*G1zyTaDse)OIIq^~{(&pi5rDS#|H@gnbCG#z7 zLAM0%ZGgcTsExxTQc$A)RcIgwo_7{7y6%B{7H~tQ%G;T!Zw{wRL6%Y!1I+@~Rl%(y zkW&4jd^$gixCCsN3r(JQVh4H@$F-D5IyXVjX^KP6&lS!u0 zGwbMMr3iCCqvn?~&`ar<$FsZ8>^ec|B2`k&bH}JpRQ%sphG?>D*u7&aKh_Vq6W#r!EzwG9 z7cpzMx3STeab$a2rY_UFNLhYz5I_GR_S}HO}o$HLe=B zy}crqT|YSxPvJd(ZayBXg5hk?BtTz0ZqDY+)zG#AMi1eR71ZLNv4@Trs5{2j=W*b3F}=(>?CXEot&r0Yi9Pc#U3=>sy4R9(6=YELdD#u;56Z7>dp}a+c6;6n zKG%J&tk!2d@BYDw4~~CO&WzgLAM5i$vjYY;fPso@B_0ewy$2co*!%3Z9LPNDpa1zw zrIcr!z&^fb4$-e8J(Bm=nbm(Dfol z#gcRDh`y5OEB-R?)jiC{?(>@nhriE*%#M>d7@xL-?yo&67*7}NyEAoP6U`=3^?Oi*9+bhYFnlWt?kqkfM#;gOaT>oUKGT}N=f|^+%um#s|((!*$GW%tUR>Cn7SP*N`{NGX15ccE_^+o%{@im6^IM9Q4XFy?8b;!IDt zQQ}V0m!TTngkIeVmol+|gYzp>q-_`xC!HqMT&j`sg!qnT+9j6|SNi&9q~8%GSwHmjUn104N)mLsrr z7o}3AO3Jo;|F5Gb&Xtk@DUcb5v#BHTww+lQxSjBgy@u_G^ zgy((5I(Nx+9wr@xNt#`xyL_*Z1@-B3@5c&Zk~(+X=qqcC#I>g!Xc|VWE##WrBy*uX zfH{`*1%KTm@M@)_yUYq^(n~Ds+ZJiONn1Xd2_rMhNo~UI{62K|#K?wux9tB~d@GLu zrF89CCH!<8NYh#v+KX$C!h@5Hm`HCNT-}~{apm8`N#EMO@TqzCj^9frQzGeD)mTo( z77-dyj&CQeRc(nc*vIb`Izo9YpA~?}#7p*6 zDlR2p4d!RIDyi3&)hD8c2+$?t&MG+$fLk?T7pM47jCF zy^y&~vlR^9(3TG^$DmBA4HUK6)~THT$W0<&PCbN7>0rzDBEzO9g*4!QuKH&r8TTjS zeuM-On$kO0s>Mv@GdzqnoaQ7<@8Ek}pm_rf(4^Se-SF9A;20~Av2gn6XZghFPmF$~ zX)$S9bUF9(p__-0>qy-v80ej!dtAyjLYw8hRw4ds=L)Q}MtrXfbDKCJBGWhy+sJ{&AR-$nazAakO zxkJ+GFR|=IhGn?!B+@(J&g06CU1%_nsbHr3{2oe*aWWarVJUe#Oczn65*x~JLoRA4 zfQEz44Ot+;oFHZ6&UE;ApUBUhuTWF(OC>5Z_loT+C+gPTO}TgAOhCVkOu78sEHyH+gXb8$}Js`}{zcgh#^g**w&d%s7e6ljk$2ITZz|6brPT zfI4|OlCf3EJn@OW2#)UmBgUmtCQX@BR~#oidLqBECp||s*DTo)HVWB``-F&yv}Vr%*mD0Az>^SO&^hTMmp%#u@UsyKfe^gU*&{`l~l|dR*5oUAR9X7b61@x z#-jxu(ko?HD%vQn9D}K?O0x`cxLJj$M{Kc!j&wo07mV>Va^NjV=qiGVeTq7zq%l{} zhl3^>%$Ob&hSG6Mh}gOgpP}@2DC*9Hb8hI$Ax^)SBVI5aWHTCxj8Zh@0Au0&*b3Yb zCcEnhy8Sdh)+Wl@iW#weK=R4{IX?d39CaW(9hJcIygRKkarVM6caei9a~ubrUBIKq zHGAv5?uXuTy5;!$y}wU;wE9Z*EU=tQmUzW;O8TElGQE;C*o>bXwK2rit~F+#D;&@6 z+C#?OugBa_Jh%8k_CN&DZYDi;mrpTkl;u5p>T~DMojCg8zT$luU+_?nc~Q`5@-oJ^75E%39GFC8>*n0YB=ag<;C>r$WCgv(wZUx6gy2C7@dm zeMc!k!EKe2^$fOUt-f3aw6ugFmaKK3xza=td(WXR-wr=gTSCq*JHK@>%v{it+n-yz zV^GR0X;!Je5Z7+kB%!mUqh9@=l(*rF!2 zm^80ClVkB2$|rTUWM*S)J|n!chFT7RHW>7PT4d0WhzFKpA26Kc$9HnNtsKQ2t&3nP z1a(@;zO2ECC=V-zlQr^Lyt5|<$<*^_-M2WBS^A3P*^F9`?lpP3!{;~u7)5UF9Pq1) zAj5fN`T&{EB;!HtCnpb(=ar;6rt9=Y?reDd2Fsjl4%T^n*b#?oPtbrE$Rq}0bb;PN zpj1uo5x8t6BC@`2b!b%fZ#Bo0I!AJGExEXcbjNCgNxSop2^UJ4UC;WZGa0%vfs($4 zSk$!(4C(x&GrE3^?>K~819>8{r8y|QwB7m}J}YK2bkKcdO}_&fb|y{nwTU{hS<xx8YmvR!g$WgS*-=WOLAv_Zfqvd?#dNi8D z9M8cu4-$hkN3an@^CsK&BcRD;_Ud5J=e)a*z&p9hs3~=Hwhmoyp3@&V5OJ&IrzE1E zOY{LhW%TSaNJw8K892gZ>|n>xDj;TB&~=}<{a00pX@2hmu$(Buxp1rsNJCLJ}# zp~eNsnLoc1olk|k5j0l`mL$qV3$wHi4BtBdnmoG1(4Qp^0rZ8T-b8eR*3(der*{rI zmkc_o_>xo@sKirt=*=k9oQnqq7^DSl$6%I+i*{&iouqdW>gTwIETLhk^o{~`?BK>D zl~^(rgr>$Ee9WczKaH86jR#L5SB3`HflA^;VINI zB}*Jgd6`nCl&b}ivL`f%R@pMIlReR^o3@mtT%?4*boj3~3>)^|1cs+sHyX+5oH<7M=Zz|rD|DyUu z`HS5zwuGjysjB2ar-GT{?62>+VxtO-)W6z+B^%YpVM`HiI|k-WU!S(F#zQ8hy|Nobz&#@o&CZ>YdV_uKGpL_oh>92gr^-22uocr0YR(go61qU94_XfQ&2l1|#pGVzml0pCyyJGqmE7D#Zl;n6Co%_;=xq{M%S^Gm`XF>!V_K(A#dB)41NvoQ~4KyM*>g&R8Pp zDwdkop`IMvoCkf|z>)?d6x;gax_PjIJLAiDhC?GI`*%pDwsD<~LaQ6&!#t(Ef^R-g`B7_jAQSD~gLWs4fsZ{hn_OKP`6({X_oA{|A#&Ac&JMxs!k6Eb@X zlteOzKvxo1zXdhS;YQNAfhw+V0k1zI({1AoAuw>jxqqe5=Mpe_h|_u7x6!!RhC$g; z8{Qa%J5QsYMPL@7$xl+J0^*C>IMlXG?DN5m#awFv8ef9?HpK?gDL;RCy+|W3O7T(H zN+~D^(v)IBl*mO+!YLgn&qmpKPA;V+y+Em4EKwn;6IOx*Y_W{9(>w8c=Xo^yq*`oG zq68n_p6PVX_1n9M+!*X$mljMERF+-4G6Y=&Zm)1Px*~lP=wpy+iPE%O)+#8pDT*Yy zK86LhIXAv2mC5B&2X}8T#u(b#OQbBcRjPgb7+Hj<8mnw$D7R+k>FlYHs+BT1W3rfm z&JDc0;QXS`HX68FV3o&cw2pu|T=YJ4>L`o2PX!1L4@jp{7)z z3_(W~?%KzjBcM|X=jTD~N`3}}3tR92P4ypx{!FeV8Fv>khmpH!CWVuTAZPg%p2=u# z%$ElRN^4b?o7Wt_Wh;Kqi)u ziO^?OQYiN`W2o4Wj%)X!;T>q87&;u}!)usX$o>0Ft|(LbVU_iH|NbgQVatY_Cs0zl z#hyH>ykgs@#;+8=Qu1u;vsJfz$xIqKBOzx*GIWFuIM2D00*e*Gb5Yz`f63XU(6d&l zw}Igp(9B7uMI(7pmV$FB{b|oqp6wAHmiC5EEEu-3S;)9G4EMU>?V5Vc;5ke^J-3W z6nZ&ZGswFBab*akpD&*sME>D>7W)OIo*aMp|-Kf-DHP&yC$e=TKlC= zl`^S-CA?Bbd2a`mjSuf2#f~aLi3RLQxo{^u7dwl#U@N*%^I*?;Ndz2%9ci)zQ(J*$ zG8*au@}*IyJM%pwR;30KJxS}@F zo-rkq5weF^Uplz{`{fa}Nso6`7Nd&fEsNQE8Q=umeA8&)nc`KoGzowPIy=Pe;&D@@y^hFwDKsipq*g)9w{ z*Y$F~$cGCn)w^+whok#E`5fQnjw(qsn}D;8;LVE)n2TJ&5ke$>Fb~xM-7|vsAuhyOM&JWl5C0vldJp$#`YUYo4FjTw4(~ z>s#wIvCp)ZIpZVw{q~Yql{_`-wK4Gd2_U~u2QrZh?bf{hk=h}L5&5ry4V3a5<+)Kn|z13{g)P5Clkd3jrO=@6c!c-;F*oXsLdBYOa;me)bjm%4+qYCQsp@D<(-MDtKpz#wl zTTo}1*nf&^aDk4E%#;>vzThVlB;aC;!1{gDw+<>>cglRw^`UmHfP%lqygC{XdlG}M zniy=!w9^>{+u8#2g?V^#3rw!ZmJ+a(@?+&dE(QX*vW(?O3I-e0wJ9tpOT_VMDtH&#N z?%VCQY6nLaB3S42j|-9f2scdMo=46o$Qe0#v+C&~>#3i<%_oMOzTAe5?SUP1y1Rkg zJ;8{jLdB4$XmR3=o?J@^ZdoRpym;+Ku`Zrw%cbLC(BlZk4A6uyuDFoD5XUmxNG|7S z$&eeTW@J24aBggg3sv8i$<-7WC@BD@KE5!fEt=d4_w^#pli zH!*rVH}AOx#Ar_*F23b{VatWhu~d8t_fTASCJ0^IjwCd|!gy*MZaxNvqnw#?!1;XV zemv#`b$Q$kN8!v)Y!1Rr&R}%F4N_FM4G#ox!y!zF3oBpRr{b7$6z=^uB>^cdA1YEd zg$0C#y?wsq{5o<+b|vs~*yZJeN65q`@@T(-YN!vHEpA>olHMZew!7!Z>LLrLFXTgS z6{f{iBdhRM@pdpgoX5?E17#8V4?}-8cj*{37V(<3yitZsyJ7eg$AOAsv`0bsd^+md z%+qlBd>AsWXKGUT<=u4VnhT%)J4+%8JY_)G(tg`BkIdSV*E7iL>F@8=MgB9EJjx`a zl@B6+A9OJ~b}2xS(3Qov*rLvp&_c_Z($LMFaC0~AT7tU5VXP33rQoi)m?DbqTtvyb z%L;grLw??$3)tGNDf)G0_QFo6Z>MS%~z1#_ugZH0Gp ziLEgwu+Cm=@MbowNb&C)j?&4r!kuSj(t_v_h+x5bdsk7UHSbiki!Syik(ourl;c25 z$B8MCn0AmWM<(nU7%O_NW3$+mENG&ccop56239|h`d5NsllA=b-xZ6r4}b+0MX#O> zx)k_z*}KIvRm7A>UOq-%K1v~HlgG52kN`p}qUqWfz1xt$R=enfk*#eh{Oq#X<-{x{ zcf4yQwQ6$5kvxeX+saI2(f6js{G&+e`5G<@pAQf&OE^*rUHhOiJhHkW&aM|PYN z@raYWoWKRa%lR~0$H9eUl|jJ|@Iq&{;x%vlnh#CMKW~Sgw-;p+4t`&wc$GQ@py_Ym zeb4W=zH8+R9-@f4Qf%7Xu-1uhS}!-vm78b;MPGGNVgsfSp^i2MMcR-AX|tNsalG*) zua)7pFq_6KWbm-lV60K$&dpq32(K>?>-O+EFR*aZI%m{$5;fR}4Z)zm25)5W;cSEs zUq+7?ulRlmN9a9;hN`)<=}7AYvo-K` z7OyGgo};B#tGFp8cRm3P90H31?#uCz3=dJC#{~80yq9)Eu%vzss*hDP=JJi<;HNaj zakVFK-EzL(RxoY@3MLyonLRnW%0Y!z2fZMnFRwSXg=V#~%_rf@#imJ1wekWl|>L6>7IYR#l<0w{;C-C@EA) zc`BxmC1EZ8#sg#gY>58oztZlkCF8D?>3bwSOw1}`R+5K>C<_-R*f#8<;AP(s2H;$SKr&}YCNQ9&frbUU9~&|4<&g& z?(m<_ikC#ujU|34+GR3Z^0lev>^^5iSG9#>4w)#=Nb6vjyD0hTK{#hAT}eG=-8wy9GF^^mfsEePWoAdam7E1{xO%V(}#Yx zi1e-?z2TpQ#V)4jwS)1veF^H`gbWApXcnako=@g=(cCphY9q&FsBsm(x(4pef&KzY z%fR&lT1)2)e-ijV79p7+r^faC0o>xpNSv1z!%LwOB`-zYwC|^a77B6P>(%@l*mk-a z)z`pwOrqiXK3)zJ64?Z8-W9u+F`rZV+k?1n$gSxwv}Zy zKl{^0WvXU8uW}AcVmeax?#tPqi{w2--UFHqB=trA@AKt|!LVV9vi!*H2<8pS{?We= z&TZuZUD*abb0vQ~%J)}EO%I8k_D-yVo4TDZdJ0EL(xrY_#VI^D7a^)*?nHes7 z_H%`60J~I5tDG6&ET4a7zS)D^J5Byl{${}Y4&-l{w6%34$C!F1zBQCQC?Ow(kdK1N ztGn8h$w%`^L&EP183ZnmGj10flW>j=V_N;0WlT+@AJ_-@`gS6%R$3@rk&;e*RqMJh`hS?C8L%ure=Ucj5xyu`m+QhW2dz)M zf31jNyW>3gRrGIn&zcg~! z+j`jtopIL7K5or_kv1Bb<-}~m%ZS;QyqoyPb=LR(t53?Eox^LYB((mV!tC;IuT{_t z0$2y{@25ZRcX)TqM3#!=`$C)vL?S z?ImWKh7OTPh&lYHs+KS|iQ`-K%bBG)9{=hR?p%zBY0Lh(1>CtMw4S8?IGe-qO~1}p z(vXqD5UNkdvmWA?i=VDBZ~0gDr*5CRek%J^O3YijU0Le#fpP!Gi?6!?wJEhu(CjDcoug=| z6zEFO>6r3lro$@D0_qjV3y^smQ?ui>ziwcZhEJ#qvfNX1ba?BxqdFh!2Hon6)spdeV$0ype(4NQc`F z=(ZBScmkSYm34=>H+I8d4GdP$LfkvFeq^!ucq!$yFWBJ=&hSEz&3FOZmlFxE@oHU2 z1Sd3GTO*GD>o?j+z?f-T@=pz^qn99xBI9>N(RTrch^g_|aFkrL zn{^_83m`8o{KVP{cH(m1K8Y#M&M24NJjiu8GRZhGbETXIaiRn!N|9M9IqPZPxEJ*< zWD(_wEC0nZIZIxh__!y*>_~1qlIxY^dIf25BQ37v-5Bz2Gmnq&0##cAbcdrRg|z7aZ}C)i#^M%d=!u7OoAJ1fFi9(Nm$7!W6F*$>qlkxA z=t_8%niHv1tFeN5Y6rDaoGsvH_fTVNgQO0VX`BpACSV&h$h!<2Q_!AVDtjW6>J$I@ z?;;Oc>r6oi)m%a3z>!jGjPPgviUK$vuV9%}w5mtNplL7pB9C;skxtkD|I>+dI+A~` zCjX53*^SYO6*HYHz_Ji^q`~NFSbE)vwLN$ zGb;tQh*&#MYb=kOqR;aI%)h`C)J_*Gs=W4JnSl%d$4WqBQ@Jcp6 zxmuW91Cwi^Cmm_rlwC1$il^bsN~uxGas1?3Jh=c*E<{*5xm+?CA#E1{5 zEyGiRT&p)~b%m~tsAWHkDJpJ}-_1b~wn=Fl5a~k0Wr@_yo#!P|xjJk+4O*#vsl0h6 zN#{2_hrE|h-pFZPOg^Jj$XZ%B`iF4x%0?!Sl`mShVq*dtQlj=9+^_(;mBKu+e;rfs z%E#B{FuAP!Jt4`|D$sXUesazGodojF-Q-Q*Mj#Ko$n$H-^J_?_4e3;qPV3%$ve=x! z@JQv4&4GAeD>}0T_l3&OtwKYzmSvH2tP)?35-t_mk4xDAPU33;4DG3;l$tgs$=l?( zDTLYG%3la6r6np#dslmFb=Aog*XEN>Dh-9Cvw(b4Q=e8zK6NKw)cm%9x$Bb~I_BEe zmwD=xChAOHjXqr zr|Kq(GU_y$tW*WuDC3^4Ahc`p2RrhEEoqm?-pwHYEFkRyvyfGhO{p{}P`0c>=3usS zRZDIhqi?XI4Jab$m7ovdz1T)nEhV*K|5Ik#^#?2)RFzv3JiO#H7OczRN@rnL8>hXq)WnzPZH|J5R zhVq(RgNS*gO%^PLyd_Ve-6pSH41E=Nv=nz0;BI#qjANm1)f+eMq#_L-Mm_n~xzJoH z9d(zEx*!gXy2?i#KmiTgQNtDyB%`iCkDJm__ewnK!f`O_s2ruuT4}Vlh1xh8%UJ@Y zbvteP!zp~}ILvj2@|yjiMxF79gmYadW#h{nF->k#(x0RMfsdN!qzo>pF>RNE-cqS{ zJ6IeTB&~XrXq~(RS>LqU-j0TN-t*_LK`=j3NtqSayP~xA5uf^JNBP&A|8?}c*zeZ; zxAMOg-^G2mo^&4QJM@1QptMZ9A+t`Sfl>QG8nhH@cNO zvu#ah2_v7XeQ%elY0HK&kIv1k5L95cXGAYu5nTvMLMrDv1JfR4+9A=cM$}ewREmrtf=0sW7D`P8sIG$RNQ90Q-0#bHy6RP= z?gXQnDA}ZT@w2s;(b_sEAM5a^9>f{5>bJBclJ4+d+}dJ|*%r6vY!*9K-?*CrjiI0d zT{UW?S%>-1u!pBvRyn3sW6j5fM%v?IkBq_C7FrHNOE%X!2Q&-OGU$*aeI?cxq0Vxk zy>!}iivCdjZjhm-2-FmXW$IeW57I6du;Ew1CRtk*YAd3ChU4m090}r#yHL9lO#7Ls zs{Z-4|Bt1s0I%Zc+H+=h_gY+u5JDgjG)Qm@Zb5^)ySoLLy*KWJ1PBrc5GXE%7O8y| zs<@RF*FvFaaroa!|K~n?XLf97N6sAIN(we49F<9(0)ib%+O0va6YrvF_Q6a$$}W^Y?K+Inp)g4qpLcR7q|VfCq{m47yH_t zlpMqo$7&f1L}p!)X*IxNPj;|1b7)OvmKT7nDfqJ9dTJk@){^B_WIp1@a{7;cG?r2Y zTh@uzM~f^>QUEQROli&e+QBTNqT0cW3F2W*CW3k zQQV}s@#^S}H54~~@wS}U+5u_aL(+*n#$&DlfG?ZLj7qDK0B5Eaa@d{xo?Y!4`k@$7MI$7F&V zm#^l~DWRPLZd;ym3KMATE^w;^`#Qn+dNG}ELg$;ZUG1^y+3L}} zIDt$~iBouPefB>EwvL6cNo;K|wzZEM)uq*cX$41Y*ab_=!>yDJJyGbh1((_dOM8Ac zNEUaM_bbTz5i+xh%xo-g43#&A$cGEn8d*Bz+aPnbw? z-d0=QExDge342@W0cvT&|K>Bu-B;FwMS*%T=jz^RVc!lp-XdF*zsAX{?d8>W@!!-Hv*a(n@)sZZrn9rm&kcX>CSSIZI~Jbqm|A_Chx}EOuNw7M zdt&J)IRlcH{2C*7%#u51pC4OLQ$DPUg2k2PiEz1NZfV1x?VGPSKT8j1Oq8$7$er$d zuVY!9?2$ZjE8jMK+cddjntV6B^yPkqW2AGP*e?Ilp*X)H@UuR0CzNU&pSAw1@m|Yb zpL0vpwpn^TyEfl8hi$II!YU*QEzHCmT3#!@s`1r zpgreiFLgF!robxl*HQAAJJ^(GD#;s7R@bu0V_x!@ZL_XO7<0vz3Gj*M&GX>GV*-;W z!!X!WaZSNBTdg&7(^j_AHz`Iw>?DsxR@BNLSeVx0>khg7b35%BEnm)&?^_;>RY;Hd z*_K&A8`nXQ8^&_%+y{6|zRs490k=(!;gKIA)Q&U{%k-v-xukZx`CDqp7wuL~lvg2X z3d{&KR#sUVBYzknAJp5_Sgls`k7Zr4pO0}f*_Pq+sS#P)`Pva{CT6z1>s9*L2did@ zjX;EwdNFy8i5Cfem~OTgM*@>m&ptW@*Q*)F#y&lzlF!-%pxrC9Z(Xtf=jv0EdR zwTwkjpxUF(4l;f5e-0p=gB82;SYNAlIMS4G4jH{{`ko;ot3g&n&a-A_O;Oq_&Z+Bb zS&E0VedBl;Pyw37#x|7WDdn{cKe1*6Yp!|m&a5GMQIMq!a7uT!slT=3e2njnBd)43ftNmo#Wy7kOWA z9l~meC_3QDlLrvkl0CHjQREGfEn-h)3rSGNTD} zu@stNl#f#Qp2!_XIz|3CO1>Src}!-g{Be+6D&$gbCYCo7!{v_&^2bH; zd6VsN+edAmDu0|Me_W^ucMC2hVqBkZ^iS_;kw4Xx8^&+xA%AKpf2w!H=SYRtwNduFqDESV zJ1cSnFO9Lna#R?>zp)tky(n=kEE2gLC|97q(OYb+3H^4c>S`tBNk)p*&3Re^7+v($ zWLx1BmeR}an#(r$;f>Yr+h}HT{hOwmJKN*Say3U0D>a^luUD`&v%IyeVCDhZ+oFtRjad2!-ocjS zqsT+ouM+r~=J0~XpWQ3KH{2ZNOrAKwD`kpLW+2N9^>B@}1Zs&9HkX5(jrsB*wtSe45u8K0 z!i8DeBdw{hi5B*Z1h>pOTKZ`B+>tm#(%KnGW4Ozcuc)T2ngwSjfPYvri8(T>ui`Oy z`GiyquT`gwmm-`YCI&?X@RT$^JM2_-E_L0Th=IA-Pr1EqJ1)*)0NU$hgJu_8g@8xm&2V1ZY#KZWfI;L2M`!{{Y~1E6aP%-k*r{ZZ6-EIi z3mB~D75)puY()?yEtfe)KyVQ3#JoNHf;|;y2LLV^-KJq@QnFRVgqt(Fay*`Z3Tpd;<}Z9NdJMSNb9l_d?#Eq4xY z4sapt4>pJ0>JViNjq)amys?HaIH_tYd7)kcomndJR!%2GRupAbq0RH$3x~30 zjYM`ZPhLVfby!Yai!4Jc`ibmm*8B<p+Od0lLqgV4rjx{q-Bvog*m1sq8 z?y8_WXYG^=L#+PPHtTu@7nUuzij%9CR$@~kkJKjL z57yVz)3?mziFv~dzRWn1Qo6)W}E5N z&GewGrfC7Y!@ewMmKqqPp3W`f6~nUvgSJO0d_DF2;l4^an{+r{!6_-Sny|f)-O<{~ z)?7c915%imKJGWU9Qd~quPE~=1$)vgn-}k$CV^-Dr^C6nyj&YDH(KOIL$0l?khioB z2Q)P+X};f1ATW|rqA9U52k$8(jLfzoaUo?yXxU?VNb(`5_%g<5w5!772sXQ0@2!kASG=)WUrgy zw7{{`F379rtN_Wxls}sm);8vHy*inmg@$|bv@*|?)XoyR@&c!sNrU zW`tQ`U1u|Wl$qAs^e-)OuxNTlpUloB{<)P*vyXhyd(G^^>Z?V%eZxG(4@>`U#n4q9 z@}|m{t>oR#nUk~TB!wmF`zm}ECFHeGdB4>0YWk(rSv)#lu^C-JoJWk&9`?8?6nL2UhpyckUF*yTs2Bc2j2u0Zf z&zSsvtNjbCiS~61^Cy2gW`AJ%h%GQ^tx^zmpv8gan+C2gG^_>nh zO7Ykkm9jdv$hHZV+?dPy zEW?B6wq~hi_$yv-S_rTFW`_5GXyY+aB=Hes8GS@Oo|$NbTNM|vpF7^JjyGTI-S z!?M8us9>bPbyW{7%TYFKG0Zk_v_e2BG-n*kg`1MG5HB#NpO#b=O1w-?WT|6V%6Rlk zt?!I5Sx|Sx;&YfhAX2&}d&~W;b` z%N^xilk+>|wrB)ut16VMHbU}z$#wdQq5<^rJw4` z)t%)2*>e9ZxlNbbG`YQ7`mE&fiN4Mza*vzb7g^9pQN0=WzxM{)JgcMOYN~^xhh~3r zEbO3-8l`=H@KZfcZuM1wFXN+JQB|FOnO5bQz)xY5F$uoCWK4{(Cwq()HiR%WX3|<$Q?zO$^ zcHx|#GDwlwnK5hP*3hw5$A>SUk?Ze@{h@i$^rC6sc9YezVO8nry3mFzUAR-gn&Hbw7mRREY%A|K zm-ihxOR}nNaU}bih4bW_ZeP`E9ga#9v)#09L&UBMY`YKJ)|cg5ZEL!TXl>6Rwk*gu zsi#P4;kkmb)nr>aO*5xkKJCVm7ilXDM_O4*sb@`HL@DuFMn#d`k5)jL)7$ftIkc-B z-`L3`ubWujO0Cz-$%kg^?q19dh!aa`BQiUABn4Ts=dw*!zOfN^kOx7r32@)T*8%DS zylbWz(Jb5zfQ~dvZBgAwZ6{LO!rX`nP4QbZC&?A<;=on_j}sUV&VDyHH>HUI?E^nG zS6Nk3JrBmodvwLkh@bwOLbN6gS};8U}CiRR?EQ%y+d|-gp7Mah%H* zV+Al7gITF~npG1UyVy4N(Kq&0Yay#OylE=FPu8ULO3u0Fx+(H#1B*P`)Ld28Too#h zHj+mh%A+mS0g<)fmnBTD0+c=4o?q?FOqg}bhosn{S&4@`$)j=R+REnIN^;fYwZqp= zkgJBttzG2SIC(Ul7f*7x7Ee_WKWlqoCCK-A{y4s>hNWmm>jp?G{FSH}A6DS-f3UVK zTiZbh|K-uPRM6LuXO3iMbGEvf*w~fQ`alGl6{uxJ7{YMq$?zLpDgt5}S+%?_l-C_X zM2J;V7K2q>5Xq7o>P}+0(^$T{r5VeQ6014;iseHzc&JMm&ojHTnLI6qGFmVb zswMR~yovXRzi~ZpggSDwR?C$OlmUyhV4s}lTTRu>2((G9qhw(LD5D4w_XZs)yt-y*R zl;)(F+esY{+0NYXZ^C{G$!vF|=b0MW!DfRW+R2lZ)DUOqWcnxhnR#*YLr~GQWqPuA z%7Ar^*G^qKWpm#RQ_U5l%ykJaZ?)I6H-fu=x)PH|8mpC)y-gN+n#Bob@gjL>EJ*6x zJ&Iya#3@27`%p>;vBHNfYsukEW?4;I)|q8{Q8DO5yS`!q$vJF;;Hh&(;v5E&w0JgK zKZK<^*s>*1!!CW)!ClQlF(PVWv%i&vA#iX7q}8G+fq3?fH67*K=JG-}-H;bL$qOAV zKU7{h$xJlNwPn9=ColApA6k@-%FF!ztgtW3?kct{;PCNo!d9p?b6RwKww&%rFSh&Yak0dD&twJ z-B!v=%^A3Bz_tjvv!6WNK;lC(J76ypE-&gkdYi6(^7&}Bb#un;>dPSI`MNAvSW4WM zGvfTm+4bfoq`#5{$4;v)o0 z1+UM>k4&RI18L6y?QlzB#%Xd4J7^aNLg+xS-xuYzFCtKoD~c!Q>JMT5&c0sGemt?R z)j1BH^T`?Ll~qF_nmIqn)mBHT?VbaG)5{O~bT_<1fp;PW!s;=%Dm@ zwhfls2FYy$6~N4Gw8g5dH+gyu%GDY4tX9p{(uQlRt$edThdxwBWv#Fot?HxDquj><| zrRA3ug(|p|n{yZ)*7AMyY(|HzBTha?b*}zL7$v*Ef^v zo0=uwW{H=4(K55ziLlG{ismJ?TshRti7@l)mOkds%t#rSY;WBL_0Rn@4?MY*L)pp! zB6YH!HJ7cN040HyA&!+{WP>()&PW~h7;q&g;CyPRNP;5;C|)!Ma4Ym?DSfQY3YybK zD<*(}ZZ#@_KjX{t8t}Y2a3}4@Dgf0^ugB7xvVzK50pnF6xaVTEE(#}6&TI}FKUswu#Kx(%C#O*MxZc zxWh6aAlNU|?pCR4L@m4B-A|EXAi#iXFWdNYJ-NA$+*c)|mfQ?G^TGas5!GY~j1bx? z7SpoNzU@L~NcPZO?M0FYWix6CJS?-Z&po9P7TWtO7Re`dLY8M zYlO&f$2Wc07<>9co-@vtI-g`WdsaoB73q-}NtrdRi4HBjlO;u1QoW(AVr18JNP{Jf zP&NrGgF5Wv7B>~J6I5Zo^8tS!DqA+eDxduG=i#^^V-|;tJX?`&_QArZni(7z9RGahAEeS>3z>JYg{8 z>16@nw%Nm~2ZjT)#eT{w`FZ4g<%4l+gPwBB2>JC;`SlRFA9$^o+|onA<>e_G-QY1? zTe+xpbClozO*rLQxeX_@4|4NED6Ih%)nR_Z(AExQYo@R^dMNyYQDPJ;XhT85$=#fz zN!rP7lhrKY+Hzl79>C_I@9AK^b`aj&YN@T~TSR_ymOq{nhw-d-~u(O>Gr6 zw0vzwFiZ4g`xmjoc(x{xrImW|TE4lMFB_iGqhLW%qvMr?CXUW6ExmVTHJAaiLo?O? z#p(KIwbXgP{L7rqKegGCklKDry@FZ)V~2whN1Dq=C|2U~Ki3Rl*^|ZUI+W7Zx_-EF z-wL1paJaS0UF=!}^&DDRK_m~R{GKdvHixt*Wdz?)pKt2THo1wk1eO@5X9m-r3T*iz zwI`NegpCGte3XVSRuWe*QU`O73BO=)KXIllKOu`o+rcySW8tMdl>Bg6G|6H>98pt~MEqToKUmo(4 z{}VZL6mg%w@;g}HccIQSmP;R&7zM|ZXv(4`P6b-SlWT(+kz5lag2sWem!s^;EV~WM zt}C)*)VTv2YTc|v%ewRYj__)w)_wk_U+0$(3F)9FHoq92UM$KQ1>@-(pg3Lm_wqaK znpF~55+Lu4Gj}iC7E{uGUGyeLk|Z=P&a+ubQ&bKYQZ3uyvDmm4~$W&Jc6U zbhD=!qlUIXFSZC*Ww2a#EM#E6mA9mKWcymt0i6zDcfk&{u$*#fxgQ_KTFhiqB?8#k zUmf8E#!gSg2E&Y^a|ITFeTdQU7E0Gip%(>BHnnwu8Srd|xv$Ii>Sl77d^S_vl{87R zro`3F?|5jOx?SmT^0ZRzn}Y7^I*XhLwyG_^*i)6nd3u2$b^ z>QF04_>R=T6eMnlE3}y_fgMH4=N07-O}<@XrZtq$EAI_H7M<2p9h3#jGp9amBR}sh zpV#=Z@6PUKVlDZdOHn;T8j+0*>mEo3Nc#Y3CB%9O1Kl9=JM= z0_66lf~nf}VPt|8TArs2pw*Q{+C)8L3U{^CGZ#>jk8fU(zAAwg#gs8Y9ZrVuHKPGH z8&i5$mgL8vFlmBaA` z6M?ym=PXexz^%9yD{d`{n-do+8o^lADDLH+>Ft|0*UD^(b+p82Fg7>ZwT+%Qi*Zs~ zi_7SOkK<$E*p->(jiiP8@(%EgE|jRY;48Vo+p2j(F*cx#($3Mfz+m4{?|_hs{=oqi z)ft12I3U!tfC!&pyNAQBaMBeYzwIc$#Nw%!Ng(RKnI*rhXWDWXWyi}ez2v8!@>37_ zb+r7trV`k#^!g4iQl_#@9KQWTavPXKIFjpF%?c1FSfrIZ!MOFXCUw)3YO%CPBLnL? z3fyC!=wWrj>B)2jKvstS(ot<}FQzo{fSd~@B2s&0Wuz>g6%bw)t|Q|ifLJ;8+vYh{ z3(8B7CcEqAHTvJoPihouUrgKQNE(|GykS^LxwYe6K^MHPj@}aSdF=MNg_T<*4al(k zsvU1&ZjMz;ZDp3+SXExI?P`=e*<4ZG%ouwB)QQz})mUrGYhz}XDv7OJQ?!_Esleqx z;ateqEvmF4!Itl(=XYbP+tn(b+$)PIig@MLFPU{+O=`)Ldh5)R6HPfaA^g}8tuLRU zEsLY{Hrh8GSy35QFhLl!Y&g&8M@fbyHCj1ZN{7I~n-c4Z{4fUF8h8S7E)fNDSVjm- zg6&x)p4gA)1oD*bMj9-X9a_OC;iGv|W<1Lr0l8$xSl#qz*$jI9EGd*S%Hr7AFb66d zMRP?yKIc_lArmV%%8fM@%=5u9>gE9_Wk4%5*okU5U~0E93=arKVI~PALm?BZCTH~7 z+Gl-8-jL1FB?HXd?((ttDt=YFl2S>=ss*`0%q$6ozJ<ZFsH_PieQ(!Be=?U@~ zAULyucg8e|1#2R$qn;MU(r2;^FFk80rT2m62D5P33TM;;N*$`_j-=Emo-&u^T18@S zj?bKC!#A^{H42&Blu)f5{3H8$xLKf#r%sr{2|v2Y!?VowV^>9`c1(=gUT^ITb5*c; zC}>5`1C>7MQCe~SGQkedV9F%`(h~jVt{(JLNnjrTtCL#I{WCTPbX#!{icKb z+fDxM{!7S?7=F5UVIY8_x0y%8?zNX@$&y0?OD2< z3wIxd6b2uq(G2jK05k+Z4ueog?XbdCa&tE~=JWqVSmB9Zhs%8)@~rrKz&)$;}k z+?spJtI=HDG^?F*npJr9$Rw;JGy#3&VvQBM+hBuZ*|m@#tx1`+wPHIJ!x^hl+*2!# z=NrH&9!}1hlx(Mr32?0c^*}n@hJDq{y1b%dEfijpo2NUx+fcP43nXkL$TX|h-2yP-57PV?ucb6qitoEpOZhoOrA=Opym4w7E%qJLz zBACQAwSTQs-zs4(a zv2H6x9Y+bEBWWECeC;90PI(hNG20OJI%I#{$zXAW`M2>bPbzC<#V~GP$Ifl$>B5@j}57bt5 z(3}nYa=JM-&hc2;+t=Z<$j{%JHc{KrP~^j;W-?FJ`LbHV)u7(;-n1{2?~E2ZD^cPA zV^y`_&Gr0>>eO80tu60mq=vf#D8Oc4a<*%T%%1(fMzv&frfsaX)a$4iE))=sRj9Jy=OBFKO$$q90#3+#{;p$ z1MD+U9@Lz-rae`}ZtU5%thf!7N{ZWKyKS81wxOfqtyq9L*bO~x2utc9QoGU)d@j-; z_z{GA8Z1N3R&g_79R+O%vHU)#R>ysh!-QOmyPlb@Phh)o10<-DCNoj zWV2WlZvP=H0l^+#R(pq8u=opL;rNBg>{`w?8(SpmvQ0ryxq>i5b7f3H%~mX>X|Gh@ z@Rg0)Z)xDOXG)!s)nP;#J_NX*m&=_DSD3}i6^XEZJKZ&am2(YeL5cjc4m6q5R6mjx z%<2xgpd!h}(x0SgLNde(iK}y(O^&hq%AU+uHXqeFaYTL$AEsMoGD_eyozcQ7J zy`2p_Dke6Sb8K>&d4HtgYR1UbeMf?D#i~d!x%we&gR2*=cDQ=t>V&HU14B+W<)%UX zOuOVHqef!vvbR!7Hx(H*4-RKl#B`&=AQf>{qzxV_BA?O5SQY8nf;M}PgkY%W4%*_8 z%4kdV3n8>+PJ7zw-IlfndePQ8ZD?!#*0gm1d`oN{n^l%d%D}5@2(B;>UQ$6&NoAc% zs#>U|MrA5#O1z}G6-&%YC7qx`5{IiR;mbrLvD8_wo_w3umbUr2)3$0+v@KktZBgxM zTZ0~aTSuf1Li*IQv~9Fb+a^nVB*#6eI_;V_fOhMN-n6~;INILEYyfp5X9wC52UXNT z&aSk7j%zY~GQq6J_u1tH+81T^rag12)1G;<8SV8MLwlpZ%i7z*97lWmc+%bh2JIcZ zi0>QHg?2{arNE30CMX*>r=2t8blPQ0s!#jc<0&&*(hly_Xiw`(w5Nk{}2)`|X`*e{gx)UrxdYMx`)*sG27oib-uspL>7{^LezZGvC*Q z#J=W9!)RZ1Z`xOfXkU!f=y0S#hs&3v!&N)b;aCqk+{z5&dq)!O9m8qw1dPrUJKsA~ zM$)cs!L+NFTu6r&)S$z>0v&d<@xz`#Y7Tg4bikMBfWM6&2sY?ISvwu5plb&zBdxmK zI8clDfd-r(Xl(EUv4Re?L3%q-yqyI<&;{jtTIoPvr1eLcfm}N<1m#AfjqxZm8D*v+ zoTc#t^DJ~A0cDnuI0z_p&_Z<3PS%5N8b26-uL@STCU55}+`UI6pY zBc1y4JzZrv`fQXNeKroC*uhYLHVNUBs(gO~o%T18Zu*X}3Iq>^d`C?=oOUBwMbLvaLOusPyGbi`kyBY|9pNw{{ToS-9-WI0lqizCs7I8v7z zNATK5K$RV7$>~TNvy*nPfg2rcY0$woLL6+5{&#lg2Yc9zgMEVONJ0!9nIFoJYGvuu zKCyJvubqB)s@j=px%B<~kw7z6-lt>b2JvH6)J=kgehfR@n0^cx336yoJNhL$l75NV z8%;lzO{~LznkfV6XKxuquwRI$pT~8epIau6pik4~D?ic1Vw}JTpXi`#CpzhLqMMyg#G`C)Pwm7Iq7x%YKQY>mPE4`T zi5a+`g|c(d-h9+w>`5o#ui~U#&`A%XlV0xHNq@4Q3`V?yCQe2YKUqc7PF8oPlQBA- zY+w;5agd#i71~KGiu)dDuNT@HfOg;{|I`SCW8B24DX2ROd3ffj1Ts$RBu={#o%RxR+Q*ZhE@SZ1 zp+Y+yj_K>4dg{5UYpZts1=^Bhj=3^Ki$mGPPal@dmBI931zwvKi$p4db%&- z!;y}0Jv};zPEXhAG{*Gw9L`VAv(o8BD7TpS8Aub(V3VG)dD0nogq|9m@#b^}?|vo# z@eq_LYw$A>NQ=~rGf@_PrnZI7)I+?XO`M5EUK?RM(;i{GF3$85bY`%F&WsTDGov{_ zGYxId6#UF=v^P%^XA(4VmK$^y&pZpuqO)$q&tgu`dh5nnKS5_h-1*sXJDsiQLuaeG zi?g+mhdDjl0Qrp(Z;3LkQKlp3XXA8nwg>9>M%drrX9pvHn3bO$RgTV1EW^*vw9(ml zUUW9WM&~%uIVeY-v$|{NJS>)T0aiK(XmGB)MVzbTM(1ki+PPXj{9GfHYwAhoS_bfQ z?F~BDiSu)DTtC+h<@*`hxk0Eiob+=eNt^@lJ2wU8r`h?r*|?wQpz|Oi&Vx;J9-jKn z+XS8WBs%Y{(Rp88KacS|A8M!b;W|GbfxJq@&qtwbHO)9*6XojZbiR>?c0Sgi^X-t| z!QkgR`_lP%hn$+L`DO7p5UT3vs}Q3k%T3B0Ot}jV@}WT{Hw; zbm-zD#^Iu`Rl68~5a`y$vTpoh1;i_Heldz`7vaF*Vl9L*+_>0?#Kl-oezAk#7vso! zu^ZC*q3lpj7l&(faTMAdqtnIlWVtv|h>Nq3hco!%0)&f@w?xqIr19SYqkaeC`@0>X zn@+!bk@h>jK=*qf@!D0zP5Zq$xBQNA_`NgAb+z)}dvoLW ze#jqcvHU)Ui{GapeFho7&(Y|2?4L_aSTAWhUGfzClD9=%!n(Q?N^~g~7I6#iLw*JY%3CE)BEr zOJfipZ>LM>!zGOQB^1`hh8DTzOt3-Jfu`41d+e*g*mBMy1pP`{_4{V@>f!_Wrs zjX%b6+aKdmekStfB7HHZKZ)p1eEjN9U86r8B>r?K??1iC__G4H|5+7z^$>4>ycWm< z{Qt8p*Z;(G{_H~9pWQ6{&pyQe?2mlx-9Lv4?avXoAB(&RC_fc-XX@5J7iz|3oh+B( zIPkKcPM1Ttak(tnFIOafIogXZW8YkEpz+I%47%K0(B+m$YmdB+e*AJbE-v>Zy4=UY zFZV~@AVXXpioB7U_3~Ihae20tE@S*ICwR~m2==a63~|Ms#1(I%D}eo10^R6J5W*0R zu9VgIm2$+dL?A!X!LL*^j4R+FU1^|cSAa-g!TVilgR7lQTWwQv<5#hsu9hS1 zYI%dMMhWd|RkB=-=9a4sklsS@t1Zd6igWI2XJNnERimo|NL(F6j;q5EpG+QCr=rXf zqH9n`3jjq+>bghAft~JKh6nV|v_%+PaHJmBe;_Sw? zZh~LygK`6KKN#0gT*D3h+9)!vP0;BY&g^Tm4CC5du3cN~$**HQT!(o2y2D3Y_YwR$ z97SIbwutNDWV>FG>(^@vx*kK~dVS*88|&hFGhM&lTBqxsa35#k*Sl%_dc2*k55WB( zF0KzX==vxdzdix!Q%Ji$9c|9_;McJSZ;(MZ44rP^+`fUYf8OwR=Qjcb-3UTjsG;8o zN4yf(Z$#l9Fy=-bjc#D&tZ-M|>$Xosr<%5_G&Kqqf>$JNt~-vA7} zfwS$#0OSqEHH`BcBT#=dX*b5<0vx_ELpN^BMwtXbH!-I-aSq(X*?toiSvMi_yNPq| zrk9=H#GbqvhZVpHLV^D7bo;3+=O(n}s%*D+Gq~Bb`Ew{LZZsCl*g=gRL7IX_| z>@C2*TNs;Lp$Nkw>qG1XRhA@K69%ViCcXQ zaciJvy@mI`H6CT4s(x!K!g+4mt%Lx68xApUI~;V|o3z`$7JfU(O1H6ZZkHpvjpy91 zh!8OMHqM^gINNX6!4;$P+xTMQ?Z#Zc-Q2-%x3kb~oI$taxVVky-tLL3H_`@#(Cy(! zABi@BN8O%i5x1uaaU1aeHuNQK)dZ@L3Q_)b?lztc<5oqojc3_zVB2#4bu zWoUQCBYz6&PqT#WTpkeMtYsTHW$OEo=7i;itD?`8A)?&E}g6nP{5_kJ?es>V^hL)qd6CHGSI_k}` zX?GVA-2+qeo`n|~rXCZA4+FPL0y(Pr| zB5wH$XUt#jI{oEoh`)d@{^d{FU!Vj2DvSJb2LG#~;D1#{ys9Sts)?&E$~F?(UrkW2 zr7-?#jXId)zv2w~t1H6p$nT|VfAvGX!Dt8L{MSfaSlfS1z%_})UpV*vn!&Zd<{(^% zYYC_O7=!!xn#6s4wCuhcE}ZfA{S3!_jQ4#oI__7+J>LI*ZCrJU-^W>TzmcH(O%OIm zdEi?2+akTa#_xC5_50o3=zf1L?hi!yp}2r=+#iK&td;IhL|c;$ejl*={v5P1&mrz( z&L5x;4`3hi0N>nt;BMy+{5fxK3lc+eT; z;<@&qH}VFM@nA4F9ssv`0J`MClwjL~Ic}D}NwfY9c>Om%^!zu*_U~{m{st50?Sd(*N$K@xO8A{XGKV7|#EmK-%Av zt&YDjuMZhn9-{vb9mF5v+yL=EN0`4yZru9F%b-WVRUefl%cJtdA5{_JQFTK+s)MkB;E$RTJ!&E7QA@5pYK?dY zPLDdFd>k2%x@-JVKaCy@BKsrQIXnVj5Rk;gxgr2i9R82>ae^ncnQ59{@xt_Zs`@lP+({^^G}@RonD zR{t4^I%6#K54>*vGY#nr(B={@9^+Y$aTY$t*FPWI$?_Qc^s&E<9*2G!l#hWEKE^tEj5GK#_UL2mlgDk54%zSHPH3kq+QeRY+{dmx9)R|SA|15s z;|YR4o`P_?&>qj$_~Qj${0R%BCvful#7^|YL+~dspnT#-{7I0;pOm%GlW@c%g!Uv7 z@fwInb9z$8Mo;Rad_%0}j8x^ey_9`*a8%mAG~8H8}Cm7a{$ z=*bvAdNLXJQ_&V+)f0^QlX*HlNg(|RaPp@Hr>9n;r*@q`bvNiKoFzUjW2L7!8=jWO zRe|%Tkz72*S@^U%%GV_ADc0Ll?AfOcao zqAqZsr$Z1Qi8^Bie+t~>=@d8qbSBfD0&YBAXr*VQ(KC(c8R(>ERtr6I-~#^s40y`3 z020rFxaC<{E}nt$_6+O(Sq*M~7LBkmcYoHD^JkccXI)8q)}3q5dZW%j++&?T8!qVC zDAXTgqi2&f{%o3sKb!4N&p>NG!@2Yv`|LT+rRTs0p4)}?989t2KDY<$d>%;rd8iQ2 zf#*Gk%Y)}t9P~UIW$I|+IgGTQV;-KzqAc+A=WRJX2W|8m@alPYD?RUL(DOkkGX&uX zVR?=|JfDPepb?$}Ry_yp{d^um&_>Uf5WOJMUqCAV!bZjm4^A(D=e__w@&b773*fmg z$|4_g@*+~Ryr^twFY2HS_TG!exPTYDXlbJt?TEkVz>OE31-$^AdC{B13+#s%gOD~1 zWia+HCLo-Qw5eRYn29z(GrX8@h!+VO{}-0({~E;qwR8S2=#+oGbo$qi=-&YD_HP** z|F^P*{;j5oe`^TwZymDyTOV~mL;TyyP5j#t<+=#|Z+C?8%=&L{uKha%@sU>j-?1n& z8Re&=-h6WZH-Y#|hrwTZk@cmo;4jNs>16~$th1LvUXDO{&|)tqYW(F?qygW02~pI`IjFaQYcIk4 ze1-M(%BtzF+(>_gIet}!Y_Eca?Ny}CUxEI672_~of%EvPITx>55`Wd!oxkd$iB~;1 zy#lWJsxQ*|BR)u{S3^j9HO!z_*ypc6^S+vd{8@Mg*7K_cXm5$3zlJ#THO`;cZiaXb z<=)qUn*KVJ)9VNuy{>4X*OhQzmH6vgCxLS=Zi4(~NNZuxYrxXi5CXjJi1ava zyvCXQx;NVCN0!%v$ap=-?ZfXO&5*c^g!8oZhh02>u<1r z-i&dhHu-V2y^YlAZB=1^i}msr zJe;@9H2rN0)B*1NwktW_b|>)`uyCK5 z8@(G~)7}kn(7REb-i;Cb-8dV)0}k_Uik;rgMwz*G@oo{P_l)4wl;}NR(R-^!ymx5y z-VA`<5Di-x_rQ7vBRe zzK=tlZU}pD>-%`JzQ?=2AB{5Ogm{nj^L`qx83w(d<3{fnAil`1e}I_$0|e|JU@G$g z^zR2>i~U0&7azbg`cN5HHKBcow(<|yiys=3@u8Wpd;q=sAr57`TIoYi?)cD)_=jQ0 zAIbF(z}-Gf;@St$YaeFn^kKe@K7ii+2!(}@LN`7_R`L=1@+08S$1tRYd+?9IH9l4s z;$yU-e+0hzu@UDVn|Sh%c(;!@>py}%{D|j$1poLW_>CX?A{}(l$6=&@1b*>xqSg2~ zmBhz6WcvuZUM_`WOu5t|xLj&C5c6;#h6l=}Wpu=XEr@}pmrH?c$fXqpoHYP#l}kYz z$fY&8MJ}zaZqW_76yq$HworfILdvBe7v)mWi*hLjT`mQuP%iC4sDZU6m-Zt~E*+#| z!&Pjw>H(Nla_JORc!o-wWyS46%_=2Bn#9mc>9FAsuJWYx7KW4onkHqK%BaAR7OBcr z5jH8SkzGm!L%> z`W94c1{trjttbBCR9ZI-i8Ed`1t=?>1F;UA!&JsdypeOPYGpFI=A4SDaL!aM&sBd5 ztoTbnH5Ukc>EdKamyQNp`0$lrfig$C> z&~@pmtI9P}v1Y2N)>xu0ke<@jl{=(MEhN_<5 z4&6xXfN4zZ>WAcTg-imEK_-Q1hD<82Vi40v$cRy-Hg-x<3`QfVnW`3xH%e-S2PL(~u1Eqn zl}TzTC-vZ{5swEY^;d<}L?wZ-C6m)^>4q4NJegYGU6ZMe0hUr*07|8TJt$K<2IH>> z!=KtrsS4(#_EmrVvDH$Ckef`!aV}GV56jeP>bbM9PE+T3lT6bvwP^;{OPT`guniZjotlb}rKz;oZ_=Raz_TkF<8G254TH24qyG z^|qju0jl|-en=aKm7O*TJ2Y*Ux?O|`NK>#b9axi0w_qiv+tENegaa}?0ArPoV^^k! zVFuIHK1v70Ez=`00qIc=6an*6rq@B&((B_r(i>xl)0?Xrszd3meDK%a9fiR}l<8en z;hrj^7eHTnKXg2Ou&N8zf=nNUm6#4;icFv8gTixFIh@B5dZcifzXX$K~Z)kRgxk}O*y#>fx(f!FVNy;t5bpo2IFVy78F zkcLPw;>d`MAaQ~q2$DY{pRe-EV&B`@+1Z)d+1c5B`*5CZpo9JnuvNz$@T$vV(gwO{ zXyAx|PtfkbyL4vYY)hjJFrC`KRqVmQbydUTv;kar8^HIo0Rpe);wPTws^`%q>*E>= zKG&osl9%Y9Yt}^GEutFV-H@z;QkMvFan8Y9o6rqchwAQ!v92!o;yS8=;|Rb-49Hwe z>gGDD++~P#^)`+&*X@SU=6VF2dlUs6cO!WLTHI|k>3&fK)9PEyJ+qm2i)hV_t7PtF z0$B+eZdpAyOBr+H>zkV(n7Owp_ZIECJJAjIKGfTNMDLD6f%^o6yH5*_h_AUXp_uNg z40|^lLFOikVeWot@yHf?`2Uo7M#E07XlXGIu@v*nq&3fM5P0S>3_Ocy!=pLCvz)pf z%>f=!Pv0n#2e8S@ z0WR}4qx@br63jc18eUvl^J>2Iaty+})2Zv7gQUIqlU$Xg$0f=wqYdv0(0f{&jwzQhy`Bes1A0KjAU+6GJio3$WO)G3cL$GWcb}{c|x2{>3U?istxVS2aFh zF~3OjZvef2vyyE{#=l!|2lent`S`6W# z*D$J~mB=I1uF|#40U>$jp{>HQ6UQdBmnK68R4Q^qM-fG+TklRY*h2(uEOZ^?5xU*n zVxb2-4%Q>&!DiYRl>0l#+SdlhDc6R_JxEB{2F1U@IXGj33v4IA>Jj+lSydZ?~b@{M{$3EqrxBd`A93(FfK-ej@2uEiu(oU0+H4K5s78P^|)pjU|>=c&W^dr)#cL#)^3-)p; z7mqS$5jnw;Gw4M`>J;I$l|`;k0H55di1a7&2&7RbrO^g}qfLy{Xbatn^0x|$PC}QX zGZ_3)tumvU5~E9yM^rv%bd})N)75APu5@%412}pBiAJ?(in1ADQFh@is__>+EA$ds z^pZ-iKtWW(i{7Av(c5TJ^j=4u#iTH?G3b0u1~n#I5Yyry_EJlO#fXAgjO`(dEy7KU zu?c3e<#a2?Hi^YnF)U)MUnbcEeKErA7Tci$4k%cR=%>X9*;q^~yBH@WEp`k6#NLGm zF$pwwwv9(lr&#P7S7pT5E3w!I0{)O;5tmhni%oGZQnNTW=v!P;jgMDuB8-T$Luv78 zC>-B2l4HZ&;_`9guh8H4QluJRuAC;!_y$#zRO1}LviJ^6NPHiTNnG|JevBK*b{ z5@Y;~@bR^l#m~P$a+Q%7zm8hO@6!Fa=JNQ5ddI$mCF)U&L@NSF5Vp4jSJPW!I($xu zs>D22U5SNwXo)xUxR$yJj?!3S6Qm_Npdg{)mmo}QiGxs|kYk+Sw1XwOQR;-0D{)3O z*d4J1Aw^5baZj+BYzd<1mbj(ljvBuwf~0H7I_yo7Sh^)!vA)SMU`fi&NKR!!O3HIh z&cbI;YQjt|qzlQV@H8nGKDkE8Ir!iQ;!>MIpHf&OwND@iRUjf$$CY%`-<15aR1egr zF0!CW^*Tpe>INK7J#^Grn&W(yZUQ7d7MZ6-20!F-TKYwplb#0QX_<_)Oh#HWc$#lf zEX~e?rC(R+T7;aIZ=dEwhouRtS^5yOQd;g|`UGP&eR4m!3!GfF^gT>#`UAwDaZ)8y z&m56yrT-a@A6aHHvdFwha~TOKGYj%FbCp}5+$$=0jYhbWo_FnZJtJ{t)@^9A3~_(U z$f3#X6P5#vu#6mSV6a^$a0f%iM2mwai0E&9*T9vT_Ks zoQk!qrnKx!AjrOqXtJE&wCr3umtClWB`SDLz$*m&2AH#}VNsU&s%6=rvg~FQFe@{f zB_?NCc@5cvbRo;pPHtsU(ybb&u!7mM!gp05Qljh)SdzW1$2&O6eB{<(Id&s0$9Ase z*hjV86uOYpl$)EaL}nm2pK7@!w3}NhxONq+SF*98(Q;e#PPQty2Mx~c!`S7HGyvSq zgp|7kLAk5Ka$O*|QPkY~%5n0O`df=ABq5NvqSPQxNO<3-{9F=@0l;$~)WBG%Ou>9LtnY_kT{v^!KpA(i#0_lbA zc@dNsH}ZFs+=Zb0eIeCSr$B_=3eC!mqHbY4{42D9v@n@@vG6je3bUv1j#CX*STbdl z6*QU(>s3vwzrq$)O@*y^dxiawTX=VLs}*E)3fEX(6mAN^Bd9NG?NC&_qBzbu!HN^G zZpC>Bw78h1Q*oIJG%Sj8a*7*ZPH~goy-62}+vbr|r;GdAz|sZ(ipS9GqU=cVG@U6* z1&SAmFBBCDE#9U_#k=?h#SeKb@v9;$Y2qr4(IZ=OR+q;kCV3#g5Hd#qlt8~9^l$9Pda*YCiOR@4) zqOau{v{qJNuKXI(Dih+jvKD3KHK=2GJsMHwn1q$(z?ApH$#R!+>QvB^v{2F7p|WT`r7Kj>&fHt!AeL3u zsdNLVD(ul%MQfXi0zsAS&|K+skUQKk$|~K$d;#lLVei!{H<4haua1T^;||sHZm0>t z54F&bA-MoUGa+qAamk@qRQjs3&4!j@ZimFWp-vb!q^W)A1ek~3)w{E_JH*ie8|rNY zm1d=({)Seo)`O}lGhdyIJgQUCjVhOzT6H$8tFmEY)m3vSl|NYBM%1^u8#YzU*?NJx9CMi$bM|u&P*jRndp4B3RXjYONn@QLE!!t(nK#Xq37( z4ytMs^w`EQs7=96)?_?tGw5nH>VAcB7!>H zZrXIIQ1(_>r<}mHp92JzRCL&N0<~{E_ppeKyH?%09bHtorla&RO>PF~@ED z{GOoK-=U$OT+ufX8yx%Wr+1zFe&A=@RkYD@&3^v=^W2S__KP0DZ2WeneQ{VVeDR#P z&C34rd3KAkzv>gzn~o#)>ps4tvfu31bBE(S`|WL~&9dKh3Ex(M{{EJVwmDYYA8tAO z?D1mtaNGCl?a6dF@MN}gjy>t*UIBY@O@Q0KUTj}(Q^hZPd$@06r=!#U*vkm{YONCn zeYLlT+d6hR=Gvb)MPpCLI=k%YMCW*Wdd_*vp59Tj{N146zP`}Icc8l+JMGUGoGb0w zQpEF29{jU2jcul*y!PyYbFw{qShvf*X;YPNx>Xxm`t2{zvwIzP?XTUUcklg$_P0Zg z-S)Q+924!^BhA)k-(C{E`$n4V?;lxV54HZ$A_Q3>_~-L%PT7Aw&*qi=_w#JQVPot+ M|Id0?+kYqj4{W+_`v3p{ diff --git a/resources/js/pdfjs/cmaps/UniGB-UTF32-V.bcmap b/resources/js/pdfjs/cmaps/UniGB-UTF32-V.bcmap deleted file mode 100644 index ce9c30a98541e23244876fef9dc67c2639fdd746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 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 W-NpY7&VvC#?^62*GzIJ*TmK)sASzq{ diff --git a/resources/js/pdfjs/cmaps/UniGB-UTF8-V.bcmap b/resources/js/pdfjs/cmaps/UniGB-UTF8-V.bcmap deleted file mode 100644 index f78020dd4028d56497c44b7afa94985f0d18f8ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl?xY(U;%1@i;UxH|VM5Yq4M+!U_+G%+;v&G<;s5}C8#>Vd diff --git a/resources/js/pdfjs/cmaps/UniJIS-UCS2-H.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UCS2-H.bcmap deleted file mode 100644 index 7daf56afabf65a4707d7bb06d829f56b247c9e80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25439 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 diff --git a/resources/js/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap deleted file mode 100644 index ac9975c585ede6958758980ade161f687d40d58b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmZR25agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9BtKtsO>ygO9pkUpY R&cJYlpFy!nMUA0J8303WB^dw! diff --git a/resources/js/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap deleted file mode 100644 index 3da0a1c62f19f720590b54fc1de7b027af100945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmZY4T~8B16b9gTW_C-zEKrO{Xki;z^rld0f@uiR4Ix@Y5SLOB2rjVUBlNpUP=hJZ zdv1(>g-o)Woy5N}MSq0Xx}bOFeWi!YTCQwVdLmXyM5o#>UP7ff4B)v+t$V>7V@)mi{{+VJB9MW zeBMkKX3fd;b1MvOy0r&Plg#y)x zX}a?kEYdC`e%><$20DDP28u4w=~n3;YfUN!NqxPZvI05?&-otvW_;5=!}nylUyt%< zl+mDX_+Nh*P#INNtw$dr{1ChXUIIS?FN4>>tKfC;b;>uvHz-@HZAgi;yP{& zWD?FQJ`$vs2>#XphHs|;qU{Wr(w_ML#!@oBh)Y#C<^_Wo0+Cb8kt`GOtNE+q)oMTu zssZYjYJJ(5D(B#;5O*QMkP8rfkc&*df=E%h0uh2pKo%j_;C90e5xD^|3b(hWWz&#b zRBl6zLD~>8BKP4&Aj^y3Hq)$ diff --git a/resources/js/pdfjs/cmaps/UniJIS-UCS2-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UCS2-V.bcmap deleted file mode 100644 index c50b9ddfde9da7ebb2f67eba68d58fa2cdee902a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 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 UUp1g87AoR8lAx!|poMAw7d?}<%>V!Z diff --git a/resources/js/pdfjs/cmaps/UniJIS-UTF16-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UTF16-V.bcmap deleted file mode 100644 index 70bf90c0efb66da2a7aa19a820d766cfe3ef3183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmZXOTTc^F5XWcEIeWU@mZfZql}p1S79^z5N>bApgDXKP7qONqiI&*X4WK}=trCdA zkfrgJ7Xyht_z`$)Hfb#%WUGFXdH~!%YTOcem-5?-7jsfZ&dVHA`y+;jYbo? zQ7Gn3J-uJ9nA>GNxwBR*?G{V9idh&}jIAyGYQC(O%(7Yfcv(!FranHgker@*nx6Ti zW_C8`lIcih`Ee{BnKjtpNi`1=Fpvzl?yF}Q1*S5f*3?k}2)KY49L}4IKaqoG`Qku< zr2IqQT9x53c5B3YqmOC9#u%lIM~wufsbJV^KOvOJf`NbW4wool)bNDEc2OJ?65`;c zpP)ef6jJW+L;J(!l8eaH(1-h*q3fqC44xbu@4*4W;1a^M^}xVY#=%>S0%g^S|2rMo zWBMgv;0XDp85sT1o=4jFCtG%qf;F2tH(%3e%$v{Ku(x8K?N{7}7y(CCw>vVo9 z6cU=DzJBn720cg2BSyO~0?>^#LgnI-v}~-6~Uex?ZdBe ztS?FK`WnG{_A@qTSFu5??_F4bl~bcPvGuOHj!xVoIWwF(&yYCF9G%yUIC+ZBhD@9a nq0Syd=MzEakYUSZoypkR&at6$Y_Fabu${D4-0ek>+ADtn7bS_K diff --git a/resources/js/pdfjs/cmaps/UniJIS-UTF32-H.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UTF32-H.bcmap deleted file mode 100644 index 7a83d53ae70ca3d81cda827cc224ec8c5efa4f17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40539 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 TSv}^!0%Bau4|_Jjy$rZ_2%S+!ysBd@ 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 diff --git a/resources/js/pdfjs/cmaps/UniJIS-UTF32-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UTF32-V.bcmap deleted file mode 100644 index 7a8713539491f51c52ba3a1525d181efd32c1f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 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 Zk@2$oe=xv)=QA%Cm7k5@(*(V9{{Wi~yy*Y{ diff --git a/resources/js/pdfjs/cmaps/UniJIS-UTF8-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS-UTF8-V.bcmap deleted file mode 100644 index 808a94f0fd9c3b3cb0267e5cfe4dced2e65ecb1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 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 E-=u#IHvj+t diff --git a/resources/js/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap deleted file mode 100644 index 3d5bf6fb4ef94b452ed1ef0df926fc2bee55e973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmZXOTTc^F5XWcEoITxcODS8ha%o(|f`kCAn3~2ITnS3Kh_zHn6k?$pK!IXgB@lxl zOXDjq1`>VnBk)KzX@w86RX<5RfNy5yQNzGM`wl2!b8QOsDDF*H1#8XJF_8ULea zH`gXp87XylFgy1+o*0}kdG}#u2^8RTl(-T{8I&ws6x>*3k}QSDJJNt6yp{mv6cOqJaD7jFxN7$?&gjXDK+OiIXu z7k-$4LIi1V^r7?NV#&i)GL7D@v&hv`Hii#(54K?!p?enL%G%+^WhTI1i2?D-@c*5r zg#-H1YGNPzrJET0(U?m6M(A8WojiSc`a&qGB3Nz1)JIxtN{bFn6wsRVX6RsHQthLu z(MUvUMmoD71Uj_ubDtb-J8y+H3@RNIhg%{b7{-+#YC_?<=vV!H{q~XnJ!)ofBB&Rx&Ty_M)@* zHG$Px#amrwSY7yxXA_H9WA^tJtiH+xV%M?$uCjt|!l$_7g4}1w+&O{nYtGyyLU&bV oZkdt0&C&hD(B0!$_t?iO);Dsz=L8#z$9Zg|?0Iiv29(D9Ur3XRZ2$lO diff --git a/resources/js/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap b/resources/js/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap deleted file mode 100644 index 09eee10d4fb4b9fe1e70a1ee56825a207ae8034a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40630 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 diff --git a/resources/js/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap deleted file mode 100644 index 6c546001331cf4f2f68563229f994b55730dfdb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmZXSTTc@~6vxk*GdtZbrIZD%TpAX!R6>9P2GbaWxIrlwF)r063Q^h(pg^&$5{SW& zrSX*)1BpKP5qKn`1s-L7z!8bGc&6%9b|D2f&{eEudws-UEt7}DLB$0>@j>h8& zV=|jtu?=gtP_#D-Msh2Y%WvoMZ;N(zNSoZ)Fs||oM&2&i`A>DHW!uKk@LbZIdTLGm z(NkONGf7KI-5pFVJ{}t#oHjW?&rxXw6yTtkegGp>PH_Sr zg1l$QyhVZDYtFnCLT^oFUXhWv!_oW9(A(!&^*JXhRyQ;9qx7C)ZTTdNwWO2w*XBW~ GrT+p)28xXU diff --git a/resources/js/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap b/resources/js/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap deleted file mode 100644 index 1b1a64f50d204b03ef0c5575233687830a1b053a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41779 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 z 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 StUu@Nr1Glp*C4U(!~X!6rxDoz diff --git a/resources/js/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap b/resources/js/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap deleted file mode 100644 index 994aa9ef9f50495a3ac558630b0234680be23c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmXwz-%b-j6voe)ncZ&xP+*Hz(8|Ubkr1F5gEq#HZUa&TftD%;Q7LTz1&VEjKn!## z=uIJ*lt3aE-gw`5MK)VT^@u_4q(qZw=&r4_igcOe^qVeVGV=x+(Iywja zzTPLn-aqxB#km20(1^O*9vbVr-`?-VAGzX?%=C|Y+hO2<0VkXF)LuTsC@?z%y0f7~ zfPe{z%;~A`#ZeG^0V(#gN*vo=5JBP^5)md8@17Nw74BHt?5T3U13;5)R)_2tZgHi*Ph2gGDy7G|gsSPOPV z=E20<%{DMJ?9j6*R6T&|J%fh^4-C8pJx)~L2t=JkqP{i=8H^jOD1KDe)4!H6Kg^l) z(**OA=?yIQZ(hd&$^9M0{6yGZP90+D?ZFIc-BwQP<*7D;L>uE#d%=hnrl`#ds3jF2 o)m9j49|&se3`?fmseq-0Fw=K)Sb3Q)N3i1Gy<)Bm0aqFS2j0}QeHI+_hb#t%0 z^sD3GC; zUAp1EhZJd*5WDP|h6FltwGN67(3xiOfz+ImO_Kb2J8i252+IbZ1!e;?0WU)R-Fv-F+$BYGcZ0(sh`VKz#}v0Q zb1)ruSMix3xkT`{1~KwyQW0&XA<3=D|8HzL{fl^1fook!;KLwddO4Djcz>% diff --git a/resources/js/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap b/resources/js/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap deleted file mode 100644 index c148f67f5e9fe4a108519eeaace89e708a51f8f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmZY4-%b-j6bA5bW_FiuTM!Bnkyf_RMQ;j~CYXj0-H=905X4dtf#3ogfzW^3DnSeh zf!=dtd<`$jB)jQ6$SnF0UgLt^nUi16nQtbO9QO0=Os#(8?tR>C8Bg>1Y-S>x%^TKE zZObuAN6nT~X&S}qcFnEVT)XA$j76=31LO96({P=p<9@ygOO9iVjn5Tl3iGAHukLbn zZ?;&+XyjjiqN$83 ztkG*eBzzyd23`R_0Iz~K!0X^H_!{LK;Omrs054Hq24AB5olVSX$`2QH^9BEO^J^E4 zurMqVeq!sRNpw;`XE^jAlsqHo^j&NcZ$Z_)?eH)U;%(UEF~wEF8pFA)5# zA&lHk8shCNn9?5q|Hf9bzll#(c%^d&@c=|lF2-_9Braz!S1y+|HKJuo$7=?5odWhVG zAA_ty)*%KV8xSeTeMpze7Gx7*n8`y36Y?0o0zX0ISNL5JeMFwXk0YQ6Gz5$UVR+Bh za>oebKoAQ>LpmUov+oh&ty%hY%B!SO;r^-NB>IuS(5Vu$=ykj^N1_(Fz8@6+0LGcP AI{*Lx diff --git a/resources/js/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap b/resources/js/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap deleted file mode 100644 index 1849d809a679e56414f4e18dce8ca3c41109e84e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmXxgT~8B16b9gTW_Js1`H(_H0)?8W@dl_~pp7wxk}41c(hm@UAPXCT&=0m1f*8^Y zB{3-mlad&NSH?>dZcLhy-E{PKOwsKR;4io!X7Xgtyl3WIjPyG^kW6jr%P*HQzB_?{ zzx%G=AMo`rCRNQB*-U4&c-l9VSV-!rq&}a~7JFR%tE;|?`)Qx9r8Ry1Jd9|Xucvop zXdpBi3H_;$C63r${xUo$uOdTF-gd2JtbyKP`36C@+uU_ zP=XCs_N(z6k~^P(XMem85@^@%6ewyyb6dIiRVlB_L1OJ4p7yB@tC%G$0K)Fs9@-w* z`fZQGtyZzXo=}O_+PW_H+YUvdvZPVf^yT&uQ_6j zDNbX-K8=DHv-Xptw>b3#+p5_kV*;-Ua`R&Z|5h7va~Gupb$LG|Ip6!gm77A>WlNQ- zJKu>(6&R5Z1K^z?qA%>O7IwI&G+df2O*oWV#X-%u-drubS40S=0^S1df*1jBh8UH^ zIQVrcqTo*O4v0yJDVU8gokYxl-+Y&3?q?y^A=2ROlGp&h39$uJhUp>V4a^$wCL*?B)}caCaiAiRiXC249o79G zsMG-!x6Ng90$e^8gT$B)I?ql%8*#7K{tj<$x&zJdplw%n2kF^Kp*%udL2`ETsS^4N DWh&!c diff --git a/resources/js/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap b/resources/js/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap deleted file mode 100644 index a83a677c56df6f1ac395d2ba71e60a08b0985e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40517 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

    ry6~E0z8>XD9~7$zzTJUQY|Ybl zQEm&$r@T#>j>5#v_#DY7uZ`Stu-ZniQR|$L?<86yEHEroO%wV0q7_B&`MB_3F!*R}}ZDRaflm@~mVVH-y zT=b(vkD~5i5sDMbQJmRMdA$KcaBdk|R_`hLU1H&w^>f>F_+o~J4%9D5#OFO2jQSKY z0q4$$zSQTPL2(@KJMW5_XkgP&7%`*`E{yR8_dparSoi#VXaXs1j$mK@~Wk#K+weWi&-F@i`mnS{NiR*a&dP8uJ($nW5cNFqHFO4$}jE7;qX9Zpf|6t;j2*Q?q?il z-{7j~Am!H#7_w{T7!+Q9j9&|I#?=@+cx@c$=UOz{eQgRB(zR*Gh{msFz))~)6>7M) z8!x)HFB?TcDvDDOocMKTj@qvKVw$dpV5qN0?nW^Ur)^x12;>-ojtQWWjyN>GV;)BrJ2KJej^%ME)|gO04B;J{`54AK z_TwcThe3`V1;vq+cZOjWJ0n1Jos$K@BgPiRLRS=vI95dGYD`V%dVU<`em(_XoIzJ_ z8aepDO>fNuWdx@5<^;UvW;B?`%_);n#By(xi_nUji^V-lFuXU@w=#Zng&^gdXE5en zIvW;c*EIB}YZltymADo~3WqM#wL(J+yC8V;u0tHP!3NKW6%NJ96D|7*h zNPiR)1tYw*zzTkQ>xhPzb?Z)`5ZtNT8^hA=ix+l>S@ja{UVy5*7jckm_bNfX-Mg$f z(BZZbI}^X{i{ZXKW^ze4XBotFL%>L~RjN$ENvr(*Ck7CCLJacdnyB?j#o!FzW2oDs3 zr0<;)#Tf|jyw?}q>J3KKz2SJMHxjhc8*N>LG97f>yBsX4cMYbhH#-i+mN^XBzKd|R zcLR!}i73vXhCV4Bh4T@3HGY~wN7mDkt#o7~9oa)iAWh~-BfIFo;M}>*Iq+=!tfw}J zlO?cC7N1dkOT1Lyk{C5!OI|>2sX1^!{JfcdnPdIe$-W{Af5tKtg~P5=>(Z;svFEV!WbF6r!{jK!IXgX&?qe zj>cDB3?%yCpWq|8q)kcqH?HbmQm5dX*?e|3Gqc~Boh<+T+|2Fn=Qr0kibgzcFf zVhLj=n_IIDYrjymw+lvcCzH$X=JIcgc6Lmi+1fI$@(V`ZF4+0Krqi-*V{CjeY0f^i zX8(kjcQ)sfRysBjpB!CIJ(`>toihbM-${85BoH8(3V;!*q(B4(aA*1`3k-a~Oio#s zwGwb(Rv4iFTfI0qB5n-@ZgdMxua0nDeOOI!Zs`C60rxTEOd)#z**mhtnc!v%MF-p* z6(b=k*xbiC@Gu95F^DiAH0t~TVTGPgUG!`ssWRhQK=kw<;&tJ%rBFU_}ZEEE0s7mb`wDO?Z zs;2R9lJZL$m-Fq1t@&KTlAnp?PiF?Eh zF|DKfPGRl}GWQL!Or(jDAKk;RQ&?G&{FMyD%F1V~&8=dUIp5o{@+uRg$KS;I`|>(^ zQ!SD=D|7D|GA|{g_gXM-jia}rFt5nCR}$!bV(1+TtoxiZ1?$@x`YQcDv9WrV#YWOe L`x{R{YNY=HNrj7y diff --git a/resources/js/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap b/resources/js/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap deleted file mode 100644 index e1a988dc9e80be9a0803e22d021b1e81fdcc5b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40608 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 WYzZKilxEs5#lWzyu91adzbpV2cs2|G diff --git a/resources/js/pdfjs/cmaps/UniKS-UTF16-H.bcmap b/resources/js/pdfjs/cmaps/UniKS-UTF16-H.bcmap deleted file mode 100644 index fd4e66e81f3507b190fb2986a26a45c1c380e302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26327 zcmZs@XK+=?vM!ieRcmd(<-HJ+Ktfmn0tsP+3%p{# zo@7%6{f#wkr@!Wl&X#BZ0i3QV5aw0hyGKhumjom!HN|vH`)r5%k`~r_F4UiqOtBi< zU1m$sszJqVZNhQqMjh33%d>{FI|wo4EX2@qelk^THz-Is>LoHN^%m;#mgmSjFuY};!taGe4b z4N(n}DwBiWq(e@RH3(bHDXg4U^-f>Jf@?23d;aBOMtjP?g=b|snrRU)<%Pg28gFjxz}R>Ei_bZje&$$9s;On!=kByl0D(Y!XrY*d?9Y;+|fL^&_+H5p8~ z2RYB)o?Ke1%P*g};~;}oLh0#p)D_)EZA z3)W*iSb>&ov?inH3D_9)9)N)xWtji?heu^R|Mu6-Dr+j3Zc@{)-={xIa+P^5IWiY_ zb=~f*vaa|62QmhXR4?4W8_Xxsdb~`P-#N;S)(zljLQgzc&j?dAIEu^S^Zh?p!$oLc z%N@1Ml7#&XeDz>?1ur3Z6WX((eHBCwqN^SbbIT@STMvN@=FEo9oLX)Ehj$M;3eEc` z431Z(`r$K+SAF$sDf{=Klz~=%-q zlWpl`QvQD$D1@F$FgG&y8gSK>8S?*!k2m-RaIwAZt%h9*J5Bptx6Ip|dsJ}B(Z(&s z8tZG>mR_qZ_={PxXPOKT)9o8=`z}5Bf9{rH!GAH!WvYUIvtETu3|NX#LoDdZ=GtnA zmB4ZX-MM_$00Tw{zobn#b_S=C_^4o(CK%9w^)7b5hR_q?24iHCczap;)&M`9#Fvs5h4EhqVzl6PjZ#l47 z1!G55mXmxeR&tktyOjCvvL8+}b1FFY;6k-5LnI$YHi0hEO-%6^n7gv;QkWh}2W-U`-~e>CWPv@w_(&oT<>B0PPR;fl{d_AAFBlcNTMB;Zu3s zd=J8}(QypN*23r2IDG&YD)CbtxVK@r9K+e@tQEbDIGMrTKfvjR=$<|Bo=L8JSh%Qu zt7Tsg!{-d>Y!TMg;9Jd2516YAr&htYV{CLi^A|IFE1I9f6wTp?-h2`qF&KV{!Am%O zmQCJ7?<CU+fSGd1`*0Xy2bSqIK0{=+F|)k60n^z6e=S@7`|Ucr%Cm?*@LwJ?7J z-qVPZp|c3)&O_v)!J4AF%_lE{xfN#0rAW49t`^=VG#9JimKndKgX;n~USQ;k>c;{R zsZp6v^7hMe?`ANy#15B0@U<{K1y?3I^04oo+^dsqHT+#R^z9L*joA5shi}814F0Kz z_i1Hw4mx6_j@!B)pJMkJZaD~{N8otG0()^RhFw(8YW0Ct=*?I6G^^~3Kf!^fDjUi7E2UD#Qo9={{}rD7%8 zS82MQKxdhBOP<+*mi=touFIX3o3 zEMVGbI~yU0Gt)E-_Emd28>+7i8c(E zVP_c+UKIZ0%(?;ws&RHNw6DW=yK#(IeIr=fm}dios$hD*@t14(Ifps&aq0w2>6qyP z_-{$G(af<w`dJ~K9pNdhVF-b(?@Z)CDdl`Z^#K!{o@vhvn%P?_3_34=KT?ZP5HX`8TMljcd`3$GO?~~z;4!X)=C2RL*)RXJBhk5w6r8s&F|->yxioekhBIKXp7r05{0}AT6a1wG!>w^+ zo4FsEBOcyL^4DWxzX;!Bu07C~$E$2Zz9&QS@4_JidqWxt z!tlZ5zB*`Mt#a;Qzr4^o5?SZwBy%NeSEDl*d$yzx9gF`-!+sU&1x?IcL&new*|Q5L zo29-MmCI-tZ(={6=iXiF-WVDKo4JNvaZxkZ)t+SV+*8we(sP*)#V*WWgOU0)G=0C_h>%pVKj~VbGA?oK_?5CUf<27!&%Ri){ zD@It($e${u{{2#WE&D7~rj7dc12}mA#;>fj@8`A*@N7_IwC8!WV=H)HM-8R&j+?B# zglGtU0|GZ)MC)eeDuS%D7^bvM>+)e zgZT!8E`y~>1dc#Fci$9$tr7!i;GvVJPU<_Wp4h{NH^6WUdLHSf*RjbMKDA9hXTXWu ztXVkru)%!Rdza1);g@0l9QGxH_pC7A1zQv`B7AtR{`deFn$fih18r!#tm(bZ94B}c zT6AdMWAL4pLs@L#8Vnj(e<@gsMGX(F(a&s_5i&o84aFb@eootv? z=mfR%PC9L;kqmTS5}q5(QyCw+DuRXV)1kDVD!I7&5pLu5B3w8Hog2Y%h;^@$ z9StyX7C$7x=QG$&rf446CFpK}H(KaOLdOH>+=ZS(7{4Uhw!vr?j>h7UMm8T}=7X%A ztk(vxog@nvf)}vsFyujm><`f!&H68DefxOioO(hplZNHq1YSM-5CaZ|?rq?%086c~ z)q&{|S{||yE!v*a2Ddcv@HMF?L3k0Zz7)(a& zI)c6{V6Tj_trMgRg`Ugpm%v)UA}hgcV7)hCu^HYR0qY(XiDsh@*_-V!eh|Vs7_DX& ztu(R{2J`uF1N1*)Q|F|`O~Q3VSS~WMcZP_~!tCF@f(r%RzrZ0rICTZQulzE?x! z9QUtpp2$+wwQ&Tq^1>0Wadq0^S77rO^M3a0`}L?Uk@`Gk~x+KR!U=}S&`WrB{`ay zX%F-4`$3|7}LGCUQZyw{f-8zeeKNlm3TJs&1qZodSMN2Yv z*U266oa7FfH@^GeNCfXj=q`e>24>$2A%jG=X5cvMXhB~Hd+IEE7@ zHNQ_~FT;sq&1X=@;$#~0uZGT7FqC5KCJP}7!|7~Vu%X9b*Fb-p)K?@18|BCqn8}0C zUdgpZ*f)diG#}rtvTap=%jDjZ?DGmS@(M>@!)!bwE35k)>pKgkTR6WSzRKX(Cfky5 z?y+h%6?53!cJQqSTLt?o@t=x)h-DMS*nd}=egdrBlGjJ{-{91%Rr zOfqxlGV@{RiQ?~=_&m1>kJ$f#Kl??POP~f04oZO_?#iK7^;S}0l!I&Y6PSJtg(ESwVZs9u(ns0DR zy*!u;-8!6mBmssRRb5Rf(;3{EXqf#u`?v@Cw~6lNn8^Y#S4+J~ z+z#S>I$Jyf>o^?;rZxppY0qI}>!j`j+;<)a4lxrc15aR9OLzV>;7vIcxi9@25sYH8s-jJ}pk z*KwwjL=Re`aO9cVeMB1Az`9S8s6uNc`+AhU+XQdxx$Ue%8t*>r+#)F(8xnm3TH^TH*nA4%9 zl7#{Kj!AF!v)}KF=@rnmUjfMik{GFh&QjUFo_~G~eXT4|Ah``NS}sP)@J%_G_F`8N zIN~MqUhY2!i|5f^j&IKiJL45}P)N?3Xh}uy8tB@}`YJK}g7v+Gx5sg4FYh=G&R48| zm$I|EqtJ7n`5%HMj(aW>nWeyLXisIPQ*10jIIgNa<;+uo6RD(U;_NFhSFjLS?eV;$ zjgiT0%3=L!WT(hu#6Ne@QwHgMn7)ILA8I;8-&sjv`G|@;@PXK#sg3bvV356N*LebM#d}I1i?E!W9ku zC2$5z&tP~h1W)4ZJ~qA|I!^LF8Ty{1V;9VxhS^hSsn!Hj*?&Oz*H%arLkVcz4gM7( zQUtwu&?-U~Sl~K-ELA&Sv%X?ZA}2yR++H#K4Evrkw^r&+#BL2(F5s8V`Vr0?Y0N`{ zHJN=`CH;OvGbrJBBaCf=@te#{v)@LV9l^IFDjZ7(vhW`=I(T}T;0%UdqNz-_kp4vG z&0}uejl<{FLup{8#vh_dtsn~a3>Z>_rG(ipu))_j1^kB;_Ui`qzb3H$Q^Ng%_8Nrh z!Cj8FcovM4M%SY?4m!^oMz-SY3h2lJPxca$@{05Z{-J_(6vAMpYV0xkt1z6;y+gVl2+?XC{XJ6nK{$^F9f_CNdX_#r;x0NbVeM3s|;8pUA5ya$0>Eb;)nSsJpBLfcdWg~F{;cecS#ghr*o z8(?p;;M-34>vO76`2qVGf-~ggY9$HpAjMc!hmxbTopwz~Cjcj&W-fx>L}4Q?%ExzH~eX za|IYy3!j0&Z+WZ=<{n5rdTs(alm-q`KpKR#T;)Cl-Fkj8e)5nyv`ud+!S-ftr$OC& z3`UBHiulz)wlhqW^XYr2aDh<_L^Dew1`ZKm2mThRrvQK21om1wYSYXOlJ_7CU01(J z$Jsry_l(rJR-WG}{j?v$nJThVKGXSkh`m3Vbb++XX!{wQYrwfxtnY-%dq8&HL9?C@ zUBW<~ur`sEg?$$=v^A#vE*mcb_bnJZ#{4hjk1zR5EE_u@kCR4{C3?!hwp+4p#K;NF z^r`qSN4T>^yv?Jt6$VzR1M9>>sr1)fuy84={iJH5RsL89)(cV2OxYyC+7x5XhZ-k*X2*=3wLs5%`@bkU2+1s-39{M?& z*GIWtMt5yywq4*AQs6N5UIR-kEK0hN7VXKxbQH%6S@!{EmJ~7b*NyN)uIk-k96!cP zds)XL{CJOhvw66d*&jmiJacV>-Z&T%XeRJZhTiMY(aIN(a7QNU$qolcGnmf8ne^*(0>f-h^wKm0fyq3{WRK7VPr!}$0}xI{qb6V1)F^hAL%Gg zgQ?r_b1`?G;O}ml;$Vx)z4*Ra3V>3(Yli;68gm4B!qrxef@ItJHl@;L{pDMNFcJ8M~_b+RP^|$_qjauVjHz{a_ZDA9A08Ij)F_ za!q8Fv^IL^41P|5&jL*e7^y|KK^j=Y`fHd~jsCR~p&ajyfoU~_^RYjP`C8FcXbhf~ zt)~Pb$MK?%{9Q@d{a6gBrHOOQxlt2{6{fZNj#Spcal7b=f;wTTLQ^jK&Y;skY^FIb zc{71rCtZ@%a|`-T>ZdYbjALg#43IzNm}D;2EMC`|o*E~Pp}PhMg0()wP0X?bI!<#> zB@Caz={rFFnc!t9d<6p0P|VXM>kDZCp|efdjsbFjL=iS_p}ue76SY$>58vfqAG5x7 z;CYd0Z4zI$iN8H#9VOAW4D2eyxosM65e{kPpP%APvugH`s<*)yh=O-&MmY7`b^0!@ z3!WDf2|x;8s7B>}%-vZKDu;ee?Atu(*(EIG`8cGFw4$Se42o!5GX8i<8dTw6Jo}_$ zAwu8x!>7CI42 zg8g!5F3_~bo`9 z1cJQ7S|E7Gv=S$B#C$UJ9D>dQoZ1EhS+cKO(|#U13^?2fKQZV}0qb-06GpuQLL7Sp zRuE*t{Dc**gSYpD<+9PP;wAx3GG-5Afa7qbexQYaNX5l02tUIQ=W!tm?R${G(V_cj z)kz_SW6zjvGq+yg)*Mm+a)Op^2AI1CqX&8SGnmRnlU_f2 zSXhs+iQDK*$BEbAJ}$_to;U{9Dwr%2b0zHEMfm)jFQOQr$di+zvl4zhg61{otP{@T zva=388kzML*vr}QNz!zEH*_JLsxL{JNF<#Kj={Hcgz~Vl(=fM#&Fq0O@_Cf<&sSMD zodG)}Ckp3!>^uwZO7_!6aBs&i&GLMT!M+OZ4LA$ZNCkFY<|7UIG@Y$ca^8SoIUIn| z6-dJjG{gtFoTiD~!tn||U(VYrwBy;#y;h9JuwW^7=b^JzdZT0RSa9A|^%mmdMfmFz z`CAN{b?n>OR7-`<79*zCv(76JS;Nc^(YG1xrK(6g|MpA_+=cK_9Bqbv(%!e?ryS_G z!R)JKYbKF)OwD`px&1OBl*~*bv5wC)!_;f+D31Mf1IJdW-#jvWxd+~I96E-93Le>^ zcQ+UUm!;4hY?qj0rzK76 z>BC(wu7(u{7TG#AuF*G9|?J?F2LV>|4cbg|x7ZL|yc! zU7ErBhDf<#W(D|lgiqf9iWgC11vF>zfvkO+=sgLkz;3xMzz)%*$BQ!lwP zz`TQ*i{X6={DrinEzlik-ez`?+QaDbLNQ<>C;twhMZ6dV2#Bc zuucj*XH%`*lS2|gZLif>YQbG1H(h*=lf_{EO9Wn0$Lr zWT%Re`eWCNuN$NOrbmLq%%r{_W8UL9S0OnHrJfoX+ph~8(~mGR7SNUhGszIRhwc~! z=KbLsm@D!9T3krfysg)DF~!7mC8|ujHB&17b^|x961~OXU60`#tS^!MpyK9Jy7{fV z{SXUp;wGw@3z2lTP=GymDTV+oht=K12FnT_CTEIvMR&Z`a$Yxofq7!2e@SE=7a?#l zrst93FL%q_ldqm^0L#nRVcHCyLubIw&>~=p_0B1gDo($O7)=`$gx8P z%G>J@$<#zz43=uG1o~Ala1+e3YWfm;UjV^}TJwEHii}<) z$w&AvzIh1aTQC$Wx{c8Bl6CB1-Pxjlzq|kj8$ryEwU!zwd>DuCgZCkjyT-niKvdPt zdN!I4?fcPJDUBVHW?I2@o%QTNGqF+yIo7n^M67{sgW9v20uWTDbug9;zmw9P#okq_ zeS6sG9qD7XrmKmCj&pY$bDqN*??2G@YfeHqr3Ug1@1cr3$5|qEO_&R zeL8{TC(+KB`w-4$;(VRX@{C!NuMPPq`h1XA=SrZsg$|Xw$&VZB0iDMJvDvSB=MG$4j#R)nBf%sps5U06ld`o|xI^ zFtL%D@3ASy$94(FDhvU1-ijYtBaJ6A=LNYt1HWW(CwZzf_!FJK1T7Efpr!beXkv`H za_l<^?luZ2l1QtX*$@5Yq7}UPgcL*9Lv$o45k-!A&D*oWA@KJiPC%1jkC%F3&EFLDuq9Mp}CZ7y2)!;GdCibu6=2VSCB?eCG-D(0orO~x8ZH#g?LHiyt zb5^)7!&Hm>Mh#sm(z3-+HB1>)?dK@4LJ(_oRH0+7qVe>-X7AL(aY8%13kR}=zkrQ2 z!WRKwn!rq+i#+arCHppL$6Mr)O75*gTRA$6q_boH6Xv}u*$841(%bbgdmG+zoH!v* zkSl1bqIv#iKr#uUKZXe z^p?li&TBm!BL`K#tH6H>{ik6dox84JWS!JetG8W4D}{G7aZia%sGm2EO*ddqz0|iJ z{<52WjbWr}j;BK>#q+Je;oG>dhYxK6!j47{;rrt-`4j>*=zbJq$pULWc2?5< zJR2{Eu2l+>Ig|;O7TLN>9%ksEwI)CIF06;H+|18c`3Efz>@^JKz+g0ww5Yn9a9AtZ zuJNAp@{9r8S_l=#9ORR)_{Y=SP219duVhOa`%ojr>W6h0OyOVK;J3BlqcFX#=&BMF zDG^AJdgEa+PBJ}5(xK)WAhIfz4Aki|@!_o8b5jf+()FYpT&4VNne=TlzF)-#%SG2C zh}>iD3(~+!v2Zq_{WLcn6aH1q3BtA~diuEJy2^rt?By{sCdW>bBO9lV;lLK=jm7B} z9NEn6b!zLY7{>#2HA&%eRVXRm{0LtY+{g&M3m2h(2k%WIP#T?A(cLWfX~4G$U1to= z&4gg%@D}u{rO{^baibW&FLkGDMz)CFmGDC|OxH2@qeRzDc1YE&#reZ*kubF!Z7;FL zbC|gR_6A`)0Mk1);g|Aalxp?~AHE4447{f#+ZLGuI=XMky$0yo$9*TkwNp<%w!y0~ z@|?eEVxtYb>na2;G3R-m`H*5R*>}VSH^!_o{?LX5RR7uppJmCF2=5VlE1@S@Wj-Hc zULU;}g{IqbS6CM*;mdEs@vBm7@&#Pp!(7d^o zHkqSy%FL6&LXTv-!1fsCKPOvur$i{ODw@=4gZrMCTPOOP#A2J|L&Z$&L(z8(hWGQ) z14z-hPV)Mk=MKWPQeg6g2ybFzYlP)Ib{fRHO`2c|bk$1j1doXNCXML~pIE~}WaV$b$WwH$l3iM@Ia!cPeqytxcZ<6FB!1fl zldnZ26WZ%^;e(<*R@ZkALpjWMLmIfq#;a2MAJEB4N1!UOO>Zqm0z?MWm~RtIH1nUy zwR((uHnTvkc6hJKy@8z2s*hadyvqF5%*A7DhogUQiylA32TBzQ=A{@ngXoOHp|d#r z2<-*Jxq(#!MazCDWe)RoUxe{PXv!mppU!#&-zJE6Tfr$wgeeZ~W5KJE zy^-R)pzkn-GJ*Vl<4Mr3#fe;;yeFAAP*989@tlQ^lVN9n$ZY4atC4l)^Ecbjbr{{} z*?c}Xm5cst@MVfFo#@H~2cfVn@cuHA6V_b9x;BZ?2SD+}-ka!K%lim~)%R{}FJ$)$$yBNO+NSa!5yA8D^8qoJkgVBUlu+B1A zJc{qCW!nwxtC!su(Q_Qh-C%owbLp_S1tz0$=l~zs$!2S1%R||f3E_LtnJf1!g|+za zk#7pkGV38LIhF-p9tp|V{z6O=h9AQg3_$S;LCNs8LHM50Y0ftYp&lh#SKEj_H`C=)C>qJk5?9p?}p2UGFF?g7~o`%o$y7#vz>_9l~>nZBn zeuBN*1@3Dw+XkLvM#mlUgiw5GoOu&|xT&3|fS#4ix`73n(j#jiL}7nVA4N zRxs^`ehNx&(#|#zo&~0B?9Ed)xs8WfF>;j+=_oW_xJsGnIS>pVX@f5uzmgSt9Dh8l zxXXu+(~OzxD72R;!QFm}DXYVQJ<^+N+)iA4J(>K@ywA_H+JLr!^@?Zv3NS`Nk zl1g?2-VkthSaFDS-cz==?YwZW#Gy^xdYE^dQ@@RdpCsm`=*m+#SRwjO!!OD3=`!zr z$byg5wrA?`({avh^6JUqeWLxMYNARt@LF_jj_Oh~`!zoK+TdF$O&G=0$;6SJU{40; zYVfo`*9#c9%^}K`Cr?u3(;bW?tH)0vq4iVyjkcZG^9oH{(6Lgq>ok4OjlRQR-iGc{ zaGu5abL2w<|1Rx#yc~%}uL}KjWSqhnL9=_Ha|>7~*x`ZHNpZ&|yhj70Hzel~Zd=X# zC$)Y#X)b|z4#Us;VB~=aCd=cO6CBl2_Zi{JhIa;G0{&aG;oD0-P8#wlPEaMen)(<7 zn^SCenC}WMROmwSNG4zK5c;<8h1H2YE7))gbT<=}85=sw0?lmZNR0KMG;-hYEArE- zK)P=BxeCyIhm3US%!jE>Fq1^?2_*D`KDzNVGuKW=F3u07$-x-xCcHc!9cSdO&2smH z*pc1xY?J)u20D`r?^;w-HKc;@-ur4tGylC&{N*5cpE74ztnHM+{6cSk$)=F`PQ*;^ zF!*!hLP`3Lmr^7{FEI(^E&iy7w`2otK6;<1f$n+(AB1->Ove z4wd#9{9Xbx2Uwt1*jss5o5l#{%UUBF-lnmfhMx|@r*i4X2jZiEk^ExQZ821?wk7k9 zy*#W@4=^4~1H$$!bSUJ@PKqYUh42dYtyxRabS*R zw{U_S?pNXCR#(U8yOu{T{YmjEDh9w^M%8Q_m&}2U3(rH&TozIo9PjXL#hP+!@O{<5=IJ=(i;}#Bpd>v^h^@Zy{e9 ze!iP*s};T?ReP)YV@l%i4(7`do><;Vmj4ql^r&Ng*4|vl&ST=*-uW-4Muv&a0w}G~KI;x1#^F=x>z1UV;96 zbZ+1-3aZx$bD`uZ#hxNn#E`BSP6>Efaj*9j^Y)7{^qg3m^{g%#u4lt%xT#JxRm^6S z`P&v{WqLO-OA79X-eTb`S9KQ~hbTCm{GYYVv4{8O@i7^PFBr&E{Nbu$suFv%WOGyW zWL3;BNy5`CEtEpvMzxnvQ(&V;D>19Xr_kV`fX>Us~aZ>wDaL zqJBwE9WI9MYy5`?`qBI9;QsaQ27R!OEfmTTm3AygkXQ59Y*^R@cj>bNP4_j?b3uxf z#COzXkVDm1ZRp#s8`QAwyi{+!ep+w%VHY>8T>ZI?btRxDiA|k|vL@^M_ozGSbs-A# zG#cy)CIiK(^`?=#Q4>xC+jfj-V=X+!aZGD(!Km1wvkAX9=?J(RIsm~+t!@VaG?Qy|u2Zq$`w&c%dT)z2 zm-RiBspdvw_XeYE5+sks@Z#6PFBPEG)^qnrV+{%DFfL{z0=!re4@P6I;Za>1*}siDKn&bN738VH`QC7 zm6mGhVAWDX_{IuD3`{r^rX=3dmHqvr<|B7=s8ZiOE&72 z_Zdh_&!dR(IC(%h8NrF{Bqa(NyK#g=BcL{}v@{vY&KT3e=rG863*C6{TMwzO&- zj?%o8`Ne7DU=8)Er}`>tTN!te@+`9dn1f#A(!7>eCyq*%S5ixYH5X)UKGArzUS$`KN*dZP}V9fTEEn{ zvMx&R%4!*90jp>ozVlxJwefw0zVjoEYl-F@6s}Unp#EdFaZ6NIdS9NglFB0v17$8+ zganGAUVbZ@R#gw{mT0S2r^PDmsAOf8(r9Ggxjkx$sygaLpKS!jDTA9iBHC*OziXj(qw40W9$@dj9(wvk%xm<@h zhG-=~qgHy#Q!D&|5VN$83YPd`|lcV)E7Qxb8QvSYvV+46n) zZTdc2=xHsKdFn~}NhFz+wMjB6?JN6ic_qK^aYed)=K`X(T3KzSrD**!&&x{^<$F)j zR96|rpF7~YMEs|DFZ0?TvLgPEHH==`0dZPo_b=~drB`L=DLnRFTI4OwN}+F&NF(lv zT3Rh-U6#k6L^Dx1;`>~dOa7dJvQ`|FQT~~ya8EYne$R>e#|kaag4+J4(&aT&q|tKy zWghwdq}=n2xkA}T|3o$IcL}GIFVk3=r!ueaCCgM-xORC*{Q34W37 z-@O>8RxQb$?|Vxby+X@niYXkToTke%Y`J8a^Zt}d%2<|ZugD8!)C!I0T=^sQ=RB2G z{+Z6pJ6{dPf7D;zL(2J1T)6c2|3_jj)us=im+0~5%$H=yKaJoYa)9`hQ*EW@pL?oo z&3y8Ie3g*AV%>&HwKgq7uQ$e~<;Id!RnExhcs1>T?Z*&O^3pO9YE7)@6vBooC0h~r zl1wjU?|Wj5U$JiALmDn^zB0D>-~Fe3bWeVJ=-)OhZFUm>+s{&|o(>8cZd`Ijvn;FC zY1viHN=vmSZQ45OBb#2zc|ZD}Tb0Ihb}w~8t7oKf?R!qtr)Css7n@x5M5&=XAsjJ@ zq6VdnXc}1g(s<9LWmD6pr5?&Qf8O~&7Z#nN=2xd>tk|&qd>VB_>2+y&%3Czx6iTG5 zMyNBzDmUfYPP5cUD+i1u;*zV{lx9;hSFT%CLgQW9|rH9jnmqfvG$tuMEHa`+rR+ zTlL%M|8WRGqmMGuENCbjO4RgUY;xM_yxj`9Y0$5fp)1r<{xPT`dZn#Xp10F9Wi^8* zrt&6Jd0F+}{{DY%FTF%Nm9 zC6jt0IxEiz@#zYmZ7)^J%6X*>+DNl3ZdjTlwR-T$_mnaQg=2`c3e`7MD+Q!BQU_Xn z+Uh!!vB|VgX|gQyzyGiQ?eV_*3fE9`u?Xc4l?fMJQMz1O8Kte|#PQ|HEf22FL=Dl% za*K$m%3}ZR|1z2OC>4o6?wJY|(xk1fGBFzEQbS7r>S~i-VZk!vfBxNMk5+3HK2|2L zOr_2gt<>CpLZNF}*8h0ln<3rCu&AQ#)n3(PfgPtS+K4rRAkWB@%u3%A?*PHHax7RcDjS_y?*muIf=!X2);6vMn?~4TfeF2e zB5Q1SB_m4(dji-KmwqIKfqkvszK=v7i4|_Y2=?1cDLws$NMf1l?}P92S)eG%mPy*4 zO~gB&3VUi9`}>=pZzfujYh(ZZ-)3%x?s}fqbk~pFvKS{0&!1XIS#64aUozP^-TGUT zX`T5*nfkwN8m*w8b8+kcb|DK)+>{CCeP~$=<|`DBk=cNkt&hngVn1xV5N$b)vgMX4 z+R}uw6)Gi18?1D4NO7+IT!HsEK4kcaLIxglY}ApxdxX9wH`So+p3DiS)mVRLP6iaZKMs@bfBT=63N;M zXcPbYBkXPcpHi^zz~V-9mPp)LCaIkJQ8)O8_AgF%$+I7?GsDC<3VM4>(IR^7u{P8%w5RQ zy)y+VxP`Dts=F^0-Bna}gv#pZUQc-!w9I{3aQAfy-Hj*+^<(Y_l>dbKYNhvH6ru+a zJzPQ$2|bS*nMW%zkHLtZSW3ss1S(KEjiF~nHhQuty+%!+OCLbbHZ6LJQqe{Ag)sgamZZ$w`VrQ@h9*+idx zW*g9#TZg`l6cxHzLSKOjecMyfw~MY)D&I#h97OJ`;@nq5X<|GdExwN!&(}cDR~Y)P zQ^PkYeV6Jt)18>l_aqyAFOBHO+1n{3PME@mvzD{MgsO&bSiQ)XjaQ;W+#ca(+ z|4T&wYaInNW>D-c;lqi72T~=ZcvlRpqVMzqMHG3t2kA#RWD(fMMBtFXK#djyb(DXa z^6O;`Tqr~eg~Px#6$Wk+C{0uj+@-6Do*z)17OL|kh6P?^vmkMHP%g({lo5k*xfo2M zNN(ydn4!X8b}DvsvQV;&p>!(C zq;xi=b11zwSA@1Q3>8t`VnJU5Q`sIWBNhwor}P0zS5dl#(#Nt{=(GVt7pUzk8!>bz z2}8}4ZlUt0bbmqpyrRH6pi5eTVNEKAi2&g^ErydQy+Wq%M(E1U#c-~K;k7agucxvt zh~WYqh6@>ncStNu1PSk@bXf_8iQB@5D1G=WhHL4a6V&!;dgp8mvfa}3iM z!q4dWwGks+ixCxt-fECV^nyjA=pIY)9SMjL+SZXYdZw{NGAW%yUr(+}!$>|;q6B!P zK$0Ux5=Kb0MD}SJ#e`twh~V@U5k~4bkDQFc$T@1~0_9(nS>y_}e}nqFOZA(n-G|if z<5Y~ipy$_GZ0AO7SJ7Q3)6W->%QS}436z(@usx0Zfh#DTMR}{~o=5i$bl*((?R4MC zRqcDy=o@W%w_33FqsZHjQyZr#eO86-4fK48o=L>C-$K@Yo7%fqi0!o9+uJy{zm~8A zjo3jyYtcbJzSUvO#*P?zPUNg3g|75X*s(ehJJ$Zc6t2F*~MFM+{?wfC^OY)|LdTcHfk^@4ej*yE`AZw%*oz^W5DbN)i=C zB&h_Ej0_6E`cW+l^Eaj8q+f)WB6p9TbUF z%0G2@INwNMEKVIqWD*}PpJMSQHQ`y1sT6)H%|3MrcmsAZAD1Ca-=lMzM^YjRzFwgT;hbkhhw=b%Zxt^1(KZ2fGOS zNTY^6IG%rOeykrx#jZ3=yFz^GSU7%v@zFT^|r83951fSMc znbUck<3i>l9+&YsyzPYdKxSTd$wwG29t5r2dg_Ci@WcFZlOuKDGZkex4E^ zfS;rOZU=sz_YYg}^OFCYj{n%=gO9I+O!49V-{Zgb`NYu``13LL`RCO>oc~Y!_jzC7 zs2Kc(x$9r%$DNnIcm;l$z%tyzFC)LfFJS@rWpdo^VSim2Ki~haq5N9dUxxeqM$NAb(ydy#Q|IO!v_c8uwsSjh~tpDBYyL(`IIDS2O z`=t7Hn`ym(UoQc_Ua_oSuLk2+=9O81&a$-1qSMJ@K9w~H{#iq$%8DR7o@El;SyRbd z24pd`XRWf4MF*EfJI~t0wp-bj(Jt$-&{@%1WSwC>I@c`bGg+5lXZ;}UYzSog1KG5_ z><~XIdm!nKLejs#yun_r!NgE1Jez-tB{bBwB;*0&P{8i+y zLqPs!q4M{UcbL3r(vB16b>-7o@_%5tM);=if1==d5+d+qqAj0Hv&EBH2zxS@_;!dV zJE5QK(dx+&g(s&h>j{0^lS`yuAw5Q`0wGYqYbpqUE(n4w7=&R3LtS=3loACCELp(J ztYD=?0sV8qI@VdwHrv@|FY*1veS~>k1t*E0W;u({07#DD1)$3WYT2!b_xG1q!bTU3f#QA`N#@Kj@;7 z@Dy>*il|RTD~Ycb{zdDBD&jbc_6t!I4OPVJDf*85bJ8lhXp5p4DT;1F6a(&JOQ4v} ztazBTio>)l9%G|;q7ucE{YCL~iQ=!wn+07wSF7Tsm|e{DxA>-#CCuMTxOrF-2vHIQ zUD98x66$?PIExnnC1ZptnMQaPLQ5$7k_|w~CM`;~1)zkoD%sECgS&*|EV<$eDT#r8 z8UXQ>Yk;SN2oJIBrySeUaRN`5lg6<P(*8=7 zQm&;;EK5g2mqtRCPGOxH0;NnWOXpcu=|ZhaX?LY-Tmwrtl758rqe7P+x2@81#HkCV z)P>R*Z9Nkb&lqx^`9nYJrx!gNB=BrA@vWA8wv+sQBiI-c5ZzH~w zb*a-Yj}bpX{4{Ycqh7`!@Z}9@zX}j|Mc?|0bM|V8R<9`gSCI&LH37q3%_EKdyxPsO zkMKeAPY~v^=+y<-uP!O|>PLZc<`LyKba{YAId8I+4~DyZ81c#Qlz&A&ZKHf6aR$lq z-BOj)2b9wXl+y>4AJ?kY|#mNfd6*ErA4E?GTAt7`g=>UjvRrtVj-gS&b&kJQU*`o-$+2%i`J)%4pn0--fZpk@S66K+{G zqqL|QXX%yHJ~f>4n(IKVl&V$>)b@j@4Ti2A zV2!Tj;-;3X>DndIs$JnHYu6H|F4b-%zExYbOt@;g{?F^meQEzCA4Pj(Yo!diyRwh<5|9=-nWA-fhOfcW0p9 zGcR~g-|?Ql<9$Ei{XiM^KGe0~{Y(sePrp@1zg0)M)zNp>^%rC7h6vR0TI-e&U#?Z% zI)yswMjdsdZZ}Xzov-7y*6~{Fc&&A(i8BwW`=0m}t?FG6_1wd%=lSaULDmn1svn|I zAEspeC@t&9TBxV~)K4aV8tZdwqn_uh=lSY+zWTLQTc$=!Q_BAx!9ok;EB`8YYl7*|HmE3N$PvzL@wjtr{r* zhK;PdnRT}Yxf>3WPJL>KVIBIqh94mtHB=*gN+bJjq>eTY)~YdFsKzmbCjyN#q-tcp zjkKf2g`_Xh-p19$Pmp(t_!(O^Ub00abAiU20w0vHKG+f;s23lo7ashHO&eTx z6Jt@+ez=?Hi<+p*O+P|>6wn`)@c-Bko{ymdA7_yE6=}1D__zq_<5IXkGN<{ti~NJ+ zUBjf0lxg!sf#&HD%~4V|&zAnp9AooJ7W%2?wFqe5L_T9jGxLmQpH|H$iJ!A&Gh=%5 z4+_oK$-4>N0NHuSYEN69;(bPIiL3&+_KqtJ5GU$#ntR_b{x^{%y_R;`SY ztsVrl(w1AtN!7|RwQ@|YwBy!UIoMB8x-ZKrLk?HtQx@)$4M7%$ryFWVU} z+k=&EcSE)hgK7_hXdlfI33oeVLOb=meX+FKm)lnR8shXb?TlINTiBL!*3LYkojTIa zT&(@9Q0?d8X{SwfFm`qfl2*r1KhZH#s*VWQ9pjbih=RLgu23E8$lt`W6}n@GRvib~ z<|slsjze`&E*+FhCqH)HDYfbhfV;ClbmwSzIw|)~#<))EPUl+7?%YgxHw)u%=RpK? z9wVRrqm%xl^NRL%(dTtV09|7&t81K%uBi%LGg!D6(ltk`F5aW)S`N|0SkuKktZM_| zZ3yYw32zt2^ojo96Z6qeAzFPJf`OmHpgzrj`_mjmd|FFBH)TFCSO0XuPky>CR5#ZU z-5R=k0FTVCyP2nh|d!Gv)1Y}W9H{U#6yV>BOXC`Jc2(@B2NAKyo~Tl zp+0YAJ<9m=UeXV+-f_aryFZ^t;OFn*{X!r8g>Ao#h5j;Lt1mMU{ACUTzHqJfg>(F6 z3+dZQKLGa^>dF_|*_R&?+AAP>hp~)+?j5PoJKiOGCla5^GJ~|4kiA?h^>VYamvi3B zIqzMoy}etAb4}cPMXKJbTJRhZ7GYK8pBw;qIFXZ{IS~4+DMC zLiaJR?V}y`F)!|8UfjnulDQ=z%q^~H%q>p2xy3m*w}!xDZiR76<G2dYo$5OEI)KwF|m{sDxcB(M!nD|2uEt)cjKTRRVGc7mqoM#jNgTuJSiAoS;Bxtrs zU=m{zf-TD=46tmI;G83Y0pBDW*{uca~A6cbxwC zHZOnnv+W%p+wz7b%$*Co+&kZM(07<)8NNp|(D3~rui@V{2y>UVZ|*K)&v%!y-rdz~ zd)Jv6et?5N^w{R^4u`Q{^2g_r=B_j6caJ$gCmrq?YqYt`mA&B?wuHGioV0t~G&1+b zIW#T}4WIv)=3W$gx#yU{z4;Dfsl!4cOY&jnI!sklXTXpe1S@sbc3{Hi6E1#h$b@|Fv%WP;eABgB#%_2O>j^y zp-gg=Lz_imCo?NBd?AlC-qJJ4>)3rVcMMGOCZ`w2E|VR7NoMpi$p@V($EcXe&J`q| zcNiDx6!>O}GW-+~ObT~!ObWMfOiB>Pmg2}D#gRdZBZCw#drle8o>L|{j2TXqnH*Ni nLWkjaniMXpObTP2Nm)(%NLlan>_{VJhr@8xEQPCVlM?;^t0B9v diff --git a/resources/js/pdfjs/cmaps/UniKS-UTF16-V.bcmap b/resources/js/pdfjs/cmaps/UniKS-UTF16-V.bcmap deleted file mode 100644 index 075efb7054901b1022af68e723647769cbe1d556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt9jqG~;$~>3>*2_)AhxfT zk9~fwLi5~Q1}+vx1|1$o21W)s^F|h%M0N#X#(mZEa~StkuyXEaWMbS`-#oX7aX+sB L>wZCNru|X?)N3(k diff --git a/resources/js/pdfjs/cmaps/UniKS-UTF32-H.bcmap b/resources/js/pdfjs/cmaps/UniKS-UTF32-H.bcmap deleted file mode 100644 index 769d2142c03b10680800b3b6ae883e27fe04c5a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26451 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 diff --git a/resources/js/pdfjs/cmaps/UniKS-UTF32-V.bcmap b/resources/js/pdfjs/cmaps/UniKS-UTF32-V.bcmap deleted file mode 100644 index bdab208b69d287128195eccbd084c8cf4ca658c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt9jqG~;%025>*37Jz@Q+u zua=K}ey&3E+*}4O7Dfgg9!3U6208Oa7Mo;tpu8~SzUuiojQc8BIrlR%G488xo?FDY OpI3l&zo0eKeklND@-b-u diff --git a/resources/js/pdfjs/cmaps/UniKS-UTF8-H.bcmap b/resources/js/pdfjs/cmaps/UniKS-UTF8-H.bcmap deleted file mode 100644 index 6ff8674af772af896d7d33c7addc37c57822f8a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27790 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

      UjdU>!C<8eSfmt; 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 XDie!M@tP=Qo=5R?GKGx`n-c&3T8mO+ diff --git a/resources/js/pdfjs/cmaps/UniKS-UTF8-V.bcmap b/resources/js/pdfjs/cmaps/UniKS-UTF8-V.bcmap deleted file mode 100644 index 8dfa76a58eb720dd1992c2cc9abf1dd4b39c5a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl9jqG~;%1@i;l%x@VcNc0 zKKADSxe6P;=Q41yFf!=yFfuSQG{%{?u-GKAKWdoFxUahTe-7im3Rcejj7*IC>Nk8Z RV%*Owz`9?sv6^YW6ad@#ITio_ diff --git a/resources/js/pdfjs/cmaps/V.bcmap b/resources/js/pdfjs/cmaps/V.bcmap deleted file mode 100644 index fdec9906621904180f42bd5c91f377397fd6cf95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=#j{(sKmI}pOXoN*Dkx{jjaUT-^bqy(L diff --git a/resources/js/pdfjs/cmaps/WP-Symbol.bcmap b/resources/js/pdfjs/cmaps/WP-Symbol.bcmap deleted file mode 100644 index 46729bbf30f3b2f176492d907fb8ca3f6a1e3026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmW;C-wMG{90&04*(h8{xuKNv0%qLpa><2~3lnNLW=^QFb+%;wBoDUVIgjE|#O#wbv3o&3S`2gr-Jo93r6xVAssnXnw1B!ZT0%WQ!k{%%Po}{NAH@>d0EGtm W&}LiN6j32_>FyT<6+0XN diff --git a/resources/js/pdfjs/pdf.js b/resources/js/pdfjs/pdf.js deleted file mode 100644 index e662f08012da..000000000000 --- a/resources/js/pdfjs/pdf.js +++ /dev/null @@ -1,16424 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * JavaScript code in this page - * - * Copyright 2022 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", [], factory); - else if(typeof exports === 'object') - exports["pdfjs-dist/build/pdf"] = factory(); - else - root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); -})(this, () => { -return /******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ([ -/* 0 */, -/* 1 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; -exports.arrayByteLength = arrayByteLength; -exports.arraysToBytes = arraysToBytes; -exports.assert = assert; -exports.bytesToString = bytesToString; -exports.createPromiseCapability = createPromiseCapability; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; -exports.escapeString = escapeString; -exports.getModificationDate = getModificationDate; -exports.getVerbosityLevel = getVerbosityLevel; -exports.info = info; -exports.isArrayBuffer = isArrayBuffer; -exports.isArrayEqual = isArrayEqual; -exports.isAscii = isAscii; -exports.objectFromMap = objectFromMap; -exports.objectSize = objectSize; -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; - -__w_pdfjs_require__(2); - -const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; -exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; -exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -const RenderingIntentFlag = { - ANY: 0x01, - DISPLAY: 0x02, - PRINT: 0x04, - ANNOTATIONS_FORMS: 0x10, - ANNOTATIONS_STORAGE: 0x20, - ANNOTATIONS_DISABLE: 0x40, - OPLIST: 0x100 -}; -exports.RenderingIntentFlag = RenderingIntentFlag; -const AnnotationMode = { - DISABLE: 0, - ENABLE: 1, - ENABLE_FORMS: 2, - ENABLE_STORAGE: 3 -}; -exports.AnnotationMode = AnnotationMode; -const PermissionFlag = { - PRINT: 0x04, - MODIFY_CONTENTS: 0x08, - COPY: 0x10, - MODIFY_ANNOTATIONS: 0x20, - FILL_INTERACTIVE_FORMS: 0x100, - COPY_FOR_ACCESSIBILITY: 0x200, - ASSEMBLE: 0x400, - PRINT_HIGH_QUALITY: 0x800 -}; -exports.PermissionFlag = PermissionFlag; -const TextRenderingMode = { - FILL: 0, - STROKE: 1, - FILL_STROKE: 2, - INVISIBLE: 3, - FILL_ADD_TO_PATH: 4, - STROKE_ADD_TO_PATH: 5, - FILL_STROKE_ADD_TO_PATH: 6, - ADD_TO_PATH: 7, - FILL_STROKE_MASK: 3, - ADD_TO_PATH_FLAG: 4 -}; -exports.TextRenderingMode = TextRenderingMode; -const ImageKind = { - GRAYSCALE_1BPP: 1, - RGB_24BPP: 2, - RGBA_32BPP: 3 -}; -exports.ImageKind = ImageKind; -const AnnotationType = { - TEXT: 1, - LINK: 2, - FREETEXT: 3, - LINE: 4, - SQUARE: 5, - CIRCLE: 6, - POLYGON: 7, - POLYLINE: 8, - HIGHLIGHT: 9, - UNDERLINE: 10, - SQUIGGLY: 11, - STRIKEOUT: 12, - STAMP: 13, - CARET: 14, - INK: 15, - POPUP: 16, - FILEATTACHMENT: 17, - SOUND: 18, - MOVIE: 19, - WIDGET: 20, - SCREEN: 21, - PRINTERMARK: 22, - TRAPNET: 23, - WATERMARK: 24, - THREED: 25, - REDACT: 26 -}; -exports.AnnotationType = AnnotationType; -const AnnotationStateModelType = { - MARKED: "Marked", - REVIEW: "Review" -}; -exports.AnnotationStateModelType = AnnotationStateModelType; -const AnnotationMarkedState = { - MARKED: "Marked", - UNMARKED: "Unmarked" -}; -exports.AnnotationMarkedState = AnnotationMarkedState; -const AnnotationReviewState = { - ACCEPTED: "Accepted", - REJECTED: "Rejected", - CANCELLED: "Cancelled", - COMPLETED: "Completed", - NONE: "None" -}; -exports.AnnotationReviewState = AnnotationReviewState; -const AnnotationReplyType = { - GROUP: "Group", - REPLY: "R" -}; -exports.AnnotationReplyType = AnnotationReplyType; -const AnnotationFlag = { - INVISIBLE: 0x01, - HIDDEN: 0x02, - PRINT: 0x04, - NOZOOM: 0x08, - NOROTATE: 0x10, - NOVIEW: 0x20, - READONLY: 0x40, - LOCKED: 0x80, - TOGGLENOVIEW: 0x100, - LOCKEDCONTENTS: 0x200 -}; -exports.AnnotationFlag = AnnotationFlag; -const AnnotationFieldFlag = { - READONLY: 0x0000001, - REQUIRED: 0x0000002, - NOEXPORT: 0x0000004, - MULTILINE: 0x0001000, - PASSWORD: 0x0002000, - NOTOGGLETOOFF: 0x0004000, - RADIO: 0x0008000, - PUSHBUTTON: 0x0010000, - COMBO: 0x0020000, - EDIT: 0x0040000, - SORT: 0x0080000, - FILESELECT: 0x0100000, - MULTISELECT: 0x0200000, - DONOTSPELLCHECK: 0x0400000, - DONOTSCROLL: 0x0800000, - COMB: 0x1000000, - RICHTEXT: 0x2000000, - RADIOSINUNISON: 0x2000000, - COMMITONSELCHANGE: 0x4000000 -}; -exports.AnnotationFieldFlag = AnnotationFieldFlag; -const AnnotationBorderStyleType = { - SOLID: 1, - DASHED: 2, - BEVELED: 3, - INSET: 4, - 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", - LZW: "LZW", - DCT: "DCT", - JPX: "JPX", - JBIG: "JBIG", - A85: "A85", - AHX: "AHX", - CCF: "CCF", - RLX: "RLX" -}; -exports.StreamType = StreamType; -const FontType = { - UNKNOWN: "UNKNOWN", - TYPE1: "TYPE1", - TYPE1STANDARD: "TYPE1STANDARD", - TYPE1C: "TYPE1C", - CIDFONTTYPE0: "CIDFONTTYPE0", - CIDFONTTYPE0C: "CIDFONTTYPE0C", - TRUETYPE: "TRUETYPE", - CIDFONTTYPE2: "CIDFONTTYPE2", - TYPE3: "TYPE3", - OPENTYPE: "OPENTYPE", - TYPE0: "TYPE0", - MMTYPE1: "MMTYPE1" -}; -exports.FontType = FontType; -const VerbosityLevel = { - ERRORS: 0, - WARNINGS: 1, - INFOS: 5 -}; -exports.VerbosityLevel = VerbosityLevel; -const CMapCompressionType = { - NONE: 0, - BINARY: 1, - STREAM: 2 -}; -exports.CMapCompressionType = CMapCompressionType; -const OPS = { - dependency: 1, - setLineWidth: 2, - setLineCap: 3, - setLineJoin: 4, - setMiterLimit: 5, - setDash: 6, - setRenderingIntent: 7, - setFlatness: 8, - setGState: 9, - save: 10, - restore: 11, - transform: 12, - moveTo: 13, - lineTo: 14, - curveTo: 15, - curveTo2: 16, - curveTo3: 17, - closePath: 18, - rectangle: 19, - stroke: 20, - closeStroke: 21, - fill: 22, - eoFill: 23, - fillStroke: 24, - eoFillStroke: 25, - closeFillStroke: 26, - closeEOFillStroke: 27, - endPath: 28, - clip: 29, - eoClip: 30, - beginText: 31, - endText: 32, - setCharSpacing: 33, - setWordSpacing: 34, - setHScale: 35, - setLeading: 36, - setFont: 37, - setTextRenderingMode: 38, - setTextRise: 39, - moveText: 40, - setLeadingMoveText: 41, - setTextMatrix: 42, - nextLine: 43, - showText: 44, - showSpacedText: 45, - nextLineShowText: 46, - nextLineSetSpacingShowText: 47, - setCharWidth: 48, - setCharWidthAndBounds: 49, - setStrokeColorSpace: 50, - setFillColorSpace: 51, - setStrokeColor: 52, - setStrokeColorN: 53, - setFillColor: 54, - setFillColorN: 55, - setStrokeGray: 56, - setFillGray: 57, - setStrokeRGBColor: 58, - setFillRGBColor: 59, - setStrokeCMYKColor: 60, - setFillCMYKColor: 61, - shadingFill: 62, - beginInlineImage: 63, - beginImageData: 64, - endInlineImage: 65, - paintXObject: 66, - markPoint: 67, - markPointProps: 68, - beginMarkedContent: 69, - beginMarkedContentProps: 70, - endMarkedContent: 71, - beginCompat: 72, - endCompat: 73, - paintFormXObjectBegin: 74, - paintFormXObjectEnd: 75, - beginGroup: 76, - endGroup: 77, - beginAnnotations: 78, - endAnnotations: 79, - beginAnnotation: 80, - endAnnotation: 81, - paintJpegXObject: 82, - paintImageMaskXObject: 83, - paintImageMaskXObjectGroup: 84, - paintImageXObject: 85, - paintInlineImageXObject: 86, - paintInlineImageXObjectGroup: 87, - paintImageXObjectRepeat: 88, - paintImageMaskXObjectRepeat: 89, - paintSolidColorImageMask: 90, - constructPath: 91 -}; -exports.OPS = OPS; -const UNSUPPORTED_FEATURES = { - unknown: "unknown", - forms: "forms", - javaScript: "javaScript", - signatures: "signatures", - smask: "smask", - shadingPattern: "shadingPattern", - font: "font", - errorTilingPattern: "errorTilingPattern", - errorExtGState: "errorExtGState", - errorXObject: "errorXObject", - errorFontLoadType3: "errorFontLoadType3", - errorFontState: "errorFontState", - errorFontMissing: "errorFontMissing", - errorFontTranslate: "errorFontTranslate", - errorColorSpace: "errorColorSpace", - errorOperatorList: "errorOperatorList", - errorFontToUnicode: "errorFontToUnicode", - errorFontLoadNative: "errorFontLoadNative", - errorFontBuildPath: "errorFontBuildPath", - errorFontGetPath: "errorFontGetPath", - errorMarkedContent: "errorMarkedContent", - errorContentSubStream: "errorContentSubStream" -}; -exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -const PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; -exports.PasswordResponses = PasswordResponses; -let verbosity = VerbosityLevel.WARNINGS; - -function setVerbosityLevel(level) { - if (Number.isInteger(level)) { - verbosity = level; - } -} - -function getVerbosityLevel() { - return verbosity; -} - -function info(msg) { - if (verbosity >= VerbosityLevel.INFOS) { - console.log(`Info: ${msg}`); - } -} - -function warn(msg) { - if (verbosity >= VerbosityLevel.WARNINGS) { - console.log(`Warning: ${msg}`); - } -} - -function unreachable(msg) { - throw new Error(msg); -} - -function assert(cond, msg) { - if (!cond) { - unreachable(msg); - } -} - -function _isValidProtocol(url) { - if (!url) { - return false; - } - - switch (url.protocol) { - case "http:": - case "https:": - case "ftp:": - case "mailto:": - case "tel:": - return true; - - default: - return false; - } -} - -function createValidAbsoluteUrl(url, baseUrl = null, options = null) { - if (!url) { - return null; - } - - try { - if (options && typeof url === "string") { - if (options.addDefaultProtocol && url.startsWith("www.")) { - const dots = url.match(/\./g); - - if (dots && dots.length >= 2) { - url = `http://${url}`; - } - } - - if (options.tryConvertEncoding) { - try { - url = stringToUTF8String(url); - } catch (ex) {} - } - } - - const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); - - if (_isValidProtocol(absoluteUrl)) { - return absoluteUrl; - } - } catch (ex) {} - - return null; -} - -function shadow(obj, prop, value) { - Object.defineProperty(obj, prop, { - value, - enumerable: true, - configurable: true, - writable: false - }); - return value; -} - -const BaseException = function BaseExceptionClosure() { - function BaseException(message, name) { - if (this.constructor === BaseException) { - unreachable("Cannot initialize BaseException."); - } - - this.message = message; - this.name = name; - } - - BaseException.prototype = new Error(); - BaseException.constructor = BaseException; - return BaseException; -}(); - -exports.BaseException = BaseException; - -class PasswordException extends BaseException { - constructor(msg, code) { - super(msg, "PasswordException"); - this.code = code; - } - -} - -exports.PasswordException = PasswordException; - -class UnknownErrorException extends BaseException { - constructor(msg, details) { - super(msg, "UnknownErrorException"); - this.details = details; - } - -} - -exports.UnknownErrorException = UnknownErrorException; - -class InvalidPDFException extends BaseException { - constructor(msg) { - super(msg, "InvalidPDFException"); - } - -} - -exports.InvalidPDFException = InvalidPDFException; - -class MissingPDFException extends BaseException { - constructor(msg) { - super(msg, "MissingPDFException"); - } - -} - -exports.MissingPDFException = MissingPDFException; - -class UnexpectedResponseException extends BaseException { - constructor(msg, status) { - super(msg, "UnexpectedResponseException"); - this.status = status; - } - -} - -exports.UnexpectedResponseException = UnexpectedResponseException; - -class FormatError extends BaseException { - constructor(msg) { - super(msg, "FormatError"); - } - -} - -exports.FormatError = FormatError; - -class AbortException extends BaseException { - constructor(msg) { - super(msg, "AbortException"); - } - -} - -exports.AbortException = AbortException; - -function bytesToString(bytes) { - if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { - unreachable("Invalid argument for bytesToString"); - } - - const length = bytes.length; - const MAX_ARGUMENT_COUNT = 8192; - - if (length < MAX_ARGUMENT_COUNT) { - return String.fromCharCode.apply(null, bytes); - } - - const strBuf = []; - - for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - const chunk = bytes.subarray(i, chunkEnd); - strBuf.push(String.fromCharCode.apply(null, chunk)); - } - - return strBuf.join(""); -} - -function stringToBytes(str) { - if (typeof str !== "string") { - unreachable("Invalid argument for stringToBytes"); - } - - const length = str.length; - const bytes = new Uint8Array(length); - - for (let i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xff; - } - - return bytes; -} - -function arrayByteLength(arr) { - if (arr.length !== undefined) { - return arr.length; - } - - if (arr.byteLength !== undefined) { - return arr.byteLength; - } - - unreachable("Invalid argument for arrayByteLength"); -} - -function arraysToBytes(arr) { - const length = arr.length; - - if (length === 1 && arr[0] instanceof Uint8Array) { - return arr[0]; - } - - let resultLength = 0; - - for (let i = 0; i < length; i++) { - resultLength += arrayByteLength(arr[i]); - } - - let pos = 0; - const data = new Uint8Array(resultLength); - - for (let i = 0; i < length; i++) { - let item = arr[i]; - - if (!(item instanceof Uint8Array)) { - if (typeof item === "string") { - item = stringToBytes(item); - } else { - item = new Uint8Array(item); - } - } - - const itemLength = item.byteLength; - data.set(item, pos); - pos += itemLength; - } - - return data; -} - -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 objectFromMap(map) { - const obj = Object.create(null); - - for (const [key, value] of map) { - obj[key] = value; - } - - return obj; -} - -function isLittleEndian() { - const buffer8 = new Uint8Array(4); - buffer8[0] = 1; - const view32 = new Uint32Array(buffer8.buffer, 0, 1); - return view32[0] === 1; -} - -function isEvalSupported() { - try { - new Function(""); - return true; - } catch (e) { - return false; - } -} - -class FeatureTest { - static get isLittleEndian() { - return shadow(this, "isLittleEndian", isLittleEndian()); - } - - static get isEvalSupported() { - return shadow(this, "isEvalSupported", isEvalSupported()); - } - - static get isOffscreenCanvasSupported() { - return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); - } - -} - -exports.FeatureTest = FeatureTest; -const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); - -class Util { - static makeHexColor(r, g, b) { - return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; - } - - static scaleMinMax(transform, minMax) { - let temp; - - if (transform[0]) { - if (transform[0] < 0) { - temp = minMax[0]; - minMax[0] = minMax[1]; - minMax[1] = temp; - } - - minMax[0] *= transform[0]; - minMax[1] *= transform[0]; - - if (transform[3] < 0) { - temp = minMax[2]; - minMax[2] = minMax[3]; - minMax[3] = temp; - } - - minMax[2] *= transform[3]; - minMax[3] *= transform[3]; - } else { - temp = minMax[0]; - minMax[0] = minMax[2]; - minMax[2] = temp; - temp = minMax[1]; - minMax[1] = minMax[3]; - minMax[3] = temp; - - if (transform[1] < 0) { - temp = minMax[2]; - minMax[2] = minMax[3]; - minMax[3] = temp; - } - - minMax[2] *= transform[1]; - minMax[3] *= transform[1]; - - if (transform[2] < 0) { - temp = minMax[0]; - minMax[0] = minMax[1]; - minMax[1] = temp; - } - - minMax[0] *= transform[2]; - minMax[1] *= transform[2]; - } - - minMax[0] += transform[4]; - minMax[1] += transform[4]; - minMax[2] += transform[5]; - minMax[3] += transform[5]; - } - - static transform(m1, m2) { - return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; - } - - static applyTransform(p, m) { - const xt = p[0] * m[0] + p[1] * m[2] + m[4]; - const yt = p[0] * m[1] + p[1] * m[3] + m[5]; - return [xt, yt]; - } - - static applyInverseTransform(p, m) { - const d = m[0] * m[3] - m[1] * m[2]; - const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; - return [xt, yt]; - } - - static getAxialAlignedBoundingBox(r, m) { - const p1 = Util.applyTransform(r, m); - const p2 = Util.applyTransform(r.slice(2, 4), m); - const p3 = Util.applyTransform([r[0], r[3]], m); - const p4 = Util.applyTransform([r[2], r[1]], m); - return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; - } - - static inverseTransform(m) { - const d = m[0] * m[3] - m[1] * m[2]; - return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - } - - static apply3dTransform(m, v) { - return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; - } - - static singularValueDecompose2dScale(m) { - const transpose = [m[0], m[2], m[1], m[3]]; - const a = m[0] * transpose[0] + m[1] * transpose[2]; - const b = m[0] * transpose[1] + m[1] * transpose[3]; - const c = m[2] * transpose[0] + m[3] * transpose[2]; - const d = m[2] * transpose[1] + m[3] * transpose[3]; - const first = (a + d) / 2; - const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; - const sx = first + second || 1; - const sy = first - second || 1; - return [Math.sqrt(sx), Math.sqrt(sy)]; - } - - static normalizeRect(rect) { - const r = rect.slice(0); - - if (rect[0] > rect[2]) { - r[0] = rect[2]; - r[2] = rect[0]; - } - - if (rect[1] > rect[3]) { - r[1] = rect[3]; - r[3] = rect[1]; - } - - return r; - } - - static intersect(rect1, rect2) { - const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); - const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); - - if (xLow > xHigh) { - return null; - } - - const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); - const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); - - if (yLow > yHigh) { - return null; - } - - return [xLow, yLow, xHigh, yHigh]; - } - - static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { - const tvalues = [], - bounds = [[], []]; - let a, b, c, t, t1, t2, b2ac, sqrtb2ac; - - for (let i = 0; i < 2; ++i) { - if (i === 0) { - b = 6 * x0 - 12 * x1 + 6 * x2; - a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; - c = 3 * x1 - 3 * x0; - } else { - b = 6 * y0 - 12 * y1 + 6 * y2; - a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; - c = 3 * y1 - 3 * y0; - } - - if (Math.abs(a) < 1e-12) { - if (Math.abs(b) < 1e-12) { - continue; - } - - t = -c / b; - - if (0 < t && t < 1) { - tvalues.push(t); - } - - continue; - } - - b2ac = b * b - 4 * c * a; - sqrtb2ac = Math.sqrt(b2ac); - - if (b2ac < 0) { - continue; - } - - t1 = (-b + sqrtb2ac) / (2 * a); - - if (0 < t1 && t1 < 1) { - tvalues.push(t1); - } - - t2 = (-b - sqrtb2ac) / (2 * a); - - if (0 < t2 && t2 < 1) { - tvalues.push(t2); - } - } - - let j = tvalues.length, - mt; - const jlen = j; - - while (j--) { - t = tvalues[j]; - mt = 1 - t; - bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; - bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; - } - - bounds[0][jlen] = x0; - bounds[1][jlen] = y0; - bounds[0][jlen + 1] = x3; - bounds[1][jlen + 1] = y3; - bounds[0].length = bounds[1].length = jlen + 2; - return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; - } - -} - -exports.Util = Util; -const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; - -function stringToPDFString(str) { - if (str[0] >= "\xEF") { - let encoding; - - if (str[0] === "\xFE" && str[1] === "\xFF") { - encoding = "utf-16be"; - } else if (str[0] === "\xFF" && str[1] === "\xFE") { - encoding = "utf-16le"; - } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { - encoding = "utf-8"; - } - - if (encoding) { - try { - const decoder = new TextDecoder(encoding, { - fatal: true - }); - const buffer = stringToBytes(str); - return decoder.decode(buffer); - } catch (ex) { - warn(`stringToPDFString: "${ex}".`); - } - } - } - - const strBuf = []; - - for (let i = 0, ii = str.length; i < ii; i++) { - const code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); - } - - return strBuf.join(""); -} - -function escapeString(str) { - 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), String.fromCharCode(char & 0xff)); - } - - return buf.join(""); -} - -function stringToUTF8String(str) { - return decodeURIComponent(escape(str)); -} - -function utf8StringToString(str) { - return unescape(encodeURIComponent(str)); -} - -function isArrayBuffer(v) { - return typeof v === "object" && v !== null && v.byteLength !== undefined; -} - -function isArrayEqual(arr1, arr2) { - if (arr1.length !== arr2.length) { - return false; - } - - for (let i = 0, ii = arr1.length; i < ii; i++) { - if (arr1[i] !== arr2[i]) { - return false; - } - } - - return true; -} - -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(""); -} - -function createPromiseCapability() { - const capability = Object.create(null); - let isSettled = false; - Object.defineProperty(capability, "settled", { - get() { - return isSettled; - } - - }); - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = function (data) { - isSettled = true; - resolve(data); - }; - - capability.reject = function (reason) { - isSettled = true; - reject(reason); - }; - }); - return capability; -} - -/***/ }), -/* 2 */ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - - -var _is_node = __w_pdfjs_require__(3); - -; - -/***/ }), -/* 3 */ -/***/ ((__unused_webpack_module, exports) => { - - - -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; - -/***/ }), -/* 4 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; -exports.getDocument = getDocument; -exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; -exports.version = void 0; - -var _util = __w_pdfjs_require__(1); - -var _display_utils = __w_pdfjs_require__(5); - -var _font_loader = __w_pdfjs_require__(7); - -var _annotation_storage = __w_pdfjs_require__(8); - -var _canvas = __w_pdfjs_require__(10); - -var _worker_options = __w_pdfjs_require__(13); - -var _is_node = __w_pdfjs_require__(3); - -var _message_handler = __w_pdfjs_require__(14); - -var _metadata = __w_pdfjs_require__(15); - -var _optional_content_config = __w_pdfjs_require__(16); - -var _transport_stream = __w_pdfjs_require__(17); - -var _xfa_text = __w_pdfjs_require__(18); - -const DEFAULT_RANGE_CHUNK_SIZE = 65536; -const RENDERING_CANCELLED_TIMEOUT = 100; -let DefaultCanvasFactory = _display_utils.DOMCanvasFactory; -exports.DefaultCanvasFactory = DefaultCanvasFactory; -let DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory; -exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; -let DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory; -exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; - -if (_is_node.isNodeJS) { - const { - NodeCanvasFactory, - NodeCMapReaderFactory, - NodeStandardFontDataFactory - } = __w_pdfjs_require__(19); - - exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory; - exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory; - exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory; -} - -let createPDFNetworkStream; - -function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { - createPDFNetworkStream = pdfNetworkStreamFactory; -} - -function getDocument(src) { - const task = new PDFDocumentLoadingTask(); - let source; - - if (typeof src === "string" || src instanceof URL) { - source = { - url: src - }; - } else if ((0, _util.isArrayBuffer)(src)) { - source = { - data: src - }; - } else if (src instanceof PDFDataRangeTransport) { - source = { - range: src - }; - } else { - if (typeof src !== "object") { - throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object."); - } - - if (!src.url && !src.data && !src.range) { - throw new Error("Invalid parameter object: need either .data, .range or .url"); - } - - source = src; - } - - const params = Object.create(null); - let rangeTransport = null, - worker = null; - - for (const key in source) { - const value = source[key]; - - switch (key) { - case "url": - if (typeof window !== "undefined") { - try { - params[key] = new URL(value, window.location).href; - continue; - } catch (ex) { - (0, _util.warn)(`Cannot create valid URL: "${ex}".`); - } - } else if (typeof value === "string" || value instanceof URL) { - params[key] = value.toString(); - continue; - } - - throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); - - case "range": - rangeTransport = value; - continue; - - case "worker": - worker = value; - continue; - - case "data": - if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { - params[key] = new Uint8Array(value); - } else if (value instanceof Uint8Array) { - break; - } else if (typeof value === "string") { - params[key] = (0, _util.stringToBytes)(value); - } else if (typeof value === "object" && value !== null && !isNaN(value.length)) { - params[key] = new Uint8Array(value); - } else if ((0, _util.isArrayBuffer)(value)) { - params[key] = new Uint8Array(value); - } else { - throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property."); - } - - continue; - } - - params[key] = value; - } - - params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; - params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory; - params.ignoreErrors = params.stopAtErrors !== true; - params.fontExtraProperties = params.fontExtraProperties === true; - params.pdfBug = params.pdfBug === true; - params.enableXfa = params.enableXfa === true; - - if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) { - params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE; - } - - if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { - params.docBaseUrl = null; - } - - if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) { - params.maxImageSize = -1; - } - - if (typeof params.cMapUrl !== "string") { - params.cMapUrl = null; - } - - if (typeof params.standardFontDataUrl !== "string") { - params.standardFontDataUrl = null; - } - - if (typeof params.useWorkerFetch !== "boolean") { - params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory; - } - - if (typeof params.isEvalSupported !== "boolean") { - params.isEvalSupported = true; - } - - if (typeof params.disableFontFace !== "boolean") { - params.disableFontFace = _is_node.isNodeJS; - } - - if (typeof params.useSystemFonts !== "boolean") { - params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace; - } - - if (typeof params.ownerDocument !== "object" || params.ownerDocument === null) { - params.ownerDocument = globalThis.document; - } - - if (typeof params.disableRange !== "boolean") { - params.disableRange = false; - } - - if (typeof params.disableStream !== "boolean") { - params.disableStream = false; - } - - if (typeof params.disableAutoFetch !== "boolean") { - params.disableAutoFetch = false; - } - - (0, _util.setVerbosityLevel)(params.verbosity); - - if (!worker) { - const workerParams = { - verbosity: params.verbosity, - port: _worker_options.GlobalWorkerOptions.workerPort - }; - worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); - task._worker = worker; - } - - const docId = task.docId; - worker.promise.then(function () { - if (task.destroyed) { - throw new Error("Loading aborted"); - } - - const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); - - const networkStreamPromise = new Promise(function (resolve) { - let networkStream; - - if (rangeTransport) { - networkStream = new _transport_stream.PDFDataTransportStream({ - length: params.length, - initialData: params.initialData, - progressiveDone: params.progressiveDone, - contentDispositionFilename: params.contentDispositionFilename, - disableRange: params.disableRange, - disableStream: params.disableStream - }, rangeTransport); - } else if (!params.data) { - networkStream = createPDFNetworkStream({ - url: params.url, - length: params.length, - httpHeaders: params.httpHeaders, - withCredentials: params.withCredentials, - rangeChunkSize: params.rangeChunkSize, - disableRange: params.disableRange, - disableStream: params.disableStream - }); - } - - resolve(networkStream); - }); - return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { - if (task.destroyed) { - throw new Error("Loading aborted"); - } - - const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); - const transport = new WorkerTransport(messageHandler, task, networkStream, params); - task._transport = transport; - messageHandler.send("Ready", null); - }); - }).catch(task._capability.reject); - return task; -} - -async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { - if (worker.destroyed) { - throw new Error("Worker was destroyed"); - } - - if (pdfDataRangeTransport) { - source.length = pdfDataRangeTransport.length; - source.initialData = pdfDataRangeTransport.initialData; - source.progressiveDone = pdfDataRangeTransport.progressiveDone; - source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; - } - - const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", { - docId, - apiVersion: '2.14.305', - source: { - data: source.data, - url: source.url, - password: source.password, - disableAutoFetch: source.disableAutoFetch, - rangeChunkSize: source.rangeChunkSize, - length: source.length - }, - maxImageSize: source.maxImageSize, - disableFontFace: source.disableFontFace, - docBaseUrl: source.docBaseUrl, - ignoreErrors: source.ignoreErrors, - isEvalSupported: source.isEvalSupported, - fontExtraProperties: source.fontExtraProperties, - enableXfa: source.enableXfa, - useSystemFonts: source.useSystemFonts, - cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, - standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null - }); - - if (worker.destroyed) { - throw new Error("Worker was destroyed"); - } - - return workerId; -} - -class PDFDocumentLoadingTask { - static #docId = 0; - - constructor() { - this._capability = (0, _util.createPromiseCapability)(); - this._transport = null; - this._worker = null; - this.docId = `d${PDFDocumentLoadingTask.#docId++}`; - this.destroyed = false; - this.onPassword = null; - this.onProgress = null; - this.onUnsupportedFeature = null; - } - - get promise() { - return this._capability.promise; - } - - async destroy() { - this.destroyed = true; - await this._transport?.destroy(); - this._transport = null; - - if (this._worker) { - this._worker.destroy(); - - this._worker = null; - } - } - -} - -exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask; - -class PDFDataRangeTransport { - constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) { - this.length = length; - this.initialData = initialData; - this.progressiveDone = progressiveDone; - this.contentDispositionFilename = contentDispositionFilename; - this._rangeListeners = []; - this._progressListeners = []; - this._progressiveReadListeners = []; - this._progressiveDoneListeners = []; - this._readyCapability = (0, _util.createPromiseCapability)(); - } - - addRangeListener(listener) { - this._rangeListeners.push(listener); - } - - addProgressListener(listener) { - this._progressListeners.push(listener); - } - - addProgressiveReadListener(listener) { - this._progressiveReadListeners.push(listener); - } - - addProgressiveDoneListener(listener) { - this._progressiveDoneListeners.push(listener); - } - - onDataRange(begin, chunk) { - for (const listener of this._rangeListeners) { - listener(begin, chunk); - } - } - - onDataProgress(loaded, total) { - this._readyCapability.promise.then(() => { - for (const listener of this._progressListeners) { - listener(loaded, total); - } - }); - } - - onDataProgressiveRead(chunk) { - this._readyCapability.promise.then(() => { - for (const listener of this._progressiveReadListeners) { - listener(chunk); - } - }); - } - - onDataProgressiveDone() { - this._readyCapability.promise.then(() => { - for (const listener of this._progressiveDoneListeners) { - listener(); - } - }); - } - - transportReady() { - this._readyCapability.resolve(); - } - - requestDataRange(begin, end) { - (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); - } - - abort() {} - -} - -exports.PDFDataRangeTransport = PDFDataRangeTransport; - -class PDFDocumentProxy { - constructor(pdfInfo, transport) { - this._pdfInfo = pdfInfo; - this._transport = transport; - Object.defineProperty(this, "fingerprint", { - get() { - (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead."); - return this.fingerprints[0]; - } - - }); - Object.defineProperty(this, "getStats", { - value: async () => { - (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead."); - return this.stats || { - streamTypes: {}, - fontTypes: {} - }; - } - }); - } - - get annotationStorage() { - return this._transport.annotationStorage; - } - - get numPages() { - return this._pdfInfo.numPages; - } - - get fingerprints() { - return this._pdfInfo.fingerprints; - } - - get stats() { - return this._transport.stats; - } - - get isPureXfa() { - return !!this._transport._htmlForXfa; - } - - get allXfaHtml() { - return this._transport._htmlForXfa; - } - - getPage(pageNumber) { - return this._transport.getPage(pageNumber); - } - - getPageIndex(ref) { - return this._transport.getPageIndex(ref); - } - - getDestinations() { - return this._transport.getDestinations(); - } - - getDestination(id) { - return this._transport.getDestination(id); - } - - getPageLabels() { - return this._transport.getPageLabels(); - } - - getPageLayout() { - return this._transport.getPageLayout(); - } - - getPageMode() { - return this._transport.getPageMode(); - } - - getViewerPreferences() { - return this._transport.getViewerPreferences(); - } - - getOpenAction() { - return this._transport.getOpenAction(); - } - - getAttachments() { - return this._transport.getAttachments(); - } - - getJavaScript() { - return this._transport.getJavaScript(); - } - - getJSActions() { - return this._transport.getDocJSActions(); - } - - getOutline() { - return this._transport.getOutline(); - } - - getOptionalContentConfig() { - return this._transport.getOptionalContentConfig(); - } - - getPermissions() { - return this._transport.getPermissions(); - } - - getMetadata() { - return this._transport.getMetadata(); - } - - getMarkInfo() { - return this._transport.getMarkInfo(); - } - - getData() { - return this._transport.getData(); - } - - getDownloadInfo() { - return this._transport.downloadInfoCapability.promise; - } - - cleanup(keepLoadedFonts = false) { - return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); - } - - destroy() { - return this.loadingTask.destroy(); - } - - get loadingParams() { - return this._transport.loadingParams; - } - - get loadingTask() { - return this._transport.loadingTask; - } - - saveDocument() { - if (this._transport.annotationStorage.size <= 0) { - (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); - } - - return this._transport.saveDocument(); - } - - getFieldObjects() { - return this._transport.getFieldObjects(); - } - - hasJSActions() { - return this._transport.hasJSActions(); - } - - getCalculationOrderIds() { - return this._transport.getCalculationOrderIds(); - } - -} - -exports.PDFDocumentProxy = PDFDocumentProxy; - -class PDFPageProxy { - constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) { - this._pageIndex = pageIndex; - this._pageInfo = pageInfo; - this._ownerDocument = ownerDocument; - this._transport = transport; - this._stats = pdfBug ? new _display_utils.StatTimer() : null; - this._pdfBug = pdfBug; - this.commonObjs = transport.commonObjs; - this.objs = new PDFObjects(); - this._bitmaps = new Set(); - this.cleanupAfterRender = false; - this.pendingCleanup = false; - this._intentStates = new Map(); - this._annotationPromises = new Map(); - this.destroyed = false; - } - - get pageNumber() { - return this._pageIndex + 1; - } - - get rotate() { - return this._pageInfo.rotate; - } - - get ref() { - return this._pageInfo.ref; - } - - get userUnit() { - return this._pageInfo.userUnit; - } - - get view() { - return this._pageInfo.view; - } - - getViewport({ - scale, - rotation = this.rotate, - offsetX = 0, - offsetY = 0, - dontFlip = false - } = {}) { - return new _display_utils.PageViewport({ - viewBox: this.view, - scale, - rotation, - offsetX, - offsetY, - dontFlip - }); - } - - getAnnotations({ - intent = "display" - } = {}) { - const intentArgs = this._transport.getRenderingIntent(intent); - - let promise = this._annotationPromises.get(intentArgs.cacheKey); - - if (!promise) { - promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); - - this._annotationPromises.set(intentArgs.cacheKey, promise); - - promise = promise.then(annotations => { - for (const annotation of annotations) { - if (annotation.titleObj !== undefined) { - Object.defineProperty(annotation, "title", { - get() { - (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead."); - return annotation.titleObj.str; - } - - }); - } - - if (annotation.contentsObj !== undefined) { - Object.defineProperty(annotation, "contents", { - get() { - (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead."); - return annotation.contentsObj.str; - } - - }); - } - } - - return annotations; - }); - } - - return promise; - } - - getJSActions() { - return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex); - } - - async getXfa() { - return this._transport._htmlForXfa?.children[this._pageIndex] || null; - } - - render({ - canvasContext, - viewport, - intent = "display", - annotationMode = _util.AnnotationMode.ENABLE, - transform = null, - imageLayer = null, - canvasFactory = null, - background = null, - optionalContentConfigPromise = null, - annotationCanvasMap = null, - pageColors = null - }) { - if (arguments[0]?.renderInteractiveForms !== undefined) { - (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead."); - - if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) { - annotationMode = _util.AnnotationMode.ENABLE_FORMS; - } - } - - if (arguments[0]?.includeAnnotationStorage !== undefined) { - (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead."); - - if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) { - annotationMode = _util.AnnotationMode.ENABLE_STORAGE; - } - } - - if (this._stats) { - this._stats.time("Overall"); - } - - const intentArgs = this._transport.getRenderingIntent(intent, annotationMode); - - this.pendingCleanup = false; - - if (!optionalContentConfigPromise) { - optionalContentConfigPromise = this._transport.getOptionalContentConfig(); - } - - let intentState = this._intentStates.get(intentArgs.cacheKey); - - if (!intentState) { - intentState = Object.create(null); - - this._intentStates.set(intentArgs.cacheKey, intentState); - } - - if (intentState.streamReaderCancelTimeout) { - clearTimeout(intentState.streamReaderCancelTimeout); - intentState.streamReaderCancelTimeout = null; - } - - const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ - ownerDocument: this._ownerDocument - }); - const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); - - if (!intentState.displayReadyCapability) { - intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - if (this._stats) { - this._stats.time("Page Request"); - } - - this._pumpOperatorList(intentArgs); - } - - const complete = error => { - intentState.renderTasks.delete(internalRenderTask); - - if (this.cleanupAfterRender || intentPrint) { - this.pendingCleanup = true; - } - - this._tryCleanup(); - - if (error) { - internalRenderTask.capability.reject(error); - - this._abortOperatorList({ - intentState, - reason: error instanceof Error ? error : new Error(error) - }); - } else { - internalRenderTask.capability.resolve(); - } - - if (this._stats) { - this._stats.timeEnd("Rendering"); - - this._stats.timeEnd("Overall"); - } - }; - - const internalRenderTask = new InternalRenderTask({ - callback: complete, - params: { - canvasContext, - viewport, - transform, - imageLayer, - background - }, - objs: this.objs, - commonObjs: this.commonObjs, - annotationCanvasMap, - operatorList: intentState.operatorList, - pageIndex: this._pageIndex, - canvasFactory: canvasFactoryInstance, - useRequestAnimationFrame: !intentPrint, - pdfBug: this._pdfBug, - pageColors - }); - (intentState.renderTasks ||= new Set()).add(internalRenderTask); - const renderTask = internalRenderTask.task; - Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => { - if (this.pendingCleanup) { - complete(); - return; - } - - if (this._stats) { - this._stats.time("Rendering"); - } - - internalRenderTask.initializeGraphics({ - transparency, - optionalContentConfig - }); - internalRenderTask.operatorListChanged(); - }).catch(complete); - return renderTask; - } - - getOperatorList({ - intent = "display", - annotationMode = _util.AnnotationMode.ENABLE - } = {}) { - function operatorListChanged() { - if (intentState.operatorList.lastChunk) { - intentState.opListReadCapability.resolve(intentState.operatorList); - intentState.renderTasks.delete(opListTask); - } - } - - const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true); - - let intentState = this._intentStates.get(intentArgs.cacheKey); - - if (!intentState) { - intentState = Object.create(null); - - this._intentStates.set(intentArgs.cacheKey, intentState); - } - - let opListTask; - - if (!intentState.opListReadCapability) { - opListTask = Object.create(null); - opListTask.operatorListChanged = operatorListChanged; - intentState.opListReadCapability = (0, _util.createPromiseCapability)(); - (intentState.renderTasks ||= new Set()).add(opListTask); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - - if (this._stats) { - this._stats.time("Page Request"); - } - - this._pumpOperatorList(intentArgs); - } - - return intentState.opListReadCapability.promise; - } - - streamTextContent({ - disableCombineTextItems = false, - includeMarkedContent = false - } = {}) { - const TEXT_CONTENT_CHUNK_SIZE = 100; - return this._transport.messageHandler.sendWithStream("GetTextContent", { - pageIndex: this._pageIndex, - combineTextItems: disableCombineTextItems !== true, - includeMarkedContent: includeMarkedContent === true - }, { - highWaterMark: TEXT_CONTENT_CHUNK_SIZE, - - size(textContent) { - return textContent.items.length; - } - - }); - } - - getTextContent(params = {}) { - if (this._transport._htmlForXfa) { - return this.getXfa().then(xfa => { - return _xfa_text.XfaText.textContent(xfa); - }); - } - - const readableStream = this.streamTextContent(params); - return new Promise(function (resolve, reject) { - function pump() { - reader.read().then(function ({ - value, - done - }) { - if (done) { - resolve(textContent); - return; - } - - Object.assign(textContent.styles, value.styles); - textContent.items.push(...value.items); - pump(); - }, reject); - } - - const reader = readableStream.getReader(); - const textContent = { - items: [], - styles: Object.create(null) - }; - pump(); - }); - } - - getStructTree() { - return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex); - } - - _destroy() { - this.destroyed = true; - const waitOn = []; - - for (const intentState of this._intentStates.values()) { - this._abortOperatorList({ - intentState, - reason: new Error("Page was destroyed."), - force: true - }); - - if (intentState.opListReadCapability) { - continue; - } - - for (const internalRenderTask of intentState.renderTasks) { - waitOn.push(internalRenderTask.completed); - internalRenderTask.cancel(); - } - } - - this.objs.clear(); - - for (const bitmap of this._bitmaps) { - bitmap.close(); - } - - this._bitmaps.clear(); - - this._annotationPromises.clear(); - - this._jsActionsPromise = null; - this._structTreePromise = null; - this.pendingCleanup = false; - return Promise.all(waitOn); - } - - cleanup(resetStats = false) { - this.pendingCleanup = true; - return this._tryCleanup(resetStats); - } - - _tryCleanup(resetStats = false) { - if (!this.pendingCleanup) { - return false; - } - - for (const { - renderTasks, - operatorList - } of this._intentStates.values()) { - if (renderTasks.size > 0 || !operatorList.lastChunk) { - return false; - } - } - - this._intentStates.clear(); - - this.objs.clear(); - - this._annotationPromises.clear(); - - this._jsActionsPromise = null; - this._structTreePromise = null; - - if (resetStats && this._stats) { - this._stats = new _display_utils.StatTimer(); - } - - for (const bitmap of this._bitmaps) { - bitmap.close(); - } - - this._bitmaps.clear(); - - this.pendingCleanup = false; - return true; - } - - _startRenderPage(transparency, cacheKey) { - const intentState = this._intentStates.get(cacheKey); - - if (!intentState) { - return; - } - - if (this._stats) { - this._stats.timeEnd("Page Request"); - } - - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.resolve(transparency); - } - } - - _renderPageChunk(operatorListChunk, intentState) { - for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { - intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); - intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); - } - - intentState.operatorList.lastChunk = operatorListChunk.lastChunk; - - for (const internalRenderTask of intentState.renderTasks) { - internalRenderTask.operatorListChanged(); - } - - if (operatorListChunk.lastChunk) { - this._tryCleanup(); - } - } - - _pumpOperatorList({ - renderingIntent, - cacheKey - }) { - const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { - pageIndex: this._pageIndex, - intent: renderingIntent, - cacheKey, - annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? this._transport.annotationStorage.serializable : null - }); - - const reader = readableStream.getReader(); - - const intentState = this._intentStates.get(cacheKey); - - intentState.streamReader = reader; - - const pump = () => { - reader.read().then(({ - value, - done - }) => { - if (done) { - intentState.streamReader = null; - return; - } - - if (this._transport.destroyed) { - return; - } - - this._renderPageChunk(value, intentState); - - pump(); - }, reason => { - intentState.streamReader = null; - - if (this._transport.destroyed) { - return; - } - - if (intentState.operatorList) { - intentState.operatorList.lastChunk = true; - - for (const internalRenderTask of intentState.renderTasks) { - internalRenderTask.operatorListChanged(); - } - - this._tryCleanup(); - } - - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.reject(reason); - } else if (intentState.opListReadCapability) { - intentState.opListReadCapability.reject(reason); - } else { - throw reason; - } - }); - }; - - pump(); - } - - _abortOperatorList({ - intentState, - reason, - force = false - }) { - if (!intentState.streamReader) { - return; - } - - if (!force) { - if (intentState.renderTasks.size > 0) { - return; - } - - if (reason instanceof _display_utils.RenderingCancelledException) { - intentState.streamReaderCancelTimeout = setTimeout(() => { - this._abortOperatorList({ - intentState, - reason, - force: true - }); - - intentState.streamReaderCancelTimeout = null; - }, RENDERING_CANCELLED_TIMEOUT); - return; - } - } - - intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {}); - intentState.streamReader = null; - - if (this._transport.destroyed) { - return; - } - - for (const [curCacheKey, curIntentState] of this._intentStates) { - if (curIntentState === intentState) { - this._intentStates.delete(curCacheKey); - - break; - } - } - - this.cleanup(); - } - - get stats() { - return this._stats; - } - -} - -exports.PDFPageProxy = PDFPageProxy; - -class LoopbackPort { - constructor() { - this._listeners = []; - this._deferred = Promise.resolve(); - } - - postMessage(obj, transfers) { - const event = { - data: structuredClone(obj, transfers) - }; - - this._deferred.then(() => { - for (const listener of this._listeners) { - listener.call(this, event); - } - }); - } - - addEventListener(name, listener) { - this._listeners.push(listener); - } - - removeEventListener(name, listener) { - const i = this._listeners.indexOf(listener); - - this._listeners.splice(i, 1); - } - - terminate() { - this._listeners.length = 0; - } - -} - -exports.LoopbackPort = LoopbackPort; -const PDFWorkerUtil = { - isWorkerDisabled: false, - fallbackWorkerSrc: null, - fakeWorkerId: 0 -}; -exports.PDFWorkerUtil = PDFWorkerUtil; -{ - if (_is_node.isNodeJS && typeof require === "function") { - PDFWorkerUtil.isWorkerDisabled = true; - PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js"; - } else if (typeof document === "object") { - const pdfjsFilePath = document?.currentScript?.src; - - if (pdfjsFilePath) { - PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); - } - } - - PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { - let base; - - try { - base = new URL(baseUrl); - - if (!base.origin || base.origin === "null") { - return false; - } - } catch (e) { - return false; - } - - const other = new URL(otherUrl, base); - return base.origin === other.origin; - }; - - PDFWorkerUtil.createCDNWrapper = function (url) { - const wrapper = `importScripts("${url}");`; - return URL.createObjectURL(new Blob([wrapper])); - }; -} - -class PDFWorker { - static #workerPorts = new WeakMap(); - - constructor({ - name = null, - port = null, - verbosity = (0, _util.getVerbosityLevel)() - } = {}) { - if (port && PDFWorker.#workerPorts.has(port)) { - throw new Error("Cannot use more than one PDFWorker per port."); - } - - this.name = name; - this.destroyed = false; - this.verbosity = verbosity; - this._readyCapability = (0, _util.createPromiseCapability)(); - this._port = null; - this._webWorker = null; - this._messageHandler = null; - - if (port) { - PDFWorker.#workerPorts.set(port, this); - - this._initializeFromPort(port); - - return; - } - - this._initialize(); - } - - get promise() { - return this._readyCapability.promise; - } - - get port() { - return this._port; - } - - get messageHandler() { - return this._messageHandler; - } - - _initializeFromPort(port) { - this._port = port; - this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); - - this._messageHandler.on("ready", function () {}); - - this._readyCapability.resolve(); - } - - _initialize() { - if (typeof Worker !== "undefined" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) { - let workerSrc = PDFWorker.workerSrc; - - try { - if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { - workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); - } - - const worker = new Worker(workerSrc); - const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); - - const terminateEarly = () => { - worker.removeEventListener("error", onWorkerError); - messageHandler.destroy(); - worker.terminate(); - - if (this.destroyed) { - this._readyCapability.reject(new Error("Worker was destroyed")); - } else { - this._setupFakeWorker(); - } - }; - - const onWorkerError = () => { - if (!this._webWorker) { - terminateEarly(); - } - }; - - worker.addEventListener("error", onWorkerError); - messageHandler.on("test", data => { - worker.removeEventListener("error", onWorkerError); - - if (this.destroyed) { - terminateEarly(); - return; - } - - if (data) { - this._messageHandler = messageHandler; - this._port = worker; - this._webWorker = worker; - - this._readyCapability.resolve(); - - messageHandler.send("configure", { - verbosity: this.verbosity - }); - } else { - this._setupFakeWorker(); - - messageHandler.destroy(); - worker.terminate(); - } - }); - messageHandler.on("ready", data => { - worker.removeEventListener("error", onWorkerError); - - if (this.destroyed) { - terminateEarly(); - return; - } - - try { - sendTest(); - } catch (e) { - this._setupFakeWorker(); - } - }); - - const sendTest = () => { - const testObj = new Uint8Array(); - messageHandler.send("test", testObj, [testObj.buffer]); - }; - - sendTest(); - return; - } catch (e) { - (0, _util.info)("The worker has been disabled."); - } - } - - this._setupFakeWorker(); - } - - _setupFakeWorker() { - if (!PDFWorkerUtil.isWorkerDisabled) { - (0, _util.warn)("Setting up fake worker."); - PDFWorkerUtil.isWorkerDisabled = true; - } - - PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => { - if (this.destroyed) { - this._readyCapability.reject(new Error("Worker was destroyed")); - - return; - } - - const port = new LoopbackPort(); - this._port = port; - const id = `fake${PDFWorkerUtil.fakeWorkerId++}`; - const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); - WorkerMessageHandler.setup(workerHandler, port); - const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); - this._messageHandler = messageHandler; - - this._readyCapability.resolve(); - - messageHandler.send("configure", { - verbosity: this.verbosity - }); - }).catch(reason => { - this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); - }); - } - - destroy() { - this.destroyed = true; - - if (this._webWorker) { - this._webWorker.terminate(); - - this._webWorker = null; - } - - PDFWorker.#workerPorts.delete(this._port); - this._port = null; - - if (this._messageHandler) { - this._messageHandler.destroy(); - - this._messageHandler = null; - } - } - - static fromPort(params) { - if (!params?.port) { - throw new Error("PDFWorker.fromPort - invalid method signature."); - } - - if (this.#workerPorts.has(params.port)) { - return this.#workerPorts.get(params.port); - } - - return new PDFWorker(params); - } - - static get workerSrc() { - if (_worker_options.GlobalWorkerOptions.workerSrc) { - return _worker_options.GlobalWorkerOptions.workerSrc; - } - - if (PDFWorkerUtil.fallbackWorkerSrc !== null) { - if (!_is_node.isNodeJS) { - (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); - } - - return PDFWorkerUtil.fallbackWorkerSrc; - } - - throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); - } - - static get _mainThreadWorkerMessageHandler() { - try { - return globalThis.pdfjsWorker?.WorkerMessageHandler || null; - } catch (ex) { - return null; - } - } - - static get _setupFakeWorkerGlobal() { - const loader = async () => { - const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler; - - if (mainWorkerMessageHandler) { - return mainWorkerMessageHandler; - } - - if (_is_node.isNodeJS && typeof require === "function") { - const worker = eval("require")(this.workerSrc); - return worker.WorkerMessageHandler; - } - - await (0, _display_utils.loadScript)(this.workerSrc); - return window.pdfjsWorker.WorkerMessageHandler; - }; - - return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader()); - } - -} - -exports.PDFWorker = PDFWorker; -{ - PDFWorker.getWorkerSrc = function () { - (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead."); - return this.workerSrc; - }; -} - -class WorkerTransport { - #docStats = null; - #pageCache = new Map(); - #pagePromises = new Map(); - #metadataPromise = null; - - constructor(messageHandler, loadingTask, networkStream, params) { - this.messageHandler = messageHandler; - this.loadingTask = loadingTask; - this.commonObjs = new PDFObjects(); - this.fontLoader = new _font_loader.FontLoader({ - docId: loadingTask.docId, - onUnsupportedFeature: this._onUnsupportedFeature.bind(this), - ownerDocument: params.ownerDocument, - styleElement: params.styleElement - }); - this._params = params; - - if (!params.useWorkerFetch) { - this.CMapReaderFactory = new params.CMapReaderFactory({ - baseUrl: params.cMapUrl, - isCompressed: params.cMapPacked - }); - this.StandardFontDataFactory = new params.StandardFontDataFactory({ - baseUrl: params.standardFontDataUrl - }); - } - - this.destroyed = false; - this.destroyCapability = null; - this._passwordCapability = null; - this._networkStream = networkStream; - this._fullReader = null; - this._lastProgress = null; - this.downloadInfoCapability = (0, _util.createPromiseCapability)(); - this.setupMessageHandler(); - } - - get annotationStorage() { - return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); - } - - get stats() { - return this.#docStats; - } - - getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) { - let renderingIntent = _util.RenderingIntentFlag.DISPLAY; - let annotationHash = ""; - - switch (intent) { - case "any": - renderingIntent = _util.RenderingIntentFlag.ANY; - break; - - case "display": - break; - - case "print": - renderingIntent = _util.RenderingIntentFlag.PRINT; - break; - - default: - (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`); - } - - switch (annotationMode) { - case _util.AnnotationMode.DISABLE: - renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE; - break; - - case _util.AnnotationMode.ENABLE: - break; - - case _util.AnnotationMode.ENABLE_FORMS: - renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS; - break; - - case _util.AnnotationMode.ENABLE_STORAGE: - renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE; - annotationHash = this.annotationStorage.hash; - break; - - default: - (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); - } - - if (isOpList) { - renderingIntent += _util.RenderingIntentFlag.OPLIST; - } - - return { - renderingIntent, - cacheKey: `${renderingIntent}_${annotationHash}` - }; - } - - destroy() { - if (this.destroyCapability) { - return this.destroyCapability.promise; - } - - this.destroyed = true; - this.destroyCapability = (0, _util.createPromiseCapability)(); - - if (this._passwordCapability) { - this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); - } - - const waitOn = []; - - for (const page of this.#pageCache.values()) { - waitOn.push(page._destroy()); - } - - this.#pageCache.clear(); - this.#pagePromises.clear(); - - if (this.hasOwnProperty("annotationStorage")) { - this.annotationStorage.resetModified(); - } - - const terminated = this.messageHandler.sendWithPromise("Terminate", null); - waitOn.push(terminated); - Promise.all(waitOn).then(() => { - this.commonObjs.clear(); - this.fontLoader.clear(); - this.#metadataPromise = null; - this._getFieldObjectsPromise = null; - this._hasJSActionsPromise = null; - - if (this._networkStream) { - this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); - } - - if (this.messageHandler) { - this.messageHandler.destroy(); - this.messageHandler = null; - } - - this.destroyCapability.resolve(); - }, this.destroyCapability.reject); - return this.destroyCapability.promise; - } - - setupMessageHandler() { - const { - messageHandler, - loadingTask - } = this; - messageHandler.on("GetReader", (data, sink) => { - (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); - this._fullReader = this._networkStream.getFullReader(); - - this._fullReader.onProgress = evt => { - this._lastProgress = { - loaded: evt.loaded, - total: evt.total - }; - }; - - sink.onPull = () => { - this._fullReader.read().then(function ({ - value, - done - }) { - if (done) { - sink.close(); - return; - } - - (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); - sink.enqueue(new Uint8Array(value), 1, [value]); - }).catch(reason => { - sink.error(reason); - }); - }; - - sink.onCancel = reason => { - this._fullReader.cancel(reason); - - sink.ready.catch(readyReason => { - if (this.destroyed) { - return; - } - - throw readyReason; - }); - }; - }); - messageHandler.on("ReaderHeadersReady", data => { - const headersCapability = (0, _util.createPromiseCapability)(); - const fullReader = this._fullReader; - fullReader.headersReady.then(() => { - if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { - if (this._lastProgress) { - loadingTask.onProgress?.(this._lastProgress); - } - - fullReader.onProgress = evt => { - loadingTask.onProgress?.({ - loaded: evt.loaded, - total: evt.total - }); - }; - } - - headersCapability.resolve({ - isStreamingSupported: fullReader.isStreamingSupported, - isRangeSupported: fullReader.isRangeSupported, - contentLength: fullReader.contentLength - }); - }, headersCapability.reject); - return headersCapability.promise; - }); - messageHandler.on("GetRangeReader", (data, sink) => { - (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); - - const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); - - if (!rangeReader) { - sink.close(); - return; - } - - sink.onPull = () => { - rangeReader.read().then(function ({ - value, - done - }) { - if (done) { - sink.close(); - return; - } - - (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); - sink.enqueue(new Uint8Array(value), 1, [value]); - }).catch(reason => { - sink.error(reason); - }); - }; - - sink.onCancel = reason => { - rangeReader.cancel(reason); - sink.ready.catch(readyReason => { - if (this.destroyed) { - return; - } - - throw readyReason; - }); - }; - }); - messageHandler.on("GetDoc", ({ - pdfInfo - }) => { - this._numPages = pdfInfo.numPages; - this._htmlForXfa = pdfInfo.htmlForXfa; - delete pdfInfo.htmlForXfa; - - loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); - }); - messageHandler.on("DocException", function (ex) { - let reason; - - switch (ex.name) { - case "PasswordException": - reason = new _util.PasswordException(ex.message, ex.code); - break; - - case "InvalidPDFException": - reason = new _util.InvalidPDFException(ex.message); - break; - - case "MissingPDFException": - reason = new _util.MissingPDFException(ex.message); - break; - - case "UnexpectedResponseException": - reason = new _util.UnexpectedResponseException(ex.message, ex.status); - break; - - case "UnknownErrorException": - reason = new _util.UnknownErrorException(ex.message, ex.details); - break; - - default: - (0, _util.unreachable)("DocException - expected a valid Error."); - } - - loadingTask._capability.reject(reason); - }); - messageHandler.on("PasswordRequest", exception => { - this._passwordCapability = (0, _util.createPromiseCapability)(); - - if (loadingTask.onPassword) { - const updatePassword = password => { - if (password instanceof Error) { - this._passwordCapability.reject(password); - } else { - this._passwordCapability.resolve({ - password - }); - } - }; - - try { - loadingTask.onPassword(updatePassword, exception.code); - } catch (ex) { - this._passwordCapability.reject(ex); - } - } else { - this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); - } - - return this._passwordCapability.promise; - }); - messageHandler.on("DataLoaded", data => { - loadingTask.onProgress?.({ - loaded: data.length, - total: data.length - }); - this.downloadInfoCapability.resolve(data); - }); - messageHandler.on("StartRenderPage", data => { - if (this.destroyed) { - return; - } - - const page = this.#pageCache.get(data.pageIndex); - - page._startRenderPage(data.transparency, data.cacheKey); - }); - messageHandler.on("commonobj", ([id, type, exportedData]) => { - if (this.destroyed) { - return; - } - - if (this.commonObjs.has(id)) { - return; - } - - switch (type) { - case "Font": - const params = this._params; - - if ("error" in exportedData) { - const exportedError = exportedData.error; - (0, _util.warn)(`Error during font loading: ${exportedError}`); - this.commonObjs.resolve(id, exportedError); - break; - } - - let fontRegistry = null; - - if (params.pdfBug && globalThis.FontInspector?.enabled) { - fontRegistry = { - registerFont(font, url) { - globalThis.FontInspector.fontAdded(font, url); - } - - }; - } - - const font = new _font_loader.FontFaceObject(exportedData, { - isEvalSupported: params.isEvalSupported, - disableFontFace: params.disableFontFace, - ignoreErrors: params.ignoreErrors, - onUnsupportedFeature: this._onUnsupportedFeature.bind(this), - fontRegistry - }); - this.fontLoader.bind(font).catch(reason => { - return messageHandler.sendWithPromise("FontFallback", { - id - }); - }).finally(() => { - if (!params.fontExtraProperties && font.data) { - font.data = null; - } - - this.commonObjs.resolve(id, font); - }); - break; - - case "FontPath": - case "Image": - this.commonObjs.resolve(id, exportedData); - break; - - default: - throw new Error(`Got unknown common object type ${type}`); - } - }); - messageHandler.on("obj", ([id, pageIndex, type, imageData]) => { - if (this.destroyed) { - return; - } - - const pageProxy = this.#pageCache.get(pageIndex); - - if (pageProxy.objs.has(id)) { - return; - } - - switch (type) { - case "Image": - pageProxy.objs.resolve(id, imageData); - const MAX_IMAGE_SIZE_TO_STORE = 8000000; - - if (imageData) { - let length; - - if (imageData.bitmap) { - const { - bitmap, - width, - height - } = imageData; - length = width * height * 4; - - pageProxy._bitmaps.add(bitmap); - } else { - length = imageData.data?.length || 0; - } - - if (length > MAX_IMAGE_SIZE_TO_STORE) { - pageProxy.cleanupAfterRender = true; - } - } - - break; - - case "Pattern": - pageProxy.objs.resolve(id, imageData); - break; - - default: - throw new Error(`Got unknown object type ${type}`); - } - }); - messageHandler.on("DocProgress", data => { - if (this.destroyed) { - return; - } - - loadingTask.onProgress?.({ - loaded: data.loaded, - total: data.total - }); - }); - messageHandler.on("DocStats", data => { - if (this.destroyed) { - return; - } - - this.#docStats = Object.freeze({ - streamTypes: Object.freeze(data.streamTypes), - fontTypes: Object.freeze(data.fontTypes) - }); - }); - messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); - messageHandler.on("FetchBuiltInCMap", data => { - if (this.destroyed) { - return Promise.reject(new Error("Worker was destroyed.")); - } - - if (!this.CMapReaderFactory) { - return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); - } - - return this.CMapReaderFactory.fetch(data); - }); - messageHandler.on("FetchStandardFontData", data => { - if (this.destroyed) { - return Promise.reject(new Error("Worker was destroyed.")); - } - - if (!this.StandardFontDataFactory) { - return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); - } - - return this.StandardFontDataFactory.fetch(data); - }); - } - - _onUnsupportedFeature({ - featureId - }) { - if (this.destroyed) { - return; - } - - this.loadingTask.onUnsupportedFeature?.(featureId); - } - - getData() { - return this.messageHandler.sendWithPromise("GetData", null); - } - - getPage(pageNumber) { - if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { - return Promise.reject(new Error("Invalid page request.")); - } - - const pageIndex = pageNumber - 1, - cachedPromise = this.#pagePromises.get(pageIndex); - - if (cachedPromise) { - return cachedPromise; - } - - const promise = this.messageHandler.sendWithPromise("GetPage", { - pageIndex - }).then(pageInfo => { - if (this.destroyed) { - throw new Error("Transport destroyed"); - } - - const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug); - this.#pageCache.set(pageIndex, page); - return page; - }); - this.#pagePromises.set(pageIndex, promise); - return promise; - } - - getPageIndex(ref) { - if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) { - return Promise.reject(new Error("Invalid pageIndex request.")); - } - - return this.messageHandler.sendWithPromise("GetPageIndex", { - num: ref.num, - gen: ref.gen - }); - } - - getAnnotations(pageIndex, intent) { - return this.messageHandler.sendWithPromise("GetAnnotations", { - pageIndex, - intent - }); - } - - saveDocument() { - return this.messageHandler.sendWithPromise("SaveDocument", { - isPureXfa: !!this._htmlForXfa, - numPages: this._numPages, - annotationStorage: this.annotationStorage.serializable, - filename: this._fullReader?.filename ?? null - }).finally(() => { - this.annotationStorage.resetModified(); - }); - } - - getFieldObjects() { - return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null); - } - - hasJSActions() { - return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null); - } - - getCalculationOrderIds() { - return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); - } - - getDestinations() { - return this.messageHandler.sendWithPromise("GetDestinations", null); - } - - getDestination(id) { - if (typeof id !== "string") { - return Promise.reject(new Error("Invalid destination request.")); - } - - return this.messageHandler.sendWithPromise("GetDestination", { - id - }); - } - - getPageLabels() { - return this.messageHandler.sendWithPromise("GetPageLabels", null); - } - - getPageLayout() { - return this.messageHandler.sendWithPromise("GetPageLayout", null); - } - - getPageMode() { - return this.messageHandler.sendWithPromise("GetPageMode", null); - } - - getViewerPreferences() { - return this.messageHandler.sendWithPromise("GetViewerPreferences", null); - } - - getOpenAction() { - return this.messageHandler.sendWithPromise("GetOpenAction", null); - } - - getAttachments() { - return this.messageHandler.sendWithPromise("GetAttachments", null); - } - - getJavaScript() { - return this.messageHandler.sendWithPromise("GetJavaScript", null); - } - - getDocJSActions() { - return this.messageHandler.sendWithPromise("GetDocJSActions", null); - } - - getPageJSActions(pageIndex) { - return this.messageHandler.sendWithPromise("GetPageJSActions", { - pageIndex - }); - } - - getStructTree(pageIndex) { - return this.messageHandler.sendWithPromise("GetStructTree", { - pageIndex - }); - } - - getOutline() { - return this.messageHandler.sendWithPromise("GetOutline", null); - } - - getOptionalContentConfig() { - return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { - return new _optional_content_config.OptionalContentConfig(results); - }); - } - - getPermissions() { - return this.messageHandler.sendWithPromise("GetPermissions", null); - } - - getMetadata() { - return this.#metadataPromise ||= this.messageHandler.sendWithPromise("GetMetadata", null).then(results => { - return { - info: results[0], - metadata: results[1] ? new _metadata.Metadata(results[1]) : null, - contentDispositionFilename: this._fullReader?.filename ?? null, - contentLength: this._fullReader?.contentLength ?? null - }; - }); - } - - getMarkInfo() { - return this.messageHandler.sendWithPromise("GetMarkInfo", null); - } - - async startCleanup(keepLoadedFonts = false) { - await this.messageHandler.sendWithPromise("Cleanup", null); - - if (this.destroyed) { - return; - } - - for (const page of this.#pageCache.values()) { - const cleanupSuccessful = page.cleanup(); - - if (!cleanupSuccessful) { - throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`); - } - } - - this.commonObjs.clear(); - - if (!keepLoadedFonts) { - this.fontLoader.clear(); - } - - this.#metadataPromise = null; - this._getFieldObjectsPromise = null; - this._hasJSActionsPromise = null; - } - - get loadingParams() { - const params = this._params; - return (0, _util.shadow)(this, "loadingParams", { - disableAutoFetch: params.disableAutoFetch, - enableXfa: params.enableXfa - }); - } - -} - -class PDFObjects { - #objs = Object.create(null); - - #ensureObj(objId) { - const obj = this.#objs[objId]; - - if (obj) { - return obj; - } - - return this.#objs[objId] = { - capability: (0, _util.createPromiseCapability)(), - data: null - }; - } - - get(objId, callback = null) { - if (callback) { - const obj = this.#ensureObj(objId); - obj.capability.promise.then(() => callback(obj.data)); - return null; - } - - const obj = this.#objs[objId]; - - if (!obj?.capability.settled) { - throw new Error(`Requesting object that isn't resolved yet ${objId}.`); - } - - return obj.data; - } - - has(objId) { - const obj = this.#objs[objId]; - return obj?.capability.settled || false; - } - - resolve(objId, data = null) { - const obj = this.#ensureObj(objId); - obj.data = data; - obj.capability.resolve(); - } - - clear() { - this.#objs = Object.create(null); - } - -} - -class RenderTask { - constructor(internalRenderTask) { - this._internalRenderTask = internalRenderTask; - this.onContinue = null; - } - - get promise() { - return this._internalRenderTask.capability.promise; - } - - cancel() { - this._internalRenderTask.cancel(); - } - -} - -exports.RenderTask = RenderTask; - -class InternalRenderTask { - static #canvasInUse = new WeakSet(); - - constructor({ - callback, - params, - objs, - commonObjs, - annotationCanvasMap, - operatorList, - pageIndex, - canvasFactory, - useRequestAnimationFrame = false, - pdfBug = false, - pageColors = null - }) { - this.callback = callback; - this.params = params; - this.objs = objs; - this.commonObjs = commonObjs; - this.annotationCanvasMap = annotationCanvasMap; - this.operatorListIdx = null; - this.operatorList = operatorList; - this._pageIndex = pageIndex; - this.canvasFactory = canvasFactory; - this._pdfBug = pdfBug; - this.pageColors = pageColors; - this.running = false; - this.graphicsReadyCallback = null; - this.graphicsReady = false; - this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; - this.cancelled = false; - this.capability = (0, _util.createPromiseCapability)(); - this.task = new RenderTask(this); - this._cancelBound = this.cancel.bind(this); - this._continueBound = this._continue.bind(this); - this._scheduleNextBound = this._scheduleNext.bind(this); - this._nextBound = this._next.bind(this); - this._canvas = params.canvasContext.canvas; - } - - get completed() { - return this.capability.promise.catch(function () {}); - } - - initializeGraphics({ - transparency = false, - optionalContentConfig - }) { - if (this.cancelled) { - return; - } - - if (this._canvas) { - if (InternalRenderTask.#canvasInUse.has(this._canvas)) { - throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); - } - - InternalRenderTask.#canvasInUse.add(this._canvas); - } - - if (this._pdfBug && globalThis.StepperManager?.enabled) { - this.stepper = globalThis.StepperManager.create(this._pageIndex); - this.stepper.init(this.operatorList); - this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); - } - - const { - canvasContext, - viewport, - transform, - imageLayer, - background - } = this.params; - this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors); - this.gfx.beginDrawing({ - transform, - viewport, - transparency, - background - }); - this.operatorListIdx = 0; - this.graphicsReady = true; - - if (this.graphicsReadyCallback) { - this.graphicsReadyCallback(); - } - } - - cancel(error = null) { - this.running = false; - this.cancelled = true; - - if (this.gfx) { - this.gfx.endDrawing(); - } - - if (this._canvas) { - InternalRenderTask.#canvasInUse.delete(this._canvas); - } - - this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas")); - } - - operatorListChanged() { - if (!this.graphicsReady) { - if (!this.graphicsReadyCallback) { - this.graphicsReadyCallback = this._continueBound; - } - - return; - } - - if (this.stepper) { - this.stepper.updateOperatorList(this.operatorList); - } - - if (this.running) { - return; - } - - this._continue(); - } - - _continue() { - this.running = true; - - if (this.cancelled) { - return; - } - - if (this.task.onContinue) { - this.task.onContinue(this._scheduleNextBound); - } else { - this._scheduleNext(); - } - } - - _scheduleNext() { - if (this._useRequestAnimationFrame) { - window.requestAnimationFrame(() => { - this._nextBound().catch(this._cancelBound); - }); - } else { - Promise.resolve().then(this._nextBound).catch(this._cancelBound); - } - } - - async _next() { - if (this.cancelled) { - return; - } - - this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); - - if (this.operatorListIdx === this.operatorList.argsArray.length) { - this.running = false; - - if (this.operatorList.lastChunk) { - this.gfx.endDrawing(); - - if (this._canvas) { - InternalRenderTask.#canvasInUse.delete(this._canvas); - } - - this.callback(); - } - } - } - -} - -const version = '2.14.305'; -exports.version = version; -const build = 'eaaa8b4ad'; -exports.build = build; - -/***/ }), -/* 5 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0; -exports.deprecated = deprecated; -exports.getFilenameFromUrl = getFilenameFromUrl; -exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; -exports.getXfaPageViewport = getXfaPageViewport; -exports.isDataScheme = isDataScheme; -exports.isPdfFile = isPdfFile; -exports.isValidFetchUrl = isValidFetchUrl; -exports.loadScript = loadScript; - -var _base_factory = __w_pdfjs_require__(6); - -var _util = __w_pdfjs_require__(1); - -const SVG_NS = "http://www.w3.org/2000/svg"; - -class PixelsPerInch { - static CSS = 96.0; - static PDF = 72.0; - static PDF_TO_CSS_UNITS = this.CSS / this.PDF; -} - -exports.PixelsPerInch = PixelsPerInch; - -class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { - constructor({ - ownerDocument = globalThis.document - } = {}) { - super(); - this._document = ownerDocument; - } - - _createCanvas(width, height) { - const canvas = this._document.createElement("canvas"); - - canvas.width = width; - canvas.height = height; - return canvas; - } - -} - -exports.DOMCanvasFactory = DOMCanvasFactory; - -async function fetchData(url, asTypedArray = false) { - if (isValidFetchUrl(url, document.baseURI)) { - const response = await fetch(url); - - if (!response.ok) { - throw new Error(response.statusText); - } - - return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); - } - - return new Promise((resolve, reject) => { - const request = new XMLHttpRequest(); - request.open("GET", url, true); - - if (asTypedArray) { - request.responseType = "arraybuffer"; - } - - request.onreadystatechange = () => { - if (request.readyState !== XMLHttpRequest.DONE) { - return; - } - - if (request.status === 200 || request.status === 0) { - let data; - - if (asTypedArray && request.response) { - data = new Uint8Array(request.response); - } else if (!asTypedArray && request.responseText) { - data = (0, _util.stringToBytes)(request.responseText); - } - - if (data) { - resolve(data); - return; - } - } - - reject(new Error(request.statusText)); - }; - - request.send(null); - }); -} - -class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { - _fetchData(url, compressionType) { - return fetchData(url, this.isCompressed).then(data => { - return { - cMapData: data, - compressionType - }; - }); - } - -} - -exports.DOMCMapReaderFactory = DOMCMapReaderFactory; - -class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { - _fetchData(url) { - return fetchData(url, true); - } - -} - -exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; - -class DOMSVGFactory extends _base_factory.BaseSVGFactory { - _createSVG(type) { - return document.createElementNS(SVG_NS, type); - } - -} - -exports.DOMSVGFactory = DOMSVGFactory; - -class PageViewport { - constructor({ - viewBox, - scale, - rotation, - offsetX = 0, - offsetY = 0, - dontFlip = false - }) { - this.viewBox = viewBox; - this.scale = scale; - this.rotation = rotation; - this.offsetX = offsetX; - this.offsetY = offsetY; - const centerX = (viewBox[2] + viewBox[0]) / 2; - const centerY = (viewBox[3] + viewBox[1]) / 2; - let rotateA, rotateB, rotateC, rotateD; - rotation %= 360; - - if (rotation < 0) { - rotation += 360; - } - - switch (rotation) { - case 180: - rotateA = -1; - rotateB = 0; - rotateC = 0; - rotateD = 1; - break; - - case 90: - rotateA = 0; - rotateB = 1; - rotateC = 1; - rotateD = 0; - break; - - case 270: - rotateA = 0; - rotateB = -1; - rotateC = -1; - rotateD = 0; - break; - - case 0: - rotateA = 1; - rotateB = 0; - rotateC = 0; - rotateD = -1; - break; - - default: - throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); - } - - if (dontFlip) { - rotateC = -rotateC; - rotateD = -rotateD; - } - - let offsetCanvasX, offsetCanvasY; - let width, height; - - if (rotateA === 0) { - offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; - offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; - width = Math.abs(viewBox[3] - viewBox[1]) * scale; - height = Math.abs(viewBox[2] - viewBox[0]) * scale; - } else { - offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; - offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; - width = Math.abs(viewBox[2] - viewBox[0]) * scale; - height = Math.abs(viewBox[3] - viewBox[1]) * scale; - } - - this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY]; - this.width = width; - this.height = height; - } - - clone({ - scale = this.scale, - rotation = this.rotation, - offsetX = this.offsetX, - offsetY = this.offsetY, - dontFlip = false - } = {}) { - return new PageViewport({ - viewBox: this.viewBox.slice(), - scale, - rotation, - offsetX, - offsetY, - dontFlip - }); - } - - convertToViewportPoint(x, y) { - return _util.Util.applyTransform([x, y], this.transform); - } - - convertToViewportRectangle(rect) { - const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); - - const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); - - return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; - } - - convertToPdfPoint(x, y) { - return _util.Util.applyInverseTransform([x, y], this.transform); - } - -} - -exports.PageViewport = PageViewport; - -class RenderingCancelledException extends _util.BaseException { - constructor(msg, type) { - super(msg, "RenderingCancelledException"); - this.type = type; - } - -} - -exports.RenderingCancelledException = RenderingCancelledException; - -function isDataScheme(url) { - const ii = url.length; - let i = 0; - - while (i < ii && url[i].trim() === "") { - i++; - } - - return url.substring(i, i + 5).toLowerCase() === "data:"; -} - -function isPdfFile(filename) { - return typeof filename === "string" && /\.pdf$/i.test(filename); -} - -function getFilenameFromUrl(url) { - const anchor = url.indexOf("#"); - const query = url.indexOf("?"); - const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); - return url.substring(url.lastIndexOf("/", end) + 1, end); -} - -function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") { - if (typeof url !== "string") { - return defaultFilename; - } - - if (isDataScheme(url)) { - (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); - return defaultFilename; - } - - 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]); - - if (suggestedFilename) { - suggestedFilename = suggestedFilename[0]; - - if (suggestedFilename.includes("%")) { - try { - suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; - } catch (ex) {} - } - } - - return suggestedFilename || defaultFilename; -} - -class StatTimer { - constructor() { - this.started = Object.create(null); - this.times = []; - } - - time(name) { - if (name in this.started) { - (0, _util.warn)(`Timer is already running for ${name}`); - } - - this.started[name] = Date.now(); - } - - timeEnd(name) { - if (!(name in this.started)) { - (0, _util.warn)(`Timer has not been started for ${name}`); - } - - this.times.push({ - name, - start: this.started[name], - end: Date.now() - }); - delete this.started[name]; - } - - toString() { - const outBuf = []; - let longest = 0; - - for (const time of this.times) { - const name = time.name; - - if (name.length > longest) { - longest = name.length; - } - } - - for (const time of this.times) { - const duration = time.end - time.start; - outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`); - } - - return outBuf.join(""); - } - -} - -exports.StatTimer = StatTimer; - -function isValidFetchUrl(url, baseUrl) { - try { - const { - protocol - } = baseUrl ? new URL(url, baseUrl) : new URL(url); - return protocol === "http:" || protocol === "https:"; - } catch (ex) { - return false; - } -} - -function loadScript(src, removeScriptElement = false) { - return new Promise((resolve, reject) => { - const script = document.createElement("script"); - script.src = src; - - script.onload = function (evt) { - if (removeScriptElement) { - script.remove(); - } - - resolve(evt); - }; - - script.onerror = function () { - reject(new Error(`Cannot load script at: ${script.src}`)); - }; - - (document.head || document.documentElement).appendChild(script); - }); -} - -function deprecated(details) { - console.log("Deprecated API usage: " + details); -} - -let pdfDateStringRegex; - -class PDFDateString { - static toDateObject(input) { - if (!input || typeof input !== "string") { - return null; - } - - if (!pdfDateStringRegex) { - pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); - } - - const matches = pdfDateStringRegex.exec(input); - - if (!matches) { - return null; - } - - const year = parseInt(matches[1], 10); - let month = parseInt(matches[2], 10); - month = month >= 1 && month <= 12 ? month - 1 : 0; - let day = parseInt(matches[3], 10); - day = day >= 1 && day <= 31 ? day : 1; - let hour = parseInt(matches[4], 10); - hour = hour >= 0 && hour <= 23 ? hour : 0; - let minute = parseInt(matches[5], 10); - minute = minute >= 0 && minute <= 59 ? minute : 0; - let second = parseInt(matches[6], 10); - second = second >= 0 && second <= 59 ? second : 0; - const universalTimeRelation = matches[7] || "Z"; - let offsetHour = parseInt(matches[8], 10); - offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; - let offsetMinute = parseInt(matches[9], 10) || 0; - offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; - - if (universalTimeRelation === "-") { - hour += offsetHour; - minute += offsetMinute; - } else if (universalTimeRelation === "+") { - hour -= offsetHour; - minute -= offsetMinute; - } - - return new Date(Date.UTC(year, month, day, hour, minute, second)); - } - -} - -exports.PDFDateString = PDFDateString; - -function getXfaPageViewport(xfaPage, { - scale = 1, - rotation = 0 -}) { - const { - width, - height - } = xfaPage.attributes.style; - const viewBox = [0, 0, parseInt(width), parseInt(height)]; - return new PageViewport({ - viewBox, - scale, - rotation - }); -} - -/***/ }), -/* 6 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; - -var _util = __w_pdfjs_require__(1); - -class BaseCanvasFactory { - constructor() { - if (this.constructor === BaseCanvasFactory) { - (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); - } - } - - create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } - - const canvas = this._createCanvas(width, height); - - return { - canvas, - context: canvas.getContext("2d") - }; - } - - reset(canvasAndContext, width, height) { - if (!canvasAndContext.canvas) { - throw new Error("Canvas is not specified"); - } - - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } - - canvasAndContext.canvas.width = width; - canvasAndContext.canvas.height = height; - } - - destroy(canvasAndContext) { - if (!canvasAndContext.canvas) { - throw new Error("Canvas is not specified"); - } - - canvasAndContext.canvas.width = 0; - canvasAndContext.canvas.height = 0; - canvasAndContext.canvas = null; - canvasAndContext.context = null; - } - - _createCanvas(width, height) { - (0, _util.unreachable)("Abstract method `_createCanvas` called."); - } - -} - -exports.BaseCanvasFactory = BaseCanvasFactory; - -class BaseCMapReaderFactory { - constructor({ - baseUrl = null, - isCompressed = false - }) { - if (this.constructor === BaseCMapReaderFactory) { - (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); - } - - this.baseUrl = baseUrl; - this.isCompressed = isCompressed; - } - - async fetch({ - name - }) { - if (!this.baseUrl) { - throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); - } - - if (!name) { - throw new Error("CMap name must be specified."); - } - - const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); - const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; - return this._fetchData(url, compressionType).catch(reason => { - throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); - }); - } - - _fetchData(url, compressionType) { - (0, _util.unreachable)("Abstract method `_fetchData` called."); - } - -} - -exports.BaseCMapReaderFactory = BaseCMapReaderFactory; - -class BaseStandardFontDataFactory { - constructor({ - baseUrl = null - }) { - if (this.constructor === BaseStandardFontDataFactory) { - (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); - } - - this.baseUrl = baseUrl; - } - - async fetch({ - filename - }) { - if (!this.baseUrl) { - throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); - } - - if (!filename) { - throw new Error("Font filename must be specified."); - } - - const url = `${this.baseUrl}${filename}`; - return this._fetchData(url).catch(reason => { - throw new Error(`Unable to load font data at: ${url}`); - }); - } - - _fetchData(url) { - (0, _util.unreachable)("Abstract method `_fetchData` called."); - } - -} - -exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; - -class BaseSVGFactory { - constructor() { - if (this.constructor === BaseSVGFactory) { - (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); - } - } - - create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid SVG dimensions"); - } - - const svg = this._createSVG("svg:svg"); - - svg.setAttribute("version", "1.1"); - svg.setAttribute("width", `${width}px`); - svg.setAttribute("height", `${height}px`); - svg.setAttribute("preserveAspectRatio", "none"); - svg.setAttribute("viewBox", `0 0 ${width} ${height}`); - return svg; - } - - createElement(type) { - if (typeof type !== "string") { - throw new Error("Invalid SVG element type"); - } - - return this._createSVG(type); - } - - _createSVG(type) { - (0, _util.unreachable)("Abstract method `_createSVG` called."); - } - -} - -exports.BaseSVGFactory = BaseSVGFactory; - -/***/ }), -/* 7 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.FontLoader = exports.FontFaceObject = void 0; - -var _util = __w_pdfjs_require__(1); - -class BaseFontLoader { - constructor({ - docId, - onUnsupportedFeature, - ownerDocument = globalThis.document, - styleElement = null - }) { - if (this.constructor === BaseFontLoader) { - (0, _util.unreachable)("Cannot initialize BaseFontLoader."); - } - - this.docId = docId; - this._onUnsupportedFeature = onUnsupportedFeature; - this._document = ownerDocument; - this.nativeFontFaces = []; - this.styleElement = null; - } - - addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - - this._document.fonts.add(nativeFontFace); - } - - insertRule(rule) { - let styleElement = this.styleElement; - - if (!styleElement) { - styleElement = this.styleElement = this._document.createElement("style"); - styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`; - - this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement); - } - - const styleSheet = styleElement.sheet; - styleSheet.insertRule(rule, styleSheet.cssRules.length); - } - - clear() { - for (const nativeFontFace of this.nativeFontFaces) { - this._document.fonts.delete(nativeFontFace); - } - - this.nativeFontFaces.length = 0; - - if (this.styleElement) { - this.styleElement.remove(); - this.styleElement = null; - } - } - - async bind(font) { - if (font.attached || font.missingFile) { - return; - } - - font.attached = true; - - if (this.isFontLoadingAPISupported) { - const nativeFontFace = font.createNativeFontFace(); - - if (nativeFontFace) { - this.addNativeFontFace(nativeFontFace); - - try { - await nativeFontFace.loaded; - } catch (ex) { - this._onUnsupportedFeature({ - featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative - }); - - (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); - font.disableFontFace = true; - throw ex; - } - } - - return; - } - - const rule = font.createFontFaceRule(); - - if (rule) { - this.insertRule(rule); - - if (this.isSyncFontLoadingSupported) { - return; - } - - await new Promise(resolve => { - const request = this._queueLoadingCallback(resolve); - - this._prepareFontLoadEvent([rule], [font], request); - }); - } - } - - _queueLoadingCallback(callback) { - (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); - } - - get isFontLoadingAPISupported() { - const hasFonts = !!this._document?.fonts; - return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); - } - - get isSyncFontLoadingSupported() { - (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); - } - - get _loadTestFont() { - (0, _util.unreachable)("Abstract method `_loadTestFont`."); - } - - _prepareFontLoadEvent(rules, fontsToLoad, request) { - (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); - } - -} - -let FontLoader; -exports.FontLoader = FontLoader; -{ - exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader { - constructor(params) { - super(params); - this.loadingContext = { - requests: [], - nextRequestId: 0 - }; - this.loadTestFontId = 0; - } - - get isSyncFontLoadingSupported() { - let supported = false; - - if (typeof navigator === "undefined") { - supported = true; - } else { - const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - - if (m?.[1] >= 14) { - supported = true; - } - } - - return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); - } - - _queueLoadingCallback(callback) { - function completeRequest() { - (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); - request.done = true; - - while (context.requests.length > 0 && context.requests[0].done) { - const otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - - const context = this.loadingContext; - const request = { - id: `pdfjs-font-loading-${context.nextRequestId++}`, - done: false, - complete: completeRequest, - callback - }; - context.requests.push(request); - return request; - } - - get _loadTestFont() { - const getLoadTestFont = function () { - return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); - }; - - return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); - } - - _prepareFontLoadEvent(rules, fonts, request) { - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - - function spliceString(s, offset, remove, insert) { - const chunk1 = s.substring(0, offset); - const chunk2 = s.substring(offset + remove); - return chunk1 + insert + chunk2; - } - - let i, ii; - - const canvas = this._document.createElement("canvas"); - - canvas.width = 1; - canvas.height = 1; - const ctx = canvas.getContext("2d"); - let called = 0; - - function isFontReady(name, callback) { - called++; - - if (called > 30) { - (0, _util.warn)("Load test font never loaded."); - callback(); - return; - } - - ctx.font = "30px " + name; - ctx.fillText(".", 0, 20); - const imageData = ctx.getImageData(0, 0, 1, 1); - - if (imageData.data[3] > 0) { - callback(); - return; - } - - setTimeout(isFontReady.bind(null, name, callback)); - } - - const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; - let data = this._loadTestFont; - const COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - const CFF_CHECKSUM_OFFSET = 16; - const XXXX_VALUE = 0x58585858; - let checksum = int32(data, CFF_CHECKSUM_OFFSET); - - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; - } - - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); - const url = `url(data:font/opentype;base64,${btoa(data)});`; - const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; - this.insertRule(rule); - const names = []; - - for (const font of fonts) { - names.push(font.loadedName); - } - - names.push(loadTestFontId); - - const div = this._document.createElement("div"); - - div.style.visibility = "hidden"; - div.style.width = div.style.height = "10px"; - div.style.position = "absolute"; - div.style.top = div.style.left = "0px"; - - for (const name of names) { - const span = this._document.createElement("span"); - - span.textContent = "Hi"; - span.style.fontFamily = name; - div.appendChild(span); - } - - this._document.body.appendChild(div); - - isFontReady(loadTestFontId, () => { - div.remove(); - request.complete(); - }); - } - - }; -} - -class FontFaceObject { - constructor(translatedData, { - isEvalSupported = true, - disableFontFace = false, - ignoreErrors = false, - onUnsupportedFeature, - fontRegistry = null - }) { - this.compiledGlyphs = Object.create(null); - - for (const i in translatedData) { - this[i] = translatedData[i]; - } - - this.isEvalSupported = isEvalSupported !== false; - this.disableFontFace = disableFontFace === true; - this.ignoreErrors = ignoreErrors === true; - this._onUnsupportedFeature = onUnsupportedFeature; - this.fontRegistry = fontRegistry; - } - - createNativeFontFace() { - if (!this.data || this.disableFontFace) { - return null; - } - - let nativeFontFace; - - if (!this.cssFontInfo) { - nativeFontFace = new FontFace(this.loadedName, this.data, {}); - } else { - const css = { - weight: this.cssFontInfo.fontWeight - }; - - if (this.cssFontInfo.italicAngle) { - css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; - } - - nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); - } - - if (this.fontRegistry) { - this.fontRegistry.registerFont(this); - } - - return nativeFontFace; - } - - createFontFaceRule() { - if (!this.data || this.disableFontFace) { - return null; - } - - const data = (0, _util.bytesToString)(this.data); - const url = `url(data:${this.mimetype};base64,${btoa(data)});`; - let rule; - - if (!this.cssFontInfo) { - rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; - } else { - let css = `font-weight: ${this.cssFontInfo.fontWeight};`; - - if (this.cssFontInfo.italicAngle) { - css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; - } - - rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; - } - - if (this.fontRegistry) { - this.fontRegistry.registerFont(this, url); - } - - return rule; - } - - getPathGenerator(objs, character) { - if (this.compiledGlyphs[character] !== undefined) { - return this.compiledGlyphs[character]; - } - - let cmds; - - try { - cmds = objs.get(this.loadedName + "_path_" + character); - } catch (ex) { - if (!this.ignoreErrors) { - throw ex; - } - - this._onUnsupportedFeature({ - featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath - }); - - (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); - return this.compiledGlyphs[character] = function (c, size) {}; - } - - if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) { - const jsBuf = []; - - for (const current of cmds) { - const args = current.args !== undefined ? current.args.join(",") : ""; - jsBuf.push("c.", current.cmd, "(", args, ");\n"); - } - - return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); - } - - return this.compiledGlyphs[character] = function (c, size) { - for (const current of cmds) { - if (current.cmd === "scale") { - current.args = [size, -size]; - } - - c[current.cmd].apply(c, current.args); - } - }; - } - -} - -exports.FontFaceObject = FontFaceObject; - -/***/ }), -/* 8 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.AnnotationStorage = void 0; - -var _murmurhash = __w_pdfjs_require__(9); - -var _util = __w_pdfjs_require__(1); - -class AnnotationStorage { - constructor() { - this._storage = new Map(); - this._modified = false; - this.onSetModified = null; - this.onResetModified = null; - } - - getValue(key, defaultValue) { - const value = this._storage.get(key); - - if (value === undefined) { - return defaultValue; - } - - return Object.assign(defaultValue, value); - } - - getRawValue(key) { - return this._storage.get(key); - } - - setValue(key, value) { - 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 { - modified = true; - - this._storage.set(key, value); - } - - if (modified) { - this._setModified(); - } - } - - getAll() { - return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; - } - - get size() { - return this._storage.size; - } - - _setModified() { - if (!this._modified) { - this._modified = true; - - if (typeof this.onSetModified === "function") { - this.onSetModified(); - } - } - } - - resetModified() { - if (this._modified) { - this._modified = false; - - if (typeof this.onResetModified === "function") { - this.onResetModified(); - } - } - } - - get serializable() { - return this._storage.size > 0 ? this._storage : null; - } - - get hash() { - const hash = new _murmurhash.MurmurHash3_64(); - - for (const [key, value] of this._storage) { - hash.update(`${key}:${JSON.stringify(value)}`); - } - - return hash.hexdigest(); - } - -} - -exports.AnnotationStorage = AnnotationStorage; - -/***/ }), -/* 9 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MurmurHash3_64 = void 0; - -var _util = __w_pdfjs_require__(1); - -const SEED = 0xc3d2e1f0; -const MASK_HIGH = 0xffff0000; -const MASK_LOW = 0xffff; - -class MurmurHash3_64 { - constructor(seed) { - this.h1 = seed ? seed & 0xffffffff : SEED; - this.h2 = seed ? seed & 0xffffffff : SEED; - } - - update(input) { - let data, length; - - if (typeof input === "string") { - data = new Uint8Array(input.length * 2); - length = 0; - - for (let i = 0, ii = input.length; i < ii; i++) { - const code = input.charCodeAt(i); - - if (code <= 0xff) { - data[length++] = code; - } else { - data[length++] = code >>> 8; - data[length++] = code & 0xff; - } - } - } else if ((0, _util.isArrayBuffer)(input)) { - data = input.slice(); - length = data.byteLength; - } else { - throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); - } - - const blockCounts = length >> 2; - const tailLength = length - blockCounts * 4; - const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); - let k1 = 0, - k2 = 0; - let h1 = this.h1, - h2 = this.h2; - const C1 = 0xcc9e2d51, - C2 = 0x1b873593; - const C1_LOW = C1 & MASK_LOW, - C2_LOW = C2 & MASK_LOW; - - for (let i = 0; i < blockCounts; i++) { - if (i & 1) { - k1 = dataUint32[i]; - k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; - k1 = k1 << 15 | k1 >>> 17; - k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; - h1 ^= k1; - h1 = h1 << 13 | h1 >>> 19; - h1 = h1 * 5 + 0xe6546b64; - } else { - k2 = dataUint32[i]; - k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; - k2 = k2 << 15 | k2 >>> 17; - k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; - h2 ^= k2; - h2 = h2 << 13 | h2 >>> 19; - h2 = h2 * 5 + 0xe6546b64; - } - } - - k1 = 0; - - switch (tailLength) { - case 3: - k1 ^= data[blockCounts * 4 + 2] << 16; - - case 2: - k1 ^= data[blockCounts * 4 + 1] << 8; - - case 1: - k1 ^= data[blockCounts * 4]; - k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; - k1 = k1 << 15 | k1 >>> 17; - k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; - - if (blockCounts & 1) { - h1 ^= k1; - } else { - h2 ^= k1; - } - - } - - this.h1 = h1; - this.h2 = h2; - } - - hexdigest() { - let h1 = this.h1, - h2 = this.h2; - h1 ^= h2 >>> 1; - h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; - h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; - h1 ^= h2 >>> 1; - h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; - h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; - h1 ^= h2 >>> 1; - const hex1 = (h1 >>> 0).toString(16), - hex2 = (h2 >>> 0).toString(16); - return hex1.padStart(8, "0") + hex2.padStart(8, "0"); - } - -} - -exports.MurmurHash3_64 = MurmurHash3_64; - -/***/ }), -/* 10 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.CanvasGraphics = void 0; - -var _util = __w_pdfjs_require__(1); - -var _pattern_helper = __w_pdfjs_require__(11); - -var _image_utils = __w_pdfjs_require__(12); - -var _is_node = __w_pdfjs_require__(3); - -var _display_utils = __w_pdfjs_require__(5); - -const MIN_FONT_SIZE = 16; -const MAX_FONT_SIZE = 100; -const MAX_GROUP_SIZE = 4096; -const EXECUTION_TIME = 15; -const EXECUTION_STEPS = 10; -const COMPILE_TYPE3_GLYPHS = true; -const MAX_SIZE_TO_COMPILE = 1000; -const FULL_CHUNK_HEIGHT = 16; -const LINEWIDTH_SCALE_FACTOR = 1.000001; - -function mirrorContextOperations(ctx, destCtx) { - if (ctx._removeMirroring) { - throw new Error("Context is already forwarding operations."); - } - - ctx.__originalSave = ctx.save; - ctx.__originalRestore = ctx.restore; - ctx.__originalRotate = ctx.rotate; - ctx.__originalScale = ctx.scale; - ctx.__originalTranslate = ctx.translate; - ctx.__originalTransform = ctx.transform; - ctx.__originalSetTransform = ctx.setTransform; - ctx.__originalResetTransform = ctx.resetTransform; - ctx.__originalClip = ctx.clip; - ctx.__originalMoveTo = ctx.moveTo; - ctx.__originalLineTo = ctx.lineTo; - ctx.__originalBezierCurveTo = ctx.bezierCurveTo; - ctx.__originalRect = ctx.rect; - ctx.__originalClosePath = ctx.closePath; - ctx.__originalBeginPath = ctx.beginPath; - - ctx._removeMirroring = () => { - ctx.save = ctx.__originalSave; - ctx.restore = ctx.__originalRestore; - ctx.rotate = ctx.__originalRotate; - ctx.scale = ctx.__originalScale; - ctx.translate = ctx.__originalTranslate; - ctx.transform = ctx.__originalTransform; - ctx.setTransform = ctx.__originalSetTransform; - ctx.resetTransform = ctx.__originalResetTransform; - ctx.clip = ctx.__originalClip; - ctx.moveTo = ctx.__originalMoveTo; - ctx.lineTo = ctx.__originalLineTo; - ctx.bezierCurveTo = ctx.__originalBezierCurveTo; - ctx.rect = ctx.__originalRect; - ctx.closePath = ctx.__originalClosePath; - ctx.beginPath = ctx.__originalBeginPath; - delete ctx._removeMirroring; - }; - - ctx.save = function ctxSave() { - destCtx.save(); - - this.__originalSave(); - }; - - ctx.restore = function ctxRestore() { - destCtx.restore(); - - this.__originalRestore(); - }; - - ctx.translate = function ctxTranslate(x, y) { - destCtx.translate(x, y); - - this.__originalTranslate(x, y); - }; - - ctx.scale = function ctxScale(x, y) { - destCtx.scale(x, y); - - this.__originalScale(x, y); - }; - - ctx.transform = function ctxTransform(a, b, c, d, e, f) { - destCtx.transform(a, b, c, d, e, f); - - this.__originalTransform(a, b, c, d, e, f); - }; - - ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { - destCtx.setTransform(a, b, c, d, e, f); - - this.__originalSetTransform(a, b, c, d, e, f); - }; - - ctx.resetTransform = function ctxResetTransform() { - destCtx.resetTransform(); - - this.__originalResetTransform(); - }; - - ctx.rotate = function ctxRotate(angle) { - destCtx.rotate(angle); - - this.__originalRotate(angle); - }; - - ctx.clip = function ctxRotate(rule) { - destCtx.clip(rule); - - this.__originalClip(rule); - }; - - ctx.moveTo = function (x, y) { - destCtx.moveTo(x, y); - - this.__originalMoveTo(x, y); - }; - - ctx.lineTo = function (x, y) { - destCtx.lineTo(x, y); - - this.__originalLineTo(x, y); - }; - - ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { - destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); - - this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); - }; - - ctx.rect = function (x, y, width, height) { - destCtx.rect(x, y, width, height); - - this.__originalRect(x, y, width, height); - }; - - ctx.closePath = function () { - destCtx.closePath(); - - this.__originalClosePath(); - }; - - ctx.beginPath = function () { - destCtx.beginPath(); - - this.__originalBeginPath(); - }; -} - -function addContextCurrentTransform(ctx) { - if (ctx._transformStack) { - ctx._transformStack = []; - } - - if (ctx.mozCurrentTransform) { - return; - } - - ctx._originalSave = ctx.save; - ctx._originalRestore = ctx.restore; - ctx._originalRotate = ctx.rotate; - ctx._originalScale = ctx.scale; - ctx._originalTranslate = ctx.translate; - ctx._originalTransform = ctx.transform; - ctx._originalSetTransform = ctx.setTransform; - ctx._originalResetTransform = ctx.resetTransform; - ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; - ctx._transformStack = []; - - try { - const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth"); - ctx._setLineWidth = desc.set; - ctx._getLineWidth = desc.get; - Object.defineProperty(ctx, "lineWidth", { - set: function setLineWidth(width) { - this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR); - }, - get: function getLineWidth() { - return this._getLineWidth(); - } - }); - } catch (_) {} - - Object.defineProperty(ctx, "mozCurrentTransform", { - get: function getCurrentTransform() { - return this._transformMatrix; - } - }); - Object.defineProperty(ctx, "mozCurrentTransformInverse", { - get: function getCurrentTransformInverse() { - const [a, b, c, d, e, f] = this._transformMatrix; - 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() { - const old = this._transformMatrix; - - this._transformStack.push(old); - - this._transformMatrix = old.slice(0, 6); - - this._originalSave(); - }; - - ctx.restore = function ctxRestore() { - if (this._transformStack.length === 0) { - (0, _util.warn)("Tried to restore a ctx when the stack was already empty."); - } - - const prev = this._transformStack.pop(); - - if (prev) { - this._transformMatrix = prev; - - this._originalRestore(); - } - }; - - ctx.translate = function ctxTranslate(x, y) { - const m = this._transformMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - - this._originalTranslate(x, y); - }; - - ctx.scale = function ctxScale(x, y) { - const m = this._transformMatrix; - m[0] *= x; - m[1] *= x; - m[2] *= y; - m[3] *= y; - - this._originalScale(x, y); - }; - - ctx.transform = function ctxTransform(a, b, c, d, e, f) { - 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); - }; - - ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { - this._transformMatrix = [a, b, c, d, e, f]; - - ctx._originalSetTransform(a, b, c, d, e, f); - }; - - ctx.resetTransform = function ctxResetTransform() { - this._transformMatrix = [1, 0, 0, 1, 0, 0]; - - ctx._originalResetTransform(); - }; - - ctx.rotate = function ctxRotate(angle) { - 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); - }; -} - -class CachedCanvases { - constructor(canvasFactory) { - this.canvasFactory = canvasFactory; - this.cache = Object.create(null); - } - - getCanvas(id, width, height, trackTransform) { - let canvasEntry; - - if (this.cache[id] !== undefined) { - canvasEntry = this.cache[id]; - this.canvasFactory.reset(canvasEntry, width, height); - canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); - } else { - canvasEntry = this.canvasFactory.create(width, height); - this.cache[id] = canvasEntry; - } - - if (trackTransform) { - addContextCurrentTransform(canvasEntry.context); - } - - return canvasEntry; - } - - delete(id) { - delete this.cache[id]; - } - - clear() { - for (const id in this.cache) { - const canvasEntry = this.cache[id]; - this.canvasFactory.destroy(canvasEntry); - delete this.cache[id]; - } - } - -} - -function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) { - const [a, b, c, d, tx, ty] = ctx.mozCurrentTransform; - - if (b === 0 && c === 0) { - const tlX = destX * a + tx; - const rTlX = Math.round(tlX); - const tlY = destY * d + ty; - const rTlY = Math.round(tlY); - const brX = (destX + destW) * a + tx; - const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; - const brY = (destY + destH) * d + ty; - const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; - ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY); - ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight); - ctx.setTransform(a, b, c, d, tx, ty); - return [rWidth, rHeight]; - } - - if (a === 0 && d === 0) { - const tlX = destY * c + tx; - const rTlX = Math.round(tlX); - const tlY = destX * b + ty; - const rTlY = Math.round(tlY); - const brX = (destY + destH) * c + tx; - const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; - const brY = (destX + destW) * b + ty; - const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; - ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY); - ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth); - ctx.setTransform(a, b, c, d, tx, ty); - return [rHeight, rWidth]; - } - - ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH); - const scaleX = Math.hypot(a, b); - const scaleY = Math.hypot(c, d); - return [scaleX * destW, scaleY * destH]; -} - -function compileType3Glyph(imgData) { - const { - width, - height - } = imgData; - - if (!COMPILE_TYPE3_GLYPHS || width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { - return null; - } - - const POINT_TO_PROCESS_LIMIT = 1000; - const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); - const width1 = width + 1; - let points = new Uint8Array(width1 * (height + 1)); - let i, j, j0; - const lineSize = width + 7 & ~7; - let data = new Uint8Array(lineSize * height), - pos = 0; - - for (const elem of imgData.data) { - let mask = 128; - - while (mask > 0) { - data[pos++] = elem & mask ? 0 : 255; - mask >>= 1; - } - } - - let count = 0; - pos = 0; - - if (data[pos] !== 0) { - points[0] = 1; - ++count; - } - - for (j = 1; j < width; j++) { - if (data[pos] !== data[pos + 1]) { - points[j] = data[pos] ? 2 : 1; - ++count; - } - - pos++; - } - - if (data[pos] !== 0) { - points[j] = 2; - ++count; - } - - for (i = 1; i < height; i++) { - pos = i * lineSize; - j0 = i * width1; - - if (data[pos - lineSize] !== data[pos]) { - points[j0] = data[pos] ? 1 : 8; - ++count; - } - - 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); - - if (POINT_TYPES[sum]) { - points[j0 + j] = POINT_TYPES[sum]; - ++count; - } - - pos++; - } - - if (data[pos - lineSize] !== data[pos]) { - points[j0 + j] = data[pos] ? 2 : 4; - ++count; - } - - if (count > POINT_TO_PROCESS_LIMIT) { - return null; - } - } - - pos = lineSize * (height - 1); - j0 = i * width1; - - if (data[pos] !== 0) { - points[j0] = 8; - ++count; - } - - for (j = 1; j < width; j++) { - if (data[pos] !== data[pos + 1]) { - points[j0 + j] = data[pos] ? 4 : 8; - ++count; - } - - pos++; - } - - if (data[pos] !== 0) { - points[j0 + j] = 4; - ++count; - } - - if (count > POINT_TO_PROCESS_LIMIT) { - return null; - } - - const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); - let path, outlines, coords; - - if (!_is_node.isNodeJS) { - path = new Path2D(); - } else { - outlines = []; - } - - for (i = 0; count && i <= height; i++) { - let p = i * width1; - const end = p + width; - - while (p < end && !points[p]) { - p++; - } - - if (p === end) { - continue; - } - - if (path) { - path.moveTo(p % width1, i); - } else { - coords = [p % width1, i]; - } - - const p0 = p; - let type = points[p]; - - do { - const step = steps[type]; - - do { - p += step; - } while (!points[p]); - - const pp = points[p]; - - if (pp !== 5 && pp !== 10) { - type = pp; - points[p] = 0; - } else { - type = pp & 0x33 * type >> 4; - points[p] &= type >> 2 | type << 2; - } - - if (path) { - path.lineTo(p % width1, p / width1 | 0); - } else { - coords.push(p % width1, p / width1 | 0); - } - - if (!points[p]) { - --count; - } - } while (p0 !== p); - - if (!path) { - outlines.push(coords); - } - - --i; - } - - data = null; - points = null; - - const drawOutline = function (c) { - c.save(); - c.scale(1 / width, -1 / height); - c.translate(0, -height); - - if (path) { - c.fill(path); - } else { - c.beginPath(); - - for (const o of outlines) { - c.moveTo(o[0], o[1]); - - for (let l = 2, ll = o.length; l < ll; l += 2) { - c.lineTo(o[l], o[l + 1]); - } - } - - c.fill(); - } - - c.beginPath(); - c.restore(); - }; - - return drawOutline; -} - -class CanvasExtraState { - constructor(width, height) { - this.alphaIsShape = false; - this.fontSize = 0; - this.fontSizeScale = 1; - this.textMatrix = _util.IDENTITY_MATRIX; - this.textMatrixScale = 1; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.leading = 0; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRenderingMode = _util.TextRenderingMode.FILL; - this.textRise = 0; - this.fillColor = "#000000"; - this.strokeColor = "#000000"; - this.patternFill = false; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.activeSMask = null; - this.transferMaps = null; - this.startNewPathAndClipBox([0, 0, width, height]); - } - - clone() { - const clone = Object.create(this); - clone.clipBox = this.clipBox.slice(); - return clone; - } - - setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - - updatePathMinMax(transform, x, y) { - [x, y] = _util.Util.applyTransform([x, y], transform); - this.minX = Math.min(this.minX, x); - this.minY = Math.min(this.minY, y); - this.maxX = Math.max(this.maxX, x); - this.maxY = Math.max(this.maxY, y); - } - - updateRectMinMax(transform, rect) { - const p1 = _util.Util.applyTransform(rect, transform); - - const p2 = _util.Util.applyTransform(rect.slice(2), transform); - - this.minX = Math.min(this.minX, p1[0], p2[0]); - this.minY = Math.min(this.minY, p1[1], p2[1]); - this.maxX = Math.max(this.maxX, p1[0], p2[0]); - this.maxY = Math.max(this.maxY, p1[1], p2[1]); - } - - updateScalingPathMinMax(transform, minMax) { - _util.Util.scaleMinMax(transform, minMax); - - this.minX = Math.min(this.minX, minMax[0]); - this.maxX = Math.max(this.maxX, minMax[1]); - this.minY = Math.min(this.minY, minMax[2]); - this.maxY = Math.max(this.maxY, minMax[3]); - } - - updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) { - const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3); - - if (minMax) { - minMax[0] = Math.min(minMax[0], box[0], box[2]); - minMax[1] = Math.max(minMax[1], box[0], box[2]); - minMax[2] = Math.min(minMax[2], box[1], box[3]); - minMax[3] = Math.max(minMax[3], box[1], box[3]); - return; - } - - this.updateRectMinMax(transform, box); - } - - getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { - const box = [this.minX, this.minY, this.maxX, this.maxY]; - - if (pathType === _pattern_helper.PathType.STROKE) { - if (!transform) { - (0, _util.unreachable)("Stroke bounding box must include transform."); - } - - const scale = _util.Util.singularValueDecompose2dScale(transform); - - const xStrokePad = scale[0] * this.lineWidth / 2; - const yStrokePad = scale[1] * this.lineWidth / 2; - box[0] -= xStrokePad; - box[1] -= yStrokePad; - box[2] += xStrokePad; - box[3] += yStrokePad; - } - - return box; - } - - updateClipFromPath() { - const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox()); - - this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]); - } - - isEmptyClip() { - return this.minX === Infinity; - } - - startNewPathAndClipBox(box) { - this.clipBox = box; - this.minX = Infinity; - this.minY = Infinity; - this.maxX = 0; - this.maxY = 0; - } - - getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { - return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); - } - -} - -function putBinaryImageData(ctx, imgData, transferMaps = null) { - if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { - ctx.putImageData(imgData, 0, 0); - return; - } - - 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; - const src = imgData.data; - const dest = chunkImgData.data; - let i, j, thisChunkHeight, elemsInThisChunk; - let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; - - if (transferMaps) { - switch (transferMaps.length) { - case 1: - transferMapRed = transferMaps[0]; - transferMapGreen = transferMaps[0]; - transferMapBlue = transferMaps[0]; - transferMapGray = transferMaps[0]; - break; - - case 4: - transferMapRed = transferMaps[0]; - transferMapGreen = transferMaps[1]; - transferMapBlue = transferMaps[2]; - transferMapGray = transferMaps[3]; - break; - } - } - - if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { - 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.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; - - if (transferMapGray) { - if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { - [white, black] = [black, white]; - } - } - - for (i = 0; i < totalChunks; i++) { - thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - destPos = 0; - - for (j = 0; j < thisChunkHeight; j++) { - const srcDiff = srcLength - srcPos; - let k = 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++]; - dest32[destPos++] = srcByte & 128 ? white : black; - dest32[destPos++] = srcByte & 64 ? white : black; - dest32[destPos++] = srcByte & 32 ? white : black; - dest32[destPos++] = srcByte & 16 ? white : black; - dest32[destPos++] = srcByte & 8 ? white : black; - dest32[destPos++] = srcByte & 4 ? white : black; - dest32[destPos++] = srcByte & 2 ? white : black; - dest32[destPos++] = srcByte & 1 ? white : black; - } - - for (; k < kEnd; k++) { - if (mask === 0) { - srcByte = src[srcPos++]; - mask = 128; - } - - dest32[destPos++] = srcByte & mask ? white : black; - mask >>= 1; - } - } - - while (destPos < dest32DataLength) { - dest32[destPos++] = 0; - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { - const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); - j = 0; - elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; - - for (i = 0; i < fullChunks; i++) { - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - srcPos += elemsInThisChunk; - - if (hasTransferMaps) { - for (let k = 0; k < elemsInThisChunk; k += 4) { - if (transferMapRed) { - dest[k + 0] = transferMapRed[dest[k + 0]]; - } - - if (transferMapGreen) { - dest[k + 1] = transferMapGreen[dest[k + 1]]; - } - - if (transferMapBlue) { - dest[k + 2] = transferMapBlue[dest[k + 2]]; - } - } - } - - ctx.putImageData(chunkImgData, 0, j); - j += FULL_CHUNK_HEIGHT; - } - - if (i < totalChunks) { - elemsInThisChunk = width * partialChunkHeight * 4; - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - - if (hasTransferMaps) { - for (let k = 0; k < elemsInThisChunk; k += 4) { - if (transferMapRed) { - dest[k + 0] = transferMapRed[dest[k + 0]]; - } - - if (transferMapGreen) { - dest[k + 1] = transferMapGreen[dest[k + 1]]; - } - - if (transferMapBlue) { - dest[k + 2] = transferMapBlue[dest[k + 2]]; - } - } - } - - ctx.putImageData(chunkImgData, 0, j); - } - } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { - const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); - thisChunkHeight = FULL_CHUNK_HEIGHT; - elemsInThisChunk = width * thisChunkHeight; - - for (i = 0; i < totalChunks; i++) { - if (i >= fullChunks) { - thisChunkHeight = partialChunkHeight; - elemsInThisChunk = width * thisChunkHeight; - } - - destPos = 0; - - for (j = elemsInThisChunk; j--;) { - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = 255; - } - - if (hasTransferMaps) { - for (let k = 0; k < destPos; k += 4) { - if (transferMapRed) { - dest[k + 0] = transferMapRed[dest[k + 0]]; - } - - if (transferMapGreen) { - dest[k + 1] = transferMapGreen[dest[k + 1]]; - } - - if (transferMapBlue) { - dest[k + 2] = transferMapBlue[dest[k + 2]]; - } - } - } - - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else { - throw new Error(`bad image kind: ${imgData.kind}`); - } -} - -function putBinaryImageMask(ctx, imgData) { - if (imgData.bitmap) { - ctx.drawImage(imgData.bitmap, 0, 0); - return; - } - - 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; - ({ - srcPos - } = (0, _image_utils.applyMaskImageData)({ - src, - srcPos, - dest, - width, - height: thisChunkHeight - })); - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } -} - -function copyCtxState(sourceCtx, destCtx) { - const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; - - for (let i = 0, ii = properties.length; i < ii; i++) { - const property = properties[i]; - - if (sourceCtx[property] !== undefined) { - destCtx[property] = sourceCtx[property]; - } - } - - if (sourceCtx.setLineDash !== undefined) { - destCtx.setLineDash(sourceCtx.getLineDash()); - destCtx.lineDashOffset = sourceCtx.lineDashOffset; - } -} - -function resetCtxToDefault(ctx, foregroundColor) { - ctx.strokeStyle = ctx.fillStyle = foregroundColor || "#000000"; - ctx.fillRule = "nonzero"; - ctx.globalAlpha = 1; - ctx.lineWidth = 1; - ctx.lineCap = "butt"; - ctx.lineJoin = "miter"; - ctx.miterLimit = 10; - ctx.globalCompositeOperation = "source-over"; - ctx.font = "10px sans-serif"; - - if (ctx.setLineDash !== undefined) { - ctx.setLineDash([]); - ctx.lineDashOffset = 0; - } -} - -function composeSMaskBackdrop(bytes, r0, g0, b0) { - const length = bytes.length; - - 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) { - 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; - } - } -} - -function composeSMaskAlpha(maskData, layerData, transferMap) { - const length = maskData.length; - const scale = 1 / 255; - - 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) { - const length = maskData.length; - - 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, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) { - 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; - } else { - composeFn = composeSMaskAlpha; - } - - const PIXELS_TO_PROCESS = 1048576; - const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); - - for (let row = 0; row < height; row += chunkSize) { - const chunkHeight = Math.min(chunkSize, height - row); - const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight); - const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight); - - if (hasBackdrop) { - composeSMaskBackdrop(maskData.data, r0, g0, b0); - } - - composeFn(maskData.data, layerData.data, transferMap); - layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY); - } -} - -function composeSMask(ctx, smask, layerCtx, layerBox) { - const layerOffsetX = layerBox[0]; - const layerOffsetY = layerBox[1]; - const layerWidth = layerBox[2] - layerOffsetX; - const layerHeight = layerBox[3] - layerOffsetY; - - if (layerWidth === 0 || layerHeight === 0) { - return; - } - - genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY); - ctx.save(); - ctx.globalAlpha = 1; - ctx.globalCompositeOperation = "source-over"; - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.drawImage(layerCtx.canvas, 0, 0); - ctx.restore(); -} - -function getImageSmoothingEnabled(transform, interpolate) { - const scale = _util.Util.singularValueDecompose2dScale(transform); - - scale[0] = Math.fround(scale[0]); - scale[1] = Math.fround(scale[1]); - const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); - - if (interpolate !== undefined) { - return interpolate; - } else if (scale[0] <= actualScale || scale[1] <= actualScale) { - return true; - } - - return false; -} - -const LINE_CAP_STYLES = ["butt", "round", "square"]; -const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; -const NORMAL_CLIP = {}; -const EO_CLIP = {}; - -class CanvasGraphics { - constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) { - this.ctx = canvasCtx; - this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); - this.stateStack = []; - this.pendingClip = null; - this.pendingEOFill = false; - this.res = null; - this.xobjs = null; - this.commonObjs = commonObjs; - this.objs = objs; - this.canvasFactory = canvasFactory; - this.imageLayer = imageLayer; - this.groupStack = []; - this.processingType3 = null; - this.baseTransform = null; - this.baseTransformStack = []; - this.groupLevel = 0; - this.smaskStack = []; - this.smaskCounter = 0; - this.tempSMask = null; - this.suspendedCtx = null; - this.contentVisible = true; - this.markedContentStack = []; - this.optionalContentConfig = optionalContentConfig; - this.cachedCanvases = new CachedCanvases(this.canvasFactory); - this.cachedPatterns = new Map(); - this.annotationCanvasMap = annotationCanvasMap; - this.viewportScale = 1; - this.outputScaleX = 1; - this.outputScaleY = 1; - this.backgroundColor = pageColors?.background || null; - this.foregroundColor = pageColors?.foreground || null; - - if (canvasCtx) { - addContextCurrentTransform(canvasCtx); - } - - this._cachedScaleForStroking = null; - this._cachedGetSinglePixelWidth = null; - this._cachedBitmapsMap = new Map(); - } - - getObject(data, fallback = null) { - if (typeof data === "string") { - return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); - } - - return fallback; - } - - beginDrawing({ - transform, - viewport, - transparency = false, - background = null - }) { - const width = this.ctx.canvas.width; - const height = this.ctx.canvas.height; - const defaultBackgroundColor = background || "#ffffff"; - this.ctx.save(); - - if (this.foregroundColor && this.backgroundColor) { - this.ctx.fillStyle = this.foregroundColor; - const fg = this.foregroundColor = this.ctx.fillStyle; - this.ctx.fillStyle = this.backgroundColor; - const bg = this.backgroundColor = this.ctx.fillStyle; - let isValidDefaultBg = true; - let defaultBg = defaultBackgroundColor; - this.ctx.fillStyle = defaultBackgroundColor; - defaultBg = this.ctx.fillStyle; - isValidDefaultBg = typeof defaultBg === "string" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg); - - if (fg === "#000000" && bg === "#ffffff" || fg === bg || !isValidDefaultBg) { - this.foregroundColor = this.backgroundColor = null; - } else { - const cB = parseInt(defaultBg.slice(1), 16); - const rB = (cB && 0xff0000) >> 16; - const gB = (cB && 0x00ff00) >> 8; - const bB = cB && 0x0000ff; - - const newComp = x => { - x /= 255; - return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; - }; - - const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)); - - this.selectColor = (r, g, b) => { - const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b); - return Math.round(lumC) === lumB ? bg : fg; - }; - } - } - - this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor; - this.ctx.fillRect(0, 0, width, height); - this.ctx.restore(); - - if (transparency) { - const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true); - this.compositeCtx = this.ctx; - this.transparentCanvas = transparentCanvas.canvas; - this.ctx = transparentCanvas.context; - this.ctx.save(); - this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); - } - - this.ctx.save(); - resetCtxToDefault(this.ctx, this.foregroundColor); - - if (transform) { - this.ctx.transform.apply(this.ctx, transform); - this.outputScaleX = transform[0]; - this.outputScaleY = transform[0]; - } - - this.ctx.transform.apply(this.ctx, viewport.transform); - this.viewportScale = viewport.scale; - this.baseTransform = this.ctx.mozCurrentTransform.slice(); - - if (this.imageLayer) { - this.imageLayer.beginLayout(); - } - } - - executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { - const argsArray = operatorList.argsArray; - const fnArray = operatorList.fnArray; - let i = executionStartIdx || 0; - const argsArrayLen = argsArray.length; - - if (argsArrayLen === i) { - return i; - } - - 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) { - stepper.breakIt(i, continueCallback); - return i; - } - - fnId = fnArray[i]; - - if (fnId !== _util.OPS.dependency) { - this[fnId].apply(this, argsArray[i]); - } else { - for (const depObjId of argsArray[i]) { - const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; - - if (!objsPool.has(depObjId)) { - objsPool.get(depObjId, continueCallback); - return i; - } - } - } - - i++; - - if (i === argsArrayLen) { - return i; - } - - if (chunkOperations && ++steps > EXECUTION_STEPS) { - if (Date.now() > endTime) { - continueCallback(); - return i; - } - - steps = 0; - } - } - } - - endDrawing() { - while (this.stateStack.length || this.inSMaskMode) { - this.restore(); - } - - this.ctx.restore(); - - if (this.transparentCanvas) { - this.ctx = this.compositeCtx; - this.ctx.save(); - this.ctx.setTransform(1, 0, 0, 1, 0, 0); - this.ctx.drawImage(this.transparentCanvas, 0, 0); - this.ctx.restore(); - this.transparentCanvas = null; - } - - this.cachedCanvases.clear(); - this.cachedPatterns.clear(); - - for (const cache of this._cachedBitmapsMap.values()) { - for (const canvas of cache.values()) { - if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) { - canvas.width = canvas.height = 0; - } - } - - cache.clear(); - } - - this._cachedBitmapsMap.clear(); - - if (this.imageLayer) { - this.imageLayer.endLayout(); - } - } - - _scaleImage(img, inverseTransform) { - const width = img.width; - const height = img.height; - let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); - let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); - let paintWidth = width, - paintHeight = height; - let tmpCanvasId = "prescale1"; - let tmpCanvas, tmpCtx; - - while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { - let newWidth = paintWidth, - newHeight = paintHeight; - - if (widthScale > 2 && paintWidth > 1) { - newWidth = Math.ceil(paintWidth / 2); - widthScale /= paintWidth / newWidth; - } - - if (heightScale > 2 && paintHeight > 1) { - newHeight = Math.ceil(paintHeight / 2); - heightScale /= paintHeight / newHeight; - } - - tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight, false); - tmpCtx = tmpCanvas.context; - tmpCtx.clearRect(0, 0, newWidth, newHeight); - tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); - img = tmpCanvas.canvas; - paintWidth = newWidth; - paintHeight = newHeight; - tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; - } - - return { - img, - paintWidth, - paintHeight - }; - } - - _createMaskCanvas(img) { - const ctx = this.ctx; - const { - width, - height - } = img; - const fillColor = this.current.fillColor; - const isPatternFill = this.current.patternFill; - const currentTransform = ctx.mozCurrentTransform; - let cache, cacheKey, scaled, maskCanvas; - - if ((img.bitmap || img.data) && img.count > 1) { - const mainKey = img.bitmap || img.data.buffer; - const withoutTranslation = currentTransform.slice(0, 4); - cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]); - cache = this._cachedBitmapsMap.get(mainKey); - - if (!cache) { - cache = new Map(); - - this._cachedBitmapsMap.set(mainKey, cache); - } - - const cachedImage = cache.get(cacheKey); - - if (cachedImage && !isPatternFill) { - const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]); - const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]); - return { - canvas: cachedImage, - offsetX, - offsetY - }; - } - - scaled = cachedImage; - } - - if (!scaled) { - maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height, false); - putBinaryImageMask(maskCanvas.context, img); - } - - let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]); - - maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); - - const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); - - const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); - - const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); - - const drawnWidth = Math.round(rect[2] - rect[0]) || 1; - const drawnHeight = Math.round(rect[3] - rect[1]) || 1; - const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true); - const fillCtx = fillCanvas.context; - const offsetX = Math.min(cord1[0], cord2[0]); - const offsetY = Math.min(cord1[1], cord2[1]); - fillCtx.translate(-offsetX, -offsetY); - fillCtx.transform.apply(fillCtx, maskToCanvas); - - if (!scaled) { - scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse); - scaled = scaled.img; - - if (cache && isPatternFill) { - cache.set(cacheKey, scaled); - } - } - - fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate); - drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); - fillCtx.globalCompositeOperation = "source-in"; - - const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]); - - fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor; - fillCtx.fillRect(0, 0, width, height); - - if (cache && !isPatternFill) { - this.cachedCanvases.delete("fillCanvas"); - cache.set(cacheKey, fillCanvas.canvas); - } - - return { - canvas: fillCanvas.canvas, - offsetX: Math.round(offsetX), - offsetY: Math.round(offsetY) - }; - } - - setLineWidth(width) { - if (width !== this.current.lineWidth) { - this._cachedScaleForStroking = null; - } - - this.current.lineWidth = width; - this.ctx.lineWidth = width; - } - - setLineCap(style) { - this.ctx.lineCap = LINE_CAP_STYLES[style]; - } - - setLineJoin(style) { - this.ctx.lineJoin = LINE_JOIN_STYLES[style]; - } - - setMiterLimit(limit) { - this.ctx.miterLimit = limit; - } - - setDash(dashArray, dashPhase) { - const ctx = this.ctx; - - if (ctx.setLineDash !== undefined) { - ctx.setLineDash(dashArray); - ctx.lineDashOffset = dashPhase; - } - } - - setRenderingIntent(intent) {} - - setFlatness(flatness) {} - - setGState(states) { - 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": - this.setLineWidth(value); - break; - - case "LC": - this.setLineCap(value); - break; - - case "LJ": - this.setLineJoin(value); - break; - - case "ML": - this.setMiterLimit(value); - break; - - case "D": - this.setDash(value[0], value[1]); - break; - - case "RI": - this.setRenderingIntent(value); - break; - - case "FL": - this.setFlatness(value); - break; - - case "Font": - this.setFont(value[0], value[1]); - break; - - case "CA": - this.current.strokeAlpha = state[1]; - break; - - case "ca": - this.current.fillAlpha = state[1]; - this.ctx.globalAlpha = state[1]; - break; - - case "BM": - this.ctx.globalCompositeOperation = value; - break; - - case "SMask": - this.current.activeSMask = value ? this.tempSMask : null; - this.tempSMask = null; - this.checkSMaskState(); - break; - - case "TR": - this.current.transferMaps = value; - } - } - } - - get inSMaskMode() { - return !!this.suspendedCtx; - } - - checkSMaskState() { - const inSMaskMode = this.inSMaskMode; - - if (this.current.activeSMask && !inSMaskMode) { - this.beginSMaskMode(); - } else if (!this.current.activeSMask && inSMaskMode) { - this.endSMaskMode(); - } - } - - beginSMaskMode() { - if (this.inSMaskMode) { - throw new Error("beginSMaskMode called while already in smask mode"); - } - - const drawnWidth = this.ctx.canvas.width; - const drawnHeight = this.ctx.canvas.height; - const cacheId = "smaskGroupAt" + this.groupLevel; - const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - this.suspendedCtx = this.ctx; - this.ctx = scratchCanvas.context; - const ctx = this.ctx; - ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform); - copyCtxState(this.suspendedCtx, ctx); - mirrorContextOperations(ctx, this.suspendedCtx); - this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); - } - - endSMaskMode() { - if (!this.inSMaskMode) { - throw new Error("endSMaskMode called while not in smask mode"); - } - - this.ctx._removeMirroring(); - - copyCtxState(this.ctx, this.suspendedCtx); - this.ctx = this.suspendedCtx; - this.suspendedCtx = null; - } - - compose(dirtyBox) { - if (!this.current.activeSMask) { - return; - } - - if (!dirtyBox) { - dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height]; - } else { - dirtyBox[0] = Math.floor(dirtyBox[0]); - dirtyBox[1] = Math.floor(dirtyBox[1]); - dirtyBox[2] = Math.ceil(dirtyBox[2]); - dirtyBox[3] = Math.ceil(dirtyBox[3]); - } - - const smask = this.current.activeSMask; - const suspendedCtx = this.suspendedCtx; - composeSMask(suspendedCtx, smask, this.ctx, dirtyBox); - this.ctx.save(); - this.ctx.setTransform(1, 0, 0, 1, 0, 0); - this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); - this.ctx.restore(); - } - - save() { - if (this.inSMaskMode) { - copyCtxState(this.ctx, this.suspendedCtx); - this.suspendedCtx.save(); - } else { - this.ctx.save(); - } - - const old = this.current; - this.stateStack.push(old); - this.current = old.clone(); - } - - restore() { - if (this.stateStack.length === 0 && this.inSMaskMode) { - this.endSMaskMode(); - } - - if (this.stateStack.length !== 0) { - this.current = this.stateStack.pop(); - - if (this.inSMaskMode) { - this.suspendedCtx.restore(); - copyCtxState(this.suspendedCtx, this.ctx); - } else { - this.ctx.restore(); - } - - this.checkSMaskState(); - this.pendingClip = null; - this._cachedScaleForStroking = null; - this._cachedGetSinglePixelWidth = null; - } - } - - transform(a, b, c, d, e, f) { - this.ctx.transform(a, b, c, d, e, f); - this._cachedScaleForStroking = null; - this._cachedGetSinglePixelWidth = null; - } - - constructPath(ops, args, minMax) { - const ctx = this.ctx; - const current = this.current; - let x = current.x, - y = current.y; - let startX, startY; - const currentTransform = ctx.mozCurrentTransform; - const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0; - const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null; - - 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++]; - const width = args[j++]; - const height = args[j++]; - const xw = x + width; - const yh = y + height; - ctx.moveTo(x, y); - - if (width === 0 || height === 0) { - ctx.lineTo(xw, yh); - } else { - ctx.lineTo(xw, y); - ctx.lineTo(xw, yh); - ctx.lineTo(x, yh); - } - - if (!isScalingMatrix) { - current.updateRectMinMax(currentTransform, [x, y, xw, yh]); - } - - ctx.closePath(); - break; - - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - ctx.moveTo(x, y); - - if (!isScalingMatrix) { - current.updatePathMinMax(currentTransform, x, y); - } - - break; - - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - ctx.lineTo(x, y); - - if (!isScalingMatrix) { - current.updatePathMinMax(currentTransform, x, y); - } - - break; - - case _util.OPS.curveTo: - startX = x; - startY = y; - x = args[j + 4]; - y = args[j + 5]; - ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); - current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier); - j += 6; - break; - - case _util.OPS.curveTo2: - startX = x; - startY = y; - ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); - current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; - - case _util.OPS.curveTo3: - startX = x; - startY = y; - x = args[j + 2]; - y = args[j + 3]; - ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); - current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier); - j += 4; - break; - - case _util.OPS.closePath: - ctx.closePath(); - break; - } - } - - if (isScalingMatrix) { - current.updateScalingPathMinMax(currentTransform, minMaxForBezier); - } - - current.setCurrentPoint(x, y); - } - - closePath() { - this.ctx.closePath(); - } - - stroke(consumePath) { - consumePath = typeof consumePath !== "undefined" ? consumePath : true; - const ctx = this.ctx; - const strokeColor = this.current.strokeColor; - ctx.globalAlpha = this.current.strokeAlpha; - - if (this.contentVisible) { - if (typeof strokeColor === "object" && strokeColor?.getPattern) { - ctx.save(); - ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE); - this.rescaleAndStroke(false); - ctx.restore(); - } else { - this.rescaleAndStroke(true); - } - } - - if (consumePath) { - this.consumePath(this.current.getClippedPathBoundingBox()); - } - - ctx.globalAlpha = this.current.fillAlpha; - } - - closeStroke() { - this.closePath(); - this.stroke(); - } - - fill(consumePath) { - consumePath = typeof consumePath !== "undefined" ? consumePath : true; - const ctx = this.ctx; - const fillColor = this.current.fillColor; - const isPatternFill = this.current.patternFill; - let needRestore = false; - - if (isPatternFill) { - ctx.save(); - ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL); - needRestore = true; - } - - const intersect = this.current.getClippedPathBoundingBox(); - - if (this.contentVisible && intersect !== null) { - if (this.pendingEOFill) { - ctx.fill("evenodd"); - this.pendingEOFill = false; - } else { - ctx.fill(); - } - } - - if (needRestore) { - ctx.restore(); - } - - if (consumePath) { - this.consumePath(intersect); - } - } - - eoFill() { - this.pendingEOFill = true; - this.fill(); - } - - fillStroke() { - this.fill(false); - this.stroke(false); - this.consumePath(); - } - - eoFillStroke() { - this.pendingEOFill = true; - this.fillStroke(); - } - - closeFillStroke() { - this.closePath(); - this.fillStroke(); - } - - closeEOFillStroke() { - this.pendingEOFill = true; - this.closePath(); - this.fillStroke(); - } - - endPath() { - this.consumePath(); - } - - clip() { - this.pendingClip = NORMAL_CLIP; - } - - eoClip() { - this.pendingClip = EO_CLIP; - } - - beginText() { - this.current.textMatrix = _util.IDENTITY_MATRIX; - this.current.textMatrixScale = 1; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - } - - endText() { - const paths = this.pendingTextPaths; - const ctx = this.ctx; - - if (paths === undefined) { - ctx.beginPath(); - return; - } - - ctx.save(); - ctx.beginPath(); - - 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); - } - - ctx.restore(); - ctx.clip(); - ctx.beginPath(); - delete this.pendingTextPaths; - } - - setCharSpacing(spacing) { - this.current.charSpacing = spacing; - } - - setWordSpacing(spacing) { - this.current.wordSpacing = spacing; - } - - setHScale(scale) { - this.current.textHScale = scale / 100; - } - - setLeading(leading) { - this.current.leading = -leading; - } - - setFont(fontRefName, size) { - 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 || _util.FONT_IDENTITY_MATRIX; - - if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - (0, _util.warn)("Invalid font matrix for font " + fontRefName); - } - - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - - this.current.font = fontObj; - this.current.fontSize = size; - - if (fontObj.isType3Font) { - return; - } - - const name = fontObj.loadedName || "sans-serif"; - let bold = "normal"; - - if (fontObj.black) { - bold = "900"; - } else if (fontObj.bold) { - bold = "bold"; - } - - const italic = fontObj.italic ? "italic" : "normal"; - const typeface = `"${name}", ${fontObj.fallbackName}`; - let browserFontSize = size; - - if (size < MIN_FONT_SIZE) { - browserFontSize = MIN_FONT_SIZE; - } else if (size > MAX_FONT_SIZE) { - browserFontSize = MAX_FONT_SIZE; - } - - this.current.fontSizeScale = size / browserFontSize; - this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; - } - - setTextRenderingMode(mode) { - this.current.textRenderingMode = mode; - } - - setTextRise(rise) { - this.current.textRise = rise; - } - - moveText(x, y) { - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - } - - setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - } - - setTextMatrix(a, b, c, d, e, f) { - this.current.textMatrix = [a, b, c, d, e, f]; - this.current.textMatrixScale = Math.hypot(a, b); - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - } - - nextLine() { - this.moveText(0, this.current.leading); - } - - paintChar(character, x, y, patternTransform) { - 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; - let addToPath; - - if (font.disableFontFace || isAddToPathSet || patternFill) { - addToPath = font.getPathGenerator(this.commonObjs, character); - } - - if (font.disableFontFace || patternFill) { - ctx.save(); - ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); - - if (patternTransform) { - ctx.setTransform.apply(ctx, patternTransform); - } - - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fill(); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.stroke(); - } - - ctx.restore(); - } else { - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fillText(character, x, y); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.strokeText(character, x, y); - } - } - - if (isAddToPathSet) { - const paths = this.pendingTextPaths || (this.pendingTextPaths = []); - paths.push({ - transform: ctx.mozCurrentTransform, - x, - y, - fontSize, - addToPath - }); - } - } - - get isFontSubpixelAAEnabled() { - const { - context: ctx - } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10, false); - ctx.scale(1.5, 1); - ctx.fillText("I", 0, 10); - const data = ctx.getImageData(0, 0, 10, 10).data; - let enabled = false; - - for (let i = 3; i < data.length; i += 4) { - if (data[i] > 0 && data[i] < 255) { - enabled = true; - break; - } - } - - return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); - } - - showText(glyphs) { - const current = this.current; - const font = current.font; - - if (font.isType3Font) { - return this.showType3Text(glyphs); - } - - const fontSize = current.fontSize; - - if (fontSize === 0) { - return undefined; - } - - 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(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y + current.textRise); - - if (fontDirection > 0) { - ctx.scale(textHScale, -1); - } else { - ctx.scale(textHScale, 1); - } - - let patternTransform; - - if (current.patternFill) { - ctx.save(); - const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL); - patternTransform = ctx.mozCurrentTransform; - ctx.restore(); - ctx.fillStyle = pattern; - } - - let lineWidth = current.lineWidth; - const scale = current.textMatrixScale; - - if (scale === 0 || lineWidth === 0) { - const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - lineWidth = this.getSinglePixelWidth(); - } - } else { - lineWidth /= scale; - } - - if (fontSizeScale !== 1.0) { - ctx.scale(fontSizeScale, fontSizeScale); - lineWidth /= fontSizeScale; - } - - ctx.lineWidth = lineWidth; - let x = 0, - i; - - for (i = 0; i < glyphsLength; ++i) { - const glyph = glyphs[i]; - - if (typeof glyph === "number") { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - - 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) { - 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; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - - if (font.remeasure && width > 0) { - const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; - - if (width < measuredWidth && this.isFontSubpixelAAEnabled) { - const characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; - } else if (width !== measuredWidth) { - scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; - } - } - - if (this.contentVisible && (glyph.isInFont || font.missingFile)) { - if (simpleFillText && !accent) { - ctx.fillText(character, scaledX, scaledY); - } else { - this.paintChar(character, scaledX, scaledY, patternTransform); - - if (accent) { - const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; - const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); - } - } - } - - let charWidth; - - if (vertical) { - charWidth = width * widthAdvanceScale - spacing * fontDirection; - } else { - charWidth = width * widthAdvanceScale + spacing * fontDirection; - } - - x += charWidth; - - if (restoreNeeded) { - ctx.restore(); - } - } - - if (vertical) { - current.y -= x; - } else { - current.x += x * textHScale; - } - - ctx.restore(); - this.compose(); - return undefined; - } - - showType3Text(glyphs) { - 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; - } - - this._cachedScaleForStroking = null; - this._cachedGetSinglePixelWidth = null; - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y); - ctx.scale(textHScale, fontDirection); - - for (i = 0; i < glyphsLength; ++i) { - glyph = glyphs[i]; - - if (typeof glyph === "number") { - spacingLength = spacingDir * glyph * fontSize / 1000; - this.ctx.translate(spacingLength, 0); - current.x += spacingLength * textHScale; - continue; - } - - 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.`); - continue; - } - - if (this.contentVisible) { - this.processingType3 = glyph; - this.save(); - ctx.scale(fontSize, fontSize); - ctx.transform.apply(ctx, fontMatrix); - this.executeOperatorList(operatorList); - this.restore(); - } - - const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); - - width = transformed[0] * fontSize + spacing; - ctx.translate(width, 0); - current.x += width * textHScale; - } - - ctx.restore(); - this.processingType3 = null; - } - - setCharWidth(xWidth, yWidth) {} - - setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { - this.ctx.rect(llx, lly, urx - llx, ury - lly); - this.ctx.clip(); - this.endPath(); - } - - getColorN_Pattern(IR) { - let pattern; - - if (IR[0] === "TilingPattern") { - 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); - } - }; - pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); - } else { - pattern = this._getPattern(IR[1], IR[2]); - } - - return pattern; - } - - setStrokeColorN() { - this.current.strokeColor = this.getColorN_Pattern(arguments); - } - - setFillColorN() { - this.current.fillColor = this.getColorN_Pattern(arguments); - this.current.patternFill = true; - } - - setStrokeRGBColor(r, g, b) { - const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); - - this.ctx.strokeStyle = color; - this.current.strokeColor = color; - } - - setFillRGBColor(r, g, b) { - const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); - - this.ctx.fillStyle = color; - this.current.fillColor = color; - this.current.patternFill = false; - } - - _getPattern(objId, matrix = null) { - let pattern; - - if (this.cachedPatterns.has(objId)) { - pattern = this.cachedPatterns.get(objId); - } else { - pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId)); - this.cachedPatterns.set(objId, pattern); - } - - if (matrix) { - pattern.matrix = matrix; - } - - return pattern; - } - - shadingFill(objId) { - if (!this.contentVisible) { - return; - } - - const ctx = this.ctx; - this.save(); - - const pattern = this._getPattern(objId); - - ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING); - const inv = ctx.mozCurrentTransformInverse; - - if (inv) { - const canvas = ctx.canvas; - const width = canvas.width; - const height = canvas.height; - - const bl = _util.Util.applyTransform([0, 0], inv); - - const br = _util.Util.applyTransform([0, height], inv); - - const ul = _util.Util.applyTransform([width, 0], inv); - - const ur = _util.Util.applyTransform([width, height], inv); - - 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); - } - - this.compose(this.current.getClippedPathBoundingBox()); - this.restore(); - } - - beginInlineImage() { - (0, _util.unreachable)("Should not call beginInlineImage"); - } - - beginImageData() { - (0, _util.unreachable)("Should not call beginImageData"); - } - - paintFormXObjectBegin(matrix, bbox) { - if (!this.contentVisible) { - return; - } - - this.save(); - this.baseTransformStack.push(this.baseTransform); - - if (Array.isArray(matrix) && matrix.length === 6) { - this.transform.apply(this, matrix); - } - - this.baseTransform = this.ctx.mozCurrentTransform; - - if (bbox) { - const width = bbox[2] - bbox[0]; - const height = bbox[3] - bbox[1]; - this.ctx.rect(bbox[0], bbox[1], width, height); - this.current.updateRectMinMax(this.ctx.mozCurrentTransform, bbox); - this.clip(); - this.endPath(); - } - } - - paintFormXObjectEnd() { - if (!this.contentVisible) { - return; - } - - this.restore(); - this.baseTransform = this.baseTransformStack.pop(); - } - - beginGroup(group) { - if (!this.contentVisible) { - return; - } - - this.save(); - - if (this.inSMaskMode) { - this.endSMaskMode(); - this.current.activeSMask = null; - } - - const currentCtx = this.ctx; - - if (!group.isolated) { - (0, _util.info)("TODO: Support non-isolated groups."); - } - - if (group.knockout) { - (0, _util.warn)("Knockout groups not supported."); - } - - const currentTransform = currentCtx.mozCurrentTransform; - - if (group.matrix) { - currentCtx.transform.apply(currentCtx, group.matrix); - } - - if (!group.bbox) { - throw new Error("Bounding box is required."); - } - - let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); - - const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - 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) { - scaleX = drawnWidth / MAX_GROUP_SIZE; - drawnWidth = MAX_GROUP_SIZE; - } - - if (drawnHeight > MAX_GROUP_SIZE) { - scaleY = drawnHeight / MAX_GROUP_SIZE; - drawnHeight = MAX_GROUP_SIZE; - } - - this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]); - let cacheId = "groupAt" + this.groupLevel; - - if (group.smask) { - cacheId += "_smask_" + this.smaskCounter++ % 2; - } - - 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); - - if (group.smask) { - this.smaskStack.push({ - canvas: scratchCanvas.canvas, - context: groupCtx, - offsetX, - offsetY, - scaleX, - scaleY, - subtype: group.smask.subtype, - backdrop: group.smask.backdrop, - transferMap: group.smask.transferMap || null, - startTransformInverse: null - }); - } else { - currentCtx.setTransform(1, 0, 0, 1, 0, 0); - currentCtx.translate(offsetX, offsetY); - currentCtx.scale(scaleX, scaleY); - currentCtx.save(); - } - - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; - } - - endGroup(group) { - if (!this.contentVisible) { - return; - } - - this.groupLevel--; - const groupCtx = this.ctx; - const ctx = this.groupStack.pop(); - this.ctx = ctx; - this.ctx.imageSmoothingEnabled = false; - - if (group.smask) { - this.tempSMask = this.smaskStack.pop(); - this.restore(); - } else { - this.ctx.restore(); - const currentMtx = this.ctx.mozCurrentTransform; - this.restore(); - this.ctx.save(); - this.ctx.setTransform.apply(this.ctx, currentMtx); - - const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx); - - this.ctx.drawImage(groupCtx.canvas, 0, 0); - this.ctx.restore(); - this.compose(dirtyBox); - } - } - - beginAnnotations() { - this.save(); - - if (this.baseTransform) { - this.ctx.setTransform.apply(this.ctx, this.baseTransform); - } - } - - endAnnotations() { - this.restore(); - } - - beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { - this.save(); - - if (Array.isArray(rect) && rect.length === 4) { - const width = rect[2] - rect[0]; - const height = rect[3] - rect[1]; - - if (hasOwnCanvas && this.annotationCanvasMap) { - transform = transform.slice(); - transform[4] -= rect[0]; - transform[5] -= rect[1]; - rect = rect.slice(); - rect[0] = rect[1] = 0; - rect[2] = width; - rect[3] = height; - - const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform); - - const { - viewportScale - } = this; - const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale); - const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale); - this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight); - const { - canvas, - context - } = this.annotationCanvas; - const viewportScaleFactorStr = `var(--zoom-factor) * ${_display_utils.PixelsPerInch.PDF_TO_CSS_UNITS}`; - canvas.style.width = `calc(${width}px * ${viewportScaleFactorStr})`; - canvas.style.height = `calc(${height}px * ${viewportScaleFactorStr})`; - this.annotationCanvasMap.set(id, canvas); - this.annotationCanvas.savedCtx = this.ctx; - this.ctx = context; - this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); - addContextCurrentTransform(this.ctx); - resetCtxToDefault(this.ctx, this.foregroundColor); - } else { - resetCtxToDefault(this.ctx, this.foregroundColor); - this.ctx.rect(rect[0], rect[1], width, height); - this.ctx.clip(); - this.endPath(); - } - } - - this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); - this.transform.apply(this, transform); - this.transform.apply(this, matrix); - } - - endAnnotation() { - if (this.annotationCanvas) { - this.ctx = this.annotationCanvas.savedCtx; - delete this.annotationCanvas.savedCtx; - delete this.annotationCanvas; - } - - this.restore(); - } - - paintImageMaskXObject(img) { - if (!this.contentVisible) { - return; - } - - const count = img.count; - img = this.getObject(img.data, img); - img.count = count; - const ctx = this.ctx; - const glyph = this.processingType3; - - if (glyph) { - if (glyph.compiled === undefined) { - glyph.compiled = compileType3Glyph(img); - } - - if (glyph.compiled) { - glyph.compiled(ctx); - return; - } - } - - const mask = this._createMaskCanvas(img); - - const maskCanvas = mask.canvas; - ctx.save(); - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); - ctx.restore(); - this.compose(); - } - - paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) { - if (!this.contentVisible) { - return; - } - - img = this.getObject(img.data, img); - const ctx = this.ctx; - ctx.save(); - const currentTransform = ctx.mozCurrentTransform; - ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); - - const mask = this._createMaskCanvas(img); - - ctx.setTransform(1, 0, 0, 1, 0, 0); - - for (let i = 0, ii = positions.length; i < ii; i += 2) { - const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); - - const [x, y] = _util.Util.applyTransform([0, 0], trans); - - ctx.drawImage(mask.canvas, x, y); - } - - ctx.restore(); - this.compose(); - } - - paintImageMaskXObjectGroup(images) { - if (!this.contentVisible) { - return; - } - - 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, false); - const maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, image); - maskCtx.globalCompositeOperation = "source-in"; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - ctx.save(); - ctx.transform.apply(ctx, image.transform); - ctx.scale(1, -1); - drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - - this.compose(); - } - - paintImageXObject(objId) { - if (!this.contentVisible) { - return; - } - - const imgData = this.getObject(objId); - - if (!imgData) { - (0, _util.warn)("Dependent image isn't ready yet"); - return; - } - - this.paintInlineImageXObject(imgData); - } - - paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { - if (!this.contentVisible) { - return; - } - - const imgData = this.getObject(objId); - - if (!imgData) { - (0, _util.warn)("Dependent image isn't ready yet"); - return; - } - - const width = imgData.width; - const height = imgData.height; - const map = []; - - 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, - y: 0, - w: width, - h: height - }); - } - - this.paintInlineImageXObjectGroup(imgData, map); - } - - paintInlineImageXObject(imgData) { - if (!this.contentVisible) { - return; - } - - const width = imgData.width; - const height = imgData.height; - const ctx = this.ctx; - this.save(); - ctx.scale(1 / width, -1 / height); - let imgToPaint; - - if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { - imgToPaint = imgData; - } else { - const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height, false); - const tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); - imgToPaint = tmpCanvas.canvas; - } - - const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse); - - ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate); - const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); - - if (this.imageLayer) { - const position = this.getCanvasPosition(0, -height); - this.imageLayer.appendImage({ - imgData, - left: position[0], - top: position[1], - width: rWidth, - height: rHeight - }); - } - - this.compose(); - this.restore(); - } - - paintInlineImageXObjectGroup(imgData, map) { - if (!this.contentVisible) { - return; - } - - const ctx = this.ctx; - const w = imgData.width; - const h = imgData.height; - const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h, false); - const tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); - - 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); - drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); - - if (this.imageLayer) { - const position = this.getCanvasPosition(entry.x, entry.y); - this.imageLayer.appendImage({ - imgData, - left: position[0], - top: position[1], - width: w, - height: h - }); - } - - ctx.restore(); - } - - this.compose(); - } - - paintSolidColorImageMask() { - if (!this.contentVisible) { - return; - } - - this.ctx.fillRect(0, 0, 1, 1); - this.compose(); - } - - markPoint(tag) {} - - markPointProps(tag, properties) {} - - beginMarkedContent(tag) { - this.markedContentStack.push({ - visible: true - }); - } - - beginMarkedContentProps(tag, properties) { - if (tag === "OC") { - this.markedContentStack.push({ - visible: this.optionalContentConfig.isVisible(properties) - }); - } else { - this.markedContentStack.push({ - visible: true - }); - } - - this.contentVisible = this.isContentVisible(); - } - - endMarkedContent() { - this.markedContentStack.pop(); - this.contentVisible = this.isContentVisible(); - } - - beginCompat() {} - - endCompat() {} - - consumePath(clipBox) { - const isEmpty = this.current.isEmptyClip(); - - if (this.pendingClip) { - this.current.updateClipFromPath(); - } - - if (!this.pendingClip) { - this.compose(clipBox); - } - - const ctx = this.ctx; - - if (this.pendingClip) { - if (!isEmpty) { - if (this.pendingClip === EO_CLIP) { - ctx.clip("evenodd"); - } else { - ctx.clip(); - } - } - - this.pendingClip = null; - } - - this.current.startNewPathAndClipBox(this.current.clipBox); - ctx.beginPath(); - } - - getSinglePixelWidth() { - if (!this._cachedGetSinglePixelWidth) { - const m = this.ctx.mozCurrentTransform; - - if (m[1] === 0 && m[2] === 0) { - this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3])); - } else { - const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); - const normX = Math.hypot(m[0], m[2]); - const normY = Math.hypot(m[1], m[3]); - this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet; - } - } - - return this._cachedGetSinglePixelWidth; - } - - getScaleForStroking() { - if (!this._cachedScaleForStroking) { - const { - lineWidth - } = this.current; - const m = this.ctx.mozCurrentTransform; - let scaleX, scaleY; - - if (m[1] === 0 && m[2] === 0) { - const normX = Math.abs(m[0]); - const normY = Math.abs(m[3]); - - if (lineWidth === 0) { - scaleX = 1 / normX; - scaleY = 1 / normY; - } else { - const scaledXLineWidth = normX * lineWidth; - const scaledYLineWidth = normY * lineWidth; - scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1; - scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1; - } - } else { - const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); - const normX = Math.hypot(m[0], m[1]); - const normY = Math.hypot(m[2], m[3]); - - if (lineWidth === 0) { - scaleX = normY / absDet; - scaleY = normX / absDet; - } else { - const baseArea = lineWidth * absDet; - scaleX = normY > baseArea ? normY / baseArea : 1; - scaleY = normX > baseArea ? normX / baseArea : 1; - } - } - - this._cachedScaleForStroking = [scaleX, scaleY]; - } - - return this._cachedScaleForStroking; - } - - rescaleAndStroke(saveRestore) { - const { - ctx - } = this; - const { - lineWidth - } = this.current; - const [scaleX, scaleY] = this.getScaleForStroking(); - ctx.lineWidth = lineWidth || 1; - - if (scaleX === 1 && scaleY === 1) { - ctx.stroke(); - return; - } - - let savedMatrix, savedDashes, savedDashOffset; - - if (saveRestore) { - savedMatrix = ctx.mozCurrentTransform.slice(); - savedDashes = ctx.getLineDash().slice(); - savedDashOffset = ctx.lineDashOffset; - } - - ctx.scale(scaleX, scaleY); - const scale = Math.max(scaleX, scaleY); - ctx.setLineDash(ctx.getLineDash().map(x => x / scale)); - ctx.lineDashOffset /= scale; - ctx.stroke(); - - if (saveRestore) { - ctx.setTransform(...savedMatrix); - ctx.setLineDash(savedDashes); - ctx.lineDashOffset = savedDashOffset; - } - } - - getCanvasPosition(x, y) { - const transform = this.ctx.mozCurrentTransform; - return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; - } - - isContentVisible() { - for (let i = this.markedContentStack.length - 1; i >= 0; i--) { - if (!this.markedContentStack[i].visible) { - return false; - } - } - - return true; - } - -} - -exports.CanvasGraphics = CanvasGraphics; - -for (const op in _util.OPS) { - if (CanvasGraphics.prototype[op] !== undefined) { - CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; - } -} - -/***/ }), -/* 11 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TilingPattern = exports.PathType = void 0; -exports.getShadingPattern = getShadingPattern; - -var _util = __w_pdfjs_require__(1); - -var _is_node = __w_pdfjs_require__(3); - -const PathType = { - FILL: "Fill", - STROKE: "Stroke", - SHADING: "Shading" -}; -exports.PathType = PathType; - -function applyBoundingBox(ctx, bbox) { - if (!bbox || _is_node.isNodeJS) { - return; - } - - const width = bbox[2] - bbox[0]; - const height = bbox[3] - bbox[1]; - const region = new Path2D(); - region.rect(bbox[0], bbox[1], width, height); - ctx.clip(region); -} - -class BaseShadingPattern { - constructor() { - if (this.constructor === BaseShadingPattern) { - (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); - } - } - - getPattern() { - (0, _util.unreachable)("Abstract method `getPattern` called."); - } - -} - -class RadialAxialShadingPattern extends BaseShadingPattern { - constructor(IR) { - super(); - this._type = IR[1]; - this._bbox = IR[2]; - this._colorStops = IR[3]; - this._p0 = IR[4]; - this._p1 = IR[5]; - this._r0 = IR[6]; - this._r1 = IR[7]; - this.matrix = null; - } - - _createGradient(ctx) { - let grad; - - if (this._type === "axial") { - grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); - } else if (this._type === "radial") { - grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); - } - - for (const colorStop of this._colorStops) { - grad.addColorStop(colorStop[0], colorStop[1]); - } - - return grad; - } - - getPattern(ctx, owner, inverse, pathType) { - let pattern; - - if (pathType === PathType.STROKE || pathType === PathType.FILL) { - const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, ctx.mozCurrentTransform) || [0, 0, 0, 0]; - const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1; - const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1; - const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true); - const tmpCtx = tmpCanvas.context; - tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); - tmpCtx.beginPath(); - tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); - tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]); - inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]); - tmpCtx.transform.apply(tmpCtx, owner.baseTransform); - - if (this.matrix) { - tmpCtx.transform.apply(tmpCtx, this.matrix); - } - - applyBoundingBox(tmpCtx, this._bbox); - tmpCtx.fillStyle = this._createGradient(tmpCtx); - tmpCtx.fill(); - pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat"); - const domMatrix = new DOMMatrix(inverse); - - try { - pattern.setTransform(domMatrix); - } catch (ex) { - (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`); - } - } else { - applyBoundingBox(ctx, this._bbox); - pattern = this._createGradient(ctx); - } - - return pattern; - } - -} - -function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { - 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; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - - if (coords[p2 + 1] > coords[p3 + 1]) { - tmp = p2; - p2 = p3; - p3 = tmp; - tmp = c2; - c2 = c3; - c3 = tmp; - } - - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - - 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; - } - - 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; - - if (y < y1) { - k = 0; - } else { - k = (y1 - y) / (y1 - y2); - } - - xa = x1 - (x1 - x2) * k; - car = c1r - (c1r - c2r) * k; - cag = c1g - (c1g - c2g) * k; - cab = c1b - (c1b - c2b) * k; - } else { - let k; - - if (y > y3) { - k = 1; - } else if (y2 === y3) { - k = 0; - } else { - k = (y2 - y) / (y2 - y3); - } - - xa = x2 - (x2 - x3) * k; - car = c2r - (c2r - c3r) * k; - cag = c2g - (c2g - c3g) * k; - cab = c2b - (c2b - c3b) * k; - } - - let k; - - if (y < y1) { - k = 0; - } else if (y > y3) { - k = 1; - } else { - k = (y1 - y) / (y1 - y3); - } - - xb = x1 - (x1 - x3) * k; - cbr = c1r - (c1r - c3r) * k; - cbg = c1g - (c1g - c3g) * k; - cbb = c1b - (c1b - c3b) * k; - const x1_ = Math.round(Math.min(xa, xb)); - const x2_ = Math.round(Math.max(xa, xb)); - let j = rowSize * y + x1_ * 4; - - for (let x = x1_; x <= x2_; x++) { - k = (xa - x) / (xa - xb); - - if (k < 0) { - k = 0; - } else if (k > 1) { - k = 1; - } - - bytes[j++] = car - (car - cbr) * k | 0; - bytes[j++] = cag - (cag - cbg) * k | 0; - bytes[j++] = cab - (cab - cbb) * k | 0; - bytes[j++] = 255; - } - } -} - -function drawFigure(data, figure, context) { - const ps = figure.coords; - const cs = figure.colors; - let i, ii; - - switch (figure.type) { - case "lattice": - const verticesPerRow = figure.verticesPerRow; - const rows = Math.floor(ps.length / verticesPerRow) - 1; - const cols = verticesPerRow - 1; - - for (i = 0; i < rows; i++) { - let q = i * verticesPerRow; - - 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]); - } - } - - break; - - case "triangles": - for (i = 0, ii = ps.length; i < ii; i += 3) { - drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); - } - - break; - - default: - throw new Error("illegal figure"); - } -} - -class MeshShadingPattern extends BaseShadingPattern { - constructor(IR) { - super(); - this._coords = IR[2]; - this._colors = IR[3]; - this._figures = IR[4]; - this._bounds = IR[5]; - this._bbox = IR[7]; - this._background = IR[8]; - this.matrix = null; - } - - _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { - const EXPECTED_SCALE = 1.1; - const MAX_PATTERN_SIZE = 3000; - const BORDER_SIZE = 2; - const offsetX = Math.floor(this._bounds[0]); - const offsetY = Math.floor(this._bounds[1]); - const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; - const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; - const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - const scaleX = boundsWidth / width; - const scaleY = boundsHeight / height; - const context = { - coords: this._coords, - colors: this._colors, - offsetX: -offsetX, - offsetY: -offsetY, - scaleX: 1 / scaleX, - scaleY: 1 / scaleY - }; - const paddedWidth = width + BORDER_SIZE * 2; - const paddedHeight = height + BORDER_SIZE * 2; - const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); - const tmpCtx = tmpCanvas.context; - const data = tmpCtx.createImageData(width, height); - - if (backgroundColor) { - const bytes = data.data; - - for (let i = 0, ii = bytes.length; i < ii; i += 4) { - bytes[i] = backgroundColor[0]; - bytes[i + 1] = backgroundColor[1]; - bytes[i + 2] = backgroundColor[2]; - bytes[i + 3] = 255; - } - } - - for (const figure of this._figures) { - drawFigure(data, figure, context); - } - - tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); - const canvas = tmpCanvas.canvas; - return { - canvas, - offsetX: offsetX - BORDER_SIZE * scaleX, - offsetY: offsetY - BORDER_SIZE * scaleY, - scaleX, - scaleY - }; - } - - getPattern(ctx, owner, inverse, pathType) { - applyBoundingBox(ctx, this._bbox); - let scale; - - if (pathType === PathType.SHADING) { - scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); - } else { - scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); - - if (this.matrix) { - const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - - scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; - } - } - - const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases); - - if (pathType !== PathType.SHADING) { - ctx.setTransform.apply(ctx, owner.baseTransform); - - if (this.matrix) { - ctx.transform.apply(ctx, this.matrix); - } - } - - ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); - ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); - return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); - } - -} - -class DummyShadingPattern extends BaseShadingPattern { - getPattern() { - return "hotpink"; - } - -} - -function getShadingPattern(IR) { - switch (IR[0]) { - case "RadialAxial": - return new RadialAxialShadingPattern(IR); - - case "Mesh": - return new MeshShadingPattern(IR); - - case "Dummy": - return new DummyShadingPattern(); - } - - throw new Error(`Unknown IR type: ${IR[0]}`); -} - -const PaintType = { - COLORED: 1, - UNCOLORED: 2 -}; - -class TilingPattern { - static get MAX_PATTERN_SIZE() { - return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000); - } - - constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { - this.operatorList = IR[2]; - this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; - this.bbox = IR[4]; - this.xstep = IR[5]; - this.ystep = IR[6]; - this.paintType = IR[7]; - this.tilingType = IR[8]; - this.color = color; - this.ctx = ctx; - this.canvasGraphicsFactory = canvasGraphicsFactory; - this.baseTransform = baseTransform; - } - - createPatternCanvas(owner) { - 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); - const x0 = bbox[0], - y0 = bbox[1], - x1 = bbox[2], - y1 = bbox[3]; - - const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - - const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); - - 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); - let adjustedX0 = x0; - let adjustedY0 = y0; - let adjustedX1 = x1; - let adjustedY1 = y1; - - if (x0 < 0) { - adjustedX0 = 0; - adjustedX1 += Math.abs(x0); - } - - if (y0 < 0) { - adjustedY0 = 0; - adjustedY1 += Math.abs(y0); - } - - tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0)); - graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); - tmpCtx.save(); - this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1); - graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice(); - graphics.executeOperatorList(operatorList); - graphics.endDrawing(); - return { - canvas: tmpCanvas.canvas, - scaleX: dimx.scale, - scaleY: dimy.scale, - offsetX: adjustedX0, - offsetY: adjustedY0 - }; - } - - getSizeAndScale(step, realOutputSize, scale) { - step = Math.abs(step); - const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); - let size = Math.ceil(step * scale); - - if (size >= maxSize) { - size = maxSize; - } else { - scale = size / step; - } - - return { - scale, - size - }; - } - - clipBbox(graphics, x0, y0, x1, y1) { - const bboxWidth = x1 - x0; - const bboxHeight = y1 - y0; - graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); - graphics.current.updateRectMinMax(graphics.ctx.mozCurrentTransform, [x0, y0, x1, y1]); - graphics.clip(); - graphics.endPath(); - } - - setFillAndStrokeStyleToContext(graphics, paintType, color) { - const context = graphics.ctx, - current = graphics.current; - - switch (paintType) { - case PaintType.COLORED: - const ctx = this.ctx; - context.fillStyle = ctx.fillStyle; - context.strokeStyle = ctx.strokeStyle; - current.fillColor = ctx.fillStyle; - current.strokeColor = ctx.strokeStyle; - break; - - case PaintType.UNCOLORED: - const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); - - context.fillStyle = cssColor; - context.strokeStyle = cssColor; - current.fillColor = cssColor; - current.strokeColor = cssColor; - break; - - default: - throw new _util.FormatError(`Unsupported paint type: ${paintType}`); - } - } - - getPattern(ctx, owner, inverse, pathType) { - let matrix = inverse; - - if (pathType !== PathType.SHADING) { - matrix = _util.Util.transform(matrix, owner.baseTransform); - - if (this.matrix) { - matrix = _util.Util.transform(matrix, this.matrix); - } - } - - const temporaryPatternCanvas = this.createPatternCanvas(owner); - let domMatrix = new DOMMatrix(matrix); - domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); - domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); - const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); - - try { - pattern.setTransform(domMatrix); - } catch (ex) { - (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`); - } - - return pattern; - } - -} - -exports.TilingPattern = TilingPattern; - -/***/ }), -/* 12 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.applyMaskImageData = applyMaskImageData; - -var _util = __w_pdfjs_require__(1); - -function applyMaskImageData({ - src, - srcPos = 0, - dest, - destPos = 0, - width, - height, - inverseDecode = false -}) { - const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; - const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; - const widthInSource = width >> 3; - const widthRemainder = width & 7; - const srcLength = src.length; - dest = new Uint32Array(dest.buffer); - - for (let i = 0; i < height; i++) { - for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { - const elem = srcPos < srcLength ? src[srcPos] : 255; - dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; - } - - if (widthRemainder === 0) { - continue; - } - - const elem = srcPos < srcLength ? src[srcPos++] : 255; - - for (let j = 0; j < widthRemainder; j++) { - dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; - } - } - - return { - srcPos, - destPos - }; -} - -/***/ }), -/* 13 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GlobalWorkerOptions = void 0; -const GlobalWorkerOptions = Object.create(null); -exports.GlobalWorkerOptions = GlobalWorkerOptions; -GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; -GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; - -/***/ }), -/* 14 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MessageHandler = void 0; - -var _util = __w_pdfjs_require__(1); - -const CallbackKind = { - UNKNOWN: 0, - DATA: 1, - ERROR: 2 -}; -const StreamKind = { - UNKNOWN: 0, - CANCEL: 1, - CANCEL_COMPLETE: 2, - CLOSE: 3, - ENQUEUE: 4, - ERROR: 5, - PULL: 6, - PULL_COMPLETE: 7, - START_COMPLETE: 8 -}; - -function wrapReason(reason) { - if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { - (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); - } - - switch (reason.name) { - case "AbortException": - return new _util.AbortException(reason.message); - - case "MissingPDFException": - return new _util.MissingPDFException(reason.message); - - case "PasswordException": - return new _util.PasswordException(reason.message, reason.code); - - case "UnexpectedResponseException": - return new _util.UnexpectedResponseException(reason.message, reason.status); - - case "UnknownErrorException": - return new _util.UnknownErrorException(reason.message, reason.details); - - default: - return new _util.UnknownErrorException(reason.message, reason.toString()); - } -} - -class MessageHandler { - constructor(sourceName, targetName, comObj) { - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackId = 1; - this.streamId = 1; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - this.callbackCapabilities = Object.create(null); - this.actionHandler = Object.create(null); - - this._onComObjOnMessage = event => { - const data = event.data; - - if (data.targetName !== this.sourceName) { - return; - } - - if (data.stream) { - this._processStreamMessage(data); - - return; - } - - if (data.callback) { - const callbackId = data.callbackId; - const capability = this.callbackCapabilities[callbackId]; - - if (!capability) { - throw new Error(`Cannot resolve callback ${callbackId}`); - } - - delete this.callbackCapabilities[callbackId]; - - if (data.callback === CallbackKind.DATA) { - capability.resolve(data.data); - } else if (data.callback === CallbackKind.ERROR) { - capability.reject(wrapReason(data.reason)); - } else { - throw new Error("Unexpected callback case"); - } - - return; - } - - const action = this.actionHandler[data.action]; - - if (!action) { - throw new Error(`Unknown action from worker: ${data.action}`); - } - - if (data.callbackId) { - const cbSourceName = this.sourceName; - const cbTargetName = data.sourceName; - new Promise(function (resolve) { - resolve(action(data.data)); - }).then(function (result) { - comObj.postMessage({ - sourceName: cbSourceName, - targetName: cbTargetName, - callback: CallbackKind.DATA, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - comObj.postMessage({ - sourceName: cbSourceName, - targetName: cbTargetName, - callback: CallbackKind.ERROR, - callbackId: data.callbackId, - reason: wrapReason(reason) - }); - }); - return; - } - - if (data.streamId) { - this._createStreamSink(data); - - return; - } - - action(data.data); - }; - - comObj.addEventListener("message", this._onComObjOnMessage); - } - - on(actionName, handler) { - const ah = this.actionHandler; - - if (ah[actionName]) { - throw new Error(`There is already an actionName called "${actionName}"`); - } - - ah[actionName] = handler; - } - - send(actionName, data, transfers) { - this.comObj.postMessage({ - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data - }, transfers); - } - - sendWithPromise(actionName, data, transfers) { - const callbackId = this.callbackId++; - const capability = (0, _util.createPromiseCapability)(); - this.callbackCapabilities[callbackId] = capability; - - try { - this.comObj.postMessage({ - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - callbackId, - data - }, transfers); - } catch (ex) { - capability.reject(ex); - } - - return capability.promise; - } - - sendWithStream(actionName, data, queueingStrategy, transfers) { - const streamId = this.streamId++, - sourceName = this.sourceName, - targetName = this.targetName, - comObj = this.comObj; - return new ReadableStream({ - start: controller => { - const startCapability = (0, _util.createPromiseCapability)(); - this.streamControllers[streamId] = { - controller, - startCall: startCapability, - pullCall: null, - cancelCall: null, - isClosed: false - }; - comObj.postMessage({ - sourceName, - targetName, - action: actionName, - streamId, - data, - desiredSize: controller.desiredSize - }, transfers); - return startCapability.promise; - }, - pull: controller => { - const pullCapability = (0, _util.createPromiseCapability)(); - this.streamControllers[streamId].pullCall = pullCapability; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL, - streamId, - desiredSize: controller.desiredSize - }); - return pullCapability.promise; - }, - cancel: reason => { - (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); - const cancelCapability = (0, _util.createPromiseCapability)(); - this.streamControllers[streamId].cancelCall = cancelCapability; - this.streamControllers[streamId].isClosed = true; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CANCEL, - streamId, - reason: wrapReason(reason) - }); - return cancelCapability.promise; - } - }, queueingStrategy); - } - - _createStreamSink(data) { - const streamId = data.streamId, - sourceName = this.sourceName, - targetName = data.sourceName, - comObj = this.comObj; - const self = this, - action = this.actionHandler[data.action]; - const streamSink = { - enqueue(chunk, size = 1, transfers) { - if (this.isCancelled) { - return; - } - - const lastDesiredSize = this.desiredSize; - this.desiredSize -= size; - - if (lastDesiredSize > 0 && this.desiredSize <= 0) { - this.sinkCapability = (0, _util.createPromiseCapability)(); - this.ready = this.sinkCapability.promise; - } - - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.ENQUEUE, - streamId, - chunk - }, transfers); - }, - - close() { - if (this.isCancelled) { - return; - } - - this.isCancelled = true; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CLOSE, - streamId - }); - delete self.streamSinks[streamId]; - }, - - error(reason) { - (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); - - if (this.isCancelled) { - return; - } - - this.isCancelled = true; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.ERROR, - streamId, - reason: wrapReason(reason) - }); - }, - - sinkCapability: (0, _util.createPromiseCapability)(), - onPull: null, - onCancel: null, - isCancelled: false, - desiredSize: data.desiredSize, - ready: null - }; - streamSink.sinkCapability.resolve(); - streamSink.ready = streamSink.sinkCapability.promise; - this.streamSinks[streamId] = streamSink; - new Promise(function (resolve) { - resolve(action(data.data, streamSink)); - }).then(function () { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.START_COMPLETE, - streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.START_COMPLETE, - streamId, - reason: wrapReason(reason) - }); - }); - } - - _processStreamMessage(data) { - const streamId = data.streamId, - sourceName = this.sourceName, - targetName = data.sourceName, - comObj = this.comObj; - const streamController = this.streamControllers[streamId], - streamSink = this.streamSinks[streamId]; - - switch (data.stream) { - case StreamKind.START_COMPLETE: - if (data.success) { - streamController.startCall.resolve(); - } else { - streamController.startCall.reject(wrapReason(data.reason)); - } - - break; - - case StreamKind.PULL_COMPLETE: - if (data.success) { - streamController.pullCall.resolve(); - } else { - streamController.pullCall.reject(wrapReason(data.reason)); - } - - break; - - case StreamKind.PULL: - if (!streamSink) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL_COMPLETE, - streamId, - success: true - }); - break; - } - - if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { - streamSink.sinkCapability.resolve(); - } - - streamSink.desiredSize = data.desiredSize; - new Promise(function (resolve) { - resolve(streamSink.onPull && streamSink.onPull()); - }).then(function () { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL_COMPLETE, - streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL_COMPLETE, - streamId, - reason: wrapReason(reason) - }); - }); - break; - - case StreamKind.ENQUEUE: - (0, _util.assert)(streamController, "enqueue should have stream controller"); - - if (streamController.isClosed) { - break; - } - - streamController.controller.enqueue(data.chunk); - break; - - case StreamKind.CLOSE: - (0, _util.assert)(streamController, "close should have stream controller"); - - if (streamController.isClosed) { - break; - } - - streamController.isClosed = true; - streamController.controller.close(); - - this._deleteStreamController(streamController, streamId); - - break; - - case StreamKind.ERROR: - (0, _util.assert)(streamController, "error should have stream controller"); - streamController.controller.error(wrapReason(data.reason)); - - this._deleteStreamController(streamController, streamId); - - break; - - case StreamKind.CANCEL_COMPLETE: - if (data.success) { - streamController.cancelCall.resolve(); - } else { - streamController.cancelCall.reject(wrapReason(data.reason)); - } - - this._deleteStreamController(streamController, streamId); - - break; - - case StreamKind.CANCEL: - if (!streamSink) { - break; - } - - new Promise(function (resolve) { - resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); - }).then(function () { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CANCEL_COMPLETE, - streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CANCEL_COMPLETE, - streamId, - reason: wrapReason(reason) - }); - }); - streamSink.sinkCapability.reject(wrapReason(data.reason)); - streamSink.isCancelled = true; - delete this.streamSinks[streamId]; - break; - - default: - throw new Error("Unexpected stream case"); - } - } - - async _deleteStreamController(streamController, streamId) { - await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); - delete this.streamControllers[streamId]; - } - - destroy() { - this.comObj.removeEventListener("message", this._onComObjOnMessage); - } - -} - -exports.MessageHandler = MessageHandler; - -/***/ }), -/* 15 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Metadata = void 0; - -var _util = __w_pdfjs_require__(1); - -class Metadata { - #metadataMap; - #data; - - constructor({ - parsedData, - rawData - }) { - this.#metadataMap = parsedData; - this.#data = rawData; - } - - getRaw() { - return this.#data; - } - - get(name) { - return this.#metadataMap.get(name) ?? null; - } - - getAll() { - return (0, _util.objectFromMap)(this.#metadataMap); - } - - has(name) { - return this.#metadataMap.has(name); - } - -} - -exports.Metadata = Metadata; - -/***/ }), -/* 16 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.OptionalContentConfig = void 0; - -var _util = __w_pdfjs_require__(1); - -class OptionalContentGroup { - constructor(name, intent) { - this.visible = true; - this.name = name; - this.intent = intent; - } - -} - -class OptionalContentConfig { - constructor(data) { - this.name = null; - this.creator = null; - this._order = null; - this._groups = new Map(); - - if (data === null) { - return; - } - - this.name = data.name; - this.creator = data.creator; - this._order = data.order; - - for (const group of data.groups) { - this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent)); - } - - if (data.baseState === "OFF") { - for (const group of this._groups) { - group.visible = false; - } - } - - for (const on of data.on) { - this._groups.get(on).visible = true; - } - - for (const off of data.off) { - this._groups.get(off).visible = false; - } - } - - _evaluateVisibilityExpression(array) { - const length = array.length; - - if (length < 2) { - return true; - } - - const operator = array[0]; - - for (let i = 1; i < length; i++) { - const element = array[i]; - let state; - - if (Array.isArray(element)) { - state = this._evaluateVisibilityExpression(element); - } else if (this._groups.has(element)) { - state = this._groups.get(element).visible; - } else { - (0, _util.warn)(`Optional content group not found: ${element}`); - return true; - } - - switch (operator) { - case "And": - if (!state) { - return false; - } - - break; - - case "Or": - if (state) { - return true; - } - - break; - - case "Not": - return !state; - - default: - return true; - } - } - - return operator === "And"; - } - - isVisible(group) { - if (this._groups.size === 0) { - return true; - } - - if (!group) { - (0, _util.warn)("Optional content group not defined."); - return true; - } - - if (group.type === "OCG") { - if (!this._groups.has(group.id)) { - (0, _util.warn)(`Optional content group not found: ${group.id}`); - return true; - } - - return this._groups.get(group.id).visible; - } else if (group.type === "OCMD") { - if (group.expression) { - return this._evaluateVisibilityExpression(group.expression); - } - - if (!group.policy || group.policy === "AnyOn") { - for (const id of group.ids) { - if (!this._groups.has(id)) { - (0, _util.warn)(`Optional content group not found: ${id}`); - return true; - } - - if (this._groups.get(id).visible) { - return true; - } - } - - return false; - } else if (group.policy === "AllOn") { - for (const id of group.ids) { - if (!this._groups.has(id)) { - (0, _util.warn)(`Optional content group not found: ${id}`); - return true; - } - - if (!this._groups.get(id).visible) { - return false; - } - } - - return true; - } else if (group.policy === "AnyOff") { - for (const id of group.ids) { - if (!this._groups.has(id)) { - (0, _util.warn)(`Optional content group not found: ${id}`); - return true; - } - - if (!this._groups.get(id).visible) { - return true; - } - } - - return false; - } else if (group.policy === "AllOff") { - for (const id of group.ids) { - if (!this._groups.has(id)) { - (0, _util.warn)(`Optional content group not found: ${id}`); - return true; - } - - if (this._groups.get(id).visible) { - return false; - } - } - - return true; - } - - (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); - return true; - } - - (0, _util.warn)(`Unknown group type ${group.type}.`); - return true; - } - - setVisibility(id, visible = true) { - if (!this._groups.has(id)) { - (0, _util.warn)(`Optional content group not found: ${id}`); - return; - } - - this._groups.get(id).visible = !!visible; - } - - getOrder() { - if (!this._groups.size) { - return null; - } - - if (this._order) { - return this._order.slice(); - } - - return Array.from(this._groups.keys()); - } - - getGroups() { - return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null; - } - - getGroup(id) { - return this._groups.get(id) || null; - } - -} - -exports.OptionalContentConfig = OptionalContentConfig; - -/***/ }), -/* 17 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFDataTransportStream = void 0; - -var _util = __w_pdfjs_require__(1); - -var _display_utils = __w_pdfjs_require__(5); - -class PDFDataTransportStream { - constructor(params, pdfDataRangeTransport) { - (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); - this._queuedChunks = []; - this._progressiveDone = params.progressiveDone || false; - this._contentDispositionFilename = params.contentDispositionFilename || null; - const initialData = params.initialData; - - if (initialData?.length > 0) { - const buffer = new Uint8Array(initialData).buffer; - - this._queuedChunks.push(buffer); - } - - this._pdfDataRangeTransport = pdfDataRangeTransport; - this._isStreamingSupported = !params.disableStream; - this._isRangeSupported = !params.disableRange; - this._contentLength = params.length; - this._fullRequestReader = null; - this._rangeReaders = []; - - this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { - this._onReceiveData({ - begin, - chunk - }); - }); - - this._pdfDataRangeTransport.addProgressListener((loaded, total) => { - this._onProgress({ - loaded, - total - }); - }); - - this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { - this._onReceiveData({ - chunk - }); - }); - - this._pdfDataRangeTransport.addProgressiveDoneListener(() => { - this._onProgressiveDone(); - }); - - this._pdfDataRangeTransport.transportReady(); - } - - _onReceiveData(args) { - const buffer = new Uint8Array(args.chunk).buffer; - - if (args.begin === undefined) { - if (this._fullRequestReader) { - this._fullRequestReader._enqueue(buffer); - } else { - this._queuedChunks.push(buffer); - } - } else { - const found = this._rangeReaders.some(function (rangeReader) { - if (rangeReader._begin !== args.begin) { - return false; - } - - rangeReader._enqueue(buffer); - - return true; - }); - - (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); - } - } - - get _progressiveDataLength() { - return this._fullRequestReader?._loaded ?? 0; - } - - _onProgress(evt) { - if (evt.total === undefined) { - const firstReader = this._rangeReaders[0]; - - if (firstReader?.onProgress) { - firstReader.onProgress({ - loaded: evt.loaded - }); - } - } else { - const fullReader = this._fullRequestReader; - - if (fullReader?.onProgress) { - fullReader.onProgress({ - loaded: evt.loaded, - total: evt.total - }); - } - } - } - - _onProgressiveDone() { - if (this._fullRequestReader) { - this._fullRequestReader.progressiveDone(); - } - - this._progressiveDone = true; - } - - _removeRangeReader(reader) { - const i = this._rangeReaders.indexOf(reader); - - if (i >= 0) { - this._rangeReaders.splice(i, 1); - } - } - - getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); - const queuedChunks = this._queuedChunks; - this._queuedChunks = null; - return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); - } - - getRangeReader(begin, end) { - if (end <= this._progressiveDataLength) { - return null; - } - - const reader = new PDFDataTransportStreamRangeReader(this, begin, end); - - this._pdfDataRangeTransport.requestDataRange(begin, end); - - this._rangeReaders.push(reader); - - return reader; - } - - cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - for (const reader of this._rangeReaders.slice(0)) { - reader.cancel(reason); - } - - this._pdfDataRangeTransport.abort(); - } - -} - -exports.PDFDataTransportStream = PDFDataTransportStream; - -class PDFDataTransportStreamReader { - constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { - this._stream = stream; - this._done = progressiveDone || false; - this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; - this._queuedChunks = queuedChunks || []; - this._loaded = 0; - - for (const chunk of this._queuedChunks) { - this._loaded += chunk.byteLength; - } - - this._requests = []; - this._headersReady = Promise.resolve(); - stream._fullRequestReader = this; - this.onProgress = null; - } - - _enqueue(chunk) { - if (this._done) { - return; - } - - if (this._requests.length > 0) { - const requestCapability = this._requests.shift(); - - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunks.push(chunk); - } - - this._loaded += chunk.byteLength; - } - - get headersReady() { - return this._headersReady; - } - - get filename() { - return this._filename; - } - - get isRangeSupported() { - return this._stream._isRangeSupported; - } - - get isStreamingSupported() { - return this._stream._isStreamingSupported; - } - - get contentLength() { - return this._stream._contentLength; - } - - async read() { - if (this._queuedChunks.length > 0) { - const chunk = this._queuedChunks.shift(); - - return { - value: chunk, - done: false - }; - } - - if (this._done) { - return { - value: undefined, - done: true - }; - } - - const requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return requestCapability.promise; - } - - cancel(reason) { - this._done = true; - - for (const requestCapability of this._requests) { - requestCapability.resolve({ - value: undefined, - done: true - }); - } - - this._requests.length = 0; - } - - progressiveDone() { - if (this._done) { - return; - } - - this._done = true; - } - -} - -class PDFDataTransportStreamRangeReader { - constructor(stream, begin, end) { - this._stream = stream; - this._begin = begin; - this._end = end; - this._queuedChunk = null; - this._requests = []; - this._done = false; - this.onProgress = null; - } - - _enqueue(chunk) { - if (this._done) { - return; - } - - if (this._requests.length === 0) { - this._queuedChunk = chunk; - } else { - const requestsCapability = this._requests.shift(); - - requestsCapability.resolve({ - value: chunk, - done: false - }); - - for (const requestCapability of this._requests) { - requestCapability.resolve({ - value: undefined, - done: true - }); - } - - this._requests.length = 0; - } - - this._done = true; - - this._stream._removeRangeReader(this); - } - - get isStreamingSupported() { - return false; - } - - async read() { - if (this._queuedChunk) { - const chunk = this._queuedChunk; - this._queuedChunk = null; - return { - value: chunk, - done: false - }; - } - - if (this._done) { - return { - value: undefined, - done: true - }; - } - - const requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return requestCapability.promise; - } - - cancel(reason) { - this._done = true; - - for (const requestCapability of this._requests) { - requestCapability.resolve({ - value: undefined, - done: true - }); - } - - this._requests.length = 0; - - this._stream._removeRangeReader(this); - } - -} - -/***/ }), -/* 18 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XfaText = void 0; - -class XfaText { - static textContent(xfa) { - const items = []; - const output = { - items, - styles: Object.create(null) - }; - - function walk(node) { - if (!node) { - return; - } - - let str = null; - const name = node.name; - - if (name === "#text") { - str = node.value; - } else if (!XfaText.shouldBuildText(name)) { - return; - } else if (node?.attributes?.textContent) { - str = node.attributes.textContent; - } else if (node.value) { - str = node.value; - } - - if (str !== null) { - items.push({ - str - }); - } - - if (!node.children) { - return; - } - - for (const child of node.children) { - walk(child); - } - } - - walk(xfa); - return output; - } - - static shouldBuildText(name) { - return !(name === "textarea" || name === "input" || name === "option" || name === "select"); - } - -} - -exports.XfaText = XfaText; - -/***/ }), -/* 19 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; - -var _base_factory = __w_pdfjs_require__(6); - -; - -const fetchData = function (url) { - return new Promise((resolve, reject) => { - const fs = require("fs"); - - fs.readFile(url, (error, data) => { - if (error || !data) { - reject(new Error(error)); - return; - } - - resolve(new Uint8Array(data)); - }); - }); -}; - -class NodeCanvasFactory extends _base_factory.BaseCanvasFactory { - _createCanvas(width, height) { - const Canvas = require("canvas"); - - return Canvas.createCanvas(width, height); - } - -} - -exports.NodeCanvasFactory = NodeCanvasFactory; - -class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { - _fetchData(url, compressionType) { - return fetchData(url).then(data => { - return { - cMapData: data, - compressionType - }; - }); - } - -} - -exports.NodeCMapReaderFactory = NodeCMapReaderFactory; - -class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { - _fetchData(url) { - return fetchData(url); - } - -} - -exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; - -/***/ }), -/* 20 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.AnnotationLayer = void 0; - -var _util = __w_pdfjs_require__(1); - -var _display_utils = __w_pdfjs_require__(5); - -var _annotation_storage = __w_pdfjs_require__(8); - -var _scripting_utils = __w_pdfjs_require__(21); - -var _xfa_layer = __w_pdfjs_require__(22); - -const DEFAULT_TAB_INDEX = 1000; -const GetElementsByNameSet = new WeakSet(); - -function getRectDims(rect) { - return { - width: rect[2] - rect[0], - height: rect[3] - rect[1] - }; -} - -class AnnotationElementFactory { - static create(parameters) { - const subtype = parameters.data.annotationType; - - switch (subtype) { - case _util.AnnotationType.LINK: - return new LinkAnnotationElement(parameters); - - case _util.AnnotationType.TEXT: - return new TextAnnotationElement(parameters); - - case _util.AnnotationType.WIDGET: - const fieldType = parameters.data.fieldType; - - switch (fieldType) { - case "Tx": - return new TextWidgetAnnotationElement(parameters); - - case "Btn": - if (parameters.data.radioButton) { - return new RadioButtonWidgetAnnotationElement(parameters); - } else if (parameters.data.checkBox) { - return new CheckboxWidgetAnnotationElement(parameters); - } - - return new PushButtonWidgetAnnotationElement(parameters); - - case "Ch": - return new ChoiceWidgetAnnotationElement(parameters); - } - - return new WidgetAnnotationElement(parameters); - - case _util.AnnotationType.POPUP: - return new PopupAnnotationElement(parameters); - - case _util.AnnotationType.FREETEXT: - return new FreeTextAnnotationElement(parameters); - - case _util.AnnotationType.LINE: - return new LineAnnotationElement(parameters); - - case _util.AnnotationType.SQUARE: - return new SquareAnnotationElement(parameters); - - case _util.AnnotationType.CIRCLE: - return new CircleAnnotationElement(parameters); - - case _util.AnnotationType.POLYLINE: - return new PolylineAnnotationElement(parameters); - - case _util.AnnotationType.CARET: - return new CaretAnnotationElement(parameters); - - case _util.AnnotationType.INK: - return new InkAnnotationElement(parameters); - - case _util.AnnotationType.POLYGON: - return new PolygonAnnotationElement(parameters); - - case _util.AnnotationType.HIGHLIGHT: - return new HighlightAnnotationElement(parameters); - - case _util.AnnotationType.UNDERLINE: - return new UnderlineAnnotationElement(parameters); - - case _util.AnnotationType.SQUIGGLY: - return new SquigglyAnnotationElement(parameters); - - case _util.AnnotationType.STRIKEOUT: - return new StrikeOutAnnotationElement(parameters); - - case _util.AnnotationType.STAMP: - return new StampAnnotationElement(parameters); - - case _util.AnnotationType.FILEATTACHMENT: - return new FileAttachmentAnnotationElement(parameters); - - default: - return new AnnotationElement(parameters); - } - } - -} - -class AnnotationElement { - constructor(parameters, { - isRenderable = false, - ignoreBorder = false, - createQuadrilaterals = false - } = {}) { - this.isRenderable = isRenderable; - this.data = parameters.data; - this.layer = parameters.layer; - this.page = parameters.page; - this.viewport = parameters.viewport; - this.linkService = parameters.linkService; - this.downloadManager = parameters.downloadManager; - this.imageResourcesPath = parameters.imageResourcesPath; - this.renderForms = parameters.renderForms; - this.svgFactory = parameters.svgFactory; - this.annotationStorage = parameters.annotationStorage; - this.enableScripting = parameters.enableScripting; - this.hasJSActions = parameters.hasJSActions; - this._fieldObjects = parameters.fieldObjects; - this._mouseState = parameters.mouseState; - - if (isRenderable) { - this.container = this._createContainer(ignoreBorder); - } - - if (createQuadrilaterals) { - this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); - } - } - - _createContainer(ignoreBorder = false) { - const data = this.data, - page = this.page, - viewport = this.viewport; - const container = document.createElement("section"); - let { - width, - height - } = getRectDims(data.rect); - container.setAttribute("data-annotation-id", data.id); - - 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]]); - - if (data.hasOwnCanvas) { - const transform = viewport.transform.slice(); - - const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(transform); - - width = Math.ceil(width * scaleX); - height = Math.ceil(height * scaleY); - rect[0] *= scaleX; - rect[1] *= scaleY; - - for (let i = 0; i < 4; i++) { - transform[i] = Math.sign(transform[i]); - } - - container.style.transform = `matrix(${transform.join(",")})`; - } else { - container.style.transform = `matrix(${viewport.transform.join(",")})`; - } - - container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`; - - if (!ignoreBorder && data.borderStyle.width > 0) { - container.style.borderWidth = `${data.borderStyle.width}px`; - - if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { - width -= 2 * data.borderStyle.width; - height -= 2 * data.borderStyle.width; - } - - const horizontalRadius = data.borderStyle.horizontalCornerRadius; - const verticalRadius = data.borderStyle.verticalCornerRadius; - - if (horizontalRadius > 0 || verticalRadius > 0) { - const radius = `${horizontalRadius}px / ${verticalRadius}px`; - container.style.borderRadius = radius; - } - - switch (data.borderStyle.style) { - case _util.AnnotationBorderStyleType.SOLID: - container.style.borderStyle = "solid"; - break; - - case _util.AnnotationBorderStyleType.DASHED: - container.style.borderStyle = "dashed"; - break; - - case _util.AnnotationBorderStyleType.BEVELED: - (0, _util.warn)("Unimplemented border style: beveled"); - break; - - case _util.AnnotationBorderStyleType.INSET: - (0, _util.warn)("Unimplemented border style: inset"); - break; - - case _util.AnnotationBorderStyleType.UNDERLINE: - container.style.borderBottomStyle = "solid"; - break; - - default: - break; - } - - const borderColor = data.borderColor || data.color || null; - - if (borderColor) { - container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); - } else { - container.style.borderWidth = 0; - } - } - - container.style.left = `${rect[0]}px`; - container.style.top = `${rect[1]}px`; - - if (data.hasOwnCanvas) { - container.style.width = container.style.height = "auto"; - } else { - container.style.width = `${width}px`; - container.style.height = `${height}px`; - } - - return container; - } - - get _commonActions() { - const setColor = (jsName, styleName, event) => { - const color = event.detail[jsName]; - event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); - }; - - return (0, _util.shadow)(this, "_commonActions", { - display: event => { - const hidden = event.detail.display % 2 === 1; - event.target.style.visibility = hidden ? "hidden" : "visible"; - this.annotationStorage.setValue(this.data.id, { - hidden, - print: event.detail.display === 0 || event.detail.display === 3 - }); - }, - print: event => { - this.annotationStorage.setValue(this.data.id, { - print: event.detail.print - }); - }, - hidden: event => { - event.target.style.visibility = event.detail.hidden ? "hidden" : "visible"; - this.annotationStorage.setValue(this.data.id, { - hidden: event.detail.hidden - }); - }, - focus: event => { - setTimeout(() => event.target.focus({ - preventScroll: false - }), 0); - }, - userName: event => { - event.target.title = event.detail.userName; - }, - readonly: event => { - if (event.detail.readonly) { - event.target.setAttribute("readonly", ""); - } else { - event.target.removeAttribute("readonly"); - } - }, - required: event => { - if (event.detail.required) { - event.target.setAttribute("required", ""); - } else { - event.target.removeAttribute("required"); - } - }, - bgColor: event => { - setColor("bgColor", "backgroundColor", event); - }, - fillColor: event => { - setColor("fillColor", "backgroundColor", event); - }, - fgColor: event => { - setColor("fgColor", "color", event); - }, - textColor: event => { - setColor("textColor", "color", event); - }, - borderColor: event => { - setColor("borderColor", "borderColor", event); - }, - strokeColor: event => { - setColor("strokeColor", "borderColor", event); - } - }); - } - - _dispatchEventFromSandbox(actions, jsEvent) { - const commonActions = this._commonActions; - - for (const name of Object.keys(jsEvent.detail)) { - const action = actions[name] || commonActions[name]; - - if (action) { - action(jsEvent); - } - } - } - - _setDefaultPropertiesFromJS(element) { - if (!this.enableScripting) { - return; - } - - const storedData = this.annotationStorage.getRawValue(this.data.id); - - if (!storedData) { - return; - } - - const commonActions = this._commonActions; - - for (const [actionName, detail] of Object.entries(storedData)) { - const action = commonActions[actionName]; - - if (action) { - action({ - detail, - target: element - }); - delete storedData[actionName]; - } - } - } - - _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; - trigger.style.width = container.style.width; - container.appendChild(trigger); - } - - const popupElement = new PopupElement({ - container, - trigger, - color: data.color, - titleObj: data.titleObj, - modificationDate: data.modificationDate, - contentsObj: data.contentsObj, - richText: data.richText, - hideWrapper: true - }); - const popup = popupElement.render(); - popup.style.left = container.style.width; - container.appendChild(popup); - } - - _renderQuadrilaterals(className) { - for (const quadrilateral of this.quadrilaterals) { - quadrilateral.className = className; - } - - return this.quadrilaterals; - } - - render() { - (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); - } - - _getElementsByName(name, skipId = null) { - const fields = []; - - if (this._fieldObjects) { - const fieldObj = this._fieldObjects[name]; - - if (fieldObj) { - for (const { - page, - id, - exportValues - } of fieldObj) { - if (page === -1) { - continue; - } - - if (id === skipId) { - continue; - } - - const exportValue = typeof exportValues === "string" ? exportValues : null; - const domElement = document.getElementById(id); - - if (domElement && !GetElementsByNameSet.has(domElement)) { - (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`); - continue; - } - - fields.push({ - id, - exportValue, - domElement - }); - } - } - - return fields; - } - - for (const domElement of document.getElementsByName(name)) { - const { - id, - exportValue - } = domElement; - - if (id === skipId) { - continue; - } - - if (!GetElementsByNameSet.has(domElement)) { - continue; - } - - fields.push({ - id, - exportValue, - domElement - }); - } - - return fields; - } - - static get platform() { - const platform = typeof navigator !== "undefined" ? navigator.platform : ""; - return (0, _util.shadow)(this, "platform", { - isWin: platform.includes("Win"), - isMac: platform.includes("Mac") - }); - } - -} - -class LinkAnnotationElement extends AnnotationElement { - constructor(parameters, options = null) { - const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.resetForm || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"])); - super(parameters, { - isRenderable, - ignoreBorder: !!options?.ignoreBorder, - createQuadrilaterals: true - }); - } - - render() { - const { - data, - linkService - } = this; - const link = document.createElement("a"); - - if (data.url) { - linkService.addLinkAttributes(link, data.url, data.newWindow); - } else if (data.action) { - this._bindNamedAction(link, data.action); - } else if (data.dest) { - this._bindLink(link, data.dest); - } else { - let hasClickAction = false; - - if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { - hasClickAction = true; - - this._bindJSAction(link, data); - } - - if (data.resetForm) { - this._bindResetFormAction(link, data.resetForm); - } else if (!hasClickAction) { - 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; - } - - _bindLink(link, destination) { - link.href = this.linkService.getDestinationHash(destination); - - link.onclick = () => { - if (destination) { - this.linkService.goToDestination(destination); - } - - return false; - }; - - if (destination || destination === "") { - link.className = "internalLink"; - } - } - - _bindNamedAction(link, action) { - link.href = this.linkService.getAnchorUrl(""); - - link.onclick = () => { - this.linkService.executeNamedAction(action); - return false; - }; - - 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; - }; - } - - if (!link.onclick) { - link.onclick = () => false; - } - - link.className = "internalLink"; - } - - _bindResetFormAction(link, resetForm) { - const otherClickAction = link.onclick; - - if (!otherClickAction) { - link.href = this.linkService.getAnchorUrl(""); - } - - link.className = "internalLink"; - - if (!this._fieldObjects) { - (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); - - if (!otherClickAction) { - link.onclick = () => false; - } - - return; - } - - link.onclick = () => { - if (otherClickAction) { - otherClickAction(); - } - - const { - fields: resetFormFields, - refs: resetFormRefs, - include - } = resetForm; - const allFields = []; - - if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) { - const fieldIds = new Set(resetFormRefs); - - for (const fieldName of resetFormFields) { - const fields = this._fieldObjects[fieldName] || []; - - for (const { - id - } of fields) { - fieldIds.add(id); - } - } - - for (const fields of Object.values(this._fieldObjects)) { - for (const field of fields) { - if (fieldIds.has(field.id) === include) { - allFields.push(field); - } - } - } - } else { - for (const fields of Object.values(this._fieldObjects)) { - allFields.push(...fields); - } - } - - const storage = this.annotationStorage; - const allIds = []; - - for (const field of allFields) { - const { - id - } = field; - allIds.push(id); - - switch (field.type) { - case "text": - { - const value = field.defaultValue || ""; - storage.setValue(id, { - value - }); - break; - } - - case "checkbox": - case "radiobutton": - { - const value = field.defaultValue === field.exportValues; - storage.setValue(id, { - value - }); - break; - } - - case "combobox": - case "listbox": - { - const value = field.defaultValue || ""; - storage.setValue(id, { - value - }); - break; - } - - default: - continue; - } - - const domElement = document.getElementById(id); - - if (!domElement || !GetElementsByNameSet.has(domElement)) { - continue; - } - - domElement.dispatchEvent(new Event("resetform")); - } - - if (this.enableScripting) { - this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { - source: this, - detail: { - id: "app", - ids: allIds, - name: "ResetForm" - } - }); - } - - return false; - }; - } - -} - -class TextAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable - }); - } - - render() { - this.container.className = "textAnnotation"; - const image = document.createElement("img"); - image.style.height = this.container.style.height; - image.style.width = this.container.style.width; - image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; - image.alt = "[{{type}} Annotation]"; - image.dataset.l10nId = "text_annotation_type"; - image.dataset.l10nArgs = JSON.stringify({ - type: this.data.name - }); - - if (!this.data.hasPopup) { - this._createPopup(image, this.data); - } - - this.container.appendChild(image); - return this.container; - } - -} - -class WidgetAnnotationElement extends AnnotationElement { - render() { - if (this.data.alternativeText) { - this.container.title = this.data.alternativeText; - } - - return this.container; - } - - _getKeyModifier(event) { - const { - isWin, - isMac - } = AnnotationElement.platform; - return isWin && event.ctrlKey || isMac && 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: valueGetter(event) - } - }); - }); - } - } - - _setEventListeners(element, names, getter) { - for (const [baseName, eventName] of names) { - if (eventName === "Action" || this.data.actions?.[eventName]) { - this._setEventListener(element, baseName, eventName, getter); - } - } - } - - _setBackgroundColor(element) { - const color = this.data.backgroundColor || null; - element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]); - } - -} - -class TextWidgetAnnotationElement extends WidgetAnnotationElement { - constructor(parameters) { - const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; - super(parameters, { - isRenderable - }); - } - - setPropertyOnSiblings(base, key, value, keyInStorage) { - const storage = this.annotationStorage; - - for (const element of this._getElementsByName(base.name, base.id)) { - if (element.domElement) { - element.domElement[key] = value; - } - - storage.setValue(element.id, { - [keyInStorage]: value - }); - } - } - - render() { - const storage = this.annotationStorage; - const id = this.data.id; - this.container.className = "textWidgetAnnotation"; - let element = null; - - if (this.renderForms) { - const storedData = storage.getValue(id, { - value: this.data.fieldValue - }); - const textContent = storedData.formattedValue || storedData.value || ""; - const elementData = { - userValue: null, - formattedValue: null, - valueOnFocus: "" - }; - - if (this.data.multiLine) { - element = document.createElement("textarea"); - element.textContent = textContent; - } else { - element = document.createElement("input"); - element.type = "text"; - element.setAttribute("value", textContent); - } - - GetElementsByNameSet.add(element); - element.disabled = this.data.readOnly; - element.name = this.data.fieldName; - element.tabIndex = DEFAULT_TAB_INDEX; - elementData.userValue = textContent; - element.setAttribute("id", id); - element.addEventListener("input", event => { - storage.setValue(id, { - value: event.target.value - }); - this.setPropertyOnSiblings(element, "value", event.target.value, "value"); - }); - element.addEventListener("resetform", event => { - const defaultValue = this.data.defaultFieldValue ?? ""; - element.value = elementData.userValue = defaultValue; - elementData.formattedValue = null; - }); - - let blurListener = event => { - const { - formattedValue - } = elementData; - - if (formattedValue !== null && formattedValue !== undefined) { - event.target.value = formattedValue; - } - - event.target.scrollLeft = 0; - }; - - if (this.enableScripting && this.hasJSActions) { - element.addEventListener("focus", event => { - if (elementData.userValue) { - event.target.value = elementData.userValue; - } - - elementData.valueOnFocus = event.target.value; - }); - element.addEventListener("updatefromsandbox", jsEvent => { - const actions = { - value(event) { - elementData.userValue = event.detail.value ?? ""; - storage.setValue(id, { - value: elementData.userValue.toString() - }); - event.target.value = elementData.userValue; - }, - - formattedValue(event) { - const { - formattedValue - } = event.detail; - elementData.formattedValue = formattedValue; - - if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) { - event.target.value = formattedValue; - } - - storage.setValue(id, { - formattedValue - }); - }, - - selRange(event) { - event.target.setSelectionRange(...event.detail.selRange); - } - - }; - - this._dispatchEventFromSandbox(actions, jsEvent); - }); - element.addEventListener("keydown", event => { - 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; - } - - const { - value - } = event.target; - - if (elementData.valueOnFocus === value) { - return; - } - - elementData.userValue = value; - this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { - source: this, - detail: { - id, - name: "Keystroke", - value, - willCommit: true, - commitKey, - selStart: event.target.selectionStart, - selEnd: event.target.selectionEnd - } - }); - }); - const _blurListener = blurListener; - blurListener = null; - element.addEventListener("blur", event => { - const { - value - } = event.target; - elementData.userValue = value; - - if (this._mouseState.isDown && elementData.valueOnFocus !== value) { - this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { - source: this, - detail: { - id, - name: "Keystroke", - value, - willCommit: true, - commitKey: 1, - selStart: event.target.selectionStart, - selEnd: event.target.selectionEnd - } - }); - } - - _blurListener(event); - }); - - if (this.data.actions?.Keystroke) { - element.addEventListener("beforeinput", event => { - const { - data, - target - } = event; - const { - value, - selectionStart, - selectionEnd - } = target; - let selStart = selectionStart, - selEnd = selectionEnd; - - switch (event.inputType) { - case "deleteWordBackward": - { - const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/); - - if (match) { - selStart -= match[0].length; - } - - break; - } - - case "deleteWordForward": - { - const match = value.substring(selectionStart).match(/^[^\w]*\w*/); - - if (match) { - selEnd += match[0].length; - } - - break; - } - - case "deleteContentBackward": - if (selectionStart === selectionEnd) { - selStart -= 1; - } - - break; - - case "deleteContentForward": - if (selectionStart === selectionEnd) { - selEnd += 1; - } - - break; - } - - event.preventDefault(); - this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { - source: this, - detail: { - id, - name: "Keystroke", - value, - change: 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); - } - - if (this.data.maxLen !== null) { - element.maxLength = this.data.maxLen; - } - - if (this.data.comb) { - const fieldWidth = this.data.rect[2] - this.data.rect[0]; - const combWidth = fieldWidth / this.data.maxLen; - element.classList.add("comb"); - element.style.letterSpacing = `calc(${combWidth}px - 1ch)`; - } - } else { - element = document.createElement("div"); - element.textContent = this.data.fieldValue; - element.style.verticalAlign = "middle"; - element.style.display = "table-cell"; - } - - this._setTextStyle(element); - - this._setBackgroundColor(element); - - this._setDefaultPropertiesFromJS(element); - - this.container.appendChild(element); - return this.container; - } - - _setTextStyle(element) { - const TEXT_ALIGNMENT = ["left", "center", "right"]; - const { - fontSize, - fontColor - } = this.data.defaultAppearanceData; - const style = element.style; - - if (fontSize) { - style.fontSize = `${fontSize}px`; - } - - style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); - - if (this.data.textAlignment !== null) { - style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; - } - } - -} - -class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { - constructor(parameters) { - super(parameters, { - isRenderable: parameters.renderForms - }); - } - - render() { - const storage = this.annotationStorage; - const data = this.data; - const id = data.id; - let value = storage.getValue(id, { - value: data.exportValue === data.fieldValue - }).value; - - if (typeof value === "string") { - value = value !== "Off"; - storage.setValue(id, { - value - }); - } - - this.container.className = "buttonWidgetAnnotation checkBox"; - const element = document.createElement("input"); - GetElementsByNameSet.add(element); - element.disabled = data.readOnly; - element.type = "checkbox"; - element.name = data.fieldName; - - if (value) { - element.setAttribute("checked", true); - } - - element.setAttribute("id", id); - element.setAttribute("exportValue", data.exportValue); - element.tabIndex = DEFAULT_TAB_INDEX; - element.addEventListener("change", event => { - const { - name, - checked - } = event.target; - - for (const checkbox of this._getElementsByName(name, id)) { - const curChecked = checked && checkbox.exportValue === data.exportValue; - - if (checkbox.domElement) { - checkbox.domElement.checked = curChecked; - } - - storage.setValue(checkbox.id, { - value: curChecked - }); - } - - storage.setValue(id, { - value: checked - }); - }); - element.addEventListener("resetform", event => { - const defaultValue = data.defaultFieldValue || "Off"; - event.target.checked = defaultValue === data.exportValue; - }); - - if (this.enableScripting && this.hasJSActions) { - element.addEventListener("updatefromsandbox", jsEvent => { - const actions = { - value(event) { - event.target.checked = event.detail.value !== "Off"; - storage.setValue(id, { - value: event.target.checked - }); - } - - }; - - this._dispatchEventFromSandbox(actions, jsEvent); - }); - - 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._setBackgroundColor(element); - - this._setDefaultPropertiesFromJS(element); - - this.container.appendChild(element); - return this.container; - } - -} - -class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { - constructor(parameters) { - super(parameters, { - isRenderable: parameters.renderForms - }); - } - - render() { - this.container.className = "buttonWidgetAnnotation radioButton"; - const storage = this.annotationStorage; - const data = this.data; - const id = data.id; - let value = storage.getValue(id, { - value: data.fieldValue === data.buttonValue - }).value; - - if (typeof value === "string") { - value = value !== data.buttonValue; - storage.setValue(id, { - value - }); - } - - const element = document.createElement("input"); - GetElementsByNameSet.add(element); - element.disabled = data.readOnly; - element.type = "radio"; - element.name = data.fieldName; - - if (value) { - element.setAttribute("checked", true); - } - - element.setAttribute("id", id); - element.tabIndex = DEFAULT_TAB_INDEX; - element.addEventListener("change", event => { - const { - name, - checked - } = event.target; - - for (const radio of this._getElementsByName(name, id)) { - storage.setValue(radio.id, { - value: false - }); - } - - storage.setValue(id, { - value: checked - }); - }); - element.addEventListener("resetform", event => { - const defaultValue = data.defaultFieldValue; - event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue; - }); - - if (this.enableScripting && this.hasJSActions) { - const pdfButtonValue = data.buttonValue; - element.addEventListener("updatefromsandbox", jsEvent => { - const actions = { - value: event => { - const checked = pdfButtonValue === event.detail.value; - - for (const radio of this._getElementsByName(event.target.name)) { - const curChecked = checked && radio.id === id; - - if (radio.domElement) { - radio.domElement.checked = curChecked; - } - - storage.setValue(radio.id, { - value: curChecked - }); - } - } - }; - - this._dispatchEventFromSandbox(actions, jsEvent); - }); - - 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._setBackgroundColor(element); - - this._setDefaultPropertiesFromJS(element); - - this.container.appendChild(element); - return this.container; - } - -} - -class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { - constructor(parameters) { - super(parameters, { - ignoreBorder: parameters.data.hasAppearance - }); - } - - render() { - const container = super.render(); - container.className = "buttonWidgetAnnotation pushButton"; - - if (this.data.alternativeText) { - container.title = this.data.alternativeText; - } - - this._setDefaultPropertiesFromJS(container); - - return container; - } - -} - -class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { - constructor(parameters) { - super(parameters, { - isRenderable: parameters.renderForms - }); - } - - render() { - this.container.className = "choiceWidgetAnnotation"; - const storage = this.annotationStorage; - const id = this.data.id; - const storedData = storage.getValue(id, { - value: this.data.fieldValue - }); - let { - fontSize - } = this.data.defaultAppearanceData; - - if (!fontSize) { - fontSize = 9; - } - - const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`; - const selectElement = document.createElement("select"); - GetElementsByNameSet.add(selectElement); - selectElement.disabled = this.data.readOnly; - selectElement.name = this.data.fieldName; - selectElement.setAttribute("id", id); - selectElement.tabIndex = DEFAULT_TAB_INDEX; - selectElement.style.fontSize = `${fontSize}px`; - - if (!this.data.combo) { - selectElement.size = this.data.options.length; - - if (this.data.multiSelect) { - selectElement.multiple = true; - } - } - - selectElement.addEventListener("resetform", event => { - const defaultValue = this.data.defaultFieldValue; - - for (const option of selectElement.options) { - option.selected = option.value === defaultValue; - } - }); - - for (const option of this.data.options) { - const optionElement = document.createElement("option"); - optionElement.textContent = option.displayValue; - optionElement.value = option.exportValue; - - if (this.data.combo) { - optionElement.style.fontSize = fontSizeStyle; - } - - if (storedData.value.includes(option.exportValue)) { - optionElement.setAttribute("selected", true); - } - - selectElement.appendChild(optionElement); - } - - const getValue = (event, isExport) => { - const name = isExport ? "value" : "textContent"; - const options = event.target.options; - - if (!event.target.multiple) { - return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; - } - - return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); - }; - - const getItems = event => { - const options = event.target.options; - return Array.prototype.map.call(options, option => { - return { - displayValue: option.textContent, - exportValue: option.value - }; - }); - }; - - if (this.enableScripting && this.hasJSActions) { - selectElement.addEventListener("updatefromsandbox", jsEvent => { - const actions = { - value(event) { - const value = event.detail.value; - const values = new Set(Array.isArray(value) ? value : [value]); - - for (const option of selectElement.options) { - option.selected = values.has(option.value); - } - - storage.setValue(id, { - value: getValue(event, true) - }); - }, - - multipleSelection(event) { - selectElement.multiple = true; - }, - - remove(event) { - const options = selectElement.options; - const index = event.detail.remove; - options[index].selected = false; - selectElement.remove(index); - - if (options.length > 0) { - const i = Array.prototype.findIndex.call(options, option => option.selected); - - if (i === -1) { - options[0].selected = true; - } - } - - storage.setValue(id, { - value: getValue(event, true), - items: getItems(event) - }); - }, - - clear(event) { - while (selectElement.length !== 0) { - selectElement.remove(0); - } - - storage.setValue(id, { - value: null, - items: [] - }); - }, - - insert(event) { - const { - index, - displayValue, - exportValue - } = event.detail.insert; - const optionElement = document.createElement("option"); - optionElement.textContent = displayValue; - optionElement.value = exportValue; - selectElement.insertBefore(optionElement, selectElement.children[index]); - storage.setValue(id, { - value: getValue(event, true), - items: getItems(event) - }); - }, - - items(event) { - const { - items - } = event.detail; - - while (selectElement.length !== 0) { - selectElement.remove(0); - } - - for (const item of items) { - const { - displayValue, - exportValue - } = item; - const optionElement = document.createElement("option"); - optionElement.textContent = displayValue; - optionElement.value = exportValue; - selectElement.appendChild(optionElement); - } - - if (selectElement.options.length > 0) { - selectElement.options[0].selected = true; - } - - storage.setValue(id, { - value: getValue(event, true), - items: getItems(event) - }); - }, - - indices(event) { - const indices = new Set(event.detail.indices); - - for (const option of event.target.options) { - option.selected = indices.has(option.index); - } - - storage.setValue(id, { - value: getValue(event, true) - }); - }, - - editable(event) { - event.target.disabled = !event.detail.editable; - } - - }; - - this._dispatchEventFromSandbox(actions, jsEvent); - }); - selectElement.addEventListener("input", event => { - const exportValue = getValue(event, true); - const value = getValue(event, false); - storage.setValue(id, { - value: exportValue - }); - this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { - source: this, - detail: { - id, - name: "Keystroke", - value, - changeEx: exportValue, - 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"], ["input", "Action"]], event => event.target.checked); - } else { - selectElement.addEventListener("input", function (event) { - storage.setValue(id, { - value: getValue(event, true) - }); - }); - } - - this._setBackgroundColor(selectElement); - - this._setDefaultPropertiesFromJS(selectElement); - - this.container.appendChild(selectElement); - return this.container; - } - -} - -class PopupAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable - }); - } - - render() { - const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; - this.container.className = "popupAnnotation"; - - if (IGNORE_TYPES.includes(this.data.parentType)) { - return this.container; - } - - const selector = `[data-annotation-id="${this.data.parentId}"]`; - const parentElements = this.layer.querySelectorAll(selector); - - if (parentElements.length === 0) { - return this.container; - } - - const popup = new PopupElement({ - container: this.container, - trigger: Array.from(parentElements), - color: this.data.color, - titleObj: this.data.titleObj, - modificationDate: this.data.modificationDate, - contentsObj: this.data.contentsObj, - richText: this.data.richText - }); - 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; - } - -} - -class PopupElement { - constructor(parameters) { - this.container = parameters.container; - this.trigger = parameters.trigger; - this.color = parameters.color; - this.titleObj = parameters.titleObj; - this.modificationDate = parameters.modificationDate; - this.contentsObj = parameters.contentsObj; - this.richText = parameters.richText; - this.hideWrapper = parameters.hideWrapper || false; - this.pinned = false; - } - - render() { - const BACKGROUND_ENLIGHT = 0.7; - const wrapper = document.createElement("div"); - wrapper.className = "popupWrapper"; - this.hideElement = this.hideWrapper ? wrapper : this.container; - this.hideElement.hidden = true; - const popup = document.createElement("div"); - popup.className = "popup"; - const color = this.color; - - if (color) { - 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.makeHexColor(r | 0, g | 0, b | 0); - } - - const title = document.createElement("h1"); - title.dir = this.titleObj.dir; - title.textContent = this.titleObj.str; - popup.appendChild(title); - - const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); - - if (dateObject) { - const modificationDate = document.createElement("span"); - modificationDate.className = "popupDate"; - modificationDate.textContent = "{{date}}, {{time}}"; - modificationDate.dataset.l10nId = "annotation_date_string"; - modificationDate.dataset.l10nArgs = JSON.stringify({ - date: dateObject.toLocaleDateString(), - time: dateObject.toLocaleTimeString() - }); - popup.appendChild(modificationDate); - } - - if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) { - _xfa_layer.XfaLayer.render({ - xfaHtml: this.richText.html, - intent: "richText", - div: popup - }); - - popup.lastChild.className = "richText popupContent"; - } else { - const contents = this._formatContents(this.contentsObj); - - popup.appendChild(contents); - } - - if (!Array.isArray(this.trigger)) { - this.trigger = [this.trigger]; - } - - for (const element of this.trigger) { - 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; - } - - _formatContents({ - str, - dir - }) { - const p = document.createElement("p"); - p.className = "popupContent"; - p.dir = dir; - const lines = str.split(/(?:\r\n?|\n)/); - - for (let i = 0, ii = lines.length; i < ii; ++i) { - const line = lines[i]; - p.appendChild(document.createTextNode(line)); - - if (i < ii - 1) { - p.appendChild(document.createElement("br")); - } - } - - return p; - } - - _toggle() { - if (this.pinned) { - this._hide(true); - } else { - this._show(true); - } - } - - _show(pin = false) { - if (pin) { - this.pinned = true; - } - - if (this.hideElement.hidden) { - this.hideElement.hidden = false; - this.container.style.zIndex += 1; - } - } - - _hide(unpin = true) { - if (unpin) { - this.pinned = false; - } - - if (!this.hideElement.hidden && !this.pinned) { - this.hideElement.hidden = true; - this.container.style.zIndex -= 1; - } - } - -} - -class FreeTextAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - } - - render() { - this.container.className = "freeTextAnnotation"; - - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - return this.container; - } - -} - -class LineAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - } - - render() { - this.container.className = "lineAnnotation"; - const data = this.data; - const { - width, - height - } = getRectDims(data.rect); - const svg = this.svgFactory.create(width, height); - const line = this.svgFactory.createElement("svg:line"); - line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); - line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); - line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); - line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); - line.setAttribute("stroke-width", data.borderStyle.width || 1); - line.setAttribute("stroke", "transparent"); - line.setAttribute("fill", "transparent"); - svg.appendChild(line); - this.container.append(svg); - - this._createPopup(line, data); - - return this.container; - } - -} - -class SquareAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - } - - render() { - this.container.className = "squareAnnotation"; - const data = this.data; - const { - width, - height - } = getRectDims(data.rect); - const svg = this.svgFactory.create(width, height); - const borderWidth = data.borderStyle.width; - const square = this.svgFactory.createElement("svg:rect"); - square.setAttribute("x", borderWidth / 2); - square.setAttribute("y", borderWidth / 2); - square.setAttribute("width", width - borderWidth); - square.setAttribute("height", height - borderWidth); - square.setAttribute("stroke-width", borderWidth || 1); - square.setAttribute("stroke", "transparent"); - square.setAttribute("fill", "transparent"); - svg.appendChild(square); - this.container.append(svg); - - this._createPopup(square, data); - - return this.container; - } - -} - -class CircleAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - } - - render() { - this.container.className = "circleAnnotation"; - const data = this.data; - const { - width, - height - } = getRectDims(data.rect); - const svg = this.svgFactory.create(width, height); - const borderWidth = data.borderStyle.width; - const circle = this.svgFactory.createElement("svg:ellipse"); - circle.setAttribute("cx", width / 2); - circle.setAttribute("cy", height / 2); - circle.setAttribute("rx", width / 2 - borderWidth / 2); - circle.setAttribute("ry", height / 2 - borderWidth / 2); - circle.setAttribute("stroke-width", borderWidth || 1); - circle.setAttribute("stroke", "transparent"); - circle.setAttribute("fill", "transparent"); - svg.appendChild(circle); - this.container.append(svg); - - this._createPopup(circle, data); - - return this.container; - } - -} - -class PolylineAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - this.containerClassName = "polylineAnnotation"; - this.svgElementName = "svg:polyline"; - } - - render() { - this.container.className = this.containerClassName; - const data = this.data; - const { - width, - height - } = getRectDims(data.rect); - const svg = this.svgFactory.create(width, height); - let points = []; - - for (const coordinate of data.vertices) { - const x = coordinate.x - data.rect[0]; - const y = data.rect[3] - coordinate.y; - points.push(x + "," + y); - } - - points = points.join(" "); - const polyline = this.svgFactory.createElement(this.svgElementName); - polyline.setAttribute("points", points); - polyline.setAttribute("stroke-width", data.borderStyle.width || 1); - polyline.setAttribute("stroke", "transparent"); - polyline.setAttribute("fill", "transparent"); - svg.appendChild(polyline); - this.container.append(svg); - - this._createPopup(polyline, data); - - return this.container; - } - -} - -class PolygonAnnotationElement extends PolylineAnnotationElement { - constructor(parameters) { - super(parameters); - this.containerClassName = "polygonAnnotation"; - this.svgElementName = "svg:polygon"; - } - -} - -class CaretAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - } - - render() { - this.container.className = "caretAnnotation"; - - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - return this.container; - } - -} - -class InkAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - this.containerClassName = "inkAnnotation"; - this.svgElementName = "svg:polyline"; - } - - render() { - this.container.className = this.containerClassName; - const data = this.data; - const { - width, - height - } = getRectDims(data.rect); - const svg = this.svgFactory.create(width, height); - - for (const inkList of data.inkLists) { - let points = []; - - for (const coordinate of inkList) { - const x = coordinate.x - data.rect[0]; - const y = data.rect[3] - coordinate.y; - points.push(`${x},${y}`); - } - - points = points.join(" "); - const polyline = this.svgFactory.createElement(this.svgElementName); - polyline.setAttribute("points", points); - polyline.setAttribute("stroke-width", data.borderStyle.width || 1); - polyline.setAttribute("stroke", "transparent"); - polyline.setAttribute("fill", "transparent"); - - this._createPopup(polyline, data); - - svg.appendChild(polyline); - } - - this.container.append(svg); - return this.container; - } - -} - -class HighlightAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("highlightAnnotation"); - } - - this.container.className = "highlightAnnotation"; - return this.container; - } - -} - -class UnderlineAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("underlineAnnotation"); - } - - this.container.className = "underlineAnnotation"; - return this.container; - } - -} - -class SquigglyAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("squigglyAnnotation"); - } - - this.container.className = "squigglyAnnotation"; - return this.container; - } - -} - -class StrikeOutAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true, - createQuadrilaterals: true - }); - } - - render() { - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - if (this.quadrilaterals) { - return this._renderQuadrilaterals("strikeoutAnnotation"); - } - - this.container.className = "strikeoutAnnotation"; - return this.container; - } - -} - -class StampAnnotationElement extends AnnotationElement { - constructor(parameters) { - const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); - super(parameters, { - isRenderable, - ignoreBorder: true - }); - } - - render() { - this.container.className = "stampAnnotation"; - - if (!this.data.hasPopup) { - this._createPopup(null, this.data); - } - - return this.container; - } - -} - -class FileAttachmentAnnotationElement extends AnnotationElement { - constructor(parameters) { - super(parameters, { - isRenderable: true - }); - const { - filename, - content - } = this.data.file; - this.filename = (0, _display_utils.getFilenameFromUrl)(filename); - this.content = content; - this.linkService.eventBus?.dispatch("fileattachmentannotation", { - source: this, - filename, - content - }); - } - - render() { - this.container.className = "fileAttachmentAnnotation"; - const trigger = document.createElement("div"); - trigger.style.height = this.container.style.height; - trigger.style.width = this.container.style.width; - trigger.addEventListener("dblclick", this._download.bind(this)); - - if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) { - this._createPopup(trigger, this.data); - } - - this.container.appendChild(trigger); - return this.container; - } - - _download() { - this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); - } - -} - -class AnnotationLayer { - static render(parameters) { - const sortedAnnotations = [], - popupAnnotations = []; - - for (const data of parameters.annotations) { - if (!data) { - continue; - } - - const { - width, - height - } = getRectDims(data.rect); - - if (width <= 0 || height <= 0) { - continue; - } - - if (data.annotationType === _util.AnnotationType.POPUP) { - popupAnnotations.push(data); - continue; - } - - sortedAnnotations.push(data); - } - - if (popupAnnotations.length) { - sortedAnnotations.push(...popupAnnotations); - } - - const div = parameters.div; - - for (const data of sortedAnnotations) { - const element = AnnotationElementFactory.create({ - data, - layer: div, - page: parameters.page, - viewport: parameters.viewport, - linkService: parameters.linkService, - downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || "", - renderForms: parameters.renderForms !== false, - svgFactory: new _display_utils.DOMSVGFactory(), - annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), - enableScripting: parameters.enableScripting, - hasJSActions: parameters.hasJSActions, - fieldObjects: parameters.fieldObjects, - mouseState: parameters.mouseState || { - isDown: false - } - }); - - if (element.isRenderable) { - const rendered = element.render(); - - if (data.hidden) { - rendered.style.visibility = "hidden"; - } - - if (Array.isArray(rendered)) { - for (const renderedElement of rendered) { - div.appendChild(renderedElement); - } - } else { - if (element instanceof PopupAnnotationElement) { - div.prepend(rendered); - } else { - div.appendChild(rendered); - } - } - } - } - - this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap); - } - - static update(parameters) { - const { - page, - viewport, - annotations, - annotationCanvasMap, - div - } = parameters; - const transform = viewport.transform; - const matrix = `matrix(${transform.join(",")})`; - let scale, ownMatrix; - - for (const data of annotations) { - const elements = div.querySelectorAll(`[data-annotation-id="${data.id}"]`); - - if (elements) { - for (const element of elements) { - if (data.hasOwnCanvas) { - 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]]); - - if (!ownMatrix) { - scale = Math.abs(transform[0] || transform[1]); - const ownTransform = transform.slice(); - - for (let i = 0; i < 4; i++) { - ownTransform[i] = Math.sign(ownTransform[i]); - } - - ownMatrix = `matrix(${ownTransform.join(",")})`; - } - - const left = rect[0] * scale; - const top = rect[1] * scale; - element.style.left = `${left}px`; - element.style.top = `${top}px`; - element.style.transformOrigin = `${-left}px ${-top}px`; - element.style.transform = ownMatrix; - } else { - element.style.transform = matrix; - } - } - } - } - - this.#setAnnotationCanvasMap(div, annotationCanvasMap); - div.hidden = false; - } - - static #setAnnotationCanvasMap(div, annotationCanvasMap) { - if (!annotationCanvasMap) { - return; - } - - for (const [id, canvas] of annotationCanvasMap) { - const element = div.querySelector(`[data-annotation-id="${id}"]`); - - if (!element) { - continue; - } - - const { - firstChild - } = element; - - if (firstChild.nodeName === "CANVAS") { - element.replaceChild(canvas, firstChild); - } else { - element.insertBefore(canvas, firstChild); - } - } - - annotationCanvasMap.clear(); - } - -} - -exports.AnnotationLayer = AnnotationLayer; - -/***/ }), -/* 21 */ -/***/ ((__unused_webpack_module, exports) => { - - - -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; - -/***/ }), -/* 22 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XfaLayer = void 0; - -var _xfa_text = __w_pdfjs_require__(18); - -class XfaLayer { - static setupStorage(html, id, element, storage, intent) { - const storedData = storage.getValue(id, { - value: null - }); - - switch (element.name) { - case "textarea": - if (storedData.value !== null) { - html.textContent = storedData.value; - } - - if (intent === "print") { - break; - } - - html.addEventListener("input", event => { - storage.setValue(id, { - value: event.target.value - }); - }); - break; - - case "input": - if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { - if (storedData.value === element.attributes.xfaOn) { - html.setAttribute("checked", true); - } else if (storedData.value === element.attributes.xfaOff) { - html.removeAttribute("checked"); - } - - if (intent === "print") { - break; - } - - html.addEventListener("change", event => { - storage.setValue(id, { - value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff") - }); - }); - } else { - if (storedData.value !== null) { - html.setAttribute("value", storedData.value); - } - - if (intent === "print") { - break; - } - - html.addEventListener("input", event => { - storage.setValue(id, { - value: event.target.value - }); - }); - } - - break; - - case "select": - if (storedData.value !== null) { - for (const option of element.children) { - if (option.attributes.value === storedData.value) { - option.attributes.selected = true; - } - } - } - - html.addEventListener("input", event => { - const options = event.target.options; - const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; - storage.setValue(id, { - value - }); - }); - break; - } - } - - static setAttributes({ - html, - element, - storage = null, - intent, - linkService - }) { - const { - attributes - } = element; - const isHTMLAnchorElement = html instanceof HTMLAnchorElement; - - if (attributes.type === "radio") { - attributes.name = `${attributes.name}-${intent}`; - } - - for (const [key, value] of Object.entries(attributes)) { - if (value === null || value === undefined || key === "dataId") { - continue; - } - - if (key !== "style") { - if (key === "textContent") { - html.textContent = value; - } else if (key === "class") { - if (value.length) { - html.setAttribute(key, value.join(" ")); - } - } else { - if (isHTMLAnchorElement && (key === "href" || key === "newWindow")) { - continue; - } - - html.setAttribute(key, value); - } - } else { - Object.assign(html.style, value); - } - } - - if (isHTMLAnchorElement) { - linkService.addLinkAttributes(html, attributes.href, attributes.newWindow); - } - - if (storage && attributes.dataId) { - this.setupStorage(html, attributes.dataId, element, storage); - } - } - - static render(parameters) { - const storage = parameters.annotationStorage; - const linkService = parameters.linkService; - const root = parameters.xfaHtml; - const intent = parameters.intent || "display"; - const rootHtml = document.createElement(root.name); - - if (root.attributes) { - this.setAttributes({ - html: rootHtml, - element: root, - intent, - linkService - }); - } - - const stack = [[root, -1, rootHtml]]; - const rootDiv = parameters.div; - rootDiv.appendChild(rootHtml); - - if (parameters.viewport) { - const transform = `matrix(${parameters.viewport.transform.join(",")})`; - rootDiv.style.transform = transform; - } - - if (intent !== "richText") { - rootDiv.setAttribute("class", "xfaLayer xfaFont"); - } - - const textDivs = []; - - while (stack.length > 0) { - const [parent, i, html] = stack[stack.length - 1]; - - if (i + 1 === parent.children.length) { - stack.pop(); - continue; - } - - const child = parent.children[++stack[stack.length - 1][1]]; - - if (child === null) { - continue; - } - - const { - name - } = child; - - if (name === "#text") { - const node = document.createTextNode(child.value); - textDivs.push(node); - html.appendChild(node); - continue; - } - - let childHtml; - - if (child?.attributes?.xmlns) { - childHtml = document.createElementNS(child.attributes.xmlns, name); - } else { - childHtml = document.createElement(name); - } - - html.appendChild(childHtml); - - if (child.attributes) { - this.setAttributes({ - html: childHtml, - element: child, - storage, - intent, - linkService - }); - } - - if (child.children && child.children.length > 0) { - stack.push([child, -1, childHtml]); - } else if (child.value) { - const node = document.createTextNode(child.value); - - if (_xfa_text.XfaText.shouldBuildText(name)) { - textDivs.push(node); - } - - childHtml.appendChild(node); - } - } - - for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { - el.setAttribute("readOnly", true); - } - - return { - textDivs - }; - } - - static update(parameters) { - const transform = `matrix(${parameters.viewport.transform.join(",")})`; - parameters.div.style.transform = transform; - parameters.div.hidden = false; - } - -} - -exports.XfaLayer = XfaLayer; - -/***/ }), -/* 23 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.renderTextLayer = renderTextLayer; - -var _util = __w_pdfjs_require__(1); - -const MAX_TEXT_DIVS_TO_RENDER = 100000; -const DEFAULT_FONT_SIZE = 30; -const DEFAULT_FONT_ASCENT = 0.8; -const ascentCache = new Map(); -const AllWhitespaceRegexp = /^\s+$/g; - -function getAscent(fontFamily, ctx) { - const cachedAscent = ascentCache.get(fontFamily); - - if (cachedAscent) { - return cachedAscent; - } - - ctx.save(); - ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; - const metrics = ctx.measureText(""); - let ascent = metrics.fontBoundingBoxAscent; - let descent = Math.abs(metrics.fontBoundingBoxDescent); - - if (ascent) { - ctx.restore(); - const ratio = ascent / (ascent + descent); - ascentCache.set(fontFamily, ratio); - return ratio; - } - - ctx.strokeStyle = "red"; - ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); - ctx.strokeText("g", 0, 0); - let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; - descent = 0; - - for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { - if (pixels[i] > 0) { - descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); - break; - } - } - - ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); - ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); - pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; - ascent = 0; - - for (let i = 0, ii = pixels.length; i < ii; i += 4) { - if (pixels[i] > 0) { - ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); - break; - } - } - - ctx.restore(); - - if (ascent) { - const ratio = ascent / (ascent + descent); - ascentCache.set(fontFamily, ratio); - return ratio; - } - - ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); - return DEFAULT_FONT_ASCENT; -} - -function appendText(task, geom, styles, ctx) { - const textDiv = document.createElement("span"); - const textDivProperties = task._enhanceTextSelection ? { - angle: 0, - canvasWidth: 0, - hasText: geom.str !== "", - hasEOL: geom.hasEOL, - originalTransform: null, - paddingBottom: 0, - paddingLeft: 0, - paddingRight: 0, - paddingTop: 0, - scale: 1 - } : { - angle: 0, - canvasWidth: 0, - hasText: geom.str !== "", - hasEOL: geom.hasEOL - }; - - task._textDivs.push(textDiv); - - const tx = _util.Util.transform(task._viewport.transform, geom.transform); - - let angle = Math.atan2(tx[1], tx[0]); - const style = styles[geom.fontName]; - - if (style.vertical) { - angle += Math.PI / 2; - } - - const fontHeight = Math.hypot(tx[2], tx[3]); - const fontAscent = fontHeight * getAscent(style.fontFamily, ctx); - let left, top; - - if (angle === 0) { - left = tx[4]; - top = tx[5] - fontAscent; - } else { - left = tx[4] + fontAscent * Math.sin(angle); - top = tx[5] - fontAscent * Math.cos(angle); - } - - textDiv.style.left = `${left}px`; - textDiv.style.top = `${top}px`; - textDiv.style.fontSize = `${fontHeight}px`; - textDiv.style.fontFamily = style.fontFamily; - textDiv.setAttribute("role", "presentation"); - textDiv.textContent = geom.str; - textDiv.dir = geom.dir; - - if (task._fontInspectorEnabled) { - textDiv.dataset.fontName = geom.fontName; - } - - if (angle !== 0) { - textDivProperties.angle = angle * (180 / Math.PI); - } - - let shouldScaleText = false; - - if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) { - shouldScaleText = true; - } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) { - const absScaleX = Math.abs(geom.transform[0]), - absScaleY = Math.abs(geom.transform[3]); - - if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { - shouldScaleText = true; - } - } - - if (shouldScaleText) { - if (style.vertical) { - textDivProperties.canvasWidth = geom.height * task._viewport.scale; - } else { - textDivProperties.canvasWidth = geom.width * task._viewport.scale; - } - } - - task._textDivProperties.set(textDiv, textDivProperties); - - if (task._textContentStream) { - task._layoutText(textDiv); - } - - if (task._enhanceTextSelection && textDivProperties.hasText) { - let angleCos = 1, - angleSin = 0; - - if (angle !== 0) { - angleCos = Math.cos(angle); - angleSin = Math.sin(angle); - } - - 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]; - b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); - } else { - b = [left, top, left + divWidth, top + divHeight]; - } - - task._bounds.push({ - left: b[0], - top: b[1], - right: b[2], - bottom: b[3], - div: textDiv, - size: [divWidth, divHeight], - m - }); - } -} - -function render(task) { - if (task._canceled) { - return; - } - - const textDivs = task._textDivs; - const capability = task._capability; - const textDivsLength = textDivs.length; - - if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { - task._renderingDone = true; - capability.resolve(); - return; - } - - if (!task._textContentStream) { - for (let i = 0; i < textDivsLength; i++) { - task._layoutText(textDivs[i]); - } - } - - task._renderingDone = true; - capability.resolve(); -} - -function findPositiveMin(ts, offset, count) { - let result = 0; - - for (let i = 0; i < count; i++) { - const t = ts[offset++]; - - if (t > 0) { - result = result ? Math.min(t, result) : t; - } - } - - return result; -} - -function expand(task) { - const bounds = task._bounds; - const viewport = task._viewport; - const expanded = expandBounds(viewport.width, viewport.height, bounds); - - for (let i = 0; i < expanded.length; i++) { - const div = bounds[i].div; - - const divProperties = task._textDivProperties.get(div); - - if (divProperties.angle === 0) { - divProperties.paddingLeft = bounds[i].left - expanded[i].left; - divProperties.paddingTop = bounds[i].top - expanded[i].top; - divProperties.paddingRight = expanded[i].right - bounds[i].right; - divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; - - task._textDivProperties.set(div, divProperties); - - continue; - } - - 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); - - for (let j = 0, jj = points.length; j < jj; j++) { - const t = _util.Util.applyTransform(points[j], m); - - ts[j + 0] = c && (e.left - t[0]) / c; - ts[j + 4] = s && (e.top - t[1]) / s; - ts[j + 8] = c && (e.right - t[0]) / c; - ts[j + 12] = s && (e.bottom - t[1]) / s; - ts[j + 16] = s && (e.left - t[0]) / -s; - ts[j + 20] = c && (e.top - t[1]) / c; - ts[j + 24] = s && (e.right - t[0]) / -s; - ts[j + 28] = c && (e.bottom - t[1]) / c; - ts[j + 32] = c && (e.left - t[0]) / -c; - ts[j + 36] = s && (e.top - t[1]) / -s; - ts[j + 40] = c && (e.right - t[0]) / -c; - ts[j + 44] = s && (e.bottom - t[1]) / -s; - ts[j + 48] = s && (e.left - t[0]) / s; - ts[j + 52] = c && (e.top - t[1]) / -c; - ts[j + 56] = s && (e.right - t[0]) / s; - ts[j + 60] = c && (e.bottom - t[1]) / -c; - } - - 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; - divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; - - task._textDivProperties.set(div, divProperties); - } -} - -function expandBounds(width, height, boxes) { - const bounds = boxes.map(function (box, i) { - return { - x1: box.left, - y1: box.top, - x2: box.right, - y2: box.bottom, - index: i, - x1New: undefined, - x2New: undefined - }; - }); - expandBoundsLTR(width, bounds); - const expanded = new Array(boxes.length); - - for (const b of bounds) { - const i = b.index; - expanded[i] = { - left: b.x1New, - top: 0, - right: b.x2New, - bottom: 0 - }; - } - - boxes.map(function (box, i) { - const e = expanded[i], - b = bounds[i]; - b.x1 = box.top; - b.y1 = width - e.right; - b.x2 = box.bottom; - b.y2 = width - e.left; - b.index = i; - b.x1New = undefined; - b.x2New = undefined; - }); - expandBoundsLTR(height, bounds); - - for (const b of bounds) { - const i = b.index; - expanded[i].top = b.x1New; - expanded[i].bottom = b.x2New; - } - - return expanded; -} - -function expandBoundsLTR(width, bounds) { - bounds.sort(function (a, b) { - return a.x1 - b.x1 || a.index - b.index; - }); - const fakeBoundary = { - x1: -Infinity, - y1: -Infinity, - x2: 0, - y2: Infinity, - index: -1, - x1New: 0, - x2New: 0 - }; - const horizon = [{ - start: -Infinity, - end: Infinity, - boundary: fakeBoundary - }]; - - for (const boundary of bounds) { - let i = 0; - - while (i < horizon.length && horizon[i].end <= boundary.y1) { - i++; - } - - let j = horizon.length - 1; - - while (j >= 0 && horizon[j].start >= boundary.y2) { - j--; - } - - let horizonPart, affectedBoundary; - let q, - k, - maxXNew = -Infinity; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - let xNew; - - if (affectedBoundary.x2 > boundary.x1) { - xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; - } else if (affectedBoundary.x2New === undefined) { - xNew = (affectedBoundary.x2 + boundary.x1) / 2; - } else { - xNew = affectedBoundary.x2New; - } - - if (xNew > maxXNew) { - maxXNew = xNew; - } - } - - boundary.x1New = maxXNew; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New === undefined) { - if (affectedBoundary.x2 > boundary.x1) { - if (affectedBoundary.index > boundary.index) { - affectedBoundary.x2New = affectedBoundary.x2; - } - } else { - affectedBoundary.x2New = maxXNew; - } - } else if (affectedBoundary.x2New > maxXNew) { - affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); - } - } - - const changedHorizon = []; - let lastBoundary = null; - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; - - if (lastBoundary === useBoundary) { - changedHorizon[changedHorizon.length - 1].end = horizonPart.end; - } else { - changedHorizon.push({ - start: horizonPart.start, - end: horizonPart.end, - boundary: useBoundary - }); - lastBoundary = useBoundary; - } - } - - if (horizon[i].start < boundary.y1) { - changedHorizon[0].start = boundary.y1; - changedHorizon.unshift({ - start: horizon[i].start, - end: boundary.y1, - boundary: horizon[i].boundary - }); - } - - if (boundary.y2 < horizon[j].end) { - changedHorizon[changedHorizon.length - 1].end = boundary.y2; - changedHorizon.push({ - start: boundary.y2, - end: horizon[j].end, - boundary: horizon[j].boundary - }); - } - - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New !== undefined) { - continue; - } - - let used = false; - - for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { - used = horizon[k].boundary === affectedBoundary; - } - - for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { - used = horizon[k].boundary === affectedBoundary; - } - - for (k = 0; !used && k < changedHorizon.length; k++) { - used = changedHorizon[k].boundary === affectedBoundary; - } - - if (!used) { - affectedBoundary.x2New = maxXNew; - } - } - - Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); - } - - for (const horizonPart of horizon) { - const affectedBoundary = horizonPart.boundary; - - if (affectedBoundary.x2New === undefined) { - affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); - } - } -} - -class TextLayerRenderTask { - constructor({ - textContent, - textContentStream, - container, - viewport, - textDivs, - textContentItemsStr, - enhanceTextSelection - }) { - this._textContent = textContent; - this._textContentStream = textContentStream; - this._container = container; - this._document = container.ownerDocument; - this._viewport = viewport; - this._textDivs = textDivs || []; - this._textContentItemsStr = textContentItemsStr || []; - this._enhanceTextSelection = !!enhanceTextSelection; - this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; - this._reader = null; - this._layoutTextLastFontSize = null; - this._layoutTextLastFontFamily = null; - this._layoutTextCtx = null; - this._textDivProperties = new WeakMap(); - this._renderingDone = false; - this._canceled = false; - this._capability = (0, _util.createPromiseCapability)(); - this._renderTimer = null; - this._bounds = []; - - this._capability.promise.finally(() => { - if (!this._enhanceTextSelection) { - this._textDivProperties = null; - } - - if (this._layoutTextCtx) { - this._layoutTextCtx.canvas.width = 0; - this._layoutTextCtx.canvas.height = 0; - this._layoutTextCtx = null; - } - }).catch(() => {}); - } - - get promise() { - return this._capability.promise; - } - - cancel() { - this._canceled = true; - - if (this._reader) { - this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {}); - - this._reader = null; - } - - if (this._renderTimer !== null) { - clearTimeout(this._renderTimer); - this._renderTimer = null; - } - - this._capability.reject(new Error("TextLayer task cancelled.")); - } - - _processItems(items, styleCache) { - for (let i = 0, len = items.length; i < len; i++) { - if (items[i].str === undefined) { - if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") { - const parent = this._container; - this._container = document.createElement("span"); - - this._container.classList.add("markedContent"); - - if (items[i].id !== null) { - this._container.setAttribute("id", `${items[i].id}`); - } - - parent.appendChild(this._container); - } else if (items[i].type === "endMarkedContent") { - this._container = this._container.parentNode; - } - - continue; - } - - this._textContentItemsStr.push(items[i].str); - - appendText(this, items[i], styleCache, this._layoutTextCtx); - } - } - - _layoutText(textDiv) { - const textDivProperties = this._textDivProperties.get(textDiv); - - let transform = ""; - - if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) { - const { - fontSize, - fontFamily - } = textDiv.style; - - if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { - this._layoutTextCtx.font = `${fontSize} ${fontFamily}`; - this._layoutTextLastFontSize = fontSize; - this._layoutTextLastFontFamily = fontFamily; - } - - const { - width - } = this._layoutTextCtx.measureText(textDiv.textContent); - - if (width > 0) { - const scale = textDivProperties.canvasWidth / width; - - if (this._enhanceTextSelection) { - textDivProperties.scale = scale; - } - - transform = `scaleX(${scale})`; - } - } - - if (textDivProperties.angle !== 0) { - transform = `rotate(${textDivProperties.angle}deg) ${transform}`; - } - - if (transform.length > 0) { - if (this._enhanceTextSelection) { - textDivProperties.originalTransform = transform; - } - - textDiv.style.transform = transform; - } - - if (textDivProperties.hasText) { - this._container.appendChild(textDiv); - } - - if (textDivProperties.hasEOL) { - const br = document.createElement("br"); - br.setAttribute("role", "presentation"); - - this._container.appendChild(br); - } - } - - _render(timeout = 0) { - const capability = (0, _util.createPromiseCapability)(); - let styleCache = Object.create(null); - - const canvas = this._document.createElement("canvas"); - - canvas.height = canvas.width = DEFAULT_FONT_SIZE; - this._layoutTextCtx = canvas.getContext("2d", { - alpha: false - }); - - if (this._textContent) { - const textItems = this._textContent.items; - const textStyles = this._textContent.styles; - - this._processItems(textItems, textStyles); - - capability.resolve(); - } else if (this._textContentStream) { - const pump = () => { - this._reader.read().then(({ - value, - done - }) => { - if (done) { - capability.resolve(); - return; - } - - Object.assign(styleCache, value.styles); - - this._processItems(value.items, styleCache); - - pump(); - }, capability.reject); - }; - - this._reader = this._textContentStream.getReader(); - pump(); - } else { - throw new Error('Neither "textContent" nor "textContentStream" parameters specified.'); - } - - capability.promise.then(() => { - styleCache = null; - - if (!timeout) { - render(this); - } else { - this._renderTimer = setTimeout(() => { - render(this); - this._renderTimer = null; - }, timeout); - } - }, this._capability.reject); - } - - expandTextDivs(expandDivs = false) { - if (!this._enhanceTextSelection || !this._renderingDone) { - return; - } - - if (this._bounds !== null) { - expand(this); - this._bounds = null; - } - - const transformBuf = [], - paddingBuf = []; - - for (let i = 0, ii = this._textDivs.length; i < ii; i++) { - const div = this._textDivs[i]; - - const divProps = this._textDivProperties.get(div); - - if (!divProps.hasText) { - continue; - } - - if (expandDivs) { - transformBuf.length = 0; - paddingBuf.length = 0; - - if (divProps.originalTransform) { - transformBuf.push(divProps.originalTransform); - } - - if (divProps.paddingTop > 0) { - paddingBuf.push(`${divProps.paddingTop}px`); - transformBuf.push(`translateY(${-divProps.paddingTop}px)`); - } else { - paddingBuf.push(0); - } - - if (divProps.paddingRight > 0) { - paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`); - } else { - paddingBuf.push(0); - } - - if (divProps.paddingBottom > 0) { - paddingBuf.push(`${divProps.paddingBottom}px`); - } else { - paddingBuf.push(0); - } - - if (divProps.paddingLeft > 0) { - paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`); - transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`); - } else { - paddingBuf.push(0); - } - - div.style.padding = paddingBuf.join(" "); - - if (transformBuf.length) { - div.style.transform = transformBuf.join(" "); - } - } else { - div.style.padding = null; - div.style.transform = divProps.originalTransform; - } - } - } - -} - -function renderTextLayer(renderParameters) { - const task = new TextLayerRenderTask({ - textContent: renderParameters.textContent, - textContentStream: renderParameters.textContentStream, - container: renderParameters.container, - viewport: renderParameters.viewport, - textDivs: renderParameters.textDivs, - textContentItemsStr: renderParameters.textContentItemsStr, - enhanceTextSelection: renderParameters.enhanceTextSelection - }); - - task._render(renderParameters.timeout); - - return task; -} - -/***/ }), -/* 24 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SVGGraphics = void 0; - -var _util = __w_pdfjs_require__(1); - -var _display_utils = __w_pdfjs_require__(5); - -var _is_node = __w_pdfjs_require__(3); - -let SVGGraphics = class { - constructor() { - (0, _util.unreachable)("Not implemented: SVGGraphics"); - } - -}; -exports.SVGGraphics = SVGGraphics; -{ - const SVG_DEFAULTS = { - fontStyle: "normal", - fontWeight: "normal", - fillColor: "#000000" - }; - const XML_NS = "http://www.w3.org/XML/1998/namespace"; - const XLINK_NS = "http://www.w3.org/1999/xlink"; - const LINE_CAP_STYLES = ["butt", "round", "square"]; - const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; - - const createObjectURL = function (data, contentType = "", forceDataSchema = false) { - if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) { - return URL.createObjectURL(new Blob([data], { - type: contentType - })); - } - - const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - let buffer = `data:${contentType};base64,`; - - for (let i = 0, ii = data.length; i < ii; i += 3) { - const b1 = data[i] & 0xff; - const b2 = data[i + 1] & 0xff; - const b3 = data[i + 2] & 0xff; - const d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; - const d4 = i + 2 < ii ? b3 & 0x3f : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - - return buffer; - }; - - const convertImgDataToPng = function () { - const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - const CHUNK_WRAPPER_SIZE = 12; - const crcTable = new Int32Array(256); - - for (let i = 0; i < 256; i++) { - let c = i; - - for (let h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedb88320 ^ c >> 1 & 0x7fffffff; - } else { - c = c >> 1 & 0x7fffffff; - } - } - - crcTable[i] = c; - } - - function crc32(data, start, end) { - let crc = -1; - - for (let i = start; i < end; i++) { - const a = (crc ^ data[i]) & 0xff; - const b = crcTable[a]; - crc = crc >>> 8 ^ b; - } - - return crc ^ -1; - } - - function writePngChunk(type, body, data, offset) { - let p = offset; - const len = body.length; - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - data.set(body, p); - p += body.length; - const crc = crc32(data, offset + 4, p); - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - - function adler32(data, start, end) { - let a = 1; - let b = 0; - - for (let i = start; i < end; ++i) { - a = (a + (data[i] & 0xff)) % 65521; - b = (b + a) % 65521; - } - - return b << 16 | a; - } - - function deflateSync(literals) { - if (!_is_node.isNodeJS) { - return deflateSyncUncompressed(literals); - } - - try { - let input; - - if (parseInt(process.versions.node) >= 8) { - input = literals; - } else { - input = Buffer.from(literals); - } - - const output = require("zlib").deflateSync(input, { - level: 9 - }); - - return output instanceof Uint8Array ? output : new Uint8Array(output); - } catch (e) { - (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); - } - - return deflateSyncUncompressed(literals); - } - - function deflateSyncUncompressed(literals) { - let len = literals.length; - const maxBlockLength = 0xffff; - const deflateBlocks = Math.ceil(len / maxBlockLength); - const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - let pi = 0; - idat[pi++] = 0x78; - idat[pi++] = 0x9c; - let pos = 0; - - while (len > maxBlockLength) { - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = ~len & 0xffff & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - const adler = adler32(literals, 0, literals.length); - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - return idat; - } - - function encode(imgData, kind, forceDataSchema, isMask) { - const width = imgData.width; - const height = imgData.height; - let bitDepth, colorType, lineSize; - const bytes = imgData.data; - - switch (kind) { - case _util.ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = width + 7 >> 3; - break; - - case _util.ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - - case _util.ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - - default: - throw new Error("invalid format"); - } - - const literals = new Uint8Array((1 + lineSize) * height); - let offsetLiterals = 0, - offsetBytes = 0; - - for (let y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - - if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { - offsetLiterals = 0; - - for (let y = 0; y < height; y++) { - offsetLiterals++; - - for (let i = 0; i < lineSize; i++) { - literals[offsetLiterals++] ^= 0xff; - } - } - } - - const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - const idat = deflateSync(literals); - const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - const data = new Uint8Array(pngLength); - let offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk("IHDR", ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk("IDATA", idat, data, offset); - offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk("IEND", new Uint8Array(0), data, offset); - return createObjectURL(data, "image/png", forceDataSchema); - } - - return function convertImgDataToPng(imgData, forceDataSchema, isMask) { - const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; - return encode(imgData, kind, forceDataSchema, isMask); - }; - }(); - - class SVGExtraState { - constructor() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - this.textMatrix = _util.IDENTITY_MATRIX; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.leading = 0; - this.textRenderingMode = _util.TextRenderingMode.FILL; - this.textMatrixScale = 1; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = "#000000"; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ""; - this.lineCap = ""; - this.miterLimit = 0; - this.dashArray = []; - this.dashPhase = 0; - this.dependencies = []; - this.activeClipUrl = null; - this.clipGroup = null; - this.maskId = ""; - } - - clone() { - return Object.create(this); - } - - setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - - } - - function opListToTree(opList) { - let opTree = []; - const tmp = []; - - for (const opListElement of opList) { - if (opListElement.fn === "save") { - opTree.push({ - fnId: 92, - fn: "group", - items: [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; - } - - if (opListElement.fn === "restore") { - opTree = tmp.pop(); - } else { - opTree.push(opListElement); - } - } - - return opTree; - } - - function pf(value) { - if (Number.isInteger(value)) { - return value.toString(); - } - - const s = value.toFixed(10); - let i = s.length - 1; - - if (s[i] !== "0") { - return s; - } - - do { - i--; - } while (s[i] === "0"); - - return s.substring(0, s[i] === "." ? i : i + 1); - } - - function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ""; - } - - return `scale(${pf(m[0])} ${pf(m[3])})`; - } - - if (m[0] === m[3] && m[1] === -m[2]) { - const a = Math.acos(m[0]) * 180 / Math.PI; - return `rotate(${pf(a)})`; - } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return `translate(${pf(m[4])} ${pf(m[5])})`; - } - } - - return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; - } - - let clipCount = 0; - let maskCount = 0; - let shadingCount = 0; - exports.SVGGraphics = SVGGraphics = class { - constructor(commonObjs, objs, forceDataSchema = false) { - this.svgFactory = new _display_utils.DOMSVGFactory(); - this.current = new SVGExtraState(); - this.transformMatrix = _util.IDENTITY_MATRIX; - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingClip = null; - this.pendingEOFill = false; - this.embedFonts = false; - this.embeddedFonts = Object.create(null); - this.cssStyle = null; - this.forceDataSchema = !!forceDataSchema; - this._operatorIdMapping = []; - - for (const op in _util.OPS) { - this._operatorIdMapping[_util.OPS[op]] = op; - } - } - - save() { - this.transformStack.push(this.transformMatrix); - const old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - } - - restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.pendingClip = null; - this.tgrp = null; - } - - group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - } - - loadDependencies(operatorList) { - const fnArray = operatorList.fnArray; - const argsArray = operatorList.argsArray; - - for (let i = 0, ii = fnArray.length; i < ii; i++) { - if (fnArray[i] !== _util.OPS.dependency) { - continue; - } - - for (const obj of argsArray[i]) { - const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; - const promise = new Promise(resolve => { - objsPool.get(obj, resolve); - }); - this.current.dependencies.push(promise); - } - } - - return Promise.all(this.current.dependencies); - } - - transform(a, b, c, d, e, f) { - const transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - } - - getSVG(operatorList, viewport) { - this.viewport = viewport; - - const svgElement = this._initialize(viewport); - - return this.loadDependencies(operatorList).then(() => { - this.transformMatrix = _util.IDENTITY_MATRIX; - this.executeOpTree(this.convertOpList(operatorList)); - return svgElement; - }); - } - - convertOpList(operatorList) { - const operatorIdMapping = this._operatorIdMapping; - const argsArray = operatorList.argsArray; - const fnArray = operatorList.fnArray; - const opList = []; - - for (let i = 0, ii = fnArray.length; i < ii; i++) { - const fnId = fnArray[i]; - opList.push({ - fnId, - fn: operatorIdMapping[fnId], - args: argsArray[i] - }); - } - - return opListToTree(opList); - } - - executeOpTree(opTree) { - for (const opTreeElement of opTree) { - const fn = opTreeElement.fn; - const fnId = opTreeElement.fnId; - const args = opTreeElement.args; - - switch (fnId | 0) { - case _util.OPS.beginText: - this.beginText(); - break; - - case _util.OPS.dependency: - break; - - case _util.OPS.setLeading: - this.setLeading(args); - break; - - case _util.OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - - case _util.OPS.setFont: - this.setFont(args); - break; - - case _util.OPS.showText: - this.showText(args[0]); - break; - - case _util.OPS.showSpacedText: - this.showText(args[0]); - break; - - case _util.OPS.endText: - this.endText(); - break; - - case _util.OPS.moveText: - this.moveText(args[0], args[1]); - break; - - case _util.OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - - case _util.OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - - case _util.OPS.setHScale: - this.setHScale(args[0]); - break; - - case _util.OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - - case _util.OPS.setTextRise: - this.setTextRise(args[0]); - break; - - case _util.OPS.setTextRenderingMode: - this.setTextRenderingMode(args[0]); - break; - - case _util.OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - - case _util.OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - - case _util.OPS.setLineCap: - this.setLineCap(args[0]); - break; - - case _util.OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - - case _util.OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - - case _util.OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - - case _util.OPS.setStrokeColorN: - this.setStrokeColorN(args); - break; - - case _util.OPS.setFillColorN: - this.setFillColorN(args); - break; - - case _util.OPS.shadingFill: - this.shadingFill(args[0]); - break; - - case _util.OPS.setDash: - this.setDash(args[0], args[1]); - break; - - case _util.OPS.setRenderingIntent: - this.setRenderingIntent(args[0]); - break; - - case _util.OPS.setFlatness: - this.setFlatness(args[0]); - break; - - case _util.OPS.setGState: - this.setGState(args[0]); - break; - - case _util.OPS.fill: - this.fill(); - break; - - case _util.OPS.eoFill: - this.eoFill(); - break; - - case _util.OPS.stroke: - this.stroke(); - break; - - case _util.OPS.fillStroke: - this.fillStroke(); - break; - - case _util.OPS.eoFillStroke: - this.eoFillStroke(); - break; - - case _util.OPS.clip: - this.clip("nonzero"); - break; - - case _util.OPS.eoClip: - this.clip("evenodd"); - break; - - case _util.OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - - case _util.OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - - case _util.OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - - case _util.OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - - case _util.OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - - case _util.OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - - case _util.OPS.closePath: - this.closePath(); - break; - - case _util.OPS.closeStroke: - this.closeStroke(); - break; - - case _util.OPS.closeFillStroke: - this.closeFillStroke(); - break; - - case _util.OPS.closeEOFillStroke: - this.closeEOFillStroke(); - break; - - case _util.OPS.nextLine: - this.nextLine(); - break; - - case _util.OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - - case _util.OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - - case _util.OPS.endPath: - this.endPath(); - break; - - case 92: - this.group(opTreeElement.items); - break; - - default: - (0, _util.warn)(`Unimplemented operator ${fn}`); - break; - } - } - } - - setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - } - - setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - } - - nextLine() { - this.moveText(0, this.current.leading); - } - - setTextMatrix(a, b, c, d, e, f) { - const current = this.current; - current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; - current.textMatrixScale = Math.hypot(a, b); - current.x = current.lineX = 0; - current.y = current.lineY = 0; - current.xcoords = []; - current.ycoords = []; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.tspan.setAttributeNS(null, "font-family", current.fontFamily); - current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - current.txtElement = this.svgFactory.createElement("svg:text"); - current.txtElement.appendChild(current.tspan); - } - - beginText() { - const current = this.current; - current.x = current.lineX = 0; - current.y = current.lineY = 0; - current.textMatrix = _util.IDENTITY_MATRIX; - current.lineMatrix = _util.IDENTITY_MATRIX; - current.textMatrixScale = 1; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.txtElement = this.svgFactory.createElement("svg:text"); - current.txtgrp = this.svgFactory.createElement("svg:g"); - current.xcoords = []; - current.ycoords = []; - } - - moveText(x, y) { - const current = this.current; - current.x = current.lineX += x; - current.y = current.lineY += y; - current.xcoords = []; - current.ycoords = []; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.tspan.setAttributeNS(null, "font-family", current.fontFamily); - current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - } - - showText(glyphs) { - const current = this.current; - const font = current.font; - const fontSize = current.fontSize; - - if (fontSize === 0) { - return; - } - - const fontSizeScale = current.fontSizeScale; - const charSpacing = current.charSpacing; - const wordSpacing = current.wordSpacing; - const fontDirection = current.fontDirection; - const textHScale = current.textHScale * fontDirection; - const vertical = font.vertical; - const spacingDir = vertical ? 1 : -1; - const defaultVMetrics = font.defaultVMetrics; - const widthAdvanceScale = fontSize * current.fontMatrix[0]; - let x = 0; - - for (const glyph of glyphs) { - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if (typeof glyph === "number") { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - - const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - const character = glyph.fontChar; - let scaledX, scaledY; - let width = glyph.width; - - if (vertical) { - let vx; - const vmetric = glyph.vmetric || defaultVMetrics; - vx = glyph.vmetric ? vmetric[1] : width * 0.5; - vx = -vx * widthAdvanceScale; - const vy = vmetric[2] * widthAdvanceScale; - width = vmetric ? -vmetric[0] : width; - scaledX = vx / fontSizeScale; - scaledY = (x + vy) / fontSizeScale; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - - if (glyph.isInFont || font.missingFile) { - current.xcoords.push(current.x + scaledX); - - if (vertical) { - current.ycoords.push(-current.y + scaledY); - } - - current.tspan.textContent += character; - } else {} - - let charWidth; - - if (vertical) { - charWidth = width * widthAdvanceScale - spacing * fontDirection; - } else { - charWidth = width * widthAdvanceScale + spacing * fontDirection; - } - - x += charWidth; - } - - current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); - - if (vertical) { - current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); - } else { - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - } - - if (vertical) { - current.y -= x; - } else { - current.x += x * textHScale; - } - - current.tspan.setAttributeNS(null, "font-family", current.fontFamily); - current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); - - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, "font-style", current.fontStyle); - } - - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); - } - - const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, "fill", current.fillColor); - } - - if (current.fillAlpha < 1) { - current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); - } - } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { - current.tspan.setAttributeNS(null, "fill", "transparent"); - } else { - current.tspan.setAttributeNS(null, "fill", "none"); - } - - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - const lineWidthScale = 1 / (current.textMatrixScale || 1); - - this._setStrokeAttributes(current.tspan, lineWidthScale); - } - - let textMatrix = current.textMatrix; - - if (current.textRise !== 0) { - textMatrix = textMatrix.slice(); - textMatrix[5] += current.textRise; - } - - current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); - current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - - this._ensureTransformGroup().appendChild(current.txtElement); - } - - setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - } - - addFontStyle(fontObj) { - if (!fontObj.data) { - throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); - } - - if (!this.cssStyle) { - this.cssStyle = this.svgFactory.createElement("svg:style"); - this.cssStyle.setAttributeNS(null, "type", "text/css"); - this.defs.appendChild(this.cssStyle); - } - - const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; - } - - setFont(details) { - const current = this.current; - const fontObj = this.commonObjs.get(details[0]); - let size = details[1]; - current.font = fontObj; - - if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - - current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; - let bold = "normal"; - - if (fontObj.black) { - bold = "900"; - } else if (fontObj.bold) { - bold = "bold"; - } - - const italic = fontObj.italic ? "italic" : "normal"; - - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = this.svgFactory.createElement("svg:tspan"); - current.tspan.setAttributeNS(null, "y", pf(-current.y)); - current.xcoords = []; - current.ycoords = []; - } - - endText() { - const current = this.current; - - if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { - current.element = current.txtElement; - this.clip("nonzero"); - this.endPath(); - } - } - - setLineWidth(width) { - if (width > 0) { - this.current.lineWidth = width; - } - } - - setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - } - - setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - } - - setMiterLimit(limit) { - this.current.miterLimit = limit; - } - - setStrokeAlpha(strokeAlpha) { - this.current.strokeAlpha = strokeAlpha; - } - - setStrokeRGBColor(r, g, b) { - this.current.strokeColor = _util.Util.makeHexColor(r, g, b); - } - - setFillAlpha(fillAlpha) { - this.current.fillAlpha = fillAlpha; - } - - setFillRGBColor(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 = []; - } - - setStrokeColorN(args) { - this.current.strokeColor = this._makeColorN_Pattern(args); - } - - setFillColorN(args) { - this.current.fillColor = this._makeColorN_Pattern(args); - } - - shadingFill(args) { - const width = this.viewport.width; - const height = this.viewport.height; - - const inv = _util.Util.inverseTransform(this.transformMatrix); - - const bl = _util.Util.applyTransform([0, 0], inv); - - const br = _util.Util.applyTransform([0, height], inv); - - const ul = _util.Util.applyTransform([width, 0], inv); - - const ur = _util.Util.applyTransform([width, height], inv); - - 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]); - const rect = this.svgFactory.createElement("svg:rect"); - rect.setAttributeNS(null, "x", x0); - rect.setAttributeNS(null, "y", y0); - rect.setAttributeNS(null, "width", x1 - x0); - rect.setAttributeNS(null, "height", y1 - y0); - rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); - - if (this.current.fillAlpha < 1) { - rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); - } - - this._ensureTransformGroup().appendChild(rect); - } - - _makeColorN_Pattern(args) { - if (args[0] === "TilingPattern") { - return this._makeTilingPattern(args); - } - - return this._makeShadingPattern(args); - } - - _makeTilingPattern(args) { - const color = args[1]; - const operatorList = args[2]; - const matrix = args[3] || _util.IDENTITY_MATRIX; - const [x0, y0, x1, y1] = args[4]; - const xstep = args[5]; - const ystep = args[6]; - const paintType = args[7]; - const tilingId = `shading${shadingCount++}`; - - const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); - - const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); - - const txstep = xstep * xscale; - const tystep = ystep * yscale; - const tiling = this.svgFactory.createElement("svg:pattern"); - tiling.setAttributeNS(null, "id", tilingId); - tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); - tiling.setAttributeNS(null, "width", txstep); - tiling.setAttributeNS(null, "height", tystep); - tiling.setAttributeNS(null, "x", `${tx0}`); - tiling.setAttributeNS(null, "y", `${ty0}`); - const svg = this.svg; - const transformMatrix = this.transformMatrix; - const fillColor = this.current.fillColor; - const strokeColor = this.current.strokeColor; - const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); - this.svg = bbox; - this.transformMatrix = matrix; - - if (paintType === 2) { - const cssColor = _util.Util.makeHexColor(...color); - - this.current.fillColor = cssColor; - this.current.strokeColor = cssColor; - } - - this.executeOpTree(this.convertOpList(operatorList)); - this.svg = svg; - this.transformMatrix = transformMatrix; - this.current.fillColor = fillColor; - this.current.strokeColor = strokeColor; - tiling.appendChild(bbox.childNodes[0]); - this.defs.appendChild(tiling); - return `url(#${tilingId})`; - } - - _makeShadingPattern(args) { - if (typeof args === "string") { - args = this.objs.get(args); - } - - switch (args[0]) { - case "RadialAxial": - const shadingId = `shading${shadingCount++}`; - const colorStops = args[3]; - let gradient; - - switch (args[1]) { - case "axial": - const point0 = args[4]; - const point1 = args[5]; - gradient = this.svgFactory.createElement("svg:linearGradient"); - gradient.setAttributeNS(null, "id", shadingId); - gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); - gradient.setAttributeNS(null, "x1", point0[0]); - gradient.setAttributeNS(null, "y1", point0[1]); - gradient.setAttributeNS(null, "x2", point1[0]); - gradient.setAttributeNS(null, "y2", point1[1]); - break; - - case "radial": - const focalPoint = args[4]; - const circlePoint = args[5]; - const focalRadius = args[6]; - const circleRadius = args[7]; - gradient = this.svgFactory.createElement("svg:radialGradient"); - gradient.setAttributeNS(null, "id", shadingId); - gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); - gradient.setAttributeNS(null, "cx", circlePoint[0]); - gradient.setAttributeNS(null, "cy", circlePoint[1]); - gradient.setAttributeNS(null, "r", circleRadius); - gradient.setAttributeNS(null, "fx", focalPoint[0]); - gradient.setAttributeNS(null, "fy", focalPoint[1]); - gradient.setAttributeNS(null, "fr", focalRadius); - break; - - default: - throw new Error(`Unknown RadialAxial type: ${args[1]}`); - } - - for (const colorStop of colorStops) { - const stop = this.svgFactory.createElement("svg:stop"); - stop.setAttributeNS(null, "offset", colorStop[0]); - stop.setAttributeNS(null, "stop-color", colorStop[1]); - gradient.appendChild(stop); - } - - this.defs.appendChild(gradient); - return `url(#${shadingId})`; - - case "Mesh": - (0, _util.warn)("Unimplemented pattern Mesh"); - return null; - - case "Dummy": - return "hotpink"; - - default: - throw new Error(`Unknown IR type: ${args[0]}`); - } - } - - setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - } - - constructPath(ops, args) { - const current = this.current; - let x = current.x, - y = current.y; - let d = []; - let j = 0; - - for (const op of ops) { - switch (op | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - const width = args[j++]; - const height = args[j++]; - const xw = x + width; - const yh = y + height; - d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); - break; - - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push("M", pf(x), pf(y)); - break; - - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push("L", pf(x), pf(y)); - break; - - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - - case _util.OPS.curveTo2: - d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; - - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - - case _util.OPS.closePath: - d.push("Z"); - break; - } - } - - d = d.join(" "); - - if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { - d = current.path.getAttributeNS(null, "d") + d; - } else { - current.path = this.svgFactory.createElement("svg:path"); - - this._ensureTransformGroup().appendChild(current.path); - } - - current.path.setAttributeNS(null, "d", d); - current.path.setAttributeNS(null, "fill", "none"); - current.element = current.path; - current.setCurrentPoint(x, y); - } - - endPath() { - const current = this.current; - current.path = null; - - if (!this.pendingClip) { - return; - } - - if (!current.element) { - this.pendingClip = null; - return; - } - - const clipId = `clippath${clipCount++}`; - const clipPath = this.svgFactory.createElement("svg:clipPath"); - clipPath.setAttributeNS(null, "id", clipId); - clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); - const clipElement = current.element.cloneNode(true); - - if (this.pendingClip === "evenodd") { - clipElement.setAttributeNS(null, "clip-rule", "evenodd"); - } else { - clipElement.setAttributeNS(null, "clip-rule", "nonzero"); - } - - this.pendingClip = null; - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); - - if (current.activeClipUrl) { - current.clipGroup = null; - - for (const prev of this.extraStack) { - prev.clipGroup = null; - } - - clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); - } - - current.activeClipUrl = `url(#${clipId})`; - this.tgrp = null; - } - - clip(type) { - this.pendingClip = type; - } - - closePath() { - const current = this.current; - - if (current.path) { - const d = `${current.path.getAttributeNS(null, "d")}Z`; - current.path.setAttributeNS(null, "d", d); - } - } - - setLeading(leading) { - this.current.leading = -leading; - } - - setTextRise(textRise) { - this.current.textRise = textRise; - } - - setTextRenderingMode(textRenderingMode) { - this.current.textRenderingMode = textRenderingMode; - } - - setHScale(scale) { - this.current.textHScale = scale / 100; - } - - setRenderingIntent(intent) {} - - setFlatness(flatness) {} - - setGState(states) { - for (const [key, value] of states) { - switch (key) { - case "LW": - this.setLineWidth(value); - break; - - case "LC": - this.setLineCap(value); - break; - - case "LJ": - this.setLineJoin(value); - break; - - case "ML": - this.setMiterLimit(value); - break; - - case "D": - this.setDash(value[0], value[1]); - break; - - case "RI": - this.setRenderingIntent(value); - break; - - case "FL": - this.setFlatness(value); - break; - - case "Font": - this.setFont(value); - break; - - case "CA": - this.setStrokeAlpha(value); - break; - - case "ca": - this.setFillAlpha(value); - break; - - default: - (0, _util.warn)(`Unimplemented graphic state operator ${key}`); - break; - } - } - } - - fill() { - const current = this.current; - - if (current.element) { - current.element.setAttributeNS(null, "fill", current.fillColor); - current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); - this.endPath(); - } - } - - stroke() { - const current = this.current; - - if (current.element) { - this._setStrokeAttributes(current.element); - - current.element.setAttributeNS(null, "fill", "none"); - this.endPath(); - } - } - - _setStrokeAttributes(element, lineWidthScale = 1) { - const current = this.current; - let dashArray = current.dashArray; - - if (lineWidthScale !== 1 && dashArray.length > 0) { - dashArray = dashArray.map(function (value) { - return lineWidthScale * value; - }); - } - - element.setAttributeNS(null, "stroke", current.strokeColor); - element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); - element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); - element.setAttributeNS(null, "stroke-linecap", current.lineCap); - element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); - element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); - element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); - element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); - } - - eoFill() { - if (this.current.element) { - this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); - } - - this.fill(); - } - - fillStroke() { - this.stroke(); - this.fill(); - } - - eoFillStroke() { - if (this.current.element) { - this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); - } - - this.fillStroke(); - } - - closeStroke() { - this.closePath(); - this.stroke(); - } - - closeFillStroke() { - this.closePath(); - this.fillStroke(); - } - - closeEOFillStroke() { - this.closePath(); - this.eoFillStroke(); - } - - paintSolidColorImageMask() { - const rect = this.svgFactory.createElement("svg:rect"); - rect.setAttributeNS(null, "x", "0"); - rect.setAttributeNS(null, "y", "0"); - rect.setAttributeNS(null, "width", "1px"); - rect.setAttributeNS(null, "height", "1px"); - rect.setAttributeNS(null, "fill", this.current.fillColor); - - this._ensureTransformGroup().appendChild(rect); - } - - paintImageXObject(objId) { - const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); - - if (!imgData) { - (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); - return; - } - - this.paintInlineImageXObject(imgData); - } - - paintInlineImageXObject(imgData, mask) { - const width = imgData.width; - const height = imgData.height; - const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); - const cliprect = this.svgFactory.createElement("svg:rect"); - cliprect.setAttributeNS(null, "x", "0"); - cliprect.setAttributeNS(null, "y", "0"); - cliprect.setAttributeNS(null, "width", pf(width)); - cliprect.setAttributeNS(null, "height", pf(height)); - this.current.element = cliprect; - this.clip("nonzero"); - const imgEl = this.svgFactory.createElement("svg:image"); - imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); - imgEl.setAttributeNS(null, "x", "0"); - imgEl.setAttributeNS(null, "y", pf(-height)); - imgEl.setAttributeNS(null, "width", pf(width) + "px"); - imgEl.setAttributeNS(null, "height", pf(height) + "px"); - imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); - - if (mask) { - mask.appendChild(imgEl); - } else { - this._ensureTransformGroup().appendChild(imgEl); - } - } - - paintImageMaskXObject(imgData) { - const current = this.current; - const width = imgData.width; - const height = imgData.height; - const fillColor = current.fillColor; - current.maskId = `mask${maskCount++}`; - const mask = this.svgFactory.createElement("svg:mask"); - mask.setAttributeNS(null, "id", current.maskId); - const rect = this.svgFactory.createElement("svg:rect"); - rect.setAttributeNS(null, "x", "0"); - rect.setAttributeNS(null, "y", "0"); - rect.setAttributeNS(null, "width", pf(width)); - rect.setAttributeNS(null, "height", pf(height)); - rect.setAttributeNS(null, "fill", fillColor); - rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); - this.defs.appendChild(mask); - - this._ensureTransformGroup().appendChild(rect); - - this.paintInlineImageXObject(imgData, mask); - } - - paintFormXObjectBegin(matrix, bbox) { - if (Array.isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - - if (bbox) { - const width = bbox[2] - bbox[0]; - const height = bbox[3] - bbox[1]; - const cliprect = this.svgFactory.createElement("svg:rect"); - cliprect.setAttributeNS(null, "x", bbox[0]); - cliprect.setAttributeNS(null, "y", bbox[1]); - cliprect.setAttributeNS(null, "width", pf(width)); - cliprect.setAttributeNS(null, "height", pf(height)); - this.current.element = cliprect; - this.clip("nonzero"); - this.endPath(); - } - } - - paintFormXObjectEnd() {} - - _initialize(viewport) { - const svg = this.svgFactory.create(viewport.width, viewport.height); - const definitions = this.svgFactory.createElement("svg:defs"); - svg.appendChild(definitions); - this.defs = definitions; - const rootGroup = this.svgFactory.createElement("svg:g"); - rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - } - - _ensureClipGroup() { - if (!this.current.clipGroup) { - const clipGroup = this.svgFactory.createElement("svg:g"); - clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - - return this.current.clipGroup; - } - - _ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = this.svgFactory.createElement("svg:g"); - this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); - - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); - } else { - this.svg.appendChild(this.tgrp); - } - } - - return this.tgrp; - } - - }; -} - -/***/ }), -/* 25 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFNodeStream = void 0; - -var _util = __w_pdfjs_require__(1); - -var _network_utils = __w_pdfjs_require__(26); - -; - -const fs = require("fs"); - -const http = require("http"); - -const https = require("https"); - -const url = require("url"); - -const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; - -function parseUrl(sourceUrl) { - const parsedUrl = url.parse(sourceUrl); - - if (parsedUrl.protocol === "file:" || parsedUrl.host) { - return parsedUrl; - } - - if (/^[a-z]:[/\\]/i.test(sourceUrl)) { - return url.parse(`file:///${sourceUrl}`); - } - - if (!parsedUrl.host) { - parsedUrl.protocol = "file:"; - } - - return parsedUrl; -} - -class PDFNodeStream { - constructor(source) { - this.source = source; - this.url = parseUrl(source.url); - this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; - this.isFsUrl = this.url.protocol === "file:"; - this.httpHeaders = this.isHttp && source.httpHeaders || {}; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - - get _progressiveDataLength() { - return this._fullRequestReader?._loaded ?? 0; - } - - getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); - this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); - return this._fullRequestReader; - } - - getRangeReader(start, end) { - if (end <= this._progressiveDataLength) { - return null; - } - - const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); - - this._rangeRequestReaders.push(rangeReader); - - return rangeReader; - } - - cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - for (const reader of this._rangeRequestReaders.slice(0)) { - reader.cancel(reason); - } - } - -} - -exports.PDFNodeStream = PDFNodeStream; - -class BaseFullReader { - constructor(stream) { - this._url = stream.url; - this._done = false; - this._storedError = null; - this.onProgress = null; - const source = stream.source; - this._contentLength = source.length; - this._loaded = 0; - this._filename = null; - this._disableRange = source.disableRange || false; - this._rangeChunkSize = source.rangeChunkSize; - - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - - this._isStreamingSupported = !source.disableStream; - this._isRangeSupported = !source.disableRange; - this._readableStream = null; - this._readCapability = (0, _util.createPromiseCapability)(); - this._headersCapability = (0, _util.createPromiseCapability)(); - } - - get headersReady() { - return this._headersCapability.promise; - } - - get filename() { - return this._filename; - } - - get contentLength() { - return this._contentLength; - } - - get isRangeSupported() { - return this._isRangeSupported; - } - - get isStreamingSupported() { - return this._isStreamingSupported; - } - - async read() { - await this._readCapability.promise; - - if (this._done) { - return { - value: undefined, - done: true - }; - } - - if (this._storedError) { - throw this._storedError; - } - - const chunk = this._readableStream.read(); - - if (chunk === null) { - this._readCapability = (0, _util.createPromiseCapability)(); - return this.read(); - } - - this._loaded += chunk.length; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded, - total: this._contentLength - }); - } - - const buffer = new Uint8Array(chunk).buffer; - return { - value: buffer, - done: false - }; - } - - cancel(reason) { - if (!this._readableStream) { - this._error(reason); - - return; - } - - this._readableStream.destroy(reason); - } - - _error(reason) { - this._storedError = reason; - - this._readCapability.resolve(); - } - - _setReadableStream(readableStream) { - this._readableStream = readableStream; - readableStream.on("readable", () => { - this._readCapability.resolve(); - }); - readableStream.on("end", () => { - readableStream.destroy(); - this._done = true; - - this._readCapability.resolve(); - }); - readableStream.on("error", reason => { - this._error(reason); - }); - - if (!this._isStreamingSupported && this._isRangeSupported) { - this._error(new _util.AbortException("streaming is disabled")); - } - - if (this._storedError) { - this._readableStream.destroy(this._storedError); - } - } - -} - -class BaseRangeReader { - constructor(stream) { - this._url = stream.url; - this._done = false; - this._storedError = null; - this.onProgress = null; - this._loaded = 0; - this._readableStream = null; - this._readCapability = (0, _util.createPromiseCapability)(); - const source = stream.source; - this._isStreamingSupported = !source.disableStream; - } - - get isStreamingSupported() { - return this._isStreamingSupported; - } - - async read() { - await this._readCapability.promise; - - if (this._done) { - return { - value: undefined, - done: true - }; - } - - if (this._storedError) { - throw this._storedError; - } - - const chunk = this._readableStream.read(); - - if (chunk === null) { - this._readCapability = (0, _util.createPromiseCapability)(); - return this.read(); - } - - this._loaded += chunk.length; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded - }); - } - - const buffer = new Uint8Array(chunk).buffer; - return { - value: buffer, - done: false - }; - } - - cancel(reason) { - if (!this._readableStream) { - this._error(reason); - - return; - } - - this._readableStream.destroy(reason); - } - - _error(reason) { - this._storedError = reason; - - this._readCapability.resolve(); - } - - _setReadableStream(readableStream) { - this._readableStream = readableStream; - readableStream.on("readable", () => { - this._readCapability.resolve(); - }); - readableStream.on("end", () => { - readableStream.destroy(); - this._done = true; - - this._readCapability.resolve(); - }); - readableStream.on("error", reason => { - this._error(reason); - }); - - if (this._storedError) { - this._readableStream.destroy(this._storedError); - } - } - -} - -function createRequestOptions(parsedUrl, headers) { - return { - protocol: parsedUrl.protocol, - auth: parsedUrl.auth, - host: parsedUrl.hostname, - port: parsedUrl.port, - path: parsedUrl.path, - method: "GET", - headers - }; -} - -class PDFNodeStreamFullReader extends BaseFullReader { - constructor(stream) { - super(stream); - - const handleResponse = response => { - if (response.statusCode === 404) { - const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); - this._storedError = error; - - this._headersCapability.reject(error); - - return; - } - - this._headersCapability.resolve(); - - this._setReadableStream(response); - - const getResponseHeader = name => { - return this._readableStream.headers[name.toLowerCase()]; - }; - - const { - allowRangeRequests, - suggestedLength - } = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader, - isHttp: stream.isHttp, - rangeChunkSize: this._rangeChunkSize, - disableRange: this._disableRange - }); - this._isRangeSupported = allowRangeRequests; - this._contentLength = suggestedLength || this._contentLength; - this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - }; - - this._request = null; - - if (this._url.protocol === "http:") { - this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); - } else { - this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); - } - - this._request.on("error", reason => { - this._storedError = reason; - - this._headersCapability.reject(reason); - }); - - this._request.end(); - } - -} - -class PDFNodeStreamRangeReader extends BaseRangeReader { - constructor(stream, start, end) { - super(stream); - this._httpHeaders = {}; - - for (const property in stream.httpHeaders) { - const value = stream.httpHeaders[property]; - - if (typeof value === "undefined") { - continue; - } - - this._httpHeaders[property] = value; - } - - this._httpHeaders.Range = `bytes=${start}-${end - 1}`; - - const handleResponse = response => { - if (response.statusCode === 404) { - const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); - this._storedError = error; - return; - } - - this._setReadableStream(response); - }; - - this._request = null; - - if (this._url.protocol === "http:") { - this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); - } else { - this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); - } - - this._request.on("error", reason => { - this._storedError = reason; - }); - - this._request.end(); - } - -} - -class PDFNodeStreamFsFullReader extends BaseFullReader { - constructor(stream) { - super(stream); - let path = decodeURIComponent(this._url.path); - - if (fileUriRegex.test(this._url.href)) { - path = path.replace(/^\//, ""); - } - - fs.lstat(path, (error, stat) => { - if (error) { - if (error.code === "ENOENT") { - error = new _util.MissingPDFException(`Missing PDF "${path}".`); - } - - this._storedError = error; - - this._headersCapability.reject(error); - - return; - } - - this._contentLength = stat.size; - - this._setReadableStream(fs.createReadStream(path)); - - this._headersCapability.resolve(); - }); - } - -} - -class PDFNodeStreamFsRangeReader extends BaseRangeReader { - constructor(stream, start, end) { - super(stream); - let path = decodeURIComponent(this._url.path); - - if (fileUriRegex.test(this._url.href)) { - path = path.replace(/^\//, ""); - } - - this._setReadableStream(fs.createReadStream(path, { - start, - end: end - 1 - })); - } - -} - -/***/ }), -/* 26 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createResponseStatusError = createResponseStatusError; -exports.extractFilenameFromHeader = extractFilenameFromHeader; -exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; -exports.validateResponseStatus = validateResponseStatus; - -var _util = __w_pdfjs_require__(1); - -var _content_disposition = __w_pdfjs_require__(27); - -var _display_utils = __w_pdfjs_require__(5); - -function validateRangeRequestCapabilities({ - getResponseHeader, - isHttp, - rangeChunkSize, - disableRange -}) { - const returnValues = { - allowRangeRequests: false, - suggestedLength: undefined - }; - const length = parseInt(getResponseHeader("Content-Length"), 10); - - if (!Number.isInteger(length)) { - return returnValues; - } - - returnValues.suggestedLength = length; - - if (length <= 2 * rangeChunkSize) { - return returnValues; - } - - if (disableRange || !isHttp) { - return returnValues; - } - - if (getResponseHeader("Accept-Ranges") !== "bytes") { - return returnValues; - } - - const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; - - if (contentEncoding !== "identity") { - return returnValues; - } - - returnValues.allowRangeRequests = true; - return returnValues; -} - -function extractFilenameFromHeader(getResponseHeader) { - const contentDisposition = getResponseHeader("Content-Disposition"); - - if (contentDisposition) { - let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); - - if (filename.includes("%")) { - try { - filename = decodeURIComponent(filename); - } catch (ex) {} - } - - if ((0, _display_utils.isPdfFile)(filename)) { - return filename; - } - } - - return null; -} - -function createResponseStatusError(status, url) { - if (status === 404 || status === 0 && url.startsWith("file:")) { - return new _util.MissingPDFException('Missing PDF "' + url + '".'); - } - - return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); -} - -function validateResponseStatus(status) { - return status === 200 || status === 206; -} - -/***/ }), -/* 27 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; - -var _util = __w_pdfjs_require__(1); - -function getFilenameFromContentDispositionHeader(contentDisposition) { - let needsEncodingFixup = true; - let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); - - if (tmp) { - tmp = tmp[1]; - let filename = rfc2616unquote(tmp); - filename = unescape(filename); - filename = rfc5987decode(filename); - filename = rfc2047decode(filename); - return fixupEncoding(filename); - } - - tmp = rfc2231getparam(contentDisposition); - - if (tmp) { - const filename = rfc2047decode(tmp); - return fixupEncoding(filename); - } - - tmp = toParamRegExp("filename", "i").exec(contentDisposition); - - if (tmp) { - tmp = tmp[1]; - let filename = rfc2616unquote(tmp); - filename = rfc2047decode(filename); - return fixupEncoding(filename); - } - - function toParamRegExp(attributePattern, flags) { - return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); - } - - function textdecode(encoding, value) { - if (encoding) { - if (!/^[\x00-\xFF]+$/.test(value)) { - return value; - } - - try { - const decoder = new TextDecoder(encoding, { - fatal: true - }); - const buffer = (0, _util.stringToBytes)(value); - value = decoder.decode(buffer); - needsEncodingFixup = false; - } catch (e) {} - } - - return value; - } - - function fixupEncoding(value) { - if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { - value = textdecode("utf-8", value); - - if (needsEncodingFixup) { - value = textdecode("iso-8859-1", value); - } - } - - return value; - } - - function rfc2231getparam(contentDispositionStr) { - const matches = []; - let match; - const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); - - while ((match = iter.exec(contentDispositionStr)) !== null) { - let [, n, quot, part] = match; - n = parseInt(n, 10); - - if (n in matches) { - if (n === 0) { - break; - } - - continue; - } - - matches[n] = [quot, part]; - } - - const parts = []; - - for (let n = 0; n < matches.length; ++n) { - if (!(n in matches)) { - break; - } - - let [quot, part] = matches[n]; - part = rfc2616unquote(part); - - if (quot) { - part = unescape(part); - - if (n === 0) { - part = rfc5987decode(part); - } - } - - parts.push(part); - } - - return parts.join(""); - } - - function rfc2616unquote(value) { - if (value.startsWith('"')) { - const parts = value.slice(1).split('\\"'); - - for (let i = 0; i < parts.length; ++i) { - const quotindex = parts[i].indexOf('"'); - - if (quotindex !== -1) { - parts[i] = parts[i].slice(0, quotindex); - parts.length = i + 1; - } - - parts[i] = parts[i].replace(/\\(.)/g, "$1"); - } - - value = parts.join('"'); - } - - return value; - } - - function rfc5987decode(extvalue) { - const encodingend = extvalue.indexOf("'"); - - if (encodingend === -1) { - return extvalue; - } - - const encoding = extvalue.slice(0, encodingend); - const langvalue = extvalue.slice(encodingend + 1); - const value = langvalue.replace(/^[^']*'/, ""); - return textdecode(encoding, value); - } - - function rfc2047decode(value) { - if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { - return value; - } - - return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { - if (encoding === "q" || encoding === "Q") { - text = text.replace(/_/g, " "); - text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { - return String.fromCharCode(parseInt(hex, 16)); - }); - return textdecode(charset, text); - } - - try { - text = atob(text); - } catch (e) {} - - return textdecode(charset, text); - }); - } - - return ""; -} - -/***/ }), -/* 28 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFNetworkStream = void 0; - -var _util = __w_pdfjs_require__(1); - -var _network_utils = __w_pdfjs_require__(26); - -; -const OK_RESPONSE = 200; -const PARTIAL_CONTENT_RESPONSE = 206; - -function getArrayBuffer(xhr) { - const data = xhr.response; - - if (typeof data !== "string") { - return data; - } - - const array = (0, _util.stringToBytes)(data); - return array.buffer; -} - -class NetworkManager { - constructor(url, args = {}) { - this.url = url; - this.isHttp = /^https?:/i.test(url); - this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null); - this.withCredentials = args.withCredentials || false; - - this.getXhr = args.getXhr || function NetworkManager_getXhr() { - return new XMLHttpRequest(); - }; - - this.currXhrId = 0; - this.pendingRequests = Object.create(null); - } - - requestRange(begin, end, listeners) { - const args = { - begin, - end - }; - - for (const prop in listeners) { - args[prop] = listeners[prop]; - } - - return this.request(args); - } - - requestFull(listeners) { - return this.request(listeners); - } - - request(args) { - const xhr = this.getXhr(); - const xhrId = this.currXhrId++; - const pendingRequest = this.pendingRequests[xhrId] = { - xhr - }; - xhr.open("GET", this.url); - xhr.withCredentials = this.withCredentials; - - for (const property in this.httpHeaders) { - const value = this.httpHeaders[property]; - - if (typeof value === "undefined") { - continue; - } - - xhr.setRequestHeader(property, value); - } - - if (this.isHttp && "begin" in args && "end" in args) { - xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); - pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; - } else { - pendingRequest.expectedStatus = OK_RESPONSE; - } - - xhr.responseType = "arraybuffer"; - - if (args.onError) { - xhr.onerror = function (evt) { - args.onError(xhr.status); - }; - } - - xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); - xhr.onprogress = this.onProgress.bind(this, xhrId); - pendingRequest.onHeadersReceived = args.onHeadersReceived; - pendingRequest.onDone = args.onDone; - pendingRequest.onError = args.onError; - pendingRequest.onProgress = args.onProgress; - xhr.send(null); - return xhrId; - } - - onProgress(xhrId, evt) { - const pendingRequest = this.pendingRequests[xhrId]; - - if (!pendingRequest) { - return; - } - - pendingRequest.onProgress?.(evt); - } - - onStateChange(xhrId, evt) { - const pendingRequest = this.pendingRequests[xhrId]; - - if (!pendingRequest) { - return; - } - - const xhr = pendingRequest.xhr; - - if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { - pendingRequest.onHeadersReceived(); - delete pendingRequest.onHeadersReceived; - } - - if (xhr.readyState !== 4) { - return; - } - - if (!(xhrId in this.pendingRequests)) { - return; - } - - delete this.pendingRequests[xhrId]; - - if (xhr.status === 0 && this.isHttp) { - pendingRequest.onError?.(xhr.status); - return; - } - - const xhrStatus = xhr.status || OK_RESPONSE; - const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; - - if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { - pendingRequest.onError?.(xhr.status); - return; - } - - const chunk = getArrayBuffer(xhr); - - if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { - const rangeHeader = xhr.getResponseHeader("Content-Range"); - const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); - pendingRequest.onDone({ - begin: parseInt(matches[1], 10), - chunk - }); - } else if (chunk) { - pendingRequest.onDone({ - begin: 0, - chunk - }); - } else { - pendingRequest.onError?.(xhr.status); - } - } - - getRequestXhr(xhrId) { - return this.pendingRequests[xhrId].xhr; - } - - isPendingRequest(xhrId) { - return xhrId in this.pendingRequests; - } - - abortRequest(xhrId) { - const xhr = this.pendingRequests[xhrId].xhr; - delete this.pendingRequests[xhrId]; - xhr.abort(); - } - -} - -class PDFNetworkStream { - constructor(source) { - this._source = source; - this._manager = new NetworkManager(source.url, { - httpHeaders: source.httpHeaders, - withCredentials: source.withCredentials - }); - this._rangeChunkSize = source.rangeChunkSize; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - - _onRangeRequestReaderClosed(reader) { - const i = this._rangeRequestReaders.indexOf(reader); - - if (i >= 0) { - this._rangeRequestReaders.splice(i, 1); - } - } - - getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); - this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); - return this._fullRequestReader; - } - - getRangeReader(begin, end) { - const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); - reader.onClosed = this._onRangeRequestReaderClosed.bind(this); - - this._rangeRequestReaders.push(reader); - - return reader; - } - - cancelAllRequests(reason) { - this._fullRequestReader?.cancel(reason); - - for (const reader of this._rangeRequestReaders.slice(0)) { - reader.cancel(reason); - } - } - -} - -exports.PDFNetworkStream = PDFNetworkStream; - -class PDFNetworkStreamFullRequestReader { - constructor(manager, source) { - this._manager = manager; - const args = { - onHeadersReceived: this._onHeadersReceived.bind(this), - onDone: this._onDone.bind(this), - onError: this._onError.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._url = source.url; - this._fullRequestId = manager.requestFull(args); - this._headersReceivedCapability = (0, _util.createPromiseCapability)(); - this._disableRange = source.disableRange || false; - this._contentLength = source.length; - this._rangeChunkSize = source.rangeChunkSize; - - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - - this._isStreamingSupported = false; - this._isRangeSupported = false; - this._cachedChunks = []; - this._requests = []; - this._done = false; - this._storedError = undefined; - this._filename = null; - this.onProgress = null; - } - - _onHeadersReceived() { - const fullRequestXhrId = this._fullRequestId; - - const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); - - const getResponseHeader = name => { - return fullRequestXhr.getResponseHeader(name); - }; - - const { - allowRangeRequests, - suggestedLength - } = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader, - isHttp: this._manager.isHttp, - rangeChunkSize: this._rangeChunkSize, - disableRange: this._disableRange - }); - - if (allowRangeRequests) { - this._isRangeSupported = true; - } - - this._contentLength = suggestedLength || this._contentLength; - this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - - if (this._isRangeSupported) { - this._manager.abortRequest(fullRequestXhrId); - } - - this._headersReceivedCapability.resolve(); - } - - _onDone(data) { - if (data) { - if (this._requests.length > 0) { - const requestCapability = this._requests.shift(); - - requestCapability.resolve({ - value: data.chunk, - done: false - }); - } else { - this._cachedChunks.push(data.chunk); - } - } - - this._done = true; - - if (this._cachedChunks.length > 0) { - return; - } - - for (const requestCapability of this._requests) { - requestCapability.resolve({ - value: undefined, - done: true - }); - } - - this._requests.length = 0; - } - - _onError(status) { - this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); - - this._headersReceivedCapability.reject(this._storedError); - - for (const requestCapability of this._requests) { - requestCapability.reject(this._storedError); - } - - this._requests.length = 0; - this._cachedChunks.length = 0; - } - - _onProgress(evt) { - this.onProgress?.({ - loaded: evt.loaded, - total: evt.lengthComputable ? evt.total : this._contentLength - }); - } - - get filename() { - return this._filename; - } - - get isRangeSupported() { - return this._isRangeSupported; - } - - get isStreamingSupported() { - return this._isStreamingSupported; - } - - get contentLength() { - return this._contentLength; - } - - get headersReady() { - return this._headersReceivedCapability.promise; - } - - async read() { - if (this._storedError) { - throw this._storedError; - } - - if (this._cachedChunks.length > 0) { - const chunk = this._cachedChunks.shift(); - - return { - value: chunk, - done: false - }; - } - - if (this._done) { - return { - value: undefined, - done: true - }; - } - - const requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return requestCapability.promise; - } - - cancel(reason) { - this._done = true; - - this._headersReceivedCapability.reject(reason); - - for (const requestCapability of this._requests) { - requestCapability.resolve({ - value: undefined, - done: true - }); - } - - this._requests.length = 0; - - if (this._manager.isPendingRequest(this._fullRequestId)) { - this._manager.abortRequest(this._fullRequestId); - } - - this._fullRequestReader = null; - } - -} - -class PDFNetworkStreamRangeRequestReader { - constructor(manager, begin, end) { - this._manager = manager; - const args = { - onDone: this._onDone.bind(this), - onError: this._onError.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._url = manager.url; - this._requestId = manager.requestRange(begin, end, args); - this._requests = []; - this._queuedChunk = null; - this._done = false; - this._storedError = undefined; - this.onProgress = null; - this.onClosed = null; - } - - _close() { - this.onClosed?.(this); - } - - _onDone(data) { - const chunk = data.chunk; - - if (this._requests.length > 0) { - const requestCapability = this._requests.shift(); - - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunk = chunk; - } - - this._done = true; - - for (const requestCapability of this._requests) { - requestCapability.resolve({ - value: undefined, - done: true - }); - } - - this._requests.length = 0; - - this._close(); - } - - _onError(status) { - this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); - - for (const requestCapability of this._requests) { - requestCapability.reject(this._storedError); - } - - this._requests.length = 0; - this._queuedChunk = null; - } - - _onProgress(evt) { - if (!this.isStreamingSupported) { - this.onProgress?.({ - loaded: evt.loaded - }); - } - } - - get isStreamingSupported() { - return false; - } - - async read() { - if (this._storedError) { - throw this._storedError; - } - - if (this._queuedChunk !== null) { - const chunk = this._queuedChunk; - this._queuedChunk = null; - return { - value: chunk, - done: false - }; - } - - if (this._done) { - return { - value: undefined, - done: true - }; - } - - const requestCapability = (0, _util.createPromiseCapability)(); - - this._requests.push(requestCapability); - - return requestCapability.promise; - } - - cancel(reason) { - this._done = true; - - for (const requestCapability of this._requests) { - requestCapability.resolve({ - value: undefined, - done: true - }); - } - - this._requests.length = 0; - - if (this._manager.isPendingRequest(this._requestId)) { - this._manager.abortRequest(this._requestId); - } - - this._close(); - } - -} - -/***/ }), -/* 29 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFFetchStream = void 0; - -var _util = __w_pdfjs_require__(1); - -var _network_utils = __w_pdfjs_require__(26); - -; - -function createFetchOptions(headers, withCredentials, abortController) { - return { - method: "GET", - headers, - signal: abortController?.signal, - mode: "cors", - credentials: withCredentials ? "include" : "same-origin", - redirect: "follow" - }; -} - -function createHeaders(httpHeaders) { - const headers = new Headers(); - - for (const property in httpHeaders) { - const value = httpHeaders[property]; - - if (typeof value === "undefined") { - continue; - } - - headers.append(property, value); - } - - return headers; -} - -class PDFFetchStream { - constructor(source) { - this.source = source; - this.isHttp = /^https?:/i.test(source.url); - this.httpHeaders = this.isHttp && source.httpHeaders || {}; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - - get _progressiveDataLength() { - return this._fullRequestReader?._loaded ?? 0; - } - - getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); - this._fullRequestReader = new PDFFetchStreamReader(this); - return this._fullRequestReader; - } - - getRangeReader(begin, end) { - if (end <= this._progressiveDataLength) { - return null; - } - - const reader = new PDFFetchStreamRangeReader(this, begin, end); - - this._rangeRequestReaders.push(reader); - - return reader; - } - - cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - for (const reader of this._rangeRequestReaders.slice(0)) { - reader.cancel(reason); - } - } - -} - -exports.PDFFetchStream = PDFFetchStream; - -class PDFFetchStreamReader { - constructor(stream) { - this._stream = stream; - this._reader = null; - this._loaded = 0; - this._filename = null; - const source = stream.source; - this._withCredentials = source.withCredentials || false; - this._contentLength = source.length; - this._headersCapability = (0, _util.createPromiseCapability)(); - this._disableRange = source.disableRange || false; - this._rangeChunkSize = source.rangeChunkSize; - - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - - if (typeof AbortController !== "undefined") { - this._abortController = new AbortController(); - } - - this._isStreamingSupported = !source.disableStream; - this._isRangeSupported = !source.disableRange; - this._headers = createHeaders(this._stream.httpHeaders); - const url = source.url; - fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { - if (!(0, _network_utils.validateResponseStatus)(response.status)) { - throw (0, _network_utils.createResponseStatusError)(response.status, url); - } - - this._reader = response.body.getReader(); - - this._headersCapability.resolve(); - - const getResponseHeader = name => { - return response.headers.get(name); - }; - - const { - allowRangeRequests, - suggestedLength - } = (0, _network_utils.validateRangeRequestCapabilities)({ - getResponseHeader, - isHttp: this._stream.isHttp, - rangeChunkSize: this._rangeChunkSize, - disableRange: this._disableRange - }); - this._isRangeSupported = allowRangeRequests; - this._contentLength = suggestedLength || this._contentLength; - this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); - - if (!this._isStreamingSupported && this._isRangeSupported) { - this.cancel(new _util.AbortException("Streaming is disabled.")); - } - }).catch(this._headersCapability.reject); - this.onProgress = null; - } - - get headersReady() { - return this._headersCapability.promise; - } - - get filename() { - return this._filename; - } - - get contentLength() { - return this._contentLength; - } - - get isRangeSupported() { - return this._isRangeSupported; - } - - get isStreamingSupported() { - return this._isStreamingSupported; - } - - async read() { - await this._headersCapability.promise; - const { - value, - done - } = await this._reader.read(); - - if (done) { - return { - value, - done - }; - } - - this._loaded += value.byteLength; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded, - total: this._contentLength - }); - } - - const buffer = new Uint8Array(value).buffer; - return { - value: buffer, - done: false - }; - } - - cancel(reason) { - if (this._reader) { - this._reader.cancel(reason); - } - - if (this._abortController) { - this._abortController.abort(); - } - } - -} - -class PDFFetchStreamRangeReader { - constructor(stream, begin, end) { - this._stream = stream; - this._reader = null; - this._loaded = 0; - const source = stream.source; - this._withCredentials = source.withCredentials || false; - this._readCapability = (0, _util.createPromiseCapability)(); - this._isStreamingSupported = !source.disableStream; - - if (typeof AbortController !== "undefined") { - this._abortController = new AbortController(); - } - - this._headers = createHeaders(this._stream.httpHeaders); - - this._headers.append("Range", `bytes=${begin}-${end - 1}`); - - const url = source.url; - fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { - if (!(0, _network_utils.validateResponseStatus)(response.status)) { - throw (0, _network_utils.createResponseStatusError)(response.status, url); - } - - this._readCapability.resolve(); - - this._reader = response.body.getReader(); - }).catch(this._readCapability.reject); - this.onProgress = null; - } - - get isStreamingSupported() { - return this._isStreamingSupported; - } - - async read() { - await this._readCapability.promise; - const { - value, - done - } = await this._reader.read(); - - if (done) { - return { - value, - done - }; - } - - this._loaded += value.byteLength; - - if (this.onProgress) { - this.onProgress({ - loaded: this._loaded - }); - } - - const buffer = new Uint8Array(value).buffer; - return { - value: buffer, - done: false - }; - } - - cancel(reason) { - if (this._reader) { - this._reader.cancel(reason); - } - - if (this._abortController) { - this._abortController.abort(); - } - } - -} - -/***/ }) -/******/ ]); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.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; -/******/ } -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. -(() => { -var exports = __webpack_exports__; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "AnnotationLayer", ({ - enumerable: true, - get: function () { - return _annotation_layer.AnnotationLayer; - } -})); -Object.defineProperty(exports, "AnnotationMode", ({ - enumerable: true, - get: function () { - return _util.AnnotationMode; - } -})); -Object.defineProperty(exports, "CMapCompressionType", ({ - enumerable: true, - get: function () { - return _util.CMapCompressionType; - } -})); -Object.defineProperty(exports, "GlobalWorkerOptions", ({ - enumerable: true, - get: function () { - return _worker_options.GlobalWorkerOptions; - } -})); -Object.defineProperty(exports, "InvalidPDFException", ({ - enumerable: true, - get: function () { - return _util.InvalidPDFException; - } -})); -Object.defineProperty(exports, "LoopbackPort", ({ - enumerable: true, - get: function () { - return _api.LoopbackPort; - } -})); -Object.defineProperty(exports, "MissingPDFException", ({ - enumerable: true, - get: function () { - return _util.MissingPDFException; - } -})); -Object.defineProperty(exports, "OPS", ({ - enumerable: true, - get: function () { - return _util.OPS; - } -})); -Object.defineProperty(exports, "PDFDataRangeTransport", ({ - enumerable: true, - get: function () { - return _api.PDFDataRangeTransport; - } -})); -Object.defineProperty(exports, "PDFDateString", ({ - enumerable: true, - get: function () { - return _display_utils.PDFDateString; - } -})); -Object.defineProperty(exports, "PDFWorker", ({ - enumerable: true, - get: function () { - return _api.PDFWorker; - } -})); -Object.defineProperty(exports, "PasswordResponses", ({ - enumerable: true, - get: function () { - return _util.PasswordResponses; - } -})); -Object.defineProperty(exports, "PermissionFlag", ({ - enumerable: true, - get: function () { - return _util.PermissionFlag; - } -})); -Object.defineProperty(exports, "PixelsPerInch", ({ - enumerable: true, - get: function () { - return _display_utils.PixelsPerInch; - } -})); -Object.defineProperty(exports, "RenderingCancelledException", ({ - enumerable: true, - get: function () { - return _display_utils.RenderingCancelledException; - } -})); -Object.defineProperty(exports, "SVGGraphics", ({ - enumerable: true, - get: function () { - return _svg.SVGGraphics; - } -})); -Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ - enumerable: true, - get: function () { - return _util.UNSUPPORTED_FEATURES; - } -})); -Object.defineProperty(exports, "UnexpectedResponseException", ({ - enumerable: true, - get: function () { - return _util.UnexpectedResponseException; - } -})); -Object.defineProperty(exports, "Util", ({ - enumerable: true, - get: function () { - return _util.Util; - } -})); -Object.defineProperty(exports, "VerbosityLevel", ({ - enumerable: true, - get: function () { - return _util.VerbosityLevel; - } -})); -Object.defineProperty(exports, "XfaLayer", ({ - enumerable: true, - get: function () { - return _xfa_layer.XfaLayer; - } -})); -Object.defineProperty(exports, "build", ({ - enumerable: true, - get: function () { - return _api.build; - } -})); -Object.defineProperty(exports, "createPromiseCapability", ({ - enumerable: true, - get: function () { - return _util.createPromiseCapability; - } -})); -Object.defineProperty(exports, "createValidAbsoluteUrl", ({ - enumerable: true, - get: function () { - return _util.createValidAbsoluteUrl; - } -})); -Object.defineProperty(exports, "getDocument", ({ - enumerable: true, - get: function () { - return _api.getDocument; - } -})); -Object.defineProperty(exports, "getFilenameFromUrl", ({ - enumerable: true, - get: function () { - return _display_utils.getFilenameFromUrl; - } -})); -Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ - enumerable: true, - get: function () { - return _display_utils.getPdfFilenameFromUrl; - } -})); -Object.defineProperty(exports, "getXfaPageViewport", ({ - enumerable: true, - get: function () { - return _display_utils.getXfaPageViewport; - } -})); -Object.defineProperty(exports, "isPdfFile", ({ - enumerable: true, - get: function () { - return _display_utils.isPdfFile; - } -})); -Object.defineProperty(exports, "loadScript", ({ - enumerable: true, - get: function () { - return _display_utils.loadScript; - } -})); -Object.defineProperty(exports, "renderTextLayer", ({ - enumerable: true, - get: function () { - return _text_layer.renderTextLayer; - } -})); -Object.defineProperty(exports, "shadow", ({ - enumerable: true, - get: function () { - return _util.shadow; - } -})); -Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function () { - return _api.version; - } -})); - -var _util = __w_pdfjs_require__(1); - -var _api = __w_pdfjs_require__(4); - -var _display_utils = __w_pdfjs_require__(5); - -var _annotation_layer = __w_pdfjs_require__(20); - -var _worker_options = __w_pdfjs_require__(13); - -var _is_node = __w_pdfjs_require__(3); - -var _text_layer = __w_pdfjs_require__(23); - -var _svg = __w_pdfjs_require__(24); - -var _xfa_layer = __w_pdfjs_require__(22); - -const pdfjsVersion = '2.14.305'; -const pdfjsBuild = 'eaaa8b4ad'; -{ - if (_is_node.isNodeJS) { - const { - PDFNodeStream - } = __w_pdfjs_require__(25); - - (0, _api.setPDFNetworkStreamFactory)(params => { - return new PDFNodeStream(params); - }); - } else { - const { - PDFNetworkStream - } = __w_pdfjs_require__(28); - - const { - PDFFetchStream - } = __w_pdfjs_require__(29); - - (0, _api.setPDFNetworkStreamFactory)(params => { - if ((0, _display_utils.isValidFetchUrl)(params.url)) { - return new PDFFetchStream(params); - } - - return new PDFNetworkStream(params); - }); - } -} -})(); - -/******/ return __webpack_exports__; -/******/ })() -; -}); \ No newline at end of file diff --git a/resources/js/pdfjs/pdf.worker.js b/resources/js/pdfjs/pdf.worker.js deleted file mode 100644 index b0ad47772c9b..000000000000 --- a/resources/js/pdfjs/pdf.worker.js +++ /dev/null @@ -1,74430 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * JavaScript code in this page - * - * Copyright 2022 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.worker", [], factory); - else if(typeof exports === 'object') - exports["pdfjs-dist/build/pdf.worker"] = factory(); - else - root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory(); -})(this, () => { -return /******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ([ -/* 0 */, -/* 1 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.WorkerTask = exports.WorkerMessageHandler = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _pdf_manager = __w_pdfjs_require__(6); - -var _cleanup_helper = __w_pdfjs_require__(67); - -var _writer = __w_pdfjs_require__(73); - -var _is_node = __w_pdfjs_require__(4); - -var _message_handler = __w_pdfjs_require__(102); - -var _worker_stream = __w_pdfjs_require__(103); - -var _core_utils = __w_pdfjs_require__(8); - -class WorkerTask { - constructor(name) { - this.name = name; - this.terminated = false; - this._capability = (0, _util.createPromiseCapability)(); - } - - get finished() { - return this._capability.promise; - } - - finish() { - this._capability.resolve(); - } - - terminate() { - this.terminated = true; - } - - ensureNotTerminated() { - if (this.terminated) { - throw new Error("Worker task was terminated"); - } - } - -} - -exports.WorkerTask = WorkerTask; - -class WorkerMessageHandler { - static setup(handler, port) { - let testMessageProcessed = false; - handler.on("test", function wphSetupTest(data) { - if (testMessageProcessed) { - return; - } - - testMessageProcessed = true; - handler.send("test", data instanceof Uint8Array); - }); - handler.on("configure", function wphConfigure(data) { - (0, _util.setVerbosityLevel)(data.verbosity); - }); - handler.on("GetDocRequest", function wphSetupDoc(data) { - return WorkerMessageHandler.createDocumentHandler(data, port); - }); - } - - static createDocumentHandler(docParams, port) { - let pdfManager; - let terminated = false; - let cancelXHRs = null; - const WorkerTasks = []; - const verbosity = (0, _util.getVerbosityLevel)(); - const apiVersion = docParams.apiVersion; - const workerVersion = '2.14.305'; - - if (apiVersion !== workerVersion) { - throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); - } - - const enumerableProperties = []; - - for (const property in []) { - enumerableProperties.push(property); - } - - if (enumerableProperties.length) { - 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") { - const partialMsg = "The browser/environment lacks native support for critical " + "functionality used by the PDF.js library (e.g. `ReadableStream`); "; - - if (_is_node.isNodeJS) { - throw new Error(partialMsg + "please use a `legacy`-build instead."); - } - - throw new Error(partialMsg + "please update to a supported browser."); - } - - const docId = docParams.docId; - const docBaseUrl = docParams.docBaseUrl; - const workerHandlerName = docParams.docId + "_worker"; - let handler = new _message_handler.MessageHandler(workerHandlerName, docId, port); - - function ensureNotTerminated() { - if (terminated) { - throw new Error("Worker was terminated"); - } - } - - function startWorkerTask(task) { - WorkerTasks.push(task); - } - - function finishWorkerTask(task) { - task.finish(); - const i = WorkerTasks.indexOf(task); - WorkerTasks.splice(i, 1); - } - - async function loadDocument(recoveryMode) { - await pdfManager.ensureDoc("checkHeader"); - await pdfManager.ensureDoc("parseStartXRef"); - await pdfManager.ensureDoc("parse", [recoveryMode]); - await pdfManager.ensureDoc("checkFirstPage", [recoveryMode]); - await pdfManager.ensureDoc("checkLastPage", [recoveryMode]); - const isPureXfa = await pdfManager.ensureDoc("isPureXfa"); - - if (isPureXfa) { - const task = new WorkerTask("loadXfaFonts"); - startWorkerTask(task); - await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task)), pdfManager.loadXfaImages()]); - } - - const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc("numPages"), pdfManager.ensureDoc("fingerprints")]); - const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc("htmlForXfa") : null; - return { - numPages, - fingerprints, - htmlForXfa - }; - } - - function getPdfManager(data, evaluatorOptions, enableXfa) { - const pdfManagerCapability = (0, _util.createPromiseCapability)(); - let newPdfManager; - const source = data.source; - - if (source.data) { - try { - newPdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, handler, evaluatorOptions, enableXfa, docBaseUrl); - pdfManagerCapability.resolve(newPdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - - return pdfManagerCapability.promise; - } - - let pdfStream, - cachedChunks = []; - - try { - pdfStream = new _worker_stream.PDFWorkerStream(handler); - } catch (ex) { - pdfManagerCapability.reject(ex); - return pdfManagerCapability.promise; - } - - const fullRequest = pdfStream.getFullReader(); - fullRequest.headersReady.then(function () { - if (!fullRequest.isRangeSupported) { - return; - } - - const disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported; - newPdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, { - msgHandler: handler, - password: source.password, - length: fullRequest.contentLength, - disableAutoFetch, - rangeChunkSize: source.rangeChunkSize - }, evaluatorOptions, enableXfa, docBaseUrl); - - for (let i = 0; i < cachedChunks.length; i++) { - newPdfManager.sendProgressiveData(cachedChunks[i]); - } - - cachedChunks = []; - pdfManagerCapability.resolve(newPdfManager); - cancelXHRs = null; - }).catch(function (reason) { - pdfManagerCapability.reject(reason); - cancelXHRs = null; - }); - let loaded = 0; - - const flushChunks = function () { - const pdfFile = (0, _util.arraysToBytes)(cachedChunks); - - if (source.length && pdfFile.length !== source.length) { - (0, _util.warn)("reported HTTP length is different from actual"); - } - - try { - newPdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, handler, evaluatorOptions, enableXfa, docBaseUrl); - pdfManagerCapability.resolve(newPdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - - cachedChunks = []; - }; - - const readPromise = new Promise(function (resolve, reject) { - const readChunk = function ({ - value, - done - }) { - try { - ensureNotTerminated(); - - if (done) { - if (!newPdfManager) { - flushChunks(); - } - - cancelXHRs = null; - return; - } - - loaded += (0, _util.arrayByteLength)(value); - - if (!fullRequest.isStreamingSupported) { - handler.send("DocProgress", { - loaded, - total: Math.max(loaded, fullRequest.contentLength || 0) - }); - } - - if (newPdfManager) { - newPdfManager.sendProgressiveData(value); - } else { - cachedChunks.push(value); - } - - fullRequest.read().then(readChunk, reject); - } catch (e) { - reject(e); - } - }; - - fullRequest.read().then(readChunk, reject); - }); - readPromise.catch(function (e) { - pdfManagerCapability.reject(e); - cancelXHRs = null; - }); - - cancelXHRs = function (reason) { - pdfStream.cancelAllRequests(reason); - }; - - return pdfManagerCapability.promise; - } - - function setupDoc(data) { - function onSuccess(doc) { - ensureNotTerminated(); - handler.send("GetDoc", { - pdfInfo: doc - }); - } - - function onFailure(ex) { - ensureNotTerminated(); - - if (ex instanceof _util.PasswordException) { - const task = new WorkerTask(`PasswordException: response ${ex.code}`); - startWorkerTask(task); - handler.sendWithPromise("PasswordRequest", ex).then(function ({ - password - }) { - finishWorkerTask(task); - pdfManager.updatePassword(password); - pdfManagerReady(); - }).catch(function () { - finishWorkerTask(task); - handler.send("DocException", ex); - }); - } else if (ex instanceof _util.InvalidPDFException || ex instanceof _util.MissingPDFException || ex instanceof _util.UnexpectedResponseException || ex instanceof _util.UnknownErrorException) { - handler.send("DocException", ex); - } else { - handler.send("DocException", new _util.UnknownErrorException(ex.message, ex.toString())); - } - } - - function pdfManagerReady() { - ensureNotTerminated(); - loadDocument(false).then(onSuccess, function (reason) { - ensureNotTerminated(); - - if (!(reason instanceof _core_utils.XRefParseException)) { - onFailure(reason); - return; - } - - pdfManager.requestLoadedStream(); - pdfManager.onLoadedStream().then(function () { - ensureNotTerminated(); - loadDocument(true).then(onSuccess, onFailure); - }); - }); - } - - ensureNotTerminated(); - const evaluatorOptions = { - maxImageSize: data.maxImageSize, - disableFontFace: data.disableFontFace, - ignoreErrors: data.ignoreErrors, - isEvalSupported: data.isEvalSupported, - fontExtraProperties: data.fontExtraProperties, - useSystemFonts: data.useSystemFonts, - cMapUrl: data.cMapUrl, - standardFontDataUrl: data.standardFontDataUrl - }; - getPdfManager(data, evaluatorOptions, data.enableXfa).then(function (newPdfManager) { - if (terminated) { - newPdfManager.terminate(new _util.AbortException("Worker was terminated.")); - throw new Error("Worker was terminated"); - } - - pdfManager = newPdfManager; - pdfManager.onLoadedStream().then(function (stream) { - handler.send("DataLoaded", { - length: stream.bytes.byteLength - }); - }); - }).then(pdfManagerReady, onFailure); - } - - handler.on("GetPage", function wphSetupGetPage(data) { - return pdfManager.getPage(data.pageIndex).then(function (page) { - return Promise.all([pdfManager.ensure(page, "rotate"), pdfManager.ensure(page, "ref"), pdfManager.ensure(page, "userUnit"), pdfManager.ensure(page, "view")]).then(function ([rotate, ref, userUnit, view]) { - return { - rotate, - ref, - userUnit, - view - }; - }); - }); - }); - handler.on("GetPageIndex", function wphSetupGetPageIndex(data) { - const pageRef = _primitives.Ref.get(data.num, data.gen); - - return pdfManager.ensureCatalog("getPageIndex", [pageRef]); - }); - handler.on("GetDestinations", function wphSetupGetDestinations(data) { - return pdfManager.ensureCatalog("destinations"); - }); - handler.on("GetDestination", function wphSetupGetDestination(data) { - return pdfManager.ensureCatalog("getDestination", [data.id]); - }); - handler.on("GetPageLabels", function wphSetupGetPageLabels(data) { - return pdfManager.ensureCatalog("pageLabels"); - }); - handler.on("GetPageLayout", function wphSetupGetPageLayout(data) { - return pdfManager.ensureCatalog("pageLayout"); - }); - handler.on("GetPageMode", function wphSetupGetPageMode(data) { - return pdfManager.ensureCatalog("pageMode"); - }); - handler.on("GetViewerPreferences", function (data) { - return pdfManager.ensureCatalog("viewerPreferences"); - }); - handler.on("GetOpenAction", function (data) { - return pdfManager.ensureCatalog("openAction"); - }); - handler.on("GetAttachments", function wphSetupGetAttachments(data) { - return pdfManager.ensureCatalog("attachments"); - }); - 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 pdfManager.ensure(page, "jsActions"); - }); - }); - handler.on("GetOutline", function wphSetupGetOutline(data) { - return pdfManager.ensureCatalog("documentOutline"); - }); - handler.on("GetOptionalContentConfig", function (data) { - return pdfManager.ensureCatalog("optionalContentConfig"); - }); - handler.on("GetPermissions", function (data) { - return pdfManager.ensureCatalog("permissions"); - }); - 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) { - return stream.bytes; - }); - }); - handler.on("GetAnnotations", function ({ - pageIndex, - intent - }) { - return pdfManager.getPage(pageIndex).then(function (page) { - 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 ({ - isPureXfa, - numPages, - annotationStorage, - filename - }) { - pdfManager.requestLoadedStream(); - const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("acroFormRef"), pdfManager.ensureDoc("xref"), pdfManager.ensureDoc("startXRef")]; - - if (isPureXfa) { - promises.push(pdfManager.serializeXfaData(annotationStorage)); - } else { - 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).finally(function () { - finishWorkerTask(task); - }); - })); - } - } - - return Promise.all(promises).then(function ([stream, acroForm, acroFormRef, xref, startXRef, ...refs]) { - let newRefs = []; - let xfaData = null; - - if (isPureXfa) { - xfaData = refs[0]; - - if (!xfaData) { - return stream.bytes; - } - } else { - for (const ref of refs) { - newRefs = ref.filter(x => x !== null).reduce((a, b) => a.concat(b), newRefs); - } - - if (newRefs.length === 0) { - return stream.bytes; - } - } - - const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || null; - let xfaDatasetsRef = null; - let hasXfaDatasetsEntry = false; - - if (Array.isArray(xfa)) { - for (let i = 0, ii = xfa.length; i < ii; i += 2) { - if (xfa[i] === "datasets") { - xfaDatasetsRef = xfa[i + 1]; - acroFormRef = null; - hasXfaDatasetsEntry = true; - } - } - - if (xfaDatasetsRef === null) { - xfaDatasetsRef = xref.getNewRef(); - } - } else if (xfa) { - acroFormRef = null; - (0, _util.warn)("Unsupported XFA type."); - } - - let newXrefInfo = Object.create(null); - - if (xref.trailer) { - const infoObj = Object.create(null); - const xrefInfo = xref.trailer.get("Info") || null; - - if (xrefInfo instanceof _primitives.Dict) { - xrefInfo.forEach((key, value) => { - if (typeof value === "string") { - infoObj[key] = (0, _util.stringToPDFString)(value); - } - }); - } - - newXrefInfo = { - rootRef: xref.trailer.getRaw("Root") || null, - encryptRef: xref.trailer.getRaw("Encrypt") || null, - newRef: xref.getNewRef(), - infoRef: xref.trailer.getRaw("Info") || null, - info: infoObj, - fileIds: xref.trailer.get("ID") || null, - startXRef, - filename - }; - } - - xref.resetNewRef(); - return (0, _writer.incrementalUpdate)({ - originalData: stream.bytes, - xrefInfo: newXrefInfo, - newRefs, - xref, - hasXfa: !!xfa, - xfaDatasetsRef, - hasXfaDatasetsEntry, - acroFormRef, - acroForm, - xfaData - }); - }); - }); - handler.on("GetOperatorList", function wphSetupRenderPage(data, sink) { - const pageIndex = data.pageIndex; - pdfManager.getPage(pageIndex).then(function (page) { - const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`); - startWorkerTask(task); - const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; - page.getOperatorList({ - handler, - sink, - task, - intent: data.intent, - cacheKey: data.cacheKey, - annotationStorage: data.annotationStorage - }).then(function (operatorListInfo) { - finishWorkerTask(task); - - if (start) { - (0, _util.info)(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`); - } - - sink.close(); - }, function (reason) { - finishWorkerTask(task); - - if (task.terminated) { - return; - } - - handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList - }); - sink.error(reason); - }); - }); - }); - handler.on("GetTextContent", function wphExtractText(data, sink) { - const pageIndex = data.pageIndex; - pdfManager.getPage(pageIndex).then(function (page) { - const task = new WorkerTask("GetTextContent: page " + pageIndex); - startWorkerTask(task); - const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; - page.extractTextContent({ - handler, - task, - sink, - includeMarkedContent: data.includeMarkedContent, - combineTextItems: data.combineTextItems - }).then(function () { - finishWorkerTask(task); - - if (start) { - (0, _util.info)(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`); - } - - sink.close(); - }, function (reason) { - finishWorkerTask(task); - - if (task.terminated) { - return; - } - - sink.error(reason); - }); - }); - }); - handler.on("GetStructTree", function wphGetStructTree(data) { - return pdfManager.getPage(data.pageIndex).then(function (page) { - return pdfManager.ensure(page, "getStructTree"); - }); - }); - handler.on("FontFallback", function (data) { - return pdfManager.fontFallback(data.id, handler); - }); - handler.on("Cleanup", function wphCleanup(data) { - return pdfManager.cleanup(true); - }); - handler.on("Terminate", function wphTerminate(data) { - terminated = true; - const waitOn = []; - - if (pdfManager) { - pdfManager.terminate(new _util.AbortException("Worker was terminated.")); - const cleanupPromise = pdfManager.cleanup(); - waitOn.push(cleanupPromise); - pdfManager = null; - } else { - (0, _cleanup_helper.clearGlobalCaches)(); - } - - if (cancelXHRs) { - cancelXHRs(new _util.AbortException("Worker was terminated.")); - } - - for (const task of WorkerTasks) { - waitOn.push(task.finished); - task.terminate(); - } - - return Promise.all(waitOn).then(function () { - handler.destroy(); - handler = null; - }); - }); - handler.on("Ready", function wphReady(data) { - setupDoc(docParams); - docParams = null; - }); - return workerHandlerName; - } - - static initializeFromPort(port) { - const handler = new _message_handler.MessageHandler("worker", "main", port); - WorkerMessageHandler.setup(handler, port); - handler.send("ready", null); - } - -} - -exports.WorkerMessageHandler = WorkerMessageHandler; - -function isMessagePort(maybePort) { - return typeof maybePort.postMessage === "function" && "onmessage" in maybePort; -} - -if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "undefined" && isMessagePort(self)) { - WorkerMessageHandler.initializeFromPort(self); -} - -/***/ }), -/* 2 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; -exports.arrayByteLength = arrayByteLength; -exports.arraysToBytes = arraysToBytes; -exports.assert = assert; -exports.bytesToString = bytesToString; -exports.createPromiseCapability = createPromiseCapability; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; -exports.escapeString = escapeString; -exports.getModificationDate = getModificationDate; -exports.getVerbosityLevel = getVerbosityLevel; -exports.info = info; -exports.isArrayBuffer = isArrayBuffer; -exports.isArrayEqual = isArrayEqual; -exports.isAscii = isAscii; -exports.objectFromMap = objectFromMap; -exports.objectSize = objectSize; -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; - -__w_pdfjs_require__(3); - -const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; -exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; -exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -const RenderingIntentFlag = { - ANY: 0x01, - DISPLAY: 0x02, - PRINT: 0x04, - ANNOTATIONS_FORMS: 0x10, - ANNOTATIONS_STORAGE: 0x20, - ANNOTATIONS_DISABLE: 0x40, - OPLIST: 0x100 -}; -exports.RenderingIntentFlag = RenderingIntentFlag; -const AnnotationMode = { - DISABLE: 0, - ENABLE: 1, - ENABLE_FORMS: 2, - ENABLE_STORAGE: 3 -}; -exports.AnnotationMode = AnnotationMode; -const PermissionFlag = { - PRINT: 0x04, - MODIFY_CONTENTS: 0x08, - COPY: 0x10, - MODIFY_ANNOTATIONS: 0x20, - FILL_INTERACTIVE_FORMS: 0x100, - COPY_FOR_ACCESSIBILITY: 0x200, - ASSEMBLE: 0x400, - PRINT_HIGH_QUALITY: 0x800 -}; -exports.PermissionFlag = PermissionFlag; -const TextRenderingMode = { - FILL: 0, - STROKE: 1, - FILL_STROKE: 2, - INVISIBLE: 3, - FILL_ADD_TO_PATH: 4, - STROKE_ADD_TO_PATH: 5, - FILL_STROKE_ADD_TO_PATH: 6, - ADD_TO_PATH: 7, - FILL_STROKE_MASK: 3, - ADD_TO_PATH_FLAG: 4 -}; -exports.TextRenderingMode = TextRenderingMode; -const ImageKind = { - GRAYSCALE_1BPP: 1, - RGB_24BPP: 2, - RGBA_32BPP: 3 -}; -exports.ImageKind = ImageKind; -const AnnotationType = { - TEXT: 1, - LINK: 2, - FREETEXT: 3, - LINE: 4, - SQUARE: 5, - CIRCLE: 6, - POLYGON: 7, - POLYLINE: 8, - HIGHLIGHT: 9, - UNDERLINE: 10, - SQUIGGLY: 11, - STRIKEOUT: 12, - STAMP: 13, - CARET: 14, - INK: 15, - POPUP: 16, - FILEATTACHMENT: 17, - SOUND: 18, - MOVIE: 19, - WIDGET: 20, - SCREEN: 21, - PRINTERMARK: 22, - TRAPNET: 23, - WATERMARK: 24, - THREED: 25, - REDACT: 26 -}; -exports.AnnotationType = AnnotationType; -const AnnotationStateModelType = { - MARKED: "Marked", - REVIEW: "Review" -}; -exports.AnnotationStateModelType = AnnotationStateModelType; -const AnnotationMarkedState = { - MARKED: "Marked", - UNMARKED: "Unmarked" -}; -exports.AnnotationMarkedState = AnnotationMarkedState; -const AnnotationReviewState = { - ACCEPTED: "Accepted", - REJECTED: "Rejected", - CANCELLED: "Cancelled", - COMPLETED: "Completed", - NONE: "None" -}; -exports.AnnotationReviewState = AnnotationReviewState; -const AnnotationReplyType = { - GROUP: "Group", - REPLY: "R" -}; -exports.AnnotationReplyType = AnnotationReplyType; -const AnnotationFlag = { - INVISIBLE: 0x01, - HIDDEN: 0x02, - PRINT: 0x04, - NOZOOM: 0x08, - NOROTATE: 0x10, - NOVIEW: 0x20, - READONLY: 0x40, - LOCKED: 0x80, - TOGGLENOVIEW: 0x100, - LOCKEDCONTENTS: 0x200 -}; -exports.AnnotationFlag = AnnotationFlag; -const AnnotationFieldFlag = { - READONLY: 0x0000001, - REQUIRED: 0x0000002, - NOEXPORT: 0x0000004, - MULTILINE: 0x0001000, - PASSWORD: 0x0002000, - NOTOGGLETOOFF: 0x0004000, - RADIO: 0x0008000, - PUSHBUTTON: 0x0010000, - COMBO: 0x0020000, - EDIT: 0x0040000, - SORT: 0x0080000, - FILESELECT: 0x0100000, - MULTISELECT: 0x0200000, - DONOTSPELLCHECK: 0x0400000, - DONOTSCROLL: 0x0800000, - COMB: 0x1000000, - RICHTEXT: 0x2000000, - RADIOSINUNISON: 0x2000000, - COMMITONSELCHANGE: 0x4000000 -}; -exports.AnnotationFieldFlag = AnnotationFieldFlag; -const AnnotationBorderStyleType = { - SOLID: 1, - DASHED: 2, - BEVELED: 3, - INSET: 4, - 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", - LZW: "LZW", - DCT: "DCT", - JPX: "JPX", - JBIG: "JBIG", - A85: "A85", - AHX: "AHX", - CCF: "CCF", - RLX: "RLX" -}; -exports.StreamType = StreamType; -const FontType = { - UNKNOWN: "UNKNOWN", - TYPE1: "TYPE1", - TYPE1STANDARD: "TYPE1STANDARD", - TYPE1C: "TYPE1C", - CIDFONTTYPE0: "CIDFONTTYPE0", - CIDFONTTYPE0C: "CIDFONTTYPE0C", - TRUETYPE: "TRUETYPE", - CIDFONTTYPE2: "CIDFONTTYPE2", - TYPE3: "TYPE3", - OPENTYPE: "OPENTYPE", - TYPE0: "TYPE0", - MMTYPE1: "MMTYPE1" -}; -exports.FontType = FontType; -const VerbosityLevel = { - ERRORS: 0, - WARNINGS: 1, - INFOS: 5 -}; -exports.VerbosityLevel = VerbosityLevel; -const CMapCompressionType = { - NONE: 0, - BINARY: 1, - STREAM: 2 -}; -exports.CMapCompressionType = CMapCompressionType; -const OPS = { - dependency: 1, - setLineWidth: 2, - setLineCap: 3, - setLineJoin: 4, - setMiterLimit: 5, - setDash: 6, - setRenderingIntent: 7, - setFlatness: 8, - setGState: 9, - save: 10, - restore: 11, - transform: 12, - moveTo: 13, - lineTo: 14, - curveTo: 15, - curveTo2: 16, - curveTo3: 17, - closePath: 18, - rectangle: 19, - stroke: 20, - closeStroke: 21, - fill: 22, - eoFill: 23, - fillStroke: 24, - eoFillStroke: 25, - closeFillStroke: 26, - closeEOFillStroke: 27, - endPath: 28, - clip: 29, - eoClip: 30, - beginText: 31, - endText: 32, - setCharSpacing: 33, - setWordSpacing: 34, - setHScale: 35, - setLeading: 36, - setFont: 37, - setTextRenderingMode: 38, - setTextRise: 39, - moveText: 40, - setLeadingMoveText: 41, - setTextMatrix: 42, - nextLine: 43, - showText: 44, - showSpacedText: 45, - nextLineShowText: 46, - nextLineSetSpacingShowText: 47, - setCharWidth: 48, - setCharWidthAndBounds: 49, - setStrokeColorSpace: 50, - setFillColorSpace: 51, - setStrokeColor: 52, - setStrokeColorN: 53, - setFillColor: 54, - setFillColorN: 55, - setStrokeGray: 56, - setFillGray: 57, - setStrokeRGBColor: 58, - setFillRGBColor: 59, - setStrokeCMYKColor: 60, - setFillCMYKColor: 61, - shadingFill: 62, - beginInlineImage: 63, - beginImageData: 64, - endInlineImage: 65, - paintXObject: 66, - markPoint: 67, - markPointProps: 68, - beginMarkedContent: 69, - beginMarkedContentProps: 70, - endMarkedContent: 71, - beginCompat: 72, - endCompat: 73, - paintFormXObjectBegin: 74, - paintFormXObjectEnd: 75, - beginGroup: 76, - endGroup: 77, - beginAnnotations: 78, - endAnnotations: 79, - beginAnnotation: 80, - endAnnotation: 81, - paintJpegXObject: 82, - paintImageMaskXObject: 83, - paintImageMaskXObjectGroup: 84, - paintImageXObject: 85, - paintInlineImageXObject: 86, - paintInlineImageXObjectGroup: 87, - paintImageXObjectRepeat: 88, - paintImageMaskXObjectRepeat: 89, - paintSolidColorImageMask: 90, - constructPath: 91 -}; -exports.OPS = OPS; -const UNSUPPORTED_FEATURES = { - unknown: "unknown", - forms: "forms", - javaScript: "javaScript", - signatures: "signatures", - smask: "smask", - shadingPattern: "shadingPattern", - font: "font", - errorTilingPattern: "errorTilingPattern", - errorExtGState: "errorExtGState", - errorXObject: "errorXObject", - errorFontLoadType3: "errorFontLoadType3", - errorFontState: "errorFontState", - errorFontMissing: "errorFontMissing", - errorFontTranslate: "errorFontTranslate", - errorColorSpace: "errorColorSpace", - errorOperatorList: "errorOperatorList", - errorFontToUnicode: "errorFontToUnicode", - errorFontLoadNative: "errorFontLoadNative", - errorFontBuildPath: "errorFontBuildPath", - errorFontGetPath: "errorFontGetPath", - errorMarkedContent: "errorMarkedContent", - errorContentSubStream: "errorContentSubStream" -}; -exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -const PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; -exports.PasswordResponses = PasswordResponses; -let verbosity = VerbosityLevel.WARNINGS; - -function setVerbosityLevel(level) { - if (Number.isInteger(level)) { - verbosity = level; - } -} - -function getVerbosityLevel() { - return verbosity; -} - -function info(msg) { - if (verbosity >= VerbosityLevel.INFOS) { - console.log(`Info: ${msg}`); - } -} - -function warn(msg) { - if (verbosity >= VerbosityLevel.WARNINGS) { - console.log(`Warning: ${msg}`); - } -} - -function unreachable(msg) { - throw new Error(msg); -} - -function assert(cond, msg) { - if (!cond) { - unreachable(msg); - } -} - -function _isValidProtocol(url) { - if (!url) { - return false; - } - - switch (url.protocol) { - case "http:": - case "https:": - case "ftp:": - case "mailto:": - case "tel:": - return true; - - default: - return false; - } -} - -function createValidAbsoluteUrl(url, baseUrl = null, options = null) { - if (!url) { - return null; - } - - try { - if (options && typeof url === "string") { - if (options.addDefaultProtocol && url.startsWith("www.")) { - const dots = url.match(/\./g); - - if (dots && dots.length >= 2) { - url = `http://${url}`; - } - } - - if (options.tryConvertEncoding) { - try { - url = stringToUTF8String(url); - } catch (ex) {} - } - } - - const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); - - if (_isValidProtocol(absoluteUrl)) { - return absoluteUrl; - } - } catch (ex) {} - - return null; -} - -function shadow(obj, prop, value) { - Object.defineProperty(obj, prop, { - value, - enumerable: true, - configurable: true, - writable: false - }); - return value; -} - -const BaseException = function BaseExceptionClosure() { - function BaseException(message, name) { - if (this.constructor === BaseException) { - unreachable("Cannot initialize BaseException."); - } - - this.message = message; - this.name = name; - } - - BaseException.prototype = new Error(); - BaseException.constructor = BaseException; - return BaseException; -}(); - -exports.BaseException = BaseException; - -class PasswordException extends BaseException { - constructor(msg, code) { - super(msg, "PasswordException"); - this.code = code; - } - -} - -exports.PasswordException = PasswordException; - -class UnknownErrorException extends BaseException { - constructor(msg, details) { - super(msg, "UnknownErrorException"); - this.details = details; - } - -} - -exports.UnknownErrorException = UnknownErrorException; - -class InvalidPDFException extends BaseException { - constructor(msg) { - super(msg, "InvalidPDFException"); - } - -} - -exports.InvalidPDFException = InvalidPDFException; - -class MissingPDFException extends BaseException { - constructor(msg) { - super(msg, "MissingPDFException"); - } - -} - -exports.MissingPDFException = MissingPDFException; - -class UnexpectedResponseException extends BaseException { - constructor(msg, status) { - super(msg, "UnexpectedResponseException"); - this.status = status; - } - -} - -exports.UnexpectedResponseException = UnexpectedResponseException; - -class FormatError extends BaseException { - constructor(msg) { - super(msg, "FormatError"); - } - -} - -exports.FormatError = FormatError; - -class AbortException extends BaseException { - constructor(msg) { - super(msg, "AbortException"); - } - -} - -exports.AbortException = AbortException; - -function bytesToString(bytes) { - if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { - unreachable("Invalid argument for bytesToString"); - } - - const length = bytes.length; - const MAX_ARGUMENT_COUNT = 8192; - - if (length < MAX_ARGUMENT_COUNT) { - return String.fromCharCode.apply(null, bytes); - } - - const strBuf = []; - - for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - const chunk = bytes.subarray(i, chunkEnd); - strBuf.push(String.fromCharCode.apply(null, chunk)); - } - - return strBuf.join(""); -} - -function stringToBytes(str) { - if (typeof str !== "string") { - unreachable("Invalid argument for stringToBytes"); - } - - const length = str.length; - const bytes = new Uint8Array(length); - - for (let i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xff; - } - - return bytes; -} - -function arrayByteLength(arr) { - if (arr.length !== undefined) { - return arr.length; - } - - if (arr.byteLength !== undefined) { - return arr.byteLength; - } - - unreachable("Invalid argument for arrayByteLength"); -} - -function arraysToBytes(arr) { - const length = arr.length; - - if (length === 1 && arr[0] instanceof Uint8Array) { - return arr[0]; - } - - let resultLength = 0; - - for (let i = 0; i < length; i++) { - resultLength += arrayByteLength(arr[i]); - } - - let pos = 0; - const data = new Uint8Array(resultLength); - - for (let i = 0; i < length; i++) { - let item = arr[i]; - - if (!(item instanceof Uint8Array)) { - if (typeof item === "string") { - item = stringToBytes(item); - } else { - item = new Uint8Array(item); - } - } - - const itemLength = item.byteLength; - data.set(item, pos); - pos += itemLength; - } - - return data; -} - -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 objectFromMap(map) { - const obj = Object.create(null); - - for (const [key, value] of map) { - obj[key] = value; - } - - return obj; -} - -function isLittleEndian() { - const buffer8 = new Uint8Array(4); - buffer8[0] = 1; - const view32 = new Uint32Array(buffer8.buffer, 0, 1); - return view32[0] === 1; -} - -function isEvalSupported() { - try { - new Function(""); - return true; - } catch (e) { - return false; - } -} - -class FeatureTest { - static get isLittleEndian() { - return shadow(this, "isLittleEndian", isLittleEndian()); - } - - static get isEvalSupported() { - return shadow(this, "isEvalSupported", isEvalSupported()); - } - - static get isOffscreenCanvasSupported() { - return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); - } - -} - -exports.FeatureTest = FeatureTest; -const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); - -class Util { - static makeHexColor(r, g, b) { - return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; - } - - static scaleMinMax(transform, minMax) { - let temp; - - if (transform[0]) { - if (transform[0] < 0) { - temp = minMax[0]; - minMax[0] = minMax[1]; - minMax[1] = temp; - } - - minMax[0] *= transform[0]; - minMax[1] *= transform[0]; - - if (transform[3] < 0) { - temp = minMax[2]; - minMax[2] = minMax[3]; - minMax[3] = temp; - } - - minMax[2] *= transform[3]; - minMax[3] *= transform[3]; - } else { - temp = minMax[0]; - minMax[0] = minMax[2]; - minMax[2] = temp; - temp = minMax[1]; - minMax[1] = minMax[3]; - minMax[3] = temp; - - if (transform[1] < 0) { - temp = minMax[2]; - minMax[2] = minMax[3]; - minMax[3] = temp; - } - - minMax[2] *= transform[1]; - minMax[3] *= transform[1]; - - if (transform[2] < 0) { - temp = minMax[0]; - minMax[0] = minMax[1]; - minMax[1] = temp; - } - - minMax[0] *= transform[2]; - minMax[1] *= transform[2]; - } - - minMax[0] += transform[4]; - minMax[1] += transform[4]; - minMax[2] += transform[5]; - minMax[3] += transform[5]; - } - - static transform(m1, m2) { - return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; - } - - static applyTransform(p, m) { - const xt = p[0] * m[0] + p[1] * m[2] + m[4]; - const yt = p[0] * m[1] + p[1] * m[3] + m[5]; - return [xt, yt]; - } - - static applyInverseTransform(p, m) { - const d = m[0] * m[3] - m[1] * m[2]; - const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; - return [xt, yt]; - } - - static getAxialAlignedBoundingBox(r, m) { - const p1 = Util.applyTransform(r, m); - const p2 = Util.applyTransform(r.slice(2, 4), m); - const p3 = Util.applyTransform([r[0], r[3]], m); - const p4 = Util.applyTransform([r[2], r[1]], m); - return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; - } - - static inverseTransform(m) { - const d = m[0] * m[3] - m[1] * m[2]; - return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - } - - static apply3dTransform(m, v) { - return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; - } - - static singularValueDecompose2dScale(m) { - const transpose = [m[0], m[2], m[1], m[3]]; - const a = m[0] * transpose[0] + m[1] * transpose[2]; - const b = m[0] * transpose[1] + m[1] * transpose[3]; - const c = m[2] * transpose[0] + m[3] * transpose[2]; - const d = m[2] * transpose[1] + m[3] * transpose[3]; - const first = (a + d) / 2; - const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; - const sx = first + second || 1; - const sy = first - second || 1; - return [Math.sqrt(sx), Math.sqrt(sy)]; - } - - static normalizeRect(rect) { - const r = rect.slice(0); - - if (rect[0] > rect[2]) { - r[0] = rect[2]; - r[2] = rect[0]; - } - - if (rect[1] > rect[3]) { - r[1] = rect[3]; - r[3] = rect[1]; - } - - return r; - } - - static intersect(rect1, rect2) { - const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); - const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); - - if (xLow > xHigh) { - return null; - } - - const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); - const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); - - if (yLow > yHigh) { - return null; - } - - return [xLow, yLow, xHigh, yHigh]; - } - - static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { - const tvalues = [], - bounds = [[], []]; - let a, b, c, t, t1, t2, b2ac, sqrtb2ac; - - for (let i = 0; i < 2; ++i) { - if (i === 0) { - b = 6 * x0 - 12 * x1 + 6 * x2; - a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; - c = 3 * x1 - 3 * x0; - } else { - b = 6 * y0 - 12 * y1 + 6 * y2; - a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; - c = 3 * y1 - 3 * y0; - } - - if (Math.abs(a) < 1e-12) { - if (Math.abs(b) < 1e-12) { - continue; - } - - t = -c / b; - - if (0 < t && t < 1) { - tvalues.push(t); - } - - continue; - } - - b2ac = b * b - 4 * c * a; - sqrtb2ac = Math.sqrt(b2ac); - - if (b2ac < 0) { - continue; - } - - t1 = (-b + sqrtb2ac) / (2 * a); - - if (0 < t1 && t1 < 1) { - tvalues.push(t1); - } - - t2 = (-b - sqrtb2ac) / (2 * a); - - if (0 < t2 && t2 < 1) { - tvalues.push(t2); - } - } - - let j = tvalues.length, - mt; - const jlen = j; - - while (j--) { - t = tvalues[j]; - mt = 1 - t; - bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; - bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; - } - - bounds[0][jlen] = x0; - bounds[1][jlen] = y0; - bounds[0][jlen + 1] = x3; - bounds[1][jlen + 1] = y3; - bounds[0].length = bounds[1].length = jlen + 2; - return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; - } - -} - -exports.Util = Util; -const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; - -function stringToPDFString(str) { - if (str[0] >= "\xEF") { - let encoding; - - if (str[0] === "\xFE" && str[1] === "\xFF") { - encoding = "utf-16be"; - } else if (str[0] === "\xFF" && str[1] === "\xFE") { - encoding = "utf-16le"; - } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { - encoding = "utf-8"; - } - - if (encoding) { - try { - const decoder = new TextDecoder(encoding, { - fatal: true - }); - const buffer = stringToBytes(str); - return decoder.decode(buffer); - } catch (ex) { - warn(`stringToPDFString: "${ex}".`); - } - } - } - - const strBuf = []; - - for (let i = 0, ii = str.length; i < ii; i++) { - const code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); - } - - return strBuf.join(""); -} - -function escapeString(str) { - 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), String.fromCharCode(char & 0xff)); - } - - return buf.join(""); -} - -function stringToUTF8String(str) { - return decodeURIComponent(escape(str)); -} - -function utf8StringToString(str) { - return unescape(encodeURIComponent(str)); -} - -function isArrayBuffer(v) { - return typeof v === "object" && v !== null && v.byteLength !== undefined; -} - -function isArrayEqual(arr1, arr2) { - if (arr1.length !== arr2.length) { - return false; - } - - for (let i = 0, ii = arr1.length; i < ii; i++) { - if (arr1[i] !== arr2[i]) { - return false; - } - } - - return true; -} - -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(""); -} - -function createPromiseCapability() { - const capability = Object.create(null); - let isSettled = false; - Object.defineProperty(capability, "settled", { - get() { - return isSettled; - } - - }); - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = function (data) { - isSettled = true; - resolve(data); - }; - - capability.reject = function (reason) { - isSettled = true; - reject(reason); - }; - }); - return capability; -} - -/***/ }), -/* 3 */ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { - - - -var _is_node = __w_pdfjs_require__(4); - -; - -/***/ }), -/* 4 */ -/***/ ((__unused_webpack_module, exports) => { - - - -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 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.EOF = exports.Dict = exports.Cmd = exports.CIRCULAR_REF = void 0; -exports.clearPrimitiveCaches = clearPrimitiveCaches; -exports.isCmd = isCmd; -exports.isDict = isDict; -exports.isName = isName; -exports.isRefsEqual = isRefsEqual; - -var _util = __w_pdfjs_require__(2); - -const CIRCULAR_REF = Symbol("CIRCULAR_REF"); -exports.CIRCULAR_REF = CIRCULAR_REF; -const EOF = Symbol("EOF"); -exports.EOF = EOF; - -const Name = function NameClosure() { - let nameCache = Object.create(null); - - class Name { - constructor(name) { - this.name = name; - } - - static get(name) { - const nameValue = nameCache[name]; - return nameValue ? nameValue : nameCache[name] = new Name(name); - } - - static _clearCache() { - nameCache = Object.create(null); - } - - } - - return Name; -}(); - -exports.Name = Name; - -const Cmd = function CmdClosure() { - let cmdCache = Object.create(null); - - class Cmd { - constructor(cmd) { - this.cmd = cmd; - } - - static get(cmd) { - const cmdValue = cmdCache[cmd]; - return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd); - } - - static _clearCache() { - cmdCache = Object.create(null); - } - - } - - return Cmd; -}(); - -exports.Cmd = Cmd; - -const nonSerializable = function nonSerializableClosure() { - return nonSerializable; -}; - -class Dict { - constructor(xref = null) { - this._map = Object.create(null); - this.xref = xref; - this.objId = null; - this.suppressEncryption = false; - this.__nonSerializable__ = nonSerializable; - } - - assignXref(newXref) { - this.xref = newXref; - } - - get size() { - return Object.keys(this._map).length; - } - - get(key1, key2, key3) { - let value = this._map[key1]; - - if (value === undefined && key2 !== undefined) { - value = this._map[key2]; - - if (value === undefined && key3 !== undefined) { - value = this._map[key3]; - } - } - - if (value instanceof Ref && this.xref) { - return this.xref.fetch(value, this.suppressEncryption); - } - - return value; - } - - async getAsync(key1, key2, key3) { - let value = this._map[key1]; - - if (value === undefined && key2 !== undefined) { - value = this._map[key2]; - - if (value === undefined && key3 !== undefined) { - value = this._map[key3]; - } - } - - if (value instanceof Ref && this.xref) { - return this.xref.fetchAsync(value, this.suppressEncryption); - } - - return value; - } - - getArray(key1, key2, key3) { - let value = this._map[key1]; - - if (value === undefined && key2 !== undefined) { - value = this._map[key2]; - - if (value === undefined && key3 !== undefined) { - value = this._map[key3]; - } - } - - if (value instanceof Ref && this.xref) { - value = this.xref.fetch(value, this.suppressEncryption); - } - - if (Array.isArray(value)) { - value = value.slice(); - - for (let i = 0, ii = value.length; i < ii; i++) { - if (value[i] instanceof Ref && this.xref) { - value[i] = this.xref.fetch(value[i], this.suppressEncryption); - } - } - } - - return value; - } - - getRaw(key) { - return this._map[key]; - } - - getKeys() { - return Object.keys(this._map); - } - - getRawValues() { - return Object.values(this._map); - } - - set(key, value) { - this._map[key] = value; - } - - has(key) { - return this._map[key] !== undefined; - } - - forEach(callback) { - for (const key in this._map) { - callback(key, this.get(key)); - } - } - - static get empty() { - const emptyDict = new Dict(null); - - emptyDict.set = (key, value) => { - (0, _util.unreachable)("Should not call `set` on the empty dictionary."); - }; - - return (0, _util.shadow)(this, "empty", emptyDict); - } - - static merge({ - xref, - dictArray, - mergeSubDicts = false - }) { - const mergedDict = new Dict(xref), - properties = new Map(); - - for (const dict of dictArray) { - if (!(dict instanceof Dict)) { - continue; - } - - for (const [key, value] of Object.entries(dict._map)) { - let property = properties.get(key); - - if (property === undefined) { - property = []; - properties.set(key, property); - } else if (!mergeSubDicts || !(value instanceof Dict)) { - continue; - } - - property.push(value); - } - } - - for (const [name, values] of properties) { - if (values.length === 1 || !(values[0] instanceof Dict)) { - mergedDict._map[name] = values[0]; - continue; - } - - const subDict = new Dict(xref); - - for (const dict of values) { - for (const [key, value] of Object.entries(dict._map)) { - if (subDict._map[key] === undefined) { - subDict._map[key] = value; - } - } - } - - if (subDict.size > 0) { - mergedDict._map[name] = subDict; - } - } - - properties.clear(); - return mergedDict.size > 0 ? mergedDict : Dict.empty; - } - -} - -exports.Dict = Dict; - -const Ref = function RefClosure() { - let refCache = Object.create(null); - - class Ref { - constructor(num, gen) { - this.num = num; - this.gen = gen; - } - - toString() { - if (this.gen === 0) { - return `${this.num}R`; - } - - return `${this.num}R${this.gen}`; - } - - static get(num, gen) { - const key = gen === 0 ? `${num}R` : `${num}R${gen}`; - const refValue = refCache[key]; - return refValue ? refValue : refCache[key] = new Ref(num, gen); - } - - static _clearCache() { - refCache = Object.create(null); - } - - } - - return Ref; -}(); - -exports.Ref = Ref; - -class RefSet { - constructor(parent = null) { - this._set = new Set(parent && parent._set); - } - - has(ref) { - return this._set.has(ref.toString()); - } - - put(ref) { - this._set.add(ref.toString()); - } - - remove(ref) { - this._set.delete(ref.toString()); - } - - [Symbol.iterator]() { - return this._set.values(); - } - - clear() { - this._set.clear(); - } - -} - -exports.RefSet = RefSet; - -class RefSetCache { - constructor() { - this._map = new Map(); - } - - get size() { - return this._map.size; - } - - get(ref) { - return this._map.get(ref.toString()); - } - - has(ref) { - return this._map.has(ref.toString()); - } - - put(ref, obj) { - this._map.set(ref.toString(), obj); - } - - putAlias(ref, aliasRef) { - this._map.set(ref.toString(), this.get(aliasRef)); - } - - [Symbol.iterator]() { - return this._map.values(); - } - - clear() { - this._map.clear(); - } - -} - -exports.RefSetCache = RefSetCache; - -function isName(v, name) { - return v instanceof Name && (name === undefined || v.name === name); -} - -function isCmd(v, cmd) { - return v instanceof Cmd && (cmd === undefined || v.cmd === cmd); -} - -function isDict(v, type) { - return v instanceof Dict && (type === undefined || isName(v.get("Type"), type)); -} - -function isRefsEqual(v1, v2) { - return v1.num === v2.num && v1.gen === v2.gen; -} - -function clearPrimitiveCaches() { - Cmd._clearCache(); - - Name._clearCache(); - - Ref._clearCache(); -} - -/***/ }), -/* 6 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NetworkPdfManager = exports.LocalPdfManager = void 0; - -var _util = __w_pdfjs_require__(2); - -var _chunked_stream = __w_pdfjs_require__(7); - -var _core_utils = __w_pdfjs_require__(8); - -var _document = __w_pdfjs_require__(11); - -var _stream = __w_pdfjs_require__(10); - -function parseDocBaseUrl(url) { - if (url) { - const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url); - - if (absoluteUrl) { - return absoluteUrl.href; - } - - (0, _util.warn)(`Invalid absolute docBaseUrl: "${url}".`); - } - - return null; -} - -class BasePdfManager { - constructor() { - if (this.constructor === BasePdfManager) { - (0, _util.unreachable)("Cannot initialize BasePdfManager."); - } - } - - get docId() { - return this._docId; - } - - get password() { - return this._password; - } - - get docBaseUrl() { - const catalog = this.pdfDocument.catalog; - return (0, _util.shadow)(this, "docBaseUrl", catalog.baseUrl || this._docBaseUrl); - } - - onLoadedStream() { - (0, _util.unreachable)("Abstract method `onLoadedStream` called"); - } - - ensureDoc(prop, args) { - return this.ensure(this.pdfDocument, prop, args); - } - - ensureXRef(prop, args) { - return this.ensure(this.pdfDocument.xref, prop, args); - } - - ensureCatalog(prop, args) { - return this.ensure(this.pdfDocument.catalog, prop, args); - } - - getPage(pageIndex) { - return this.pdfDocument.getPage(pageIndex); - } - - fontFallback(id, handler) { - return this.pdfDocument.fontFallback(id, handler); - } - - loadXfaFonts(handler, task) { - return this.pdfDocument.loadXfaFonts(handler, task); - } - - loadXfaImages() { - return this.pdfDocument.loadXfaImages(); - } - - serializeXfaData(annotationStorage) { - return this.pdfDocument.serializeXfaData(annotationStorage); - } - - cleanup(manuallyTriggered = false) { - return this.pdfDocument.cleanup(manuallyTriggered); - } - - async ensure(obj, prop, args) { - (0, _util.unreachable)("Abstract method `ensure` called"); - } - - requestRange(begin, end) { - (0, _util.unreachable)("Abstract method `requestRange` called"); - } - - requestLoadedStream() { - (0, _util.unreachable)("Abstract method `requestLoadedStream` called"); - } - - sendProgressiveData(chunk) { - (0, _util.unreachable)("Abstract method `sendProgressiveData` called"); - } - - updatePassword(password) { - this._password = password; - } - - terminate(reason) { - (0, _util.unreachable)("Abstract method `terminate` called"); - } - -} - -class LocalPdfManager extends BasePdfManager { - constructor(docId, data, password, msgHandler, evaluatorOptions, enableXfa, docBaseUrl) { - super(); - this._docId = docId; - this._password = password; - this._docBaseUrl = parseDocBaseUrl(docBaseUrl); - this.msgHandler = msgHandler; - this.evaluatorOptions = evaluatorOptions; - this.enableXfa = enableXfa; - const stream = new _stream.Stream(data); - this.pdfDocument = new _document.PDFDocument(this, stream); - this._loadedStreamPromise = Promise.resolve(stream); - } - - async ensure(obj, prop, args) { - const value = obj[prop]; - - if (typeof value === "function") { - return value.apply(obj, args); - } - - return value; - } - - requestRange(begin, end) { - return Promise.resolve(); - } - - requestLoadedStream() {} - - onLoadedStream() { - return this._loadedStreamPromise; - } - - terminate(reason) {} - -} - -exports.LocalPdfManager = LocalPdfManager; - -class NetworkPdfManager extends BasePdfManager { - constructor(docId, pdfNetworkStream, args, evaluatorOptions, enableXfa, docBaseUrl) { - super(); - this._docId = docId; - this._password = args.password; - this._docBaseUrl = parseDocBaseUrl(docBaseUrl); - this.msgHandler = args.msgHandler; - this.evaluatorOptions = evaluatorOptions; - this.enableXfa = enableXfa; - this.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, { - msgHandler: args.msgHandler, - length: args.length, - disableAutoFetch: args.disableAutoFetch, - rangeChunkSize: args.rangeChunkSize - }); - this.pdfDocument = new _document.PDFDocument(this, this.streamManager.getStream()); - } - - async ensure(obj, prop, args) { - try { - const value = obj[prop]; - - if (typeof value === "function") { - return value.apply(obj, args); - } - - return value; - } catch (ex) { - if (!(ex instanceof _core_utils.MissingDataException)) { - throw ex; - } - - await this.requestRange(ex.begin, ex.end); - return this.ensure(obj, prop, args); - } - } - - requestRange(begin, end) { - return this.streamManager.requestRange(begin, end); - } - - requestLoadedStream() { - this.streamManager.requestAllChunks(); - } - - sendProgressiveData(chunk) { - this.streamManager.onReceiveData({ - chunk - }); - } - - onLoadedStream() { - return this.streamManager.onLoadedStream(); - } - - terminate(reason) { - this.streamManager.abort(reason); - } - -} - -exports.NetworkPdfManager = NetworkPdfManager; - -/***/ }), -/* 7 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ChunkedStreamManager = exports.ChunkedStream = void 0; - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -var _stream = __w_pdfjs_require__(10); - -class ChunkedStream extends _stream.Stream { - constructor(length, chunkSize, manager) { - super(new Uint8Array(length), 0, length, null); - this.chunkSize = chunkSize; - this._loadedChunks = new Set(); - this.numChunks = Math.ceil(length / chunkSize); - this.manager = manager; - this.progressiveDataLength = 0; - this.lastSuccessfulEnsureByteChunk = -1; - } - - getMissingChunks() { - const chunks = []; - - for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) { - if (!this._loadedChunks.has(chunk)) { - chunks.push(chunk); - } - } - - return chunks; - } - - get numChunksLoaded() { - return this._loadedChunks.size; - } - - get isDataLoaded() { - return this.numChunksLoaded === this.numChunks; - } - - onReceiveData(begin, chunk) { - const chunkSize = this.chunkSize; - - if (begin % chunkSize !== 0) { - throw new Error(`Bad begin offset: ${begin}`); - } - - const end = begin + chunk.byteLength; - - if (end % chunkSize !== 0 && end !== this.bytes.length) { - throw new Error(`Bad end offset: ${end}`); - } - - this.bytes.set(new Uint8Array(chunk), begin); - const beginChunk = Math.floor(begin / chunkSize); - const endChunk = Math.floor((end - 1) / chunkSize) + 1; - - for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - this._loadedChunks.add(curChunk); - } - } - - onReceiveProgressiveData(data) { - let position = this.progressiveDataLength; - const beginChunk = Math.floor(position / this.chunkSize); - this.bytes.set(new Uint8Array(data), position); - position += data.byteLength; - this.progressiveDataLength = position; - const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize); - - for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - this._loadedChunks.add(curChunk); - } - } - - ensureByte(pos) { - if (pos < this.progressiveDataLength) { - return; - } - - const chunk = Math.floor(pos / this.chunkSize); - - if (chunk > this.numChunks) { - return; - } - - if (chunk === this.lastSuccessfulEnsureByteChunk) { - return; - } - - if (!this._loadedChunks.has(chunk)) { - throw new _core_utils.MissingDataException(pos, pos + 1); - } - - this.lastSuccessfulEnsureByteChunk = chunk; - } - - ensureRange(begin, end) { - if (begin >= end) { - return; - } - - if (end <= this.progressiveDataLength) { - return; - } - - const beginChunk = Math.floor(begin / this.chunkSize); - - if (beginChunk > this.numChunks) { - return; - } - - const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks); - - for (let chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this._loadedChunks.has(chunk)) { - throw new _core_utils.MissingDataException(begin, end); - } - } - } - - nextEmptyChunk(beginChunk) { - const numChunks = this.numChunks; - - for (let i = 0; i < numChunks; ++i) { - const chunk = (beginChunk + i) % numChunks; - - if (!this._loadedChunks.has(chunk)) { - return chunk; - } - } - - return null; - } - - hasChunk(chunk) { - return this._loadedChunks.has(chunk); - } - - getByte() { - const pos = this.pos; - - if (pos >= this.end) { - return -1; - } - - if (pos >= this.progressiveDataLength) { - this.ensureByte(pos); - } - - return this.bytes[this.pos++]; - } - - getBytes(length) { - const bytes = this.bytes; - const pos = this.pos; - const strEnd = this.end; - - if (!length) { - if (strEnd > this.progressiveDataLength) { - this.ensureRange(pos, strEnd); - } - - return bytes.subarray(pos, strEnd); - } - - let end = pos + length; - - if (end > strEnd) { - end = strEnd; - } - - if (end > this.progressiveDataLength) { - this.ensureRange(pos, end); - } - - this.pos = end; - return bytes.subarray(pos, end); - } - - getByteRange(begin, end) { - if (begin < 0) { - begin = 0; - } - - if (end > this.end) { - end = this.end; - } - - if (end > this.progressiveDataLength) { - this.ensureRange(begin, end); - } - - return this.bytes.subarray(begin, end); - } - - makeSubStream(start, length, dict = null) { - if (length) { - if (start + length > this.progressiveDataLength) { - this.ensureRange(start, start + length); - } - } else { - if (start >= this.progressiveDataLength) { - this.ensureByte(start); - } - } - - function ChunkedStreamSubstream() {} - - ChunkedStreamSubstream.prototype = Object.create(this); - - ChunkedStreamSubstream.prototype.getMissingChunks = function () { - const chunkSize = this.chunkSize; - const beginChunk = Math.floor(this.start / chunkSize); - const endChunk = Math.floor((this.end - 1) / chunkSize) + 1; - const missingChunks = []; - - for (let chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!this._loadedChunks.has(chunk)) { - missingChunks.push(chunk); - } - } - - return missingChunks; - }; - - Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", { - get() { - if (this.numChunksLoaded === this.numChunks) { - return true; - } - - return this.getMissingChunks().length === 0; - }, - - configurable: true - }); - const subStream = new ChunkedStreamSubstream(); - subStream.pos = subStream.start = start; - subStream.end = start + length || this.end; - subStream.dict = dict; - return subStream; - } - - getBaseStreams() { - return [this]; - } - -} - -exports.ChunkedStream = ChunkedStream; - -class ChunkedStreamManager { - constructor(pdfNetworkStream, args) { - this.length = args.length; - this.chunkSize = args.rangeChunkSize; - this.stream = new ChunkedStream(this.length, this.chunkSize, this); - this.pdfNetworkStream = pdfNetworkStream; - this.disableAutoFetch = args.disableAutoFetch; - this.msgHandler = args.msgHandler; - this.currRequestId = 0; - this._chunksNeededByRequest = new Map(); - this._requestsByChunk = new Map(); - this._promisesByRequest = new Map(); - this.progressiveDataLength = 0; - this.aborted = false; - this._loadedStreamCapability = (0, _util.createPromiseCapability)(); - } - - onLoadedStream() { - return this._loadedStreamCapability.promise; - } - - sendRequest(begin, end) { - const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end); - - if (!rangeReader.isStreamingSupported) { - rangeReader.onProgress = this.onProgress.bind(this); - } - - let chunks = [], - loaded = 0; - return new Promise((resolve, reject) => { - const readChunk = chunk => { - try { - if (!chunk.done) { - const data = chunk.value; - chunks.push(data); - loaded += (0, _util.arrayByteLength)(data); - - if (rangeReader.isStreamingSupported) { - this.onProgress({ - loaded - }); - } - - rangeReader.read().then(readChunk, reject); - return; - } - - const chunkData = (0, _util.arraysToBytes)(chunks); - chunks = null; - resolve(chunkData); - } catch (e) { - reject(e); - } - }; - - rangeReader.read().then(readChunk, reject); - }).then(data => { - if (this.aborted) { - return; - } - - this.onReceiveData({ - chunk: data, - begin - }); - }); - } - - requestAllChunks() { - const missingChunks = this.stream.getMissingChunks(); - - this._requestChunks(missingChunks); - - return this._loadedStreamCapability.promise; - } - - _requestChunks(chunks) { - const requestId = this.currRequestId++; - const chunksNeeded = new Set(); - - this._chunksNeededByRequest.set(requestId, chunksNeeded); - - for (const chunk of chunks) { - if (!this.stream.hasChunk(chunk)) { - chunksNeeded.add(chunk); - } - } - - if (chunksNeeded.size === 0) { - return Promise.resolve(); - } - - const capability = (0, _util.createPromiseCapability)(); - - this._promisesByRequest.set(requestId, capability); - - const chunksToRequest = []; - - for (const chunk of chunksNeeded) { - let requestIds = this._requestsByChunk.get(chunk); - - if (!requestIds) { - requestIds = []; - - this._requestsByChunk.set(chunk, requestIds); - - chunksToRequest.push(chunk); - } - - requestIds.push(requestId); - } - - if (chunksToRequest.length > 0) { - const groupedChunksToRequest = this.groupChunks(chunksToRequest); - - for (const groupedChunk of groupedChunksToRequest) { - const begin = groupedChunk.beginChunk * this.chunkSize; - const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); - this.sendRequest(begin, end).catch(capability.reject); - } - } - - return capability.promise.catch(reason => { - if (this.aborted) { - return; - } - - throw reason; - }); - } - - getStream() { - return this.stream; - } - - requestRange(begin, end) { - end = Math.min(end, this.length); - const beginChunk = this.getBeginChunk(begin); - const endChunk = this.getEndChunk(end); - const chunks = []; - - for (let chunk = beginChunk; chunk < endChunk; ++chunk) { - chunks.push(chunk); - } - - return this._requestChunks(chunks); - } - - requestRanges(ranges = []) { - const chunksToRequest = []; - - for (const range of ranges) { - const beginChunk = this.getBeginChunk(range.begin); - const endChunk = this.getEndChunk(range.end); - - for (let chunk = beginChunk; chunk < endChunk; ++chunk) { - if (!chunksToRequest.includes(chunk)) { - chunksToRequest.push(chunk); - } - } - } - - chunksToRequest.sort(function (a, b) { - return a - b; - }); - return this._requestChunks(chunksToRequest); - } - - groupChunks(chunks) { - const groupedChunks = []; - let beginChunk = -1; - let prevChunk = -1; - - for (let i = 0, ii = chunks.length; i < ii; ++i) { - const chunk = chunks[i]; - - if (beginChunk < 0) { - beginChunk = chunk; - } - - if (prevChunk >= 0 && prevChunk + 1 !== chunk) { - groupedChunks.push({ - beginChunk, - endChunk: prevChunk + 1 - }); - beginChunk = chunk; - } - - if (i + 1 === chunks.length) { - groupedChunks.push({ - beginChunk, - endChunk: chunk + 1 - }); - } - - prevChunk = chunk; - } - - return groupedChunks; - } - - onProgress(args) { - this.msgHandler.send("DocProgress", { - loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded, - total: this.length - }); - } - - onReceiveData(args) { - const chunk = args.chunk; - const isProgressive = args.begin === undefined; - const begin = isProgressive ? this.progressiveDataLength : args.begin; - const end = begin + chunk.byteLength; - const beginChunk = Math.floor(begin / this.chunkSize); - const endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize); - - if (isProgressive) { - this.stream.onReceiveProgressiveData(chunk); - this.progressiveDataLength = end; - } else { - this.stream.onReceiveData(begin, chunk); - } - - if (this.stream.isDataLoaded) { - this._loadedStreamCapability.resolve(this.stream); - } - - const loadedRequests = []; - - for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { - const requestIds = this._requestsByChunk.get(curChunk); - - if (!requestIds) { - continue; - } - - this._requestsByChunk.delete(curChunk); - - for (const requestId of requestIds) { - const chunksNeeded = this._chunksNeededByRequest.get(requestId); - - if (chunksNeeded.has(curChunk)) { - chunksNeeded.delete(curChunk); - } - - if (chunksNeeded.size > 0) { - continue; - } - - loadedRequests.push(requestId); - } - } - - if (!this.disableAutoFetch && this._requestsByChunk.size === 0) { - let nextEmptyChunk; - - if (this.stream.numChunksLoaded === 1) { - const lastChunk = this.stream.numChunks - 1; - - if (!this.stream.hasChunk(lastChunk)) { - nextEmptyChunk = lastChunk; - } - } else { - nextEmptyChunk = this.stream.nextEmptyChunk(endChunk); - } - - if (Number.isInteger(nextEmptyChunk)) { - this._requestChunks([nextEmptyChunk]); - } - } - - for (const requestId of loadedRequests) { - const capability = this._promisesByRequest.get(requestId); - - this._promisesByRequest.delete(requestId); - - capability.resolve(); - } - - this.msgHandler.send("DocProgress", { - loaded: this.stream.numChunksLoaded * this.chunkSize, - total: this.length - }); - } - - onError(err) { - this._loadedStreamCapability.reject(err); - } - - getBeginChunk(begin) { - return Math.floor(begin / this.chunkSize); - } - - getEndChunk(end) { - return Math.floor((end - 1) / this.chunkSize) + 1; - } - - abort(reason) { - this.aborted = true; - - if (this.pdfNetworkStream) { - this.pdfNetworkStream.cancelAllRequests(reason); - } - - for (const capability of this._promisesByRequest.values()) { - capability.reject(reason); - } - } - -} - -exports.ChunkedStreamManager = ChunkedStreamManager; - -/***/ }), -/* 8 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XRefParseException = exports.XRefEntryException = exports.ParserEOFException = exports.MissingDataException = exports.DocStats = void 0; -exports.collectActions = collectActions; -exports.encodeToXmlString = encodeToXmlString; -exports.escapePDFName = escapePDFName; -exports.getArrayLookupTableFactory = getArrayLookupTableFactory; -exports.getInheritableProperty = getInheritableProperty; -exports.getLookupTableFactory = getLookupTableFactory; -exports.isWhiteSpace = isWhiteSpace; -exports.log2 = log2; -exports.parseXFAPath = parseXFAPath; -exports.readInt8 = readInt8; -exports.readUint16 = readUint16; -exports.readUint32 = readUint32; -exports.recoverJsURL = recoverJsURL; -exports.toRomanNumerals = toRomanNumerals; -exports.validateCSSFont = validateCSSFont; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _base_stream = __w_pdfjs_require__(9); - -function getLookupTableFactory(initializer) { - let lookup; - return function () { - if (initializer) { - lookup = Object.create(null); - initializer(lookup); - initializer = null; - } - - return lookup; - }; -} - -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})`, "MissingDataException"); - this.begin = begin; - this.end = end; - } - -} - -exports.MissingDataException = MissingDataException; - -class ParserEOFException extends _util.BaseException { - constructor(msg) { - super(msg, "ParserEOFException"); - } - -} - -exports.ParserEOFException = ParserEOFException; - -class XRefEntryException extends _util.BaseException { - constructor(msg) { - super(msg, "XRefEntryException"); - } - -} - -exports.XRefEntryException = XRefEntryException; - -class XRefParseException extends _util.BaseException { - constructor(msg) { - super(msg, "XRefParseException"); - } - -} - -exports.XRefParseException = XRefParseException; - -class DocStats { - constructor(handler) { - this._handler = handler; - this._streamTypes = new Set(); - this._fontTypes = new Set(); - } - - _send() { - const streamTypes = Object.create(null), - fontTypes = Object.create(null); - - for (const type of this._streamTypes) { - streamTypes[type] = true; - } - - for (const type of this._fontTypes) { - fontTypes[type] = true; - } - - this._handler.send("DocStats", { - streamTypes, - fontTypes - }); - } - - addStreamType(type) { - if (this._streamTypes.has(type)) { - return; - } - - this._streamTypes.add(type); - - this._send(); - } - - addFontType(type) { - if (this._fontTypes.has(type)) { - return; - } - - this._fontTypes.add(type); - - this._send(); - } - -} - -exports.DocStats = DocStats; - -function getInheritableProperty({ - dict, - key, - getArray = false, - stopWhenFound = true -}) { - let values; - const visited = new _primitives.RefSet(); - - while (dict instanceof _primitives.Dict && !(dict.objId && visited.has(dict.objId))) { - if (dict.objId) { - visited.put(dict.objId); - } - - const value = getArray ? dict.getArray(key) : dict.get(key); - - if (value !== undefined) { - if (stopWhenFound) { - return value; - } - - if (!values) { - values = []; - } - - values.push(value); - } - - dict = dict.get("Parent"); - } - - return values; -} - -const ROMAN_NUMBER_MAP = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]; - -function toRomanNumerals(number, lowerCase = false) { - (0, _util.assert)(Number.isInteger(number) && number > 0, "The number should be a positive integer."); - const romanBuf = []; - let pos; - - while (number >= 1000) { - number -= 1000; - romanBuf.push("M"); - } - - pos = number / 100 | 0; - number %= 100; - romanBuf.push(ROMAN_NUMBER_MAP[pos]); - pos = number / 10 | 0; - number %= 10; - romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); - romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); - const romanStr = romanBuf.join(""); - return lowerCase ? romanStr.toLowerCase() : romanStr; -} - -function log2(x) { - if (x <= 0) { - return 0; - } - - return Math.ceil(Math.log2(x)); -} - -function readInt8(data, offset) { - return data[offset] << 24 >> 24; -} - -function readUint16(data, offset) { - return data[offset] << 8 | data[offset + 1]; -} - -function readUint32(data, offset) { - return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; -} - -function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a; -} - -function parseXFAPath(path) { - const positionPattern = /(.+)\[(\d+)\]$/; - 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 (entry instanceof _primitives.Ref) { - 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")) { - const js = entry.get("JS"); - let code; - - if (js instanceof _base_stream.BaseStream) { - code = js.getString(); - } else if (typeof js === "string") { - code = js; - } - - code = 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); - const additionalActionsDicts = getInheritableProperty({ - dict, - key: "AA", - stopWhenFound: false - }); - - if (additionalActionsDicts) { - for (let i = additionalActionsDicts.length - 1; i >= 0; i--) { - const additionalActions = additionalActionsDicts[i]; - - if (!(additionalActions instanceof _primitives.Dict)) { - continue; - } - - 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; -} - -const XMLEntities = { - 0x3c: "<", - 0x3e: ">", - 0x26: "&", - 0x22: """, - 0x27: "'" -}; - -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(""); -} - -function validateCSSFont(cssFontInfo) { - const DEFAULT_CSS_FONT_OBLIQUE = "14"; - const DEFAULT_CSS_FONT_WEIGHT = "400"; - const CSS_FONT_WEIGHT_VALUES = new Set(["100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "normal", "bold", "bolder", "lighter"]); - const { - fontFamily, - fontWeight, - italicAngle - } = cssFontInfo; - - if (/^".*"$/.test(fontFamily)) { - if (/[^\\]"/.test(fontFamily.slice(1, fontFamily.length - 1))) { - (0, _util.warn)(`XFA - FontFamily contains some unescaped ": ${fontFamily}.`); - return false; - } - } else if (/^'.*'$/.test(fontFamily)) { - if (/[^\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) { - (0, _util.warn)(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`); - return false; - } - } else { - for (const ident of fontFamily.split(/[ \t]+/)) { - if (/^(\d|(-(\d|-)))/.test(ident) || !/^[\w-\\]+$/.test(ident)) { - (0, _util.warn)(`XFA - FontFamily contains some invalid : ${fontFamily}.`); - return false; - } - } - } - - const weight = fontWeight ? fontWeight.toString() : ""; - cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT; - const angle = parseFloat(italicAngle); - cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString(); - return true; -} - -function recoverJsURL(str) { - const URL_OPEN_METHODS = ["app.launchURL", "window.open", "xfa.host.gotoURL"]; - const regex = new RegExp("^\\s*(" + URL_OPEN_METHODS.join("|").split(".").join("\\.") + ")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", "i"); - const jsUrl = regex.exec(str); - - if (jsUrl && jsUrl[2]) { - const url = jsUrl[2]; - let newWindow = false; - - if (jsUrl[3] === "true" && jsUrl[1] === "app.launchURL") { - newWindow = true; - } - - return { - url, - newWindow - }; - } - - return null; -} - -/***/ }), -/* 9 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.BaseStream = void 0; - -var _util = __w_pdfjs_require__(2); - -class BaseStream { - constructor() { - if (this.constructor === BaseStream) { - (0, _util.unreachable)("Cannot initialize BaseStream."); - } - } - - get length() { - (0, _util.unreachable)("Abstract getter `length` accessed"); - } - - get isEmpty() { - (0, _util.unreachable)("Abstract getter `isEmpty` accessed"); - } - - get isDataLoaded() { - return (0, _util.shadow)(this, "isDataLoaded", true); - } - - getByte() { - (0, _util.unreachable)("Abstract method `getByte` called"); - } - - getBytes(length) { - (0, _util.unreachable)("Abstract method `getBytes` called"); - } - - peekByte() { - const peekedByte = this.getByte(); - - if (peekedByte !== -1) { - this.pos--; - } - - return peekedByte; - } - - peekBytes(length) { - const bytes = this.getBytes(length); - this.pos -= bytes.length; - return bytes; - } - - getUint16() { - const b0 = this.getByte(); - const b1 = this.getByte(); - - if (b0 === -1 || b1 === -1) { - return -1; - } - - return (b0 << 8) + b1; - } - - getInt32() { - const b0 = this.getByte(); - const b1 = this.getByte(); - const b2 = this.getByte(); - const b3 = this.getByte(); - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; - } - - getByteRange(begin, end) { - (0, _util.unreachable)("Abstract method `getByteRange` called"); - } - - getString(length) { - return (0, _util.bytesToString)(this.getBytes(length)); - } - - skip(n) { - this.pos += n || 1; - } - - reset() { - (0, _util.unreachable)("Abstract method `reset` called"); - } - - moveStart() { - (0, _util.unreachable)("Abstract method `moveStart` called"); - } - - makeSubStream(start, length, dict = null) { - (0, _util.unreachable)("Abstract method `makeSubStream` called"); - } - - getBaseStreams() { - return null; - } - -} - -exports.BaseStream = BaseStream; - -/***/ }), -/* 10 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.StringStream = exports.Stream = exports.NullStream = void 0; - -var _base_stream = __w_pdfjs_require__(9); - -var _util = __w_pdfjs_require__(2); - -class Stream extends _base_stream.BaseStream { - constructor(arrayBuffer, start, length, dict) { - super(); - this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer); - this.start = start || 0; - this.pos = this.start; - this.end = start + length || this.bytes.length; - this.dict = dict; - } - - get length() { - return this.end - this.start; - } - - get isEmpty() { - return this.length === 0; - } - - getByte() { - if (this.pos >= this.end) { - return -1; - } - - return this.bytes[this.pos++]; - } - - getBytes(length) { - const bytes = this.bytes; - const pos = this.pos; - const strEnd = this.end; - - if (!length) { - return bytes.subarray(pos, strEnd); - } - - let end = pos + length; - - if (end > strEnd) { - end = strEnd; - } - - this.pos = end; - return bytes.subarray(pos, end); - } - - getByteRange(begin, end) { - if (begin < 0) { - begin = 0; - } - - if (end > this.end) { - end = this.end; - } - - return this.bytes.subarray(begin, end); - } - - reset() { - this.pos = this.start; - } - - moveStart() { - this.start = this.pos; - } - - makeSubStream(start, length, dict = null) { - return new Stream(this.bytes.buffer, start, length, dict); - } - -} - -exports.Stream = Stream; - -class StringStream extends Stream { - constructor(str) { - super((0, _util.stringToBytes)(str)); - } - -} - -exports.StringStream = StringStream; - -class NullStream extends Stream { - constructor() { - super(new Uint8Array(0)); - } - -} - -exports.NullStream = NullStream; - -/***/ }), -/* 11 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Page = exports.PDFDocument = void 0; - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -var _primitives = __w_pdfjs_require__(5); - -var _xfa_fonts = __w_pdfjs_require__(12); - -var _annotation = __w_pdfjs_require__(22); - -var _base_stream = __w_pdfjs_require__(9); - -var _crypto = __w_pdfjs_require__(74); - -var _catalog = __w_pdfjs_require__(65); - -var _cleanup_helper = __w_pdfjs_require__(67); - -var _dataset_reader = __w_pdfjs_require__(100); - -var _parser = __w_pdfjs_require__(27); - -var _stream = __w_pdfjs_require__(10); - -var _object_loader = __w_pdfjs_require__(72); - -var _operator_list = __w_pdfjs_require__(62); - -var _evaluator = __w_pdfjs_require__(25); - -var _decode_stream = __w_pdfjs_require__(29); - -var _struct_tree = __w_pdfjs_require__(71); - -var _factory = __w_pdfjs_require__(76); - -var _xref = __w_pdfjs_require__(101); - -const DEFAULT_USER_UNIT = 1.0; -const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; - -class Page { - constructor({ - pdfManager, - xref, - pageIndex, - pageDict, - ref, - globalIdFactory, - fontCache, - builtInCMapCache, - standardFontDataCache, - globalImageCache, - nonBlendModesSet, - xfaFactory - }) { - this.pdfManager = pdfManager; - this.pageIndex = pageIndex; - this.pageDict = pageDict; - this.xref = xref; - this.ref = ref; - this.fontCache = fontCache; - this.builtInCMapCache = builtInCMapCache; - this.standardFontDataCache = standardFontDataCache; - this.globalImageCache = globalImageCache; - this.nonBlendModesSet = nonBlendModesSet; - this.evaluatorOptions = pdfManager.evaluatorOptions; - this.resourcesPromise = null; - this.xfaFactory = xfaFactory; - const idCounters = { - obj: 0 - }; - this._localIdFactory = class extends globalIdFactory { - static createObjId() { - return `p${pageIndex}_${++idCounters.obj}`; - } - - static getPageObjId() { - return `page${ref.toString()}`; - } - - }; - } - - _getInheritableProperty(key, getArray = false) { - const value = (0, _core_utils.getInheritableProperty)({ - dict: this.pageDict, - key, - getArray, - stopWhenFound: false - }); - - if (!Array.isArray(value)) { - return value; - } - - if (value.length === 1 || !(value[0] instanceof _primitives.Dict)) { - return value[0]; - } - - return _primitives.Dict.merge({ - xref: this.xref, - dictArray: value - }); - } - - get content() { - return this.pageDict.getArray("Contents"); - } - - get resources() { - return (0, _util.shadow)(this, "resources", this._getInheritableProperty("Resources") || _primitives.Dict.empty); - } - - _getBoundingBox(name) { - if (this.xfaData) { - return this.xfaData.bbox; - } - - const box = this._getInheritableProperty(name, true); - - if (Array.isArray(box) && box.length === 4) { - if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) { - return box; - } - - (0, _util.warn)(`Empty /${name} entry.`); - } - - return null; - } - - get mediaBox() { - return (0, _util.shadow)(this, "mediaBox", this._getBoundingBox("MediaBox") || LETTER_SIZE_MEDIABOX); - } - - get cropBox() { - return (0, _util.shadow)(this, "cropBox", this._getBoundingBox("CropBox") || this.mediaBox); - } - - get userUnit() { - let obj = this.pageDict.get("UserUnit"); - - if (typeof obj !== "number" || obj <= 0) { - obj = DEFAULT_USER_UNIT; - } - - return (0, _util.shadow)(this, "userUnit", obj); - } - - get view() { - const { - cropBox, - mediaBox - } = this; - let view; - - if (cropBox === mediaBox || (0, _util.isArrayEqual)(cropBox, mediaBox)) { - view = mediaBox; - } else { - const box = _util.Util.intersect(cropBox, mediaBox); - - if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) { - view = box; - } else { - (0, _util.warn)("Empty /CropBox and /MediaBox intersection."); - } - } - - return (0, _util.shadow)(this, "view", view || mediaBox); - } - - get rotate() { - let rotate = this._getInheritableProperty("Rotate") || 0; - - if (rotate % 90 !== 0) { - rotate = 0; - } else if (rotate >= 360) { - rotate %= 360; - } else if (rotate < 0) { - rotate = (rotate % 360 + 360) % 360; - } - - return (0, _util.shadow)(this, "rotate", rotate); - } - - _onSubStreamError(handler, reason, objId) { - if (this.evaluatorOptions.ignoreErrors) { - handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorContentSubStream - }); - (0, _util.warn)(`getContentStream - ignoring sub-stream (${objId}): "${reason}".`); - return; - } - - throw reason; - } - - getContentStream(handler) { - return this.pdfManager.ensure(this, "content").then(content => { - if (content instanceof _base_stream.BaseStream) { - return content; - } - - if (Array.isArray(content)) { - return new _decode_stream.StreamsSequenceStream(content, this._onSubStreamError.bind(this, handler)); - } - - return new _stream.NullStream(); - }); - } - - get xfaData() { - return (0, _util.shadow)(this, "xfaData", this.xfaFactory ? { - bbox: this.xfaFactory.getBoundingBox(this.pageIndex) - } : null); - } - - save(handler, task, annotationStorage) { - const partialEvaluator = new _evaluator.PartialEvaluator({ - xref: this.xref, - handler, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - options: this.evaluatorOptions - }); - return this._parsedAnnotations.then(function (annotations) { - const newRefsPromises = []; - - for (const annotation of annotations) { - if (!annotation.mustBePrinted(annotationStorage)) { - continue; - } - - newRefsPromises.push(annotation.save(partialEvaluator, task, annotationStorage).catch(function (reason) { - (0, _util.warn)("save - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); - return null; - })); - } - - return Promise.all(newRefsPromises); - }); - } - - loadResources(keys) { - if (!this.resourcesPromise) { - this.resourcesPromise = this.pdfManager.ensure(this, "resources"); - } - - return this.resourcesPromise.then(() => { - const objectLoader = new _object_loader.ObjectLoader(this.resources, keys, this.xref); - return objectLoader.load(); - }); - } - - getOperatorList({ - handler, - sink, - task, - intent, - cacheKey, - annotationStorage = null - }) { - const contentStreamPromise = this.getContentStream(handler); - const resourcesPromise = this.loadResources(["ColorSpace", "ExtGState", "Font", "Pattern", "Properties", "Shading", "XObject"]); - const partialEvaluator = new _evaluator.PartialEvaluator({ - xref: this.xref, - handler, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - options: this.evaluatorOptions - }); - const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); - const pageListPromise = dataPromises.then(([contentStream]) => { - const opList = new _operator_list.OperatorList(intent, sink); - handler.send("StartRenderPage", { - transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet), - pageIndex: this.pageIndex, - cacheKey - }); - return partialEvaluator.getOperatorList({ - stream: contentStream, - task, - resources: this.resources, - operatorList: opList - }).then(function () { - return opList; - }); - }); - return Promise.all([pageListPromise, this._parsedAnnotations]).then(function ([pageOpList, annotations]) { - if (annotations.length === 0 || intent & _util.RenderingIntentFlag.ANNOTATIONS_DISABLE) { - pageOpList.flush(true); - return { - length: pageOpList.totalLength - }; - } - - const renderForms = !!(intent & _util.RenderingIntentFlag.ANNOTATIONS_FORMS), - intentAny = !!(intent & _util.RenderingIntentFlag.ANY), - intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY), - intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT); - const opListPromises = []; - - for (const annotation of annotations) { - if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage) || intentPrint && annotation.mustBePrinted(annotationStorage)) { - opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, renderForms, annotationStorage).catch(function (reason) { - (0, _util.warn)("getOperatorList - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); - return null; - })); - } - } - - return Promise.all(opListPromises).then(function (opLists) { - pageOpList.addOp(_util.OPS.beginAnnotations, []); - - for (const opList of opLists) { - pageOpList.addOpList(opList); - } - - pageOpList.addOp(_util.OPS.endAnnotations, []); - pageOpList.flush(true); - return { - length: pageOpList.totalLength - }; - }); - }); - } - - extractTextContent({ - handler, - task, - includeMarkedContent, - sink, - combineTextItems - }) { - const contentStreamPromise = this.getContentStream(handler); - const resourcesPromise = this.loadResources(["ExtGState", "Font", "Properties", "XObject"]); - const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); - return dataPromises.then(([contentStream]) => { - const partialEvaluator = new _evaluator.PartialEvaluator({ - xref: this.xref, - handler, - pageIndex: this.pageIndex, - idFactory: this._localIdFactory, - fontCache: this.fontCache, - builtInCMapCache: this.builtInCMapCache, - standardFontDataCache: this.standardFontDataCache, - globalImageCache: this.globalImageCache, - options: this.evaluatorOptions - }); - return partialEvaluator.getTextContent({ - stream: contentStream, - task, - resources: this.resources, - includeMarkedContent, - combineTextItems, - sink, - viewBox: this.view - }); - }); - } - - async getStructTree() { - const structTreeRoot = await this.pdfManager.ensureCatalog("structTreeRoot"); - - if (!structTreeRoot) { - return null; - } - - const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [structTreeRoot]); - return structTree.serializable; - } - - _parseStructTree(structTreeRoot) { - const tree = new _struct_tree.StructTreePage(structTreeRoot, this.pageDict); - tree.parse(); - return tree; - } - - getAnnotationsData(intent) { - return this._parsedAnnotations.then(function (annotations) { - const annotationsData = []; - - if (annotations.length === 0) { - return annotationsData; - } - - const intentAny = !!(intent & _util.RenderingIntentFlag.ANY), - intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY), - intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT); - - for (const annotation of annotations) { - if (intentAny || intentDisplay && annotation.viewable || intentPrint && annotation.printable) { - annotationsData.push(annotation.data); - } - } - - return annotationsData; - }); - } - - get annotations() { - const annots = this._getInheritableProperty("Annots"); - - return (0, _util.shadow)(this, "annotations", Array.isArray(annots) ? annots : []); - } - - get _parsedAnnotations() { - const parsedAnnotations = this.pdfManager.ensure(this, "annotations").then(() => { - const annotationPromises = []; - - for (const annotationRef of this.annotations) { - annotationPromises.push(_annotation.AnnotationFactory.create(this.xref, annotationRef, this.pdfManager, this._localIdFactory, false).catch(function (reason) { - (0, _util.warn)(`_parsedAnnotations: "${reason}".`); - return null; - })); - } - - return Promise.all(annotationPromises).then(function (annotations) { - return annotations.filter(annotation => !!annotation); - }); - }); - 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; -const PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]); -const STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]); -const ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]); -const FINGERPRINT_FIRST_BYTES = 1024; -const EMPTY_FINGERPRINT = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -const PDF_HEADER_VERSION_REGEXP = /^[1-9]\.\d$/; - -function find(stream, signature, limit = 1024, backwards = false) { - const signatureLength = signature.length; - const scanBytes = stream.peekBytes(limit); - const scanLength = scanBytes.length - signatureLength; - - if (scanLength <= 0) { - return false; - } - - if (backwards) { - const signatureEnd = signatureLength - 1; - let pos = scanBytes.length - 1; - - while (pos >= signatureEnd) { - let j = 0; - - while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) { - j++; - } - - if (j >= signatureLength) { - stream.pos += pos - signatureEnd; - return true; - } - - pos--; - } - } else { - let pos = 0; - - while (pos <= scanLength) { - let j = 0; - - while (j < signatureLength && scanBytes[pos + j] === signature[j]) { - j++; - } - - if (j >= signatureLength) { - stream.pos += pos; - return true; - } - - pos++; - } - } - - return false; -} - -class PDFDocument { - constructor(pdfManager, stream) { - if (stream.length <= 0) { - throw new _util.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes."); - } - - this.pdfManager = pdfManager; - this.stream = stream; - this.xref = new _xref.XRef(stream, pdfManager); - this._pagePromises = new Map(); - this._version = null; - const idCounters = { - font: 0 - }; - this._globalIdFactory = class { - static getDocId() { - return `g_${pdfManager.docId}`; - } - - static createFontId() { - return `f${++idCounters.font}`; - } - - static createObjId() { - (0, _util.unreachable)("Abstract method `createObjId` called."); - } - - static getPageObjId() { - (0, _util.unreachable)("Abstract method `getPageObjId` called."); - } - - }; - } - - parse(recoveryMode) { - this.xref.parse(recoveryMode); - this.catalog = new _catalog.Catalog(this.pdfManager, this.xref); - - if (this.catalog.version) { - this._version = this.catalog.version; - } - } - - get linearization() { - let linearization = null; - - try { - linearization = _parser.Linearization.create(this.stream); - } catch (err) { - if (err instanceof _core_utils.MissingDataException) { - throw err; - } - - (0, _util.info)(err); - } - - return (0, _util.shadow)(this, "linearization", linearization); - } - - get startXRef() { - const stream = this.stream; - let startXRef = 0; - - if (this.linearization) { - stream.reset(); - - if (find(stream, ENDOBJ_SIGNATURE)) { - startXRef = stream.pos + 6 - stream.start; - } - } else { - const step = 1024; - const startXRefLength = STARTXREF_SIGNATURE.length; - let found = false, - pos = stream.end; - - while (!found && pos > 0) { - pos -= step - startXRefLength; - - if (pos < 0) { - pos = 0; - } - - stream.pos = pos; - found = find(stream, STARTXREF_SIGNATURE, step, true); - } - - if (found) { - stream.skip(9); - let ch; - - do { - ch = stream.getByte(); - } while ((0, _core_utils.isWhiteSpace)(ch)); - - let str = ""; - - while (ch >= 0x20 && ch <= 0x39) { - str += String.fromCharCode(ch); - ch = stream.getByte(); - } - - startXRef = parseInt(str, 10); - - if (isNaN(startXRef)) { - startXRef = 0; - } - } - } - - return (0, _util.shadow)(this, "startXRef", startXRef); - } - - checkHeader() { - const stream = this.stream; - stream.reset(); - - if (!find(stream, PDF_HEADER_SIGNATURE)) { - return; - } - - stream.moveStart(); - const MAX_PDF_VERSION_LENGTH = 12; - let version = "", - ch; - - while ((ch = stream.getByte()) > 0x20) { - if (version.length >= MAX_PDF_VERSION_LENGTH) { - break; - } - - version += String.fromCharCode(ch); - } - - if (!this._version) { - this._version = version.substring(5); - } - } - - parseStartXRef() { - this.xref.setStartXRef(this.startXRef); - } - - get numPages() { - let num = 0; - - if (this.catalog.hasActualNumPages) { - num = this.catalog.numPages; - } else if (this.xfaFactory) { - num = this.xfaFactory.getNumPages(); - } else if (this.linearization) { - num = this.linearization.numPages; - } else { - num = this.catalog.numPages; - } - - return (0, _util.shadow)(this, "numPages", num); - } - - _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"); - return false; - } - - return this._hasOnlyDocumentSignatures(field.get("Kids"), recursionDepth); - } - - const isSignature = (0, _primitives.isName)(field.get("FT"), "Sig"); - const rectangle = field.get("Rect"); - const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0); - return isSignature && isInvisible; - }); - } - - get _xfaStreams() { - const acroForm = this.catalog.acroForm; - - if (!acroForm) { - return null; - } - - const xfa = acroForm.get("XFA"); - const entries = { - "xdp:xdp": "", - template: "", - datasets: "", - config: "", - connectionSet: "", - localeSet: "", - stylesheet: "", - "/xdp:xdp": "" - }; - - if (xfa instanceof _base_stream.BaseStream && !xfa.isEmpty) { - entries["xdp:xdp"] = xfa; - return entries; - } - - if (!Array.isArray(xfa) || xfa.length === 0) { - return null; - } - - for (let i = 0, ii = xfa.length; i < ii; i += 2) { - let name; - - if (i === 0) { - name = "xdp:xdp"; - } else if (i === ii - 2) { - name = "/xdp:xdp"; - } else { - name = xfa[i]; - } - - if (!entries.hasOwnProperty(name)) { - continue; - } - - const data = this.xref.fetchIfRef(xfa[i + 1]); - - if (!(data instanceof _base_stream.BaseStream) || data.isEmpty) { - continue; - } - - entries[name] = data; - } - - return entries; - } - - get xfaDatasets() { - const streams = this._xfaStreams; - - if (!streams) { - return (0, _util.shadow)(this, "xfaDatasets", null); - } - - for (const key of ["datasets", "xdp:xdp"]) { - const stream = streams[key]; - - if (!stream) { - continue; - } - - try { - const str = (0, _util.stringToUTF8String)(stream.getString()); - const data = { - [key]: str - }; - return (0, _util.shadow)(this, "xfaDatasets", new _dataset_reader.DatasetReader(data)); - } catch (_) { - (0, _util.warn)("XFA - Invalid utf-8 string."); - break; - } - } - - return (0, _util.shadow)(this, "xfaDatasets", null); - } - - get xfaData() { - const streams = this._xfaStreams; - - if (!streams) { - return null; - } - - const data = Object.create(null); - - for (const [key, stream] of Object.entries(streams)) { - if (!stream) { - continue; - } - - try { - data[key] = (0, _util.stringToUTF8String)(stream.getString()); - } catch (_) { - (0, _util.warn)("XFA - Invalid utf-8 string."); - return null; - } - } - - return data; - } - - get xfaFactory() { - let data; - - if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) { - data = this.xfaData; - } - - return (0, _util.shadow)(this, "xfaFactory", data ? new _factory.XFAFactory(data) : null); - } - - get isPureXfa() { - return this.xfaFactory ? this.xfaFactory.isValid() : false; - } - - get htmlForXfa() { - return this.xfaFactory ? this.xfaFactory.getPages() : null; - } - - async loadXfaImages() { - const xfaImagesDict = await this.pdfManager.ensureCatalog("xfaImages"); - - if (!xfaImagesDict) { - return; - } - - const keys = xfaImagesDict.getKeys(); - const objectLoader = new _object_loader.ObjectLoader(xfaImagesDict, keys, this.xref); - await objectLoader.load(); - const xfaImages = new Map(); - - for (const key of keys) { - const stream = xfaImagesDict.get(key); - - if (stream instanceof _base_stream.BaseStream) { - xfaImages.set(key, stream.getBytes()); - } - } - - this.xfaFactory.setImages(xfaImages); - } - - async loadXfaFonts(handler, task) { - const acroForm = await this.pdfManager.ensureCatalog("acroForm"); - - if (!acroForm) { - return; - } - - const resources = await acroForm.getAsync("DR"); - - if (!(resources instanceof _primitives.Dict)) { - return; - } - - const objectLoader = new _object_loader.ObjectLoader(resources, ["Font"], this.xref); - await objectLoader.load(); - const fontRes = resources.get("Font"); - - if (!(fontRes instanceof _primitives.Dict)) { - return; - } - - const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions); - options.useSystemFonts = false; - const partialEvaluator = new _evaluator.PartialEvaluator({ - xref: this.xref, - handler, - pageIndex: -1, - idFactory: this._globalIdFactory, - fontCache: this.catalog.fontCache, - builtInCMapCache: this.catalog.builtInCMapCache, - standardFontDataCache: this.catalog.standardFontDataCache, - options - }); - const operatorList = new _operator_list.OperatorList(); - const pdfFonts = []; - const initialState = { - get font() { - return pdfFonts[pdfFonts.length - 1]; - }, - - set font(font) { - pdfFonts.push(font); - }, - - clone() { - return this; - } - - }; - const fonts = new Map(); - fontRes.forEach((fontName, font) => { - fonts.set(fontName, font); - }); - const promises = []; - - for (const [fontName, font] of fonts) { - const descriptor = font.get("FontDescriptor"); - - if (!(descriptor instanceof _primitives.Dict)) { - continue; - } - - let fontFamily = descriptor.get("FontFamily"); - fontFamily = fontFamily.replace(/[ ]+(\d)/g, "$1"); - const fontWeight = descriptor.get("FontWeight"); - const italicAngle = -descriptor.get("ItalicAngle"); - const cssFontInfo = { - fontFamily, - fontWeight, - italicAngle - }; - - if (!(0, _core_utils.validateCSSFont)(cssFontInfo)) { - continue; - } - - promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(fontName), 1], null, operatorList, task, initialState, null, cssFontInfo).catch(function (reason) { - (0, _util.warn)(`loadXfaFonts: "${reason}".`); - return null; - })); - } - - await Promise.all(promises); - const missingFonts = this.xfaFactory.setFonts(pdfFonts); - - if (!missingFonts) { - return; - } - - options.ignoreErrors = true; - promises.length = 0; - pdfFonts.length = 0; - const reallyMissingFonts = new Set(); - - for (const missing of missingFonts) { - if (!(0, _xfa_fonts.getXfaFontName)(`${missing}-Regular`)) { - reallyMissingFonts.add(missing); - } - } - - if (reallyMissingFonts.size) { - missingFonts.push("PdfJS-Fallback"); - } - - for (const missing of missingFonts) { - if (reallyMissingFonts.has(missing)) { - continue; - } - - for (const fontInfo of [{ - name: "Regular", - fontWeight: 400, - italicAngle: 0 - }, { - name: "Bold", - fontWeight: 700, - italicAngle: 0 - }, { - name: "Italic", - fontWeight: 400, - italicAngle: 12 - }, { - name: "BoldItalic", - fontWeight: 700, - italicAngle: 12 - }]) { - const name = `${missing}-${fontInfo.name}`; - const dict = (0, _xfa_fonts.getXfaFontDict)(name); - promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(name), 1], null, operatorList, task, initialState, dict, { - fontFamily: missing, - fontWeight: fontInfo.fontWeight, - italicAngle: fontInfo.italicAngle - }).catch(function (reason) { - (0, _util.warn)(`loadXfaFonts: "${reason}".`); - return null; - })); - } - } - - await Promise.all(promises); - this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts); - } - - async serializeXfaData(annotationStorage) { - return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null; - } - - get formInfo() { - const formInfo = { - hasFields: false, - hasAcroForm: false, - hasXfa: false, - hasSignatures: false - }; - const acroForm = this.catalog.acroForm; - - if (!acroForm) { - return (0, _util.shadow)(this, "formInfo", formInfo); - } - - try { - 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 || xfa instanceof _base_stream.BaseStream && !xfa.isEmpty; - const sigFlags = acroForm.get("SigFlags"); - const hasSignatures = !!(sigFlags & 0x1); - - const hasOnlyDocumentSignatures = hasSignatures && this._hasOnlyDocumentSignatures(fields); - - formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures; - formInfo.hasSignatures = hasSignatures; - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)(`Cannot fetch form information: "${ex}".`); - } - - return (0, _util.shadow)(this, "formInfo", formInfo); - } - - get documentInfo() { - let version = this._version; - - if (typeof version !== "string" || !PDF_HEADER_VERSION_REGEXP.test(version)) { - (0, _util.warn)(`Invalid PDF header version number: ${version}`); - version = null; - } - - const docInfo = { - PDFFormatVersion: version, - Language: this.catalog.lang, - EncryptFilterName: this.xref.encrypt ? this.xref.encrypt.filterName : null, - IsLinearized: !!this.linearization, - IsAcroFormPresent: this.formInfo.hasAcroForm, - IsXFAPresent: this.formInfo.hasXfa, - IsCollectionPresent: !!this.catalog.collection, - IsSignaturesPresent: this.formInfo.hasSignatures - }; - let infoDict; - - try { - infoDict = this.xref.trailer.get("Info"); - } catch (err) { - if (err instanceof _core_utils.MissingDataException) { - throw err; - } - - (0, _util.info)("The document information dictionary is invalid."); - } - - if (!(infoDict instanceof _primitives.Dict)) { - return (0, _util.shadow)(this, "documentInfo", docInfo); - } - - for (const key of infoDict.getKeys()) { - const value = infoDict.get(key); - - switch (key) { - case "Title": - case "Author": - case "Subject": - case "Keywords": - case "Creator": - case "Producer": - case "CreationDate": - case "ModDate": - if (typeof value === "string") { - docInfo[key] = (0, _util.stringToPDFString)(value); - continue; - } - - break; - - case "Trapped": - if (value instanceof _primitives.Name) { - docInfo[key] = value; - continue; - } - - break; - - default: - let customValue; - - switch (typeof value) { - case "string": - customValue = (0, _util.stringToPDFString)(value); - break; - - case "number": - case "boolean": - customValue = value; - break; - - default: - if (value instanceof _primitives.Name) { - customValue = value; - } - - break; - } - - if (customValue === undefined) { - (0, _util.warn)(`Bad value, for custom key "${key}", in Info: ${value}.`); - continue; - } - - if (!docInfo.Custom) { - docInfo.Custom = Object.create(null); - } - - docInfo.Custom[key] = customValue; - continue; - } - - (0, _util.warn)(`Bad value, for key "${key}", in Info: ${value}.`); - } - - return (0, _util.shadow)(this, "documentInfo", docInfo); - } - - get fingerprints() { - function validate(data) { - return typeof data === "string" && data.length > 0 && data !== EMPTY_FINGERPRINT; - } - - function hexString(hash) { - const buf = []; - - for (let i = 0, ii = hash.length; i < ii; i++) { - const hex = hash[i].toString(16); - buf.push(hex.padStart(2, "0")); - } - - return buf.join(""); - } - - const idArray = this.xref.trailer.get("ID"); - let hashOriginal, hashModified; - - if (Array.isArray(idArray) && validate(idArray[0])) { - hashOriginal = (0, _util.stringToBytes)(idArray[0]); - - if (idArray[1] !== idArray[0] && validate(idArray[1])) { - hashModified = (0, _util.stringToBytes)(idArray[1]); - } - } else { - hashOriginal = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); - } - - return (0, _util.shadow)(this, "fingerprints", [hexString(hashOriginal), hashModified ? hexString(hashModified) : null]); - } - - async _getLinearizationPage(pageIndex) { - const { - catalog, - linearization, - xref - } = this; - - const ref = _primitives.Ref.get(linearization.objectNumberFirst, 0); - - try { - const obj = await xref.fetchAsync(ref); - - if (obj instanceof _primitives.Dict) { - let type = obj.getRaw("Type"); - - if (type instanceof _primitives.Ref) { - type = await xref.fetchAsync(type); - } - - if ((0, _primitives.isName)(type, "Page") || !obj.has("Type") && !obj.has("Kids")) { - if (!catalog.pageKidsCountCache.has(ref)) { - catalog.pageKidsCountCache.put(ref, 1); - } - - if (!catalog.pageIndexCache.has(ref)) { - catalog.pageIndexCache.put(ref, 0); - } - - return [obj, ref]; - } - } - - throw new _util.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary."); - } catch (reason) { - (0, _util.warn)(`_getLinearizationPage: "${reason.message}".`); - return catalog.getPageDict(pageIndex); - } - } - - getPage(pageIndex) { - const cachedPromise = this._pagePromises.get(pageIndex); - - if (cachedPromise) { - return cachedPromise; - } - - const { - catalog, - linearization, - xfaFactory - } = this; - let promise; - - if (xfaFactory) { - promise = Promise.resolve([_primitives.Dict.empty, null]); - } else if (linearization && linearization.pageFirst === pageIndex) { - promise = this._getLinearizationPage(pageIndex); - } else { - promise = catalog.getPageDict(pageIndex); - } - - promise = promise.then(([pageDict, ref]) => { - return new Page({ - pdfManager: this.pdfManager, - xref: this.xref, - pageIndex, - pageDict, - ref, - globalIdFactory: this._globalIdFactory, - fontCache: catalog.fontCache, - builtInCMapCache: catalog.builtInCMapCache, - standardFontDataCache: catalog.standardFontDataCache, - globalImageCache: catalog.globalImageCache, - nonBlendModesSet: catalog.nonBlendModesSet, - xfaFactory - }); - }); - - this._pagePromises.set(pageIndex, promise); - - return promise; - } - - async checkFirstPage(recoveryMode = false) { - if (recoveryMode) { - return; - } - - try { - await this.getPage(0); - } catch (reason) { - if (reason instanceof _core_utils.XRefEntryException) { - this._pagePromises.delete(0); - - await this.cleanup(); - throw new _core_utils.XRefParseException(); - } - } - } - - async checkLastPage(recoveryMode = false) { - const { - catalog, - pdfManager - } = this; - catalog.setActualNumPages(); - let numPages; - - try { - await Promise.all([pdfManager.ensureDoc("xfaFactory"), pdfManager.ensureDoc("linearization"), pdfManager.ensureCatalog("numPages")]); - - if (this.xfaFactory) { - return; - } else if (this.linearization) { - numPages = this.linearization.numPages; - } else { - numPages = catalog.numPages; - } - - if (!Number.isInteger(numPages)) { - throw new _util.FormatError("Page count is not an integer."); - } else if (numPages <= 1) { - return; - } - - await this.getPage(numPages - 1); - } catch (reason) { - this._pagePromises.delete(numPages - 1); - - await this.cleanup(); - - if (reason instanceof _core_utils.XRefEntryException && !recoveryMode) { - throw new _core_utils.XRefParseException(); - } - - (0, _util.warn)(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`); - let pagesTree; - - try { - pagesTree = await catalog.getAllPageDicts(recoveryMode); - } catch (reasonAll) { - if (reasonAll instanceof _core_utils.XRefEntryException && !recoveryMode) { - throw new _core_utils.XRefParseException(); - } - - catalog.setActualNumPages(1); - return; - } - - for (const [pageIndex, [pageDict, ref]] of pagesTree) { - let promise; - - if (pageDict instanceof Error) { - promise = Promise.reject(pageDict); - promise.catch(() => {}); - } else { - promise = Promise.resolve(new Page({ - pdfManager, - xref: this.xref, - pageIndex, - pageDict, - ref, - globalIdFactory: this._globalIdFactory, - fontCache: catalog.fontCache, - builtInCMapCache: catalog.builtInCMapCache, - standardFontDataCache: catalog.standardFontDataCache, - globalImageCache: catalog.globalImageCache, - nonBlendModesSet: catalog.nonBlendModesSet, - xfaFactory: null - })); - } - - this._pagePromises.set(pageIndex, promise); - } - - catalog.setActualNumPages(pagesTree.size); - } - } - - fontFallback(id, handler) { - return this.catalog.fontFallback(id, handler); - } - - async cleanup(manuallyTriggered = false) { - return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _cleanup_helper.clearGlobalCaches)(); - } - - _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, true).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() { - const promise = this.pdfManager.ensureDoc("_parseHasJSActions"); - return (0, _util.shadow)(this, "hasJSActions", promise); - } - - async _parseHasJSActions() { - const [catalogJsActions, fieldObjects] = await Promise.all([this.pdfManager.ensureCatalog("jsActions"), this.pdfManager.ensureDoc("fieldObjects")]); - - if (catalogJsActions) { - return true; - } - - if (fieldObjects) { - return Object.values(fieldObjects).some(fieldObject => fieldObject.some(object => object.actions !== null)); - } - - return false; - } - - 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 = []; - - for (const id of calculationOrder) { - if (id instanceof _primitives.Ref) { - ids.push(id.toString()); - } - } - - if (ids.length === 0) { - return (0, _util.shadow)(this, "calculationOrderIds", null); - } - - return (0, _util.shadow)(this, "calculationOrderIds", ids); - } - -} - -exports.PDFDocument = PDFDocument; - -/***/ }), -/* 12 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getXfaFontDict = getXfaFontDict; -exports.getXfaFontName = getXfaFontName; - -var _calibri_factors = __w_pdfjs_require__(13); - -var _primitives = __w_pdfjs_require__(5); - -var _helvetica_factors = __w_pdfjs_require__(14); - -var _liberationsans_widths = __w_pdfjs_require__(15); - -var _myriadpro_factors = __w_pdfjs_require__(16); - -var _segoeui_factors = __w_pdfjs_require__(17); - -var _core_utils = __w_pdfjs_require__(8); - -var _fonts_utils = __w_pdfjs_require__(18); - -const getXFAFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t["MyriadPro-Regular"] = t["PdfJS-Fallback-Regular"] = { - name: "LiberationSans-Regular", - factors: _myriadpro_factors.MyriadProRegularFactors, - baseWidths: _liberationsans_widths.LiberationSansRegularWidths, - baseMapping: _liberationsans_widths.LiberationSansRegularMapping, - metrics: _myriadpro_factors.MyriadProRegularMetrics - }; - t["MyriadPro-Bold"] = t["PdfJS-Fallback-Bold"] = { - name: "LiberationSans-Bold", - factors: _myriadpro_factors.MyriadProBoldFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldMapping, - metrics: _myriadpro_factors.MyriadProBoldMetrics - }; - t["MyriadPro-It"] = t["MyriadPro-Italic"] = t["PdfJS-Fallback-Italic"] = { - name: "LiberationSans-Italic", - factors: _myriadpro_factors.MyriadProItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansItalicMapping, - metrics: _myriadpro_factors.MyriadProItalicMetrics - }; - t["MyriadPro-BoldIt"] = t["MyriadPro-BoldItalic"] = t["PdfJS-Fallback-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - factors: _myriadpro_factors.MyriadProBoldItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, - metrics: _myriadpro_factors.MyriadProBoldItalicMetrics - }; - t.ArialMT = t.Arial = t["Arial-Regular"] = { - name: "LiberationSans-Regular", - baseWidths: _liberationsans_widths.LiberationSansRegularWidths, - baseMapping: _liberationsans_widths.LiberationSansRegularMapping - }; - t["Arial-BoldMT"] = t["Arial-Bold"] = { - name: "LiberationSans-Bold", - baseWidths: _liberationsans_widths.LiberationSansBoldWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldMapping - }; - t["Arial-ItalicMT"] = t["Arial-Italic"] = { - name: "LiberationSans-Italic", - baseWidths: _liberationsans_widths.LiberationSansItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansItalicMapping - }; - t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping - }; - t["Calibri-Regular"] = { - name: "LiberationSans-Regular", - factors: _calibri_factors.CalibriRegularFactors, - baseWidths: _liberationsans_widths.LiberationSansRegularWidths, - baseMapping: _liberationsans_widths.LiberationSansRegularMapping, - metrics: _calibri_factors.CalibriRegularMetrics - }; - t["Calibri-Bold"] = { - name: "LiberationSans-Bold", - factors: _calibri_factors.CalibriBoldFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldMapping, - metrics: _calibri_factors.CalibriBoldMetrics - }; - t["Calibri-Italic"] = { - name: "LiberationSans-Italic", - factors: _calibri_factors.CalibriItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansItalicMapping, - metrics: _calibri_factors.CalibriItalicMetrics - }; - t["Calibri-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - factors: _calibri_factors.CalibriBoldItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, - metrics: _calibri_factors.CalibriBoldItalicMetrics - }; - t["Segoeui-Regular"] = { - name: "LiberationSans-Regular", - factors: _segoeui_factors.SegoeuiRegularFactors, - baseWidths: _liberationsans_widths.LiberationSansRegularWidths, - baseMapping: _liberationsans_widths.LiberationSansRegularMapping, - metrics: _segoeui_factors.SegoeuiRegularMetrics - }; - t["Segoeui-Bold"] = { - name: "LiberationSans-Bold", - factors: _segoeui_factors.SegoeuiBoldFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldMapping, - metrics: _segoeui_factors.SegoeuiBoldMetrics - }; - t["Segoeui-Italic"] = { - name: "LiberationSans-Italic", - factors: _segoeui_factors.SegoeuiItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansItalicMapping, - metrics: _segoeui_factors.SegoeuiItalicMetrics - }; - t["Segoeui-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - factors: _segoeui_factors.SegoeuiBoldItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, - metrics: _segoeui_factors.SegoeuiBoldItalicMetrics - }; - t["Helvetica-Regular"] = t.Helvetica = { - name: "LiberationSans-Regular", - factors: _helvetica_factors.HelveticaRegularFactors, - baseWidths: _liberationsans_widths.LiberationSansRegularWidths, - baseMapping: _liberationsans_widths.LiberationSansRegularMapping, - metrics: _helvetica_factors.HelveticaRegularMetrics - }; - t["Helvetica-Bold"] = { - name: "LiberationSans-Bold", - factors: _helvetica_factors.HelveticaBoldFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldMapping, - metrics: _helvetica_factors.HelveticaBoldMetrics - }; - t["Helvetica-Italic"] = { - name: "LiberationSans-Italic", - factors: _helvetica_factors.HelveticaItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansItalicMapping, - metrics: _helvetica_factors.HelveticaItalicMetrics - }; - t["Helvetica-BoldItalic"] = { - name: "LiberationSans-BoldItalic", - factors: _helvetica_factors.HelveticaBoldItalicFactors, - baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, - baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, - metrics: _helvetica_factors.HelveticaBoldItalicMetrics - }; -}); - -function getXfaFontName(name) { - const fontName = (0, _fonts_utils.normalizeFontName)(name); - const fontMap = getXFAFontMap(); - return fontMap[fontName]; -} - -function getXfaFontWidths(name) { - const info = getXfaFontName(name); - - if (!info) { - return null; - } - - const { - baseWidths, - baseMapping, - factors - } = info; - let rescaledBaseWidths; - - if (!factors) { - rescaledBaseWidths = baseWidths; - } else { - rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]); - } - - let currentCode = -2; - let currentArray; - const newWidths = []; - - for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) { - if (unicode === -1) { - continue; - } - - if (unicode === currentCode + 1) { - currentArray.push(rescaledBaseWidths[glyphIndex]); - currentCode += 1; - } else { - currentCode = unicode; - currentArray = [rescaledBaseWidths[glyphIndex]]; - newWidths.push(unicode, currentArray); - } - } - - return newWidths; -} - -function getXfaFontDict(name) { - const widths = getXfaFontWidths(name); - const dict = new _primitives.Dict(null); - dict.set("BaseFont", _primitives.Name.get(name)); - dict.set("Type", _primitives.Name.get("Font")); - dict.set("Subtype", _primitives.Name.get("CIDFontType2")); - dict.set("Encoding", _primitives.Name.get("Identity-H")); - dict.set("CIDToGIDMap", _primitives.Name.get("Identity")); - dict.set("W", widths); - dict.set("FirstChar", widths[0]); - dict.set("LastChar", widths[widths.length - 2] + widths[widths.length - 1].length - 1); - const descriptor = new _primitives.Dict(null); - dict.set("FontDescriptor", descriptor); - const systemInfo = new _primitives.Dict(null); - systemInfo.set("Ordering", "Identity"); - systemInfo.set("Registry", "Adobe"); - systemInfo.set("Supplement", 0); - dict.set("CIDSystemInfo", systemInfo); - return dict; -} - -/***/ }), -/* 13 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.CalibriRegularMetrics = exports.CalibriRegularFactors = exports.CalibriItalicMetrics = exports.CalibriItalicFactors = exports.CalibriBoldMetrics = exports.CalibriBoldItalicMetrics = exports.CalibriBoldItalicFactors = exports.CalibriBoldFactors = void 0; -const CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.CalibriBoldFactors = CalibriBoldFactors; -const CalibriBoldMetrics = { - lineHeight: 1.2207, - lineGap: 0.2207 -}; -exports.CalibriBoldMetrics = CalibriBoldMetrics; -const CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.CalibriBoldItalicFactors = CalibriBoldItalicFactors; -const CalibriBoldItalicMetrics = { - lineHeight: 1.2207, - lineGap: 0.2207 -}; -exports.CalibriBoldItalicMetrics = CalibriBoldItalicMetrics; -const CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.CalibriItalicFactors = CalibriItalicFactors; -const CalibriItalicMetrics = { - lineHeight: 1.2207, - lineGap: 0.2207 -}; -exports.CalibriItalicMetrics = CalibriItalicMetrics; -const CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.CalibriRegularFactors = CalibriRegularFactors; -const CalibriRegularMetrics = { - lineHeight: 1.2207, - lineGap: 0.2207 -}; -exports.CalibriRegularMetrics = CalibriRegularMetrics; - -/***/ }), -/* 14 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.HelveticaRegularMetrics = exports.HelveticaRegularFactors = exports.HelveticaItalicMetrics = exports.HelveticaItalicFactors = exports.HelveticaBoldMetrics = exports.HelveticaBoldItalicMetrics = exports.HelveticaBoldItalicFactors = exports.HelveticaBoldFactors = void 0; -const HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.HelveticaBoldFactors = HelveticaBoldFactors; -const HelveticaBoldMetrics = { - lineHeight: 1.2, - lineGap: 0.2 -}; -exports.HelveticaBoldMetrics = HelveticaBoldMetrics; -const HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.HelveticaBoldItalicFactors = HelveticaBoldItalicFactors; -const HelveticaBoldItalicMetrics = { - lineHeight: 1.35, - lineGap: 0.2 -}; -exports.HelveticaBoldItalicMetrics = HelveticaBoldItalicMetrics; -const HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.HelveticaItalicFactors = HelveticaItalicFactors; -const HelveticaItalicMetrics = { - lineHeight: 1.35, - lineGap: 0.2 -}; -exports.HelveticaItalicMetrics = HelveticaItalicMetrics; -const HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.HelveticaRegularFactors = HelveticaRegularFactors; -const HelveticaRegularMetrics = { - lineHeight: 1.2, - lineGap: 0.2 -}; -exports.HelveticaRegularMetrics = HelveticaRegularMetrics; - -/***/ }), -/* 15 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.LiberationSansRegularWidths = exports.LiberationSansRegularMapping = exports.LiberationSansItalicWidths = exports.LiberationSansItalicMapping = exports.LiberationSansBoldWidths = exports.LiberationSansBoldMapping = exports.LiberationSansBoldItalicWidths = exports.LiberationSansBoldItalicMapping = void 0; -const LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; -exports.LiberationSansBoldWidths = LiberationSansBoldWidths; -const LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; -exports.LiberationSansBoldMapping = LiberationSansBoldMapping; -const LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; -exports.LiberationSansBoldItalicWidths = LiberationSansBoldItalicWidths; -const LiberationSansBoldItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; -exports.LiberationSansBoldItalicMapping = LiberationSansBoldItalicMapping; -const LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; -exports.LiberationSansItalicWidths = LiberationSansItalicWidths; -const LiberationSansItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; -exports.LiberationSansItalicMapping = LiberationSansItalicMapping; -const LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; -exports.LiberationSansRegularWidths = LiberationSansRegularWidths; -const LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; -exports.LiberationSansRegularMapping = LiberationSansRegularMapping; - -/***/ }), -/* 16 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MyriadProRegularMetrics = exports.MyriadProRegularFactors = exports.MyriadProItalicMetrics = exports.MyriadProItalicFactors = exports.MyriadProBoldMetrics = exports.MyriadProBoldItalicMetrics = exports.MyriadProBoldItalicFactors = exports.MyriadProBoldFactors = void 0; -const MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.MyriadProBoldFactors = MyriadProBoldFactors; -const MyriadProBoldMetrics = { - lineHeight: 1.2, - lineGap: 0.2 -}; -exports.MyriadProBoldMetrics = MyriadProBoldMetrics; -const MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.MyriadProBoldItalicFactors = MyriadProBoldItalicFactors; -const MyriadProBoldItalicMetrics = { - lineHeight: 1.2, - lineGap: 0.2 -}; -exports.MyriadProBoldItalicMetrics = MyriadProBoldItalicMetrics; -const MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.MyriadProItalicFactors = MyriadProItalicFactors; -const MyriadProItalicMetrics = { - lineHeight: 1.2, - lineGap: 0.2 -}; -exports.MyriadProItalicMetrics = MyriadProItalicMetrics; -const MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.MyriadProRegularFactors = MyriadProRegularFactors; -const MyriadProRegularMetrics = { - lineHeight: 1.2, - lineGap: 0.2 -}; -exports.MyriadProRegularMetrics = MyriadProRegularMetrics; - -/***/ }), -/* 17 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SegoeuiRegularMetrics = exports.SegoeuiRegularFactors = exports.SegoeuiItalicMetrics = exports.SegoeuiItalicFactors = exports.SegoeuiBoldMetrics = exports.SegoeuiBoldItalicMetrics = exports.SegoeuiBoldItalicFactors = exports.SegoeuiBoldFactors = void 0; -const SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.SegoeuiBoldFactors = SegoeuiBoldFactors; -const SegoeuiBoldMetrics = { - lineHeight: 1.33008, - lineGap: 0 -}; -exports.SegoeuiBoldMetrics = SegoeuiBoldMetrics; -const SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.SegoeuiBoldItalicFactors = SegoeuiBoldItalicFactors; -const SegoeuiBoldItalicMetrics = { - lineHeight: 1.33008, - lineGap: 0 -}; -exports.SegoeuiBoldItalicMetrics = SegoeuiBoldItalicMetrics; -const SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.SegoeuiItalicFactors = SegoeuiItalicFactors; -const SegoeuiItalicMetrics = { - lineHeight: 1.33008, - lineGap: 0 -}; -exports.SegoeuiItalicMetrics = SegoeuiItalicMetrics; -const SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; -exports.SegoeuiRegularFactors = SegoeuiRegularFactors; -const SegoeuiRegularMetrics = { - lineHeight: 1.33008, - lineGap: 0 -}; -exports.SegoeuiRegularMetrics = SegoeuiRegularMetrics; - -/***/ }), -/* 18 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SEAC_ANALYSIS_ENABLED = exports.MacStandardGlyphOrdering = exports.FontFlags = void 0; -exports.getFontType = getFontType; -exports.normalizeFontName = normalizeFontName; -exports.recoverGlyphName = recoverGlyphName; -exports.type1FontGlyphMapping = type1FontGlyphMapping; - -var _util = __w_pdfjs_require__(2); - -var _encodings = __w_pdfjs_require__(19); - -var _glyphlist = __w_pdfjs_require__(20); - -var _unicode = __w_pdfjs_require__(21); - -const SEAC_ANALYSIS_ENABLED = true; -exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED; -const FontFlags = { - FixedPitch: 1, - Serif: 2, - Symbolic: 4, - Script: 8, - Nonsymbolic: 32, - Italic: 64, - AllCap: 65536, - SmallCap: 131072, - ForceBold: 262144 -}; -exports.FontFlags = FontFlags; -const MacStandardGlyphOrdering = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "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", "grave", "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", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat"]; -exports.MacStandardGlyphOrdering = MacStandardGlyphOrdering; - -function getFontType(type, subtype, isStandardFont = false) { - switch (type) { - case "Type1": - if (isStandardFont) { - return _util.FontType.TYPE1STANDARD; - } - - return subtype === "Type1C" ? _util.FontType.TYPE1C : _util.FontType.TYPE1; - - case "CIDFontType0": - return subtype === "CIDFontType0C" ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0; - - case "OpenType": - return _util.FontType.OPENTYPE; - - case "TrueType": - return _util.FontType.TRUETYPE; - - case "CIDFontType2": - return _util.FontType.CIDFONTTYPE2; - - case "MMType1": - return _util.FontType.MMTYPE1; - - case "Type0": - return _util.FontType.TYPE0; - - default: - return _util.FontType.UNKNOWN; - } -} - -function recoverGlyphName(name, glyphsUnicodeMap) { - if (glyphsUnicodeMap[name] !== undefined) { - return name; - } - - const unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap); - - if (unicode !== -1) { - for (const key in glyphsUnicodeMap) { - if (glyphsUnicodeMap[key] === unicode) { - return key; - } - } - } - - (0, _util.info)("Unable to recover a standard glyph name for: " + name); - return name; -} - -function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { - const charCodeToGlyphId = Object.create(null); - let glyphId, charCode, baseEncoding; - const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); - - if (properties.isInternalFont) { - baseEncoding = builtInEncoding; - - for (charCode = 0; charCode < baseEncoding.length; charCode++) { - glyphId = glyphNames.indexOf(baseEncoding[charCode]); - - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; - } - } - } else if (properties.baseEncodingName) { - baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); - - for (charCode = 0; charCode < baseEncoding.length; charCode++) { - glyphId = glyphNames.indexOf(baseEncoding[charCode]); - - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; - } - } - } else if (isSymbolicFont) { - for (charCode in builtInEncoding) { - charCodeToGlyphId[charCode] = builtInEncoding[charCode]; - } - } else { - baseEncoding = _encodings.StandardEncoding; - - for (charCode = 0; charCode < baseEncoding.length; charCode++) { - glyphId = glyphNames.indexOf(baseEncoding[charCode]); - - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; - } - } - } - - const differences = properties.differences; - let glyphsUnicodeMap; - - if (differences) { - for (charCode in differences) { - const glyphName = differences[charCode]; - glyphId = glyphNames.indexOf(glyphName); - - if (glyphId === -1) { - if (!glyphsUnicodeMap) { - glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - } - - const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); - - if (standardGlyphName !== glyphName) { - glyphId = glyphNames.indexOf(standardGlyphName); - } - } - - if (glyphId >= 0) { - charCodeToGlyphId[charCode] = glyphId; - } else { - charCodeToGlyphId[charCode] = 0; - } - } - } - - return charCodeToGlyphId; -} - -function normalizeFontName(name) { - return name.replace(/[,_]/g, "-").replace(/\s/g, ""); -} - -/***/ }), -/* 19 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0; -exports.getEncoding = getEncoding; -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", "", "", "", ""]; -const MacRomanEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "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", "grave", "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", "", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "space", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron"]; -exports.MacRomanEncoding = MacRomanEncoding; -const StandardEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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", "", "", "", ""]; -exports.StandardEncoding = StandardEncoding; -const WinAnsiEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "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", "grave", "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", "bullet", "Euro", "bullet", "quotesinglbase", "florin", "quotedblbase", "ellipsis", "dagger", "daggerdbl", "circumflex", "perthousand", "Scaron", "guilsinglleft", "OE", "bullet", "Zcaron", "bullet", "bullet", "quoteleft", "quoteright", "quotedblleft", "quotedblright", "bullet", "endash", "emdash", "tilde", "trademark", "scaron", "guilsinglright", "oe", "bullet", "zcaron", "Ydieresis", "space", "exclamdown", "cent", "sterling", "currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guillemotleft", "logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guillemotright", "onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis"]; -exports.WinAnsiEncoding = WinAnsiEncoding; -const SymbolSetEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "universal", "numbersign", "existential", "percent", "ampersand", "suchthat", "parenleft", "parenright", "asteriskmath", "plus", "comma", "minus", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "congruent", "Alpha", "Beta", "Chi", "Delta", "Epsilon", "Phi", "Gamma", "Eta", "Iota", "theta1", "Kappa", "Lambda", "Mu", "Nu", "Omicron", "Pi", "Theta", "Rho", "Sigma", "Tau", "Upsilon", "sigma1", "Omega", "Xi", "Psi", "Zeta", "bracketleft", "therefore", "bracketright", "perpendicular", "underscore", "radicalex", "alpha", "beta", "chi", "delta", "epsilon", "phi", "gamma", "eta", "iota", "phi1", "kappa", "lambda", "mu", "nu", "omicron", "pi", "theta", "rho", "sigma", "tau", "upsilon", "omega1", "omega", "xi", "psi", "zeta", "braceleft", "bar", "braceright", "similar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Euro", "Upsilon1", "minute", "lessequal", "fraction", "infinity", "florin", "club", "diamond", "heart", "spade", "arrowboth", "arrowleft", "arrowup", "arrowright", "arrowdown", "degree", "plusminus", "second", "greaterequal", "multiply", "proportional", "partialdiff", "bullet", "divide", "notequal", "equivalence", "approxequal", "ellipsis", "arrowvertex", "arrowhorizex", "carriagereturn", "aleph", "Ifraktur", "Rfraktur", "weierstrass", "circlemultiply", "circleplus", "emptyset", "intersection", "union", "propersuperset", "reflexsuperset", "notsubset", "propersubset", "reflexsubset", "element", "notelement", "angle", "gradient", "registerserif", "copyrightserif", "trademarkserif", "product", "radical", "dotmath", "logicalnot", "logicaland", "logicalor", "arrowdblboth", "arrowdblleft", "arrowdblup", "arrowdblright", "arrowdbldown", "lozenge", "angleleft", "registersans", "copyrightsans", "trademarksans", "summation", "parenlefttp", "parenleftex", "parenleftbt", "bracketlefttp", "bracketleftex", "bracketleftbt", "bracelefttp", "braceleftmid", "braceleftbt", "braceex", "", "angleright", "integral", "integraltp", "integralex", "integralbt", "parenrighttp", "parenrightex", "parenrightbt", "bracketrighttp", "bracketrightex", "bracketrightbt", "bracerighttp", "bracerightmid", "bracerightbt", ""]; -exports.SymbolSetEncoding = SymbolSetEncoding; -const ZapfDingbatsEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", "a118", "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26", "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66", "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", "a75", "a204", "a76", "a77", "a78", "a79", "a81", "a82", "a83", "a84", "a97", "a98", "a99", "a100", "", "a89", "a90", "a93", "a94", "a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", "a95", "a96", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "a101", "a102", "a103", "a104", "a106", "a107", "a108", "a112", "a111", "a110", "a109", "a120", "a121", "a122", "a123", "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150", "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", "a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", "a168", "a169", "a170", "a171", "a172", "a173", "a162", "a174", "a175", "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", "a200", "a182", "", "a201", "a183", "a184", "a197", "a185", "a194", "a198", "a186", "a195", "a187", "a188", "a189", "a190", "a191", ""]; -exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding; - -function getEncoding(encodingName) { - switch (encodingName) { - case "WinAnsiEncoding": - return WinAnsiEncoding; - - case "StandardEncoding": - return StandardEncoding; - - case "MacRomanEncoding": - return MacRomanEncoding; - - case "SymbolSetEncoding": - return SymbolSetEncoding; - - case "ZapfDingbatsEncoding": - return ZapfDingbatsEncoding; - - case "ExpertEncoding": - return ExpertEncoding; - - case "MacExpertEncoding": - return MacExpertEncoding; - - default: - return null; - } -} - -/***/ }), -/* 20 */ -/***/ ((__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); - -const 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 - ]; -}); -const 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 - ]; -}); - - -/***/ }), -/* 21 */ -/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => { - -__w_pdfjs_require__.r(__webpack_exports__); -/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, { -/* harmony export */ "clearUnicodeCaches": () => (/* binding */ clearUnicodeCaches), -/* harmony export */ "getCharUnicodeCategory": () => (/* binding */ getCharUnicodeCategory), -/* 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); - -const getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) { - t[63721] = 0x00a9; - t[63193] = 0x00a9; - t[63720] = 0x00ae; - t[63194] = 0x00ae; - t[63722] = 0x2122; - t[63195] = 0x2122; - t[63729] = 0x23a7; - t[63730] = 0x23a8; - t[63731] = 0x23a9; - t[63740] = 0x23ab; - t[63741] = 0x23ac; - t[63742] = 0x23ad; - t[63726] = 0x23a1; - t[63727] = 0x23a2; - t[63728] = 0x23a3; - t[63737] = 0x23a4; - t[63738] = 0x23a5; - t[63739] = 0x23a6; - t[63723] = 0x239b; - t[63724] = 0x239c; - t[63725] = 0x239d; - t[63734] = 0x239e; - t[63735] = 0x239f; - t[63736] = 0x23a0; -}); -function mapSpecialUnicodeValues(code) { - if (code >= 0xfff0 && code <= 0xffff) { - return 0; - } else if (code >= 0xf600 && code <= 0xf8ff) { - return getSpecialPUASymbols()[code] || code; - } else if (code === 0x00ad) { - return 0x002d; - } - return code; -} -function getUnicodeForGlyph(name, glyphsUnicodeMap) { - let unicode = glyphsUnicodeMap[name]; - if (unicode !== undefined) { - return unicode; - } - if (!name) { - return -1; - } - if (name[0] === "u") { - const nameLen = name.length; - let hexStr; - if (nameLen === 7 && name[1] === "n" && name[2] === "i") { - hexStr = name.substring(3); - } else if (nameLen >= 5 && nameLen <= 7) { - hexStr = name.substring(1); - } else { - return -1; - } - if (hexStr === hexStr.toUpperCase()) { - unicode = parseInt(hexStr, 16); - if (unicode >= 0) { - return unicode; - } - } - } - return -1; -} -const UnicodeRanges = [ - { - begin: 0x0000, - end: 0x007f - }, - { - begin: 0x0080, - end: 0x00ff - }, - { - begin: 0x0100, - end: 0x017f - }, - { - begin: 0x0180, - end: 0x024f - }, - { - begin: 0x0250, - end: 0x02af - }, - { - begin: 0x02b0, - end: 0x02ff - }, - { - begin: 0x0300, - end: 0x036f - }, - { - begin: 0x0370, - end: 0x03ff - }, - { - begin: 0x2c80, - end: 0x2cff - }, - { - begin: 0x0400, - end: 0x04ff - }, - { - begin: 0x0530, - end: 0x058f - }, - { - begin: 0x0590, - end: 0x05ff - }, - { - begin: 0xa500, - end: 0xa63f - }, - { - begin: 0x0600, - end: 0x06ff - }, - { - begin: 0x07c0, - end: 0x07ff - }, - { - begin: 0x0900, - end: 0x097f - }, - { - begin: 0x0980, - end: 0x09ff - }, - { - begin: 0x0a00, - end: 0x0a7f - }, - { - begin: 0x0a80, - end: 0x0aff - }, - { - begin: 0x0b00, - end: 0x0b7f - }, - { - begin: 0x0b80, - end: 0x0bff - }, - { - begin: 0x0c00, - end: 0x0c7f - }, - { - begin: 0x0c80, - end: 0x0cff - }, - { - begin: 0x0d00, - end: 0x0d7f - }, - { - begin: 0x0e00, - end: 0x0e7f - }, - { - begin: 0x0e80, - end: 0x0eff - }, - { - begin: 0x10a0, - end: 0x10ff - }, - { - begin: 0x1b00, - end: 0x1b7f - }, - { - begin: 0x1100, - end: 0x11ff - }, - { - begin: 0x1e00, - end: 0x1eff - }, - { - begin: 0x1f00, - end: 0x1fff - }, - { - begin: 0x2000, - end: 0x206f - }, - { - begin: 0x2070, - end: 0x209f - }, - { - begin: 0x20a0, - end: 0x20cf - }, - { - begin: 0x20d0, - end: 0x20ff - }, - { - begin: 0x2100, - end: 0x214f - }, - { - begin: 0x2150, - end: 0x218f - }, - { - begin: 0x2190, - end: 0x21ff - }, - { - begin: 0x2200, - end: 0x22ff - }, - { - begin: 0x2300, - end: 0x23ff - }, - { - begin: 0x2400, - end: 0x243f - }, - { - begin: 0x2440, - end: 0x245f - }, - { - begin: 0x2460, - end: 0x24ff - }, - { - begin: 0x2500, - end: 0x257f - }, - { - begin: 0x2580, - end: 0x259f - }, - { - begin: 0x25a0, - end: 0x25ff - }, - { - begin: 0x2600, - end: 0x26ff - }, - { - begin: 0x2700, - end: 0x27bf - }, - { - begin: 0x3000, - end: 0x303f - }, - { - begin: 0x3040, - end: 0x309f - }, - { - begin: 0x30a0, - end: 0x30ff - }, - { - begin: 0x3100, - end: 0x312f - }, - { - begin: 0x3130, - end: 0x318f - }, - { - begin: 0xa840, - end: 0xa87f - }, - { - begin: 0x3200, - end: 0x32ff - }, - { - begin: 0x3300, - end: 0x33ff - }, - { - begin: 0xac00, - end: 0xd7af - }, - { - begin: 0xd800, - end: 0xdfff - }, - { - begin: 0x10900, - end: 0x1091f - }, - { - begin: 0x4e00, - end: 0x9fff - }, - { - begin: 0xe000, - end: 0xf8ff - }, - { - begin: 0x31c0, - end: 0x31ef - }, - { - begin: 0xfb00, - end: 0xfb4f - }, - { - begin: 0xfb50, - end: 0xfdff - }, - { - begin: 0xfe20, - end: 0xfe2f - }, - { - begin: 0xfe10, - end: 0xfe1f - }, - { - begin: 0xfe50, - end: 0xfe6f - }, - { - begin: 0xfe70, - end: 0xfeff - }, - { - begin: 0xff00, - end: 0xffef - }, - { - begin: 0xfff0, - end: 0xffff - }, - { - begin: 0x0f00, - end: 0x0fff - }, - { - begin: 0x0700, - end: 0x074f - }, - { - begin: 0x0780, - end: 0x07bf - }, - { - begin: 0x0d80, - end: 0x0dff - }, - { - begin: 0x1000, - end: 0x109f - }, - { - begin: 0x1200, - end: 0x137f - }, - { - begin: 0x13a0, - end: 0x13ff - }, - { - begin: 0x1400, - end: 0x167f - }, - { - begin: 0x1680, - end: 0x169f - }, - { - begin: 0x16a0, - end: 0x16ff - }, - { - begin: 0x1780, - end: 0x17ff - }, - { - begin: 0x1800, - end: 0x18af - }, - { - begin: 0x2800, - end: 0x28ff - }, - { - begin: 0xa000, - end: 0xa48f - }, - { - begin: 0x1700, - end: 0x171f - }, - { - begin: 0x10300, - end: 0x1032f - }, - { - begin: 0x10330, - end: 0x1034f - }, - { - begin: 0x10400, - end: 0x1044f - }, - { - begin: 0x1d000, - end: 0x1d0ff - }, - { - begin: 0x1d400, - end: 0x1d7ff - }, - { - begin: 0xff000, - end: 0xffffd - }, - { - begin: 0xfe00, - end: 0xfe0f - }, - { - begin: 0xe0000, - end: 0xe007f - }, - { - begin: 0x1900, - end: 0x194f - }, - { - begin: 0x1950, - end: 0x197f - }, - { - begin: 0x1980, - end: 0x19df - }, - { - begin: 0x1a00, - end: 0x1a1f - }, - { - begin: 0x2c00, - end: 0x2c5f - }, - { - begin: 0x2d30, - end: 0x2d7f - }, - { - begin: 0x4dc0, - end: 0x4dff - }, - { - begin: 0xa800, - end: 0xa82f - }, - { - begin: 0x10000, - end: 0x1007f - }, - { - begin: 0x10140, - end: 0x1018f - }, - { - begin: 0x10380, - end: 0x1039f - }, - { - begin: 0x103a0, - end: 0x103df - }, - { - begin: 0x10450, - end: 0x1047f - }, - { - begin: 0x10480, - end: 0x104af - }, - { - begin: 0x10800, - end: 0x1083f - }, - { - begin: 0x10a00, - end: 0x10a5f - }, - { - begin: 0x1d300, - end: 0x1d35f - }, - { - begin: 0x12000, - end: 0x123ff - }, - { - begin: 0x1d360, - end: 0x1d37f - }, - { - begin: 0x1b80, - end: 0x1bbf - }, - { - begin: 0x1c00, - end: 0x1c4f - }, - { - begin: 0x1c50, - end: 0x1c7f - }, - { - begin: 0xa880, - end: 0xa8df - }, - { - begin: 0xa900, - end: 0xa92f - }, - { - begin: 0xa930, - end: 0xa95f - }, - { - begin: 0xaa00, - end: 0xaa5f - }, - { - begin: 0x10190, - end: 0x101cf - }, - { - begin: 0x101d0, - end: 0x101ff - }, - { - begin: 0x102a0, - end: 0x102df - }, - { - begin: 0x1f030, - end: 0x1f09f - } -]; -function getUnicodeRangeFor(value) { - for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) { - const range = UnicodeRanges[i]; - if (value >= range.begin && value < range.end) { - return i; - } - } - return -1; -} -function isRTLRangeFor(value) { - let range = UnicodeRanges[13]; - if (value >= range.begin && value < range.end) { - return true; - } - range = UnicodeRanges[11]; - if (value >= range.begin && value < range.end) { - return true; - } - return false; -} -const 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) { - const charsLength = chars.length; - if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) { - return chars; - } - const buf = []; - for (let ii = charsLength - 1; ii >= 0; ii--) { - buf.push(chars[ii]); - } - return buf.join(""); -} -const SpecialCharRegExp = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"); -const CategoryCache = new Map(); -function getCharUnicodeCategory(char) { - const cachedCategory = CategoryCache.get(char); - if (cachedCategory) { - return cachedCategory; - } - const groups = char.match(SpecialCharRegExp); - const category = { - isWhitespace: !!(groups && groups[1]), - isZeroWidthDiacritic: !!(groups && groups[2]), - isInvisibleFormatMark: !!(groups && groups[3]) - }; - CategoryCache.set(char, category); - return category; -} -function clearUnicodeCaches() { - CategoryCache.clear(); -} - - -/***/ }), -/* 22 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0; -exports.getQuadPoints = getQuadPoints; - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -var _default_appearance = __w_pdfjs_require__(23); - -var _primitives = __w_pdfjs_require__(5); - -var _base_stream = __w_pdfjs_require__(9); - -var _bidi = __w_pdfjs_require__(60); - -var _catalog = __w_pdfjs_require__(65); - -var _colorspace = __w_pdfjs_require__(24); - -var _file_spec = __w_pdfjs_require__(68); - -var _object_loader = __w_pdfjs_require__(72); - -var _operator_list = __w_pdfjs_require__(62); - -var _stream = __w_pdfjs_require__(10); - -var _writer = __w_pdfjs_require__(73); - -var _factory = __w_pdfjs_require__(76); - -const LINE_FACTOR = 1.35; - -class AnnotationFactory { - static create(xref, ref, pdfManager, idFactory, collectFields) { - return Promise.all([pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("baseUrl"), pdfManager.ensureDoc("xfaDatasets"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(([acroForm, baseUrl, xfaDatasets, pageIndex]) => pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields, pageIndex])); - } - - static _create(xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields, pageIndex = -1) { - const dict = xref.fetchIfRef(ref); - - if (!(dict instanceof _primitives.Dict)) { - return undefined; - } - - const id = ref instanceof _primitives.Ref ? ref.toString() : `annot_${idFactory.createObjId()}`; - let subtype = dict.get("Subtype"); - subtype = subtype instanceof _primitives.Name ? subtype.name : null; - const parameters = { - xref, - ref, - dict, - subtype, - id, - pdfManager, - acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty, - xfaDatasets, - collectFields, - pageIndex - }; - - switch (subtype) { - case "Link": - return new LinkAnnotation(parameters); - - case "Text": - return new TextAnnotation(parameters); - - case "Widget": - let fieldType = (0, _core_utils.getInheritableProperty)({ - dict, - key: "FT" - }); - fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null; - - switch (fieldType) { - case "Tx": - return new TextWidgetAnnotation(parameters); - - case "Btn": - return new ButtonWidgetAnnotation(parameters); - - case "Ch": - return new ChoiceWidgetAnnotation(parameters); - - case "Sig": - return new SignatureWidgetAnnotation(parameters); - } - - (0, _util.warn)(`Unimplemented widget field type "${fieldType}", ` + "falling back to base field type."); - return new WidgetAnnotation(parameters); - - case "Popup": - return new PopupAnnotation(parameters); - - case "FreeText": - return new FreeTextAnnotation(parameters); - - case "Line": - return new LineAnnotation(parameters); - - case "Square": - return new SquareAnnotation(parameters); - - case "Circle": - return new CircleAnnotation(parameters); - - case "PolyLine": - return new PolylineAnnotation(parameters); - - case "Polygon": - return new PolygonAnnotation(parameters); - - case "Caret": - return new CaretAnnotation(parameters); - - case "Ink": - return new InkAnnotation(parameters); - - case "Highlight": - return new HighlightAnnotation(parameters); - - case "Underline": - return new UnderlineAnnotation(parameters); - - case "Squiggly": - return new SquigglyAnnotation(parameters); - - case "StrikeOut": - return new StrikeOutAnnotation(parameters); - - case "Stamp": - return new StampAnnotation(parameters); - - case "FileAttachment": - return new FileAttachmentAnnotation(parameters); - - default: - if (!collectFields) { - if (!subtype) { - (0, _util.warn)("Annotation is missing the required /Subtype."); - } else { - (0, _util.warn)(`Unimplemented annotation type "${subtype}", ` + "falling back to base annotation."); - } - } - - return new Annotation(parameters); - } - } - - static async _getPageIndex(xref, ref, pdfManager) { - try { - const annotDict = await xref.fetchIfRefAsync(ref); - - if (!(annotDict instanceof _primitives.Dict)) { - return -1; - } - - const pageRef = annotDict.getRaw("P"); - - if (!(pageRef instanceof _primitives.Ref)) { - return -1; - } - - const pageIndex = await pdfManager.ensureCatalog("getPageIndex", [pageRef]); - return pageIndex; - } catch (ex) { - (0, _util.warn)(`_getPageIndex: "${ex}".`); - return -1; - } - } - -} - -exports.AnnotationFactory = AnnotationFactory; - -function getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) { - if (!Array.isArray(color)) { - return defaultColor; - } - - const rgbColor = defaultColor || new Uint8ClampedArray(3); - - switch (color.length) { - case 0: - return null; - - case 1: - _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0); - - return rgbColor; - - case 3: - _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0); - - return rgbColor; - - case 4: - _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0); - - return rgbColor; - - default: - return defaultColor; - } -} - -function getQuadPoints(dict, rect) { - if (!dict.has("QuadPoints")) { - return null; - } - - const quadPoints = dict.getArray("QuadPoints"); - - if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) { - return null; - } - - const quadPointsLists = []; - - for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) { - quadPointsLists.push([]); - - for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) { - const x = quadPoints[j]; - const y = quadPoints[j + 1]; - - if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) { - return null; - } - - quadPointsLists[i].push({ - x, - y - }); - } - } - - 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) { - const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix); - - if (minX === maxX || minY === maxY) { - return [1, 0, 0, 1, rect[0], rect[1]]; - } - - const xRatio = (rect[2] - rect[0]) / (maxX - minX); - const yRatio = (rect[3] - rect[1]) / (maxY - minY); - return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio]; -} - -class Annotation { - constructor(params) { - const dict = params.dict; - this.setTitle(dict.get("T")); - this.setContents(dict.get("Contents")); - this.setModificationDate(dict.get("M")); - this.setFlags(dict.get("F")); - this.setRectangle(dict.getArray("Rect")); - this.setColor(dict.getArray("C")); - this.setBorderStyle(dict); - this.setAppearance(dict); - this.setBorderAndBackgroundColors(dict.get("MK")); - this._streams = []; - - if (this.appearance) { - this._streams.push(this.appearance); - } - - this.data = { - annotationFlags: this.flags, - borderStyle: this.borderStyle, - color: this.color, - backgroundColor: this.backgroundColor, - borderColor: this.borderColor, - contentsObj: this._contents, - hasAppearance: !!this.appearance, - id: params.id, - modificationDate: this.modificationDate, - rect: this.rectangle, - subtype: params.subtype, - hasOwnCanvas: false - }; - - if (params.collectFields) { - const kids = dict.get("Kids"); - - if (Array.isArray(kids)) { - const kidIds = []; - - for (const kid of kids) { - if (kid instanceof _primitives.Ref) { - kidIds.push(kid.toString()); - } - } - - if (kidIds.length !== 0) { - this.data.kidIds = kidIds; - } - } - - this.data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType); - this.data.fieldName = this._constructFieldName(dict); - this.data.pageIndex = params.pageIndex; - } - - this._fallbackFontDict = null; - } - - _hasFlag(flags, flag) { - return !!(flags & flag); - } - - _isViewable(flags) { - 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); - } - - mustBeViewed(annotationStorage) { - const storageEntry = annotationStorage && annotationStorage.get(this.data.id); - - if (storageEntry && storageEntry.hidden !== undefined) { - return !storageEntry.hidden; - } - - return this.viewable && !this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN); - } - - mustBePrinted(annotationStorage) { - const storageEntry = annotationStorage && annotationStorage.get(this.data.id); - - if (storageEntry && storageEntry.print !== undefined) { - return storageEntry.print; - } - - return this.printable; - } - - get viewable() { - if (this.data.quadPoints === null) { - return false; - } - - if (this.flags === 0) { - return true; - } - - return this._isViewable(this.flags); - } - - get printable() { - if (this.data.quadPoints === null) { - return false; - } - - if (this.flags === 0) { - return false; - } - - return this._isPrintable(this.flags); - } - - _parseStringHelper(data) { - const str = typeof data === "string" ? (0, _util.stringToPDFString)(data) : ""; - const dir = str && (0, _bidi.bidi)(str).dir === "rtl" ? "rtl" : "ltr"; - return { - str, - dir - }; - } - - setTitle(title) { - this._title = this._parseStringHelper(title); - } - - setContents(contents) { - this._contents = this._parseStringHelper(contents); - } - - setModificationDate(modificationDate) { - this.modificationDate = typeof modificationDate === "string" ? modificationDate : null; - } - - setFlags(flags) { - this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0; - } - - hasFlag(flag) { - return this._hasFlag(this.flags, flag); - } - - setRectangle(rectangle) { - if (Array.isArray(rectangle) && rectangle.length === 4) { - this.rectangle = _util.Util.normalizeRect(rectangle); - } else { - this.rectangle = [0, 0, 0, 0]; - } - } - - setColor(color) { - this.color = getRgbColor(color); - } - - setLineEndings(lineEndings) { - this.lineEndings = ["None", "None"]; - - if (Array.isArray(lineEndings) && lineEndings.length === 2) { - for (let i = 0; i < 2; i++) { - const obj = lineEndings[i]; - - if (obj instanceof _primitives.Name) { - switch (obj.name) { - case "None": - continue; - - case "Square": - case "Circle": - case "Diamond": - case "OpenArrow": - case "ClosedArrow": - case "Butt": - case "ROpenArrow": - case "RClosedArrow": - case "Slash": - this.lineEndings[i] = obj.name; - continue; - } - } - - (0, _util.warn)(`Ignoring invalid lineEnding: ${obj}`); - } - } - } - - setBorderAndBackgroundColors(mk) { - if (mk instanceof _primitives.Dict) { - this.borderColor = getRgbColor(mk.getArray("BC"), null); - this.backgroundColor = getRgbColor(mk.getArray("BG"), null); - } else { - this.borderColor = this.backgroundColor = null; - } - } - - setBorderStyle(borderStyle) { - this.borderStyle = new AnnotationBorderStyle(); - - if (!(borderStyle instanceof _primitives.Dict)) { - return; - } - - if (borderStyle.has("BS")) { - const dict = borderStyle.get("BS"); - const dictType = dict.get("Type"); - - if (!dictType || (0, _primitives.isName)(dictType, "Border")) { - this.borderStyle.setWidth(dict.get("W"), this.rectangle); - this.borderStyle.setStyle(dict.get("S")); - this.borderStyle.setDashArray(dict.getArray("D")); - } - } else if (borderStyle.has("Border")) { - const array = borderStyle.getArray("Border"); - - if (Array.isArray(array) && array.length >= 3) { - this.borderStyle.setHorizontalCornerRadius(array[0]); - this.borderStyle.setVerticalCornerRadius(array[1]); - this.borderStyle.setWidth(array[2], this.rectangle); - - if (array.length === 4) { - this.borderStyle.setDashArray(array[3], true); - } - } - } else { - this.borderStyle.setWidth(0); - } - } - - setAppearance(dict) { - this.appearance = null; - const appearanceStates = dict.get("AP"); - - if (!(appearanceStates instanceof _primitives.Dict)) { - return; - } - - const normalAppearanceState = appearanceStates.get("N"); - - if (normalAppearanceState instanceof _base_stream.BaseStream) { - this.appearance = normalAppearanceState; - return; - } - - if (!(normalAppearanceState instanceof _primitives.Dict)) { - return; - } - - const as = dict.get("AS"); - - if (!(as instanceof _primitives.Name) || !normalAppearanceState.has(as.name)) { - return; - } - - this.appearance = normalAppearanceState.get(as.name); - } - - loadResources(keys, appearance) { - return appearance.dict.getAsync("Resources").then(resources => { - if (!resources) { - return undefined; - } - - const objectLoader = new _object_loader.ObjectLoader(resources, keys, resources.xref); - return objectLoader.load().then(function () { - return resources; - }); - }); - } - - getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { - const data = this.data; - let appearance = this.appearance; - const isUsingOwnCanvas = data.hasOwnCanvas && intent & _util.RenderingIntentFlag.DISPLAY; - - if (!appearance) { - if (!isUsingOwnCanvas) { - return Promise.resolve(new _operator_list.OperatorList()); - } - - appearance = new _stream.StringStream(""); - appearance.dict = new _primitives.Dict(); - } - - const appearanceDict = appearance.dict; - const resourcesPromise = this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", "Font"], appearance); - const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1]; - const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0]; - const transform = getTransformMatrix(data.rect, bbox, matrix); - return resourcesPromise.then(resources => { - const opList = new _operator_list.OperatorList(); - opList.addOp(_util.OPS.beginAnnotation, [data.id, data.rect, transform, matrix, isUsingOwnCanvas]); - return evaluator.getOperatorList({ - stream: appearance, - task, - resources, - operatorList: opList, - fallbackFontDict: this._fallbackFontDict - }).then(() => { - opList.addOp(_util.OPS.endAnnotation, []); - this.reset(); - return opList; - }); - }); - } - - async save(evaluator, task, annotationStorage) { - return null; - } - - getFieldObject() { - if (this.data.kidIds) { - return { - id: this.data.id, - actions: this.data.actions, - name: this.data.fieldName, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - type: "", - kidIds: this.data.kidIds, - page: this.data.pageIndex - }; - } - - return null; - } - - reset() { - for (const stream of this._streams) { - stream.reset(); - } - } - - _constructFieldName(dict) { - if (!dict.has("T") && !dict.has("Parent")) { - (0, _util.warn)("Unknown field name, falling back to empty field name."); - return ""; - } - - if (!dict.has("Parent")) { - return (0, _util.stringToPDFString)(dict.get("T")); - } - - const fieldName = []; - - if (dict.has("T")) { - fieldName.unshift((0, _util.stringToPDFString)(dict.get("T"))); - } - - let loopDict = dict; - const visited = new _primitives.RefSet(); - - if (dict.objId) { - visited.put(dict.objId); - } - - while (loopDict.has("Parent")) { - loopDict = loopDict.get("Parent"); - - if (!(loopDict instanceof _primitives.Dict) || loopDict.objId && visited.has(loopDict.objId)) { - break; - } - - if (loopDict.objId) { - visited.put(loopDict.objId); - } - - if (loopDict.has("T")) { - fieldName.unshift((0, _util.stringToPDFString)(loopDict.get("T"))); - } - } - - return fieldName.join("."); - } - -} - -exports.Annotation = Annotation; - -class AnnotationBorderStyle { - constructor() { - this.width = 1; - this.style = _util.AnnotationBorderStyleType.SOLID; - this.dashArray = [3]; - this.horizontalCornerRadius = 0; - this.verticalCornerRadius = 0; - } - - setWidth(width, rect = [0, 0, 0, 0]) { - if (width instanceof _primitives.Name) { - this.width = 0; - return; - } - - if (typeof width === "number") { - if (width > 0) { - const maxWidth = (rect[2] - rect[0]) / 2; - const maxHeight = (rect[3] - rect[1]) / 2; - - if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) { - (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`); - width = 1; - } - } - - this.width = width; - } - } - - setStyle(style) { - if (!(style instanceof _primitives.Name)) { - return; - } - - switch (style.name) { - case "S": - this.style = _util.AnnotationBorderStyleType.SOLID; - break; - - case "D": - this.style = _util.AnnotationBorderStyleType.DASHED; - break; - - case "B": - this.style = _util.AnnotationBorderStyleType.BEVELED; - break; - - case "I": - this.style = _util.AnnotationBorderStyleType.INSET; - break; - - case "U": - this.style = _util.AnnotationBorderStyleType.UNDERLINE; - break; - - default: - break; - } - } - - setDashArray(dashArray, forceStyle = false) { - if (Array.isArray(dashArray) && dashArray.length > 0) { - let isValid = true; - let allZeros = true; - - for (const element of dashArray) { - const validNumber = +element >= 0; - - if (!validNumber) { - isValid = false; - break; - } else if (element > 0) { - allZeros = false; - } - } - - if (isValid && !allZeros) { - this.dashArray = dashArray; - - if (forceStyle) { - this.setStyle(_primitives.Name.get("D")); - } - } else { - this.width = 0; - } - } else if (dashArray) { - this.width = 0; - } - } - - setHorizontalCornerRadius(radius) { - if (Number.isInteger(radius)) { - this.horizontalCornerRadius = radius; - } - } - - setVerticalCornerRadius(radius) { - if (Number.isInteger(radius)) { - this.verticalCornerRadius = radius; - } - } - -} - -exports.AnnotationBorderStyle = AnnotationBorderStyle; - -class MarkupAnnotation extends Annotation { - constructor(parameters) { - super(parameters); - const dict = parameters.dict; - - if (dict.has("IRT")) { - const rawIRT = dict.getRaw("IRT"); - this.data.inReplyTo = rawIRT instanceof _primitives.Ref ? rawIRT.toString() : null; - const rt = dict.get("RT"); - this.data.replyType = rt instanceof _primitives.Name ? rt.name : _util.AnnotationReplyType.REPLY; - } - - if (this.data.replyType === _util.AnnotationReplyType.GROUP) { - const parent = dict.get("IRT"); - this.setTitle(parent.get("T")); - this.data.titleObj = this._title; - this.setContents(parent.get("Contents")); - this.data.contentsObj = this._contents; - - if (!parent.has("CreationDate")) { - this.data.creationDate = null; - } else { - this.setCreationDate(parent.get("CreationDate")); - this.data.creationDate = this.creationDate; - } - - if (!parent.has("M")) { - this.data.modificationDate = null; - } else { - this.setModificationDate(parent.get("M")); - this.data.modificationDate = this.modificationDate; - } - - this.data.hasPopup = parent.has("Popup"); - - if (!parent.has("C")) { - this.data.color = null; - } else { - this.setColor(parent.getArray("C")); - this.data.color = this.color; - } - } else { - this.data.titleObj = this._title; - this.setCreationDate(dict.get("CreationDate")); - this.data.creationDate = this.creationDate; - this.data.hasPopup = dict.has("Popup"); - - if (!dict.has("C")) { - this.data.color = null; - } - } - - if (dict.has("RC")) { - this.data.richText = _factory.XFAFactory.getRichTextAsHtml(dict.get("RC")); - } - } - - setCreationDate(creationDate) { - this.creationDate = typeof creationDate === "string" ? creationDate : null; - } - - _setDefaultAppearance({ - xref, - extra, - strokeColor, - fillColor, - blendMode, - strokeAlpha, - fillAlpha, - 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`); - } - - let pointsArray = this.data.quadPoints; - - if (!pointsArray) { - pointsArray = [[{ - x: this.rectangle[0], - y: this.rectangle[3] - }, { - x: this.rectangle[2], - y: this.rectangle[3] - }, { - x: this.rectangle[0], - y: this.rectangle[1] - }, { - x: this.rectangle[2], - y: this.rectangle[1] - }]]; - } - - for (const points of pointsArray) { - 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)); - } - - if (typeof strokeAlpha === "number") { - gsDict.set("CA", strokeAlpha); - } - - if (typeof fillAlpha === "number") { - gsDict.set("ca", fillAlpha); - } - - 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; - -class WidgetAnnotation extends Annotation { - constructor(params) { - super(params); - const dict = params.dict; - const data = this.data; - this.ref = params.ref; - data.annotationType = _util.AnnotationType.WIDGET; - - if (data.fieldName === undefined) { - data.fieldName = this._constructFieldName(dict); - } - - if (data.actions === undefined) { - data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType); - } - - let 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); - - if (fieldValue === undefined && params.xfaDatasets) { - const path = this._title.str; - - if (path) { - this._hasValueFromXFA = true; - data.fieldValue = fieldValue = params.xfaDatasets.getValue(path); - } - } - - if (fieldValue === undefined && data.defaultFieldValue !== null) { - data.fieldValue = data.defaultFieldValue; - } - - data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || ""); - const defaultAppearance = (0, _core_utils.getInheritableProperty)({ - dict, - key: "DA" - }) || params.acroForm.get("DA"); - this._defaultAppearance = typeof defaultAppearance === "string" ? defaultAppearance : ""; - data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance); - const fieldType = (0, _core_utils.getInheritableProperty)({ - dict, - key: "FT" - }); - data.fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null; - const localResources = (0, _core_utils.getInheritableProperty)({ - dict, - key: "DR" - }); - 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" - }); - - if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) { - data.fieldFlags = 0; - } - - data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY); - data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN); - } - - _decodeFormValue(formValue) { - if (Array.isArray(formValue)) { - return formValue.filter(item => typeof item === "string").map(item => (0, _util.stringToPDFString)(item)); - } else if (formValue instanceof _primitives.Name) { - return (0, _util.stringToPDFString)(formValue.name); - } else if (typeof formValue === "string") { - return (0, _util.stringToPDFString)(formValue); - } - - return null; - } - - hasFieldFlag(flag) { - return !!(this.data.fieldFlags & flag); - } - - getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { - if (renderForms && !(this instanceof SignatureWidgetAnnotation)) { - return Promise.resolve(new _operator_list.OperatorList()); - } - - if (!this._hasText) { - return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); - } - - return this._getAppearance(evaluator, task, annotationStorage).then(content => { - if (this.appearance && content === null) { - return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); - } - - const operatorList = new _operator_list.OperatorList(); - - if (!this._defaultAppearance || content === null) { - return operatorList; - } - - const matrix = [1, 0, 0, 1, 0, 0]; - const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]; - const transform = getTransformMatrix(this.data.rect, bbox, matrix); - operatorList.addOp(_util.OPS.beginAnnotation, [this.data.id, this.data.rect, transform, matrix]); - const stream = new _stream.StringStream(content); - return evaluator.getOperatorList({ - stream, - task, - resources: this._fieldResources.mergedResources, - operatorList - }).then(function () { - operatorList.addOp(_util.OPS.endAnnotation, []); - return operatorList; - }); - }); - } - - async save(evaluator, task, annotationStorage) { - const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; - let value = storageEntry && storageEntry.value; - - if (value === this.data.fieldValue || value === undefined) { - if (!this._hasValueFromXFA) { - return null; - } - - value = value || this.data.fieldValue; - } - - if (!this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && value.length === this.data.fieldValue.length && value.every((x, i) => x === this.data.fieldValue[i])) { - return null; - } - - let appearance = await this._getAppearance(evaluator, task, annotationStorage); - - if (appearance === null) { - return null; - } - - const { - xref - } = evaluator; - const dict = xref.fetchIfRef(this.ref); - - if (!(dict instanceof _primitives.Dict)) { - return null; - } - - const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]; - 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 encrypt = xref.encrypt; - let originalTransform = null; - let newTransform = null; - - if (encrypt) { - originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); - newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen); - appearance = newTransform.encryptString(appearance); - } - - const encoder = val => (0, _util.isAscii)(val) ? val : (0, _util.stringToUTF16BEString)(val); - - dict.set("V", Array.isArray(value) ? value.map(encoder) : encoder(value)); - dict.set("AP", AP); - dict.set("M", `D:${(0, _util.getModificationDate)()}`); - const appearanceDict = new _primitives.Dict(xref); - appearanceDict.set("Length", appearance.length); - appearanceDict.set("Subtype", _primitives.Name.get("Form")); - 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); - bufferOriginal.push("\nendobj\n"); - const bufferNew = [`${newRef.num} ${newRef.gen} obj\n`]; - (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform); - bufferNew.push(" stream\n", appearance, "\nendstream\nendobj\n"); - return [{ - ref: this.ref, - data: bufferOriginal.join(""), - xfa - }, { - ref: newRef, - data: bufferNew.join(""), - xfa: null - }]; - } - - async _getAppearance(evaluator, task, annotationStorage) { - const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD); - - if (isPassword) { - return null; - } - - const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined; - let value = storageEntry && (storageEntry.formattedValue || storageEntry.value); - - if (value === undefined) { - if (!this._hasValueFromXFA || this.appearance) { - return null; - } - - value = this.data.fieldValue; - - if (!value) { - return ""; - } - } - - (0, _util.assert)(typeof value === "string", "Expected `value` to be a string."); - value = value.trim(); - - if (value === "") { - return ""; - } - - let lineCount = -1; - - if (this.data.multiLine) { - lineCount = value.split(/\r\n|\r|\n/).length; - } - - const defaultPadding = 2; - const hPadding = defaultPadding; - const totalHeight = this.data.rect[3] - this.data.rect[1]; - const totalWidth = this.data.rect[2] - this.data.rect[0]; - - if (!this._defaultAppearance) { - this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); - } - - const font = await this._getFontData(evaluator, task); - - const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight - defaultPadding, totalWidth - 2 * hPadding, value, font, lineCount); - - let descent = font.descent; - - if (isNaN(descent)) { - descent = 0; - } - - const vPadding = defaultPadding + Math.abs(descent) * fontSize; - const alignment = this.data.textAlignment; - - 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)(encodedString)}) Tj` + " ET Q EMC"; - } - - 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"; - } - - async _getFontData(evaluator, task) { - const operatorList = new _operator_list.OperatorList(); - const initialState = { - font: null, - - clone() { - return this; - } - - }; - const { - fontName, - fontSize - } = this.data.defaultAppearanceData; - await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName && _primitives.Name.get(fontName), fontSize], null, operatorList, task, initialState, null); - return initialState.font; - } - - _getTextWidth(text, font) { - return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) / 1000; - } - - _computeFontSize(height, width, text, font, lineCount) { - let { - fontSize - } = this.data.defaultAppearanceData; - - if (!fontSize) { - const roundWithTwoDigits = x => Math.floor(x * 100) / 100; - - if (lineCount === -1) { - const textWidth = this._getTextWidth(text, font); - - fontSize = roundWithTwoDigits(Math.min(height / LINE_FACTOR, width / textWidth)); - } else { - const lines = text.split(/\r\n?|\n/); - const cachedLines = []; - - for (const line of lines) { - const encoded = font.encodeString(line).join(""); - const glyphs = font.charsToGlyphs(encoded); - const positions = font.getCharPositions(encoded); - cachedLines.push({ - line: encoded, - glyphs, - positions - }); - } - - const isTooBig = fsize => { - let totalHeight = 0; - - for (const cache of cachedLines) { - const chunks = this._splitLine(null, font, fsize, width, cache); - - totalHeight += chunks.length * fsize; - - if (totalHeight > height) { - return true; - } - } - - return false; - }; - - fontSize = 12; - let lineHeight = fontSize * LINE_FACTOR; - let numberOfLines = Math.round(height / lineHeight); - numberOfLines = Math.max(numberOfLines, lineCount); - - while (true) { - lineHeight = height / numberOfLines; - fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR); - - if (isTooBig(fontSize)) { - numberOfLines++; - continue; - } - - break; - } - } - - const { - fontName, - fontColor - } = this.data.defaultAppearanceData; - this._defaultAppearance = (0, _default_appearance.createDefaultAppearance)({ - fontSize, - fontName, - fontColor - }); - } - - return [this._defaultAppearance, fontSize]; - } - - _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) { - let shift; - - if (alignment === 1) { - const width = this._getTextWidth(text, font) * fontSize; - shift = (totalWidth - width) / 2; - } else if (alignment === 2) { - const width = this._getTextWidth(text, font) * fontSize; - shift = totalWidth - width - hPadding; - } else { - shift = hPadding; - } - - shift = shift.toFixed(2); - vPadding = vPadding.toFixed(2); - return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`; - } - - _getSaveFieldResources(xref) { - const { - localResources, - appearanceResources, - acroFormResources - } = this._fieldResources; - const fontName = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName; - - if (!fontName) { - 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(fontName)) { - return resources; - } - } - } - - if (acroFormResources instanceof _primitives.Dict) { - const acroFormFont = acroFormResources.get("Font"); - - if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontName)) { - const subFontDict = new _primitives.Dict(xref); - subFontDict.set(fontName, acroFormFont.getRaw(fontName)); - 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() { - return null; - } - -} - -class TextWidgetAnnotation extends WidgetAnnotation { - constructor(params) { - super(params); - this._hasText = true; - const dict = params.dict; - - if (typeof this.data.fieldValue !== "string") { - this.data.fieldValue = ""; - } - - let alignment = (0, _core_utils.getInheritableProperty)({ - dict, - key: "Q" - }); - - if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) { - alignment = null; - } - - this.data.textAlignment = alignment; - let maximumLength = (0, _core_utils.getInheritableProperty)({ - dict, - key: "MaxLen" - }); - - if (!Number.isInteger(maximumLength) || maximumLength < 0) { - maximumLength = null; - } - - this.data.maxLen = maximumLength; - this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE); - 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, font, text, width, hPadding, vPadding) { - const combWidth = (width / this.data.maxLen).toFixed(2); - const buf = []; - const positions = font.getCharPositions(text); - - for (const [start, end] of positions) { - buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`); - } - - const renderedComb = buf.join(` ${combWidth} 0 Td `); - return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + " ET Q EMC"; - } - - _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, vPadding) { - const lines = text.split(/\r\n?|\n/); - const buf = []; - const totalWidth = width - 2 * hPadding; - - for (const line of lines) { - const chunks = this._splitLine(line, font, fontSize, totalWidth); - - for (const chunk of chunks) { - const padding = buf.length === 0 ? hPadding : 0; - buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize)); - } - } - - const renderedText = buf.join("\n"); - return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + " ET Q EMC"; - } - - _splitLine(line, font, fontSize, width, cache = {}) { - line = cache.line || font.encodeString(line).join(""); - const glyphs = cache.glyphs || font.charsToGlyphs(line); - - if (glyphs.length <= 1) { - return [line]; - } - - const positions = cache.positions || font.getCharPositions(line); - const scale = fontSize / 1000; - const chunks = []; - let lastSpacePosInStringStart = -1, - lastSpacePosInStringEnd = -1, - lastSpacePos = -1, - startChunk = 0, - currentWidth = 0; - - 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 += glyphWidth; - lastSpacePosInStringStart = start; - lastSpacePosInStringEnd = end; - lastSpacePos = i; - } - } else { - 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, start)); - startChunk = start; - currentWidth = glyphWidth; - } - } else { - currentWidth += glyphWidth; - } - } - } - - if (startChunk < line.length) { - chunks.push(line.substring(startChunk, line.length)); - } - - 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, - page: this.data.pageIndex, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - type: "text" - }; - } - -} - -class ButtonWidgetAnnotation extends WidgetAnnotation { - constructor(params) { - super(params); - this.checkedAppearance = null; - this.uncheckedAppearance = null; - 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); - } else if (this.data.radioButton) { - this._processRadioButton(params); - } else if (this.data.pushButton) { - this.data.hasOwnCanvas = true; - - this._processPushButton(params); - } else { - (0, _util.warn)("Invalid field flags for button widget annotation"); - } - } - - async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { - if (this.data.pushButton) { - return super.getOperatorList(evaluator, task, intent, false, annotationStorage); - } - - let value = null; - - if (annotationStorage) { - const storageEntry = annotationStorage.get(this.data.id); - value = storageEntry ? storageEntry.value : null; - } - - if (value === null) { - if (this.appearance) { - return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); - } - - if (this.data.checkBox) { - value = this.data.fieldValue === this.data.exportValue; - } else { - value = this.data.fieldValue === this.data.buttonValue; - } - } - - const appearance = value ? this.checkedAppearance : this.uncheckedAppearance; - - if (appearance) { - const savedAppearance = this.appearance; - this.appearance = appearance; - const operatorList = super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); - this.appearance = savedAppearance; - return operatorList; - } - - return new _operator_list.OperatorList(); - } - - async save(evaluator, task, annotationStorage) { - if (this.data.checkBox) { - return this._saveCheckbox(evaluator, task, annotationStorage); - } - - if (this.data.radioButton) { - return this._saveRadioButton(evaluator, task, annotationStorage); - } - - return null; - } - - async _saveCheckbox(evaluator, task, annotationStorage) { - if (!annotationStorage) { - return null; - } - - const storageEntry = annotationStorage.get(this.data.id); - const value = storageEntry && storageEntry.value; - - if (value === undefined) { - return null; - } - - const defaultValue = this.data.fieldValue === this.data.exportValue; - - if (defaultValue === value) { - return null; - } - - const dict = evaluator.xref.fetchIfRef(this.ref); - - if (!(dict instanceof _primitives.Dict)) { - 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); - dict.set("AS", name); - dict.set("M", `D:${(0, _util.getModificationDate)()}`); - const encrypt = evaluator.xref.encrypt; - let originalTransform = null; - - if (encrypt) { - originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); - } - - const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`]; - (0, _writer.writeDict)(dict, buffer, originalTransform); - buffer.push("\nendobj\n"); - return [{ - ref: this.ref, - data: buffer.join(""), - xfa - }]; - } - - async _saveRadioButton(evaluator, task, annotationStorage) { - if (!annotationStorage) { - return null; - } - - const storageEntry = annotationStorage.get(this.data.id); - const value = storageEntry && storageEntry.value; - - if (value === undefined) { - return null; - } - - const defaultValue = this.data.fieldValue === this.data.buttonValue; - - if (defaultValue === value) { - return null; - } - - const dict = evaluator.xref.fetchIfRef(this.ref); - - if (!(dict instanceof _primitives.Dict)) { - 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; - const encrypt = evaluator.xref.encrypt; - - if (value) { - if (this.parent instanceof _primitives.Ref) { - const parent = evaluator.xref.fetch(this.parent); - let parentTransform = null; - - if (encrypt) { - parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen); - } - - parent.set("V", name); - parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`]; - (0, _writer.writeDict)(parent, parentBuffer, parentTransform); - parentBuffer.push("\nendobj\n"); - } else if (this.parent instanceof _primitives.Dict) { - this.parent.set("V", name); - } - } - - dict.set("AS", name); - dict.set("M", `D:${(0, _util.getModificationDate)()}`); - let originalTransform = null; - - if (encrypt) { - originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); - } - - const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`]; - (0, _writer.writeDict)(dict, buffer, originalTransform); - buffer.push("\nendobj\n"); - const newRefs = [{ - ref: this.ref, - data: buffer.join(""), - xfa - }]; - - if (parentBuffer !== null) { - newRefs.push({ - ref: this.parent, - data: parentBuffer.join(""), - xfa: null - }); - } - - return newRefs; - } - - _getDefaultCheckedAppearance(params, type) { - const width = this.data.rect[2] - this.data.rect[0]; - const height = this.data.rect[3] - this.data.rect[1]; - const bbox = [0, 0, width, height]; - const FONT_RATIO = 0.8; - const fontSize = Math.min(width, height) * FONT_RATIO; - let metrics, char; - - if (type === "check") { - metrics = { - width: 0.755 * fontSize, - height: 0.705 * fontSize - }; - char = "\x33"; - } else if (type === "disc") { - metrics = { - width: 0.791 * fontSize, - height: 0.705 * fontSize - }; - char = "\x6C"; - } else { - (0, _util.unreachable)(`_getDefaultCheckedAppearance - unsupported type: ${type}`); - } - - const xShift = (width - metrics.width) / 2; - const yShift = (height - metrics.height) / 2; - const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`; - const appearanceStreamDict = new _primitives.Dict(params.xref); - appearanceStreamDict.set("FormType", 1); - appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); - appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); - appearanceStreamDict.set("BBox", bbox); - appearanceStreamDict.set("Matrix", [1, 0, 0, 1, 0, 0]); - appearanceStreamDict.set("Length", appearance.length); - const resources = new _primitives.Dict(params.xref); - const font = new _primitives.Dict(params.xref); - font.set("PdfJsZaDb", this.fallbackFontDict); - resources.set("Font", font); - appearanceStreamDict.set("Resources", resources); - this.checkedAppearance = new _stream.StringStream(appearance); - this.checkedAppearance.dict = appearanceStreamDict; - - this._streams.push(this.checkedAppearance); - } - - _processCheckBox(params) { - const customAppearance = params.dict.get("AP"); - - if (!(customAppearance instanceof _primitives.Dict)) { - return; - } - - const normalAppearance = customAppearance.get("N"); - - if (!(normalAppearance instanceof _primitives.Dict)) { - return; - } - - const asValue = this._decodeFormValue(params.dict.get("AS")); - - if (typeof asValue === "string") { - this.data.fieldValue = asValue; - } - - const yes = this.data.fieldValue !== null && this.data.fieldValue !== "Off" ? this.data.fieldValue : "Yes"; - const exportValues = normalAppearance.getKeys(); - - if (exportValues.length === 0) { - exportValues.push("Off", yes); - } else if (exportValues.length === 1) { - if (exportValues[0] === "Off") { - exportValues.push(yes); - } else { - exportValues.unshift("Off"); - } - } else if (exportValues.includes(yes)) { - exportValues.length = 0; - exportValues.push("Off", yes); - } else { - const otherYes = exportValues.find(v => v !== "Off"); - exportValues.length = 0; - exportValues.push("Off", otherYes); - } - - if (!exportValues.includes(this.data.fieldValue)) { - this.data.fieldValue = "Off"; - } - - this.data.exportValue = exportValues[1]; - this.checkedAppearance = normalAppearance.get(this.data.exportValue) || null; - this.uncheckedAppearance = normalAppearance.get("Off") || null; - - if (this.checkedAppearance) { - this._streams.push(this.checkedAppearance); - } else { - this._getDefaultCheckedAppearance(params, "check"); - } - - 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 (fieldParent instanceof _primitives.Dict) { - this.parent = params.dict.getRaw("Parent"); - const fieldParentValue = fieldParent.get("V"); - - if (fieldParentValue instanceof _primitives.Name) { - this.data.fieldValue = this._decodeFormValue(fieldParentValue); - } - } - - const appearanceStates = params.dict.get("AP"); - - if (!(appearanceStates instanceof _primitives.Dict)) { - return; - } - - const normalAppearance = appearanceStates.get("N"); - - if (!(normalAppearance instanceof _primitives.Dict)) { - return; - } - - for (const key of normalAppearance.getKeys()) { - if (key !== "Off") { - this.data.buttonValue = this._decodeFormValue(key); - break; - } - } - - this.checkedAppearance = normalAppearance.get(this.data.buttonValue) || null; - this.uncheckedAppearance = normalAppearance.get("Off") || null; - - if (this.checkedAppearance) { - this._streams.push(this.checkedAppearance); - } else { - this._getDefaultCheckedAppearance(params, "disc"); - } - - if (this.uncheckedAppearance) { - this._streams.push(this.uncheckedAppearance); - } - - this._fallbackFontDict = this.fallbackFontDict; - } - - _processPushButton(params) { - 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"); - - _catalog.Catalog.parseDestDictionary({ - destDict: params.dict, - resultObj: this.data, - docBaseUrl: params.pdfManager.docBaseUrl - }); - } - - 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, - page: this.data.pageIndex, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - 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 { - constructor(params) { - super(params); - this.data.options = []; - const options = (0, _core_utils.getInheritableProperty)({ - dict: params.dict, - key: "Opt" - }); - - if (Array.isArray(options)) { - const xref = params.xref; - - for (let i = 0, ii = options.length; i < ii; i++) { - const option = xref.fetchIfRef(options[i]); - const isOptionArray = Array.isArray(option); - this.data.options[i] = { - exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option), - displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option) - }; - } - } - - if (typeof this.data.fieldValue === "string") { - this.data.fieldValue = [this.data.fieldValue]; - } else if (!this.data.fieldValue) { - this.data.fieldValue = []; - } - - this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO); - this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT); - 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, - items: this.data.options, - page: this.data.pageIndex, - strokeColor: this.data.borderColor, - fillColor: this.data.backgroundColor, - type - }; - } - - async _getAppearance(evaluator, task, annotationStorage) { - if (this.data.combo) { - return super._getAppearance(evaluator, task, annotationStorage); - } - - if (!annotationStorage) { - return null; - } - - const storageEntry = annotationStorage.get(this.data.id); - let exportedValue = storageEntry && storageEntry.value; - - if (exportedValue === undefined) { - return null; - } - - if (!Array.isArray(exportedValue)) { - exportedValue = [exportedValue]; - } - - const defaultPadding = 2; - const hPadding = defaultPadding; - const totalHeight = this.data.rect[3] - this.data.rect[1]; - const totalWidth = this.data.rect[2] - this.data.rect[0]; - const lineCount = this.data.options.length; - const valueIndices = []; - - for (let i = 0; i < lineCount; i++) { - const { - exportValue - } = this.data.options[i]; - - if (exportedValue.includes(exportValue)) { - valueIndices.push(i); - } - } - - if (!this._defaultAppearance) { - this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); - } - - const font = await this._getFontData(evaluator, task); - let defaultAppearance; - let { - fontSize - } = this.data.defaultAppearanceData; - - if (!fontSize) { - const lineHeight = (totalHeight - defaultPadding) / lineCount; - let lineWidth = -1; - let value; - - for (const { - displayValue - } of this.data.options) { - const width = this._getTextWidth(displayValue); - - if (width > lineWidth) { - lineWidth = width; - value = displayValue; - } - } - - [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * hPadding, value, font, -1); - } else { - defaultAppearance = this._defaultAppearance; - } - - const lineHeight = fontSize * LINE_FACTOR; - const vPadding = (lineHeight - fontSize) / 2; - const numberOfVisibleLines = Math.floor(totalHeight / lineHeight); - let firstIndex; - - if (valueIndices.length === 1) { - const valuePosition = valueIndices[0]; - const indexInPage = valuePosition % numberOfVisibleLines; - firstIndex = valuePosition - indexInPage; - } else { - firstIndex = valueIndices.length ? valueIndices[0] : 0; - } - - const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount); - const buf = ["/Tx BMC q", `1 1 ${totalWidth} ${totalHeight} re W n`]; - - if (valueIndices.length) { - buf.push("0.600006 0.756866 0.854904 rg"); - - for (const index of valueIndices) { - if (firstIndex <= index && index < end) { - buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`); - } - } - } - - buf.push("BT", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`); - - for (let i = firstIndex; i < end; i++) { - const { - displayValue - } = this.data.options[i]; - const hpadding = i === firstIndex ? hPadding : 0; - const vpadding = i === firstIndex ? vPadding : 0; - buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, hpadding, -lineHeight + vpadding)); - } - - buf.push("ET Q EMC"); - return buf.join("\n"); - } - -} - -class SignatureWidgetAnnotation extends WidgetAnnotation { - constructor(params) { - super(params); - this.data.fieldValue = null; - } - - getFieldObject() { - return { - id: this.data.id, - value: null, - page: this.data.pageIndex, - type: "signature" - }; - } - -} - -class TextAnnotation extends MarkupAnnotation { - constructor(parameters) { - const DEFAULT_ICON_SIZE = 22; - super(parameters); - const dict = parameters.dict; - this.data.annotationType = _util.AnnotationType.TEXT; - - if (this.data.hasAppearance) { - this.data.name = "NoIcon"; - } else { - this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE; - this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE; - this.data.name = dict.has("Name") ? dict.get("Name").name : "Note"; - } - - if (dict.has("State")) { - this.data.state = dict.get("State") || null; - this.data.stateModel = dict.get("StateModel") || null; - } else { - this.data.state = null; - this.data.stateModel = null; - } - } - -} - -class LinkAnnotation extends Annotation { - constructor(params) { - super(params); - this.data.annotationType = _util.AnnotationType.LINK; - const quadPoints = getQuadPoints(params.dict, this.rectangle); - - if (quadPoints) { - this.data.quadPoints = quadPoints; - } - - _catalog.Catalog.parseDestDictionary({ - destDict: params.dict, - resultObj: this.data, - docBaseUrl: params.pdfManager.docBaseUrl - }); - } - -} - -class PopupAnnotation extends Annotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.POPUP; - let parentItem = parameters.dict.get("Parent"); - - if (!parentItem) { - (0, _util.warn)("Popup annotation has a missing or invalid parent annotation."); - return; - } - - const parentSubtype = parentItem.get("Subtype"); - this.data.parentType = parentSubtype instanceof _primitives.Name ? parentSubtype.name : null; - const rawParent = parameters.dict.getRaw("Parent"); - this.data.parentId = rawParent instanceof _primitives.Ref ? 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)) { - parentItem = parentItem.get("IRT"); - } - - if (!parentItem.has("M")) { - this.data.modificationDate = null; - } else { - this.setModificationDate(parentItem.get("M")); - this.data.modificationDate = this.modificationDate; - } - - if (!parentItem.has("C")) { - this.data.color = null; - } else { - this.setColor(parentItem.getArray("C")); - this.data.color = this.color; - } - - if (!this.viewable) { - const parentFlags = parentItem.get("F"); - - if (this._isViewable(parentFlags)) { - this.setFlags(parentFlags); - } - } - - this.setTitle(parentItem.get("T")); - this.data.titleObj = this._title; - this.setContents(parentItem.get("Contents")); - this.data.contentsObj = this._contents; - - if (parentItem.has("RC")) { - this.data.richText = _factory.XFAFactory.getRichTextAsHtml(parentItem.get("RC")); - } - } - -} - -class FreeTextAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.FREETEXT; - } - -} - -class LineAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - const { - dict - } = parameters; - this.data.annotationType = _util.AnnotationType.LINE; - const lineCoordinates = dict.getArray("L"); - this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates); - this.setLineEndings(dict.getArray("LE")); - this.data.lineEndings = this.lineEndings; - - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = dict.get("CA"); - let fillColor = null, - interiorColor = dict.getArray("IC"); - - if (interiorColor) { - interiorColor = getRgbColor(interiorColor, null); - fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null; - } - - const fillAlpha = fillColor ? strokeAlpha : null; - const borderWidth = this.borderStyle.width || 1, - borderAdjust = 2 * borderWidth; - const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust]; - - if (!_util.Util.intersect(this.rectangle, bbox)) { - this.rectangle = bbox; - } - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: `${borderWidth} w`, - strokeColor, - fillColor, - strokeAlpha, - fillAlpha, - pointsCallback: (buffer, points) => { - buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, "S"); - return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, points[1].y + borderWidth]; - } - }); - } - } - -} - -class SquareAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.SQUARE; - - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); - let fillColor = null, - interiorColor = parameters.dict.getArray("IC"); - - if (interiorColor) { - interiorColor = getRgbColor(interiorColor, null); - fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null; - } - - const fillAlpha = fillColor ? strokeAlpha : null; - - if (this.borderStyle.width === 0 && !fillColor) { - return; - } - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: `${this.borderStyle.width} w`, - strokeColor, - fillColor, - strokeAlpha, - fillAlpha, - pointsCallback: (buffer, points) => { - const x = points[2].x + this.borderStyle.width / 2; - const y = points[2].y + this.borderStyle.width / 2; - const width = points[3].x - points[2].x - this.borderStyle.width; - const height = points[1].y - points[3].y - this.borderStyle.width; - buffer.push(`${x} ${y} ${width} ${height} re`); - - if (fillColor) { - buffer.push("B"); - } else { - buffer.push("S"); - } - - return [points[0].x, points[1].x, points[3].y, points[1].y]; - } - }); - } - } - -} - -class CircleAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.CIRCLE; - - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); - let fillColor = null; - let interiorColor = parameters.dict.getArray("IC"); - - if (interiorColor) { - interiorColor = getRgbColor(interiorColor, null); - fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null; - } - - const fillAlpha = fillColor ? strokeAlpha : null; - - if (this.borderStyle.width === 0 && !fillColor) { - return; - } - - const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4)); - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: `${this.borderStyle.width} w`, - strokeColor, - fillColor, - strokeAlpha, - fillAlpha, - pointsCallback: (buffer, points) => { - const x0 = points[0].x + this.borderStyle.width / 2; - const y0 = points[0].y - this.borderStyle.width / 2; - const x1 = points[3].x - this.borderStyle.width / 2; - const y1 = points[3].y + this.borderStyle.width / 2; - const xMid = x0 + (x1 - x0) / 2; - const yMid = y0 + (y1 - y0) / 2; - const xOffset = (x1 - x0) / 2 * controlPointsDistance; - const yOffset = (y1 - y0) / 2 * controlPointsDistance; - buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, "h"); - - if (fillColor) { - buffer.push("B"); - } else { - buffer.push("S"); - } - - return [points[0].x, points[1].x, points[3].y, points[1].y]; - } - }); - } - } - -} - -class PolylineAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - const { - dict - } = parameters; - this.data.annotationType = _util.AnnotationType.POLYLINE; - this.data.vertices = []; - - if (!(this instanceof PolygonAnnotation)) { - this.setLineEndings(dict.getArray("LE")); - this.data.lineEndings = this.lineEndings; - } - - const rawVertices = dict.getArray("Vertices"); - - if (!Array.isArray(rawVertices)) { - return; - } - - for (let i = 0, ii = rawVertices.length; i < ii; i += 2) { - this.data.vertices.push({ - x: rawVertices[i], - y: rawVertices[i + 1] - }); - } - - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = dict.get("CA"); - const borderWidth = this.borderStyle.width || 1, - borderAdjust = 2 * borderWidth; - const bbox = [Infinity, Infinity, -Infinity, -Infinity]; - - for (const vertex of this.data.vertices) { - bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust); - bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust); - bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust); - bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust); - } - - if (!_util.Util.intersect(this.rectangle, bbox)) { - this.rectangle = bbox; - } - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: `${borderWidth} w`, - strokeColor, - strokeAlpha, - pointsCallback: (buffer, points) => { - const vertices = this.data.vertices; - - for (let i = 0, ii = vertices.length; i < ii; i++) { - buffer.push(`${vertices[i].x} ${vertices[i].y} ${i === 0 ? "m" : "l"}`); - } - - buffer.push("S"); - return [points[0].x, points[1].x, points[3].y, points[1].y]; - } - }); - } - } - -} - -class PolygonAnnotation extends PolylineAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.POLYGON; - } - -} - -class CaretAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.CARET; - } - -} - -class InkAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.INK; - this.data.inkLists = []; - const rawInkLists = parameters.dict.getArray("InkList"); - - if (!Array.isArray(rawInkLists)) { - return; - } - - const xref = parameters.xref; - - for (let i = 0, ii = rawInkLists.length; i < ii; ++i) { - this.data.inkLists.push([]); - - for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) { - this.data.inkLists[i].push({ - x: xref.fetchIfRef(rawInkLists[i][j]), - y: xref.fetchIfRef(rawInkLists[i][j + 1]) - }); - } - } - - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); - const borderWidth = this.borderStyle.width || 1, - borderAdjust = 2 * borderWidth; - const bbox = [Infinity, Infinity, -Infinity, -Infinity]; - - for (const inkLists of this.data.inkLists) { - for (const vertex of inkLists) { - bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust); - bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust); - bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust); - bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust); - } - } - - if (!_util.Util.intersect(this.rectangle, bbox)) { - this.rectangle = bbox; - } - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: `${borderWidth} w`, - strokeColor, - strokeAlpha, - pointsCallback: (buffer, points) => { - for (const inkList of this.data.inkLists) { - for (let i = 0, ii = inkList.length; i < ii; i++) { - buffer.push(`${inkList[i].x} ${inkList[i].y} ${i === 0 ? "m" : "l"}`); - } - - buffer.push("S"); - } - - return [points[0].x, points[1].x, points[3].y, points[1].y]; - } - }); - } - } - -} - -class HighlightAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.HIGHLIGHT; - const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); - - if (quadPoints) { - const resources = this.appearance && this.appearance.dict.get("Resources"); - - if (!this.appearance || !(resources && resources.has("ExtGState"))) { - if (this.appearance) { - (0, _util.warn)("HighlightAnnotation - ignoring built-in appearance stream."); - } - - const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0]; - const fillAlpha = parameters.dict.get("CA"); - - this._setDefaultAppearance({ - xref: parameters.xref, - fillColor, - blendMode: "Multiply", - fillAlpha, - pointsCallback: (buffer, points) => { - buffer.push(`${points[0].x} ${points[0].y} m`, `${points[1].x} ${points[1].y} l`, `${points[3].x} ${points[3].y} l`, `${points[2].x} ${points[2].y} l`, "f"); - return [points[0].x, points[1].x, points[3].y, points[1].y]; - } - }); - } - } else { - this.data.hasPopup = false; - } - } - -} - -class UnderlineAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.UNDERLINE; - const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); - - if (quadPoints) { - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: "[] 0 d 1 w", - strokeColor, - strokeAlpha, - pointsCallback: (buffer, points) => { - buffer.push(`${points[2].x} ${points[2].y} m`, `${points[3].x} ${points[3].y} l`, "S"); - return [points[0].x, points[1].x, points[3].y, points[1].y]; - } - }); - } - } else { - this.data.hasPopup = false; - } - } - -} - -class SquigglyAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.SQUIGGLY; - const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); - - if (quadPoints) { - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: "[] 0 d 1 w", - strokeColor, - strokeAlpha, - 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; - } - } - -} - -class StrikeOutAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.STRIKEOUT; - const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); - - if (quadPoints) { - if (!this.appearance) { - const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; - const strokeAlpha = parameters.dict.get("CA"); - - this._setDefaultAppearance({ - xref: parameters.xref, - extra: "[] 0 d 1 w", - strokeColor, - strokeAlpha, - pointsCallback: (buffer, points) => { - buffer.push(`${(points[0].x + points[2].x) / 2} ` + `${(points[0].y + points[2].y) / 2} m`, `${(points[1].x + points[3].x) / 2} ` + `${(points[1].y + points[3].y) / 2} l`, "S"); - return [points[0].x, points[1].x, points[3].y, points[1].y]; - } - }); - } - } else { - this.data.hasPopup = false; - } - } - -} - -class StampAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - this.data.annotationType = _util.AnnotationType.STAMP; - } - -} - -class FileAttachmentAnnotation extends MarkupAnnotation { - constructor(parameters) { - super(parameters); - const file = new _file_spec.FileSpec(parameters.dict.get("FS"), parameters.xref); - this.data.annotationType = _util.AnnotationType.FILEATTACHMENT; - this.data.file = file.serializable; - } - -} - -/***/ }), -/* 23 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createDefaultAppearance = createDefaultAppearance; -exports.parseDefaultAppearance = parseDefaultAppearance; - -var _util = __w_pdfjs_require__(2); - -var _colorspace = __w_pdfjs_require__(24); - -var _core_utils = __w_pdfjs_require__(8); - -var _evaluator = __w_pdfjs_require__(25); - -var _primitives = __w_pdfjs_require__(5); - -var _stream = __w_pdfjs_require__(10); - -class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor { - constructor(str) { - super(new _stream.StringStream(str)); - } - - parse() { - const operation = { - fn: 0, - args: [] - }; - const result = { - fontSize: 0, - fontName: "", - fontColor: new Uint8ClampedArray(3) - }; - - try { - while (true) { - operation.args.length = 0; - - if (!this.read(operation)) { - break; - } - - if (this.savedStatesDepth !== 0) { - continue; - } - - const { - fn, - args - } = operation; - - switch (fn | 0) { - case _util.OPS.setFont: - const [fontName, fontSize] = args; - - if (fontName instanceof _primitives.Name) { - result.fontName = fontName.name; - } - - if (typeof fontSize === "number" && fontSize > 0) { - result.fontSize = fontSize; - } - - break; - - case _util.OPS.setFillRGBColor: - _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0); - - break; - - case _util.OPS.setFillGray: - _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0); - - break; - - case _util.OPS.setFillColorSpace: - _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0); - - break; - } - } - } catch (reason) { - (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`); - } - - return result; - } - -} - -function parseDefaultAppearance(str) { - return new DefaultAppearanceEvaluator(str).parse(); -} - -function createDefaultAppearance({ - fontSize, - fontName, - fontColor -}) { - let colorCmd; - - if (fontColor.every(c => c === 0)) { - colorCmd = "0 g"; - } else { - colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg"; - } - - return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${colorCmd}`; -} - -/***/ }), -/* 24 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ColorSpace = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _base_stream = __w_pdfjs_require__(9); - -var _core_utils = __w_pdfjs_require__(8); - -function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) { - const COMPONENTS = 3; - alpha01 = alpha01 !== 1 ? 0 : alpha01; - const xRatio = w1 / w2; - const yRatio = h1 / h2; - let newIndex = 0, - oldIndex; - const xScaled = new Uint16Array(w2); - const w1Scanline = w1 * COMPONENTS; - - for (let i = 0; i < w2; i++) { - xScaled[i] = Math.floor(i * xRatio) * COMPONENTS; - } - - for (let i = 0; i < h2; i++) { - const py = Math.floor(i * yRatio) * w1Scanline; - - for (let j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - dest[newIndex++] = src[oldIndex++]; - dest[newIndex++] = src[oldIndex++]; - dest[newIndex++] = src[oldIndex++]; - newIndex += alpha01; - } - } -} - -class ColorSpace { - constructor(name, numComps) { - if (this.constructor === ColorSpace) { - (0, _util.unreachable)("Cannot initialize ColorSpace."); - } - - this.name = name; - this.numComps = numComps; - } - - getRgb(src, srcOffset) { - const rgb = new Uint8ClampedArray(3); - this.getRgbItem(src, srcOffset, rgb, 0); - return rgb; - } - - getRgbItem(src, srcOffset, dest, destOffset) { - (0, _util.unreachable)("Should not call ColorSpace.getRgbItem"); - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - (0, _util.unreachable)("Should not call ColorSpace.getRgbBuffer"); - } - - getOutputLength(inputLength, alpha01) { - (0, _util.unreachable)("Should not call ColorSpace.getOutputLength"); - } - - isPassthrough(bits) { - return false; - } - - isDefaultDecode(decodeMap, bpc) { - return ColorSpace.isDefaultDecode(decodeMap, this.numComps); - } - - fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) { - const count = originalWidth * originalHeight; - let rgbBuf = null; - const numComponentColors = 1 << bpc; - const needsResizing = originalHeight !== height || originalWidth !== width; - - if (this.isPassthrough(bpc)) { - rgbBuf = comps; - } else if (this.numComps === 1 && count > numComponentColors && this.name !== "DeviceGray" && this.name !== "DeviceRGB") { - const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors); - - for (let i = 0; i < numComponentColors; i++) { - allColors[i] = i; - } - - const colorMap = new Uint8ClampedArray(numComponentColors * 3); - this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0); - - if (!needsResizing) { - let destPos = 0; - - for (let i = 0; i < count; ++i) { - const key = comps[i] * 3; - dest[destPos++] = colorMap[key]; - dest[destPos++] = colorMap[key + 1]; - dest[destPos++] = colorMap[key + 2]; - destPos += alpha01; - } - } else { - rgbBuf = new Uint8Array(count * 3); - let rgbPos = 0; - - for (let i = 0; i < count; ++i) { - const key = comps[i] * 3; - rgbBuf[rgbPos++] = colorMap[key]; - rgbBuf[rgbPos++] = colorMap[key + 1]; - rgbBuf[rgbPos++] = colorMap[key + 2]; - } - } - } else { - if (!needsResizing) { - this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01); - } else { - rgbBuf = new Uint8ClampedArray(count * 3); - this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0); - } - } - - if (rgbBuf) { - if (needsResizing) { - resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01); - } else { - let destPos = 0, - rgbPos = 0; - - for (let i = 0, ii = width * actualHeight; i < ii; i++) { - dest[destPos++] = rgbBuf[rgbPos++]; - dest[destPos++] = rgbBuf[rgbPos++]; - dest[destPos++] = rgbBuf[rgbPos++]; - destPos += alpha01; - } - } - } - } - - get usesZeroToOneRange() { - return (0, _util.shadow)(this, "usesZeroToOneRange", true); - } - - static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) { - if (!localColorSpaceCache) { - throw new Error('ColorSpace._cache - expected "localColorSpaceCache" argument.'); - } - - if (!parsedColorSpace) { - throw new Error('ColorSpace._cache - expected "parsedColorSpace" argument.'); - } - - let csName, csRef; - - if (cacheKey instanceof _primitives.Ref) { - csRef = cacheKey; - cacheKey = xref.fetch(cacheKey); - } - - if (cacheKey instanceof _primitives.Name) { - csName = cacheKey.name; - } - - if (csName || csRef) { - localColorSpaceCache.set(csName, csRef, parsedColorSpace); - } - } - - static getCached(cacheKey, xref, localColorSpaceCache) { - if (!localColorSpaceCache) { - throw new Error('ColorSpace.getCached - expected "localColorSpaceCache" argument.'); - } - - if (cacheKey instanceof _primitives.Ref) { - const localColorSpace = localColorSpaceCache.getByRef(cacheKey); - - if (localColorSpace) { - return localColorSpace; - } - - try { - cacheKey = xref.fetch(cacheKey); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - } - } - - if (cacheKey instanceof _primitives.Name) { - const localColorSpace = localColorSpaceCache.getByName(cacheKey.name); - - if (localColorSpace) { - return localColorSpace; - } - } - - return null; - } - - static async parseAsync({ - cs, - xref, - resources = null, - pdfFunctionFactory, - localColorSpaceCache - }) { - const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory); - - this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); - - return parsedColorSpace; - } - - static parse({ - cs, - xref, - resources = null, - pdfFunctionFactory, - localColorSpaceCache - }) { - const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache); - - if (cachedColorSpace) { - return cachedColorSpace; - } - - const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory); - - this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); - - return parsedColorSpace; - } - - static _parse(cs, xref, resources = null, pdfFunctionFactory) { - cs = xref.fetchIfRef(cs); - - if (cs instanceof _primitives.Name) { - switch (cs.name) { - case "G": - case "DeviceGray": - return this.singletons.gray; - - case "RGB": - case "DeviceRGB": - return this.singletons.rgb; - - case "CMYK": - case "DeviceCMYK": - return this.singletons.cmyk; - - case "Pattern": - return new PatternCS(null); - - default: - if (resources instanceof _primitives.Dict) { - const colorSpaces = resources.get("ColorSpace"); - - if (colorSpaces instanceof _primitives.Dict) { - const resourcesCS = colorSpaces.get(cs.name); - - if (resourcesCS) { - if (resourcesCS instanceof _primitives.Name) { - return this._parse(resourcesCS, xref, resources, pdfFunctionFactory); - } - - cs = resourcesCS; - break; - } - } - } - - throw new _util.FormatError(`Unrecognized ColorSpace: ${cs.name}`); - } - } - - if (Array.isArray(cs)) { - const mode = xref.fetchIfRef(cs[0]).name; - let params, numComps, baseCS, whitePoint, blackPoint, gamma; - - switch (mode) { - case "G": - case "DeviceGray": - return this.singletons.gray; - - case "RGB": - case "DeviceRGB": - return this.singletons.rgb; - - case "CMYK": - case "DeviceCMYK": - return this.singletons.cmyk; - - case "CalGray": - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray("WhitePoint"); - blackPoint = params.getArray("BlackPoint"); - gamma = params.get("Gamma"); - return new CalGrayCS(whitePoint, blackPoint, gamma); - - case "CalRGB": - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray("WhitePoint"); - blackPoint = params.getArray("BlackPoint"); - gamma = params.getArray("Gamma"); - const matrix = params.getArray("Matrix"); - return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); - - case "ICCBased": - const stream = xref.fetchIfRef(cs[1]); - const dict = stream.dict; - numComps = dict.get("N"); - const alt = dict.get("Alternate"); - - if (alt) { - const altCS = this._parse(alt, xref, resources, pdfFunctionFactory); - - if (altCS.numComps === numComps) { - return altCS; - } - - (0, _util.warn)("ICCBased color space: Ignoring incorrect /Alternate entry."); - } - - if (numComps === 1) { - return this.singletons.gray; - } else if (numComps === 3) { - return this.singletons.rgb; - } else if (numComps === 4) { - return this.singletons.cmyk; - } - - break; - - case "Pattern": - baseCS = cs[1] || null; - - if (baseCS) { - baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory); - } - - return new PatternCS(baseCS); - - case "I": - case "Indexed": - baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory); - const hiVal = xref.fetchIfRef(cs[2]) + 1; - const lookup = xref.fetchIfRef(cs[3]); - return new IndexedCS(baseCS, hiVal, lookup); - - case "Separation": - case "DeviceN": - const name = xref.fetchIfRef(cs[1]); - numComps = Array.isArray(name) ? name.length : 1; - baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory); - const tintFn = pdfFunctionFactory.create(cs[3]); - return new AlternateCS(numComps, baseCS, tintFn); - - case "Lab": - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray("WhitePoint"); - blackPoint = params.getArray("BlackPoint"); - const range = params.getArray("Range"); - return new LabCS(whitePoint, blackPoint, range); - - default: - throw new _util.FormatError(`Unimplemented ColorSpace object: ${mode}`); - } - } - - throw new _util.FormatError(`Unrecognized ColorSpace object: ${cs}`); - } - - static isDefaultDecode(decode, numComps) { - if (!Array.isArray(decode)) { - return true; - } - - if (numComps * 2 !== decode.length) { - (0, _util.warn)("The decode map is not the correct length"); - return true; - } - - for (let i = 0, ii = decode.length; i < ii; i += 2) { - if (decode[i] !== 0 || decode[i + 1] !== 1) { - return false; - } - } - - return true; - } - - static get singletons() { - return (0, _util.shadow)(this, "singletons", { - get gray() { - return (0, _util.shadow)(this, "gray", new DeviceGrayCS()); - }, - - get rgb() { - return (0, _util.shadow)(this, "rgb", new DeviceRgbCS()); - }, - - get cmyk() { - return (0, _util.shadow)(this, "cmyk", new DeviceCmykCS()); - } - - }); - } - -} - -exports.ColorSpace = ColorSpace; - -class AlternateCS extends ColorSpace { - constructor(numComps, base, tintFn) { - super("Alternate", numComps); - this.base = base; - this.tintFn = tintFn; - this.tmpBuf = new Float32Array(base.numComps); - } - - getRgbItem(src, srcOffset, dest, destOffset) { - const tmpBuf = this.tmpBuf; - this.tintFn(src, srcOffset, tmpBuf, 0); - this.base.getRgbItem(tmpBuf, 0, dest, destOffset); - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - const tintFn = this.tintFn; - const base = this.base; - const scale = 1 / ((1 << bits) - 1); - const baseNumComps = base.numComps; - const usesZeroToOneRange = base.usesZeroToOneRange; - const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0; - let pos = isPassthrough ? destOffset : 0; - const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count); - const numComps = this.numComps; - const scaled = new Float32Array(numComps); - const tinted = new Float32Array(baseNumComps); - let i, j; - - for (i = 0; i < count; i++) { - for (j = 0; j < numComps; j++) { - scaled[j] = src[srcOffset++] * scale; - } - - tintFn(scaled, 0, tinted, 0); - - if (usesZeroToOneRange) { - for (j = 0; j < baseNumComps; j++) { - baseBuf[pos++] = tinted[j] * 255; - } - } else { - base.getRgbItem(tinted, 0, baseBuf, pos); - pos += baseNumComps; - } - } - - if (!isPassthrough) { - base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); - } - } - - getOutputLength(inputLength, alpha01) { - return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01); - } - -} - -class PatternCS extends ColorSpace { - constructor(baseCS) { - super("Pattern", null); - this.base = baseCS; - } - - isDefaultDecode(decodeMap, bpc) { - (0, _util.unreachable)("Should not call PatternCS.isDefaultDecode"); - } - -} - -class IndexedCS extends ColorSpace { - constructor(base, highVal, lookup) { - super("Indexed", 1); - this.base = base; - this.highVal = highVal; - const length = base.numComps * highVal; - this.lookup = new Uint8Array(length); - - if (lookup instanceof _base_stream.BaseStream) { - const bytes = lookup.getBytes(length); - this.lookup.set(bytes); - } else if (typeof lookup === "string") { - for (let i = 0; i < length; ++i) { - this.lookup[i] = lookup.charCodeAt(i) & 0xff; - } - } else { - throw new _util.FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`); - } - } - - getRgbItem(src, srcOffset, dest, destOffset) { - const numComps = this.base.numComps; - const start = src[srcOffset] * numComps; - this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0); - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - const base = this.base; - const numComps = base.numComps; - const outputDelta = base.getOutputLength(numComps, alpha01); - const lookup = this.lookup; - - for (let i = 0; i < count; ++i) { - const lookupPos = src[srcOffset++] * numComps; - base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); - destOffset += outputDelta; - } - } - - getOutputLength(inputLength, alpha01) { - return this.base.getOutputLength(inputLength * this.base.numComps, alpha01); - } - - isDefaultDecode(decodeMap, bpc) { - if (!Array.isArray(decodeMap)) { - return true; - } - - if (decodeMap.length !== 2) { - (0, _util.warn)("Decode map length is not correct"); - return true; - } - - if (!Number.isInteger(bpc) || bpc < 1) { - (0, _util.warn)("Bits per component is not correct"); - return true; - } - - return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1; - } - -} - -class DeviceGrayCS extends ColorSpace { - constructor() { - super("DeviceGray", 1); - } - - getRgbItem(src, srcOffset, dest, destOffset) { - const c = src[srcOffset] * 255; - dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - const scale = 255 / ((1 << bits) - 1); - let j = srcOffset, - q = destOffset; - - for (let i = 0; i < count; ++i) { - const c = scale * src[j++]; - dest[q++] = c; - dest[q++] = c; - dest[q++] = c; - q += alpha01; - } - } - - getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01); - } - -} - -class DeviceRgbCS extends ColorSpace { - constructor() { - super("DeviceRGB", 3); - } - - getRgbItem(src, srcOffset, dest, destOffset) { - dest[destOffset] = src[srcOffset] * 255; - dest[destOffset + 1] = src[srcOffset + 1] * 255; - dest[destOffset + 2] = src[srcOffset + 2] * 255; - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - if (bits === 8 && alpha01 === 0) { - dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); - return; - } - - const scale = 255 / ((1 << bits) - 1); - let j = srcOffset, - q = destOffset; - - for (let i = 0; i < count; ++i) { - dest[q++] = scale * src[j++]; - dest[q++] = scale * src[j++]; - dest[q++] = scale * src[j++]; - q += alpha01; - } - } - - getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01) / 3 | 0; - } - - isPassthrough(bits) { - return bits === 8; - } - -} - -const DeviceCmykCS = function DeviceCmykCSClosure() { - function convertToRgb(src, srcOffset, srcScale, dest, destOffset) { - const c = src[srcOffset] * srcScale; - const m = src[srcOffset + 1] * srcScale; - const y = src[srcOffset + 2] * srcScale; - const k = src[srcOffset + 3] * srcScale; - dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747); - dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578); - dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367); - } - - class DeviceCmykCS extends ColorSpace { - constructor() { - super("DeviceCMYK", 4); - } - - getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(src, srcOffset, 1, dest, destOffset); - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - const scale = 1 / ((1 << bits) - 1); - - for (let i = 0; i < count; i++) { - convertToRgb(src, srcOffset, scale, dest, destOffset); - srcOffset += 4; - destOffset += 3 + alpha01; - } - } - - getOutputLength(inputLength, alpha01) { - return inputLength / 4 * (3 + alpha01) | 0; - } - - } - - return DeviceCmykCS; -}(); - -const CalGrayCS = function CalGrayCSClosure() { - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - const A = src[srcOffset] * scale; - const AG = A ** cs.G; - const L = cs.YW * AG; - const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0); - dest[destOffset] = val; - dest[destOffset + 1] = val; - dest[destOffset + 2] = val; - } - - class CalGrayCS extends ColorSpace { - constructor(whitePoint, blackPoint, gamma) { - super("CalGray", 1); - - if (!whitePoint) { - throw new _util.FormatError("WhitePoint missing - required for color space CalGray"); - } - - blackPoint = blackPoint || [0, 0, 0]; - gamma = gamma || 1; - this.XW = whitePoint[0]; - this.YW = whitePoint[1]; - this.ZW = whitePoint[2]; - this.XB = blackPoint[0]; - this.YB = blackPoint[1]; - this.ZB = blackPoint[2]; - this.G = gamma; - - if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { - throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback available"); - } - - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - (0, _util.info)(`Invalid BlackPoint for ${this.name}, falling back to default.`); - this.XB = this.YB = this.ZB = 0; - } - - if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) { - (0, _util.warn)(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`); - } - - if (this.G < 1) { - (0, _util.info)(`Invalid Gamma: ${this.G} for ${this.name}, ` + "falling back to default."); - this.G = 1; - } - } - - getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - const scale = 1 / ((1 << bits) - 1); - - for (let i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 1; - destOffset += 3 + alpha01; - } - } - - getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01); - } - - } - - return CalGrayCS; -}(); - -const CalRGBCS = function CalRGBCSClosure() { - const BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]); - const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]); - const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]); - const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); - const tempNormalizeMatrix = new Float32Array(3); - const tempConvertMatrix1 = new Float32Array(3); - const tempConvertMatrix2 = new Float32Array(3); - const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0; - - function matrixProduct(a, b, result) { - result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; - result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; - result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; - } - - function convertToFlat(sourceWhitePoint, LMS, result) { - result[0] = LMS[0] * 1 / sourceWhitePoint[0]; - result[1] = LMS[1] * 1 / sourceWhitePoint[1]; - result[2] = LMS[2] * 1 / sourceWhitePoint[2]; - } - - function convertToD65(sourceWhitePoint, LMS, result) { - const D65X = 0.95047; - const D65Y = 1; - const D65Z = 1.08883; - result[0] = LMS[0] * D65X / sourceWhitePoint[0]; - result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; - result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; - } - - function sRGBTransferFunction(color) { - if (color <= 0.0031308) { - return adjustToRange(0, 1, 12.92 * color); - } - - if (color >= 0.99554525) { - return 1; - } - - return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055); - } - - function adjustToRange(min, max, value) { - return Math.max(min, Math.min(max, value)); - } - - function decodeL(L) { - if (L < 0) { - return -decodeL(-L); - } - - if (L > 8.0) { - return ((L + 16) / 116) ** 3; - } - - return L * DECODE_L_CONSTANT; - } - - function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { - if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) { - result[0] = XYZ_Flat[0]; - result[1] = XYZ_Flat[1]; - result[2] = XYZ_Flat[2]; - return; - } - - const zeroDecodeL = decodeL(0); - const X_DST = zeroDecodeL; - const X_SRC = decodeL(sourceBlackPoint[0]); - const Y_DST = zeroDecodeL; - const Y_SRC = decodeL(sourceBlackPoint[1]); - const Z_DST = zeroDecodeL; - const Z_SRC = decodeL(sourceBlackPoint[2]); - const X_Scale = (1 - X_DST) / (1 - X_SRC); - const X_Offset = 1 - X_Scale; - const Y_Scale = (1 - Y_DST) / (1 - Y_SRC); - const Y_Offset = 1 - Y_Scale; - const Z_Scale = (1 - Z_DST) / (1 - Z_SRC); - const Z_Offset = 1 - Z_Scale; - result[0] = XYZ_Flat[0] * X_Scale + X_Offset; - result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; - result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; - } - - function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { - if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { - result[0] = XYZ_In[0]; - result[1] = XYZ_In[1]; - result[2] = XYZ_In[2]; - return; - } - - const LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - const LMS_Flat = tempNormalizeMatrix; - convertToFlat(sourceWhitePoint, LMS, LMS_Flat); - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); - } - - function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { - const LMS = result; - matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); - const LMS_D65 = tempNormalizeMatrix; - convertToD65(sourceWhitePoint, LMS, LMS_D65); - matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); - } - - function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { - const A = adjustToRange(0, 1, src[srcOffset] * scale); - const B = adjustToRange(0, 1, src[srcOffset + 1] * scale); - const C = adjustToRange(0, 1, src[srcOffset + 2] * scale); - const AGR = A === 1 ? 1 : A ** cs.GR; - const BGG = B === 1 ? 1 : B ** cs.GG; - const CGB = C === 1 ? 1 : C ** cs.GB; - const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB; - const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB; - const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB; - const XYZ = tempConvertMatrix1; - XYZ[0] = X; - XYZ[1] = Y; - XYZ[2] = Z; - const XYZ_Flat = tempConvertMatrix2; - normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat); - const XYZ_Black = tempConvertMatrix1; - compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black); - const XYZ_D65 = tempConvertMatrix2; - normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); - const SRGB = tempConvertMatrix1; - matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); - dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255; - dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255; - dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255; - } - - class CalRGBCS extends ColorSpace { - constructor(whitePoint, blackPoint, gamma, matrix) { - super("CalRGB", 3); - - if (!whitePoint) { - throw new _util.FormatError("WhitePoint missing - required for color space CalRGB"); - } - - blackPoint = blackPoint || new Float32Array(3); - gamma = gamma || new Float32Array([1, 1, 1]); - matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); - const XW = whitePoint[0]; - const YW = whitePoint[1]; - const ZW = whitePoint[2]; - this.whitePoint = whitePoint; - const XB = blackPoint[0]; - const YB = blackPoint[1]; - const ZB = blackPoint[2]; - this.blackPoint = blackPoint; - this.GR = gamma[0]; - this.GG = gamma[1]; - this.GB = gamma[2]; - this.MXA = matrix[0]; - this.MYA = matrix[1]; - this.MZA = matrix[2]; - this.MXB = matrix[3]; - this.MYB = matrix[4]; - this.MZB = matrix[5]; - this.MXC = matrix[6]; - this.MYC = matrix[7]; - this.MZC = matrix[8]; - - if (XW < 0 || ZW < 0 || YW !== 1) { - throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback available"); - } - - if (XB < 0 || YB < 0 || ZB < 0) { - (0, _util.info)(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + "falling back to default."); - this.blackPoint = new Float32Array(3); - } - - if (this.GR < 0 || this.GG < 0 || this.GB < 0) { - (0, _util.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`); - this.GR = this.GG = this.GB = 1; - } - } - - getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, dest, destOffset, 1); - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - const scale = 1 / ((1 << bits) - 1); - - for (let i = 0; i < count; ++i) { - convertToRgb(this, src, srcOffset, dest, destOffset, scale); - srcOffset += 3; - destOffset += 3 + alpha01; - } - } - - getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01) / 3 | 0; - } - - } - - return CalRGBCS; -}(); - -const LabCS = function LabCSClosure() { - function fn_g(x) { - let result; - - if (x >= 6 / 29) { - result = x ** 3; - } else { - result = 108 / 841 * (x - 4 / 29); - } - - return result; - } - - function decode(value, high1, low2, high2) { - return low2 + value * (high2 - low2) / high1; - } - - function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) { - let Ls = src[srcOffset]; - let as = src[srcOffset + 1]; - let bs = src[srcOffset + 2]; - - if (maxVal !== false) { - Ls = decode(Ls, maxVal, 0, 100); - as = decode(as, maxVal, cs.amin, cs.amax); - bs = decode(bs, maxVal, cs.bmin, cs.bmax); - } - - if (as > cs.amax) { - as = cs.amax; - } else if (as < cs.amin) { - as = cs.amin; - } - - if (bs > cs.bmax) { - bs = cs.bmax; - } else if (bs < cs.bmin) { - bs = cs.bmin; - } - - const M = (Ls + 16) / 116; - const L = M + as / 500; - const N = M - bs / 200; - const X = cs.XW * fn_g(L); - const Y = cs.YW * fn_g(M); - const Z = cs.ZW * fn_g(N); - let r, g, b; - - if (cs.ZW < 1) { - r = X * 3.1339 + Y * -1.617 + Z * -0.4906; - g = X * -0.9785 + Y * 1.916 + Z * 0.0333; - b = X * 0.072 + Y * -0.229 + Z * 1.4057; - } else { - r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; - g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; - b = X * 0.0557 + Y * -0.204 + Z * 1.057; - } - - dest[destOffset] = Math.sqrt(r) * 255; - dest[destOffset + 1] = Math.sqrt(g) * 255; - dest[destOffset + 2] = Math.sqrt(b) * 255; - } - - class LabCS extends ColorSpace { - constructor(whitePoint, blackPoint, range) { - super("Lab", 3); - - if (!whitePoint) { - throw new _util.FormatError("WhitePoint missing - required for color space Lab"); - } - - blackPoint = blackPoint || [0, 0, 0]; - range = range || [-100, 100, -100, 100]; - this.XW = whitePoint[0]; - this.YW = whitePoint[1]; - this.ZW = whitePoint[2]; - this.amin = range[0]; - this.amax = range[1]; - this.bmin = range[2]; - this.bmax = range[3]; - this.XB = blackPoint[0]; - this.YB = blackPoint[1]; - this.ZB = blackPoint[2]; - - if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { - throw new _util.FormatError("Invalid WhitePoint components, no fallback available"); - } - - if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { - (0, _util.info)("Invalid BlackPoint, falling back to default"); - this.XB = this.YB = this.ZB = 0; - } - - if (this.amin > this.amax || this.bmin > this.bmax) { - (0, _util.info)("Invalid Range, falling back to defaults"); - this.amin = -100; - this.amax = 100; - this.bmin = -100; - this.bmax = 100; - } - } - - getRgbItem(src, srcOffset, dest, destOffset) { - convertToRgb(this, src, srcOffset, false, dest, destOffset); - } - - getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { - const maxVal = (1 << bits) - 1; - - for (let i = 0; i < count; i++) { - convertToRgb(this, src, srcOffset, maxVal, dest, destOffset); - srcOffset += 3; - destOffset += 3 + alpha01; - } - } - - getOutputLength(inputLength, alpha01) { - return inputLength * (3 + alpha01) / 3 | 0; - } - - isDefaultDecode(decodeMap, bpc) { - return true; - } - - get usesZeroToOneRange() { - return (0, _util.shadow)(this, "usesZeroToOneRange", false); - } - - } - - return LabCS; -}(); - -/***/ }), -/* 25 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0; - -var _util = __w_pdfjs_require__(2); - -var _cmap = __w_pdfjs_require__(26); - -var _primitives = __w_pdfjs_require__(5); - -var _fonts = __w_pdfjs_require__(44); - -var _fonts_utils = __w_pdfjs_require__(18); - -var _encodings = __w_pdfjs_require__(19); - -var _standard_fonts = __w_pdfjs_require__(47); - -var _unicode = __w_pdfjs_require__(21); - -var _pattern = __w_pdfjs_require__(56); - -var _xfa_fonts = __w_pdfjs_require__(12); - -var _to_unicode_map = __w_pdfjs_require__(48); - -var _function = __w_pdfjs_require__(57); - -var _parser = __w_pdfjs_require__(27); - -var _image_utils = __w_pdfjs_require__(59); - -var _stream = __w_pdfjs_require__(10); - -var _base_stream = __w_pdfjs_require__(9); - -var _bidi = __w_pdfjs_require__(60); - -var _colorspace = __w_pdfjs_require__(24); - -var _decode_stream = __w_pdfjs_require__(29); - -var _glyphlist = __w_pdfjs_require__(20); - -var _core_utils = __w_pdfjs_require__(8); - -var _metrics = __w_pdfjs_require__(51); - -var _murmurhash = __w_pdfjs_require__(61); - -var _operator_list = __w_pdfjs_require__(62); - -var _image = __w_pdfjs_require__(63); - -const DefaultPartialEvaluatorOptions = Object.freeze({ - maxImageSize: -1, - disableFontFace: false, - ignoreErrors: false, - isEvalSupported: true, - fontExtraProperties: false, - useSystemFonts: true, - cMapUrl: null, - standardFontDataUrl: null -}); -const PatternType = { - TILING: 1, - SHADING: 2 -}; -const TEXT_CHUNK_BATCH_SIZE = 10; -const deferred = Promise.resolve(); - -function normalizeBlendMode(value, parsingArray = false) { - if (Array.isArray(value)) { - for (let i = 0, ii = value.length; i < ii; i++) { - const maybeBM = normalizeBlendMode(value[i], true); - - if (maybeBM) { - return maybeBM; - } - } - - (0, _util.warn)(`Unsupported blend mode Array: ${value}`); - return "source-over"; - } - - if (!(value instanceof _primitives.Name)) { - if (parsingArray) { - return null; - } - - return "source-over"; - } - - switch (value.name) { - case "Normal": - case "Compatible": - return "source-over"; - - case "Multiply": - return "multiply"; - - case "Screen": - return "screen"; - - case "Overlay": - return "overlay"; - - case "Darken": - return "darken"; - - case "Lighten": - return "lighten"; - - case "ColorDodge": - return "color-dodge"; - - case "ColorBurn": - return "color-burn"; - - case "HardLight": - return "hard-light"; - - case "SoftLight": - return "soft-light"; - - case "Difference": - return "difference"; - - case "Exclusion": - return "exclusion"; - - case "Hue": - return "hue"; - - case "Saturation": - return "saturation"; - - case "Color": - return "color"; - - case "Luminosity": - return "luminosity"; - } - - if (parsingArray) { - return null; - } - - (0, _util.warn)(`Unsupported blend mode: ${value.name}`); - return "source-over"; -} - -function incrementCachedImageMaskCount(data) { - if (data.fn === _util.OPS.paintImageMaskXObject && data.args[0] && data.args[0].count > 0) { - data.args[0].count++; - } -} - -class TimeSlotManager { - static get TIME_SLOT_DURATION_MS() { - return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20); - } - - static get CHECK_TIME_EVERY() { - return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100); - } - - constructor() { - this.reset(); - } - - check() { - if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) { - return false; - } - - this.checked = 0; - return this.endTime <= Date.now(); - } - - reset() { - this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; - this.checked = 0; - } - -} - -class PartialEvaluator { - constructor({ - xref, - handler, - pageIndex, - idFactory, - fontCache, - builtInCMapCache, - standardFontDataCache, - globalImageCache, - options = null - }) { - this.xref = xref; - this.handler = handler; - this.pageIndex = pageIndex; - this.idFactory = idFactory; - this.fontCache = fontCache; - this.builtInCMapCache = builtInCMapCache; - this.standardFontDataCache = standardFontDataCache; - this.globalImageCache = globalImageCache; - this.options = options || DefaultPartialEvaluatorOptions; - this.parsingType3Font = false; - this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); - } - - get _pdfFunctionFactory() { - const pdfFunctionFactory = new _function.PDFFunctionFactory({ - xref: this.xref, - isEvalSupported: this.options.isEvalSupported - }); - return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory); - } - - clone(newOptions = null) { - const newEvaluator = Object.create(this); - newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions); - return newEvaluator; - } - - hasBlendModes(resources, nonBlendModesSet) { - if (!(resources instanceof _primitives.Dict)) { - return false; - } - - if (resources.objId && nonBlendModesSet.has(resources.objId)) { - return false; - } - - const processed = new _primitives.RefSet(nonBlendModesSet); - - if (resources.objId) { - processed.put(resources.objId); - } - - const nodes = [resources], - xref = this.xref; - - while (nodes.length) { - const node = nodes.shift(); - const graphicStates = node.get("ExtGState"); - - if (graphicStates instanceof _primitives.Dict) { - for (let graphicState of graphicStates.getRawValues()) { - if (graphicState instanceof _primitives.Ref) { - if (processed.has(graphicState)) { - continue; - } - - try { - graphicState = xref.fetch(graphicState); - } catch (ex) { - processed.put(graphicState); - (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`); - continue; - } - } - - if (!(graphicState instanceof _primitives.Dict)) { - continue; - } - - if (graphicState.objId) { - processed.put(graphicState.objId); - } - - const bm = graphicState.get("BM"); - - if (bm instanceof _primitives.Name) { - if (bm.name !== "Normal") { - return true; - } - - continue; - } - - if (bm !== undefined && Array.isArray(bm)) { - for (const element of bm) { - if (element instanceof _primitives.Name && element.name !== "Normal") { - return true; - } - } - } - } - } - - const xObjects = node.get("XObject"); - - if (!(xObjects instanceof _primitives.Dict)) { - continue; - } - - for (let xObject of xObjects.getRawValues()) { - if (xObject instanceof _primitives.Ref) { - if (processed.has(xObject)) { - continue; - } - - try { - xObject = xref.fetch(xObject); - } catch (ex) { - processed.put(xObject); - (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`); - continue; - } - } - - if (!(xObject instanceof _base_stream.BaseStream)) { - continue; - } - - if (xObject.dict.objId) { - processed.put(xObject.dict.objId); - } - - const xResources = xObject.dict.get("Resources"); - - if (!(xResources instanceof _primitives.Dict)) { - continue; - } - - if (xResources.objId && processed.has(xResources.objId)) { - continue; - } - - nodes.push(xResources); - - if (xResources.objId) { - processed.put(xResources.objId); - } - } - } - - for (const ref of processed) { - nonBlendModesSet.put(ref); - } - - return false; - } - - async fetchBuiltInCMap(name) { - const cachedData = this.builtInCMapCache.get(name); - - if (cachedData) { - return cachedData; - } - - let data; - - if (this.options.cMapUrl !== null) { - const url = `${this.options.cMapUrl}${name}.bcmap`; - const response = await fetch(url); - - if (!response.ok) { - throw new Error(`fetchBuiltInCMap: failed to fetch file "${url}" with "${response.statusText}".`); - } - - data = { - cMapData: new Uint8Array(await response.arrayBuffer()), - compressionType: _util.CMapCompressionType.BINARY - }; - } else { - data = await this.handler.sendWithPromise("FetchBuiltInCMap", { - name - }); - } - - if (data.compressionType !== _util.CMapCompressionType.NONE) { - this.builtInCMapCache.set(name, data); - } - - return data; - } - - async fetchStandardFontData(name) { - const cachedData = this.standardFontDataCache.get(name); - - if (cachedData) { - return new _stream.Stream(cachedData); - } - - if (this.options.useSystemFonts && name !== "Symbol" && name !== "ZapfDingbats") { - return null; - } - - const standardFontNameToFileName = (0, _standard_fonts.getFontNameToFileMap)(), - filename = standardFontNameToFileName[name]; - let data; - - if (this.options.standardFontDataUrl !== null) { - const url = `${this.options.standardFontDataUrl}${filename}`; - const response = await fetch(url); - - if (!response.ok) { - (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${url}" with "${response.statusText}".`); - } else { - data = await response.arrayBuffer(); - } - } else { - try { - data = await this.handler.sendWithPromise("FetchStandardFontData", { - filename - }); - } catch (e) { - (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${filename}" with "${e}".`); - } - } - - if (!data) { - return null; - } - - this.standardFontDataCache.set(name, data); - return new _stream.Stream(data); - } - - async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) { - const dict = xobj.dict; - const matrix = dict.getArray("Matrix"); - let bbox = dict.getArray("BBox"); - - if (Array.isArray(bbox) && bbox.length === 4) { - bbox = _util.Util.normalizeRect(bbox); - } else { - bbox = null; - } - - let optionalContent, groupOptions; - - if (dict.has("OC")) { - optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); - } - - if (optionalContent !== undefined) { - operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); - } - - const group = dict.get("Group"); - - if (group) { - groupOptions = { - matrix, - bbox, - smask, - isolated: false, - knockout: false - }; - const groupSubtype = group.get("S"); - let colorSpace = null; - - if ((0, _primitives.isName)(groupSubtype, "Transparency")) { - groupOptions.isolated = group.get("I") || false; - groupOptions.knockout = group.get("K") || false; - - if (group.has("CS")) { - const cs = group.getRaw("CS"); - - const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache); - - if (cachedColorSpace) { - colorSpace = cachedColorSpace; - } else { - colorSpace = await this.parseColorSpace({ - cs, - resources, - localColorSpaceCache - }); - } - } - } - - if (smask && smask.backdrop) { - colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb; - smask.backdrop = colorSpace.getRgb(smask.backdrop, 0); - } - - operatorList.addOp(_util.OPS.beginGroup, [groupOptions]); - } - - const args = group ? [matrix, null] : [matrix, bbox]; - operatorList.addOp(_util.OPS.paintFormXObjectBegin, args); - return this.getOperatorList({ - stream: xobj, - task, - resources: dict.get("Resources") || resources, - operatorList, - initialState - }).then(function () { - operatorList.addOp(_util.OPS.paintFormXObjectEnd, []); - - if (group) { - operatorList.addOp(_util.OPS.endGroup, [groupOptions]); - } - - if (optionalContent !== undefined) { - operatorList.addOp(_util.OPS.endMarkedContent, []); - } - }); - } - - _sendImgData(objId, imgData, cacheGlobally = false) { - const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null; - - if (this.parsingType3Font || cacheGlobally) { - return this.handler.send("commonobj", [objId, "Image", imgData], transfers); - } - - return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers); - } - - async buildPaintImageXObject({ - resources, - image, - isInline = false, - operatorList, - cacheKey, - localImageCache, - localColorSpaceCache - }) { - const dict = image.dict; - const imageRef = dict.objId; - const w = dict.get("W", "Width"); - const h = dict.get("H", "Height"); - - if (!(w && typeof w === "number") || !(h && typeof h === "number")) { - (0, _util.warn)("Image dimensions are missing, or not numbers."); - return; - } - - const maxImageSize = this.options.maxImageSize; - - if (maxImageSize !== -1 && w * h > maxImageSize) { - const msg = "Image exceeded maximum allowed size and was removed."; - - if (this.options.ignoreErrors) { - (0, _util.warn)(msg); - return; - } - - throw new Error(msg); - } - - let optionalContent; - - if (dict.has("OC")) { - optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); - } - - const imageMask = dict.get("IM", "ImageMask") || false; - let imgData, args; - - if (imageMask) { - const interpolate = dict.get("I", "Interpolate"); - const bitStrideLength = w + 7 >> 3; - const imgArray = image.getBytes(bitStrideLength * h); - const decode = dict.getArray("D", "Decode"); - - if (this.parsingType3Font) { - imgData = _image.PDFImage.createRawMask({ - imgArray, - width: w, - height: h, - imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream, - inverseDecode: !!decode && decode[0] > 0, - interpolate - }); - imgData.cached = !!cacheKey; - args = [imgData]; - operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); - - if (cacheKey) { - localImageCache.set(cacheKey, imageRef, { - fn: _util.OPS.paintImageMaskXObject, - args, - optionalContent - }); - } - - return; - } - - imgData = _image.PDFImage.createMask({ - imgArray, - width: w, - height: h, - imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream, - inverseDecode: !!decode && decode[0] > 0, - interpolate - }); - - if (imgData.isSingleOpaquePixel) { - operatorList.addImageOps(_util.OPS.paintSolidColorImageMask, [], optionalContent); - - if (cacheKey) { - localImageCache.set(cacheKey, imageRef, { - fn: _util.OPS.paintSolidColorImageMask, - args: [], - optionalContent - }); - } - - return; - } - - const objId = `mask_${this.idFactory.createObjId()}`; - operatorList.addDependency(objId); - - this._sendImgData(objId, imgData); - - args = [{ - data: objId, - width: imgData.width, - height: imgData.height, - interpolate: imgData.interpolate, - count: 1 - }]; - operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); - - if (cacheKey) { - localImageCache.set(cacheKey, imageRef, { - fn: _util.OPS.paintImageMaskXObject, - args, - optionalContent - }); - } - - return; - } - - const softMask = dict.get("SM", "SMask") || false; - const mask = dict.get("Mask") || false; - const SMALL_IMAGE_DIMENSIONS = 200; - - if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) { - const imageObj = new _image.PDFImage({ - xref: this.xref, - res: resources, - image, - isInline, - pdfFunctionFactory: this._pdfFunctionFactory, - localColorSpaceCache - }); - imgData = imageObj.createImageData(true); - operatorList.addImageOps(_util.OPS.paintInlineImageXObject, [imgData], optionalContent); - return; - } - - let objId = `img_${this.idFactory.createObjId()}`, - cacheGlobally = false; - - if (this.parsingType3Font) { - objId = `${this.idFactory.getDocId()}_type3_${objId}`; - } else if (imageRef) { - cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex); - - if (cacheGlobally) { - objId = `${this.idFactory.getDocId()}_${objId}`; - } - } - - operatorList.addDependency(objId); - args = [objId, w, h]; - - _image.PDFImage.buildImage({ - xref: this.xref, - res: resources, - image, - isInline, - pdfFunctionFactory: this._pdfFunctionFactory, - localColorSpaceCache - }).then(imageObj => { - imgData = imageObj.createImageData(false); - - if (cacheKey && imageRef && cacheGlobally) { - this.globalImageCache.addByteSize(imageRef, imgData.data.length); - } - - return this._sendImgData(objId, imgData, cacheGlobally); - }).catch(reason => { - (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`); - return this._sendImgData(objId, null, cacheGlobally); - }); - - operatorList.addImageOps(_util.OPS.paintImageXObject, args, optionalContent); - - if (cacheKey) { - localImageCache.set(cacheKey, imageRef, { - fn: _util.OPS.paintImageXObject, - args, - optionalContent - }); - - if (imageRef) { - (0, _util.assert)(!isInline, "Cannot cache an inline image globally."); - this.globalImageCache.addPageIndex(imageRef, this.pageIndex); - - if (cacheGlobally) { - this.globalImageCache.setData(imageRef, { - objId, - fn: _util.OPS.paintImageXObject, - args, - optionalContent, - byteSize: 0 - }); - } - } - } - } - - handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) { - const smaskContent = smask.get("G"); - const smaskOptions = { - subtype: smask.get("S").name, - backdrop: smask.get("BC") - }; - const transferObj = smask.get("TR"); - - if ((0, _function.isPDFFunction)(transferObj)) { - const transferFn = this._pdfFunctionFactory.create(transferObj); - - const transferMap = new Uint8Array(256); - const tmp = new Float32Array(1); - - for (let i = 0; i < 256; i++) { - tmp[0] = i / 255; - transferFn(tmp, 0, tmp, 0); - transferMap[i] = tmp[0] * 255 | 0; - } - - smaskOptions.transferMap = transferMap; - } - - return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache); - } - - handleTransferFunction(tr) { - let transferArray; - - if (Array.isArray(tr)) { - transferArray = tr; - } else if ((0, _function.isPDFFunction)(tr)) { - transferArray = [tr]; - } else { - return null; - } - - const transferMaps = []; - let numFns = 0, - numEffectfulFns = 0; - - for (const entry of transferArray) { - const transferObj = this.xref.fetchIfRef(entry); - numFns++; - - if ((0, _primitives.isName)(transferObj, "Identity")) { - transferMaps.push(null); - continue; - } else if (!(0, _function.isPDFFunction)(transferObj)) { - return null; - } - - const transferFn = this._pdfFunctionFactory.create(transferObj); - - const transferMap = new Uint8Array(256), - tmp = new Float32Array(1); - - for (let j = 0; j < 256; j++) { - tmp[0] = j / 255; - transferFn(tmp, 0, tmp, 0); - transferMap[j] = tmp[0] * 255 | 0; - } - - transferMaps.push(transferMap); - numEffectfulFns++; - } - - if (!(numFns === 1 || numFns === 4)) { - return null; - } - - if (numEffectfulFns === 0) { - return null; - } - - return transferMaps; - } - - handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) { - const tilingOpList = new _operator_list.OperatorList(); - - const patternResources = _primitives.Dict.merge({ - xref: this.xref, - dictArray: [patternDict.get("Resources"), resources] - }); - - return this.getOperatorList({ - stream: pattern, - task, - resources: patternResources, - operatorList: tilingOpList - }).then(function () { - const operatorListIR = tilingOpList.getIR(); - const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color); - operatorList.addDependencies(tilingOpList.dependencies); - operatorList.addOp(fn, tilingPatternIR); - - if (patternDict.objId) { - localTilingPatternCache.set(null, patternDict.objId, { - operatorListIR, - dict: patternDict - }); - } - }).catch(reason => { - if (reason instanceof _util.AbortException) { - return; - } - - if (this.options.ignoreErrors) { - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern - }); - (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`); - return; - } - - throw reason; - }); - } - - handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null) { - const fontName = fontArgs && fontArgs[0] instanceof _primitives.Name ? fontArgs[0].name : null; - return this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo).then(translated => { - if (!translated.font.isType3Font) { - return translated; - } - - return translated.loadType3Data(this, resources, task).then(function () { - operatorList.addDependencies(translated.type3Dependencies); - return translated; - }).catch(reason => { - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3 - }); - return new TranslatedFont({ - loadedName: "g_font_error", - font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`), - dict: translated.font, - evaluatorOptions: this.options - }); - }); - }).then(translated => { - state.font = translated.font; - translated.send(this.handler); - return translated.loadedName; - }); - } - - handleText(chars, state) { - const font = state.font; - const glyphs = font.charsToGlyphs(chars); - - if (font.data) { - const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); - - if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || this.options.disableFontFace) { - PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options); - } - } - - return glyphs; - } - - ensureStateFont(state) { - if (state.font) { - return; - } - - const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator."); - - if (this.options.ignoreErrors) { - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorFontState - }); - (0, _util.warn)(`ensureStateFont: "${reason}".`); - return; - } - - throw reason; - } - - async setGState({ - resources, - gState, - operatorList, - cacheKey, - task, - stateManager, - localGStateCache, - localColorSpaceCache - }) { - const gStateRef = gState.objId; - let isSimpleGState = true; - const gStateObj = []; - const gStateKeys = gState.getKeys(); - let promise = Promise.resolve(); - - for (let i = 0, ii = gStateKeys.length; i < ii; i++) { - const key = gStateKeys[i]; - const value = gState.get(key); - - switch (key) { - case "Type": - break; - - case "LW": - case "LC": - case "LJ": - case "ML": - case "D": - case "RI": - case "FL": - case "CA": - case "ca": - gStateObj.push([key, value]); - break; - - case "Font": - isSimpleGState = false; - promise = promise.then(() => { - return this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) { - operatorList.addDependency(loadedName); - gStateObj.push([key, [loadedName, value[1]]]); - }); - }); - break; - - case "BM": - gStateObj.push([key, normalizeBlendMode(value)]); - break; - - case "SMask": - if ((0, _primitives.isName)(value, "None")) { - gStateObj.push([key, false]); - break; - } - - if (value instanceof _primitives.Dict) { - isSimpleGState = false; - promise = promise.then(() => { - return this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache); - }); - gStateObj.push([key, true]); - } else { - (0, _util.warn)("Unsupported SMask type"); - } - - break; - - case "TR": - const transferMaps = this.handleTransferFunction(value); - gStateObj.push([key, transferMaps]); - break; - - case "OP": - case "op": - case "OPM": - case "BG": - case "BG2": - case "UCR": - case "UCR2": - case "TR2": - case "HT": - case "SM": - case "SA": - case "AIS": - case "TK": - (0, _util.info)("graphic state operator " + key); - break; - - default: - (0, _util.info)("Unknown graphic state operator " + key); - break; - } - } - - return promise.then(function () { - if (gStateObj.length > 0) { - operatorList.addOp(_util.OPS.setGState, [gStateObj]); - } - - if (isSimpleGState) { - localGStateCache.set(cacheKey, gStateRef, gStateObj); - } - }); - } - - loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) { - const errorFont = async () => { - return new TranslatedFont({ - loadedName: "g_font_error", - font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`), - dict: font, - evaluatorOptions: this.options - }); - }; - - const xref = this.xref; - let fontRef; - - if (font) { - if (!(font instanceof _primitives.Ref)) { - throw new _util.FormatError('The "font" object should be a reference.'); - } - - fontRef = font; - } else { - const fontRes = resources.get("Font"); - - if (fontRes) { - fontRef = fontRes.getRaw(fontName); - } - } - - if (!fontRef) { - const partialMsg = `Font "${fontName || font && font.toString()}" is not available`; - - if (!this.options.ignoreErrors && !this.parsingType3Font) { - (0, _util.warn)(`${partialMsg}.`); - return errorFont(); - } - - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing - }); - (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`); - - if (fallbackFontDict) { - fontRef = fallbackFontDict; - } else { - fontRef = PartialEvaluator.fallbackFontDict; - } - } - - if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) { - return errorFont(); - } - - if (this.fontCache.has(fontRef)) { - return this.fontCache.get(fontRef); - } - - font = xref.fetchIfRef(fontRef); - - if (!(font instanceof _primitives.Dict)) { - return errorFont(); - } - - if (font.cacheKey && this.fontCache.has(font.cacheKey)) { - return this.fontCache.get(font.cacheKey); - } - - const fontCapability = (0, _util.createPromiseCapability)(); - let preEvaluatedFont; - - try { - preEvaluatedFont = this.preEvaluateFont(font); - preEvaluatedFont.cssFontInfo = cssFontInfo; - } catch (reason) { - (0, _util.warn)(`loadFont - preEvaluateFont failed: "${reason}".`); - return errorFont(); - } - - const { - descriptor, - hash - } = preEvaluatedFont; - const fontRefIsRef = fontRef instanceof _primitives.Ref; - let fontID; - - if (fontRefIsRef) { - fontID = `f${fontRef.toString()}`; - } - - if (hash && descriptor instanceof _primitives.Dict) { - if (!descriptor.fontAliases) { - descriptor.fontAliases = Object.create(null); - } - - const fontAliases = descriptor.fontAliases; - - if (fontAliases[hash]) { - const aliasFontRef = fontAliases[hash].aliasRef; - - if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) { - this.fontCache.putAlias(fontRef, aliasFontRef); - return this.fontCache.get(fontRef); - } - } else { - fontAliases[hash] = { - fontID: this.idFactory.createFontId() - }; - } - - if (fontRefIsRef) { - fontAliases[hash].aliasRef = fontRef; - } - - fontID = fontAliases[hash].fontID; - } - - if (fontRefIsRef) { - this.fontCache.put(fontRef, fontCapability.promise); - } else { - if (!fontID) { - fontID = this.idFactory.createFontId(); - } - - 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}`; - this.translateFont(preEvaluatedFont).then(translatedFont => { - if (translatedFont.fontType !== undefined) { - xref.stats.addFontType(translatedFont.fontType); - } - - fontCapability.resolve(new TranslatedFont({ - loadedName: font.loadedName, - font: translatedFont, - dict: font, - evaluatorOptions: this.options - })); - }).catch(reason => { - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate - }); - (0, _util.warn)(`loadFont - translateFont failed: "${reason}".`); - - try { - const fontFile3 = descriptor && descriptor.get("FontFile3"); - const subtype = fontFile3 && fontFile3.get("Subtype"); - const fontType = (0, _fonts_utils.getFontType)(preEvaluatedFont.type, subtype && subtype.name); - - if (fontType !== undefined) { - xref.stats.addFontType(fontType); - } - } catch (ex) {} - - fontCapability.resolve(new TranslatedFont({ - loadedName: font.loadedName, - font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), - dict: font, - evaluatorOptions: this.options - })); - }); - return fontCapability.promise; - } - - buildPath(operatorList, fn, args, parsingText = false) { - const lastIndex = operatorList.length - 1; - - if (!args) { - args = []; - } - - let minMax; - - if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) { - if (parsingText) { - (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`); - operatorList.addOp(_util.OPS.save, null); - } - - minMax = [Infinity, -Infinity, Infinity, -Infinity]; - operatorList.addOp(_util.OPS.constructPath, [[fn], args, minMax]); - - if (parsingText) { - operatorList.addOp(_util.OPS.restore, null); - } - } else { - const opArgs = operatorList.argsArray[lastIndex]; - opArgs[0].push(fn); - Array.prototype.push.apply(opArgs[1], args); - minMax = opArgs[2]; - } - - switch (fn) { - case _util.OPS.rectangle: - minMax[0] = Math.min(minMax[0], args[0], args[0] + args[2]); - minMax[1] = Math.max(minMax[1], args[0], args[0] + args[2]); - minMax[2] = Math.min(minMax[2], args[1], args[1] + args[3]); - minMax[3] = Math.max(minMax[3], args[1], args[1] + args[3]); - break; - - case _util.OPS.moveTo: - case _util.OPS.lineTo: - minMax[0] = Math.min(minMax[0], args[0]); - minMax[1] = Math.max(minMax[1], args[0]); - minMax[2] = Math.min(minMax[2], args[1]); - minMax[3] = Math.max(minMax[3], args[1]); - break; - } - } - - parseColorSpace({ - cs, - resources, - localColorSpaceCache - }) { - return _colorspace.ColorSpace.parseAsync({ - cs, - xref: this.xref, - resources, - pdfFunctionFactory: this._pdfFunctionFactory, - localColorSpaceCache - }).catch(reason => { - if (reason instanceof _util.AbortException) { - return null; - } - - if (this.options.ignoreErrors) { - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace - }); - (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`); - return null; - } - - throw reason; - }); - } - - parseShading({ - shading, - resources, - localColorSpaceCache, - localShadingPatternCache - }) { - let id = localShadingPatternCache.get(shading); - - if (!id) { - var shadingFill = _pattern.Pattern.parseShading(shading, this.xref, resources, this.handler, this._pdfFunctionFactory, localColorSpaceCache); - - const patternIR = shadingFill.getIR(); - id = `pattern_${this.idFactory.createObjId()}`; - localShadingPatternCache.set(shading, id); - this.handler.send("obj", [id, this.pageIndex, "Pattern", patternIR]); - } - - return id; - } - - handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache) { - const patternName = args.pop(); - - if (patternName instanceof _primitives.Name) { - const rawPattern = patterns.getRaw(patternName.name); - const localTilingPattern = rawPattern instanceof _primitives.Ref && localTilingPatternCache.getByRef(rawPattern); - - 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) {} - } - - const pattern = this.xref.fetchIfRef(rawPattern); - - if (pattern) { - const dict = pattern instanceof _base_stream.BaseStream ? pattern.dict : pattern; - const 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, localTilingPatternCache); - } else if (typeNum === PatternType.SHADING) { - const shading = dict.get("Shading"); - const matrix = dict.getArray("Matrix"); - const objId = this.parseShading({ - shading, - resources, - localColorSpaceCache, - localShadingPatternCache - }); - operatorList.addOp(fn, ["Shading", objId, matrix]); - return undefined; - } - - throw new _util.FormatError(`Unknown PatternType: ${typeNum}`); - } - } - - throw new _util.FormatError(`Unknown PatternName: ${patternName}`); - } - - _parseVisibilityExpression(array, nestingCounter, currentResult) { - const MAX_NESTING = 10; - - if (++nestingCounter > MAX_NESTING) { - (0, _util.warn)("Visibility expression is too deeply nested"); - return; - } - - const length = array.length; - const operator = this.xref.fetchIfRef(array[0]); - - if (length < 2 || !(operator instanceof _primitives.Name)) { - (0, _util.warn)("Invalid visibility expression"); - return; - } - - switch (operator.name) { - case "And": - case "Or": - case "Not": - currentResult.push(operator.name); - break; - - default: - (0, _util.warn)(`Invalid operator ${operator.name} in visibility expression`); - return; - } - - for (let i = 1; i < length; i++) { - const raw = array[i]; - const object = this.xref.fetchIfRef(raw); - - if (Array.isArray(object)) { - const nestedResult = []; - currentResult.push(nestedResult); - - this._parseVisibilityExpression(object, nestingCounter, nestedResult); - } else if (raw instanceof _primitives.Ref) { - currentResult.push(raw.toString()); - } - } - } - - async parseMarkedContentProps(contentProperties, resources) { - let optionalContent; - - if (contentProperties instanceof _primitives.Name) { - const properties = resources.get("Properties"); - optionalContent = properties.get(contentProperties.name); - } else if (contentProperties instanceof _primitives.Dict) { - optionalContent = contentProperties; - } else { - throw new _util.FormatError("Optional content properties malformed."); - } - - const optionalContentType = optionalContent.get("Type").name; - - if (optionalContentType === "OCG") { - return { - type: optionalContentType, - id: optionalContent.objId - }; - } else if (optionalContentType === "OCMD") { - const expression = optionalContent.get("VE"); - - if (Array.isArray(expression)) { - const result = []; - - this._parseVisibilityExpression(expression, 0, result); - - if (result.length > 0) { - return { - type: "OCMD", - expression: result - }; - } - } - - const optionalContentGroups = optionalContent.get("OCGs"); - - if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof _primitives.Dict) { - const groupIds = []; - - if (Array.isArray(optionalContentGroups)) { - for (const ocg of optionalContentGroups) { - groupIds.push(ocg.toString()); - } - } else { - groupIds.push(optionalContentGroups.objId); - } - - return { - type: optionalContentType, - ids: groupIds, - policy: optionalContent.get("P") instanceof _primitives.Name ? optionalContent.get("P").name : null, - expression: null - }; - } else if (optionalContentGroups instanceof _primitives.Ref) { - return { - type: optionalContentType, - id: optionalContentGroups.toString() - }; - } - } - - return null; - } - - getOperatorList({ - stream, - task, - resources, - operatorList, - initialState = null, - fallbackFontDict = null - }) { - resources = resources || _primitives.Dict.empty; - initialState = initialState || new EvalState(); - - if (!operatorList) { - throw new Error('getOperatorList: missing "operatorList" parameter'); - } - - const self = this; - const xref = this.xref; - let parsingText = false; - const localImageCache = new _image_utils.LocalImageCache(); - const localColorSpaceCache = new _image_utils.LocalColorSpaceCache(); - const localGStateCache = new _image_utils.LocalGStateCache(); - const localTilingPatternCache = new _image_utils.LocalTilingPatternCache(); - const localShadingPatternCache = new Map(); - - const xobjs = resources.get("XObject") || _primitives.Dict.empty; - - const patterns = resources.get("Pattern") || _primitives.Dict.empty; - - const stateManager = new StateManager(initialState); - const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - const timeSlotManager = new TimeSlotManager(); - - function closePendingRestoreOPS(argument) { - for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { - operatorList.addOp(_util.OPS.restore, []); - } - } - - return new Promise(function promiseBody(resolve, reject) { - const next = function (promise) { - Promise.all([promise, operatorList.ready]).then(function () { - try { - promiseBody(resolve, reject); - } catch (ex) { - reject(ex); - } - }, reject); - }; - - task.ensureNotTerminated(); - timeSlotManager.reset(); - const operation = {}; - let stop, i, ii, cs, name, isValidName; - - while (!(stop = timeSlotManager.check())) { - operation.args = null; - - if (!preprocessor.read(operation)) { - break; - } - - let args = operation.args; - let fn = operation.fn; - - switch (fn | 0) { - case _util.OPS.paintXObject: - isValidName = args[0] instanceof _primitives.Name; - name = args[0].name; - - if (isValidName) { - const localImage = localImageCache.getByName(name); - - if (localImage) { - operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); - incrementCachedImageMaskCount(localImage); - args = null; - continue; - } - } - - next(new Promise(function (resolveXObject, rejectXObject) { - if (!isValidName) { - throw new _util.FormatError("XObject must be referred to by name."); - } - - let xobj = xobjs.getRaw(name); - - if (xobj instanceof _primitives.Ref) { - const localImage = localImageCache.getByRef(xobj); - - if (localImage) { - operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); - incrementCachedImageMaskCount(localImage); - resolveXObject(); - return; - } - - const globalImage = self.globalImageCache.getData(xobj, self.pageIndex); - - if (globalImage) { - operatorList.addDependency(globalImage.objId); - operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent); - resolveXObject(); - return; - } - - xobj = xref.fetch(xobj); - } - - if (!(xobj instanceof _base_stream.BaseStream)) { - throw new _util.FormatError("XObject should be a stream"); - } - - const type = xobj.dict.get("Subtype"); - - if (!(type instanceof _primitives.Name)) { - throw new _util.FormatError("XObject should have a Name subtype"); - } - - if (type.name === "Form") { - stateManager.save(); - self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () { - stateManager.restore(); - resolveXObject(); - }, rejectXObject); - return; - } else if (type.name === "Image") { - self.buildPaintImageXObject({ - resources, - image: xobj, - operatorList, - cacheKey: name, - localImageCache, - localColorSpaceCache - }).then(resolveXObject, rejectXObject); - return; - } else if (type.name === "PS") { - (0, _util.info)("Ignored XObject subtype PS"); - } else { - throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`); - } - - resolveXObject(); - }).catch(function (reason) { - if (reason instanceof _util.AbortException) { - return; - } - - if (self.options.ignoreErrors) { - self.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorXObject - }); - (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`); - return; - } - - throw reason; - })); - return; - - case _util.OPS.setFont: - var fontSize = args[1]; - next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) { - operatorList.addDependency(loadedName); - operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]); - })); - return; - - case _util.OPS.beginText: - parsingText = true; - break; - - case _util.OPS.endText: - parsingText = false; - break; - - case _util.OPS.endInlineImage: - var cacheKey = args[0].cacheKey; - - if (cacheKey) { - const localImage = localImageCache.getByName(cacheKey); - - if (localImage) { - operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); - incrementCachedImageMaskCount(localImage); - args = null; - continue; - } - } - - next(self.buildPaintImageXObject({ - resources, - image: args[0], - isInline: true, - operatorList, - cacheKey, - localImageCache, - localColorSpaceCache - })); - return; - - case _util.OPS.showText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - args[0] = self.handleText(args[0], stateManager.state); - break; - - case _util.OPS.showSpacedText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - var arr = args[0]; - var combinedGlyphs = []; - var arrLength = arr.length; - var state = stateManager.state; - - for (i = 0; i < arrLength; ++i) { - const arrItem = arr[i]; - - if (typeof arrItem === "string") { - Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state)); - } else if (typeof arrItem === "number") { - combinedGlyphs.push(arrItem); - } - } - - args[0] = combinedGlyphs; - fn = _util.OPS.showText; - break; - - case _util.OPS.nextLineShowText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - operatorList.addOp(_util.OPS.nextLine); - args[0] = self.handleText(args[0], stateManager.state); - fn = _util.OPS.showText; - break; - - case _util.OPS.nextLineSetSpacingShowText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - operatorList.addOp(_util.OPS.nextLine); - operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]); - operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]); - args[0] = self.handleText(args[0], stateManager.state); - fn = _util.OPS.showText; - break; - - case _util.OPS.setTextRenderingMode: - stateManager.state.textRenderingMode = args[0]; - break; - - case _util.OPS.setFillColorSpace: - { - const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache); - - if (cachedColorSpace) { - stateManager.state.fillColorSpace = cachedColorSpace; - continue; - } - - next(self.parseColorSpace({ - cs: args[0], - resources, - localColorSpaceCache - }).then(function (colorSpace) { - if (colorSpace) { - stateManager.state.fillColorSpace = colorSpace; - } - })); - return; - } - - case _util.OPS.setStrokeColorSpace: - { - const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache); - - if (cachedColorSpace) { - stateManager.state.strokeColorSpace = cachedColorSpace; - continue; - } - - next(self.parseColorSpace({ - cs: args[0], - resources, - localColorSpaceCache - }).then(function (colorSpace) { - if (colorSpace) { - stateManager.state.strokeColorSpace = colorSpace; - } - })); - return; - } - - case _util.OPS.setFillColor: - cs = stateManager.state.fillColorSpace; - args = cs.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeColor: - cs = stateManager.state.strokeColorSpace; - args = cs.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.setFillGray: - stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray; - args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeGray: - stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; - args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.setFillCMYKColor: - stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk; - args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeCMYKColor: - stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk; - args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.setFillRGBColor: - stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb; - args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); - break; - - case _util.OPS.setStrokeRGBColor: - stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb; - args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); - break; - - case _util.OPS.setFillColorN: - cs = stateManager.state.fillColorSpace; - - if (cs.name === "Pattern") { - next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); - return; - } - - args = cs.getRgb(args, 0); - fn = _util.OPS.setFillRGBColor; - break; - - case _util.OPS.setStrokeColorN: - cs = stateManager.state.strokeColorSpace; - - if (cs.name === "Pattern") { - next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); - return; - } - - args = cs.getRgb(args, 0); - fn = _util.OPS.setStrokeRGBColor; - break; - - case _util.OPS.shadingFill: - var shadingRes = resources.get("Shading"); - - if (!shadingRes) { - throw new _util.FormatError("No shading resource found"); - } - - var shading = shadingRes.get(args[0].name); - - if (!shading) { - throw new _util.FormatError("No shading object found"); - } - - const patternId = self.parseShading({ - shading, - resources, - localColorSpaceCache, - localShadingPatternCache - }); - args = [patternId]; - fn = _util.OPS.shadingFill; - break; - - case _util.OPS.setGState: - isValidName = args[0] instanceof _primitives.Name; - name = args[0].name; - - if (isValidName) { - const localGStateObj = localGStateCache.getByName(name); - - if (localGStateObj) { - if (localGStateObj.length > 0) { - operatorList.addOp(_util.OPS.setGState, [localGStateObj]); - } - - args = null; - continue; - } - } - - next(new Promise(function (resolveGState, rejectGState) { - if (!isValidName) { - throw new _util.FormatError("GState must be referred to by name."); - } - - const extGState = resources.get("ExtGState"); - - if (!(extGState instanceof _primitives.Dict)) { - throw new _util.FormatError("ExtGState should be a dictionary."); - } - - const gState = extGState.get(name); - - if (!(gState instanceof _primitives.Dict)) { - throw new _util.FormatError("GState should be a dictionary."); - } - - self.setGState({ - resources, - gState, - operatorList, - cacheKey: name, - task, - stateManager, - localGStateCache, - localColorSpaceCache - }).then(resolveGState, rejectGState); - }).catch(function (reason) { - if (reason instanceof _util.AbortException) { - return; - } - - if (self.options.ignoreErrors) { - self.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorExtGState - }); - (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`); - return; - } - - throw reason; - })); - return; - - case _util.OPS.moveTo: - case _util.OPS.lineTo: - case _util.OPS.curveTo: - case _util.OPS.curveTo2: - case _util.OPS.curveTo3: - case _util.OPS.closePath: - case _util.OPS.rectangle: - self.buildPath(operatorList, fn, args, parsingText); - continue; - - case _util.OPS.markPoint: - case _util.OPS.markPointProps: - case _util.OPS.beginCompat: - case _util.OPS.endCompat: - continue; - - case _util.OPS.beginMarkedContentProps: - if (!(args[0] instanceof _primitives.Name)) { - (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`); - continue; - } - - if (args[0].name === "OC") { - next(self.parseMarkedContentProps(args[1], resources).then(data => { - operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]); - }).catch(reason => { - if (reason instanceof _util.AbortException) { - return; - } - - if (self.options.ignoreErrors) { - self.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent - }); - (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`); - return; - } - - throw reason; - })); - return; - } - - args = [args[0].name, args[1] instanceof _primitives.Dict ? args[1].get("MCID") : null]; - break; - - case _util.OPS.beginMarkedContent: - case _util.OPS.endMarkedContent: - default: - if (args !== null) { - for (i = 0, ii = args.length; i < ii; i++) { - if (args[i] instanceof _primitives.Dict) { - break; - } - } - - if (i < ii) { - (0, _util.warn)("getOperatorList - ignoring operator: " + fn); - continue; - } - } - - } - - operatorList.addOp(fn, args); - } - - if (stop) { - next(deferred); - return; - } - - closePendingRestoreOPS(); - resolve(); - }).catch(reason => { - if (reason instanceof _util.AbortException) { - return; - } - - if (this.options.ignoreErrors) { - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList - }); - (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`); - closePendingRestoreOPS(); - return; - } - - throw reason; - }); - } - - getTextContent({ - stream, - task, - resources, - stateManager = null, - combineTextItems = false, - includeMarkedContent = false, - sink, - seenStyles = new Set(), - viewBox - }) { - resources = resources || _primitives.Dict.empty; - stateManager = stateManager || new StateManager(new TextState()); - const NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)(); - const textContent = { - items: [], - styles: Object.create(null) - }; - const textContentItem = { - initialized: false, - str: [], - totalWidth: 0, - totalHeight: 0, - width: 0, - height: 0, - vertical: false, - prevTransform: null, - textAdvanceScale: 0, - spaceInFlowMin: 0, - spaceInFlowMax: 0, - trackingSpaceMin: Infinity, - negativeSpaceMax: -Infinity, - notASpace: -Infinity, - transform: null, - fontName: null, - hasEOL: false - }; - const twoLastChars = [" ", " "]; - let twoLastCharsPos = 0; - - function saveLastChar(char) { - const nextPos = (twoLastCharsPos + 1) % 2; - const ret = twoLastChars[twoLastCharsPos] !== " " && twoLastChars[nextPos] === " "; - twoLastChars[twoLastCharsPos] = char; - twoLastCharsPos = nextPos; - return ret; - } - - function resetLastChars() { - twoLastChars[0] = twoLastChars[1] = " "; - twoLastCharsPos = 0; - } - - const TRACKING_SPACE_FACTOR = 0.1; - const NOT_A_SPACE_FACTOR = 0.03; - const NEGATIVE_SPACE_FACTOR = -0.2; - const SPACE_IN_FLOW_MIN_FACTOR = 0.1; - const SPACE_IN_FLOW_MAX_FACTOR = 0.6; - const self = this; - const xref = this.xref; - const showSpacedTextBuffer = []; - let xobjs = null; - const emptyXObjectCache = new _image_utils.LocalImageCache(); - const emptyGStateCache = new _image_utils.LocalGStateCache(); - const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); - let textState; - - function getCurrentTextTransform() { - const font = textState.font; - const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise]; - - if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) { - const glyphHeight = font.bbox[3] - font.bbox[1]; - - if (glyphHeight > 0) { - tsm[3] *= glyphHeight * textState.fontMatrix[3]; - } - } - - return _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm)); - } - - function ensureTextContentItem() { - if (textContentItem.initialized) { - return textContentItem; - } - - const font = textState.font, - loadedName = font.loadedName; - - if (!seenStyles.has(loadedName)) { - seenStyles.add(loadedName); - textContent.styles[loadedName] = { - fontFamily: font.fallbackName, - ascent: font.ascent, - descent: font.descent, - vertical: font.vertical - }; - } - - textContentItem.fontName = loadedName; - const trm = textContentItem.transform = getCurrentTextTransform(); - - if (!font.vertical) { - textContentItem.width = textContentItem.totalWidth = 0; - textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]); - textContentItem.vertical = false; - } else { - textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]); - textContentItem.height = textContentItem.totalHeight = 0; - textContentItem.vertical = true; - } - - const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); - const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); - textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; - textContentItem.trackingSpaceMin = textState.fontSize * TRACKING_SPACE_FACTOR; - textContentItem.notASpace = textState.fontSize * NOT_A_SPACE_FACTOR; - textContentItem.negativeSpaceMax = textState.fontSize * NEGATIVE_SPACE_FACTOR; - textContentItem.spaceInFlowMin = textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR; - textContentItem.spaceInFlowMax = textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR; - textContentItem.hasEOL = false; - textContentItem.initialized = true; - return textContentItem; - } - - function updateAdvanceScale() { - if (!textContentItem.initialized) { - return; - } - - const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); - const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); - const scaleFactor = scaleCtmX * scaleLineX; - - if (scaleFactor === textContentItem.textAdvanceScale) { - return; - } - - if (!textContentItem.vertical) { - textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; - textContentItem.width = 0; - } else { - textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; - textContentItem.height = 0; - } - - textContentItem.textAdvanceScale = scaleFactor; - } - - function runBidiTransform(textChunk) { - const text = textChunk.str.join(""); - const bidiResult = (0, _bidi.bidi)(text, -1, textChunk.vertical); - return { - str: bidiResult.str, - dir: bidiResult.dir, - width: Math.abs(textChunk.totalWidth), - height: Math.abs(textChunk.totalHeight), - transform: textChunk.transform, - fontName: textChunk.fontName, - hasEOL: textChunk.hasEOL - }; - } - - function handleSetFont(fontName, fontRef) { - return self.loadFont(fontName, fontRef, resources).then(function (translated) { - if (!translated.font.isType3Font) { - return translated; - } - - return translated.loadType3Data(self, resources, task).catch(function () {}).then(function () { - return translated; - }); - }).then(function (translated) { - textState.font = translated.font; - textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX; - }); - } - - function applyInverseRotation(x, y, matrix) { - const scale = Math.hypot(matrix[0], matrix[1]); - return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale]; - } - - function compareWithLastPosition() { - const currentTransform = getCurrentTextTransform(); - let posX = currentTransform[4]; - let posY = currentTransform[5]; - const shiftedX = posX - viewBox[0]; - const shiftedY = posY - viewBox[1]; - - if (shiftedX < 0 || shiftedX > viewBox[2] || shiftedY < 0 || shiftedY > viewBox[3]) { - return false; - } - - if (!combineTextItems || !textState.font || !textContentItem.prevTransform) { - return true; - } - - let lastPosX = textContentItem.prevTransform[4]; - let lastPosY = textContentItem.prevTransform[5]; - - if (lastPosX === posX && lastPosY === posY) { - return true; - } - - let rotate = -1; - - if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) { - rotate = currentTransform[0] > 0 ? 0 : 180; - } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) { - rotate = currentTransform[1] > 0 ? 90 : 270; - } - - switch (rotate) { - case 0: - break; - - case 90: - [posX, posY] = [posY, posX]; - [lastPosX, lastPosY] = [lastPosY, lastPosX]; - break; - - case 180: - [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY]; - break; - - case 270: - [posX, posY] = [-posY, -posX]; - [lastPosX, lastPosY] = [-lastPosY, -lastPosX]; - break; - - default: - [posX, posY] = applyInverseRotation(posX, posY, currentTransform); - [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform); - } - - if (textState.font.vertical) { - const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale; - const advanceX = posX - lastPosX; - const textOrientation = Math.sign(textContentItem.height); - - if (advanceY < textOrientation * textContentItem.negativeSpaceMax) { - if (Math.abs(advanceX) > 0.5 * textContentItem.width) { - appendEOL(); - return true; - } - - resetLastChars(); - flushTextContentItem(); - return true; - } - - if (Math.abs(advanceX) > textContentItem.width) { - appendEOL(); - return true; - } - - if (advanceY <= textOrientation * textContentItem.notASpace) { - resetLastChars(); - } - - if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) { - textContentItem.height += advanceY; - } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) { - if (textContentItem.str.length === 0) { - resetLastChars(); - textContent.items.push({ - str: " ", - dir: "ltr", - width: 0, - height: Math.abs(advanceY), - transform: textContentItem.prevTransform, - fontName: textContentItem.fontName, - hasEOL: false - }); - } else { - textContentItem.height += advanceY; - } - } - - return true; - } - - const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale; - const advanceY = posY - lastPosY; - const textOrientation = Math.sign(textContentItem.width); - - if (advanceX < textOrientation * textContentItem.negativeSpaceMax) { - if (Math.abs(advanceY) > 0.5 * textContentItem.height) { - appendEOL(); - return true; - } - - resetLastChars(); - flushTextContentItem(); - return true; - } - - if (Math.abs(advanceY) > textContentItem.height) { - appendEOL(); - return true; - } - - if (advanceX <= textOrientation * textContentItem.notASpace) { - resetLastChars(); - } - - if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) { - textContentItem.width += advanceX; - } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) { - if (textContentItem.str.length === 0) { - resetLastChars(); - textContent.items.push({ - str: " ", - dir: "ltr", - width: Math.abs(advanceX), - height: 0, - transform: textContentItem.prevTransform, - fontName: textContentItem.fontName, - hasEOL: false - }); - } else { - textContentItem.width += advanceX; - } - } - - return true; - } - - function buildTextContentItem({ - chars, - extraSpacing - }) { - const font = textState.font; - - if (!chars) { - const charSpacing = textState.charSpacing + extraSpacing; - - if (charSpacing) { - if (!font.vertical) { - textState.translateTextMatrix(charSpacing * textState.textHScale, 0); - } else { - textState.translateTextMatrix(0, -charSpacing); - } - } - - return; - } - - const glyphs = font.charsToGlyphs(chars); - const scale = textState.fontMatrix[0] * textState.fontSize; - - for (let i = 0, ii = glyphs.length; i < ii; i++) { - const glyph = glyphs[i]; - - if (glyph.isInvisibleFormatMark) { - continue; - } - - let charSpacing = textState.charSpacing + (i + 1 === ii ? extraSpacing : 0); - let glyphWidth = glyph.width; - - if (font.vertical) { - glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth; - } - - let scaledDim = glyphWidth * scale; - - if (glyph.isWhitespace) { - if (!font.vertical) { - charSpacing += scaledDim + textState.wordSpacing; - textState.translateTextMatrix(charSpacing * textState.textHScale, 0); - } else { - charSpacing += -scaledDim + textState.wordSpacing; - textState.translateTextMatrix(0, -charSpacing); - } - - saveLastChar(" "); - continue; - } - - if (!compareWithLastPosition()) { - continue; - } - - const textChunk = ensureTextContentItem(); - - if (glyph.isZeroWidthDiacritic) { - scaledDim = 0; - } - - if (!font.vertical) { - scaledDim *= textState.textHScale; - textState.translateTextMatrix(scaledDim, 0); - textChunk.width += scaledDim; - } else { - textState.translateTextMatrix(0, scaledDim); - scaledDim = Math.abs(scaledDim); - textChunk.height += scaledDim; - } - - if (scaledDim) { - textChunk.prevTransform = getCurrentTextTransform(); - } - - let glyphUnicode = glyph.unicode; - glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode; - glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode); - - if (saveLastChar(glyphUnicode)) { - textChunk.str.push(" "); - } - - textChunk.str.push(glyphUnicode); - - if (charSpacing) { - if (!font.vertical) { - textState.translateTextMatrix(charSpacing * textState.textHScale, 0); - } else { - textState.translateTextMatrix(0, -charSpacing); - } - } - } - } - - function appendEOL() { - resetLastChars(); - - if (textContentItem.initialized) { - textContentItem.hasEOL = true; - flushTextContentItem(); - } else { - textContent.items.push({ - str: "", - dir: "ltr", - width: 0, - height: 0, - transform: getCurrentTextTransform(), - fontName: textState.font.loadedName, - hasEOL: true - }); - } - } - - function addFakeSpaces(width, transf, textOrientation) { - if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) { - if (textContentItem.initialized) { - resetLastChars(); - textContentItem.str.push(" "); - } - - return false; - } - - const fontName = textContentItem.fontName; - let height = 0; - - if (textContentItem.vertical) { - height = width; - width = 0; - } - - flushTextContentItem(); - resetLastChars(); - textContent.items.push({ - str: " ", - dir: "ltr", - width: Math.abs(width), - height: Math.abs(height), - transform: transf || getCurrentTextTransform(), - fontName, - hasEOL: false - }); - return true; - } - - function flushTextContentItem() { - if (!textContentItem.initialized || !textContentItem.str) { - return; - } - - if (!textContentItem.vertical) { - textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; - } else { - textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; - } - - textContent.items.push(runBidiTransform(textContentItem)); - textContentItem.initialized = false; - textContentItem.str.length = 0; - } - - function enqueueChunk(batch = false) { - const length = textContent.items.length; - - if (length === 0) { - return; - } - - if (batch && length < TEXT_CHUNK_BATCH_SIZE) { - return; - } - - sink.enqueue(textContent, length); - textContent.items = []; - textContent.styles = Object.create(null); - } - - const timeSlotManager = new TimeSlotManager(); - return new Promise(function promiseBody(resolve, reject) { - const next = function (promise) { - enqueueChunk(true); - Promise.all([promise, sink.ready]).then(function () { - try { - promiseBody(resolve, reject); - } catch (ex) { - reject(ex); - } - }, reject); - }; - - task.ensureNotTerminated(); - timeSlotManager.reset(); - const operation = {}; - let stop, - args = []; - - while (!(stop = timeSlotManager.check())) { - args.length = 0; - operation.args = args; - - if (!preprocessor.read(operation)) { - break; - } - - textState = stateManager.state; - const fn = operation.fn; - args = operation.args; - - switch (fn | 0) { - case _util.OPS.setFont: - var fontNameArg = args[0].name, - fontSizeArg = args[1]; - - if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) { - break; - } - - flushTextContentItem(); - textState.fontName = fontNameArg; - textState.fontSize = fontSizeArg; - next(handleSetFont(fontNameArg, null)); - return; - - case _util.OPS.setTextRise: - textState.textRise = args[0]; - break; - - case _util.OPS.setHScale: - textState.textHScale = args[0] / 100; - break; - - case _util.OPS.setLeading: - textState.leading = args[0]; - break; - - case _util.OPS.moveText: - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - - case _util.OPS.setLeadingMoveText: - textState.leading = -args[1]; - textState.translateTextLineMatrix(args[0], args[1]); - textState.textMatrix = textState.textLineMatrix.slice(); - break; - - case _util.OPS.nextLine: - textState.carriageReturn(); - break; - - case _util.OPS.setTextMatrix: - textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - updateAdvanceScale(); - break; - - case _util.OPS.setCharSpacing: - textState.charSpacing = args[0]; - break; - - case _util.OPS.setWordSpacing: - textState.wordSpacing = args[0]; - break; - - case _util.OPS.beginText: - textState.textMatrix = _util.IDENTITY_MATRIX.slice(); - textState.textLineMatrix = _util.IDENTITY_MATRIX.slice(); - break; - - case _util.OPS.showSpacedText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000; - const elements = args[0]; - - for (let i = 0, ii = elements.length; i < ii - 1; i++) { - const item = elements[i]; - - if (typeof item === "string") { - showSpacedTextBuffer.push(item); - } else if (typeof item === "number" && item !== 0) { - const str = showSpacedTextBuffer.join(""); - showSpacedTextBuffer.length = 0; - buildTextContentItem({ - chars: str, - extraSpacing: item * spaceFactor - }); - } - } - - const item = elements[elements.length - 1]; - - if (typeof item === "string") { - showSpacedTextBuffer.push(item); - } - - if (showSpacedTextBuffer.length > 0) { - const str = showSpacedTextBuffer.join(""); - showSpacedTextBuffer.length = 0; - buildTextContentItem({ - chars: str, - extraSpacing: 0 - }); - } - - break; - - case _util.OPS.showText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - buildTextContentItem({ - chars: args[0], - extraSpacing: 0 - }); - break; - - case _util.OPS.nextLineShowText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - textState.carriageReturn(); - buildTextContentItem({ - chars: args[0], - extraSpacing: 0 - }); - break; - - case _util.OPS.nextLineSetSpacingShowText: - if (!stateManager.state.font) { - self.ensureStateFont(stateManager.state); - continue; - } - - textState.wordSpacing = args[0]; - textState.charSpacing = args[1]; - textState.carriageReturn(); - buildTextContentItem({ - chars: args[2], - extraSpacing: 0 - }); - break; - - case _util.OPS.paintXObject: - flushTextContentItem(); - - if (!xobjs) { - xobjs = resources.get("XObject") || _primitives.Dict.empty; - } - - var isValidName = args[0] instanceof _primitives.Name; - var name = args[0].name; - - if (isValidName && emptyXObjectCache.getByName(name)) { - break; - } - - next(new Promise(function (resolveXObject, rejectXObject) { - if (!isValidName) { - throw new _util.FormatError("XObject must be referred to by name."); - } - - let xobj = xobjs.getRaw(name); - - if (xobj instanceof _primitives.Ref) { - if (emptyXObjectCache.getByRef(xobj)) { - resolveXObject(); - return; - } - - const globalImage = self.globalImageCache.getData(xobj, self.pageIndex); - - if (globalImage) { - resolveXObject(); - return; - } - - xobj = xref.fetch(xobj); - } - - if (!(xobj instanceof _base_stream.BaseStream)) { - throw new _util.FormatError("XObject should be a stream"); - } - - const type = xobj.dict.get("Subtype"); - - if (!(type instanceof _primitives.Name)) { - throw new _util.FormatError("XObject should have a Name subtype"); - } - - if (type.name !== "Form") { - emptyXObjectCache.set(name, xobj.dict.objId, true); - resolveXObject(); - return; - } - - const currentState = stateManager.state.clone(); - const xObjStateManager = new StateManager(currentState); - const matrix = xobj.dict.getArray("Matrix"); - - if (Array.isArray(matrix) && matrix.length === 6) { - xObjStateManager.transform(matrix); - } - - enqueueChunk(); - const sinkWrapper = { - enqueueInvoked: false, - - enqueue(chunk, size) { - this.enqueueInvoked = true; - sink.enqueue(chunk, size); - }, - - get desiredSize() { - return sink.desiredSize; - }, - - get ready() { - return sink.ready; - } - - }; - self.getTextContent({ - stream: xobj, - task, - resources: xobj.dict.get("Resources") || resources, - stateManager: xObjStateManager, - combineTextItems, - includeMarkedContent, - sink: sinkWrapper, - seenStyles, - viewBox - }).then(function () { - if (!sinkWrapper.enqueueInvoked) { - emptyXObjectCache.set(name, xobj.dict.objId, true); - } - - resolveXObject(); - }, rejectXObject); - }).catch(function (reason) { - if (reason instanceof _util.AbortException) { - return; - } - - if (self.options.ignoreErrors) { - (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`); - return; - } - - throw reason; - })); - return; - - case _util.OPS.setGState: - isValidName = args[0] instanceof _primitives.Name; - name = args[0].name; - - if (isValidName && emptyGStateCache.getByName(name)) { - break; - } - - next(new Promise(function (resolveGState, rejectGState) { - if (!isValidName) { - throw new _util.FormatError("GState must be referred to by name."); - } - - const extGState = resources.get("ExtGState"); - - if (!(extGState instanceof _primitives.Dict)) { - throw new _util.FormatError("ExtGState should be a dictionary."); - } - - const gState = extGState.get(name); - - if (!(gState instanceof _primitives.Dict)) { - throw new _util.FormatError("GState should be a dictionary."); - } - - const gStateFont = gState.get("Font"); - - if (!gStateFont) { - emptyGStateCache.set(name, gState.objId, true); - resolveGState(); - return; - } - - flushTextContentItem(); - textState.fontName = null; - textState.fontSize = gStateFont[1]; - handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState); - }).catch(function (reason) { - if (reason instanceof _util.AbortException) { - return; - } - - if (self.options.ignoreErrors) { - (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`); - return; - } - - throw reason; - })); - return; - - case _util.OPS.beginMarkedContent: - if (includeMarkedContent) { - textContent.items.push({ - type: "beginMarkedContent", - tag: args[0] instanceof _primitives.Name ? args[0].name : null - }); - } - - break; - - case _util.OPS.beginMarkedContentProps: - if (includeMarkedContent) { - flushTextContentItem(); - let mcid = null; - - if (args[1] instanceof _primitives.Dict) { - mcid = args[1].get("MCID"); - } - - textContent.items.push({ - type: "beginMarkedContentProps", - id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mcid${mcid}` : null, - tag: args[0] instanceof _primitives.Name ? args[0].name : null - }); - } - - break; - - case _util.OPS.endMarkedContent: - if (includeMarkedContent) { - flushTextContentItem(); - textContent.items.push({ - type: "endMarkedContent" - }); - } - - break; - } - - if (textContent.items.length >= sink.desiredSize) { - stop = true; - break; - } - } - - if (stop) { - next(deferred); - return; - } - - flushTextContentItem(); - enqueueChunk(); - resolve(); - }).catch(reason => { - if (reason instanceof _util.AbortException) { - return; - } - - if (this.options.ignoreErrors) { - (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`); - flushTextContentItem(); - enqueueChunk(); - return; - } - - throw reason; - }); - } - - extractDataStructures(dict, baseDict, properties) { - const xref = this.xref; - let cidToGidBytes; - const toUnicodePromise = this.readToUnicode(properties.toUnicode || dict.get("ToUnicode") || baseDict.get("ToUnicode")); - - if (properties.composite) { - const cidSystemInfo = dict.get("CIDSystemInfo"); - - if (cidSystemInfo instanceof _primitives.Dict) { - properties.cidSystemInfo = { - registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")), - ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")), - supplement: cidSystemInfo.get("Supplement") - }; - } - - const cidToGidMap = dict.get("CIDToGIDMap"); - - if (cidToGidMap instanceof _base_stream.BaseStream) { - cidToGidBytes = cidToGidMap.getBytes(); - } - } - - const differences = []; - let baseEncodingName = null; - let encoding; - - if (dict.has("Encoding")) { - encoding = dict.get("Encoding"); - - if (encoding instanceof _primitives.Dict) { - baseEncodingName = encoding.get("BaseEncoding"); - baseEncodingName = baseEncodingName instanceof _primitives.Name ? baseEncodingName.name : null; - - if (encoding.has("Differences")) { - const diffEncoding = encoding.get("Differences"); - let index = 0; - - for (let j = 0, jj = diffEncoding.length; j < jj; j++) { - const data = xref.fetchIfRef(diffEncoding[j]); - - if (typeof data === "number") { - index = data; - } else if (data instanceof _primitives.Name) { - differences[index++] = data.name; - } else { - throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`); - } - } - } - } else if (encoding instanceof _primitives.Name) { - baseEncodingName = encoding.name; - } else { - const msg = "Encoding is not a Name nor a Dict"; - - if (!this.options.ignoreErrors) { - throw new _util.FormatError(msg); - } - - (0, _util.warn)(msg); - } - - if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && baseEncodingName !== "WinAnsiEncoding") { - baseEncodingName = null; - } - } - - if (baseEncodingName) { - properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName); - } else { - const isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic); - const isNonsymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Nonsymbolic); - encoding = _encodings.StandardEncoding; - - if (properties.type === "TrueType" && !isNonsymbolicFont) { - encoding = _encodings.WinAnsiEncoding; - } - - if (isSymbolicFont) { - encoding = _encodings.MacRomanEncoding; - - if (!properties.file || properties.isInternalFont) { - if (/Symbol/i.test(properties.name)) { - encoding = _encodings.SymbolSetEncoding; - } else if (/Dingbats|Wingdings/i.test(properties.name)) { - encoding = _encodings.ZapfDingbatsEncoding; - } - } - } - - properties.defaultEncoding = encoding; - } - - properties.differences = differences; - properties.baseEncodingName = baseEncodingName; - properties.hasEncoding = !!baseEncodingName || differences.length > 0; - properties.dict = dict; - return toUnicodePromise.then(readToUnicode => { - properties.toUnicode = readToUnicode; - return this.buildToUnicode(properties); - }).then(builtToUnicode => { - properties.toUnicode = builtToUnicode; - - if (cidToGidBytes) { - properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode); - } - - return properties; - }); - } - - _simpleFontToUnicode(properties, forceGlyphs = false) { - (0, _util.assert)(!properties.composite, "Must be a simple font."); - const toUnicode = []; - const encoding = properties.defaultEncoding.slice(); - const baseEncodingName = properties.baseEncodingName; - const differences = properties.differences; - - for (const charcode in differences) { - const glyphName = differences[charcode]; - - if (glyphName === ".notdef") { - continue; - } - - encoding[charcode] = glyphName; - } - - const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - - for (const charcode in encoding) { - let glyphName = encoding[charcode]; - - if (glyphName === "") { - continue; - } else if (glyphsUnicodeMap[glyphName] === undefined) { - let code = 0; - - switch (glyphName[0]) { - case "G": - if (glyphName.length === 3) { - code = parseInt(glyphName.substring(1), 16); - } - - break; - - case "g": - if (glyphName.length === 5) { - code = parseInt(glyphName.substring(1), 16); - } - - break; - - case "C": - case "c": - if (glyphName.length >= 3 && glyphName.length <= 4) { - const codeStr = glyphName.substring(1); - - if (forceGlyphs) { - code = parseInt(codeStr, 16); - break; - } - - code = +codeStr; - - if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) { - return this._simpleFontToUnicode(properties, true); - } - } - - break; - - default: - const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); - - if (unicode !== -1) { - code = unicode; - } - - } - - if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) { - if (baseEncodingName && code === +charcode) { - const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName); - - if (baseEncoding && (glyphName = baseEncoding[charcode])) { - toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); - continue; - } - } - - toUnicode[charcode] = String.fromCodePoint(code); - } - - continue; - } - - toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); - } - - return toUnicode; - } - - async buildToUnicode(properties) { - properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0; - - if (properties.hasIncludedToUnicodeMap) { - if (!properties.composite && properties.hasEncoding) { - properties.fallbackToUnicode = this._simpleFontToUnicode(properties); - } - - return properties.toUnicode; - } - - if (!properties.composite) { - return new _to_unicode_map.ToUnicodeMap(this._simpleFontToUnicode(properties)); - } - - if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering === "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" || properties.cidSystemInfo.ordering === "Korea1"))) { - const { - registry, - ordering - } = properties.cidSystemInfo; - - const ucs2CMapName = _primitives.Name.get(`${registry}-${ordering}-UCS2`); - - const ucs2CMap = await _cmap.CMapFactory.create({ - encoding: ucs2CMapName, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null - }); - const toUnicode = []; - properties.cMap.forEach(function (charcode, cid) { - if (cid > 0xffff) { - throw new _util.FormatError("Max size of CID is 65,535"); - } - - const ucs2 = ucs2CMap.lookup(cid); - - if (ucs2) { - toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)); - } - }); - return new _to_unicode_map.ToUnicodeMap(toUnicode); - } - - return new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, properties.lastChar); - } - - readToUnicode(cmapObj) { - if (!cmapObj) { - return Promise.resolve(null); - } - - if (cmapObj instanceof _primitives.Name) { - return _cmap.CMapFactory.create({ - encoding: cmapObj, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null - }).then(function (cmap) { - if (cmap instanceof _cmap.IdentityCMap) { - return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff); - } - - return new _to_unicode_map.ToUnicodeMap(cmap.getMap()); - }); - } else if (cmapObj instanceof _base_stream.BaseStream) { - return _cmap.CMapFactory.create({ - encoding: cmapObj, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null - }).then(function (cmap) { - if (cmap instanceof _cmap.IdentityCMap) { - return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff); - } - - const map = new Array(cmap.length); - cmap.forEach(function (charCode, token) { - if (typeof token === "number") { - map[charCode] = String.fromCodePoint(token); - return; - } - - const str = []; - - for (let k = 0; k < token.length; k += 2) { - const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); - - if ((w1 & 0xf800) !== 0xd800) { - str.push(w1); - continue; - } - - k += 2; - const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); - str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); - } - - map[charCode] = String.fromCodePoint.apply(String, str); - }); - return new _to_unicode_map.ToUnicodeMap(map); - }, reason => { - if (reason instanceof _util.AbortException) { - return null; - } - - if (this.options.ignoreErrors) { - this.handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode - }); - (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`); - return null; - } - - throw reason; - }); - } - - return Promise.resolve(null); - } - - readCidToGidMap(glyphsData, toUnicode) { - const result = []; - - for (let j = 0, jj = glyphsData.length; j < jj; j++) { - const glyphID = glyphsData[j++] << 8 | glyphsData[j]; - const code = j >> 1; - - if (glyphID === 0 && !toUnicode.has(code)) { - continue; - } - - result[code] = glyphID; - } - - return result; - } - - extractWidths(dict, descriptor, properties) { - const xref = this.xref; - let glyphsWidths = []; - let defaultWidth = 0; - const glyphsVMetrics = []; - let defaultVMetrics; - let i, ii, j, jj, start, code, widths; - - if (properties.composite) { - defaultWidth = dict.has("DW") ? dict.get("DW") : 1000; - widths = dict.get("W"); - - if (widths) { - for (i = 0, ii = widths.length; i < ii; i++) { - start = xref.fetchIfRef(widths[i++]); - code = xref.fetchIfRef(widths[i]); - - if (Array.isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsWidths[start++] = xref.fetchIfRef(code[j]); - } - } else { - const width = xref.fetchIfRef(widths[++i]); - - for (j = start; j <= code; j++) { - glyphsWidths[j] = width; - } - } - } - } - - if (properties.vertical) { - let vmetrics = dict.getArray("DW2") || [880, -1000]; - defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; - vmetrics = dict.get("W2"); - - if (vmetrics) { - for (i = 0, ii = vmetrics.length; i < ii; i++) { - start = xref.fetchIfRef(vmetrics[i++]); - code = xref.fetchIfRef(vmetrics[i]); - - if (Array.isArray(code)) { - for (j = 0, jj = code.length; j < jj; j++) { - glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])]; - } - } else { - const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])]; - - for (j = start; j <= code; j++) { - glyphsVMetrics[j] = vmetric; - } - } - } - } - } - } else { - const firstChar = properties.firstChar; - widths = dict.get("Widths"); - - if (widths) { - j = firstChar; - - for (i = 0, ii = widths.length; i < ii; i++) { - glyphsWidths[j++] = xref.fetchIfRef(widths[i]); - } - - defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0; - } else { - const baseFontName = dict.get("BaseFont"); - - if (baseFontName instanceof _primitives.Name) { - const metrics = this.getBaseFontMetrics(baseFontName.name); - glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties); - defaultWidth = metrics.defaultWidth; - } - } - } - - let isMonospace = true; - let firstWidth = defaultWidth; - - for (const glyph in glyphsWidths) { - const glyphWidth = glyphsWidths[glyph]; - - if (!glyphWidth) { - continue; - } - - if (!firstWidth) { - firstWidth = glyphWidth; - continue; - } - - if (firstWidth !== glyphWidth) { - isMonospace = false; - break; - } - } - - if (isMonospace) { - properties.flags |= _fonts_utils.FontFlags.FixedPitch; - } - - properties.defaultWidth = defaultWidth; - properties.widths = glyphsWidths; - properties.defaultVMetrics = defaultVMetrics; - properties.vmetrics = glyphsVMetrics; - } - - isSerifFont(baseFontName) { - const fontNameWoStyle = baseFontName.split("-")[0]; - return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1; - } - - getBaseFontMetrics(name) { - let defaultWidth = 0; - let widths = Object.create(null); - let monospace = false; - const stdFontMap = (0, _standard_fonts.getStdFontMap)(); - let lookupName = stdFontMap[name] || name; - const Metrics = (0, _metrics.getMetrics)(); - - if (!(lookupName in Metrics)) { - if (this.isSerifFont(name)) { - lookupName = "Times-Roman"; - } else { - lookupName = "Helvetica"; - } - } - - const glyphWidths = Metrics[lookupName]; - - if (typeof glyphWidths === "number") { - defaultWidth = glyphWidths; - monospace = true; - } else { - widths = glyphWidths(); - } - - return { - defaultWidth, - monospace, - widths - }; - } - - buildCharCodeToWidth(widthsByGlyphName, properties) { - const widths = Object.create(null); - const differences = properties.differences; - const encoding = properties.defaultEncoding; - - for (let charCode = 0; charCode < 256; charCode++) { - if (charCode in differences && widthsByGlyphName[differences[charCode]]) { - widths[charCode] = widthsByGlyphName[differences[charCode]]; - continue; - } - - if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { - widths[charCode] = widthsByGlyphName[encoding[charCode]]; - continue; - } - } - - return widths; - } - - preEvaluateFont(dict) { - const baseDict = dict; - let type = dict.get("Subtype"); - - if (!(type instanceof _primitives.Name)) { - throw new _util.FormatError("invalid font Subtype"); - } - - let composite = false; - let hash, toUnicode; - - if (type.name === "Type0") { - const df = dict.get("DescendantFonts"); - - if (!df) { - throw new _util.FormatError("Descendant fonts are not specified"); - } - - dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df; - - if (!(dict instanceof _primitives.Dict)) { - throw new _util.FormatError("Descendant font is not a dictionary."); - } - - type = dict.get("Subtype"); - - if (!(type instanceof _primitives.Name)) { - throw new _util.FormatError("invalid font Subtype"); - } - - composite = true; - } - - const firstChar = dict.get("FirstChar") || 0, - lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff); - const descriptor = dict.get("FontDescriptor"); - - if (descriptor) { - hash = new _murmurhash.MurmurHash3_64(); - const encoding = baseDict.getRaw("Encoding"); - - if (encoding instanceof _primitives.Name) { - hash.update(encoding.name); - } else if (encoding instanceof _primitives.Ref) { - hash.update(encoding.toString()); - } else if (encoding instanceof _primitives.Dict) { - for (const entry of encoding.getRawValues()) { - if (entry instanceof _primitives.Name) { - hash.update(entry.name); - } else if (entry instanceof _primitives.Ref) { - hash.update(entry.toString()); - } else if (Array.isArray(entry)) { - const diffLength = entry.length, - diffBuf = new Array(diffLength); - - for (let j = 0; j < diffLength; j++) { - const diffEntry = entry[j]; - - if (diffEntry instanceof _primitives.Name) { - diffBuf[j] = diffEntry.name; - } else if (typeof diffEntry === "number" || diffEntry instanceof _primitives.Ref) { - diffBuf[j] = diffEntry.toString(); - } - } - - hash.update(diffBuf.join()); - } - } - } - - hash.update(`${firstChar}-${lastChar}`); - toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode"); - - if (toUnicode instanceof _base_stream.BaseStream) { - const stream = toUnicode.str || toUnicode; - const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start); - hash.update(uint8array); - } else if (toUnicode instanceof _primitives.Name) { - hash.update(toUnicode.name); - } - - const widths = dict.get("Widths") || baseDict.get("Widths"); - - if (Array.isArray(widths)) { - const widthsBuf = []; - - for (const entry of widths) { - if (typeof entry === "number" || entry instanceof _primitives.Ref) { - widthsBuf.push(entry.toString()); - } - } - - hash.update(widthsBuf.join()); - } - - if (composite) { - hash.update("compositeFont"); - const compositeWidths = dict.get("W") || baseDict.get("W"); - - if (Array.isArray(compositeWidths)) { - const widthsBuf = []; - - for (const entry of compositeWidths) { - if (typeof entry === "number" || entry instanceof _primitives.Ref) { - widthsBuf.push(entry.toString()); - } else if (Array.isArray(entry)) { - const subWidthsBuf = []; - - for (const element of entry) { - if (typeof element === "number" || element instanceof _primitives.Ref) { - subWidthsBuf.push(element.toString()); - } - } - - widthsBuf.push(`[${subWidthsBuf.join()}]`); - } - } - - hash.update(widthsBuf.join()); - } - - const cidToGidMap = dict.getRaw("CIDToGIDMap") || baseDict.getRaw("CIDToGIDMap"); - - if (cidToGidMap instanceof _primitives.Name) { - hash.update(cidToGidMap.name); - } else if (cidToGidMap instanceof _primitives.Ref) { - hash.update(cidToGidMap.toString()); - } else if (cidToGidMap instanceof _base_stream.BaseStream) { - hash.update(cidToGidMap.peekBytes()); - } - } - } - - return { - descriptor, - dict, - baseDict, - composite, - type: type.name, - firstChar, - lastChar, - toUnicode, - hash: hash ? hash.hexdigest() : "" - }; - } - - async translateFont({ - descriptor, - dict, - baseDict, - composite, - type, - firstChar, - lastChar, - toUnicode, - cssFontInfo - }) { - const isType3Font = type === "Type3"; - let properties; - - if (!descriptor) { - if (isType3Font) { - descriptor = new _primitives.Dict(null); - descriptor.set("FontName", _primitives.Name.get(type)); - descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]); - } else { - let baseFontName = dict.get("BaseFont"); - - if (!(baseFontName instanceof _primitives.Name)) { - throw new _util.FormatError("Base font is not specified"); - } - - baseFontName = baseFontName.name.replace(/[,_]/g, "-"); - const metrics = this.getBaseFontMetrics(baseFontName); - const fontNameWoStyle = baseFontName.split("-")[0]; - const flags = (this.isSerifFont(fontNameWoStyle) ? _fonts_utils.FontFlags.Serif : 0) | (metrics.monospace ? _fonts_utils.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts_utils.FontFlags.Symbolic : _fonts_utils.FontFlags.Nonsymbolic); - properties = { - type, - name: baseFontName, - loadedName: baseDict.loadedName, - widths: metrics.widths, - defaultWidth: metrics.defaultWidth, - isSimulatedFlags: true, - flags, - firstChar, - lastChar, - toUnicode, - xHeight: 0, - capHeight: 0, - italicAngle: 0, - isType3Font - }; - const widths = dict.get("Widths"); - const standardFontName = (0, _standard_fonts.getStandardFontName)(baseFontName); - let file = null; - - if (standardFontName) { - properties.isStandardFont = true; - file = await this.fetchStandardFontData(standardFontName); - properties.isInternalFont = !!file; - } - - return this.extractDataStructures(dict, dict, properties).then(newProperties => { - if (widths) { - const glyphWidths = []; - let j = firstChar; - - for (let i = 0, ii = widths.length; i < ii; i++) { - glyphWidths[j++] = this.xref.fetchIfRef(widths[i]); - } - - newProperties.widths = glyphWidths; - } else { - newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties); - } - - return new _fonts.Font(baseFontName, file, newProperties); - }); - } - } - - let fontName = descriptor.get("FontName"); - let baseFont = dict.get("BaseFont"); - - if (typeof fontName === "string") { - fontName = _primitives.Name.get(fontName); - } - - if (typeof baseFont === "string") { - baseFont = _primitives.Name.get(baseFont); - } - - if (!isType3Font) { - const fontNameStr = fontName && fontName.name; - const baseFontStr = baseFont && baseFont.name; - - if (fontNameStr !== baseFontStr) { - (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as the Font's BaseFont "${baseFontStr}".`); - - if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) { - fontName = baseFont; - } - } - } - - fontName = fontName || baseFont; - - if (!(fontName instanceof _primitives.Name)) { - throw new _util.FormatError("invalid font name"); - } - - let fontFile, subtype, length1, length2, length3; - - try { - fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3"); - } catch (ex) { - if (!this.options.ignoreErrors) { - throw ex; - } - - (0, _util.warn)(`translateFont - fetching "${fontName.name}" font file: "${ex}".`); - fontFile = new _stream.NullStream(); - } - - let isStandardFont = false; - let isInternalFont = false; - let glyphScaleFactors = null; - - if (fontFile) { - if (fontFile.dict) { - const subtypeEntry = fontFile.dict.get("Subtype"); - - if (subtypeEntry instanceof _primitives.Name) { - subtype = subtypeEntry.name; - } - - length1 = fontFile.dict.get("Length1"); - length2 = fontFile.dict.get("Length2"); - length3 = fontFile.dict.get("Length3"); - } - } else if (cssFontInfo) { - const standardFontName = (0, _xfa_fonts.getXfaFontName)(fontName.name); - - if (standardFontName) { - cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`; - cssFontInfo.metrics = standardFontName.metrics || null; - glyphScaleFactors = standardFontName.factors || null; - fontFile = await this.fetchStandardFontData(standardFontName.name); - isInternalFont = !!fontFile; - baseDict = dict = (0, _xfa_fonts.getXfaFontDict)(fontName.name); - composite = true; - } - } else if (!isType3Font) { - const standardFontName = (0, _standard_fonts.getStandardFontName)(fontName.name); - - if (standardFontName) { - isStandardFont = true; - fontFile = await this.fetchStandardFontData(standardFontName); - isInternalFont = !!fontFile; - } - } - - properties = { - type, - name: fontName.name, - subtype, - file: fontFile, - length1, - length2, - length3, - isStandardFont, - isInternalFont, - loadedName: baseDict.loadedName, - composite, - fixedPitch: false, - fontMatrix: dict.getArray("FontMatrix") || _util.FONT_IDENTITY_MATRIX, - firstChar, - lastChar, - toUnicode, - bbox: descriptor.getArray("FontBBox") || dict.getArray("FontBBox"), - ascent: descriptor.get("Ascent"), - descent: descriptor.get("Descent"), - xHeight: descriptor.get("XHeight") || 0, - capHeight: descriptor.get("CapHeight") || 0, - flags: descriptor.get("Flags"), - italicAngle: descriptor.get("ItalicAngle") || 0, - isType3Font, - cssFontInfo, - scaleFactors: glyphScaleFactors - }; - - if (composite) { - const cidEncoding = baseDict.get("Encoding"); - - if (cidEncoding instanceof _primitives.Name) { - properties.cidEncoding = cidEncoding.name; - } - - const cMap = await _cmap.CMapFactory.create({ - encoding: cidEncoding, - fetchBuiltInCMap: this._fetchBuiltInCMapBound, - useCMap: null - }); - properties.cMap = cMap; - properties.vertical = properties.cMap.vertical; - } - - return this.extractDataStructures(dict, baseDict, properties).then(newProperties => { - this.extractWidths(dict, descriptor, newProperties); - return new _fonts.Font(fontName.name, fontFile, newProperties); - }); - } - - static buildFontPaths(font, glyphs, handler, evaluatorOptions) { - function buildPath(fontChar) { - const glyphName = `${font.loadedName}_path_${fontChar}`; - - try { - if (font.renderer.hasBuiltPath(fontChar)) { - return; - } - - handler.send("commonobj", [glyphName, "FontPath", font.renderer.getPathJs(fontChar)]); - } catch (reason) { - if (evaluatorOptions.ignoreErrors) { - handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.errorFontBuildPath - }); - (0, _util.warn)(`buildFontPaths - ignoring ${glyphName} glyph: "${reason}".`); - return; - } - - throw reason; - } - } - - for (const glyph of glyphs) { - buildPath(glyph.fontChar); - const accent = glyph.accent; - - if (accent && accent.fontChar) { - buildPath(accent.fontChar); - } - } - } - - static get fallbackFontDict() { - const dict = new _primitives.Dict(); - dict.set("BaseFont", _primitives.Name.get("PDFJS-FallbackFont")); - dict.set("Type", _primitives.Name.get("FallbackType")); - dict.set("Subtype", _primitives.Name.get("FallbackType")); - dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding")); - return (0, _util.shadow)(this, "fallbackFontDict", dict); - } - -} - -exports.PartialEvaluator = PartialEvaluator; - -class TranslatedFont { - constructor({ - loadedName, - font, - dict, - evaluatorOptions - }) { - this.loadedName = loadedName; - this.font = font; - this.dict = dict; - this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions; - this.type3Loaded = null; - this.type3Dependencies = font.isType3Font ? new Set() : null; - this.sent = false; - } - - send(handler) { - if (this.sent) { - return; - } - - this.sent = true; - handler.send("commonobj", [this.loadedName, "Font", this.font.exportData(this._evaluatorOptions.fontExtraProperties)]); - } - - fallback(handler) { - if (!this.font.data) { - return; - } - - this.font.disableFontFace = true; - PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions); - } - - loadType3Data(evaluator, resources, task) { - if (this.type3Loaded) { - return this.type3Loaded; - } - - if (!this.font.isType3Font) { - throw new Error("Must be a Type3 font."); - } - - const type3Evaluator = evaluator.clone({ - ignoreErrors: false - }); - type3Evaluator.parsingType3Font = true; - const type3FontRefs = new _primitives.RefSet(evaluator.type3FontRefs); - - if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) { - type3FontRefs.put(this.dict.objId); - } - - type3Evaluator.type3FontRefs = type3FontRefs; - const translatedFont = this.font, - type3Dependencies = this.type3Dependencies; - let loadCharProcsPromise = Promise.resolve(); - const charProcs = this.dict.get("CharProcs"); - const fontResources = this.dict.get("Resources") || resources; - const charProcOperatorList = Object.create(null); - const isEmptyBBox = !translatedFont.bbox || (0, _util.isArrayEqual)(translatedFont.bbox, [0, 0, 0, 0]); - - for (const key of charProcs.getKeys()) { - loadCharProcsPromise = loadCharProcsPromise.then(() => { - const glyphStream = charProcs.get(key); - const operatorList = new _operator_list.OperatorList(); - return type3Evaluator.getOperatorList({ - stream: glyphStream, - task, - resources: fontResources, - operatorList - }).then(() => { - if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) { - this._removeType3ColorOperators(operatorList, isEmptyBBox); - } - - charProcOperatorList[key] = operatorList.getIR(); - - for (const dependency of operatorList.dependencies) { - type3Dependencies.add(dependency); - } - }).catch(function (reason) { - (0, _util.warn)(`Type3 font resource "${key}" is not available.`); - const dummyOperatorList = new _operator_list.OperatorList(); - charProcOperatorList[key] = dummyOperatorList.getIR(); - }); - }); - } - - this.type3Loaded = loadCharProcsPromise.then(() => { - translatedFont.charProcOperatorList = charProcOperatorList; - - if (this._bbox) { - translatedFont.isCharBBox = true; - translatedFont.bbox = this._bbox; - } - }); - return this.type3Loaded; - } - - _removeType3ColorOperators(operatorList, isEmptyBBox = false) { - if (isEmptyBBox) { - if (!this._bbox) { - this._bbox = [Infinity, Infinity, -Infinity, -Infinity]; - } - - const charBBox = _util.Util.normalizeRect(operatorList.argsArray[0].slice(2)); - - this._bbox[0] = Math.min(this._bbox[0], charBBox[0]); - this._bbox[1] = Math.min(this._bbox[1], charBBox[1]); - this._bbox[2] = Math.max(this._bbox[2], charBBox[2]); - this._bbox[3] = Math.max(this._bbox[3], charBBox[3]); - } - - 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 = new EvalState()) { - this.state = initialState; - this.stateStack = []; - } - - save() { - const old = this.state; - this.stateStack.push(this.state); - this.state = old.clone(); - } - - restore() { - const prev = this.stateStack.pop(); - - if (prev) { - this.state = prev; - } - } - - transform(args) { - this.state.ctm = _util.Util.transform(this.state.ctm, args); - } - -} - -class TextState { - constructor() { - this.ctm = new Float32Array(_util.IDENTITY_MATRIX); - this.fontName = null; - this.fontSize = 0; - this.font = null; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.textMatrix = _util.IDENTITY_MATRIX.slice(); - this.textLineMatrix = _util.IDENTITY_MATRIX.slice(); - this.charSpacing = 0; - this.wordSpacing = 0; - this.leading = 0; - this.textHScale = 1; - this.textRise = 0; - } - - setTextMatrix(a, b, c, d, e, f) { - const m = this.textMatrix; - m[0] = a; - m[1] = b; - m[2] = c; - m[3] = d; - m[4] = e; - m[5] = f; - } - - setTextLineMatrix(a, b, c, d, e, f) { - const m = this.textLineMatrix; - m[0] = a; - m[1] = b; - m[2] = c; - m[3] = d; - m[4] = e; - m[5] = f; - } - - translateTextMatrix(x, y) { - const m = this.textMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - } - - translateTextLineMatrix(x, y) { - const m = this.textLineMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - } - - carriageReturn() { - this.translateTextLineMatrix(0, -this.leading); - this.textMatrix = this.textLineMatrix.slice(); - } - - clone() { - const clone = Object.create(this); - clone.textMatrix = this.textMatrix.slice(); - clone.textLineMatrix = this.textLineMatrix.slice(); - clone.fontMatrix = this.fontMatrix.slice(); - return clone; - } - -} - -class EvalState { - constructor() { - this.ctm = new Float32Array(_util.IDENTITY_MATRIX); - this.font = null; - this.textRenderingMode = _util.TextRenderingMode.FILL; - this.fillColorSpace = _colorspace.ColorSpace.singletons.gray; - this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; - } - - clone() { - return Object.create(this); - } - -} - -class EvaluatorPreprocessor { - static get opMap() { - const getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t.w = { - id: _util.OPS.setLineWidth, - numArgs: 1, - variableArgs: false - }; - t.J = { - id: _util.OPS.setLineCap, - numArgs: 1, - variableArgs: false - }; - t.j = { - id: _util.OPS.setLineJoin, - numArgs: 1, - variableArgs: false - }; - t.M = { - id: _util.OPS.setMiterLimit, - numArgs: 1, - variableArgs: false - }; - t.d = { - id: _util.OPS.setDash, - numArgs: 2, - variableArgs: false - }; - t.ri = { - id: _util.OPS.setRenderingIntent, - numArgs: 1, - variableArgs: false - }; - t.i = { - id: _util.OPS.setFlatness, - numArgs: 1, - variableArgs: false - }; - t.gs = { - id: _util.OPS.setGState, - numArgs: 1, - variableArgs: false - }; - t.q = { - id: _util.OPS.save, - numArgs: 0, - variableArgs: false - }; - t.Q = { - id: _util.OPS.restore, - numArgs: 0, - variableArgs: false - }; - t.cm = { - id: _util.OPS.transform, - numArgs: 6, - variableArgs: false - }; - t.m = { - id: _util.OPS.moveTo, - numArgs: 2, - variableArgs: false - }; - t.l = { - id: _util.OPS.lineTo, - numArgs: 2, - variableArgs: false - }; - t.c = { - id: _util.OPS.curveTo, - numArgs: 6, - variableArgs: false - }; - t.v = { - id: _util.OPS.curveTo2, - numArgs: 4, - variableArgs: false - }; - t.y = { - id: _util.OPS.curveTo3, - numArgs: 4, - variableArgs: false - }; - t.h = { - id: _util.OPS.closePath, - numArgs: 0, - variableArgs: false - }; - t.re = { - id: _util.OPS.rectangle, - numArgs: 4, - variableArgs: false - }; - t.S = { - id: _util.OPS.stroke, - numArgs: 0, - variableArgs: false - }; - t.s = { - id: _util.OPS.closeStroke, - numArgs: 0, - variableArgs: false - }; - t.f = { - id: _util.OPS.fill, - numArgs: 0, - variableArgs: false - }; - t.F = { - id: _util.OPS.fill, - numArgs: 0, - variableArgs: false - }; - t["f*"] = { - id: _util.OPS.eoFill, - numArgs: 0, - variableArgs: false - }; - t.B = { - id: _util.OPS.fillStroke, - numArgs: 0, - variableArgs: false - }; - t["B*"] = { - id: _util.OPS.eoFillStroke, - numArgs: 0, - variableArgs: false - }; - t.b = { - id: _util.OPS.closeFillStroke, - numArgs: 0, - variableArgs: false - }; - t["b*"] = { - id: _util.OPS.closeEOFillStroke, - numArgs: 0, - variableArgs: false - }; - t.n = { - id: _util.OPS.endPath, - numArgs: 0, - variableArgs: false - }; - t.W = { - id: _util.OPS.clip, - numArgs: 0, - variableArgs: false - }; - t["W*"] = { - id: _util.OPS.eoClip, - numArgs: 0, - variableArgs: false - }; - t.BT = { - id: _util.OPS.beginText, - numArgs: 0, - variableArgs: false - }; - t.ET = { - id: _util.OPS.endText, - numArgs: 0, - variableArgs: false - }; - t.Tc = { - id: _util.OPS.setCharSpacing, - numArgs: 1, - variableArgs: false - }; - t.Tw = { - id: _util.OPS.setWordSpacing, - numArgs: 1, - variableArgs: false - }; - t.Tz = { - id: _util.OPS.setHScale, - numArgs: 1, - variableArgs: false - }; - t.TL = { - id: _util.OPS.setLeading, - numArgs: 1, - variableArgs: false - }; - t.Tf = { - id: _util.OPS.setFont, - numArgs: 2, - variableArgs: false - }; - t.Tr = { - id: _util.OPS.setTextRenderingMode, - numArgs: 1, - variableArgs: false - }; - t.Ts = { - id: _util.OPS.setTextRise, - numArgs: 1, - variableArgs: false - }; - t.Td = { - id: _util.OPS.moveText, - numArgs: 2, - variableArgs: false - }; - t.TD = { - id: _util.OPS.setLeadingMoveText, - numArgs: 2, - variableArgs: false - }; - t.Tm = { - id: _util.OPS.setTextMatrix, - numArgs: 6, - variableArgs: false - }; - t["T*"] = { - id: _util.OPS.nextLine, - numArgs: 0, - variableArgs: false - }; - t.Tj = { - id: _util.OPS.showText, - numArgs: 1, - variableArgs: false - }; - t.TJ = { - id: _util.OPS.showSpacedText, - numArgs: 1, - variableArgs: false - }; - t["'"] = { - id: _util.OPS.nextLineShowText, - numArgs: 1, - variableArgs: false - }; - t['"'] = { - id: _util.OPS.nextLineSetSpacingShowText, - numArgs: 3, - variableArgs: false - }; - t.d0 = { - id: _util.OPS.setCharWidth, - numArgs: 2, - variableArgs: false - }; - t.d1 = { - id: _util.OPS.setCharWidthAndBounds, - numArgs: 6, - variableArgs: false - }; - t.CS = { - id: _util.OPS.setStrokeColorSpace, - numArgs: 1, - variableArgs: false - }; - t.cs = { - id: _util.OPS.setFillColorSpace, - numArgs: 1, - variableArgs: false - }; - t.SC = { - id: _util.OPS.setStrokeColor, - numArgs: 4, - variableArgs: true - }; - t.SCN = { - id: _util.OPS.setStrokeColorN, - numArgs: 33, - variableArgs: true - }; - t.sc = { - id: _util.OPS.setFillColor, - numArgs: 4, - variableArgs: true - }; - t.scn = { - id: _util.OPS.setFillColorN, - numArgs: 33, - variableArgs: true - }; - t.G = { - id: _util.OPS.setStrokeGray, - numArgs: 1, - variableArgs: false - }; - t.g = { - id: _util.OPS.setFillGray, - numArgs: 1, - variableArgs: false - }; - t.RG = { - id: _util.OPS.setStrokeRGBColor, - numArgs: 3, - variableArgs: false - }; - t.rg = { - id: _util.OPS.setFillRGBColor, - numArgs: 3, - variableArgs: false - }; - t.K = { - id: _util.OPS.setStrokeCMYKColor, - numArgs: 4, - variableArgs: false - }; - t.k = { - id: _util.OPS.setFillCMYKColor, - numArgs: 4, - variableArgs: false - }; - t.sh = { - id: _util.OPS.shadingFill, - numArgs: 1, - variableArgs: false - }; - t.BI = { - id: _util.OPS.beginInlineImage, - numArgs: 0, - variableArgs: false - }; - t.ID = { - id: _util.OPS.beginImageData, - numArgs: 0, - variableArgs: false - }; - t.EI = { - id: _util.OPS.endInlineImage, - numArgs: 1, - variableArgs: false - }; - t.Do = { - id: _util.OPS.paintXObject, - numArgs: 1, - variableArgs: false - }; - t.MP = { - id: _util.OPS.markPoint, - numArgs: 1, - variableArgs: false - }; - t.DP = { - id: _util.OPS.markPointProps, - numArgs: 2, - variableArgs: false - }; - t.BMC = { - id: _util.OPS.beginMarkedContent, - numArgs: 1, - variableArgs: false - }; - t.BDC = { - id: _util.OPS.beginMarkedContentProps, - numArgs: 2, - variableArgs: false - }; - t.EMC = { - id: _util.OPS.endMarkedContent, - numArgs: 0, - variableArgs: false - }; - t.BX = { - id: _util.OPS.beginCompat, - numArgs: 0, - variableArgs: false - }; - t.EX = { - id: _util.OPS.endCompat, - numArgs: 0, - variableArgs: false - }; - t.BM = null; - t.BD = null; - t.true = null; - t.fa = null; - t.fal = null; - t.fals = null; - t.false = null; - t.nu = null; - t.nul = null; - t.null = null; - }); - return (0, _util.shadow)(this, "opMap", getOPMap()); - } - - static get MAX_INVALID_PATH_OPS() { - return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 10); - } - - constructor(stream, xref, stateManager = new StateManager()) { - this.parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap), - xref - }); - this.stateManager = stateManager; - this.nonProcessedArgs = []; - this._numInvalidPathOPS = 0; - } - - get savedStatesDepth() { - return this.stateManager.stateStack.length; - } - - read(operation) { - let args = operation.args; - - while (true) { - const obj = this.parser.getObj(); - - if (obj instanceof _primitives.Cmd) { - const cmd = obj.cmd; - const opSpec = EvaluatorPreprocessor.opMap[cmd]; - - if (!opSpec) { - (0, _util.warn)(`Unknown command "${cmd}".`); - continue; - } - - const fn = opSpec.id; - const numArgs = opSpec.numArgs; - let argsLength = args !== null ? args.length : 0; - - if (!opSpec.variableArgs) { - if (argsLength !== numArgs) { - const nonProcessedArgs = this.nonProcessedArgs; - - while (argsLength > numArgs) { - nonProcessedArgs.push(args.shift()); - argsLength--; - } - - while (argsLength < numArgs && nonProcessedArgs.length !== 0) { - if (args === null) { - args = []; - } - - args.unshift(nonProcessedArgs.pop()); - argsLength++; - } - } - - if (argsLength < numArgs) { - const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`; - - if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) { - throw new _util.FormatError(`Invalid ${partialMsg}`); - } - - (0, _util.warn)(`Skipping ${partialMsg}`); - - if (args !== null) { - args.length = 0; - } - - continue; - } - } else if (argsLength > numArgs) { - (0, _util.info)(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`); - } - - this.preprocessCommand(fn, args); - operation.fn = fn; - operation.args = args; - return true; - } - - if (obj === _primitives.EOF) { - return false; - } - - if (obj !== null) { - if (args === null) { - args = []; - } - - args.push(obj); - - if (args.length > 33) { - throw new _util.FormatError("Too many arguments"); - } - } - } - } - - preprocessCommand(fn, args) { - switch (fn | 0) { - case _util.OPS.save: - this.stateManager.save(); - break; - - case _util.OPS.restore: - this.stateManager.restore(); - break; - - case _util.OPS.transform: - this.stateManager.transform(args); - break; - } - } - -} - -exports.EvaluatorPreprocessor = EvaluatorPreprocessor; - -/***/ }), -/* 26 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _base_stream = __w_pdfjs_require__(9); - -var _parser = __w_pdfjs_require__(27); - -var _core_utils = __w_pdfjs_require__(8); - -var _stream = __w_pdfjs_require__(10); - -const BUILT_IN_CMAPS = ["Adobe-GB1-UCS2", "Adobe-CNS1-UCS2", "Adobe-Japan1-UCS2", "Adobe-Korea1-UCS2", "78-EUC-H", "78-EUC-V", "78-H", "78-RKSJ-H", "78-RKSJ-V", "78-V", "78ms-RKSJ-H", "78ms-RKSJ-V", "83pv-RKSJ-H", "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", "Add-H", "Add-RKSJ-H", "Add-RKSJ-V", "Add-V", "Adobe-CNS1-0", "Adobe-CNS1-1", "Adobe-CNS1-2", "Adobe-CNS1-3", "Adobe-CNS1-4", "Adobe-CNS1-5", "Adobe-CNS1-6", "Adobe-GB1-0", "Adobe-GB1-1", "Adobe-GB1-2", "Adobe-GB1-3", "Adobe-GB1-4", "Adobe-GB1-5", "Adobe-Japan1-0", "Adobe-Japan1-1", "Adobe-Japan1-2", "Adobe-Japan1-3", "Adobe-Japan1-4", "Adobe-Japan1-5", "Adobe-Japan1-6", "Adobe-Korea1-0", "Adobe-Korea1-1", "Adobe-Korea1-2", "B5-H", "B5-V", "B5pc-H", "B5pc-V", "CNS-EUC-H", "CNS-EUC-V", "CNS1-H", "CNS1-V", "CNS2-H", "CNS2-V", "ETHK-B5-H", "ETHK-B5-V", "ETen-B5-H", "ETen-B5-V", "ETenms-B5-H", "ETenms-B5-V", "EUC-H", "EUC-V", "Ext-H", "Ext-RKSJ-H", "Ext-RKSJ-V", "Ext-V", "GB-EUC-H", "GB-EUC-V", "GB-H", "GB-V", "GBK-EUC-H", "GBK-EUC-V", "GBK2K-H", "GBK2K-V", "GBKp-EUC-H", "GBKp-EUC-V", "GBT-EUC-H", "GBT-EUC-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "GBpc-EUC-H", "GBpc-EUC-V", "H", "HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", "HKm314-B5-V", "HKm471-B5-H", "HKm471-B5-V", "HKscs-B5-H", "HKscs-B5-V", "Hankaku", "Hiragana", "KSC-EUC-H", "KSC-EUC-V", "KSC-H", "KSC-Johab-H", "KSC-Johab-V", "KSC-V", "KSCms-UHC-H", "KSCms-UHC-HW-H", "KSCms-UHC-HW-V", "KSCms-UHC-V", "KSCpc-EUC-H", "KSCpc-EUC-V", "Katakana", "NWP-H", "NWP-V", "RKSJ-H", "RKSJ-V", "Roman", "UniCNS-UCS2-H", "UniCNS-UCS2-V", "UniCNS-UTF16-H", "UniCNS-UTF16-V", "UniCNS-UTF32-H", "UniCNS-UTF32-V", "UniCNS-UTF8-H", "UniCNS-UTF8-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF16-H", "UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "UniJIS-UCS2-H", "UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V", "UniJIS-UCS2-V", "UniJIS-UTF16-H", "UniJIS-UTF16-V", "UniJIS-UTF32-H", "UniJIS-UTF32-V", "UniJIS-UTF8-H", "UniJIS-UTF8-V", "UniJIS2004-UTF16-H", "UniJIS2004-UTF16-V", "UniJIS2004-UTF32-H", "UniJIS2004-UTF32-V", "UniJIS2004-UTF8-H", "UniJIS2004-UTF8-V", "UniJISPro-UCS2-HW-V", "UniJISPro-UCS2-V", "UniJISPro-UTF8-V", "UniJISX0213-UTF32-H", "UniJISX0213-UTF32-V", "UniJISX02132004-UTF32-H", "UniJISX02132004-UTF32-V", "UniKS-UCS2-H", "UniKS-UCS2-V", "UniKS-UTF16-H", "UniKS-UTF16-V", "UniKS-UTF32-H", "UniKS-UTF32-V", "UniKS-UTF8-H", "UniKS-UTF8-V", "V", "WP-Symbol"]; -const MAX_MAP_RANGE = 2 ** 24 - 1; - -class CMap { - constructor(builtInCMap = false) { - this.codespaceRanges = [[], [], [], []]; - this.numCodespaceRanges = 0; - this._map = []; - this.name = ""; - this.vertical = false; - this.useCMap = null; - this.builtInCMap = builtInCMap; - } - - addCodespaceRange(n, low, high) { - this.codespaceRanges[n - 1].push(low, high); - this.numCodespaceRanges++; - } - - mapCidRange(low, high, dstLow) { - if (high - low > MAX_MAP_RANGE) { - throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE."); - } - - while (low <= high) { - this._map[low++] = dstLow++; - } - } - - mapBfRange(low, high, dstLow) { - if (high - low > MAX_MAP_RANGE) { - throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE."); - } - - const lastByte = dstLow.length - 1; - - while (low <= high) { - this._map[low++] = dstLow; - const nextCharCode = dstLow.charCodeAt(lastByte) + 1; - - if (nextCharCode > 0xff) { - dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + "\x00"; - continue; - } - - dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode); - } - } - - mapBfRangeToArray(low, high, array) { - if (high - low > MAX_MAP_RANGE) { - throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE."); - } - - const ii = array.length; - let i = 0; - - while (low <= high && i < ii) { - this._map[low] = array[i++]; - ++low; - } - } - - mapOne(src, dst) { - this._map[src] = dst; - } - - lookup(code) { - return this._map[code]; - } - - contains(code) { - return this._map[code] !== undefined; - } - - forEach(callback) { - const map = this._map; - const length = map.length; - - if (length <= 0x10000) { - for (let i = 0; i < length; i++) { - if (map[i] !== undefined) { - callback(i, map[i]); - } - } - } else { - for (const i in map) { - callback(i, map[i]); - } - } - } - - charCodeOf(value) { - const map = this._map; - - if (map.length <= 0x10000) { - return map.indexOf(value); - } - - for (const charCode in map) { - if (map[charCode] === value) { - return charCode | 0; - } - } - - return -1; - } - - getMap() { - return this._map; - } - - readCharCode(str, offset, out) { - let c = 0; - const codespaceRanges = this.codespaceRanges; - - for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { - c = (c << 8 | str.charCodeAt(offset + n)) >>> 0; - const codespaceRange = codespaceRanges[n]; - - for (let k = 0, kk = codespaceRange.length; k < kk;) { - const low = codespaceRange[k++]; - const high = codespaceRange[k++]; - - if (c >= low && c <= high) { - out.charcode = c; - out.length = n + 1; - return; - } - } - } - - out.charcode = 0; - 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; - } - - get isIdentityCMap() { - if (!(this.name === "Identity-H" || this.name === "Identity-V")) { - return false; - } - - if (this._map.length !== 0x10000) { - return false; - } - - for (let i = 0; i < 0x10000; i++) { - if (this._map[i] !== i) { - return false; - } - } - - return true; - } - -} - -exports.CMap = CMap; - -class IdentityCMap extends CMap { - constructor(vertical, n) { - super(); - this.vertical = vertical; - this.addCodespaceRange(n, 0, 0xffff); - } - - mapCidRange(low, high, dstLow) { - (0, _util.unreachable)("should not call mapCidRange"); - } - - mapBfRange(low, high, dstLow) { - (0, _util.unreachable)("should not call mapBfRange"); - } - - mapBfRangeToArray(low, high, array) { - (0, _util.unreachable)("should not call mapBfRangeToArray"); - } - - mapOne(src, dst) { - (0, _util.unreachable)("should not call mapCidOne"); - } - - lookup(code) { - return Number.isInteger(code) && code <= 0xffff ? code : undefined; - } - - contains(code) { - return Number.isInteger(code) && code <= 0xffff; - } - - forEach(callback) { - for (let i = 0; i <= 0xffff; i++) { - callback(i, i); - } - } - - charCodeOf(value) { - return Number.isInteger(value) && value <= 0xffff ? value : -1; - } - - getMap() { - const map = new Array(0x10000); - - for (let i = 0; i <= 0xffff; i++) { - map[i] = i; - } - - return map; - } - - get length() { - return 0x10000; - } - - get isIdentityCMap() { - (0, _util.unreachable)("should not access .isIdentityCMap"); - } - -} - -exports.IdentityCMap = IdentityCMap; - -const BinaryCMapReader = function BinaryCMapReaderClosure() { - function hexToInt(a, size) { - let n = 0; - - for (let i = 0; i <= size; i++) { - n = n << 8 | a[i]; - } - - return n >>> 0; - } - - function hexToStr(a, size) { - if (size === 1) { - return String.fromCharCode(a[0], a[1]); - } - - if (size === 3) { - return String.fromCharCode(a[0], a[1], a[2], a[3]); - } - - return String.fromCharCode.apply(null, a.subarray(0, size + 1)); - } - - function addHex(a, b, size) { - let c = 0; - - for (let i = size; i >= 0; i--) { - c += a[i] + b[i]; - a[i] = c & 255; - c >>= 8; - } - } - - function incHex(a, size) { - let c = 1; - - for (let i = size; i >= 0 && c > 0; i--) { - c += a[i]; - a[i] = c & 255; - c >>= 8; - } - } - - const MAX_NUM_SIZE = 16; - const MAX_ENCODED_NUM_SIZE = 19; - - class BinaryCMapStream { - constructor(data) { - this.buffer = data; - this.pos = 0; - this.end = data.length; - this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); - } - - readByte() { - if (this.pos >= this.end) { - return -1; - } - - return this.buffer[this.pos++]; - } - - readNumber() { - let n = 0; - let last; - - do { - const b = this.readByte(); - - if (b < 0) { - throw new _util.FormatError("unexpected EOF in bcmap"); - } - - last = !(b & 0x80); - n = n << 7 | b & 0x7f; - } while (!last); - - return n; - } - - readSigned() { - const n = this.readNumber(); - return n & 1 ? ~(n >>> 1) : n >>> 1; - } - - readHex(num, size) { - num.set(this.buffer.subarray(this.pos, this.pos + size + 1)); - this.pos += size + 1; - } - - readHexNumber(num, size) { - let last; - const stack = this.tmpBuf; - let sp = 0; - - do { - const b = this.readByte(); - - if (b < 0) { - throw new _util.FormatError("unexpected EOF in bcmap"); - } - - last = !(b & 0x80); - stack[sp++] = b & 0x7f; - } while (!last); - - let i = size, - buffer = 0, - bufferSize = 0; - - while (i >= 0) { - while (bufferSize < 8 && stack.length > 0) { - buffer |= stack[--sp] << bufferSize; - bufferSize += 7; - } - - num[i] = buffer & 255; - i--; - buffer >>= 8; - bufferSize -= 8; - } - } - - readHexSigned(num, size) { - this.readHexNumber(num, size); - const sign = num[size] & 1 ? 255 : 0; - let c = 0; - - for (let i = 0; i <= size; i++) { - c = (c & 1) << 8 | num[i]; - num[i] = c >> 1 ^ sign; - } - } - - readString() { - const len = this.readNumber(); - let s = ""; - - for (let i = 0; i < len; i++) { - s += String.fromCharCode(this.readNumber()); - } - - return s; - } - - } - - class BinaryCMapReader { - async process(data, cMap, extend) { - const stream = new BinaryCMapStream(data); - const header = stream.readByte(); - cMap.vertical = !!(header & 1); - let useCMap = null; - const start = new Uint8Array(MAX_NUM_SIZE); - const end = new Uint8Array(MAX_NUM_SIZE); - const char = new Uint8Array(MAX_NUM_SIZE); - const charCode = new Uint8Array(MAX_NUM_SIZE); - const tmp = new Uint8Array(MAX_NUM_SIZE); - let code; - let b; - - while ((b = stream.readByte()) >= 0) { - const type = b >> 5; - - if (type === 7) { - switch (b & 0x1f) { - case 0: - stream.readString(); - break; - - case 1: - useCMap = stream.readString(); - break; - } - - continue; - } - - const sequence = !!(b & 0x10); - const dataSize = b & 15; - - if (dataSize + 1 > MAX_NUM_SIZE) { - throw new Error("BinaryCMapReader.process: Invalid dataSize."); - } - - const ucs2DataSize = 1; - const subitemsCount = stream.readNumber(); - - switch (type) { - case 0: - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); - - for (let i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); - } - - break; - - case 1: - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - stream.readNumber(); - - for (let i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - stream.readNumber(); - } - - break; - - case 2: - stream.readHex(char, dataSize); - code = stream.readNumber(); - cMap.mapOne(hexToInt(char, dataSize), code); - - for (let i = 1; i < subitemsCount; i++) { - incHex(char, dataSize); - - if (!sequence) { - stream.readHexNumber(tmp, dataSize); - addHex(char, tmp, dataSize); - } - - code = stream.readSigned() + (code + 1); - cMap.mapOne(hexToInt(char, dataSize), code); - } - - break; - - case 3: - stream.readHex(start, dataSize); - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); - - for (let i = 1; i < subitemsCount; i++) { - incHex(end, dataSize); - - if (!sequence) { - stream.readHexNumber(start, dataSize); - addHex(start, end, dataSize); - } else { - start.set(end); - } - - stream.readHexNumber(end, dataSize); - addHex(end, start, dataSize); - code = stream.readNumber(); - cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); - } - - break; - - case 4: - stream.readHex(char, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); - - for (let i = 1; i < subitemsCount; i++) { - incHex(char, ucs2DataSize); - - if (!sequence) { - stream.readHexNumber(tmp, ucs2DataSize); - addHex(char, tmp, ucs2DataSize); - } - - incHex(charCode, dataSize); - stream.readHexSigned(tmp, dataSize); - addHex(charCode, tmp, dataSize); - cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); - } - - break; - - case 5: - stream.readHex(start, ucs2DataSize); - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); - - for (let i = 1; i < subitemsCount; i++) { - incHex(end, ucs2DataSize); - - if (!sequence) { - stream.readHexNumber(start, ucs2DataSize); - addHex(start, end, ucs2DataSize); - } else { - start.set(end); - } - - stream.readHexNumber(end, ucs2DataSize); - addHex(end, start, ucs2DataSize); - stream.readHex(charCode, dataSize); - cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); - } - - break; - - default: - throw new Error(`BinaryCMapReader.process - unknown type: ${type}`); - } - } - - if (useCMap) { - return extend(useCMap); - } - - return cMap; - } - - } - - return BinaryCMapReader; -}(); - -const CMapFactory = function CMapFactoryClosure() { - function strToInt(str) { - let a = 0; - - for (let i = 0; i < str.length; i++) { - a = a << 8 | str.charCodeAt(i); - } - - return a >>> 0; - } - - function expectString(obj) { - if (typeof obj !== "string") { - throw new _util.FormatError("Malformed CMap: expected string."); - } - } - - function expectInt(obj) { - if (!Number.isInteger(obj)) { - throw new _util.FormatError("Malformed CMap: expected int."); - } - } - - function parseBfChar(cMap, lexer) { - while (true) { - let obj = lexer.getObj(); - - if (obj === _primitives.EOF) { - break; - } - - if ((0, _primitives.isCmd)(obj, "endbfchar")) { - return; - } - - expectString(obj); - const src = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - const dst = obj; - cMap.mapOne(src, dst); - } - } - - function parseBfRange(cMap, lexer) { - while (true) { - let obj = lexer.getObj(); - - if (obj === _primitives.EOF) { - break; - } - - if ((0, _primitives.isCmd)(obj, "endbfrange")) { - return; - } - - expectString(obj); - const low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - const high = strToInt(obj); - obj = lexer.getObj(); - - if (Number.isInteger(obj) || typeof obj === "string") { - const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj; - cMap.mapBfRange(low, high, dstLow); - } else if ((0, _primitives.isCmd)(obj, "[")) { - obj = lexer.getObj(); - const array = []; - - while (!(0, _primitives.isCmd)(obj, "]") && obj !== _primitives.EOF) { - array.push(obj); - obj = lexer.getObj(); - } - - cMap.mapBfRangeToArray(low, high, array); - } else { - break; - } - } - - throw new _util.FormatError("Invalid bf range."); - } - - function parseCidChar(cMap, lexer) { - while (true) { - let obj = lexer.getObj(); - - if (obj === _primitives.EOF) { - break; - } - - if ((0, _primitives.isCmd)(obj, "endcidchar")) { - return; - } - - expectString(obj); - const src = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - const dst = obj; - cMap.mapOne(src, dst); - } - } - - function parseCidRange(cMap, lexer) { - while (true) { - let obj = lexer.getObj(); - - if (obj === _primitives.EOF) { - break; - } - - if ((0, _primitives.isCmd)(obj, "endcidrange")) { - return; - } - - expectString(obj); - const low = strToInt(obj); - obj = lexer.getObj(); - expectString(obj); - const high = strToInt(obj); - obj = lexer.getObj(); - expectInt(obj); - const dstLow = obj; - cMap.mapCidRange(low, high, dstLow); - } - } - - function parseCodespaceRange(cMap, lexer) { - while (true) { - let obj = lexer.getObj(); - - if (obj === _primitives.EOF) { - break; - } - - if ((0, _primitives.isCmd)(obj, "endcodespacerange")) { - return; - } - - if (typeof obj !== "string") { - break; - } - - const low = strToInt(obj); - obj = lexer.getObj(); - - if (typeof obj !== "string") { - break; - } - - const high = strToInt(obj); - cMap.addCodespaceRange(obj.length, low, high); - } - - throw new _util.FormatError("Invalid codespace range."); - } - - function parseWMode(cMap, lexer) { - const obj = lexer.getObj(); - - if (Number.isInteger(obj)) { - cMap.vertical = !!obj; - } - } - - function parseCMapName(cMap, lexer) { - const obj = lexer.getObj(); - - if (obj instanceof _primitives.Name) { - cMap.name = obj.name; - } - } - - async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) { - let previous, embeddedUseCMap; - - objLoop: while (true) { - try { - const obj = lexer.getObj(); - - if (obj === _primitives.EOF) { - break; - } else if (obj instanceof _primitives.Name) { - if (obj.name === "WMode") { - parseWMode(cMap, lexer); - } else if (obj.name === "CMapName") { - parseCMapName(cMap, lexer); - } - - previous = obj; - } else if (obj instanceof _primitives.Cmd) { - switch (obj.cmd) { - case "endcmap": - break objLoop; - - case "usecmap": - if (previous instanceof _primitives.Name) { - embeddedUseCMap = previous.name; - } - - break; - - case "begincodespacerange": - parseCodespaceRange(cMap, lexer); - break; - - case "beginbfchar": - parseBfChar(cMap, lexer); - break; - - case "begincidchar": - parseCidChar(cMap, lexer); - break; - - case "beginbfrange": - parseBfRange(cMap, lexer); - break; - - case "begincidrange": - parseCidRange(cMap, lexer); - break; - } - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("Invalid cMap data: " + ex); - continue; - } - } - - if (!useCMap && embeddedUseCMap) { - useCMap = embeddedUseCMap; - } - - if (useCMap) { - return extendCMap(cMap, fetchBuiltInCMap, useCMap); - } - - return cMap; - } - - async function extendCMap(cMap, fetchBuiltInCMap, useCMap) { - cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap); - - if (cMap.numCodespaceRanges === 0) { - const useCodespaceRanges = cMap.useCMap.codespaceRanges; - - for (let i = 0; i < useCodespaceRanges.length; i++) { - cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); - } - - cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; - } - - cMap.useCMap.forEach(function (key, value) { - if (!cMap.contains(key)) { - cMap.mapOne(key, cMap.useCMap.lookup(key)); - } - }); - return cMap; - } - - async function createBuiltInCMap(name, fetchBuiltInCMap) { - if (name === "Identity-H") { - return new IdentityCMap(false, 2); - } else if (name === "Identity-V") { - return new IdentityCMap(true, 2); - } - - if (!BUILT_IN_CMAPS.includes(name)) { - throw new Error("Unknown CMap name: " + name); - } - - if (!fetchBuiltInCMap) { - throw new Error("Built-in CMap parameters are not provided."); - } - - const { - cMapData, - compressionType - } = await fetchBuiltInCMap(name); - const cMap = new CMap(true); - - if (compressionType === _util.CMapCompressionType.BINARY) { - return new BinaryCMapReader().process(cMapData, cMap, useCMap => { - return extendCMap(cMap, fetchBuiltInCMap, useCMap); - }); - } - - if (compressionType === _util.CMapCompressionType.NONE) { - const lexer = new _parser.Lexer(new _stream.Stream(cMapData)); - return parseCMap(cMap, lexer, fetchBuiltInCMap, null); - } - - throw new Error("TODO: Only BINARY/NONE CMap compression is currently supported."); - } - - return { - async create(params) { - const encoding = params.encoding; - const fetchBuiltInCMap = params.fetchBuiltInCMap; - const useCMap = params.useCMap; - - if (encoding instanceof _primitives.Name) { - return createBuiltInCMap(encoding.name, fetchBuiltInCMap); - } else if (encoding instanceof _base_stream.BaseStream) { - const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, useCMap); - - if (parsedCMap.isIdentityCMap) { - return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap); - } - - return parsedCMap; - } - - throw new Error("Encoding required."); - } - - }; -}(); - -exports.CMapFactory = CMapFactory; - -/***/ }), -/* 27 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Parser = exports.Linearization = exports.Lexer = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _core_utils = __w_pdfjs_require__(8); - -var _ascii_85_stream = __w_pdfjs_require__(28); - -var _ascii_hex_stream = __w_pdfjs_require__(30); - -var _ccitt_stream = __w_pdfjs_require__(31); - -var _flate_stream = __w_pdfjs_require__(33); - -var _jbig2_stream = __w_pdfjs_require__(34); - -var _jpeg_stream = __w_pdfjs_require__(37); - -var _jpx_stream = __w_pdfjs_require__(39); - -var _lzw_stream = __w_pdfjs_require__(41); - -var _stream = __w_pdfjs_require__(10); - -var _predictor_stream = __w_pdfjs_require__(42); - -var _run_length_stream = __w_pdfjs_require__(43); - -const MAX_LENGTH_TO_CACHE = 1000; -const MAX_ADLER32_LENGTH = 5552; - -function computeAdler32(bytes) { - const bytesLength = bytes.length; - let a = 1, - b = 0; - - for (let i = 0; i < bytesLength; ++i) { - a += bytes[i] & 0xff; - b += a; - } - - return b % 65521 << 16 | a % 65521; -} - -class Parser { - constructor({ - lexer, - xref, - allowStreams = false, - recoveryMode = false - }) { - this.lexer = lexer; - this.xref = xref; - this.allowStreams = allowStreams; - this.recoveryMode = recoveryMode; - this.imageCache = Object.create(null); - this.refill(); - } - - refill() { - this.buf1 = this.lexer.getObj(); - this.buf2 = this.lexer.getObj(); - } - - shift() { - if (this.buf2 instanceof _primitives.Cmd && this.buf2.cmd === "ID") { - this.buf1 = this.buf2; - this.buf2 = null; - } else { - this.buf1 = this.buf2; - this.buf2 = this.lexer.getObj(); - } - } - - tryShift() { - try { - this.shift(); - return true; - } catch (e) { - if (e instanceof _core_utils.MissingDataException) { - throw e; - } - - return false; - } - } - - getObj(cipherTransform = null) { - const buf1 = this.buf1; - this.shift(); - - if (buf1 instanceof _primitives.Cmd) { - switch (buf1.cmd) { - case "BI": - return this.makeInlineImage(cipherTransform); - - case "[": - const array = []; - - while (!(0, _primitives.isCmd)(this.buf1, "]") && this.buf1 !== _primitives.EOF) { - array.push(this.getObj(cipherTransform)); - } - - if (this.buf1 === _primitives.EOF) { - if (this.recoveryMode) { - return array; - } - - throw new _core_utils.ParserEOFException("End of file inside array."); - } - - this.shift(); - return array; - - case "<<": - const dict = new _primitives.Dict(this.xref); - - while (!(0, _primitives.isCmd)(this.buf1, ">>") && this.buf1 !== _primitives.EOF) { - if (!(this.buf1 instanceof _primitives.Name)) { - (0, _util.info)("Malformed dictionary: key must be a name object"); - this.shift(); - continue; - } - - const key = this.buf1.name; - this.shift(); - - if (this.buf1 === _primitives.EOF) { - break; - } - - dict.set(key, this.getObj(cipherTransform)); - } - - if (this.buf1 === _primitives.EOF) { - if (this.recoveryMode) { - return dict; - } - - throw new _core_utils.ParserEOFException("End of file inside dictionary."); - } - - if ((0, _primitives.isCmd)(this.buf2, "stream")) { - return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict; - } - - this.shift(); - return dict; - - default: - return buf1; - } - } - - if (Number.isInteger(buf1)) { - if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, "R")) { - const ref = _primitives.Ref.get(buf1, this.buf1); - - this.shift(); - this.shift(); - return ref; - } - - return buf1; - } - - if (typeof buf1 === "string") { - if (cipherTransform) { - return cipherTransform.decryptString(buf1); - } - - return buf1; - } - - return buf1; - } - - findDefaultInlineStreamEnd(stream) { - const E = 0x45, - I = 0x49, - SPACE = 0x20, - LF = 0xa, - CR = 0xd, - NUL = 0x0; - const lexer = this.lexer, - startPos = stream.pos, - n = 10; - let state = 0, - ch, - maybeEIPos; - - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = ch === E ? 1 : 0; - } else if (state === 1) { - state = ch === I ? 2 : 0; - } else { - (0, _util.assert)(state === 2, "findDefaultInlineStreamEnd - invalid state."); - - if (ch === SPACE || ch === LF || ch === CR) { - maybeEIPos = stream.pos; - const followingBytes = stream.peekBytes(n); - - for (let i = 0, ii = followingBytes.length; i < ii; i++) { - ch = followingBytes[i]; - - if (ch === NUL && followingBytes[i + 1] !== NUL) { - continue; - } - - if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) { - state = 0; - break; - } - } - - if (state !== 2) { - continue; - } - - if (lexer.knownCommands) { - const nextObj = lexer.peekObj(); - - if (nextObj instanceof _primitives.Cmd && !lexer.knownCommands[nextObj.cmd]) { - state = 0; - } - } else { - (0, _util.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined."); - } - - if (state === 2) { - break; - } - } else { - state = 0; - } - } - } - - if (ch === -1) { - (0, _util.warn)("findDefaultInlineStreamEnd: " + "Reached the end of the stream without finding a valid EI marker"); - - if (maybeEIPos) { - (0, _util.warn)('... trying to recover by using the last "EI" occurrence.'); - stream.skip(-(stream.pos - maybeEIPos)); - } - } - - let endOffset = 4; - stream.skip(-endOffset); - ch = stream.peekByte(); - stream.skip(endOffset); - - if (!(0, _core_utils.isWhiteSpace)(ch)) { - endOffset--; - } - - return stream.pos - endOffset - startPos; - } - - findDCTDecodeInlineStreamEnd(stream) { - const startPos = stream.pos; - let foundEOI = false, - b, - markerLength; - - while ((b = stream.getByte()) !== -1) { - if (b !== 0xff) { - continue; - } - - switch (stream.getByte()) { - case 0x00: - break; - - case 0xff: - stream.skip(-1); - break; - - case 0xd9: - foundEOI = true; - break; - - case 0xc0: - case 0xc1: - case 0xc2: - case 0xc3: - case 0xc5: - case 0xc6: - case 0xc7: - case 0xc9: - case 0xca: - case 0xcb: - case 0xcd: - case 0xce: - case 0xcf: - case 0xc4: - case 0xcc: - case 0xda: - case 0xdb: - case 0xdc: - case 0xdd: - case 0xde: - case 0xdf: - case 0xe0: - case 0xe1: - case 0xe2: - case 0xe3: - case 0xe4: - case 0xe5: - case 0xe6: - case 0xe7: - case 0xe8: - case 0xe9: - case 0xea: - case 0xeb: - case 0xec: - case 0xed: - case 0xee: - case 0xef: - case 0xfe: - markerLength = stream.getUint16(); - - if (markerLength > 2) { - stream.skip(markerLength - 2); - } else { - stream.skip(-2); - } - - break; - } - - if (foundEOI) { - break; - } - } - - const length = stream.pos - startPos; - - if (b === -1) { - (0, _util.warn)("Inline DCTDecode image stream: " + "EOI marker not found, searching for /EI/ instead."); - stream.skip(-length); - return this.findDefaultInlineStreamEnd(stream); - } - - this.inlineStreamSkipEI(stream); - return length; - } - - findASCII85DecodeInlineStreamEnd(stream) { - const TILDE = 0x7e, - GT = 0x3e; - const startPos = stream.pos; - let ch; - - while ((ch = stream.getByte()) !== -1) { - if (ch === TILDE) { - const tildePos = stream.pos; - ch = stream.peekByte(); - - while ((0, _core_utils.isWhiteSpace)(ch)) { - stream.skip(); - ch = stream.peekByte(); - } - - if (ch === GT) { - stream.skip(); - break; - } - - if (stream.pos > tildePos) { - const maybeEI = stream.peekBytes(2); - - if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) { - break; - } - } - } - } - - const length = stream.pos - startPos; - - if (ch === -1) { - (0, _util.warn)("Inline ASCII85Decode image stream: " + "EOD marker not found, searching for /EI/ instead."); - stream.skip(-length); - return this.findDefaultInlineStreamEnd(stream); - } - - this.inlineStreamSkipEI(stream); - return length; - } - - findASCIIHexDecodeInlineStreamEnd(stream) { - const GT = 0x3e; - const startPos = stream.pos; - let ch; - - while ((ch = stream.getByte()) !== -1) { - if (ch === GT) { - break; - } - } - - const length = stream.pos - startPos; - - if (ch === -1) { - (0, _util.warn)("Inline ASCIIHexDecode image stream: " + "EOD marker not found, searching for /EI/ instead."); - stream.skip(-length); - return this.findDefaultInlineStreamEnd(stream); - } - - this.inlineStreamSkipEI(stream); - return length; - } - - inlineStreamSkipEI(stream) { - const E = 0x45, - I = 0x49; - let state = 0, - ch; - - while ((ch = stream.getByte()) !== -1) { - if (state === 0) { - state = ch === E ? 1 : 0; - } else if (state === 1) { - state = ch === I ? 2 : 0; - } else if (state === 2) { - break; - } - } - } - - makeInlineImage(cipherTransform) { - const lexer = this.lexer; - const stream = lexer.stream; - const dict = new _primitives.Dict(this.xref); - let dictLength; - - while (!(0, _primitives.isCmd)(this.buf1, "ID") && this.buf1 !== _primitives.EOF) { - if (!(this.buf1 instanceof _primitives.Name)) { - throw new _util.FormatError("Dictionary key must be a name object"); - } - - const key = this.buf1.name; - this.shift(); - - if (this.buf1 === _primitives.EOF) { - break; - } - - dict.set(key, this.getObj(cipherTransform)); - } - - if (lexer.beginInlineImagePos !== -1) { - dictLength = stream.pos - lexer.beginInlineImagePos; - } - - const filter = dict.get("F", "Filter"); - let filterName; - - if (filter instanceof _primitives.Name) { - filterName = filter.name; - } else if (Array.isArray(filter)) { - const filterZero = this.xref.fetchIfRef(filter[0]); - - if (filterZero instanceof _primitives.Name) { - filterName = filterZero.name; - } - } - - const startPos = stream.pos; - let length; - - switch (filterName) { - case "DCT": - case "DCTDecode": - length = this.findDCTDecodeInlineStreamEnd(stream); - break; - - case "A85": - case "ASCII85Decode": - length = this.findASCII85DecodeInlineStreamEnd(stream); - break; - - case "AHx": - case "ASCIIHexDecode": - length = this.findASCIIHexDecodeInlineStreamEnd(stream); - break; - - default: - length = this.findDefaultInlineStreamEnd(stream); - } - - let imageStream = stream.makeSubStream(startPos, length, dict); - let cacheKey; - - if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) { - const imageBytes = imageStream.getBytes(); - imageStream.reset(); - const initialStreamPos = stream.pos; - stream.pos = lexer.beginInlineImagePos; - const dictBytes = stream.getBytes(dictLength); - stream.pos = initialStreamPos; - cacheKey = computeAdler32(imageBytes) + "_" + computeAdler32(dictBytes); - const cacheEntry = this.imageCache[cacheKey]; - - if (cacheEntry !== undefined) { - this.buf2 = _primitives.Cmd.get("EI"); - this.shift(); - cacheEntry.reset(); - return cacheEntry; - } - } - - if (cipherTransform) { - imageStream = cipherTransform.createStream(imageStream, length); - } - - imageStream = this.filter(imageStream, dict, length); - imageStream.dict = dict; - - if (cacheKey !== undefined) { - imageStream.cacheKey = `inline_${length}_${cacheKey}`; - this.imageCache[cacheKey] = imageStream; - } - - this.buf2 = _primitives.Cmd.get("EI"); - this.shift(); - return imageStream; - } - - _findStreamLength(startPos, signature) { - const { - stream - } = this.lexer; - stream.pos = startPos; - const SCAN_BLOCK_LENGTH = 2048; - const signatureLength = signature.length; - - while (stream.pos < stream.end) { - const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); - const scanLength = scanBytes.length - signatureLength; - - if (scanLength <= 0) { - break; - } - - let pos = 0; - - while (pos < scanLength) { - let j = 0; - - while (j < signatureLength && scanBytes[pos + j] === signature[j]) { - j++; - } - - if (j >= signatureLength) { - stream.pos += pos; - return stream.pos - startPos; - } - - pos++; - } - - stream.pos += scanLength; - } - - return -1; - } - - makeStream(dict, cipherTransform) { - const lexer = this.lexer; - let stream = lexer.stream; - lexer.skipToNextLine(); - const startPos = stream.pos - 1; - let length = dict.get("Length"); - - if (!Number.isInteger(length)) { - (0, _util.info)(`Bad length "${length && length.toString()}" in stream.`); - length = 0; - } - - stream.pos = startPos + length; - lexer.nextChar(); - - if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, "endstream")) { - this.shift(); - } else { - const ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]); - - let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE); - - if (actualLength < 0) { - const MAX_TRUNCATION = 1; - - for (let i = 1; i <= MAX_TRUNCATION; i++) { - const end = ENDSTREAM_SIGNATURE.length - i; - const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end); - - const maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE); - - if (maybeLength >= 0) { - const lastByte = stream.peekBytes(end + 1)[end]; - - if (!(0, _core_utils.isWhiteSpace)(lastByte)) { - break; - } - - (0, _util.info)(`Found "${(0, _util.bytesToString)(TRUNCATED_SIGNATURE)}" when ` + "searching for endstream command."); - actualLength = maybeLength; - break; - } - } - - if (actualLength < 0) { - throw new _util.FormatError("Missing endstream command."); - } - } - - length = actualLength; - lexer.nextChar(); - this.shift(); - this.shift(); - } - - this.shift(); - stream = stream.makeSubStream(startPos, length, dict); - - if (cipherTransform) { - stream = cipherTransform.createStream(stream, length); - } - - stream = this.filter(stream, dict, length); - stream.dict = dict; - return stream; - } - - filter(stream, dict, length) { - let filter = dict.get("F", "Filter"); - let params = dict.get("DP", "DecodeParms"); - - if (filter instanceof _primitives.Name) { - if (Array.isArray(params)) { - (0, _util.warn)("/DecodeParms should not be an Array, when /Filter is a Name."); - } - - return this.makeFilter(stream, filter.name, length, params); - } - - let maybeLength = length; - - if (Array.isArray(filter)) { - const filterArray = filter; - const paramsArray = params; - - for (let i = 0, ii = filterArray.length; i < ii; ++i) { - filter = this.xref.fetchIfRef(filterArray[i]); - - if (!(filter instanceof _primitives.Name)) { - throw new _util.FormatError(`Bad filter name "${filter}"`); - } - - params = null; - - if (Array.isArray(paramsArray) && i in paramsArray) { - params = this.xref.fetchIfRef(paramsArray[i]); - } - - stream = this.makeFilter(stream, filter.name, maybeLength, params); - maybeLength = null; - } - } - - return stream; - } - - makeFilter(stream, name, maybeLength, params) { - if (maybeLength === 0) { - (0, _util.warn)(`Empty "${name}" stream.`); - return new _stream.NullStream(); - } - - const xrefStats = this.xref.stats; - - try { - switch (name) { - case "Fl": - case "FlateDecode": - xrefStats.addStreamType(_util.StreamType.FLATE); - - if (params) { - return new _predictor_stream.PredictorStream(new _flate_stream.FlateStream(stream, maybeLength), maybeLength, params); - } - - return new _flate_stream.FlateStream(stream, maybeLength); - - case "LZW": - case "LZWDecode": - xrefStats.addStreamType(_util.StreamType.LZW); - let earlyChange = 1; - - if (params) { - if (params.has("EarlyChange")) { - earlyChange = params.get("EarlyChange"); - } - - return new _predictor_stream.PredictorStream(new _lzw_stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params); - } - - return new _lzw_stream.LZWStream(stream, maybeLength, earlyChange); - - case "DCT": - case "DCTDecode": - xrefStats.addStreamType(_util.StreamType.DCT); - return new _jpeg_stream.JpegStream(stream, maybeLength, params); - - case "JPX": - case "JPXDecode": - xrefStats.addStreamType(_util.StreamType.JPX); - return new _jpx_stream.JpxStream(stream, maybeLength, params); - - case "A85": - case "ASCII85Decode": - xrefStats.addStreamType(_util.StreamType.A85); - return new _ascii_85_stream.Ascii85Stream(stream, maybeLength); - - case "AHx": - case "ASCIIHexDecode": - xrefStats.addStreamType(_util.StreamType.AHX); - return new _ascii_hex_stream.AsciiHexStream(stream, maybeLength); - - case "CCF": - case "CCITTFaxDecode": - xrefStats.addStreamType(_util.StreamType.CCF); - return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params); - - case "RL": - case "RunLengthDecode": - xrefStats.addStreamType(_util.StreamType.RLX); - return new _run_length_stream.RunLengthStream(stream, maybeLength); - - case "JBIG2Decode": - xrefStats.addStreamType(_util.StreamType.JBIG); - return new _jbig2_stream.Jbig2Stream(stream, maybeLength, params); - } - - (0, _util.warn)(`Filter "${name}" is not supported.`); - return stream; - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)(`Invalid stream: "${ex}"`); - return new _stream.NullStream(); - } - } - -} - -exports.Parser = Parser; -const specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - -function toHexDigit(ch) { - if (ch >= 0x30 && ch <= 0x39) { - return ch & 0x0f; - } - - if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { - return (ch & 0x0f) + 9; - } - - return -1; -} - -class Lexer { - constructor(stream, knownCommands = null) { - this.stream = stream; - this.nextChar(); - this.strBuf = []; - this.knownCommands = knownCommands; - this._hexStringNumWarn = 0; - this.beginInlineImagePos = -1; - } - - nextChar() { - return this.currentChar = this.stream.getByte(); - } - - peekChar() { - return this.stream.peekByte(); - } - - getNumber() { - let ch = this.currentChar; - let eNotation = false; - let divideBy = 0; - let sign = 0; - - if (ch === 0x2d) { - sign = -1; - ch = this.nextChar(); - - if (ch === 0x2d) { - ch = this.nextChar(); - } - } else if (ch === 0x2b) { - sign = 1; - ch = this.nextChar(); - } - - if (ch === 0x0a || ch === 0x0d) { - do { - ch = this.nextChar(); - } while (ch === 0x0a || ch === 0x0d); - } - - if (ch === 0x2e) { - divideBy = 10; - ch = this.nextChar(); - } - - if (ch < 0x30 || ch > 0x39) { - if ((0, _core_utils.isWhiteSpace)(ch) || ch === -1) { - if (divideBy === 10 && sign === 0) { - (0, _util.warn)("Lexer.getNumber - treating a single decimal point as zero."); - return 0; - } - - if (divideBy === 0 && sign === -1) { - (0, _util.warn)("Lexer.getNumber - treating a single minus sign as zero."); - return 0; - } - } - - throw new _util.FormatError(`Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`); - } - - sign = sign || 1; - let baseValue = ch - 0x30; - let powerValue = 0; - let powerValueSign = 1; - - while ((ch = this.nextChar()) >= 0) { - if (ch >= 0x30 && ch <= 0x39) { - const currentDigit = ch - 0x30; - - if (eNotation) { - powerValue = powerValue * 10 + currentDigit; - } else { - if (divideBy !== 0) { - divideBy *= 10; - } - - baseValue = baseValue * 10 + currentDigit; - } - } else if (ch === 0x2e) { - if (divideBy === 0) { - divideBy = 1; - } else { - break; - } - } else if (ch === 0x2d) { - (0, _util.warn)("Badly formatted number: minus sign in the middle"); - } else if (ch === 0x45 || ch === 0x65) { - ch = this.peekChar(); - - if (ch === 0x2b || ch === 0x2d) { - powerValueSign = ch === 0x2d ? -1 : 1; - this.nextChar(); - } else if (ch < 0x30 || ch > 0x39) { - break; - } - - eNotation = true; - } else { - break; - } - } - - if (divideBy !== 0) { - baseValue /= divideBy; - } - - if (eNotation) { - baseValue *= 10 ** (powerValueSign * powerValue); - } - - return sign * baseValue; - } - - getString() { - let numParen = 1; - let done = false; - const strBuf = this.strBuf; - strBuf.length = 0; - let ch = this.nextChar(); - - while (true) { - let charBuffered = false; - - switch (ch | 0) { - case -1: - (0, _util.warn)("Unterminated string"); - done = true; - break; - - case 0x28: - ++numParen; - strBuf.push("("); - break; - - case 0x29: - if (--numParen === 0) { - this.nextChar(); - done = true; - } else { - strBuf.push(")"); - } - - break; - - case 0x5c: - ch = this.nextChar(); - - switch (ch) { - case -1: - (0, _util.warn)("Unterminated string"); - done = true; - break; - - case 0x6e: - strBuf.push("\n"); - break; - - case 0x72: - strBuf.push("\r"); - break; - - case 0x74: - strBuf.push("\t"); - break; - - case 0x62: - strBuf.push("\b"); - break; - - case 0x66: - strBuf.push("\f"); - break; - - case 0x5c: - case 0x28: - case 0x29: - strBuf.push(String.fromCharCode(ch)); - break; - - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - let x = ch & 0x0f; - ch = this.nextChar(); - charBuffered = true; - - if (ch >= 0x30 && ch <= 0x37) { - x = (x << 3) + (ch & 0x0f); - ch = this.nextChar(); - - if (ch >= 0x30 && ch <= 0x37) { - charBuffered = false; - x = (x << 3) + (ch & 0x0f); - } - } - - strBuf.push(String.fromCharCode(x)); - break; - - case 0x0d: - if (this.peekChar() === 0x0a) { - this.nextChar(); - } - - break; - - case 0x0a: - break; - - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - - break; - - default: - strBuf.push(String.fromCharCode(ch)); - break; - } - - if (done) { - break; - } - - if (!charBuffered) { - ch = this.nextChar(); - } - } - - return strBuf.join(""); - } - - getName() { - let ch, previousCh; - const strBuf = this.strBuf; - strBuf.length = 0; - - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - if (ch === 0x23) { - ch = this.nextChar(); - - if (specialChars[ch]) { - (0, _util.warn)("Lexer_getName: " + "NUMBER SIGN (#) should be followed by a hexadecimal number."); - strBuf.push("#"); - break; - } - - const x = toHexDigit(ch); - - if (x !== -1) { - previousCh = ch; - ch = this.nextChar(); - const x2 = toHexDigit(ch); - - if (x2 === -1) { - (0, _util.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + "in hexadecimal number."); - strBuf.push("#", String.fromCharCode(previousCh)); - - if (specialChars[ch]) { - break; - } - - strBuf.push(String.fromCharCode(ch)); - continue; - } - - strBuf.push(String.fromCharCode(x << 4 | x2)); - } else { - strBuf.push("#", String.fromCharCode(ch)); - } - } else { - strBuf.push(String.fromCharCode(ch)); - } - } - - if (strBuf.length > 127) { - (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`); - } - - return _primitives.Name.get(strBuf.join("")); - } - - _hexStringWarn(ch) { - const MAX_HEX_STRING_NUM_WARN = 5; - - if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) { - (0, _util.warn)("getHexString - ignoring additional invalid characters."); - return; - } - - if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) { - return; - } - - (0, _util.warn)(`getHexString - ignoring invalid character: ${ch}`); - } - - getHexString() { - const strBuf = this.strBuf; - strBuf.length = 0; - let ch = this.currentChar; - let isFirstHex = true; - let firstDigit, secondDigit; - this._hexStringNumWarn = 0; - - while (true) { - if (ch < 0) { - (0, _util.warn)("Unterminated hex string"); - break; - } else if (ch === 0x3e) { - this.nextChar(); - break; - } else if (specialChars[ch] === 1) { - ch = this.nextChar(); - continue; - } else { - if (isFirstHex) { - firstDigit = toHexDigit(ch); - - if (firstDigit === -1) { - this._hexStringWarn(ch); - - ch = this.nextChar(); - continue; - } - } else { - secondDigit = toHexDigit(ch); - - if (secondDigit === -1) { - this._hexStringWarn(ch); - - ch = this.nextChar(); - continue; - } - - strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit)); - } - - isFirstHex = !isFirstHex; - ch = this.nextChar(); - } - } - - return strBuf.join(""); - } - - getObj() { - let comment = false; - let ch = this.currentChar; - - while (true) { - if (ch < 0) { - return _primitives.EOF; - } - - if (comment) { - if (ch === 0x0a || ch === 0x0d) { - comment = false; - } - } else if (ch === 0x25) { - comment = true; - } else if (specialChars[ch] !== 1) { - break; - } - - ch = this.nextChar(); - } - - switch (ch | 0) { - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x2b: - case 0x2d: - case 0x2e: - return this.getNumber(); - - case 0x28: - return this.getString(); - - case 0x2f: - return this.getName(); - - case 0x5b: - this.nextChar(); - return _primitives.Cmd.get("["); - - case 0x5d: - this.nextChar(); - return _primitives.Cmd.get("]"); - - case 0x3c: - ch = this.nextChar(); - - if (ch === 0x3c) { - this.nextChar(); - return _primitives.Cmd.get("<<"); - } - - return this.getHexString(); - - case 0x3e: - ch = this.nextChar(); - - if (ch === 0x3e) { - this.nextChar(); - return _primitives.Cmd.get(">>"); - } - - return _primitives.Cmd.get(">"); - - case 0x7b: - this.nextChar(); - return _primitives.Cmd.get("{"); - - case 0x7d: - this.nextChar(); - return _primitives.Cmd.get("}"); - - case 0x29: - this.nextChar(); - throw new _util.FormatError(`Illegal character: ${ch}`); - } - - let str = String.fromCharCode(ch); - - if (ch < 0x20 || ch > 0x7f) { - const nextCh = this.peekChar(); - - if (nextCh >= 0x20 && nextCh <= 0x7f) { - this.nextChar(); - return _primitives.Cmd.get(str); - } - } - - const knownCommands = this.knownCommands; - let knownCommandFound = knownCommands && knownCommands[str] !== undefined; - - while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { - const possibleCommand = str + String.fromCharCode(ch); - - if (knownCommandFound && knownCommands[possibleCommand] === undefined) { - break; - } - - if (str.length === 128) { - throw new _util.FormatError(`Command token too long: ${str.length}`); - } - - str = possibleCommand; - knownCommandFound = knownCommands && knownCommands[str] !== undefined; - } - - if (str === "true") { - return true; - } - - if (str === "false") { - return false; - } - - if (str === "null") { - return null; - } - - if (str === "BI") { - this.beginInlineImagePos = this.stream.pos; - } - - return _primitives.Cmd.get(str); - } - - peekObj() { - const streamPos = this.stream.pos, - currentChar = this.currentChar, - beginInlineImagePos = this.beginInlineImagePos; - let nextObj; - - try { - nextObj = this.getObj(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)(`peekObj: ${ex}`); - } - - this.stream.pos = streamPos; - this.currentChar = currentChar; - this.beginInlineImagePos = beginInlineImagePos; - return nextObj; - } - - skipToNextLine() { - let ch = this.currentChar; - - while (ch >= 0) { - if (ch === 0x0d) { - ch = this.nextChar(); - - if (ch === 0x0a) { - this.nextChar(); - } - - break; - } else if (ch === 0x0a) { - this.nextChar(); - break; - } - - ch = this.nextChar(); - } - } - -} - -exports.Lexer = Lexer; - -class Linearization { - static create(stream) { - function getInt(linDict, name, allowZeroValue = false) { - const obj = linDict.get(name); - - if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { - return obj; - } - - throw new Error(`The "${name}" parameter in the linearization ` + "dictionary is invalid."); - } - - function getHints(linDict) { - const hints = linDict.get("H"); - let hintsLength; - - if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) { - for (let index = 0; index < hintsLength; index++) { - const hint = hints[index]; - - if (!(Number.isInteger(hint) && hint > 0)) { - throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`); - } - } - - return hints; - } - - throw new Error("Hint array in the linearization dictionary is invalid."); - } - - const parser = new Parser({ - lexer: new Lexer(stream), - xref: null - }); - const obj1 = parser.getObj(); - const obj2 = parser.getObj(); - const obj3 = parser.getObj(); - const linDict = parser.getObj(); - let obj, length; - - if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, "obj") && linDict instanceof _primitives.Dict && typeof (obj = linDict.get("Linearized")) === "number" && obj > 0)) { - return null; - } else if ((length = getInt(linDict, "L")) !== stream.length) { - throw new Error('The "L" parameter in the linearization dictionary ' + "does not equal the stream length."); - } - - return { - length, - hints: getHints(linDict), - objectNumberFirst: getInt(linDict, "O"), - endFirst: getInt(linDict, "E"), - numPages: getInt(linDict, "N"), - mainXRefEntriesOffset: getInt(linDict, "T"), - pageFirst: linDict.has("P") ? getInt(linDict, "P", true) : 0 - }; - } - -} - -exports.Linearization = Linearization; - -/***/ }), -/* 28 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Ascii85Stream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -var _core_utils = __w_pdfjs_require__(8); - -class Ascii85Stream extends _decode_stream.DecodeStream { - constructor(str, maybeLength) { - if (maybeLength) { - maybeLength *= 0.8; - } - - super(maybeLength); - this.str = str; - this.dict = str.dict; - this.input = new Uint8Array(5); - } - - readBlock() { - const TILDA_CHAR = 0x7e; - const Z_LOWER_CHAR = 0x7a; - const EOF = -1; - const str = this.str; - let c = str.getByte(); - - while ((0, _core_utils.isWhiteSpace)(c)) { - c = str.getByte(); - } - - if (c === EOF || c === TILDA_CHAR) { - this.eof = true; - return; - } - - const bufferLength = this.bufferLength; - let buffer, i; - - if (c === Z_LOWER_CHAR) { - buffer = this.ensureBuffer(bufferLength + 4); - - for (i = 0; i < 4; ++i) { - buffer[bufferLength + i] = 0; - } - - this.bufferLength += 4; - } else { - const input = this.input; - input[0] = c; - - for (i = 1; i < 5; ++i) { - c = str.getByte(); - - while ((0, _core_utils.isWhiteSpace)(c)) { - c = str.getByte(); - } - - input[i] = c; - - if (c === EOF || c === TILDA_CHAR) { - break; - } - } - - buffer = this.ensureBuffer(bufferLength + i - 1); - this.bufferLength += i - 1; - - if (i < 5) { - for (; i < 5; ++i) { - input[i] = 0x21 + 84; - } - - this.eof = true; - } - - let t = 0; - - for (i = 0; i < 5; ++i) { - t = t * 85 + (input[i] - 0x21); - } - - for (i = 3; i >= 0; --i) { - buffer[bufferLength + i] = t & 0xff; - t >>= 8; - } - } - } - -} - -exports.Ascii85Stream = Ascii85Stream; - -/***/ }), -/* 29 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.StreamsSequenceStream = exports.DecodeStream = void 0; - -var _base_stream = __w_pdfjs_require__(9); - -var _stream = __w_pdfjs_require__(10); - -const emptyBuffer = new Uint8Array(0); - -class DecodeStream extends _base_stream.BaseStream { - constructor(maybeMinBufferLength) { - super(); - this._rawMinBufferLength = maybeMinBufferLength || 0; - this.pos = 0; - this.bufferLength = 0; - this.eof = false; - this.buffer = emptyBuffer; - this.minBufferLength = 512; - - if (maybeMinBufferLength) { - while (this.minBufferLength < maybeMinBufferLength) { - this.minBufferLength *= 2; - } - } - } - - get isEmpty() { - while (!this.eof && this.bufferLength === 0) { - this.readBlock(); - } - - return this.bufferLength === 0; - } - - ensureBuffer(requested) { - const buffer = this.buffer; - - if (requested <= buffer.byteLength) { - return buffer; - } - - let size = this.minBufferLength; - - while (size < requested) { - size *= 2; - } - - const buffer2 = new Uint8Array(size); - buffer2.set(buffer); - return this.buffer = buffer2; - } - - getByte() { - const pos = this.pos; - - while (this.bufferLength <= pos) { - if (this.eof) { - return -1; - } - - this.readBlock(); - } - - return this.buffer[this.pos++]; - } - - getBytes(length) { - const pos = this.pos; - let end; - - if (length) { - this.ensureBuffer(pos + length); - end = pos + length; - - while (!this.eof && this.bufferLength < end) { - this.readBlock(); - } - - const bufEnd = this.bufferLength; - - if (end > bufEnd) { - end = bufEnd; - } - } else { - while (!this.eof) { - this.readBlock(); - } - - end = this.bufferLength; - } - - this.pos = end; - return this.buffer.subarray(pos, end); - } - - reset() { - this.pos = 0; - } - - makeSubStream(start, length, dict = null) { - if (length === undefined) { - while (!this.eof) { - this.readBlock(); - } - } else { - const end = start + length; - - while (this.bufferLength <= end && !this.eof) { - this.readBlock(); - } - } - - return new _stream.Stream(this.buffer, start, length, dict); - } - - getBaseStreams() { - return this.str ? this.str.getBaseStreams() : null; - } - -} - -exports.DecodeStream = DecodeStream; - -class StreamsSequenceStream extends DecodeStream { - constructor(streams, onError = null) { - let maybeLength = 0; - - for (const stream of streams) { - maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length; - } - - super(maybeLength); - this.streams = streams; - this._onError = onError; - } - - readBlock() { - const streams = this.streams; - - if (streams.length === 0) { - this.eof = true; - return; - } - - const stream = streams.shift(); - let chunk; - - try { - chunk = stream.getBytes(); - } catch (reason) { - if (this._onError) { - this._onError(reason, stream.dict && stream.dict.objId); - - return; - } - - throw reason; - } - - const bufferLength = this.bufferLength; - const newLength = bufferLength + chunk.length; - const buffer = this.ensureBuffer(newLength); - buffer.set(chunk, bufferLength); - this.bufferLength = newLength; - } - - getBaseStreams() { - const baseStreamsBuf = []; - - for (const stream of this.streams) { - const baseStreams = stream.getBaseStreams(); - - if (baseStreams) { - baseStreamsBuf.push(...baseStreams); - } - } - - return baseStreamsBuf.length > 0 ? baseStreamsBuf : null; - } - -} - -exports.StreamsSequenceStream = StreamsSequenceStream; - -/***/ }), -/* 30 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.AsciiHexStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -class AsciiHexStream extends _decode_stream.DecodeStream { - constructor(str, maybeLength) { - if (maybeLength) { - maybeLength *= 0.5; - } - - super(maybeLength); - this.str = str; - this.dict = str.dict; - this.firstDigit = -1; - } - - readBlock() { - const UPSTREAM_BLOCK_SIZE = 8000; - const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE); - - if (!bytes.length) { - this.eof = true; - return; - } - - const maxDecodeLength = bytes.length + 1 >> 1; - const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); - let bufferLength = this.bufferLength; - let firstDigit = this.firstDigit; - - for (const ch of bytes) { - let digit; - - if (ch >= 0x30 && ch <= 0x39) { - digit = ch & 0x0f; - } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { - digit = (ch & 0x0f) + 9; - } else if (ch === 0x3e) { - this.eof = true; - break; - } else { - continue; - } - - if (firstDigit < 0) { - firstDigit = digit; - } else { - buffer[bufferLength++] = firstDigit << 4 | digit; - firstDigit = -1; - } - } - - if (firstDigit >= 0 && this.eof) { - buffer[bufferLength++] = firstDigit << 4; - firstDigit = -1; - } - - this.firstDigit = firstDigit; - this.bufferLength = bufferLength; - } - -} - -exports.AsciiHexStream = AsciiHexStream; - -/***/ }), -/* 31 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.CCITTFaxStream = void 0; - -var _ccitt = __w_pdfjs_require__(32); - -var _decode_stream = __w_pdfjs_require__(29); - -var _primitives = __w_pdfjs_require__(5); - -class CCITTFaxStream extends _decode_stream.DecodeStream { - constructor(str, maybeLength, params) { - super(maybeLength); - this.str = str; - this.dict = str.dict; - - if (!(params instanceof _primitives.Dict)) { - params = _primitives.Dict.empty; - } - - const source = { - next() { - return str.getByte(); - } - - }; - this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, { - K: params.get("K"), - EndOfLine: params.get("EndOfLine"), - EncodedByteAlign: params.get("EncodedByteAlign"), - Columns: params.get("Columns"), - Rows: params.get("Rows"), - EndOfBlock: params.get("EndOfBlock"), - BlackIs1: params.get("BlackIs1") - }); - } - - readBlock() { - while (!this.eof) { - const c = this.ccittFaxDecoder.readNextChar(); - - if (c === -1) { - this.eof = true; - return; - } - - this.ensureBuffer(this.bufferLength + 1); - this.buffer[this.bufferLength++] = c; - } - } - -} - -exports.CCITTFaxStream = CCITTFaxStream; - -/***/ }), -/* 32 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.CCITTFaxDecoder = void 0; - -var _util = __w_pdfjs_require__(2); - -const ccittEOL = -2; -const ccittEOF = -1; -const twoDimPass = 0; -const twoDimHoriz = 1; -const twoDimVert0 = 2; -const twoDimVertR1 = 3; -const twoDimVertL1 = 4; -const twoDimVertR2 = 5; -const twoDimVertL2 = 6; -const twoDimVertR3 = 7; -const twoDimVertL3 = 8; -const twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]]; -const whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]]; -const whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]]; -const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]]; -const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]]; -const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]; - -class CCITTFaxDecoder { - constructor(source, options = {}) { - if (!source || typeof source.next !== "function") { - throw new Error('CCITTFaxDecoder - invalid "source" parameter.'); - } - - this.source = source; - this.eof = false; - this.encoding = options.K || 0; - this.eoline = options.EndOfLine || false; - this.byteAlign = options.EncodedByteAlign || false; - this.columns = options.Columns || 1728; - this.rows = options.Rows || 0; - let eoblock = options.EndOfBlock; - - if (eoblock === null || eoblock === undefined) { - eoblock = true; - } - - this.eoblock = eoblock; - this.black = options.BlackIs1 || false; - this.codingLine = new Uint32Array(this.columns + 1); - this.refLine = new Uint32Array(this.columns + 2); - this.codingLine[0] = this.columns; - this.codingPos = 0; - this.row = 0; - this.nextLine2D = this.encoding < 0; - this.inputBits = 0; - this.inputBuf = 0; - this.outputBits = 0; - this.rowsDone = false; - let code1; - - while ((code1 = this._lookBits(12)) === 0) { - this._eatBits(1); - } - - if (code1 === 1) { - this._eatBits(12); - } - - if (this.encoding > 0) { - this.nextLine2D = !this._lookBits(1); - - this._eatBits(1); - } - } - - readNextChar() { - if (this.eof) { - return -1; - } - - const refLine = this.refLine; - const codingLine = this.codingLine; - const columns = this.columns; - let refPos, blackPixels, bits, i; - - if (this.outputBits === 0) { - if (this.rowsDone) { - this.eof = true; - } - - if (this.eof) { - return -1; - } - - this.err = false; - let code1, code2, code3; - - if (this.nextLine2D) { - for (i = 0; codingLine[i] < columns; ++i) { - refLine[i] = codingLine[i]; - } - - refLine[i++] = columns; - refLine[i] = columns; - codingLine[0] = 0; - this.codingPos = 0; - refPos = 0; - blackPixels = 0; - - while (codingLine[this.codingPos] < columns) { - code1 = this._getTwoDimCode(); - - switch (code1) { - case twoDimPass: - this._addPixels(refLine[refPos + 1], blackPixels); - - if (refLine[refPos + 1] < columns) { - refPos += 2; - } - - break; - - case twoDimHoriz: - code1 = code2 = 0; - - if (blackPixels) { - do { - code1 += code3 = this._getBlackCode(); - } while (code3 >= 64); - - do { - code2 += code3 = this._getWhiteCode(); - } while (code3 >= 64); - } else { - do { - code1 += code3 = this._getWhiteCode(); - } while (code3 >= 64); - - do { - code2 += code3 = this._getBlackCode(); - } while (code3 >= 64); - } - - this._addPixels(codingLine[this.codingPos] + code1, blackPixels); - - if (codingLine[this.codingPos] < columns) { - this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1); - } - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - - break; - - case twoDimVertR3: - this._addPixels(refLine[refPos] + 3, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - ++refPos; - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVertR2: - this._addPixels(refLine[refPos] + 2, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - ++refPos; - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVertR1: - this._addPixels(refLine[refPos] + 1, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - ++refPos; - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVert0: - this._addPixels(refLine[refPos], blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - ++refPos; - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVertL3: - this._addPixelsNeg(refLine[refPos] - 3, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVertL2: - this._addPixelsNeg(refLine[refPos] - 2, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case twoDimVertL1: - this._addPixelsNeg(refLine[refPos] - 1, blackPixels); - - blackPixels ^= 1; - - if (codingLine[this.codingPos] < columns) { - if (refPos > 0) { - --refPos; - } else { - ++refPos; - } - - while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { - refPos += 2; - } - } - - break; - - case ccittEOF: - this._addPixels(columns, 0); - - this.eof = true; - break; - - default: - (0, _util.info)("bad 2d code"); - - this._addPixels(columns, 0); - - this.err = true; - } - } - } else { - codingLine[0] = 0; - this.codingPos = 0; - blackPixels = 0; - - while (codingLine[this.codingPos] < columns) { - code1 = 0; - - if (blackPixels) { - do { - code1 += code3 = this._getBlackCode(); - } while (code3 >= 64); - } else { - do { - code1 += code3 = this._getWhiteCode(); - } while (code3 >= 64); - } - - this._addPixels(codingLine[this.codingPos] + code1, blackPixels); - - blackPixels ^= 1; - } - } - - let gotEOL = false; - - if (this.byteAlign) { - this.inputBits &= ~7; - } - - if (!this.eoblock && this.row === this.rows - 1) { - this.rowsDone = true; - } else { - code1 = this._lookBits(12); - - if (this.eoline) { - while (code1 !== ccittEOF && code1 !== 1) { - this._eatBits(1); - - code1 = this._lookBits(12); - } - } else { - while (code1 === 0) { - this._eatBits(1); - - code1 = this._lookBits(12); - } - } - - if (code1 === 1) { - this._eatBits(12); - - gotEOL = true; - } else if (code1 === ccittEOF) { - this.eof = true; - } - } - - if (!this.eof && this.encoding > 0 && !this.rowsDone) { - this.nextLine2D = !this._lookBits(1); - - this._eatBits(1); - } - - if (this.eoblock && gotEOL && this.byteAlign) { - code1 = this._lookBits(12); - - if (code1 === 1) { - this._eatBits(12); - - if (this.encoding > 0) { - this._lookBits(1); - - this._eatBits(1); - } - - if (this.encoding >= 0) { - for (i = 0; i < 4; ++i) { - code1 = this._lookBits(12); - - if (code1 !== 1) { - (0, _util.info)("bad rtc code: " + code1); - } - - this._eatBits(12); - - if (this.encoding > 0) { - this._lookBits(1); - - this._eatBits(1); - } - } - } - - this.eof = true; - } - } else if (this.err && this.eoline) { - while (true) { - code1 = this._lookBits(13); - - if (code1 === ccittEOF) { - this.eof = true; - return -1; - } - - if (code1 >> 1 === 1) { - break; - } - - this._eatBits(1); - } - - this._eatBits(12); - - if (this.encoding > 0) { - this._eatBits(1); - - this.nextLine2D = !(code1 & 1); - } - } - - if (codingLine[0] > 0) { - this.outputBits = codingLine[this.codingPos = 0]; - } else { - this.outputBits = codingLine[this.codingPos = 1]; - } - - this.row++; - } - - let c; - - if (this.outputBits >= 8) { - c = this.codingPos & 1 ? 0 : 0xff; - this.outputBits -= 8; - - if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; - } - } else { - bits = 8; - c = 0; - - do { - if (typeof this.outputBits !== "number") { - throw new _util.FormatError('Invalid /CCITTFaxDecode data, "outputBits" must be a number.'); - } - - if (this.outputBits > bits) { - c <<= bits; - - if (!(this.codingPos & 1)) { - c |= 0xff >> 8 - bits; - } - - this.outputBits -= bits; - bits = 0; - } else { - c <<= this.outputBits; - - if (!(this.codingPos & 1)) { - c |= 0xff >> 8 - this.outputBits; - } - - bits -= this.outputBits; - this.outputBits = 0; - - if (codingLine[this.codingPos] < columns) { - this.codingPos++; - this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; - } else if (bits > 0) { - c <<= bits; - bits = 0; - } - } - } while (bits); - } - - if (this.black) { - c ^= 0xff; - } - - return c; - } - - _addPixels(a1, blackPixels) { - const codingLine = this.codingLine; - let codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - (0, _util.info)("row is wrong length"); - this.err = true; - a1 = this.columns; - } - - if (codingPos & 1 ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } - - this.codingPos = codingPos; - } - - _addPixelsNeg(a1, blackPixels) { - const codingLine = this.codingLine; - let codingPos = this.codingPos; - - if (a1 > codingLine[codingPos]) { - if (a1 > this.columns) { - (0, _util.info)("row is wrong length"); - this.err = true; - a1 = this.columns; - } - - if (codingPos & 1 ^ blackPixels) { - ++codingPos; - } - - codingLine[codingPos] = a1; - } else if (a1 < codingLine[codingPos]) { - if (a1 < 0) { - (0, _util.info)("invalid code"); - this.err = true; - a1 = 0; - } - - while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { - --codingPos; - } - - codingLine[codingPos] = a1; - } - - this.codingPos = codingPos; - } - - _findTableCode(start, end, table, limit) { - const limitValue = limit || 0; - - for (let i = start; i <= end; ++i) { - let code = this._lookBits(i); - - if (code === ccittEOF) { - return [true, 1, false]; - } - - if (i < end) { - code <<= end - i; - } - - if (!limitValue || code >= limitValue) { - const p = table[code - limitValue]; - - if (p[0] === i) { - this._eatBits(i); - - return [true, p[1], true]; - } - } - } - - return [false, 0, false]; - } - - _getTwoDimCode() { - let code = 0; - let p; - - if (this.eoblock) { - code = this._lookBits(7); - p = twoDimTable[code]; - - if (p && p[0] > 0) { - this._eatBits(p[0]); - - return p[1]; - } - } else { - const result = this._findTableCode(1, 7, twoDimTable); - - if (result[0] && result[2]) { - return result[1]; - } - } - - (0, _util.info)("Bad two dim code"); - return ccittEOF; - } - - _getWhiteCode() { - let code = 0; - let p; - - if (this.eoblock) { - code = this._lookBits(12); - - if (code === ccittEOF) { - return 1; - } - - if (code >> 5 === 0) { - p = whiteTable1[code]; - } else { - p = whiteTable2[code >> 3]; - } - - if (p[0] > 0) { - this._eatBits(p[0]); - - return p[1]; - } - } else { - let result = this._findTableCode(1, 9, whiteTable2); - - if (result[0]) { - return result[1]; - } - - result = this._findTableCode(11, 12, whiteTable1); - - if (result[0]) { - return result[1]; - } - } - - (0, _util.info)("bad white code"); - - this._eatBits(1); - - return 1; - } - - _getBlackCode() { - let code, p; - - if (this.eoblock) { - code = this._lookBits(13); - - if (code === ccittEOF) { - return 1; - } - - if (code >> 7 === 0) { - p = blackTable1[code]; - } else if (code >> 9 === 0 && code >> 7 !== 0) { - p = blackTable2[(code >> 1) - 64]; - } else { - p = blackTable3[code >> 7]; - } - - if (p[0] > 0) { - this._eatBits(p[0]); - - return p[1]; - } - } else { - let result = this._findTableCode(2, 6, blackTable3); - - if (result[0]) { - return result[1]; - } - - result = this._findTableCode(7, 12, blackTable2, 64); - - if (result[0]) { - return result[1]; - } - - result = this._findTableCode(10, 13, blackTable1); - - if (result[0]) { - return result[1]; - } - } - - (0, _util.info)("bad black code"); - - this._eatBits(1); - - return 1; - } - - _lookBits(n) { - let c; - - while (this.inputBits < n) { - if ((c = this.source.next()) === -1) { - if (this.inputBits === 0) { - return ccittEOF; - } - - return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n; - } - - this.inputBuf = this.inputBuf << 8 | c; - this.inputBits += 8; - } - - return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n; - } - - _eatBits(n) { - if ((this.inputBits -= n) < 0) { - this.inputBits = 0; - } - } - -} - -exports.CCITTFaxDecoder = CCITTFaxDecoder; - -/***/ }), -/* 33 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.FlateStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -var _util = __w_pdfjs_require__(2); - -const codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); -const lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]); -const distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]); -const fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9]; -const fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5]; - -class FlateStream extends _decode_stream.DecodeStream { - constructor(str, maybeLength) { - super(maybeLength); - this.str = str; - this.dict = str.dict; - const cmf = str.getByte(); - const flg = str.getByte(); - - if (cmf === -1 || flg === -1) { - throw new _util.FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`); - } - - if ((cmf & 0x0f) !== 0x08) { - throw new _util.FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`); - } - - if (((cmf << 8) + flg) % 31 !== 0) { - throw new _util.FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`); - } - - if (flg & 0x20) { - throw new _util.FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`); - } - - this.codeSize = 0; - this.codeBuf = 0; - } - - getBits(bits) { - const str = this.str; - let codeSize = this.codeSize; - let codeBuf = this.codeBuf; - let b; - - while (codeSize < bits) { - if ((b = str.getByte()) === -1) { - throw new _util.FormatError("Bad encoding in flate stream"); - } - - codeBuf |= b << codeSize; - codeSize += 8; - } - - b = codeBuf & (1 << bits) - 1; - this.codeBuf = codeBuf >> bits; - this.codeSize = codeSize -= bits; - return b; - } - - getCode(table) { - const str = this.str; - const codes = table[0]; - const maxLen = table[1]; - let codeSize = this.codeSize; - let codeBuf = this.codeBuf; - let b; - - while (codeSize < maxLen) { - if ((b = str.getByte()) === -1) { - break; - } - - codeBuf |= b << codeSize; - codeSize += 8; - } - - const code = codes[codeBuf & (1 << maxLen) - 1]; - const codeLen = code >> 16; - const codeVal = code & 0xffff; - - if (codeLen < 1 || codeSize < codeLen) { - throw new _util.FormatError("Bad encoding in flate stream"); - } - - this.codeBuf = codeBuf >> codeLen; - this.codeSize = codeSize - codeLen; - return codeVal; - } - - generateHuffmanTable(lengths) { - const n = lengths.length; - let maxLen = 0; - let i; - - for (i = 0; i < n; ++i) { - if (lengths[i] > maxLen) { - maxLen = lengths[i]; - } - } - - const size = 1 << maxLen; - const codes = new Int32Array(size); - - for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) { - for (let val = 0; val < n; ++val) { - if (lengths[val] === len) { - let code2 = 0; - let t = code; - - for (i = 0; i < len; ++i) { - code2 = code2 << 1 | t & 1; - t >>= 1; - } - - for (i = code2; i < size; i += skip) { - codes[i] = len << 16 | val; - } - - ++code; - } - } - } - - return [codes, maxLen]; - } - - readBlock() { - let buffer, len; - const str = this.str; - let hdr = this.getBits(3); - - if (hdr & 1) { - this.eof = true; - } - - hdr >>= 1; - - if (hdr === 0) { - let b; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError("Bad block header in flate stream"); - } - - let blockLen = b; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError("Bad block header in flate stream"); - } - - blockLen |= b << 8; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError("Bad block header in flate stream"); - } - - let check = b; - - if ((b = str.getByte()) === -1) { - throw new _util.FormatError("Bad block header in flate stream"); - } - - check |= b << 8; - - if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) { - throw new _util.FormatError("Bad uncompressed block length in flate stream"); - } - - this.codeBuf = 0; - this.codeSize = 0; - const bufferLength = this.bufferLength, - end = bufferLength + blockLen; - buffer = this.ensureBuffer(end); - this.bufferLength = end; - - if (blockLen === 0) { - if (str.peekByte() === -1) { - this.eof = true; - } - } else { - const block = str.getBytes(blockLen); - buffer.set(block, bufferLength); - - if (block.length < blockLen) { - this.eof = true; - } - } - - return; - } - - let litCodeTable; - let distCodeTable; - - if (hdr === 1) { - litCodeTable = fixedLitCodeTab; - distCodeTable = fixedDistCodeTab; - } else if (hdr === 2) { - const numLitCodes = this.getBits(5) + 257; - const numDistCodes = this.getBits(5) + 1; - const numCodeLenCodes = this.getBits(4) + 4; - const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); - let i; - - for (i = 0; i < numCodeLenCodes; ++i) { - codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); - } - - const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); - len = 0; - i = 0; - const codes = numLitCodes + numDistCodes; - const codeLengths = new Uint8Array(codes); - let bitsLength, bitsOffset, what; - - while (i < codes) { - const code = this.getCode(codeLenCodeTab); - - if (code === 16) { - bitsLength = 2; - bitsOffset = 3; - what = len; - } else if (code === 17) { - bitsLength = 3; - bitsOffset = 3; - what = len = 0; - } else if (code === 18) { - bitsLength = 7; - bitsOffset = 11; - what = len = 0; - } else { - codeLengths[i++] = len = code; - continue; - } - - let repeatLength = this.getBits(bitsLength) + bitsOffset; - - while (repeatLength-- > 0) { - codeLengths[i++] = what; - } - } - - litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); - distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); - } else { - throw new _util.FormatError("Unknown block type in flate stream"); - } - - buffer = this.buffer; - let limit = buffer ? buffer.length : 0; - let pos = this.bufferLength; - - while (true) { - let code1 = this.getCode(litCodeTable); - - if (code1 < 256) { - if (pos + 1 >= limit) { - buffer = this.ensureBuffer(pos + 1); - limit = buffer.length; - } - - buffer[pos++] = code1; - continue; - } - - if (code1 === 256) { - this.bufferLength = pos; - return; - } - - code1 -= 257; - code1 = lengthDecode[code1]; - let code2 = code1 >> 16; - - if (code2 > 0) { - code2 = this.getBits(code2); - } - - len = (code1 & 0xffff) + code2; - code1 = this.getCode(distCodeTable); - code1 = distDecode[code1]; - code2 = code1 >> 16; - - if (code2 > 0) { - code2 = this.getBits(code2); - } - - const dist = (code1 & 0xffff) + code2; - - if (pos + len >= limit) { - buffer = this.ensureBuffer(pos + len); - limit = buffer.length; - } - - for (let k = 0; k < len; ++k, ++pos) { - buffer[pos] = buffer[pos - dist]; - } - } - } - -} - -exports.FlateStream = FlateStream; - -/***/ }), -/* 34 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Jbig2Stream = void 0; - -var _base_stream = __w_pdfjs_require__(9); - -var _decode_stream = __w_pdfjs_require__(29); - -var _primitives = __w_pdfjs_require__(5); - -var _jbig = __w_pdfjs_require__(35); - -var _util = __w_pdfjs_require__(2); - -class Jbig2Stream extends _decode_stream.DecodeStream { - constructor(stream, maybeLength, params) { - super(maybeLength); - this.stream = stream; - this.dict = stream.dict; - this.maybeLength = maybeLength; - this.params = params; - } - - get bytes() { - return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); - } - - ensureBuffer(requested) {} - - readBlock() { - if (this.eof) { - return; - } - - const jbig2Image = new _jbig.Jbig2Image(); - const chunks = []; - - if (this.params instanceof _primitives.Dict) { - const globalsStream = this.params.get("JBIG2Globals"); - - if (globalsStream instanceof _base_stream.BaseStream) { - const globals = globalsStream.getBytes(); - chunks.push({ - data: globals, - start: 0, - end: globals.length - }); - } - } - - chunks.push({ - data: this.bytes, - start: 0, - end: this.bytes.length - }); - const data = jbig2Image.parseChunks(chunks); - const dataLength = data.length; - - for (let i = 0; i < dataLength; i++) { - data[i] ^= 0xff; - } - - this.buffer = data; - this.bufferLength = dataLength; - this.eof = true; - } - -} - -exports.Jbig2Stream = Jbig2Stream; - -/***/ }), -/* 35 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Jbig2Image = void 0; - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -var _arithmetic_decoder = __w_pdfjs_require__(36); - -var _ccitt = __w_pdfjs_require__(32); - -class Jbig2Error extends _util.BaseException { - constructor(msg) { - super(`JBIG2 error: ${msg}`, "Jbig2Error"); - } - -} - -class ContextCache { - getContexts(id) { - if (id in this) { - return this[id]; - } - - return this[id] = new Int8Array(1 << 16); - } - -} - -class DecodingContext { - constructor(data, start, end) { - this.data = data; - this.start = start; - this.end = end; - } - - get decoder() { - const decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end); - return (0, _util.shadow)(this, "decoder", decoder); - } - - get contextCache() { - const cache = new ContextCache(); - return (0, _util.shadow)(this, "contextCache", cache); - } - -} - -function decodeInteger(contextCache, procedure, decoder) { - const contexts = contextCache.getContexts(procedure); - let prev = 1; - - function readBits(length) { - let v = 0; - - for (let i = 0; i < length; i++) { - const bit = decoder.readBit(contexts, prev); - prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256; - v = v << 1 | bit; - } - - return v >>> 0; - } - - const sign = readBits(1); - const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2); - - if (sign === 0) { - return value; - } else if (value > 0) { - return -value; - } - - return null; -} - -function decodeIAID(contextCache, decoder, codeLength) { - const contexts = contextCache.getContexts("IAID"); - let prev = 1; - - for (let i = 0; i < codeLength; i++) { - const bit = decoder.readBit(contexts, prev); - prev = prev << 1 | bit; - } - - if (codeLength < 31) { - return prev & (1 << codeLength) - 1; - } - - return prev & 0x7fffffff; -} - -const SegmentTypes = ["SymbolDictionary", null, null, null, "IntermediateTextRegion", null, "ImmediateTextRegion", "ImmediateLosslessTextRegion", null, null, null, null, null, null, null, null, "PatternDictionary", null, null, null, "IntermediateHalftoneRegion", null, "ImmediateHalftoneRegion", "ImmediateLosslessHalftoneRegion", null, null, null, null, null, null, null, null, null, null, null, null, "IntermediateGenericRegion", null, "ImmediateGenericRegion", "ImmediateLosslessGenericRegion", "IntermediateGenericRefinementRegion", null, "ImmediateGenericRefinementRegion", "ImmediateLosslessGenericRefinementRegion", null, null, null, null, "PageInformation", "EndOfPage", "EndOfStripe", "EndOfFile", "Profiles", "Tables", null, null, null, null, null, null, null, null, "Extension"]; -const CodingTemplates = [[{ - x: -1, - y: -2 -}, { - x: 0, - y: -2 -}, { - x: 1, - y: -2 -}, { - x: -2, - y: -1 -}, { - x: -1, - y: -1 -}, { - x: 0, - y: -1 -}, { - x: 1, - y: -1 -}, { - x: 2, - y: -1 -}, { - x: -4, - y: 0 -}, { - x: -3, - y: 0 -}, { - x: -2, - y: 0 -}, { - x: -1, - y: 0 -}], [{ - x: -1, - y: -2 -}, { - x: 0, - y: -2 -}, { - x: 1, - y: -2 -}, { - x: 2, - y: -2 -}, { - x: -2, - y: -1 -}, { - x: -1, - y: -1 -}, { - x: 0, - y: -1 -}, { - x: 1, - y: -1 -}, { - x: 2, - y: -1 -}, { - x: -3, - y: 0 -}, { - x: -2, - y: 0 -}, { - x: -1, - y: 0 -}], [{ - x: -1, - y: -2 -}, { - x: 0, - y: -2 -}, { - x: 1, - y: -2 -}, { - x: -2, - y: -1 -}, { - x: -1, - y: -1 -}, { - x: 0, - y: -1 -}, { - x: 1, - y: -1 -}, { - x: -2, - y: 0 -}, { - x: -1, - y: 0 -}], [{ - x: -3, - y: -1 -}, { - x: -2, - y: -1 -}, { - x: -1, - y: -1 -}, { - x: 0, - y: -1 -}, { - x: 1, - y: -1 -}, { - x: -4, - y: 0 -}, { - x: -3, - y: 0 -}, { - x: -2, - y: 0 -}, { - x: -1, - y: 0 -}]]; -const RefinementTemplates = [{ - coding: [{ - x: 0, - y: -1 - }, { - x: 1, - y: -1 - }, { - x: -1, - y: 0 - }], - reference: [{ - x: 0, - y: -1 - }, { - x: 1, - y: -1 - }, { - x: -1, - y: 0 - }, { - x: 0, - y: 0 - }, { - x: 1, - y: 0 - }, { - x: -1, - y: 1 - }, { - x: 0, - y: 1 - }, { - x: 1, - y: 1 - }] -}, { - coding: [{ - x: -1, - y: -1 - }, { - x: 0, - y: -1 - }, { - x: 1, - y: -1 - }, { - x: -1, - y: 0 - }], - reference: [{ - x: 0, - y: -1 - }, { - x: -1, - y: 0 - }, { - x: 0, - y: 0 - }, { - x: 1, - y: 0 - }, { - x: 0, - y: 1 - }, { - x: 1, - y: 1 - }] -}]; -const ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195]; -const RefinementReusedContexts = [0x0020, 0x0008]; - -function decodeBitmapTemplate0(width, height, decodingContext) { - const decoder = decodingContext.decoder; - const contexts = decodingContext.contextCache.getContexts("GB"); - const bitmap = []; - let contextLabel, i, j, pixel, row, row1, row2; - const OLD_PIXEL_MASK = 0x7bf7; - - for (i = 0; i < height; i++) { - row = bitmap[i] = new Uint8Array(width); - row1 = i < 1 ? row : bitmap[i - 1]; - row2 = i < 2 ? row : bitmap[i - 2]; - contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4; - - for (j = 0; j < width; j++) { - row[j] = pixel = decoder.readBit(contexts, contextLabel); - contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; - } - } - - return bitmap; -} - -function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) { - if (mmr) { - const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); - return decodeMMRBitmap(input, width, height, false); - } - - if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { - return decodeBitmapTemplate0(width, height, decodingContext); - } - - const useskip = !!skip; - const template = CodingTemplates[templateIndex].concat(at); - template.sort(function (a, b) { - return a.y - b.y || a.x - b.x; - }); - const templateLength = template.length; - const templateX = new Int8Array(templateLength); - const templateY = new Int8Array(templateLength); - const changingTemplateEntries = []; - let reuseMask = 0, - minX = 0, - maxX = 0, - minY = 0; - let c, k; - - for (k = 0; k < templateLength; k++) { - templateX[k] = template[k].x; - templateY[k] = template[k].y; - minX = Math.min(minX, template[k].x); - maxX = Math.max(maxX, template[k].x); - minY = Math.min(minY, template[k].y); - - if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) { - reuseMask |= 1 << templateLength - 1 - k; - } else { - changingTemplateEntries.push(k); - } - } - - const changingEntriesLength = changingTemplateEntries.length; - const changingTemplateX = new Int8Array(changingEntriesLength); - const changingTemplateY = new Int8Array(changingEntriesLength); - const changingTemplateBit = new Uint16Array(changingEntriesLength); - - for (c = 0; c < changingEntriesLength; c++) { - k = changingTemplateEntries[c]; - changingTemplateX[c] = template[k].x; - changingTemplateY[c] = template[k].y; - changingTemplateBit[c] = 1 << templateLength - 1 - k; - } - - const sbb_left = -minX; - const sbb_top = -minY; - const sbb_right = width - maxX; - const pseudoPixelContext = ReusedContexts[templateIndex]; - let row = new Uint8Array(width); - const bitmap = []; - const decoder = decodingContext.decoder; - const contexts = decodingContext.contextCache.getContexts("GB"); - let ltp = 0, - j, - i0, - j0, - contextLabel = 0, - bit, - shift; - - for (let i = 0; i < height; i++) { - if (prediction) { - const sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - - if (ltp) { - bitmap.push(row); - continue; - } - } - - row = new Uint8Array(row); - bitmap.push(row); - - for (j = 0; j < width; j++) { - if (useskip && skip[i][j]) { - row[j] = 0; - continue; - } - - if (j >= sbb_left && j < sbb_right && i >= sbb_top) { - contextLabel = contextLabel << 1 & reuseMask; - - for (k = 0; k < changingEntriesLength; k++) { - i0 = i + changingTemplateY[k]; - j0 = j + changingTemplateX[k]; - bit = bitmap[i0][j0]; - - if (bit) { - bit = changingTemplateBit[k]; - contextLabel |= bit; - } - } - } else { - contextLabel = 0; - shift = templateLength - 1; - - for (k = 0; k < templateLength; k++, shift--) { - j0 = j + templateX[k]; - - if (j0 >= 0 && j0 < width) { - i0 = i + templateY[k]; - - if (i0 >= 0) { - bit = bitmap[i0][j0]; - - if (bit) { - contextLabel |= bit << shift; - } - } - } - } - } - - const pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - - return bitmap; -} - -function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) { - let codingTemplate = RefinementTemplates[templateIndex].coding; - - if (templateIndex === 0) { - codingTemplate = codingTemplate.concat([at[0]]); - } - - const codingTemplateLength = codingTemplate.length; - const codingTemplateX = new Int32Array(codingTemplateLength); - const codingTemplateY = new Int32Array(codingTemplateLength); - let k; - - for (k = 0; k < codingTemplateLength; k++) { - codingTemplateX[k] = codingTemplate[k].x; - codingTemplateY[k] = codingTemplate[k].y; - } - - let referenceTemplate = RefinementTemplates[templateIndex].reference; - - if (templateIndex === 0) { - referenceTemplate = referenceTemplate.concat([at[1]]); - } - - const referenceTemplateLength = referenceTemplate.length; - const referenceTemplateX = new Int32Array(referenceTemplateLength); - const referenceTemplateY = new Int32Array(referenceTemplateLength); - - for (k = 0; k < referenceTemplateLength; k++) { - referenceTemplateX[k] = referenceTemplate[k].x; - referenceTemplateY[k] = referenceTemplate[k].y; - } - - const referenceWidth = referenceBitmap[0].length; - const referenceHeight = referenceBitmap.length; - const pseudoPixelContext = RefinementReusedContexts[templateIndex]; - const bitmap = []; - const decoder = decodingContext.decoder; - const contexts = decodingContext.contextCache.getContexts("GR"); - let ltp = 0; - - for (let i = 0; i < height; i++) { - if (prediction) { - const sltp = decoder.readBit(contexts, pseudoPixelContext); - ltp ^= sltp; - - if (ltp) { - throw new Jbig2Error("prediction is not supported"); - } - } - - const row = new Uint8Array(width); - bitmap.push(row); - - for (let j = 0; j < width; j++) { - let i0, j0; - let contextLabel = 0; - - for (k = 0; k < codingTemplateLength; k++) { - i0 = i + codingTemplateY[k]; - j0 = j + codingTemplateX[k]; - - if (i0 < 0 || j0 < 0 || j0 >= width) { - contextLabel <<= 1; - } else { - contextLabel = contextLabel << 1 | bitmap[i0][j0]; - } - } - - for (k = 0; k < referenceTemplateLength; k++) { - i0 = i + referenceTemplateY[k] - offsetY; - j0 = j + referenceTemplateX[k] - offsetX; - - if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) { - contextLabel <<= 1; - } else { - contextLabel = contextLabel << 1 | referenceBitmap[i0][j0]; - } - } - - const pixel = decoder.readBit(contexts, contextLabel); - row[j] = pixel; - } - } - - return bitmap; -} - -function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) { - if (huffman && refinement) { - throw new Jbig2Error("symbol refinement with Huffman is not supported"); - } - - const newSymbols = []; - let currentHeight = 0; - let symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols); - const decoder = decodingContext.decoder; - const contextCache = decodingContext.contextCache; - let tableB1, symbolWidths; - - if (huffman) { - tableB1 = getStandardTable(1); - symbolWidths = []; - symbolCodeLength = Math.max(symbolCodeLength, 1); - } - - while (newSymbols.length < numberOfNewSymbols) { - const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, "IADH", decoder); - currentHeight += deltaHeight; - let currentWidth = 0, - totalWidth = 0; - const firstSymbol = huffman ? symbolWidths.length : 0; - - while (true) { - const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, "IADW", decoder); - - if (deltaWidth === null) { - break; - } - - currentWidth += deltaWidth; - totalWidth += currentWidth; - let bitmap; - - if (refinement) { - const numberOfInstances = decodeInteger(contextCache, "IAAI", decoder); - - if (numberOfInstances > 1) { - bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput); - } else { - const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); - const rdx = decodeInteger(contextCache, "IARDX", decoder); - const rdy = decodeInteger(contextCache, "IARDY", decoder); - const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length]; - bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext); - } - - newSymbols.push(bitmap); - } else if (huffman) { - symbolWidths.push(currentWidth); - } else { - bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext); - newSymbols.push(bitmap); - } - } - - if (huffman && !refinement) { - const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput); - huffmanInput.byteAlign(); - let collectiveBitmap; - - if (bitmapSize === 0) { - collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight); - } else { - const originalEnd = huffmanInput.end; - const bitmapEnd = huffmanInput.position + bitmapSize; - huffmanInput.end = bitmapEnd; - collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false); - huffmanInput.end = originalEnd; - huffmanInput.position = bitmapEnd; - } - - const numberOfSymbolsDecoded = symbolWidths.length; - - if (firstSymbol === numberOfSymbolsDecoded - 1) { - newSymbols.push(collectiveBitmap); - } else { - let i, - y, - xMin = 0, - xMax, - bitmapWidth, - symbolBitmap; - - for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) { - bitmapWidth = symbolWidths[i]; - xMax = xMin + bitmapWidth; - symbolBitmap = []; - - for (y = 0; y < currentHeight; y++) { - symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); - } - - newSymbols.push(symbolBitmap); - xMin = xMax; - } - } - } - } - - const exportedSymbols = [], - flags = []; - let currentFlag = false, - i, - ii; - const totalSymbolsLength = symbols.length + numberOfNewSymbols; - - while (flags.length < totalSymbolsLength) { - let runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, "IAEX", decoder); - - while (runLength--) { - flags.push(currentFlag); - } - - currentFlag = !currentFlag; - } - - for (i = 0, ii = symbols.length; i < ii; i++) { - if (flags[i]) { - exportedSymbols.push(symbols[i]); - } - } - - for (let j = 0; j < numberOfNewSymbols; i++, j++) { - if (flags[i]) { - exportedSymbols.push(newSymbols[j]); - } - } - - return exportedSymbols; -} - -function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) { - if (huffman && refinement) { - throw new Jbig2Error("refinement with Huffman is not supported"); - } - - const bitmap = []; - let i, row; - - for (i = 0; i < height; i++) { - row = new Uint8Array(width); - - if (defaultPixelValue) { - for (let j = 0; j < width; j++) { - row[j] = defaultPixelValue; - } - } - - bitmap.push(row); - } - - const decoder = decodingContext.decoder; - const contextCache = decodingContext.contextCache; - let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, "IADT", decoder); - let firstS = 0; - i = 0; - - while (i < numberOfSymbolInstances) { - const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, "IADT", decoder); - stripT += deltaT; - const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, "IAFS", decoder); - firstS += deltaFirstS; - let currentS = firstS; - - do { - let currentT = 0; - - if (stripSize > 1) { - currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, "IAIT", decoder); - } - - const t = stripSize * stripT + currentT; - const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength); - const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, "IARI", decoder)); - let symbolBitmap = inputSymbols[symbolId]; - let symbolWidth = symbolBitmap[0].length; - let symbolHeight = symbolBitmap.length; - - if (applyRefinement) { - const rdw = decodeInteger(contextCache, "IARDW", decoder); - const rdh = decodeInteger(contextCache, "IARDH", decoder); - const rdx = decodeInteger(contextCache, "IARDX", decoder); - const rdy = decodeInteger(contextCache, "IARDY", decoder); - symbolWidth += rdw; - symbolHeight += rdh; - symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext); - } - - const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1); - const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0); - let s2, t2, symbolRow; - - if (transposed) { - for (s2 = 0; s2 < symbolHeight; s2++) { - row = bitmap[offsetS + s2]; - - if (!row) { - continue; - } - - symbolRow = symbolBitmap[s2]; - const maxWidth = Math.min(width - offsetT, symbolWidth); - - switch (combinationOperator) { - case 0: - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] |= symbolRow[t2]; - } - - break; - - case 2: - for (t2 = 0; t2 < maxWidth; t2++) { - row[offsetT + t2] ^= symbolRow[t2]; - } - - break; - - default: - throw new Jbig2Error(`operator ${combinationOperator} is not supported`); - } - } - - currentS += symbolHeight - 1; - } else { - for (t2 = 0; t2 < symbolHeight; t2++) { - row = bitmap[offsetT + t2]; - - if (!row) { - continue; - } - - symbolRow = symbolBitmap[t2]; - - switch (combinationOperator) { - case 0: - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] |= symbolRow[s2]; - } - - break; - - case 2: - for (s2 = 0; s2 < symbolWidth; s2++) { - row[offsetS + s2] ^= symbolRow[s2]; - } - - break; - - default: - throw new Jbig2Error(`operator ${combinationOperator} is not supported`); - } - } - - currentS += symbolWidth - 1; - } - - i++; - const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, "IADS", decoder); - - if (deltaS === null) { - break; - } - - currentS += deltaS + dsOffset; - } while (true); - } - - return bitmap; -} - -function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) { - const at = []; - - if (!mmr) { - at.push({ - x: -patternWidth, - y: 0 - }); - - if (template === 0) { - at.push({ - x: -3, - y: -1 - }, { - x: 2, - y: -2 - }, { - x: -2, - y: -2 - }); - } - } - - const collectiveWidth = (maxPatternIndex + 1) * patternWidth; - const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext); - const patterns = []; - - for (let i = 0; i <= maxPatternIndex; i++) { - const patternBitmap = []; - const xMin = patternWidth * i; - const xMax = xMin + patternWidth; - - for (let y = 0; y < patternHeight; y++) { - patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); - } - - patterns.push(patternBitmap); - } - - return patterns; -} - -function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) { - const skip = null; - - if (enableSkip) { - throw new Jbig2Error("skip is not supported"); - } - - if (combinationOperator !== 0) { - throw new Jbig2Error(`operator "${combinationOperator}" is not supported in halftone region`); - } - - const regionBitmap = []; - let i, j, row; - - for (i = 0; i < regionHeight; i++) { - row = new Uint8Array(regionWidth); - - if (defaultPixelValue) { - for (j = 0; j < regionWidth; j++) { - row[j] = defaultPixelValue; - } - } - - regionBitmap.push(row); - } - - const numberOfPatterns = patterns.length; - const pattern0 = patterns[0]; - const patternWidth = pattern0[0].length, - patternHeight = pattern0.length; - const bitsPerValue = (0, _core_utils.log2)(numberOfPatterns); - const at = []; - - if (!mmr) { - at.push({ - x: template <= 1 ? 3 : 2, - y: -1 - }); - - if (template === 0) { - at.push({ - x: -3, - y: -1 - }, { - x: 2, - y: -2 - }, { - x: -2, - y: -2 - }); - } - } - - const grayScaleBitPlanes = []; - let mmrInput, bitmap; - - if (mmr) { - mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); - } - - for (i = bitsPerValue - 1; i >= 0; i--) { - if (mmr) { - bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true); - } else { - bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext); - } - - grayScaleBitPlanes[i] = bitmap; - } - - let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow; - - for (mg = 0; mg < gridHeight; mg++) { - for (ng = 0; ng < gridWidth; ng++) { - bit = 0; - patternIndex = 0; - - for (j = bitsPerValue - 1; j >= 0; j--) { - bit ^= grayScaleBitPlanes[j][mg][ng]; - patternIndex |= bit << j; - } - - patternBitmap = patterns[patternIndex]; - x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8; - y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8; - - if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) { - for (i = 0; i < patternHeight; i++) { - regionRow = regionBitmap[y + i]; - patternRow = patternBitmap[i]; - - for (j = 0; j < patternWidth; j++) { - regionRow[x + j] |= patternRow[j]; - } - } - } else { - let regionX, regionY; - - for (i = 0; i < patternHeight; i++) { - regionY = y + i; - - if (regionY < 0 || regionY >= regionHeight) { - continue; - } - - regionRow = regionBitmap[regionY]; - patternRow = patternBitmap[i]; - - for (j = 0; j < patternWidth; j++) { - regionX = x + j; - - if (regionX >= 0 && regionX < regionWidth) { - regionRow[regionX] |= patternRow[j]; - } - } - } - } - } - } - - return regionBitmap; -} - -function readSegmentHeader(data, start) { - const segmentHeader = {}; - segmentHeader.number = (0, _core_utils.readUint32)(data, start); - const flags = data[start + 4]; - const segmentType = flags & 0x3f; - - if (!SegmentTypes[segmentType]) { - throw new Jbig2Error("invalid segment type: " + segmentType); - } - - segmentHeader.type = segmentType; - segmentHeader.typeName = SegmentTypes[segmentType]; - segmentHeader.deferredNonRetain = !!(flags & 0x80); - const pageAssociationFieldSize = !!(flags & 0x40); - const referredFlags = data[start + 5]; - let referredToCount = referredFlags >> 5 & 7; - const retainBits = [referredFlags & 31]; - let position = start + 6; - - if (referredFlags === 7) { - referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff; - position += 3; - let bytes = referredToCount + 7 >> 3; - retainBits[0] = data[position++]; - - while (--bytes > 0) { - retainBits.push(data[position++]); - } - } else if (referredFlags === 5 || referredFlags === 6) { - throw new Jbig2Error("invalid referred-to flags"); - } - - segmentHeader.retainBits = retainBits; - let referredToSegmentNumberSize = 4; - - if (segmentHeader.number <= 256) { - referredToSegmentNumberSize = 1; - } else if (segmentHeader.number <= 65536) { - referredToSegmentNumberSize = 2; - } - - const referredTo = []; - let i, ii; - - for (i = 0; i < referredToCount; i++) { - let number; - - if (referredToSegmentNumberSize === 1) { - number = data[position]; - } else if (referredToSegmentNumberSize === 2) { - number = (0, _core_utils.readUint16)(data, position); - } else { - number = (0, _core_utils.readUint32)(data, position); - } - - referredTo.push(number); - position += referredToSegmentNumberSize; - } - - segmentHeader.referredTo = referredTo; - - if (!pageAssociationFieldSize) { - segmentHeader.pageAssociation = data[position++]; - } else { - segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position); - position += 4; - } - - segmentHeader.length = (0, _core_utils.readUint32)(data, position); - position += 4; - - if (segmentHeader.length === 0xffffffff) { - if (segmentType === 38) { - const genericRegionInfo = readRegionSegmentInformation(data, position); - const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength]; - const genericRegionMmr = !!(genericRegionSegmentFlags & 1); - const searchPatternLength = 6; - const searchPattern = new Uint8Array(searchPatternLength); - - if (!genericRegionMmr) { - searchPattern[0] = 0xff; - searchPattern[1] = 0xac; - } - - searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff; - searchPattern[3] = genericRegionInfo.height >> 16 & 0xff; - searchPattern[4] = genericRegionInfo.height >> 8 & 0xff; - searchPattern[5] = genericRegionInfo.height & 0xff; - - for (i = position, ii = data.length; i < ii; i++) { - let j = 0; - - while (j < searchPatternLength && searchPattern[j] === data[i + j]) { - j++; - } - - if (j === searchPatternLength) { - segmentHeader.length = i + searchPatternLength; - break; - } - } - - if (segmentHeader.length === 0xffffffff) { - throw new Jbig2Error("segment end was not found"); - } - } else { - throw new Jbig2Error("invalid unknown segment length"); - } - } - - segmentHeader.headerEnd = position; - return segmentHeader; -} - -function readSegments(header, data, start, end) { - const segments = []; - let position = start; - - while (position < end) { - const segmentHeader = readSegmentHeader(data, position); - position = segmentHeader.headerEnd; - const segment = { - header: segmentHeader, - data - }; - - if (!header.randomAccess) { - segment.start = position; - position += segmentHeader.length; - segment.end = position; - } - - segments.push(segment); - - if (segmentHeader.type === 51) { - break; - } - } - - if (header.randomAccess) { - for (let i = 0, ii = segments.length; i < ii; i++) { - segments[i].start = position; - position += segments[i].header.length; - segments[i].end = position; - } - } - - return segments; -} - -function readRegionSegmentInformation(data, start) { - return { - width: (0, _core_utils.readUint32)(data, start), - height: (0, _core_utils.readUint32)(data, start + 4), - x: (0, _core_utils.readUint32)(data, start + 8), - y: (0, _core_utils.readUint32)(data, start + 12), - combinationOperator: data[start + 16] & 7 - }; -} - -const RegionSegmentInformationFieldLength = 17; - -function processSegment(segment, visitor) { - const header = segment.header; - const data = segment.data, - end = segment.end; - let position = segment.start; - let args, at, i, atLength; - - switch (header.type) { - case 0: - const dictionary = {}; - const dictionaryFlags = (0, _core_utils.readUint16)(data, position); - dictionary.huffman = !!(dictionaryFlags & 1); - dictionary.refinement = !!(dictionaryFlags & 2); - dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3; - dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3; - dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1; - dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1; - dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); - dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); - dictionary.template = dictionaryFlags >> 10 & 3; - dictionary.refinementTemplate = dictionaryFlags >> 12 & 1; - position += 2; - - if (!dictionary.huffman) { - atLength = dictionary.template === 0 ? 4 : 1; - at = []; - - for (i = 0; i < atLength; i++) { - at.push({ - x: (0, _core_utils.readInt8)(data, position), - y: (0, _core_utils.readInt8)(data, position + 1) - }); - position += 2; - } - - dictionary.at = at; - } - - if (dictionary.refinement && !dictionary.refinementTemplate) { - at = []; - - for (i = 0; i < 2; i++) { - at.push({ - x: (0, _core_utils.readInt8)(data, position), - y: (0, _core_utils.readInt8)(data, position + 1) - }); - position += 2; - } - - dictionary.refinementAt = at; - } - - dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position); - position += 4; - dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position); - position += 4; - args = [dictionary, header.number, header.referredTo, data, position, end]; - break; - - case 6: - case 7: - const textRegion = {}; - textRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - const textRegionSegmentFlags = (0, _core_utils.readUint16)(data, position); - position += 2; - textRegion.huffman = !!(textRegionSegmentFlags & 1); - textRegion.refinement = !!(textRegionSegmentFlags & 2); - textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3; - textRegion.stripSize = 1 << textRegion.logStripSize; - textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3; - textRegion.transposed = !!(textRegionSegmentFlags & 64); - textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3; - textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1; - textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27; - textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1; - - if (textRegion.huffman) { - const textRegionHuffmanFlags = (0, _core_utils.readUint16)(data, position); - position += 2; - textRegion.huffmanFS = textRegionHuffmanFlags & 3; - textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3; - textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3; - textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3; - textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3; - textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3; - textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3; - textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000); - } - - if (textRegion.refinement && !textRegion.refinementTemplate) { - at = []; - - for (i = 0; i < 2; i++) { - at.push({ - x: (0, _core_utils.readInt8)(data, position), - y: (0, _core_utils.readInt8)(data, position + 1) - }); - position += 2; - } - - textRegion.refinementAt = at; - } - - textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position); - position += 4; - args = [textRegion, header.referredTo, data, position, end]; - break; - - case 16: - const patternDictionary = {}; - const patternDictionaryFlags = data[position++]; - patternDictionary.mmr = !!(patternDictionaryFlags & 1); - patternDictionary.template = patternDictionaryFlags >> 1 & 3; - patternDictionary.patternWidth = data[position++]; - patternDictionary.patternHeight = data[position++]; - patternDictionary.maxPatternIndex = (0, _core_utils.readUint32)(data, position); - position += 4; - args = [patternDictionary, header.number, data, position, end]; - break; - - case 22: - case 23: - const halftoneRegion = {}; - halftoneRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - const halftoneRegionFlags = data[position++]; - halftoneRegion.mmr = !!(halftoneRegionFlags & 1); - halftoneRegion.template = halftoneRegionFlags >> 1 & 3; - halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8); - halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7; - halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1; - halftoneRegion.gridWidth = (0, _core_utils.readUint32)(data, position); - position += 4; - halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position); - position += 4; - halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff; - position += 4; - halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff; - position += 4; - halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position); - position += 2; - halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position); - position += 2; - args = [halftoneRegion, header.referredTo, data, position, end]; - break; - - case 38: - case 39: - const genericRegion = {}; - genericRegion.info = readRegionSegmentInformation(data, position); - position += RegionSegmentInformationFieldLength; - const genericRegionSegmentFlags = data[position++]; - genericRegion.mmr = !!(genericRegionSegmentFlags & 1); - genericRegion.template = genericRegionSegmentFlags >> 1 & 3; - genericRegion.prediction = !!(genericRegionSegmentFlags & 8); - - if (!genericRegion.mmr) { - atLength = genericRegion.template === 0 ? 4 : 1; - at = []; - - for (i = 0; i < atLength; i++) { - at.push({ - x: (0, _core_utils.readInt8)(data, position), - y: (0, _core_utils.readInt8)(data, position + 1) - }); - position += 2; - } - - genericRegion.at = at; - } - - args = [genericRegion, data, position, end]; - break; - - case 48: - const pageInfo = { - width: (0, _core_utils.readUint32)(data, position), - height: (0, _core_utils.readUint32)(data, position + 4), - resolutionX: (0, _core_utils.readUint32)(data, position + 8), - resolutionY: (0, _core_utils.readUint32)(data, position + 12) - }; - - if (pageInfo.height === 0xffffffff) { - delete pageInfo.height; - } - - const pageSegmentFlags = data[position + 16]; - (0, _core_utils.readUint16)(data, position + 17); - pageInfo.lossless = !!(pageSegmentFlags & 1); - pageInfo.refinement = !!(pageSegmentFlags & 2); - pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1; - pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3; - pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); - pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); - args = [pageInfo]; - break; - - case 49: - break; - - case 50: - break; - - case 51: - break; - - case 53: - args = [header.number, data, position, end]; - break; - - case 62: - break; - - default: - throw new Jbig2Error(`segment type ${header.typeName}(${header.type})` + " is not implemented"); - } - - const callbackName = "on" + header.typeName; - - if (callbackName in visitor) { - visitor[callbackName].apply(visitor, args); - } -} - -function processSegments(segments, visitor) { - for (let i = 0, ii = segments.length; i < ii; i++) { - processSegment(segments[i], visitor); - } -} - -function parseJbig2Chunks(chunks) { - const visitor = new SimpleSegmentVisitor(); - - for (let i = 0, ii = chunks.length; i < ii; i++) { - const chunk = chunks[i]; - const segments = readSegments({}, chunk.data, chunk.start, chunk.end); - processSegments(segments, visitor); - } - - return visitor.buffer; -} - -function parseJbig2(data) { - const end = data.length; - let position = 0; - - if (data[position] !== 0x97 || data[position + 1] !== 0x4a || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0d || data[position + 5] !== 0x0a || data[position + 6] !== 0x1a || data[position + 7] !== 0x0a) { - throw new Jbig2Error("parseJbig2 - invalid header."); - } - - const header = Object.create(null); - position += 8; - const flags = data[position++]; - header.randomAccess = !(flags & 1); - - if (!(flags & 2)) { - header.numberOfPages = (0, _core_utils.readUint32)(data, position); - position += 4; - } - - const segments = readSegments(header, data, position, end); - const visitor = new SimpleSegmentVisitor(); - processSegments(segments, visitor); - const { - width, - height - } = visitor.currentPageInfo; - const bitPacked = visitor.buffer; - const imgData = new Uint8ClampedArray(width * height); - let q = 0, - k = 0; - - for (let i = 0; i < height; i++) { - let mask = 0, - buffer; - - for (let j = 0; j < width; j++) { - if (!mask) { - mask = 128; - buffer = bitPacked[k++]; - } - - imgData[q++] = buffer & mask ? 0 : 255; - mask >>= 1; - } - } - - return { - imgData, - width, - height - }; -} - -class SimpleSegmentVisitor { - onPageInformation(info) { - this.currentPageInfo = info; - const rowSize = info.width + 7 >> 3; - const buffer = new Uint8ClampedArray(rowSize * info.height); - - if (info.defaultPixelValue) { - buffer.fill(0xff); - } - - this.buffer = buffer; - } - - drawBitmap(regionInfo, bitmap) { - const pageInfo = this.currentPageInfo; - const width = regionInfo.width, - height = regionInfo.height; - const rowSize = pageInfo.width + 7 >> 3; - const combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator; - const buffer = this.buffer; - const mask0 = 128 >> (regionInfo.x & 7); - let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); - let i, j, mask, offset; - - switch (combinationOperator) { - case 0: - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] |= mask; - } - - mask >>= 1; - - if (!mask) { - mask = 128; - offset++; - } - } - - offset0 += rowSize; - } - - break; - - case 2: - for (i = 0; i < height; i++) { - mask = mask0; - offset = offset0; - - for (j = 0; j < width; j++) { - if (bitmap[i][j]) { - buffer[offset] ^= mask; - } - - mask >>= 1; - - if (!mask) { - mask = 128; - offset++; - } - } - - offset0 += rowSize; - } - - break; - - default: - throw new Jbig2Error(`operator ${combinationOperator} is not supported`); - } - } - - onImmediateGenericRegion(region, data, start, end) { - const regionInfo = region.info; - const decodingContext = new DecodingContext(data, start, end); - const bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext); - this.drawBitmap(regionInfo, bitmap); - } - - onImmediateLosslessGenericRegion() { - this.onImmediateGenericRegion.apply(this, arguments); - } - - onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) { - let huffmanTables, huffmanInput; - - if (dictionary.huffman) { - huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables); - huffmanInput = new Reader(data, start, end); - } - - let symbols = this.symbols; - - if (!symbols) { - this.symbols = symbols = {}; - } - - let inputSymbols = []; - - for (let i = 0, ii = referredSegments.length; i < ii; i++) { - const referredSymbols = symbols[referredSegments[i]]; - - if (referredSymbols) { - inputSymbols = inputSymbols.concat(referredSymbols); - } - } - - const decodingContext = new DecodingContext(data, start, end); - symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput); - } - - onImmediateTextRegion(region, referredSegments, data, start, end) { - const regionInfo = region.info; - let huffmanTables, huffmanInput; - const symbols = this.symbols; - let inputSymbols = []; - - for (let i = 0, ii = referredSegments.length; i < ii; i++) { - const referredSymbols = symbols[referredSegments[i]]; - - if (referredSymbols) { - inputSymbols = inputSymbols.concat(referredSymbols); - } - } - - const symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length); - - if (region.huffman) { - huffmanInput = new Reader(data, start, end); - huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput); - } - - const decodingContext = new DecodingContext(data, start, end); - const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput); - this.drawBitmap(regionInfo, bitmap); - } - - onImmediateLosslessTextRegion() { - this.onImmediateTextRegion.apply(this, arguments); - } - - onPatternDictionary(dictionary, currentSegment, data, start, end) { - let patterns = this.patterns; - - if (!patterns) { - this.patterns = patterns = {}; - } - - const decodingContext = new DecodingContext(data, start, end); - patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext); - } - - onImmediateHalftoneRegion(region, referredSegments, data, start, end) { - const patterns = this.patterns[referredSegments[0]]; - const regionInfo = region.info; - const decodingContext = new DecodingContext(data, start, end); - const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext); - this.drawBitmap(regionInfo, bitmap); - } - - onImmediateLosslessHalftoneRegion() { - this.onImmediateHalftoneRegion.apply(this, arguments); - } - - onTables(currentSegment, data, start, end) { - let customTables = this.customTables; - - if (!customTables) { - this.customTables = customTables = {}; - } - - customTables[currentSegment] = decodeTablesSegment(data, start, end); - } - -} - -class HuffmanLine { - constructor(lineData) { - if (lineData.length === 2) { - this.isOOB = true; - this.rangeLow = 0; - this.prefixLength = lineData[0]; - this.rangeLength = 0; - this.prefixCode = lineData[1]; - this.isLowerRange = false; - } else { - this.isOOB = false; - this.rangeLow = lineData[0]; - this.prefixLength = lineData[1]; - this.rangeLength = lineData[2]; - this.prefixCode = lineData[3]; - this.isLowerRange = lineData[4] === "lower"; - } - } - -} - -class HuffmanTreeNode { - constructor(line) { - this.children = []; - - if (line) { - this.isLeaf = true; - this.rangeLength = line.rangeLength; - this.rangeLow = line.rangeLow; - this.isLowerRange = line.isLowerRange; - this.isOOB = line.isOOB; - } else { - this.isLeaf = false; - } - } - - buildTree(line, shift) { - const bit = line.prefixCode >> shift & 1; - - if (shift <= 0) { - this.children[bit] = new HuffmanTreeNode(line); - } else { - let node = this.children[bit]; - - if (!node) { - this.children[bit] = node = new HuffmanTreeNode(null); - } - - node.buildTree(line, shift - 1); - } - } - - decodeNode(reader) { - if (this.isLeaf) { - if (this.isOOB) { - return null; - } - - const htOffset = reader.readBits(this.rangeLength); - return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset); - } - - const node = this.children[reader.readBit()]; - - if (!node) { - throw new Jbig2Error("invalid Huffman data"); - } - - return node.decodeNode(reader); - } - -} - -class HuffmanTable { - constructor(lines, prefixCodesDone) { - if (!prefixCodesDone) { - this.assignPrefixCodes(lines); - } - - this.rootNode = new HuffmanTreeNode(null); - - for (let i = 0, ii = lines.length; i < ii; i++) { - const line = lines[i]; - - if (line.prefixLength > 0) { - this.rootNode.buildTree(line, line.prefixLength - 1); - } - } - } - - decode(reader) { - return this.rootNode.decodeNode(reader); - } - - assignPrefixCodes(lines) { - const linesLength = lines.length; - let prefixLengthMax = 0; - - for (let i = 0; i < linesLength; i++) { - prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength); - } - - const histogram = new Uint32Array(prefixLengthMax + 1); - - for (let i = 0; i < linesLength; i++) { - histogram[lines[i].prefixLength]++; - } - - let currentLength = 1, - firstCode = 0, - currentCode, - currentTemp, - line; - histogram[0] = 0; - - while (currentLength <= prefixLengthMax) { - firstCode = firstCode + histogram[currentLength - 1] << 1; - currentCode = firstCode; - currentTemp = 0; - - while (currentTemp < linesLength) { - line = lines[currentTemp]; - - if (line.prefixLength === currentLength) { - line.prefixCode = currentCode; - currentCode++; - } - - currentTemp++; - } - - currentLength++; - } - } - -} - -function decodeTablesSegment(data, start, end) { - const flags = data[start]; - const lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff; - const highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff; - const reader = new Reader(data, start + 9, end); - const prefixSizeBits = (flags >> 1 & 7) + 1; - const rangeSizeBits = (flags >> 4 & 7) + 1; - const lines = []; - let prefixLength, - rangeLength, - currentRangeLow = lowestValue; - - do { - prefixLength = reader.readBits(prefixSizeBits); - rangeLength = reader.readBits(rangeSizeBits); - lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])); - currentRangeLow += 1 << rangeLength; - } while (currentRangeLow < highestValue); - - prefixLength = reader.readBits(prefixSizeBits); - lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, "lower"])); - prefixLength = reader.readBits(prefixSizeBits); - lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0])); - - if (flags & 1) { - prefixLength = reader.readBits(prefixSizeBits); - lines.push(new HuffmanLine([prefixLength, 0])); - } - - return new HuffmanTable(lines, false); -} - -const standardTablesCache = {}; - -function getStandardTable(number) { - let table = standardTablesCache[number]; - - if (table) { - return table; - } - - let lines; - - switch (number) { - case 1: - lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]]; - break; - - case 2: - lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]]; - break; - - case 3: - lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, "lower"], [75, 7, 32, 0x7e], [6, 0x3e]]; - break; - - case 4: - lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]]; - break; - - case 5: - lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, "lower"], [76, 6, 32, 0x3e]]; - break; - - case 6: - lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, "lower"], [2048, 6, 32, 0x3f]]; - break; - - case 7: - lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, "lower"], [2048, 5, 32, 0x1f]]; - break; - - case 8: - lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, "lower"], [1670, 9, 32, 0x1ff], [2, 0x1]]; - break; - - case 9: - lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, "lower"], [3339, 9, 32, 0x1ff], [2, 0x0]]; - break; - - case 10: - lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, "lower"], [4166, 8, 32, 0xff], [2, 0x2]]; - break; - - case 11: - lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; - break; - - case 12: - lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]]; - break; - - case 13: - lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; - break; - - case 14: - lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]]; - break; - - case 15: - lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, "lower"], [25, 7, 32, 0x7f]]; - break; - - default: - throw new Jbig2Error(`standard table B.${number} does not exist`); - } - - for (let i = 0, ii = lines.length; i < ii; i++) { - lines[i] = new HuffmanLine(lines[i]); - } - - table = new HuffmanTable(lines, true); - standardTablesCache[number] = table; - return table; -} - -class Reader { - constructor(data, start, end) { - this.data = data; - this.start = start; - this.end = end; - this.position = start; - this.shift = -1; - this.currentByte = 0; - } - - readBit() { - if (this.shift < 0) { - if (this.position >= this.end) { - throw new Jbig2Error("end of data while reading bit"); - } - - this.currentByte = this.data[this.position++]; - this.shift = 7; - } - - const bit = this.currentByte >> this.shift & 1; - this.shift--; - return bit; - } - - readBits(numBits) { - let result = 0, - i; - - for (i = numBits - 1; i >= 0; i--) { - result |= this.readBit() << i; - } - - return result; - } - - byteAlign() { - this.shift = -1; - } - - next() { - if (this.position >= this.end) { - return -1; - } - - return this.data[this.position++]; - } - -} - -function getCustomHuffmanTable(index, referredTo, customTables) { - let currentIndex = 0; - - for (let i = 0, ii = referredTo.length; i < ii; i++) { - const table = customTables[referredTo[i]]; - - if (table) { - if (index === currentIndex) { - return table; - } - - currentIndex++; - } - } - - throw new Jbig2Error("can't find custom Huffman table"); -} - -function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) { - const codes = []; - - for (let i = 0; i <= 34; i++) { - const codeLength = reader.readBits(4); - codes.push(new HuffmanLine([i, codeLength, 0, 0])); - } - - const runCodesTable = new HuffmanTable(codes, false); - codes.length = 0; - - for (let i = 0; i < numberOfSymbols;) { - const codeLength = runCodesTable.decode(reader); - - if (codeLength >= 32) { - let repeatedLength, numberOfRepeats, j; - - switch (codeLength) { - case 32: - if (i === 0) { - throw new Jbig2Error("no previous value in symbol ID table"); - } - - numberOfRepeats = reader.readBits(2) + 3; - repeatedLength = codes[i - 1].prefixLength; - break; - - case 33: - numberOfRepeats = reader.readBits(3) + 3; - repeatedLength = 0; - break; - - case 34: - numberOfRepeats = reader.readBits(7) + 11; - repeatedLength = 0; - break; - - default: - throw new Jbig2Error("invalid code length in symbol ID table"); - } - - for (j = 0; j < numberOfRepeats; j++) { - codes.push(new HuffmanLine([i, repeatedLength, 0, 0])); - i++; - } - } else { - codes.push(new HuffmanLine([i, codeLength, 0, 0])); - i++; - } - } - - reader.byteAlign(); - const symbolIDTable = new HuffmanTable(codes, false); - let customIndex = 0, - tableFirstS, - tableDeltaS, - tableDeltaT; - - switch (textRegion.huffmanFS) { - case 0: - case 1: - tableFirstS = getStandardTable(textRegion.huffmanFS + 6); - break; - - case 3: - tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error("invalid Huffman FS selector"); - } - - switch (textRegion.huffmanDS) { - case 0: - case 1: - case 2: - tableDeltaS = getStandardTable(textRegion.huffmanDS + 8); - break; - - case 3: - tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error("invalid Huffman DS selector"); - } - - switch (textRegion.huffmanDT) { - case 0: - case 1: - case 2: - tableDeltaT = getStandardTable(textRegion.huffmanDT + 11); - break; - - case 3: - tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error("invalid Huffman DT selector"); - } - - if (textRegion.refinement) { - throw new Jbig2Error("refinement with Huffman is not supported"); - } - - return { - symbolIDTable, - tableFirstS, - tableDeltaS, - tableDeltaT - }; -} - -function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) { - let customIndex = 0, - tableDeltaHeight, - tableDeltaWidth; - - switch (dictionary.huffmanDHSelector) { - case 0: - case 1: - tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4); - break; - - case 3: - tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error("invalid Huffman DH selector"); - } - - switch (dictionary.huffmanDWSelector) { - case 0: - case 1: - tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2); - break; - - case 3: - tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - break; - - default: - throw new Jbig2Error("invalid Huffman DW selector"); - } - - let tableBitmapSize, tableAggregateInstances; - - if (dictionary.bitmapSizeSelector) { - tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables); - customIndex++; - } else { - tableBitmapSize = getStandardTable(1); - } - - if (dictionary.aggregationInstancesSelector) { - tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables); - } else { - tableAggregateInstances = getStandardTable(1); - } - - return { - tableDeltaHeight, - tableDeltaWidth, - tableBitmapSize, - tableAggregateInstances - }; -} - -function readUncompressedBitmap(reader, width, height) { - const bitmap = []; - - for (let y = 0; y < height; y++) { - const row = new Uint8Array(width); - bitmap.push(row); - - for (let x = 0; x < width; x++) { - row[x] = reader.readBit(); - } - - reader.byteAlign(); - } - - return bitmap; -} - -function decodeMMRBitmap(input, width, height, endOfBlock) { - const params = { - K: -1, - Columns: width, - Rows: height, - BlackIs1: true, - EndOfBlock: endOfBlock - }; - const decoder = new _ccitt.CCITTFaxDecoder(input, params); - const bitmap = []; - let currentByte, - eof = false; - - for (let y = 0; y < height; y++) { - const row = new Uint8Array(width); - bitmap.push(row); - let shift = -1; - - for (let x = 0; x < width; x++) { - if (shift < 0) { - currentByte = decoder.readNextChar(); - - if (currentByte === -1) { - currentByte = 0; - eof = true; - } - - shift = 7; - } - - row[x] = currentByte >> shift & 1; - shift--; - } - } - - if (endOfBlock && !eof) { - const lookForEOFLimit = 5; - - for (let i = 0; i < lookForEOFLimit; i++) { - if (decoder.readNextChar() === -1) { - break; - } - } - } - - return bitmap; -} - -class Jbig2Image { - parseChunks(chunks) { - return parseJbig2Chunks(chunks); - } - - parse(data) { - const { - imgData, - width, - height - } = parseJbig2(data); - this.width = width; - this.height = height; - return imgData; - } - -} - -exports.Jbig2Image = Jbig2Image; - -/***/ }), -/* 36 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ArithmeticDecoder = void 0; -const QeTable = [{ - qe: 0x5601, - nmps: 1, - nlps: 1, - switchFlag: 1 -}, { - qe: 0x3401, - nmps: 2, - nlps: 6, - switchFlag: 0 -}, { - qe: 0x1801, - nmps: 3, - nlps: 9, - switchFlag: 0 -}, { - qe: 0x0ac1, - nmps: 4, - nlps: 12, - switchFlag: 0 -}, { - qe: 0x0521, - nmps: 5, - nlps: 29, - switchFlag: 0 -}, { - qe: 0x0221, - nmps: 38, - nlps: 33, - switchFlag: 0 -}, { - qe: 0x5601, - nmps: 7, - nlps: 6, - switchFlag: 1 -}, { - qe: 0x5401, - nmps: 8, - nlps: 14, - switchFlag: 0 -}, { - qe: 0x4801, - nmps: 9, - nlps: 14, - switchFlag: 0 -}, { - qe: 0x3801, - nmps: 10, - nlps: 14, - switchFlag: 0 -}, { - qe: 0x3001, - nmps: 11, - nlps: 17, - switchFlag: 0 -}, { - qe: 0x2401, - nmps: 12, - nlps: 18, - switchFlag: 0 -}, { - qe: 0x1c01, - nmps: 13, - nlps: 20, - switchFlag: 0 -}, { - qe: 0x1601, - nmps: 29, - nlps: 21, - switchFlag: 0 -}, { - qe: 0x5601, - nmps: 15, - nlps: 14, - switchFlag: 1 -}, { - qe: 0x5401, - nmps: 16, - nlps: 14, - switchFlag: 0 -}, { - qe: 0x5101, - nmps: 17, - nlps: 15, - switchFlag: 0 -}, { - qe: 0x4801, - nmps: 18, - nlps: 16, - switchFlag: 0 -}, { - qe: 0x3801, - nmps: 19, - nlps: 17, - switchFlag: 0 -}, { - qe: 0x3401, - nmps: 20, - nlps: 18, - switchFlag: 0 -}, { - qe: 0x3001, - nmps: 21, - nlps: 19, - switchFlag: 0 -}, { - qe: 0x2801, - nmps: 22, - nlps: 19, - switchFlag: 0 -}, { - qe: 0x2401, - nmps: 23, - nlps: 20, - switchFlag: 0 -}, { - qe: 0x2201, - nmps: 24, - nlps: 21, - switchFlag: 0 -}, { - qe: 0x1c01, - nmps: 25, - nlps: 22, - switchFlag: 0 -}, { - qe: 0x1801, - nmps: 26, - nlps: 23, - switchFlag: 0 -}, { - qe: 0x1601, - nmps: 27, - nlps: 24, - switchFlag: 0 -}, { - qe: 0x1401, - nmps: 28, - nlps: 25, - switchFlag: 0 -}, { - qe: 0x1201, - nmps: 29, - nlps: 26, - switchFlag: 0 -}, { - qe: 0x1101, - nmps: 30, - nlps: 27, - switchFlag: 0 -}, { - qe: 0x0ac1, - nmps: 31, - nlps: 28, - switchFlag: 0 -}, { - qe: 0x09c1, - nmps: 32, - nlps: 29, - switchFlag: 0 -}, { - qe: 0x08a1, - nmps: 33, - nlps: 30, - switchFlag: 0 -}, { - qe: 0x0521, - nmps: 34, - nlps: 31, - switchFlag: 0 -}, { - qe: 0x0441, - nmps: 35, - nlps: 32, - switchFlag: 0 -}, { - qe: 0x02a1, - nmps: 36, - nlps: 33, - switchFlag: 0 -}, { - qe: 0x0221, - nmps: 37, - nlps: 34, - switchFlag: 0 -}, { - qe: 0x0141, - nmps: 38, - nlps: 35, - switchFlag: 0 -}, { - qe: 0x0111, - nmps: 39, - nlps: 36, - switchFlag: 0 -}, { - qe: 0x0085, - nmps: 40, - nlps: 37, - switchFlag: 0 -}, { - qe: 0x0049, - nmps: 41, - nlps: 38, - switchFlag: 0 -}, { - qe: 0x0025, - nmps: 42, - nlps: 39, - switchFlag: 0 -}, { - qe: 0x0015, - nmps: 43, - nlps: 40, - switchFlag: 0 -}, { - qe: 0x0009, - nmps: 44, - nlps: 41, - switchFlag: 0 -}, { - qe: 0x0005, - nmps: 45, - nlps: 42, - switchFlag: 0 -}, { - qe: 0x0001, - nmps: 45, - nlps: 43, - switchFlag: 0 -}, { - qe: 0x5601, - nmps: 46, - nlps: 46, - switchFlag: 0 -}]; - -class ArithmeticDecoder { - constructor(data, start, end) { - this.data = data; - this.bp = start; - this.dataEnd = end; - this.chigh = data[start]; - this.clow = 0; - this.byteIn(); - this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f; - this.clow = this.clow << 7 & 0xffff; - this.ct -= 7; - this.a = 0x8000; - } - - byteIn() { - const data = this.data; - let bp = this.bp; - - if (data[bp] === 0xff) { - if (data[bp + 1] > 0x8f) { - this.clow += 0xff00; - this.ct = 8; - } else { - bp++; - this.clow += data[bp] << 9; - this.ct = 7; - this.bp = bp; - } - } else { - bp++; - this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00; - this.ct = 8; - this.bp = bp; - } - - if (this.clow > 0xffff) { - this.chigh += this.clow >> 16; - this.clow &= 0xffff; - } - } - - readBit(contexts, pos) { - let cx_index = contexts[pos] >> 1, - cx_mps = contexts[pos] & 1; - const qeTableIcx = QeTable[cx_index]; - const qeIcx = qeTableIcx.qe; - let d; - let a = this.a - qeIcx; - - if (this.chigh < qeIcx) { - if (a < qeIcx) { - a = qeIcx; - d = cx_mps; - cx_index = qeTableIcx.nmps; - } else { - a = qeIcx; - d = 1 ^ cx_mps; - - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } - - cx_index = qeTableIcx.nlps; - } - } else { - this.chigh -= qeIcx; - - if ((a & 0x8000) !== 0) { - this.a = a; - return cx_mps; - } - - if (a < qeIcx) { - d = 1 ^ cx_mps; - - if (qeTableIcx.switchFlag === 1) { - cx_mps = d; - } - - cx_index = qeTableIcx.nlps; - } else { - d = cx_mps; - cx_index = qeTableIcx.nmps; - } - } - - do { - if (this.ct === 0) { - this.byteIn(); - } - - a <<= 1; - this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1; - this.clow = this.clow << 1 & 0xffff; - this.ct--; - } while ((a & 0x8000) === 0); - - this.a = a; - contexts[pos] = cx_index << 1 | cx_mps; - return d; - } - -} - -exports.ArithmeticDecoder = ArithmeticDecoder; - -/***/ }), -/* 37 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.JpegStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -var _primitives = __w_pdfjs_require__(5); - -var _jpg = __w_pdfjs_require__(38); - -var _util = __w_pdfjs_require__(2); - -class JpegStream extends _decode_stream.DecodeStream { - constructor(stream, maybeLength, params) { - let ch; - - while ((ch = stream.getByte()) !== -1) { - if (ch === 0xff) { - stream.skip(-1); - break; - } - } - - super(maybeLength); - this.stream = stream; - this.dict = stream.dict; - this.maybeLength = maybeLength; - this.params = params; - } - - get bytes() { - return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); - } - - ensureBuffer(requested) {} - - readBlock() { - if (this.eof) { - return; - } - - const jpegOptions = { - decodeTransform: undefined, - colorTransform: undefined - }; - const decodeArr = this.dict.getArray("D", "Decode"); - - if (this.forceRGB && Array.isArray(decodeArr)) { - const bitsPerComponent = this.dict.get("BPC", "BitsPerComponent") || 8; - const decodeArrLength = decodeArr.length; - const transform = new Int32Array(decodeArrLength); - let transformNeeded = false; - const maxValue = (1 << bitsPerComponent) - 1; - - for (let i = 0; i < decodeArrLength; i += 2) { - transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0; - transform[i + 1] = decodeArr[i] * maxValue | 0; - - if (transform[i] !== 256 || transform[i + 1] !== 0) { - transformNeeded = true; - } - } - - if (transformNeeded) { - jpegOptions.decodeTransform = transform; - } - } - - if (this.params instanceof _primitives.Dict) { - const colorTransform = this.params.get("ColorTransform"); - - if (Number.isInteger(colorTransform)) { - jpegOptions.colorTransform = colorTransform; - } - } - - const jpegImage = new _jpg.JpegImage(jpegOptions); - jpegImage.parse(this.bytes); - const data = jpegImage.getData({ - width: this.drawWidth, - height: this.drawHeight, - forceRGB: this.forceRGB, - isSourcePDF: true - }); - this.buffer = data; - this.bufferLength = data.length; - this.eof = true; - } - -} - -exports.JpegStream = JpegStream; - -/***/ }), -/* 38 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.JpegImage = void 0; - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -class JpegError extends _util.BaseException { - constructor(msg) { - super(`JPEG error: ${msg}`, "JpegError"); - } - -} - -class DNLMarkerError extends _util.BaseException { - constructor(message, scanLines) { - super(message, "DNLMarkerError"); - this.scanLines = scanLines; - } - -} - -class EOIMarkerError extends _util.BaseException { - constructor(msg) { - super(msg, "EOIMarkerError"); - } - -} - -const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]); -const dctCos1 = 4017; -const dctSin1 = 799; -const dctCos3 = 3406; -const dctSin3 = 2276; -const dctCos6 = 1567; -const dctSin6 = 3784; -const dctSqrt2 = 5793; -const dctSqrt1d2 = 2896; - -function buildHuffmanTable(codeLengths, values) { - let k = 0, - i, - j, - length = 16; - - while (length > 0 && !codeLengths[length - 1]) { - length--; - } - - const code = [{ - children: [], - index: 0 - }]; - let p = code[0], - q; - - for (i = 0; i < length; i++) { - for (j = 0; j < codeLengths[i]; j++) { - p = code.pop(); - p.children[p.index] = values[k]; - - while (p.index > 0) { - p = code.pop(); - } - - p.index++; - code.push(p); - - while (code.length <= i) { - code.push(q = { - children: [], - index: 0 - }); - p.children[p.index] = q.children; - p = q; - } - - k++; - } - - if (i + 1 < length) { - code.push(q = { - children: [], - index: 0 - }); - p.children[p.index] = q.children; - p = q; - } - } - - return code[0].children; -} - -function getBlockBufferOffset(component, row, col) { - return 64 * ((component.blocksPerLine + 1) * row + col); -} - -function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) { - const mcusPerLine = frame.mcusPerLine; - const progressive = frame.progressive; - const startOffset = offset; - let bitsData = 0, - bitsCount = 0; - - function readBit() { - if (bitsCount > 0) { - bitsCount--; - return bitsData >> bitsCount & 1; - } - - bitsData = data[offset++]; - - if (bitsData === 0xff) { - const nextByte = data[offset++]; - - if (nextByte) { - if (nextByte === 0xdc && parseDNLMarker) { - offset += 2; - const scanLines = (0, _core_utils.readUint16)(data, offset); - offset += 2; - - if (scanLines > 0 && scanLines !== frame.scanLines) { - throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", scanLines); - } - } else if (nextByte === 0xd9) { - if (parseDNLMarker) { - const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0); - - if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 10) { - throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly caused by incorrect `scanLines` parameter", maybeScanLines); - } - } - - throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data"); - } - - throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`); - } - } - - bitsCount = 7; - return bitsData >>> 7; - } - - function decodeHuffman(tree) { - let node = tree; - - while (true) { - node = node[readBit()]; - - switch (typeof node) { - case "number": - return node; - - case "object": - continue; - } - - throw new JpegError("invalid huffman sequence"); - } - } - - function receive(length) { - let n = 0; - - while (length > 0) { - n = n << 1 | readBit(); - length--; - } - - return n; - } - - function receiveAndExtend(length) { - if (length === 1) { - return readBit() === 1 ? 1 : -1; - } - - const n = receive(length); - - if (n >= 1 << length - 1) { - return n; - } - - return n + (-1 << length) + 1; - } - - function decodeBaseline(component, blockOffset) { - const t = decodeHuffman(component.huffmanTableDC); - const diff = t === 0 ? 0 : receiveAndExtend(t); - component.blockData[blockOffset] = component.pred += diff; - let k = 1; - - while (k < 64) { - const rs = decodeHuffman(component.huffmanTableAC); - const s = rs & 15, - r = rs >> 4; - - if (s === 0) { - if (r < 15) { - break; - } - - k += 16; - continue; - } - - k += r; - const z = dctZigZag[k]; - component.blockData[blockOffset + z] = receiveAndExtend(s); - k++; - } - } - - function decodeDCFirst(component, blockOffset) { - const t = decodeHuffman(component.huffmanTableDC); - const diff = t === 0 ? 0 : receiveAndExtend(t) << successive; - component.blockData[blockOffset] = component.pred += diff; - } - - function decodeDCSuccessive(component, blockOffset) { - component.blockData[blockOffset] |= readBit() << successive; - } - - let eobrun = 0; - - function decodeACFirst(component, blockOffset) { - if (eobrun > 0) { - eobrun--; - return; - } - - let k = spectralStart; - const e = spectralEnd; - - while (k <= e) { - const rs = decodeHuffman(component.huffmanTableAC); - const s = rs & 15, - r = rs >> 4; - - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r) - 1; - break; - } - - k += 16; - continue; - } - - k += r; - const z = dctZigZag[k]; - component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive); - k++; - } - } - - let successiveACState = 0, - successiveACNextValue; - - function decodeACSuccessive(component, blockOffset) { - let k = spectralStart; - const e = spectralEnd; - let r = 0; - let s; - let rs; - - while (k <= e) { - const offsetZ = blockOffset + dctZigZag[k]; - const sign = component.blockData[offsetZ] < 0 ? -1 : 1; - - switch (successiveACState) { - case 0: - rs = decodeHuffman(component.huffmanTableAC); - s = rs & 15; - r = rs >> 4; - - if (s === 0) { - if (r < 15) { - eobrun = receive(r) + (1 << r); - successiveACState = 4; - } else { - r = 16; - successiveACState = 1; - } - } else { - if (s !== 1) { - throw new JpegError("invalid ACn encoding"); - } - - successiveACNextValue = receiveAndExtend(s); - successiveACState = r ? 2 : 3; - } - - continue; - - case 1: - case 2: - if (component.blockData[offsetZ]) { - component.blockData[offsetZ] += sign * (readBit() << successive); - } else { - r--; - - if (r === 0) { - successiveACState = successiveACState === 2 ? 3 : 0; - } - } - - break; - - case 3: - if (component.blockData[offsetZ]) { - component.blockData[offsetZ] += sign * (readBit() << successive); - } else { - component.blockData[offsetZ] = successiveACNextValue << successive; - successiveACState = 0; - } - - break; - - case 4: - if (component.blockData[offsetZ]) { - component.blockData[offsetZ] += sign * (readBit() << successive); - } - - break; - } - - k++; - } - - if (successiveACState === 4) { - eobrun--; - - if (eobrun === 0) { - successiveACState = 0; - } - } - } - - let blockRow = 0; - - function decodeMcu(component, decode, mcu, row, col) { - const mcuRow = mcu / mcusPerLine | 0; - const mcuCol = mcu % mcusPerLine; - blockRow = mcuRow * component.v + row; - const blockCol = mcuCol * component.h + col; - const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, blockOffset); - } - - function decodeBlock(component, decode, mcu) { - blockRow = mcu / component.blocksPerLine | 0; - const blockCol = mcu % component.blocksPerLine; - const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); - decode(component, blockOffset); - } - - const componentsLength = components.length; - let component, i, j, k, n; - let decodeFn; - - if (progressive) { - if (spectralStart === 0) { - decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; - } else { - decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; - } - } else { - decodeFn = decodeBaseline; - } - - let mcu = 0, - fileMarker; - let mcuExpected; - - if (componentsLength === 1) { - mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; - } else { - mcuExpected = mcusPerLine * frame.mcusPerColumn; - } - - let h, v; - - while (mcu <= mcuExpected) { - const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected; - - if (mcuToRead > 0) { - for (i = 0; i < componentsLength; i++) { - components[i].pred = 0; - } - - eobrun = 0; - - if (componentsLength === 1) { - component = components[0]; - - for (n = 0; n < mcuToRead; n++) { - decodeBlock(component, decodeFn, mcu); - mcu++; - } - } else { - for (n = 0; n < mcuToRead; n++) { - for (i = 0; i < componentsLength; i++) { - component = components[i]; - h = component.h; - v = component.v; - - for (j = 0; j < v; j++) { - for (k = 0; k < h; k++) { - decodeMcu(component, decodeFn, mcu, j, k); - } - } - } - - mcu++; - } - } - } - - bitsCount = 0; - fileMarker = findNextFileMarker(data, offset); - - if (!fileMarker) { - break; - } - - if (fileMarker.invalid) { - const partialMsg = mcuToRead > 0 ? "unexpected" : "excessive"; - (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`); - offset = fileMarker.offset; - } - - if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) { - offset += 2; - } else { - break; - } - } - - return offset - startOffset; -} - -function quantizeAndInverse(component, blockBufferOffset, p) { - const qt = component.quantizationTable, - blockData = component.blockData; - let v0, v1, v2, v3, v4, v5, v6, v7; - let p0, p1, p2, p3, p4, p5, p6, p7; - let t; - - if (!qt) { - throw new JpegError("missing required Quantization Table."); - } - - for (let row = 0; row < 64; row += 8) { - p0 = blockData[blockBufferOffset + row]; - p1 = blockData[blockBufferOffset + row + 1]; - p2 = blockData[blockBufferOffset + row + 2]; - p3 = blockData[blockBufferOffset + row + 3]; - p4 = blockData[blockBufferOffset + row + 4]; - p5 = blockData[blockBufferOffset + row + 5]; - p6 = blockData[blockBufferOffset + row + 6]; - p7 = blockData[blockBufferOffset + row + 7]; - p0 *= qt[row]; - - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = dctSqrt2 * p0 + 512 >> 10; - p[row] = t; - p[row + 1] = t; - p[row + 2] = t; - p[row + 3] = t; - p[row + 4] = t; - p[row + 5] = t; - p[row + 6] = t; - p[row + 7] = t; - continue; - } - - p1 *= qt[row + 1]; - p2 *= qt[row + 2]; - p3 *= qt[row + 3]; - p4 *= qt[row + 4]; - p5 *= qt[row + 5]; - p6 *= qt[row + 6]; - p7 *= qt[row + 7]; - v0 = dctSqrt2 * p0 + 128 >> 8; - v1 = dctSqrt2 * p4 + 128 >> 8; - v2 = p2; - v3 = p6; - v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8; - v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8; - v5 = p3 << 4; - v6 = p5 << 4; - v0 = v0 + v1 + 1 >> 1; - v1 = v0 - v1; - t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8; - v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8; - v3 = t; - v4 = v4 + v6 + 1 >> 1; - v6 = v4 - v6; - v7 = v7 + v5 + 1 >> 1; - v5 = v7 - v5; - v0 = v0 + v3 + 1 >> 1; - v3 = v0 - v3; - v1 = v1 + v2 + 1 >> 1; - v2 = v1 - v2; - t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; - v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; - v7 = t; - t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; - v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; - v6 = t; - p[row] = v0 + v7; - p[row + 7] = v0 - v7; - p[row + 1] = v1 + v6; - p[row + 6] = v1 - v6; - p[row + 2] = v2 + v5; - p[row + 5] = v2 - v5; - p[row + 3] = v3 + v4; - p[row + 4] = v3 - v4; - } - - for (let col = 0; col < 8; ++col) { - p0 = p[col]; - p1 = p[col + 8]; - p2 = p[col + 16]; - p3 = p[col + 24]; - p4 = p[col + 32]; - p5 = p[col + 40]; - p6 = p[col + 48]; - p7 = p[col + 56]; - - if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { - t = dctSqrt2 * p0 + 8192 >> 14; - - if (t < -2040) { - t = 0; - } else if (t >= 2024) { - t = 255; - } else { - t = t + 2056 >> 4; - } - - blockData[blockBufferOffset + col] = t; - blockData[blockBufferOffset + col + 8] = t; - blockData[blockBufferOffset + col + 16] = t; - blockData[blockBufferOffset + col + 24] = t; - blockData[blockBufferOffset + col + 32] = t; - blockData[blockBufferOffset + col + 40] = t; - blockData[blockBufferOffset + col + 48] = t; - blockData[blockBufferOffset + col + 56] = t; - continue; - } - - v0 = dctSqrt2 * p0 + 2048 >> 12; - v1 = dctSqrt2 * p4 + 2048 >> 12; - v2 = p2; - v3 = p6; - v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12; - v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12; - v5 = p3; - v6 = p5; - v0 = (v0 + v1 + 1 >> 1) + 4112; - v1 = v0 - v1; - t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12; - v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12; - v3 = t; - v4 = v4 + v6 + 1 >> 1; - v6 = v4 - v6; - v7 = v7 + v5 + 1 >> 1; - v5 = v7 - v5; - v0 = v0 + v3 + 1 >> 1; - v3 = v0 - v3; - v1 = v1 + v2 + 1 >> 1; - v2 = v1 - v2; - t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; - v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; - v7 = t; - t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; - v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; - v6 = t; - p0 = v0 + v7; - p7 = v0 - v7; - p1 = v1 + v6; - p6 = v1 - v6; - p2 = v2 + v5; - p5 = v2 - v5; - p3 = v3 + v4; - p4 = v3 - v4; - - if (p0 < 16) { - p0 = 0; - } else if (p0 >= 4080) { - p0 = 255; - } else { - p0 >>= 4; - } - - if (p1 < 16) { - p1 = 0; - } else if (p1 >= 4080) { - p1 = 255; - } else { - p1 >>= 4; - } - - if (p2 < 16) { - p2 = 0; - } else if (p2 >= 4080) { - p2 = 255; - } else { - p2 >>= 4; - } - - if (p3 < 16) { - p3 = 0; - } else if (p3 >= 4080) { - p3 = 255; - } else { - p3 >>= 4; - } - - if (p4 < 16) { - p4 = 0; - } else if (p4 >= 4080) { - p4 = 255; - } else { - p4 >>= 4; - } - - if (p5 < 16) { - p5 = 0; - } else if (p5 >= 4080) { - p5 = 255; - } else { - p5 >>= 4; - } - - if (p6 < 16) { - p6 = 0; - } else if (p6 >= 4080) { - p6 = 255; - } else { - p6 >>= 4; - } - - if (p7 < 16) { - p7 = 0; - } else if (p7 >= 4080) { - p7 = 255; - } else { - p7 >>= 4; - } - - blockData[blockBufferOffset + col] = p0; - blockData[blockBufferOffset + col + 8] = p1; - blockData[blockBufferOffset + col + 16] = p2; - blockData[blockBufferOffset + col + 24] = p3; - blockData[blockBufferOffset + col + 32] = p4; - blockData[blockBufferOffset + col + 40] = p5; - blockData[blockBufferOffset + col + 48] = p6; - blockData[blockBufferOffset + col + 56] = p7; - } -} - -function buildComponentData(frame, component) { - const blocksPerLine = component.blocksPerLine; - const blocksPerColumn = component.blocksPerColumn; - const computationBuffer = new Int16Array(64); - - for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) { - for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) { - const offset = getBlockBufferOffset(component, blockRow, blockCol); - quantizeAndInverse(component, offset, computationBuffer); - } - } - - return component.blockData; -} - -function findNextFileMarker(data, currentPos, startPos = currentPos) { - const maxPos = data.length - 1; - let newPos = startPos < currentPos ? startPos : currentPos; - - if (currentPos >= maxPos) { - return null; - } - - const currentMarker = (0, _core_utils.readUint16)(data, currentPos); - - if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) { - return { - invalid: null, - marker: currentMarker, - offset: currentPos - }; - } - - let newMarker = (0, _core_utils.readUint16)(data, newPos); - - while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) { - if (++newPos >= maxPos) { - return null; - } - - newMarker = (0, _core_utils.readUint16)(data, newPos); - } - - return { - invalid: currentMarker.toString(16), - marker: newMarker, - offset: newPos - }; -} - -class JpegImage { - constructor({ - decodeTransform = null, - colorTransform = -1 - } = {}) { - this._decodeTransform = decodeTransform; - this._colorTransform = colorTransform; - } - - parse(data, { - dnlScanLines = null - } = {}) { - function readDataBlock() { - const length = (0, _core_utils.readUint16)(data, offset); - offset += 2; - let endOffset = offset + length - 2; - const fileMarker = findNextFileMarker(data, endOffset, offset); - - if (fileMarker && fileMarker.invalid) { - (0, _util.warn)("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid); - endOffset = fileMarker.offset; - } - - const array = data.subarray(offset, endOffset); - offset += array.length; - return array; - } - - function prepareComponents(frame) { - const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); - const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); - - for (let i = 0, ii = frame.components.length; i < ii; i++) { - const component = frame.components[i]; - const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH); - const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV); - const blocksPerLineForMcu = mcusPerLine * component.h; - const blocksPerColumnForMcu = mcusPerColumn * component.v; - const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1); - component.blockData = new Int16Array(blocksBufferSize); - component.blocksPerLine = blocksPerLine; - component.blocksPerColumn = blocksPerColumn; - } - - frame.mcusPerLine = mcusPerLine; - frame.mcusPerColumn = mcusPerColumn; - } - - let offset = 0; - let jfif = null; - let adobe = null; - let frame, resetInterval; - let numSOSMarkers = 0; - const quantizationTables = []; - const huffmanTablesAC = [], - huffmanTablesDC = []; - let fileMarker = (0, _core_utils.readUint16)(data, offset); - offset += 2; - - if (fileMarker !== 0xffd8) { - throw new JpegError("SOI not found"); - } - - fileMarker = (0, _core_utils.readUint16)(data, offset); - offset += 2; - - markerLoop: while (fileMarker !== 0xffd9) { - let i, j, l; - - switch (fileMarker) { - case 0xffe0: - case 0xffe1: - case 0xffe2: - case 0xffe3: - case 0xffe4: - case 0xffe5: - case 0xffe6: - case 0xffe7: - case 0xffe8: - case 0xffe9: - case 0xffea: - case 0xffeb: - case 0xffec: - case 0xffed: - case 0xffee: - case 0xffef: - case 0xfffe: - const appData = readDataBlock(); - - if (fileMarker === 0xffe0) { - if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) { - jfif = { - version: { - major: appData[5], - minor: appData[6] - }, - densityUnits: appData[7], - xDensity: appData[8] << 8 | appData[9], - yDensity: appData[10] << 8 | appData[11], - thumbWidth: appData[12], - thumbHeight: appData[13], - thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) - }; - } - } - - if (fileMarker === 0xffee) { - if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) { - adobe = { - version: appData[5] << 8 | appData[6], - flags0: appData[7] << 8 | appData[8], - flags1: appData[9] << 8 | appData[10], - transformCode: appData[11] - }; - } - } - - break; - - case 0xffdb: - const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset); - offset += 2; - const quantizationTablesEnd = quantizationTablesLength + offset - 2; - let z; - - while (offset < quantizationTablesEnd) { - const quantizationTableSpec = data[offset++]; - const tableData = new Uint16Array(64); - - if (quantizationTableSpec >> 4 === 0) { - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = data[offset++]; - } - } else if (quantizationTableSpec >> 4 === 1) { - for (j = 0; j < 64; j++) { - z = dctZigZag[j]; - tableData[z] = (0, _core_utils.readUint16)(data, offset); - offset += 2; - } - } else { - throw new JpegError("DQT - invalid table spec"); - } - - quantizationTables[quantizationTableSpec & 15] = tableData; - } - - break; - - case 0xffc0: - case 0xffc1: - case 0xffc2: - if (frame) { - throw new JpegError("Only single frame JPEGs supported"); - } - - offset += 2; - frame = {}; - frame.extended = fileMarker === 0xffc1; - frame.progressive = fileMarker === 0xffc2; - frame.precision = data[offset++]; - const sofScanLines = (0, _core_utils.readUint16)(data, offset); - offset += 2; - frame.scanLines = dnlScanLines || sofScanLines; - frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset); - offset += 2; - frame.components = []; - frame.componentIds = {}; - const componentsCount = data[offset++]; - let maxH = 0, - maxV = 0; - - for (i = 0; i < componentsCount; i++) { - const componentId = data[offset]; - const h = data[offset + 1] >> 4; - const v = data[offset + 1] & 15; - - if (maxH < h) { - maxH = h; - } - - if (maxV < v) { - maxV = v; - } - - const qId = data[offset + 2]; - l = frame.components.push({ - h, - v, - quantizationId: qId, - quantizationTable: null - }); - frame.componentIds[componentId] = l - 1; - offset += 3; - } - - frame.maxH = maxH; - frame.maxV = maxV; - prepareComponents(frame); - break; - - case 0xffc4: - const huffmanLength = (0, _core_utils.readUint16)(data, offset); - offset += 2; - - for (i = 2; i < huffmanLength;) { - const huffmanTableSpec = data[offset++]; - const codeLengths = new Uint8Array(16); - let codeLengthSum = 0; - - for (j = 0; j < 16; j++, offset++) { - codeLengthSum += codeLengths[j] = data[offset]; - } - - const huffmanValues = new Uint8Array(codeLengthSum); - - for (j = 0; j < codeLengthSum; j++, offset++) { - huffmanValues[j] = data[offset]; - } - - i += 17 + codeLengthSum; - (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues); - } - - break; - - case 0xffdd: - offset += 2; - resetInterval = (0, _core_utils.readUint16)(data, offset); - offset += 2; - break; - - case 0xffda: - const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines; - offset += 2; - const selectorsCount = data[offset++], - components = []; - - for (i = 0; i < selectorsCount; i++) { - const index = data[offset++]; - const componentIndex = frame.componentIds[index]; - const component = frame.components[componentIndex]; - component.index = index; - const tableSpec = data[offset++]; - component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; - component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; - components.push(component); - } - - const spectralStart = data[offset++], - spectralEnd = data[offset++], - successiveApproximation = data[offset++]; - - try { - const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker); - offset += processed; - } catch (ex) { - if (ex instanceof DNLMarkerError) { - (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`); - return this.parse(data, { - dnlScanLines: ex.scanLines - }); - } else if (ex instanceof EOIMarkerError) { - (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`); - break markerLoop; - } - - throw ex; - } - - break; - - case 0xffdc: - offset += 4; - break; - - case 0xffff: - if (data[offset] !== 0xff) { - offset--; - } - - break; - - default: - const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3); - - if (nextFileMarker && nextFileMarker.invalid) { - (0, _util.warn)("JpegImage.parse - unexpected data, current marker is: " + nextFileMarker.invalid); - offset = nextFileMarker.offset; - break; - } - - 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; - } - - throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16)); - } - - fileMarker = (0, _core_utils.readUint16)(data, offset); - offset += 2; - } - - this.width = frame.samplesPerLine; - this.height = frame.scanLines; - this.jfif = jfif; - this.adobe = adobe; - this.components = []; - - for (let i = 0, ii = frame.components.length; i < ii; i++) { - const component = frame.components[i]; - const quantizationTable = quantizationTables[component.quantizationId]; - - if (quantizationTable) { - component.quantizationTable = quantizationTable; - } - - this.components.push({ - index: component.index, - output: buildComponentData(frame, component), - scaleX: component.h / frame.maxH, - scaleY: component.v / frame.maxV, - blocksPerLine: component.blocksPerLine, - blocksPerColumn: component.blocksPerColumn - }); - } - - this.numComponents = this.components.length; - return undefined; - } - - _getLinearizedBlockData(width, height, isSourcePDF = false) { - const scaleX = this.width / width, - scaleY = this.height / height; - let component, componentScaleX, componentScaleY, blocksPerScanline; - let x, y, i, j, k; - let index; - let offset = 0; - let output; - const numComponents = this.components.length; - const dataLength = width * height * numComponents; - const data = new Uint8ClampedArray(dataLength); - const xScaleBlockOffset = new Uint32Array(width); - const mask3LSB = 0xfffffff8; - let lastComponentScaleX; - - for (i = 0; i < numComponents; i++) { - component = this.components[i]; - componentScaleX = component.scaleX * scaleX; - componentScaleY = component.scaleY * scaleY; - offset = i; - output = component.output; - blocksPerScanline = component.blocksPerLine + 1 << 3; - - if (componentScaleX !== lastComponentScaleX) { - for (x = 0; x < width; x++) { - j = 0 | x * componentScaleX; - xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7; - } - - lastComponentScaleX = componentScaleX; - } - - for (y = 0; y < height; y++) { - j = 0 | y * componentScaleY; - index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3; - - for (x = 0; x < width; x++) { - data[offset] = output[index + xScaleBlockOffset[x]]; - offset += numComponents; - } - } - } - - let transform = this._decodeTransform; - - if (!isSourcePDF && numComponents === 4 && !transform) { - transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]); - } - - if (transform) { - for (i = 0; i < dataLength;) { - for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { - data[i] = (data[i] * transform[k] >> 8) + transform[k + 1]; - } - } - } - - return data; - } - - get _isColorConversionNeeded() { - if (this.adobe) { - return !!this.adobe.transformCode; - } - - if (this.numComponents === 3) { - if (this._colorTransform === 0) { - return false; - } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) { - return false; - } - - return true; - } - - if (this._colorTransform === 1) { - return true; - } - - return false; - } - - _convertYccToRgb(data) { - let Y, Cb, Cr; - - for (let i = 0, length = data.length; i < length; i += 3) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i] = Y - 179.456 + 1.402 * Cr; - data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr; - data[i + 2] = Y - 226.816 + 1.772 * Cb; - } - - return data; - } - - _convertYcckToRgb(data) { - let Y, Cb, Cr, k; - let offset = 0; - - for (let i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - k = data[i + 3]; - data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776); - data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665); - data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407); - } - - return data.subarray(0, offset); - } - - _convertYcckToCmyk(data) { - let Y, Cb, Cr; - - for (let i = 0, length = data.length; i < length; i += 4) { - Y = data[i]; - Cb = data[i + 1]; - Cr = data[i + 2]; - data[i] = 434.456 - Y - 1.402 * Cr; - data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr; - data[i + 2] = 481.816 - Y - 1.772 * Cb; - } - - return data; - } - - _convertCmykToRgb(data) { - let c, m, y, k; - let offset = 0; - - for (let i = 0, length = data.length; i < length; i += 4) { - c = data[i]; - m = data[i + 1]; - y = data[i + 2]; - k = data[i + 3]; - data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254); - data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168); - data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144); - } - - return data.subarray(0, offset); - } - - getData({ - width, - height, - forceRGB = false, - isSourcePDF = false - }) { - if (this.numComponents > 4) { - throw new JpegError("Unsupported color mode"); - } - - const data = this._getLinearizedBlockData(width, height, isSourcePDF); - - if (this.numComponents === 1 && forceRGB) { - const dataLength = data.length; - const rgbData = new Uint8ClampedArray(dataLength * 3); - let offset = 0; - - for (let i = 0; i < dataLength; i++) { - const grayColor = data[i]; - rgbData[offset++] = grayColor; - rgbData[offset++] = grayColor; - rgbData[offset++] = grayColor; - } - - return rgbData; - } else if (this.numComponents === 3 && this._isColorConversionNeeded) { - return this._convertYccToRgb(data); - } else if (this.numComponents === 4) { - if (this._isColorConversionNeeded) { - if (forceRGB) { - return this._convertYcckToRgb(data); - } - - return this._convertYcckToCmyk(data); - } else if (forceRGB) { - return this._convertCmykToRgb(data); - } - } - - return data; - } - -} - -exports.JpegImage = JpegImage; - -/***/ }), -/* 39 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.JpxStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -var _jpx = __w_pdfjs_require__(40); - -var _util = __w_pdfjs_require__(2); - -class JpxStream extends _decode_stream.DecodeStream { - constructor(stream, maybeLength, params) { - super(maybeLength); - this.stream = stream; - this.dict = stream.dict; - this.maybeLength = maybeLength; - this.params = params; - } - - get bytes() { - return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); - } - - ensureBuffer(requested) {} - - readBlock() { - if (this.eof) { - return; - } - - const jpxImage = new _jpx.JpxImage(); - jpxImage.parse(this.bytes); - const width = jpxImage.width; - const height = jpxImage.height; - const componentsCount = jpxImage.componentsCount; - const tileCount = jpxImage.tiles.length; - - if (tileCount === 1) { - this.buffer = jpxImage.tiles[0].items; - } else { - const data = new Uint8ClampedArray(width * height * componentsCount); - - for (let k = 0; k < tileCount; k++) { - const tileComponents = jpxImage.tiles[k]; - const tileWidth = tileComponents.width; - const tileHeight = tileComponents.height; - const tileLeft = tileComponents.left; - const tileTop = tileComponents.top; - const src = tileComponents.items; - let srcPosition = 0; - let dataPosition = (width * tileTop + tileLeft) * componentsCount; - const imgRowSize = width * componentsCount; - const tileRowSize = tileWidth * componentsCount; - - for (let j = 0; j < tileHeight; j++) { - const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize); - data.set(rowBytes, dataPosition); - srcPosition += tileRowSize; - dataPosition += imgRowSize; - } - } - - this.buffer = data; - } - - this.bufferLength = this.buffer.length; - this.eof = true; - } - -} - -exports.JpxStream = JpxStream; - -/***/ }), -/* 40 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.JpxImage = void 0; - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -var _arithmetic_decoder = __w_pdfjs_require__(36); - -class JpxError extends _util.BaseException { - constructor(msg) { - super(`JPX error: ${msg}`, "JpxError"); - } - -} - -const SubbandsGainLog2 = { - LL: 0, - LH: 1, - HL: 1, - HH: 2 -}; - -class JpxImage { - constructor() { - this.failOnCorruptedImage = false; - } - - parse(data) { - const head = (0, _core_utils.readUint16)(data, 0); - - if (head === 0xff4f) { - this.parseCodestream(data, 0, data.length); - return; - } - - const length = data.length; - let position = 0; - - while (position < length) { - let headerSize = 8; - let lbox = (0, _core_utils.readUint32)(data, position); - const tbox = (0, _core_utils.readUint32)(data, position + 4); - position += headerSize; - - if (lbox === 1) { - lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4); - position += 8; - headerSize += 8; - } - - if (lbox === 0) { - lbox = length - position + headerSize; - } - - if (lbox < headerSize) { - throw new JpxError("Invalid box field size"); - } - - const dataLength = lbox - headerSize; - let jumpDataLength = true; - - switch (tbox) { - case 0x6a703268: - jumpDataLength = false; - break; - - case 0x636f6c72: - const method = data[position]; - - if (method === 1) { - const colorspace = (0, _core_utils.readUint32)(data, position + 3); - - switch (colorspace) { - case 16: - case 17: - case 18: - break; - - default: - (0, _util.warn)("Unknown colorspace " + colorspace); - break; - } - } else if (method === 2) { - (0, _util.info)("ICC profile not supported"); - } - - break; - - case 0x6a703263: - this.parseCodestream(data, position, position + dataLength); - break; - - case 0x6a502020: - if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) { - (0, _util.warn)("Invalid JP2 signature"); - } - - break; - - case 0x6a501a1a: - case 0x66747970: - case 0x72726571: - case 0x72657320: - case 0x69686472: - break; - - default: - const headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, tbox & 0xff); - (0, _util.warn)(`Unsupported header type ${tbox} (${headerType}).`); - break; - } - - if (jumpDataLength) { - position += dataLength; - } - } - } - - parseImageProperties(stream) { - let newByte = stream.getByte(); - - while (newByte >= 0) { - const oldByte = newByte; - newByte = stream.getByte(); - const code = oldByte << 8 | newByte; - - if (code === 0xff51) { - stream.skip(4); - const Xsiz = stream.getInt32() >>> 0; - const Ysiz = stream.getInt32() >>> 0; - const XOsiz = stream.getInt32() >>> 0; - const YOsiz = stream.getInt32() >>> 0; - stream.skip(16); - const Csiz = stream.getUint16(); - this.width = Xsiz - XOsiz; - this.height = Ysiz - YOsiz; - this.componentsCount = Csiz; - this.bitsPerComponent = 8; - return; - } - } - - throw new JpxError("No size marker found in JPX stream"); - } - - parseCodestream(data, start, end) { - const context = {}; - let doNotRecover = false; - - try { - let position = start; - - while (position + 1 < end) { - const code = (0, _core_utils.readUint16)(data, position); - position += 2; - let length = 0, - j, - sqcd, - spqcds, - spqcdSize, - scalarExpounded, - tile; - - switch (code) { - case 0xff4f: - context.mainHeader = true; - break; - - case 0xffd9: - break; - - case 0xff51: - length = (0, _core_utils.readUint16)(data, position); - const siz = {}; - siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4); - siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8); - siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12); - siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16); - siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20); - siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24); - siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28); - siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32); - const componentsCount = (0, _core_utils.readUint16)(data, position + 36); - siz.Csiz = componentsCount; - const components = []; - j = position + 38; - - for (let i = 0; i < componentsCount; i++) { - const component = { - precision: (data[j] & 0x7f) + 1, - isSigned: !!(data[j] & 0x80), - XRsiz: data[j + 1], - YRsiz: data[j + 2] - }; - j += 3; - calculateComponentDimensions(component, siz); - components.push(component); - } - - context.SIZ = siz; - context.components = components; - calculateTileGrids(context, components); - context.QCC = []; - context.COC = []; - break; - - case 0xff5c: - length = (0, _core_utils.readUint16)(data, position); - const qcd = {}; - j = position + 2; - sqcd = data[j++]; - - switch (sqcd & 0x1f) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; - - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; - - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; - - default: - throw new Error("Invalid SQcd value " + sqcd); - } - - qcd.noQuantization = spqcdSize === 8; - qcd.scalarExpounded = scalarExpounded; - qcd.guardBits = sqcd >> 5; - spqcds = []; - - while (j < length + position) { - const spqcd = {}; - - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; - j += 2; - } - - spqcds.push(spqcd); - } - - qcd.SPqcds = spqcds; - - if (context.mainHeader) { - context.QCD = qcd; - } else { - context.currentTile.QCD = qcd; - context.currentTile.QCC = []; - } - - break; - - case 0xff5d: - length = (0, _core_utils.readUint16)(data, position); - const qcc = {}; - j = position + 2; - let cqcc; - - if (context.SIZ.Csiz < 257) { - cqcc = data[j++]; - } else { - cqcc = (0, _core_utils.readUint16)(data, j); - j += 2; - } - - sqcd = data[j++]; - - switch (sqcd & 0x1f) { - case 0: - spqcdSize = 8; - scalarExpounded = true; - break; - - case 1: - spqcdSize = 16; - scalarExpounded = false; - break; - - case 2: - spqcdSize = 16; - scalarExpounded = true; - break; - - default: - throw new Error("Invalid SQcd value " + sqcd); - } - - qcc.noQuantization = spqcdSize === 8; - qcc.scalarExpounded = scalarExpounded; - qcc.guardBits = sqcd >> 5; - spqcds = []; - - while (j < length + position) { - const spqcd = {}; - - if (spqcdSize === 8) { - spqcd.epsilon = data[j++] >> 3; - spqcd.mu = 0; - } else { - spqcd.epsilon = data[j] >> 3; - spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; - j += 2; - } - - spqcds.push(spqcd); - } - - qcc.SPqcds = spqcds; - - if (context.mainHeader) { - context.QCC[cqcc] = qcc; - } else { - context.currentTile.QCC[cqcc] = qcc; - } - - break; - - case 0xff52: - length = (0, _core_utils.readUint16)(data, position); - const cod = {}; - j = position + 2; - const scod = data[j++]; - cod.entropyCoderWithCustomPrecincts = !!(scod & 1); - cod.sopMarkerUsed = !!(scod & 2); - cod.ephMarkerUsed = !!(scod & 4); - cod.progressionOrder = data[j++]; - cod.layersCount = (0, _core_utils.readUint16)(data, j); - j += 2; - cod.multipleComponentTransform = data[j++]; - cod.decompositionLevelsCount = data[j++]; - cod.xcb = (data[j++] & 0xf) + 2; - cod.ycb = (data[j++] & 0xf) + 2; - const blockStyle = data[j++]; - cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1); - cod.resetContextProbabilities = !!(blockStyle & 2); - cod.terminationOnEachCodingPass = !!(blockStyle & 4); - cod.verticallyStripe = !!(blockStyle & 8); - cod.predictableTermination = !!(blockStyle & 16); - cod.segmentationSymbolUsed = !!(blockStyle & 32); - cod.reversibleTransformation = data[j++]; - - if (cod.entropyCoderWithCustomPrecincts) { - const precinctsSizes = []; - - while (j < length + position) { - const precinctsSize = data[j++]; - precinctsSizes.push({ - PPx: precinctsSize & 0xf, - PPy: precinctsSize >> 4 - }); - } - - cod.precinctsSizes = precinctsSizes; - } - - const unsupported = []; - - if (cod.selectiveArithmeticCodingBypass) { - unsupported.push("selectiveArithmeticCodingBypass"); - } - - if (cod.terminationOnEachCodingPass) { - unsupported.push("terminationOnEachCodingPass"); - } - - if (cod.verticallyStripe) { - unsupported.push("verticallyStripe"); - } - - if (cod.predictableTermination) { - unsupported.push("predictableTermination"); - } - - if (unsupported.length > 0) { - doNotRecover = true; - (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(", ")}).`); - } - - if (context.mainHeader) { - context.COD = cod; - } else { - context.currentTile.COD = cod; - context.currentTile.COC = []; - } - - break; - - case 0xff90: - length = (0, _core_utils.readUint16)(data, position); - tile = {}; - tile.index = (0, _core_utils.readUint16)(data, position + 2); - tile.length = (0, _core_utils.readUint32)(data, position + 4); - tile.dataEnd = tile.length + position - 2; - tile.partIndex = data[position + 8]; - tile.partsCount = data[position + 9]; - context.mainHeader = false; - - if (tile.partIndex === 0) { - tile.COD = context.COD; - tile.COC = context.COC.slice(0); - tile.QCD = context.QCD; - tile.QCC = context.QCC.slice(0); - } - - context.currentTile = tile; - break; - - case 0xff93: - tile = context.currentTile; - - if (tile.partIndex === 0) { - initializeTile(context, tile.index); - buildPackets(context); - } - - length = tile.dataEnd - position; - 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: - case 0xff64: - length = (0, _core_utils.readUint16)(data, position); - break; - - default: - throw new Error("Unknown codestream code: " + code.toString(16)); - } - - position += length; - } - } catch (e) { - if (doNotRecover || this.failOnCorruptedImage) { - throw new JpxError(e.message); - } else { - (0, _util.warn)(`JPX: Trying to recover from: "${e.message}".`); - } - } - - this.tiles = transformComponents(context); - this.width = context.SIZ.Xsiz - context.SIZ.XOsiz; - this.height = context.SIZ.Ysiz - context.SIZ.YOsiz; - this.componentsCount = context.SIZ.Csiz; - } - -} - -exports.JpxImage = JpxImage; - -function calculateComponentDimensions(component, siz) { - component.x0 = Math.ceil(siz.XOsiz / component.XRsiz); - component.x1 = Math.ceil(siz.Xsiz / component.XRsiz); - component.y0 = Math.ceil(siz.YOsiz / component.YRsiz); - component.y1 = Math.ceil(siz.Ysiz / component.YRsiz); - component.width = component.x1 - component.x0; - component.height = component.y1 - component.y0; -} - -function calculateTileGrids(context, components) { - const siz = context.SIZ; - const tiles = []; - let tile; - const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz); - const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz); - - for (let q = 0; q < numYtiles; q++) { - for (let p = 0; p < numXtiles; p++) { - tile = {}; - tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz); - tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz); - tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz); - tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz); - tile.width = tile.tx1 - tile.tx0; - tile.height = tile.ty1 - tile.ty0; - tile.components = []; - tiles.push(tile); - } - } - - context.tiles = tiles; - const componentsCount = siz.Csiz; - - for (let i = 0, ii = componentsCount; i < ii; i++) { - const component = components[i]; - - for (let j = 0, jj = tiles.length; j < jj; j++) { - const tileComponent = {}; - tile = tiles[j]; - tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz); - tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz); - tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz); - tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz); - tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0; - tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0; - tile.components[i] = tileComponent; - } - } -} - -function getBlocksDimensions(context, component, r) { - const codOrCoc = component.codingStyleParameters; - const result = {}; - - if (!codOrCoc.entropyCoderWithCustomPrecincts) { - result.PPx = 15; - result.PPy = 15; - } else { - result.PPx = codOrCoc.precinctsSizes[r].PPx; - result.PPy = codOrCoc.precinctsSizes[r].PPy; - } - - result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx); - result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy); - return result; -} - -function buildPrecincts(context, resolution, dimensions) { - const precinctWidth = 1 << dimensions.PPx; - const precinctHeight = 1 << dimensions.PPy; - const isZeroRes = resolution.resLevel === 0; - const precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1); - const precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1); - const numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0; - const numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0; - const numprecincts = numprecinctswide * numprecinctshigh; - resolution.precinctParameters = { - precinctWidth, - precinctHeight, - numprecinctswide, - numprecinctshigh, - numprecincts, - precinctWidthInSubband, - precinctHeightInSubband - }; -} - -function buildCodeblocks(context, subband, dimensions) { - const xcb_ = dimensions.xcb_; - const ycb_ = dimensions.ycb_; - const codeblockWidth = 1 << xcb_; - const codeblockHeight = 1 << ycb_; - const cbx0 = subband.tbx0 >> xcb_; - const cby0 = subband.tby0 >> ycb_; - const cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_; - const cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_; - const precinctParameters = subband.resolution.precinctParameters; - const codeblocks = []; - const precincts = []; - let i, j, codeblock, precinctNumber; - - for (j = cby0; j < cby1; j++) { - for (i = cbx0; i < cbx1; i++) { - codeblock = { - cbx: i, - cby: j, - tbx0: codeblockWidth * i, - tby0: codeblockHeight * j, - tbx1: codeblockWidth * (i + 1), - tby1: codeblockHeight * (j + 1) - }; - codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0); - codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0); - codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1); - codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1); - const pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband); - const pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband); - precinctNumber = pi + pj * precinctParameters.numprecinctswide; - codeblock.precinctNumber = precinctNumber; - codeblock.subbandType = subband.type; - codeblock.Lblock = 3; - - if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) { - continue; - } - - codeblocks.push(codeblock); - let precinct = precincts[precinctNumber]; - - if (precinct !== undefined) { - if (i < precinct.cbxMin) { - precinct.cbxMin = i; - } else if (i > precinct.cbxMax) { - precinct.cbxMax = i; - } - - if (j < precinct.cbyMin) { - precinct.cbxMin = j; - } else if (j > precinct.cbyMax) { - precinct.cbyMax = j; - } - } else { - precincts[precinctNumber] = precinct = { - cbxMin: i, - cbyMin: j, - cbxMax: i, - cbyMax: j - }; - } - - codeblock.precinct = precinct; - } - } - - subband.codeblockParameters = { - codeblockWidth: xcb_, - codeblockHeight: ycb_, - numcodeblockwide: cbx1 - cbx0 + 1, - numcodeblockhigh: cby1 - cby0 + 1 - }; - subband.codeblocks = codeblocks; - subband.precincts = precincts; -} - -function createPacket(resolution, precinctNumber, layerNumber) { - const precinctCodeblocks = []; - const subbands = resolution.subbands; - - for (let i = 0, ii = subbands.length; i < ii; i++) { - const subband = subbands[i]; - const codeblocks = subband.codeblocks; - - for (let j = 0, jj = codeblocks.length; j < jj; j++) { - const codeblock = codeblocks[j]; - - if (codeblock.precinctNumber !== precinctNumber) { - continue; - } - - precinctCodeblocks.push(codeblock); - } - } - - return { - layerNumber, - codeblocks: precinctCodeblocks - }; -} - -function LayerResolutionComponentPositionIterator(context) { - const siz = context.SIZ; - const tileIndex = context.currentTile.index; - const tile = context.tiles[tileIndex]; - const layersCount = tile.codingStyleDefaultParameters.layersCount; - const componentsCount = siz.Csiz; - let maxDecompositionLevelsCount = 0; - - for (let q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); - } - - let l = 0, - r = 0, - i = 0, - k = 0; - - this.nextPacket = function JpxImage_nextPacket() { - for (; l < layersCount; l++) { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; i < componentsCount; i++) { - const component = tile.components[i]; - - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - const resolution = component.resolutions[r]; - const numprecincts = resolution.precinctParameters.numprecincts; - - for (; k < numprecincts;) { - const packet = createPacket(resolution, k, l); - k++; - return packet; - } - - k = 0; - } - - i = 0; - } - - r = 0; - } - - throw new JpxError("Out of packets"); - }; -} - -function ResolutionLayerComponentPositionIterator(context) { - const siz = context.SIZ; - const tileIndex = context.currentTile.index; - const tile = context.tiles[tileIndex]; - const layersCount = tile.codingStyleDefaultParameters.layersCount; - const componentsCount = siz.Csiz; - let maxDecompositionLevelsCount = 0; - - for (let q = 0; q < componentsCount; q++) { - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); - } - - let r = 0, - l = 0, - i = 0, - k = 0; - - this.nextPacket = function JpxImage_nextPacket() { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; l < layersCount; l++) { - for (; i < componentsCount; i++) { - const component = tile.components[i]; - - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - const resolution = component.resolutions[r]; - const numprecincts = resolution.precinctParameters.numprecincts; - - for (; k < numprecincts;) { - const packet = createPacket(resolution, k, l); - k++; - return packet; - } - - k = 0; - } - - i = 0; - } - - l = 0; - } - - throw new JpxError("Out of packets"); - }; -} - -function ResolutionPositionComponentLayerIterator(context) { - const siz = context.SIZ; - const tileIndex = context.currentTile.index; - const tile = context.tiles[tileIndex]; - const layersCount = tile.codingStyleDefaultParameters.layersCount; - const componentsCount = siz.Csiz; - let l, r, c, p; - let maxDecompositionLevelsCount = 0; - - for (c = 0; c < componentsCount; c++) { - const component = tile.components[c]; - maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount); - } - - const maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1); - - for (r = 0; r <= maxDecompositionLevelsCount; ++r) { - let maxNumPrecincts = 0; - - for (c = 0; c < componentsCount; ++c) { - const resolutions = tile.components[c].resolutions; - - if (r < resolutions.length) { - maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts); - } - } - - maxNumPrecinctsInLevel[r] = maxNumPrecincts; - } - - l = 0; - r = 0; - c = 0; - p = 0; - - this.nextPacket = function JpxImage_nextPacket() { - for (; r <= maxDecompositionLevelsCount; r++) { - for (; p < maxNumPrecinctsInLevel[r]; p++) { - for (; c < componentsCount; c++) { - const component = tile.components[c]; - - if (r > component.codingStyleParameters.decompositionLevelsCount) { - continue; - } - - const resolution = component.resolutions[r]; - const numprecincts = resolution.precinctParameters.numprecincts; - - if (p >= numprecincts) { - continue; - } - - for (; l < layersCount;) { - const packet = createPacket(resolution, p, l); - l++; - return packet; - } - - l = 0; - } - - c = 0; - } - - p = 0; - } - - throw new JpxError("Out of packets"); - }; -} - -function PositionComponentResolutionLayerIterator(context) { - const siz = context.SIZ; - const tileIndex = context.currentTile.index; - const tile = context.tiles[tileIndex]; - const layersCount = tile.codingStyleDefaultParameters.layersCount; - const componentsCount = siz.Csiz; - const precinctsSizes = getPrecinctSizesInImageScale(tile); - const precinctsIterationSizes = precinctsSizes; - let l = 0, - r = 0, - c = 0, - px = 0, - py = 0; - - this.nextPacket = function JpxImage_nextPacket() { - for (; py < precinctsIterationSizes.maxNumHigh; py++) { - for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; c < componentsCount; c++) { - const component = tile.components[c]; - const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - - for (; r <= decompositionLevelsCount; r++) { - const resolution = component.resolutions[r]; - const sizeInImageScale = precinctsSizes.components[c].resolutions[r]; - const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); - - if (k === null) { - continue; - } - - for (; l < layersCount;) { - const packet = createPacket(resolution, k, l); - l++; - return packet; - } - - l = 0; - } - - r = 0; - } - - c = 0; - } - - px = 0; - } - - throw new JpxError("Out of packets"); - }; -} - -function ComponentPositionResolutionLayerIterator(context) { - const siz = context.SIZ; - const tileIndex = context.currentTile.index; - const tile = context.tiles[tileIndex]; - const layersCount = tile.codingStyleDefaultParameters.layersCount; - const componentsCount = siz.Csiz; - const precinctsSizes = getPrecinctSizesInImageScale(tile); - let l = 0, - r = 0, - c = 0, - px = 0, - py = 0; - - this.nextPacket = function JpxImage_nextPacket() { - for (; c < componentsCount; ++c) { - const component = tile.components[c]; - const precinctsIterationSizes = precinctsSizes.components[c]; - const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - - for (; py < precinctsIterationSizes.maxNumHigh; py++) { - for (; px < precinctsIterationSizes.maxNumWide; px++) { - for (; r <= decompositionLevelsCount; r++) { - const resolution = component.resolutions[r]; - const sizeInImageScale = precinctsIterationSizes.resolutions[r]; - const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); - - if (k === null) { - continue; - } - - for (; l < layersCount;) { - const packet = createPacket(resolution, k, l); - l++; - return packet; - } - - l = 0; - } - - r = 0; - } - - px = 0; - } - - py = 0; - } - - throw new JpxError("Out of packets"); - }; -} - -function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) { - const posX = pxIndex * precinctIterationSizes.minWidth; - const posY = pyIndex * precinctIterationSizes.minHeight; - - if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) { - return null; - } - - const startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide; - return posX / sizeInImageScale.height + startPrecinctRowIndex; -} - -function getPrecinctSizesInImageScale(tile) { - const componentsCount = tile.components.length; - let minWidth = Number.MAX_VALUE; - let minHeight = Number.MAX_VALUE; - let maxNumWide = 0; - let maxNumHigh = 0; - const sizePerComponent = new Array(componentsCount); - - for (let c = 0; c < componentsCount; c++) { - const component = tile.components[c]; - const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - const sizePerResolution = new Array(decompositionLevelsCount + 1); - let minWidthCurrentComponent = Number.MAX_VALUE; - let minHeightCurrentComponent = Number.MAX_VALUE; - let maxNumWideCurrentComponent = 0; - let maxNumHighCurrentComponent = 0; - let scale = 1; - - for (let r = decompositionLevelsCount; r >= 0; --r) { - const resolution = component.resolutions[r]; - const widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth; - const heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight; - minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution); - minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution); - maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide); - maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh); - sizePerResolution[r] = { - width: widthCurrentResolution, - height: heightCurrentResolution - }; - scale <<= 1; - } - - minWidth = Math.min(minWidth, minWidthCurrentComponent); - minHeight = Math.min(minHeight, minHeightCurrentComponent); - maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent); - maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent); - sizePerComponent[c] = { - resolutions: sizePerResolution, - minWidth: minWidthCurrentComponent, - minHeight: minHeightCurrentComponent, - maxNumWide: maxNumWideCurrentComponent, - maxNumHigh: maxNumHighCurrentComponent - }; - } - - return { - components: sizePerComponent, - minWidth, - minHeight, - maxNumWide, - maxNumHigh - }; -} - -function buildPackets(context) { - const siz = context.SIZ; - const tileIndex = context.currentTile.index; - const tile = context.tiles[tileIndex]; - const componentsCount = siz.Csiz; - - for (let c = 0; c < componentsCount; c++) { - const component = tile.components[c]; - const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; - const resolutions = []; - const subbands = []; - - for (let r = 0; r <= decompositionLevelsCount; r++) { - const blocksDimensions = getBlocksDimensions(context, component, r); - const resolution = {}; - const scale = 1 << decompositionLevelsCount - r; - resolution.trx0 = Math.ceil(component.tcx0 / scale); - resolution.try0 = Math.ceil(component.tcy0 / scale); - resolution.trx1 = Math.ceil(component.tcx1 / scale); - resolution.try1 = Math.ceil(component.tcy1 / scale); - resolution.resLevel = r; - buildPrecincts(context, resolution, blocksDimensions); - resolutions.push(resolution); - let subband; - - if (r === 0) { - subband = {}; - subband.type = "LL"; - subband.tbx0 = Math.ceil(component.tcx0 / scale); - subband.tby0 = Math.ceil(component.tcy0 / scale); - subband.tbx1 = Math.ceil(component.tcx1 / scale); - subband.tby1 = Math.ceil(component.tcy1 / scale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolution.subbands = [subband]; - } else { - const bscale = 1 << decompositionLevelsCount - r + 1; - const resolutionSubbands = []; - subband = {}; - subband.type = "HL"; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - subband = {}; - subband.type = "LH"; - subband.tbx0 = Math.ceil(component.tcx0 / bscale); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - subband = {}; - subband.type = "HH"; - subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); - subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); - subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); - subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); - subband.resolution = resolution; - buildCodeblocks(context, subband, blocksDimensions); - subbands.push(subband); - resolutionSubbands.push(subband); - resolution.subbands = resolutionSubbands; - } - } - - component.resolutions = resolutions; - component.subbands = subbands; - } - - const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder; - - switch (progressionOrder) { - case 0: - tile.packetsIterator = new LayerResolutionComponentPositionIterator(context); - break; - - case 1: - tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context); - break; - - case 2: - tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context); - break; - - case 3: - tile.packetsIterator = new PositionComponentResolutionLayerIterator(context); - break; - - case 4: - tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context); - break; - - default: - throw new JpxError(`Unsupported progression order ${progressionOrder}`); - } -} - -function parseTilePackets(context, data, offset, dataLength) { - let position = 0; - let buffer, - bufferSize = 0, - skipNextBit = false; - - function readBits(count) { - while (bufferSize < count) { - const b = data[offset + position]; - position++; - - if (skipNextBit) { - buffer = buffer << 7 | b; - bufferSize += 7; - skipNextBit = false; - } else { - buffer = buffer << 8 | b; - bufferSize += 8; - } - - if (b === 0xff) { - skipNextBit = true; - } - } - - bufferSize -= count; - return buffer >>> bufferSize & (1 << count) - 1; - } - - function skipMarkerIfEqual(value) { - if (data[offset + position - 1] === 0xff && data[offset + position] === value) { - skipBytes(1); - return true; - } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) { - skipBytes(2); - return true; - } - - return false; - } - - function skipBytes(count) { - position += count; - } - - function alignToByte() { - bufferSize = 0; - - if (skipNextBit) { - position++; - skipNextBit = false; - } - } - - function readCodingpasses() { - if (readBits(1) === 0) { - return 1; - } - - if (readBits(1) === 0) { - return 2; - } - - let value = readBits(2); - - if (value < 3) { - return value + 3; - } - - value = readBits(5); - - if (value < 31) { - return value + 6; - } - - value = readBits(7); - return value + 37; - } - - const tileIndex = context.currentTile.index; - const tile = context.tiles[tileIndex]; - const sopMarkerUsed = context.COD.sopMarkerUsed; - const ephMarkerUsed = context.COD.ephMarkerUsed; - const packetsIterator = tile.packetsIterator; - - while (position < dataLength) { - alignToByte(); - - if (sopMarkerUsed && skipMarkerIfEqual(0x91)) { - skipBytes(4); - } - - const packet = packetsIterator.nextPacket(); - - if (!readBits(1)) { - continue; - } - - const layerNumber = packet.layerNumber, - queue = []; - let codeblock; - - for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) { - codeblock = packet.codeblocks[i]; - let precinct = codeblock.precinct; - const codeblockColumn = codeblock.cbx - precinct.cbxMin; - const codeblockRow = codeblock.cby - precinct.cbyMin; - let codeblockIncluded = false; - let firstTimeInclusion = false; - let valueReady, zeroBitPlanesTree; - - if (codeblock.included !== undefined) { - codeblockIncluded = !!readBits(1); - } else { - precinct = codeblock.precinct; - let inclusionTree; - - if (precinct.inclusionTree !== undefined) { - inclusionTree = precinct.inclusionTree; - } else { - const width = precinct.cbxMax - precinct.cbxMin + 1; - const height = precinct.cbyMax - precinct.cbyMin + 1; - inclusionTree = new InclusionTree(width, height, layerNumber); - zeroBitPlanesTree = new TagTree(width, height); - precinct.inclusionTree = inclusionTree; - precinct.zeroBitPlanesTree = zeroBitPlanesTree; - - for (let l = 0; l < layerNumber; l++) { - if (readBits(1) !== 0) { - throw new JpxError("Invalid tag tree"); - } - } - } - - if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) { - while (true) { - if (readBits(1)) { - valueReady = !inclusionTree.nextLevel(); - - if (valueReady) { - codeblock.included = true; - codeblockIncluded = firstTimeInclusion = true; - break; - } - } else { - inclusionTree.incrementValue(layerNumber); - break; - } - } - } - } - - if (!codeblockIncluded) { - continue; - } - - if (firstTimeInclusion) { - zeroBitPlanesTree = precinct.zeroBitPlanesTree; - zeroBitPlanesTree.reset(codeblockColumn, codeblockRow); - - while (true) { - if (readBits(1)) { - valueReady = !zeroBitPlanesTree.nextLevel(); - - if (valueReady) { - break; - } - } else { - zeroBitPlanesTree.incrementValue(); - } - } - - codeblock.zeroBitPlanes = zeroBitPlanesTree.value; - } - - const codingpasses = readCodingpasses(); - - while (readBits(1)) { - codeblock.Lblock++; - } - - const codingpassesLog2 = (0, _core_utils.log2)(codingpasses); - const bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock; - const codedDataLength = readBits(bits); - queue.push({ - codeblock, - codingpasses, - dataLength: codedDataLength - }); - } - - alignToByte(); - - if (ephMarkerUsed) { - skipMarkerIfEqual(0x92); - } - - while (queue.length > 0) { - const packetItem = queue.shift(); - codeblock = packetItem.codeblock; - - if (codeblock.data === undefined) { - codeblock.data = []; - } - - codeblock.data.push({ - data, - start: offset + position, - end: offset + position + packetItem.dataLength, - codingpasses: packetItem.codingpasses - }); - position += packetItem.dataLength; - } - } - - return position; -} - -function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities) { - const x0 = subband.tbx0; - const y0 = subband.tby0; - const width = subband.tbx1 - subband.tbx0; - const codeblocks = subband.codeblocks; - const right = subband.type.charAt(0) === "H" ? 1 : 0; - const bottom = subband.type.charAt(1) === "H" ? levelWidth : 0; - - for (let i = 0, ii = codeblocks.length; i < ii; ++i) { - const codeblock = codeblocks[i]; - const blockWidth = codeblock.tbx1_ - codeblock.tbx0_; - const blockHeight = codeblock.tby1_ - codeblock.tby0_; - - if (blockWidth === 0 || blockHeight === 0) { - continue; - } - - if (codeblock.data === undefined) { - continue; - } - - const bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb); - let currentCodingpassType = 2; - const data = codeblock.data; - let totalLength = 0, - codingpasses = 0; - let j, jj, dataItem; - - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - totalLength += dataItem.end - dataItem.start; - codingpasses += dataItem.codingpasses; - } - - const encodedData = new Uint8Array(totalLength); - let position = 0; - - for (j = 0, jj = data.length; j < jj; j++) { - dataItem = data[j]; - const chunk = dataItem.data.subarray(dataItem.start, dataItem.end); - encodedData.set(chunk, position); - position += chunk.length; - } - - const decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength); - bitModel.setDecoder(decoder); - - for (j = 0; j < codingpasses; j++) { - switch (currentCodingpassType) { - case 0: - bitModel.runSignificancePropagationPass(); - break; - - case 1: - bitModel.runMagnitudeRefinementPass(); - break; - - case 2: - bitModel.runCleanupPass(); - - if (segmentationSymbolUsed) { - bitModel.checkSegmentationSymbol(); - } - - break; - } - - if (resetContextProbabilities) { - bitModel.reset(); - } - - currentCodingpassType = (currentCodingpassType + 1) % 3; - } - - let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width; - const sign = bitModel.coefficentsSign; - const magnitude = bitModel.coefficentsMagnitude; - const bitsDecoded = bitModel.bitsDecoded; - const magnitudeCorrection = reversible ? 0 : 0.5; - let k, n, nb; - position = 0; - const interleave = subband.type !== "LL"; - - for (j = 0; j < blockHeight; j++) { - const row = offset / width | 0; - const levelOffset = 2 * row * (levelWidth - width) + right + bottom; - - for (k = 0; k < blockWidth; k++) { - n = magnitude[position]; - - if (n !== 0) { - n = (n + magnitudeCorrection) * delta; - - if (sign[position] !== 0) { - n = -n; - } - - nb = bitsDecoded[position]; - const pos = interleave ? levelOffset + (offset << 1) : offset; - - if (reversible && nb >= mb) { - coefficients[pos] = n; - } else { - coefficients[pos] = n * (1 << mb - nb); - } - } - - offset++; - position++; - } - - offset += width - blockWidth; - } - } -} - -function transformTile(context, tile, c) { - const component = tile.components[c]; - const codingStyleParameters = component.codingStyleParameters; - const quantizationParameters = component.quantizationParameters; - const decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount; - const spqcds = quantizationParameters.SPqcds; - const scalarExpounded = quantizationParameters.scalarExpounded; - const guardBits = quantizationParameters.guardBits; - const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; - const resetContextProbabilities = codingStyleParameters.resetContextProbabilities; - const precision = context.components[c].precision; - const reversible = codingStyleParameters.reversibleTransformation; - const transform = reversible ? new ReversibleTransform() : new IrreversibleTransform(); - const subbandCoefficients = []; - let b = 0; - - for (let i = 0; i <= decompositionLevelsCount; i++) { - const resolution = component.resolutions[i]; - const width = resolution.trx1 - resolution.trx0; - const height = resolution.try1 - resolution.try0; - const coefficients = new Float32Array(width * height); - - for (let j = 0, jj = resolution.subbands.length; j < jj; j++) { - let mu, epsilon; - - if (!scalarExpounded) { - mu = spqcds[0].mu; - epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0); - } else { - mu = spqcds[b].mu; - epsilon = spqcds[b].epsilon; - b++; - } - - const subband = resolution.subbands[j]; - const gainLog2 = SubbandsGainLog2[subband.type]; - const delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048); - const mb = guardBits + epsilon - 1; - copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities); - } - - subbandCoefficients.push({ - width, - height, - items: coefficients - }); - } - - const result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0); - return { - left: component.tcx0, - top: component.tcy0, - width: result.width, - height: result.height, - items: result.items - }; -} - -function transformComponents(context) { - const siz = context.SIZ; - const components = context.components; - const componentsCount = siz.Csiz; - const resultImages = []; - - for (let i = 0, ii = context.tiles.length; i < ii; i++) { - const tile = context.tiles[i]; - const transformedTiles = []; - - for (let c = 0; c < componentsCount; c++) { - transformedTiles[c] = transformTile(context, tile, c); - } - - const tile0 = transformedTiles[0]; - const out = new Uint8ClampedArray(tile0.items.length * componentsCount); - const result = { - left: tile0.left, - top: tile0.top, - width: tile0.width, - height: tile0.height, - items: out - }; - let shift, offset; - let pos = 0, - j, - jj, - y0, - y1, - y2; - - if (tile.codingStyleDefaultParameters.multipleComponentTransform) { - const fourComponents = componentsCount === 4; - const y0items = transformedTiles[0].items; - const y1items = transformedTiles[1].items; - const y2items = transformedTiles[2].items; - const y3items = fourComponents ? transformedTiles[3].items : null; - shift = components[0].precision - 8; - offset = (128 << shift) + 0.5; - const component0 = tile.components[0]; - const alpha01 = componentsCount - 3; - jj = y0items.length; - - if (!component0.codingStyleParameters.reversibleTransformation) { - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - out[pos++] = y0 + 1.402 * y2 >> shift; - out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift; - out[pos++] = y0 + 1.772 * y1 >> shift; - } - } else { - for (j = 0; j < jj; j++, pos += alpha01) { - y0 = y0items[j] + offset; - y1 = y1items[j]; - y2 = y2items[j]; - const g = y0 - (y2 + y1 >> 2); - out[pos++] = g + y2 >> shift; - out[pos++] = g >> shift; - out[pos++] = g + y1 >> shift; - } - } - - if (fourComponents) { - for (j = 0, pos = 3; j < jj; j++, pos += 4) { - out[pos] = y3items[j] + offset >> shift; - } - } - } else { - for (let c = 0; c < componentsCount; c++) { - const items = transformedTiles[c].items; - shift = components[c].precision - 8; - offset = (128 << shift) + 0.5; - - for (pos = c, j = 0, jj = items.length; j < jj; j++) { - out[pos] = items[j] + offset >> shift; - pos += componentsCount; - } - } - } - - resultImages.push(result); - } - - return resultImages; -} - -function initializeTile(context, tileIndex) { - const siz = context.SIZ; - const componentsCount = siz.Csiz; - const tile = context.tiles[tileIndex]; - - for (let c = 0; c < componentsCount; c++) { - const component = tile.components[c]; - const qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD; - component.quantizationParameters = qcdOrQcc; - const codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD; - component.codingStyleParameters = codOrCoc; - } - - tile.codingStyleDefaultParameters = context.currentTile.COD; -} - -class TagTree { - constructor(width, height) { - const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1; - this.levels = []; - - for (let i = 0; i < levelsLength; i++) { - const level = { - width, - height, - items: [] - }; - this.levels.push(level); - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); - } - } - - reset(i, j) { - let currentLevel = 0, - value = 0, - level; - - while (currentLevel < this.levels.length) { - level = this.levels[currentLevel]; - const index = i + j * level.width; - - if (level.items[index] !== undefined) { - value = level.items[index]; - break; - } - - level.index = index; - i >>= 1; - j >>= 1; - currentLevel++; - } - - currentLevel--; - level = this.levels[currentLevel]; - level.items[level.index] = value; - this.currentLevel = currentLevel; - delete this.value; - } - - incrementValue() { - const level = this.levels[this.currentLevel]; - level.items[level.index]++; - } - - nextLevel() { - let currentLevel = this.currentLevel; - let level = this.levels[currentLevel]; - const value = level.items[level.index]; - currentLevel--; - - if (currentLevel < 0) { - this.value = value; - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; - } - -} - -class InclusionTree { - constructor(width, height, defaultValue) { - const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1; - this.levels = []; - - for (let i = 0; i < levelsLength; i++) { - const items = new Uint8Array(width * height); - - for (let j = 0, jj = items.length; j < jj; j++) { - items[j] = defaultValue; - } - - const level = { - width, - height, - items - }; - this.levels.push(level); - width = Math.ceil(width / 2); - height = Math.ceil(height / 2); - } - } - - reset(i, j, stopValue) { - let currentLevel = 0; - - while (currentLevel < this.levels.length) { - const level = this.levels[currentLevel]; - const index = i + j * level.width; - level.index = index; - const value = level.items[index]; - - if (value === 0xff) { - break; - } - - if (value > stopValue) { - this.currentLevel = currentLevel; - this.propagateValues(); - return false; - } - - i >>= 1; - j >>= 1; - currentLevel++; - } - - this.currentLevel = currentLevel - 1; - return true; - } - - incrementValue(stopValue) { - const level = this.levels[this.currentLevel]; - level.items[level.index] = stopValue + 1; - this.propagateValues(); - } - - propagateValues() { - let levelIndex = this.currentLevel; - let level = this.levels[levelIndex]; - const currentValue = level.items[level.index]; - - while (--levelIndex >= 0) { - level = this.levels[levelIndex]; - level.items[level.index] = currentValue; - } - } - - nextLevel() { - let currentLevel = this.currentLevel; - let level = this.levels[currentLevel]; - const value = level.items[level.index]; - level.items[level.index] = 0xff; - currentLevel--; - - if (currentLevel < 0) { - return false; - } - - this.currentLevel = currentLevel; - level = this.levels[currentLevel]; - level.items[level.index] = value; - return true; - } - -} - -const BitModel = function BitModelClosure() { - const UNIFORM_CONTEXT = 17; - const RUNLENGTH_CONTEXT = 18; - const LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]); - const HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]); - const HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]); - - class BitModel { - constructor(width, height, subband, zeroBitPlanes, mb) { - this.width = width; - this.height = height; - let contextLabelTable; - - if (subband === "HH") { - contextLabelTable = HHContextLabel; - } else if (subband === "HL") { - contextLabelTable = HLContextLabel; - } else { - contextLabelTable = LLAndLHContextsLabel; - } - - this.contextLabelTable = contextLabelTable; - const coefficientCount = width * height; - this.neighborsSignificance = new Uint8Array(coefficientCount); - this.coefficentsSign = new Uint8Array(coefficientCount); - let coefficentsMagnitude; - - if (mb > 14) { - coefficentsMagnitude = new Uint32Array(coefficientCount); - } else if (mb > 6) { - coefficentsMagnitude = new Uint16Array(coefficientCount); - } else { - coefficentsMagnitude = new Uint8Array(coefficientCount); - } - - this.coefficentsMagnitude = coefficentsMagnitude; - this.processingFlags = new Uint8Array(coefficientCount); - const bitsDecoded = new Uint8Array(coefficientCount); - - if (zeroBitPlanes !== 0) { - for (let i = 0; i < coefficientCount; i++) { - bitsDecoded[i] = zeroBitPlanes; - } - } - - this.bitsDecoded = bitsDecoded; - this.reset(); - } - - setDecoder(decoder) { - this.decoder = decoder; - } - - reset() { - this.contexts = new Int8Array(19); - this.contexts[0] = 4 << 1 | 0; - this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0; - this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0; - } - - setNeighborsSignificance(row, column, index) { - const neighborsSignificance = this.neighborsSignificance; - const width = this.width, - height = this.height; - const left = column > 0; - const right = column + 1 < width; - let i; - - if (row > 0) { - i = index - width; - - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - - neighborsSignificance[i] += 0x04; - } - - if (row + 1 < height) { - i = index + width; - - if (left) { - neighborsSignificance[i - 1] += 0x10; - } - - if (right) { - neighborsSignificance[i + 1] += 0x10; - } - - neighborsSignificance[i] += 0x04; - } - - if (left) { - neighborsSignificance[index - 1] += 0x01; - } - - if (right) { - neighborsSignificance[index + 1] += 0x01; - } - - neighborsSignificance[index] |= 0x80; - } - - runSignificancePropagationPass() { - const decoder = this.decoder; - const width = this.width, - height = this.height; - const coefficentsMagnitude = this.coefficentsMagnitude; - const coefficentsSign = this.coefficentsSign; - const neighborsSignificance = this.neighborsSignificance; - const processingFlags = this.processingFlags; - const contexts = this.contexts; - const labels = this.contextLabelTable; - const bitsDecoded = this.bitsDecoded; - const processedInverseMask = ~1; - const processedMask = 1; - const firstMagnitudeBitMask = 2; - - for (let i0 = 0; i0 < height; i0 += 4) { - for (let j = 0; j < width; j++) { - let index = i0 * width + j; - - for (let i1 = 0; i1 < 4; i1++, index += width) { - const i = i0 + i1; - - if (i >= height) { - break; - } - - processingFlags[index] &= processedInverseMask; - - if (coefficentsMagnitude[index] || !neighborsSignificance[index]) { - continue; - } - - const contextLabel = labels[neighborsSignificance[index]]; - const decision = decoder.readBit(contexts, contextLabel); - - if (decision) { - const sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - - bitsDecoded[index]++; - processingFlags[index] |= processedMask; - } - } - } - } - - decodeSignBit(row, column, index) { - const width = this.width, - height = this.height; - const coefficentsMagnitude = this.coefficentsMagnitude; - const coefficentsSign = this.coefficentsSign; - let contribution, sign0, sign1, significance1; - let contextLabel, decoded; - significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0; - - if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) { - sign1 = coefficentsSign[index + 1]; - - if (significance1) { - sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign1 - sign0; - } else { - contribution = 1 - sign1 - sign1; - } - } else if (significance1) { - sign0 = coefficentsSign[index - 1]; - contribution = 1 - sign0 - sign0; - } else { - contribution = 0; - } - - const horizontalContribution = 3 * contribution; - significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0; - - if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) { - sign1 = coefficentsSign[index + width]; - - if (significance1) { - sign0 = coefficentsSign[index - width]; - contribution = 1 - sign1 - sign0 + horizontalContribution; - } else { - contribution = 1 - sign1 - sign1 + horizontalContribution; - } - } else if (significance1) { - sign0 = coefficentsSign[index - width]; - contribution = 1 - sign0 - sign0 + horizontalContribution; - } else { - contribution = horizontalContribution; - } - - if (contribution >= 0) { - contextLabel = 9 + contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel); - } else { - contextLabel = 9 - contribution; - decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1; - } - - return decoded; - } - - runMagnitudeRefinementPass() { - const decoder = this.decoder; - const width = this.width, - height = this.height; - const coefficentsMagnitude = this.coefficentsMagnitude; - const neighborsSignificance = this.neighborsSignificance; - const contexts = this.contexts; - const bitsDecoded = this.bitsDecoded; - const processingFlags = this.processingFlags; - const processedMask = 1; - const firstMagnitudeBitMask = 2; - const length = width * height; - const width4 = width * 4; - - for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) { - indexNext = Math.min(length, index0 + width4); - - for (let j = 0; j < width; j++) { - for (let index = index0 + j; index < indexNext; index += width) { - if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { - continue; - } - - let contextLabel = 16; - - if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) { - processingFlags[index] ^= firstMagnitudeBitMask; - const significance = neighborsSignificance[index] & 127; - contextLabel = significance === 0 ? 15 : 14; - } - - const bit = decoder.readBit(contexts, contextLabel); - coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit; - bitsDecoded[index]++; - processingFlags[index] |= processedMask; - } - } - } - } - - runCleanupPass() { - const decoder = this.decoder; - const width = this.width, - height = this.height; - const neighborsSignificance = this.neighborsSignificance; - const coefficentsMagnitude = this.coefficentsMagnitude; - const coefficentsSign = this.coefficentsSign; - const contexts = this.contexts; - const labels = this.contextLabelTable; - const bitsDecoded = this.bitsDecoded; - const processingFlags = this.processingFlags; - const processedMask = 1; - const firstMagnitudeBitMask = 2; - const oneRowDown = width; - const twoRowsDown = width * 2; - const threeRowsDown = width * 3; - let iNext; - - for (let i0 = 0; i0 < height; i0 = iNext) { - iNext = Math.min(i0 + 4, height); - const indexBase = i0 * width; - const checkAllEmpty = i0 + 3 < height; - - for (let j = 0; j < width; j++) { - const index0 = indexBase + j; - const allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0; - let i1 = 0, - index = index0; - let i = i0, - sign; - - if (allEmpty) { - const hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT); - - if (!hasSignificantCoefficent) { - bitsDecoded[index0]++; - bitsDecoded[index0 + oneRowDown]++; - bitsDecoded[index0 + twoRowsDown]++; - bitsDecoded[index0 + threeRowsDown]++; - continue; - } - - i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); - - if (i1 !== 0) { - i = i0 + i1; - index += i1 * width; - } - - sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - index = index0; - - for (let i2 = i0; i2 <= i; i2++, index += width) { - bitsDecoded[index]++; - } - - i1++; - } - - for (i = i0 + i1; i < iNext; i++, index += width) { - if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { - continue; - } - - const contextLabel = labels[neighborsSignificance[index]]; - const decision = decoder.readBit(contexts, contextLabel); - - if (decision === 1) { - sign = this.decodeSignBit(i, j, index); - coefficentsSign[index] = sign; - coefficentsMagnitude[index] = 1; - this.setNeighborsSignificance(i, j, index); - processingFlags[index] |= firstMagnitudeBitMask; - } - - bitsDecoded[index]++; - } - } - } - } - - checkSegmentationSymbol() { - const decoder = this.decoder; - const contexts = this.contexts; - const symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); - - if (symbol !== 0xa) { - throw new JpxError("Invalid segmentation symbol"); - } - } - - } - - return BitModel; -}(); - -class Transform { - constructor() { - if (this.constructor === Transform) { - (0, _util.unreachable)("Cannot initialize Transform."); - } - } - - calculate(subbands, u0, v0) { - let ll = subbands[0]; - - for (let i = 1, ii = subbands.length; i < ii; i++) { - ll = this.iterate(ll, subbands[i], u0, v0); - } - - return ll; - } - - extend(buffer, offset, size) { - let i1 = offset - 1, - j1 = offset + 1; - let i2 = offset + size - 2, - j2 = offset + size; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1--] = buffer[j1++]; - buffer[j2++] = buffer[i2--]; - buffer[i1] = buffer[j1]; - buffer[j2] = buffer[i2]; - } - - filter(x, offset, length) { - (0, _util.unreachable)("Abstract method `filter` called"); - } - - iterate(ll, hl_lh_hh, u0, v0) { - const llWidth = ll.width, - llHeight = ll.height; - let llItems = ll.items; - const width = hl_lh_hh.width; - const height = hl_lh_hh.height; - const items = hl_lh_hh.items; - let i, j, k, l, u, v; - - for (k = 0, i = 0; i < llHeight; i++) { - l = i * 2 * width; - - for (j = 0; j < llWidth; j++, k++, l += 2) { - items[l] = llItems[k]; - } - } - - llItems = ll.items = null; - const bufferPadding = 4; - const rowBuffer = new Float32Array(width + 2 * bufferPadding); - - if (width === 1) { - if ((u0 & 1) !== 0) { - for (v = 0, k = 0; v < height; v++, k += width) { - items[k] *= 0.5; - } - } - } else { - for (v = 0, k = 0; v < height; v++, k += width) { - rowBuffer.set(items.subarray(k, k + width), bufferPadding); - this.extend(rowBuffer, bufferPadding, width); - this.filter(rowBuffer, bufferPadding, width); - items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k); - } - } - - let numBuffers = 16; - const colBuffers = []; - - for (i = 0; i < numBuffers; i++) { - colBuffers.push(new Float32Array(height + 2 * bufferPadding)); - } - - let b, - currentBuffer = 0; - ll = bufferPadding + height; - - if (height === 1) { - if ((v0 & 1) !== 0) { - for (u = 0; u < width; u++) { - items[u] *= 0.5; - } - } - } else { - for (u = 0; u < width; u++) { - if (currentBuffer === 0) { - numBuffers = Math.min(width - u, numBuffers); - - for (k = u, l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - colBuffers[b][l] = items[k + b]; - } - } - - currentBuffer = numBuffers; - } - - currentBuffer--; - const buffer = colBuffers[currentBuffer]; - this.extend(buffer, bufferPadding, height); - this.filter(buffer, bufferPadding, height); - - if (currentBuffer === 0) { - k = u - numBuffers + 1; - - for (l = bufferPadding; l < ll; k += width, l++) { - for (b = 0; b < numBuffers; b++) { - items[k + b] = colBuffers[b][l]; - } - } - } - } - } - - return { - width, - height, - items - }; - } - -} - -class IrreversibleTransform extends Transform { - filter(x, offset, length) { - const len = length >> 1; - offset |= 0; - let j, n, current, next; - const alpha = -1.586134342059924; - const beta = -0.052980118572961; - const gamma = 0.882911075530934; - const delta = 0.443506852043971; - const K = 1.230174104914001; - const K_ = 1 / K; - j = offset - 3; - - for (n = len + 4; n--; j += 2) { - x[j] *= K_; - } - - j = offset - 2; - current = delta * x[j - 1]; - - for (n = len + 3; n--; j += 2) { - next = delta * x[j + 1]; - x[j] = K * x[j] - current - next; - - if (n--) { - j += 2; - current = delta * x[j + 1]; - x[j] = K * x[j] - current - next; - } else { - break; - } - } - - j = offset - 1; - current = gamma * x[j - 1]; - - for (n = len + 2; n--; j += 2) { - next = gamma * x[j + 1]; - x[j] -= current + next; - - if (n--) { - j += 2; - current = gamma * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - - j = offset; - current = beta * x[j - 1]; - - for (n = len + 1; n--; j += 2) { - next = beta * x[j + 1]; - x[j] -= current + next; - - if (n--) { - j += 2; - current = beta * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - - if (len !== 0) { - j = offset + 1; - current = alpha * x[j - 1]; - - for (n = len; n--; j += 2) { - next = alpha * x[j + 1]; - x[j] -= current + next; - - if (n--) { - j += 2; - current = alpha * x[j + 1]; - x[j] -= current + next; - } else { - break; - } - } - } - } - -} - -class ReversibleTransform extends Transform { - filter(x, offset, length) { - const len = length >> 1; - offset |= 0; - let j, n; - - for (j = offset, n = len + 1; n--; j += 2) { - x[j] -= x[j - 1] + x[j + 1] + 2 >> 2; - } - - for (j = offset + 1, n = len; n--; j += 2) { - x[j] += x[j - 1] + x[j + 1] >> 1; - } - } - -} - -/***/ }), -/* 41 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.LZWStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -class LZWStream extends _decode_stream.DecodeStream { - constructor(str, maybeLength, earlyChange) { - super(maybeLength); - this.str = str; - this.dict = str.dict; - this.cachedData = 0; - this.bitsCached = 0; - const maxLzwDictionarySize = 4096; - const lzwState = { - earlyChange, - codeLength: 9, - nextCode: 258, - dictionaryValues: new Uint8Array(maxLzwDictionarySize), - dictionaryLengths: new Uint16Array(maxLzwDictionarySize), - dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), - currentSequence: new Uint8Array(maxLzwDictionarySize), - currentSequenceLength: 0 - }; - - for (let i = 0; i < 256; ++i) { - lzwState.dictionaryValues[i] = i; - lzwState.dictionaryLengths[i] = 1; - } - - this.lzwState = lzwState; - } - - readBits(n) { - let bitsCached = this.bitsCached; - let cachedData = this.cachedData; - - while (bitsCached < n) { - const c = this.str.getByte(); - - if (c === -1) { - this.eof = true; - return null; - } - - cachedData = cachedData << 8 | c; - bitsCached += 8; - } - - this.bitsCached = bitsCached -= n; - this.cachedData = cachedData; - this.lastCode = null; - return cachedData >>> bitsCached & (1 << n) - 1; - } - - readBlock() { - const blockSize = 512, - decodedSizeDelta = blockSize; - let estimatedDecodedSize = blockSize * 2; - let i, j, q; - const lzwState = this.lzwState; - - if (!lzwState) { - return; - } - - const earlyChange = lzwState.earlyChange; - let nextCode = lzwState.nextCode; - const dictionaryValues = lzwState.dictionaryValues; - const dictionaryLengths = lzwState.dictionaryLengths; - const dictionaryPrevCodes = lzwState.dictionaryPrevCodes; - let codeLength = lzwState.codeLength; - let prevCode = lzwState.prevCode; - const currentSequence = lzwState.currentSequence; - let currentSequenceLength = lzwState.currentSequenceLength; - let decodedLength = 0; - let currentBufferLength = this.bufferLength; - let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - - for (i = 0; i < blockSize; i++) { - const code = this.readBits(codeLength); - const hasPrev = currentSequenceLength > 0; - - if (code < 256) { - currentSequence[0] = code; - currentSequenceLength = 1; - } else if (code >= 258) { - if (code < nextCode) { - currentSequenceLength = dictionaryLengths[code]; - - for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { - currentSequence[j] = dictionaryValues[q]; - q = dictionaryPrevCodes[q]; - } - } else { - currentSequence[currentSequenceLength++] = currentSequence[0]; - } - } else if (code === 256) { - codeLength = 9; - nextCode = 258; - currentSequenceLength = 0; - continue; - } else { - this.eof = true; - delete this.lzwState; - break; - } - - if (hasPrev) { - dictionaryPrevCodes[nextCode] = prevCode; - dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; - dictionaryValues[nextCode] = currentSequence[0]; - nextCode++; - codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0; - } - - prevCode = code; - decodedLength += currentSequenceLength; - - if (estimatedDecodedSize < decodedLength) { - do { - estimatedDecodedSize += decodedSizeDelta; - } while (estimatedDecodedSize < decodedLength); - - buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); - } - - for (j = 0; j < currentSequenceLength; j++) { - buffer[currentBufferLength++] = currentSequence[j]; - } - } - - lzwState.nextCode = nextCode; - lzwState.codeLength = codeLength; - lzwState.prevCode = prevCode; - lzwState.currentSequenceLength = currentSequenceLength; - this.bufferLength = currentBufferLength; - } - -} - -exports.LZWStream = LZWStream; - -/***/ }), -/* 42 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PredictorStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -var _primitives = __w_pdfjs_require__(5); - -var _util = __w_pdfjs_require__(2); - -class PredictorStream extends _decode_stream.DecodeStream { - constructor(str, maybeLength, params) { - super(maybeLength); - - if (!(params instanceof _primitives.Dict)) { - return str; - } - - const predictor = this.predictor = params.get("Predictor") || 1; - - if (predictor <= 1) { - return str; - } - - if (predictor !== 2 && (predictor < 10 || predictor > 15)) { - throw new _util.FormatError(`Unsupported predictor: ${predictor}`); - } - - if (predictor === 2) { - this.readBlock = this.readBlockTiff; - } else { - this.readBlock = this.readBlockPng; - } - - this.str = str; - this.dict = str.dict; - const colors = this.colors = params.get("Colors") || 1; - const bits = this.bits = params.get("BPC", "BitsPerComponent") || 8; - const columns = this.columns = params.get("Columns") || 1; - this.pixBytes = colors * bits + 7 >> 3; - this.rowBytes = columns * colors * bits + 7 >> 3; - return this; - } - - readBlockTiff() { - const rowBytes = this.rowBytes; - const bufferLength = this.bufferLength; - const buffer = this.ensureBuffer(bufferLength + rowBytes); - const bits = this.bits; - const colors = this.colors; - const rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - - if (this.eof) { - return; - } - - let inbuf = 0, - outbuf = 0; - let inbits = 0, - outbits = 0; - let pos = bufferLength; - let i; - - if (bits === 1 && colors === 1) { - for (i = 0; i < rowBytes; ++i) { - let c = rawBytes[i] ^ inbuf; - c ^= c >> 1; - c ^= c >> 2; - c ^= c >> 4; - inbuf = (c & 1) << 7; - buffer[pos++] = c; - } - } else if (bits === 8) { - for (i = 0; i < colors; ++i) { - buffer[pos++] = rawBytes[i]; - } - - for (; i < rowBytes; ++i) { - buffer[pos] = buffer[pos - colors] + rawBytes[i]; - pos++; - } - } else if (bits === 16) { - const bytesPerPixel = colors * 2; - - for (i = 0; i < bytesPerPixel; ++i) { - buffer[pos++] = rawBytes[i]; - } - - for (; i < rowBytes; i += 2) { - const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff); - buffer[pos++] = sum >> 8 & 0xff; - buffer[pos++] = sum & 0xff; - } - } else { - const compArray = new Uint8Array(colors + 1); - const bitMask = (1 << bits) - 1; - let j = 0, - k = bufferLength; - const columns = this.columns; - - for (i = 0; i < columns; ++i) { - for (let kk = 0; kk < colors; ++kk) { - if (inbits < bits) { - inbuf = inbuf << 8 | rawBytes[j++] & 0xff; - inbits += 8; - } - - compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask; - inbits -= bits; - outbuf = outbuf << bits | compArray[kk]; - outbits += bits; - - if (outbits >= 8) { - buffer[k++] = outbuf >> outbits - 8 & 0xff; - outbits -= 8; - } - } - } - - if (outbits > 0) { - buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1); - } - } - - this.bufferLength += rowBytes; - } - - readBlockPng() { - const rowBytes = this.rowBytes; - const pixBytes = this.pixBytes; - const predictor = this.str.getByte(); - const rawBytes = this.str.getBytes(rowBytes); - this.eof = !rawBytes.length; - - if (this.eof) { - return; - } - - const bufferLength = this.bufferLength; - const buffer = this.ensureBuffer(bufferLength + rowBytes); - let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); - - if (prevRow.length === 0) { - prevRow = new Uint8Array(rowBytes); - } - - let i, - j = bufferLength, - up, - c; - - switch (predictor) { - case 0: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - - break; - - case 1: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = rawBytes[i]; - } - - for (; i < rowBytes; ++i) { - buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff; - j++; - } - - break; - - case 2: - for (i = 0; i < rowBytes; ++i) { - buffer[j++] = prevRow[i] + rawBytes[i] & 0xff; - } - - break; - - case 3: - for (i = 0; i < pixBytes; ++i) { - buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; - } - - for (; i < rowBytes; ++i) { - buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff; - j++; - } - - break; - - case 4: - for (i = 0; i < pixBytes; ++i) { - up = prevRow[i]; - c = rawBytes[i]; - buffer[j++] = up + c; - } - - for (; i < rowBytes; ++i) { - up = prevRow[i]; - const upLeft = prevRow[i - pixBytes]; - const left = buffer[j - pixBytes]; - const p = left + up - upLeft; - let pa = p - left; - - if (pa < 0) { - pa = -pa; - } - - let pb = p - up; - - if (pb < 0) { - pb = -pb; - } - - let pc = p - upLeft; - - if (pc < 0) { - pc = -pc; - } - - c = rawBytes[i]; - - if (pa <= pb && pa <= pc) { - buffer[j++] = left + c; - } else if (pb <= pc) { - buffer[j++] = up + c; - } else { - buffer[j++] = upLeft + c; - } - } - - break; - - default: - throw new _util.FormatError(`Unsupported predictor: ${predictor}`); - } - - this.bufferLength += rowBytes; - } - -} - -exports.PredictorStream = PredictorStream; - -/***/ }), -/* 43 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.RunLengthStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -class RunLengthStream extends _decode_stream.DecodeStream { - constructor(str, maybeLength) { - super(maybeLength); - this.str = str; - this.dict = str.dict; - } - - readBlock() { - const repeatHeader = this.str.getBytes(2); - - if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { - this.eof = true; - return; - } - - let buffer; - let bufferLength = this.bufferLength; - let n = repeatHeader[0]; - - if (n < 128) { - buffer = this.ensureBuffer(bufferLength + n + 1); - buffer[bufferLength++] = repeatHeader[1]; - - if (n > 0) { - const source = this.str.getBytes(n); - buffer.set(source, bufferLength); - bufferLength += n; - } - } else { - n = 257 - n; - const b = repeatHeader[1]; - buffer = this.ensureBuffer(bufferLength + n + 1); - - for (let i = 0; i < n; i++) { - buffer[bufferLength++] = b; - } - } - - this.bufferLength = bufferLength; - } - -} - -exports.RunLengthStream = RunLengthStream; - -/***/ }), -/* 44 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Font = exports.ErrorFont = void 0; - -var _util = __w_pdfjs_require__(2); - -var _cff_parser = __w_pdfjs_require__(45); - -var _fonts_utils = __w_pdfjs_require__(18); - -var _unicode = __w_pdfjs_require__(21); - -var _glyphlist = __w_pdfjs_require__(20); - -var _encodings = __w_pdfjs_require__(19); - -var _standard_fonts = __w_pdfjs_require__(47); - -var _to_unicode_map = __w_pdfjs_require__(48); - -var _cff_font = __w_pdfjs_require__(49); - -var _font_renderer = __w_pdfjs_require__(50); - -var _metrics = __w_pdfjs_require__(51); - -var _glyf = __w_pdfjs_require__(52); - -var _cmap = __w_pdfjs_require__(26); - -var _opentype_file_builder = __w_pdfjs_require__(53); - -var _core_utils = __w_pdfjs_require__(8); - -var _stream = __w_pdfjs_require__(10); - -var _type1_font = __w_pdfjs_require__(54); - -const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]]; -const PDF_GLYPH_SPACE_UNITS = 1000; -const EXPORT_DATA_PROPERTIES = ["ascent", "bbox", "black", "bold", "charProcOperatorList", "composite", "cssFontInfo", "data", "defaultVMetrics", "defaultWidth", "descent", "fallbackName", "fontMatrix", "fontType", "isType3Font", "italic", "loadedName", "mimetype", "missingFile", "name", "remeasure", "subtype", "type", "vertical"]; -const EXPORT_DATA_EXTRA_PROPERTIES = ["cMap", "defaultEncoding", "differences", "isMonospace", "isSerifFont", "isSymbolicFont", "seacMap", "toFontChar", "toUnicode", "vmetrics", "widths"]; - -function adjustWidths(properties) { - if (!properties.fontMatrix) { - return; - } - - if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) { - return; - } - - const scale = 0.001 / properties.fontMatrix[0]; - const glyphsWidths = properties.widths; - - for (const glyph in glyphsWidths) { - glyphsWidths[glyph] *= scale; - } - - properties.defaultWidth *= scale; -} - -function adjustToUnicode(properties, builtInEncoding) { - if (properties.isInternalFont) { - return; - } - - if (builtInEncoding === properties.defaultEncoding) { - return; - } - - if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { - return; - } - - const toUnicode = [], - glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - - for (const charCode in builtInEncoding) { - if (properties.hasIncludedToUnicodeMap) { - if (properties.toUnicode.has(charCode)) { - continue; - } - } else if (properties.hasEncoding) { - if (properties.differences.length === 0 || properties.differences[charCode] !== undefined) { - continue; - } - } - - const glyphName = builtInEncoding[charCode]; - const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); - - if (unicode !== -1) { - toUnicode[charCode] = String.fromCharCode(unicode); - } - } - - if (toUnicode.length > 0) { - properties.toUnicode.amend(toUnicode); - } -} - -function amendFallbackToUnicode(properties) { - if (!properties.fallbackToUnicode) { - return; - } - - if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { - return; - } - - const toUnicode = []; - - for (const charCode in properties.fallbackToUnicode) { - if (properties.toUnicode.has(charCode)) { - continue; - } - - toUnicode[charCode] = properties.fallbackToUnicode[charCode]; - } - - if (toUnicode.length > 0) { - properties.toUnicode.amend(toUnicode); - } -} - -class Glyph { - constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { - this.originalCharCode = originalCharCode; - this.fontChar = fontChar; - this.unicode = unicode; - this.accent = accent; - this.width = width; - this.vmetric = vmetric; - this.operatorListId = operatorListId; - this.isSpace = isSpace; - this.isInFont = isInFont; - const category = (0, _unicode.getCharUnicodeCategory)(unicode); - this.isWhitespace = category.isWhitespace; - this.isZeroWidthDiacritic = category.isZeroWidthDiacritic; - this.isInvisibleFormatMark = category.isInvisibleFormatMark; - } - - matchesForCache(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { - return this.originalCharCode === originalCharCode && this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont; - } - -} - -function int16(b0, b1) { - return (b0 << 8) + b1; -} - -function writeSignedInt16(bytes, index, value) { - bytes[index + 1] = value; - bytes[index] = value >>> 8; -} - -function signedInt16(b0, b1) { - const value = (b0 << 8) + b1; - return value & 1 << 15 ? value - 0x10000 : value; -} - -function int32(b0, b1, b2, b3) { - return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; -} - -function string16(value) { - return String.fromCharCode(value >> 8 & 0xff, value & 0xff); -} - -function safeString16(value) { - if (value > 0x7fff) { - value = 0x7fff; - } else if (value < -0x8000) { - value = -0x8000; - } - - return String.fromCharCode(value >> 8 & 0xff, value & 0xff); -} - -function isTrueTypeFile(file) { - const header = file.peekBytes(4); - return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === "true"; -} - -function isTrueTypeCollectionFile(file) { - const header = file.peekBytes(4); - return (0, _util.bytesToString)(header) === "ttcf"; -} - -function isOpenTypeFile(file) { - const header = file.peekBytes(4); - return (0, _util.bytesToString)(header) === "OTTO"; -} - -function isType1File(file) { - const header = file.peekBytes(2); - - if (header[0] === 0x25 && header[1] === 0x21) { - return true; - } - - if (header[0] === 0x80 && header[1] === 0x01) { - return true; - } - - return false; -} - -function isCFFFile(file) { - const header = file.peekBytes(4); - - if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) { - return true; - } - - return false; -} - -function getFontFileType(file, { - type, - subtype, - composite -}) { - let fileType, fileSubtype; - - if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) { - if (composite) { - fileType = "CIDFontType2"; - } else { - fileType = "TrueType"; - } - } else if (isOpenTypeFile(file)) { - if (composite) { - fileType = "CIDFontType2"; - } else { - fileType = "OpenType"; - } - } else if (isType1File(file)) { - if (composite) { - fileType = "CIDFontType0"; - } else { - fileType = type === "MMType1" ? "MMType1" : "Type1"; - } - } else if (isCFFFile(file)) { - if (composite) { - fileType = "CIDFontType0"; - fileSubtype = "CIDFontType0C"; - } else { - fileType = type === "MMType1" ? "MMType1" : "Type1"; - fileSubtype = "Type1C"; - } - } else { - (0, _util.warn)("getFontFileType: Unable to detect correct font file Type/Subtype."); - fileType = type; - fileSubtype = subtype; - } - - return [fileType, fileSubtype]; -} - -function applyStandardFontGlyphMap(map, glyphMap) { - for (const charCode in glyphMap) { - map[+charCode] = glyphMap[charCode]; - } -} - -function buildToFontChar(encoding, glyphsUnicodeMap, differences) { - const toFontChar = []; - let unicode; - - for (let i = 0, ii = encoding.length; i < ii; i++) { - unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap); - - if (unicode !== -1) { - toFontChar[i] = unicode; - } - } - - for (const charCode in differences) { - unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap); - - if (unicode !== -1) { - toFontChar[+charCode] = unicode; - } - } - - return toFontChar; -} - -function convertCidString(charCode, cid, shouldThrow = false) { - switch (cid.length) { - case 1: - return cid.charCodeAt(0); - - case 2: - return cid.charCodeAt(0) << 8 | cid.charCodeAt(1); - } - - const msg = `Unsupported CID string (charCode ${charCode}): "${cid}".`; - - if (shouldThrow) { - throw new _util.FormatError(msg); - } - - (0, _util.warn)(msg); - return cid; -} - -function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) { - const newMap = Object.create(null); - const toFontChar = []; - let privateUseAreaIndex = 0; - let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; - let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; - - for (let originalCharCode in charCodeToGlyphId) { - originalCharCode |= 0; - let glyphId = charCodeToGlyphId[originalCharCode]; - - if (!hasGlyph(glyphId)) { - continue; - } - - if (nextAvailableFontCharCode > privateUseOffetEnd) { - privateUseAreaIndex++; - - if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) { - (0, _util.warn)("Ran out of space in font private use area."); - break; - } - - nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; - privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; - } - - const fontCharCode = nextAvailableFontCharCode++; - - if (glyphId === 0) { - glyphId = newGlyphZeroId; - } - - newMap[fontCharCode] = glyphId; - toFontChar[originalCharCode] = fontCharCode; - } - - return { - toFontChar, - charCodeToGlyphId: newMap, - nextAvailableFontCharCode - }; -} - -function getRanges(glyphs, numGlyphs) { - const codes = []; - - for (const charCode in glyphs) { - if (glyphs[charCode] >= numGlyphs) { - continue; - } - - codes.push({ - fontCharCode: charCode | 0, - glyphId: glyphs[charCode] - }); - } - - if (codes.length === 0) { - codes.push({ - fontCharCode: 0, - glyphId: 0 - }); - } - - codes.sort(function fontGetRangesSort(a, b) { - return a.fontCharCode - b.fontCharCode; - }); - const ranges = []; - const length = codes.length; - - for (let n = 0; n < length;) { - const start = codes[n].fontCharCode; - const codeIndices = [codes[n].glyphId]; - ++n; - let end = start; - - while (n < length && end + 1 === codes[n].fontCharCode) { - codeIndices.push(codes[n].glyphId); - ++end; - ++n; - - if (end === 0xffff) { - break; - } - } - - ranges.push([start, end, codeIndices]); - } - - return ranges; -} - -function createCmapTable(glyphs, numGlyphs) { - const ranges = getRanges(glyphs, numGlyphs); - const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1; - let cmap = "\x00\x00" + string16(numTables) + "\x00\x03" + "\x00\x01" + (0, _util.string32)(4 + numTables * 8); - let i, ii, j, jj; - - for (i = ranges.length - 1; i >= 0; --i) { - if (ranges[i][0] <= 0xffff) { - break; - } - } - - const bmpLength = i + 1; - - if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) { - ranges[i][1] = 0xfffe; - } - - const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0; - const segCount = bmpLength + trailingRangesCount; - - const searchParams = _opentype_file_builder.OpenTypeFileBuilder.getSearchParams(segCount, 2); - - let startCount = ""; - let endCount = ""; - let idDeltas = ""; - let idRangeOffsets = ""; - let glyphsIds = ""; - let bias = 0; - let range, start, end, codes; - - for (i = 0, ii = bmpLength; i < ii; i++) { - range = ranges[i]; - start = range[0]; - end = range[1]; - startCount += string16(start); - endCount += string16(end); - codes = range[2]; - let contiguous = true; - - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - contiguous = false; - break; - } - } - - if (!contiguous) { - const offset = (segCount - i) * 2 + bias * 2; - bias += end - start + 1; - idDeltas += string16(0); - idRangeOffsets += string16(offset); - - for (j = 0, jj = codes.length; j < jj; ++j) { - glyphsIds += string16(codes[j]); - } - } else { - const startCode = codes[0]; - idDeltas += string16(startCode - start & 0xffff); - idRangeOffsets += string16(0); - } - } - - if (trailingRangesCount > 0) { - endCount += "\xFF\xFF"; - startCount += "\xFF\xFF"; - idDeltas += "\x00\x01"; - idRangeOffsets += "\x00\x00"; - } - - const format314 = "\x00\x00" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + "\x00\x00" + startCount + idDeltas + idRangeOffsets + glyphsIds; - let format31012 = ""; - let header31012 = ""; - - if (numTables > 1) { - cmap += "\x00\x03" + "\x00\x0A" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length); - format31012 = ""; - - for (i = 0, ii = ranges.length; i < ii; i++) { - range = ranges[i]; - start = range[0]; - codes = range[2]; - let code = codes[0]; - - for (j = 1, jj = codes.length; j < jj; ++j) { - if (codes[j] !== codes[j - 1] + 1) { - end = range[0] + j - 1; - format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code); - start = end + 1; - code = codes[j]; - } - } - - format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code); - } - - header31012 = "\x00\x0C" + "\x00\x00" + (0, _util.string32)(format31012.length + 16) + "\x00\x00\x00\x00" + (0, _util.string32)(format31012.length / 12); - } - - return cmap + "\x00\x04" + string16(format314.length + 4) + format314 + header31012 + format31012; -} - -function validateOS2Table(os2, file) { - file.pos = (file.start || 0) + os2.offset; - const version = file.getUint16(); - file.skip(60); - const selection = file.getUint16(); - - if (version < 4 && selection & 0x0300) { - return false; - } - - const firstChar = file.getUint16(); - const lastChar = file.getUint16(); - - if (firstChar > lastChar) { - return false; - } - - file.skip(6); - const usWinAscent = file.getUint16(); - - if (usWinAscent === 0) { - return false; - } - - os2.data[8] = os2.data[9] = 0; - return true; -} - -function createOS2Table(properties, charstrings, override) { - override = override || { - unitsPerEm: 0, - yMax: 0, - yMin: 0, - ascent: 0, - descent: 0 - }; - let ulUnicodeRange1 = 0; - let ulUnicodeRange2 = 0; - let ulUnicodeRange3 = 0; - let ulUnicodeRange4 = 0; - let firstCharIndex = null; - let lastCharIndex = 0; - - if (charstrings) { - for (let code in charstrings) { - code |= 0; - - if (firstCharIndex > code || !firstCharIndex) { - firstCharIndex = code; - } - - if (lastCharIndex < code) { - lastCharIndex = code; - } - - const position = (0, _unicode.getUnicodeRangeFor)(code); - - if (position < 32) { - ulUnicodeRange1 |= 1 << position; - } else if (position < 64) { - ulUnicodeRange2 |= 1 << position - 32; - } else if (position < 96) { - ulUnicodeRange3 |= 1 << position - 64; - } else if (position < 123) { - ulUnicodeRange4 |= 1 << position - 96; - } else { - throw new _util.FormatError("Unicode ranges Bits > 123 are reserved for internal usage"); - } - } - - if (lastCharIndex > 0xffff) { - lastCharIndex = 0xffff; - } - } else { - firstCharIndex = 0; - lastCharIndex = 255; - } - - const bbox = properties.bbox || [0, 0, 0, 0]; - const unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; - const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS; - const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3])); - let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1])); - - if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { - typoDescent = -typoDescent; - } - - const winAscent = override.yMax || typoAscent; - const winDescent = -override.yMin || -typoDescent; - return "\x00\x03" + "\x02\x24" + "\x01\xF4" + "\x00\x05" + "\x00\x00" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x00\x8C" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x01\xDF" + "\x00\x31" + "\x01\x02" + "\x00\x00" + "\x00\x00\x06" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + "\x00\x00\x00\x00\x00\x00" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + "\x2A\x32\x31\x2A" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + "\x00\x64" + string16(winAscent) + string16(winDescent) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + "\x00\x03"; -} - -function createPostTable(properties) { - const angle = Math.floor(properties.italicAngle * 2 ** 16); - return "\x00\x03\x00\x00" + (0, _util.string32)(angle) + "\x00\x00" + "\x00\x00" + (0, _util.string32)(properties.fixedPitch ? 1 : 0) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00"; -} - -function createPostscriptName(name) { - return name.replace(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63); -} - -function createNameTable(name, proto) { - if (!proto) { - proto = [[], []]; - } - - const strings = [proto[0][0] || "Original licence", proto[0][1] || name, proto[0][2] || "Unknown", proto[0][3] || "uniqueID", proto[0][4] || name, proto[0][5] || "Version 0.11", proto[0][6] || createPostscriptName(name), proto[0][7] || "Unknown", proto[0][8] || "Unknown", proto[0][9] || "Unknown"]; - const stringsUnicode = []; - let i, ii, j, jj, str; - - for (i = 0, ii = strings.length; i < ii; i++) { - str = proto[1][i] || strings[i]; - const strBufUnicode = []; - - for (j = 0, jj = str.length; j < jj; j++) { - strBufUnicode.push(string16(str.charCodeAt(j))); - } - - stringsUnicode.push(strBufUnicode.join("")); - } - - const names = [strings, stringsUnicode]; - const platforms = ["\x00\x01", "\x00\x03"]; - const encodings = ["\x00\x00", "\x00\x01"]; - const languages = ["\x00\x00", "\x04\x09"]; - const namesRecordCount = strings.length * platforms.length; - let nameTable = "\x00\x00" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6); - let strOffset = 0; - - for (i = 0, ii = platforms.length; i < ii; i++) { - const strs = names[i]; - - for (j = 0, jj = strs.length; j < jj; j++) { - str = strs[j]; - const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset); - nameTable += nameRecord; - strOffset += str.length; - } - } - - nameTable += strings.join("") + stringsUnicode.join(""); - return nameTable; -} - -class Font { - constructor(name, file, properties) { - this.name = name; - this.psName = null; - this.mimetype = null; - this.disableFontFace = false; - this.loadedName = properties.loadedName; - this.isType3Font = properties.isType3Font; - this.missingFile = false; - this.cssFontInfo = properties.cssFontInfo; - this._charsCache = Object.create(null); - this._glyphCache = Object.create(null); - let isSerifFont = !!(properties.flags & _fonts_utils.FontFlags.Serif); - - if (!isSerifFont && !properties.isSimulatedFlags) { - const baseName = name.replace(/[,_]/g, "-").split("-")[0], - serifFonts = (0, _standard_fonts.getSerifFonts)(); - - for (const namePart of baseName.split("+")) { - if (serifFonts[namePart]) { - isSerifFont = true; - break; - } - } - } - - this.isSerifFont = isSerifFont; - this.isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic); - this.isMonospace = !!(properties.flags & _fonts_utils.FontFlags.FixedPitch); - let type = properties.type; - let subtype = properties.subtype; - this.type = type; - this.subtype = subtype; - let fallbackName = "sans-serif"; - - if (this.isMonospace) { - fallbackName = "monospace"; - } else if (this.isSerifFont) { - fallbackName = "serif"; - } - - this.fallbackName = fallbackName; - this.differences = properties.differences; - this.widths = properties.widths; - 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.lineHeight = this.ascent - this.descent; - this.fontMatrix = properties.fontMatrix; - this.bbox = properties.bbox; - this.defaultEncoding = properties.defaultEncoding; - this.toUnicode = properties.toUnicode; - this.toFontChar = []; - - if (properties.type === "Type3") { - for (let charCode = 0; charCode < 256; charCode++) { - this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode]; - } - - this.fontType = _util.FontType.TYPE3; - return; - } - - this.cidEncoding = properties.cidEncoding || ""; - this.vertical = !!properties.vertical; - - if (this.vertical) { - this.vmetrics = properties.vmetrics; - this.defaultVMetrics = properties.defaultVMetrics; - } - - if (!file || file.isEmpty) { - if (file) { - (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ")"); - } - - this.fallbackToSystemFont(properties); - return; - } - - [type, subtype] = getFontFileType(file, properties); - - if (type !== this.type || subtype !== this.subtype) { - (0, _util.info)("Inconsistent font file Type/SubType, expected: " + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`); - } - - let data; - - try { - switch (type) { - case "MMType1": - (0, _util.info)("MMType1 font (" + name + "), falling back to Type1."); - - case "Type1": - case "CIDFontType0": - this.mimetype = "font/opentype"; - const cff = subtype === "Type1C" || subtype === "CIDFontType0C" ? new _cff_font.CFFFont(file, properties) : new _type1_font.Type1Font(name, file, properties); - adjustWidths(properties); - data = this.convert(name, cff, properties); - break; - - case "OpenType": - case "TrueType": - case "CIDFontType2": - this.mimetype = "font/opentype"; - data = this.checkAndRepair(name, file, properties); - - if (this.isOpenType) { - adjustWidths(properties); - type = "OpenType"; - } - - break; - - default: - throw new _util.FormatError(`Font ${type} is not supported`); - } - } catch (e) { - (0, _util.warn)(e); - this.fallbackToSystemFont(properties); - return; - } - - amendFallbackToUnicode(properties); - this.data = data; - this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont); - this.fontMatrix = properties.fontMatrix; - this.widths = properties.widths; - this.defaultWidth = properties.defaultWidth; - this.toUnicode = properties.toUnicode; - this.seacMap = properties.seacMap; - } - - get renderer() { - const renderer = _font_renderer.FontRendererFactory.create(this, _fonts_utils.SEAC_ANALYSIS_ENABLED); - - return (0, _util.shadow)(this, "renderer", renderer); - } - - exportData(extraProperties = false) { - const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES; - const data = Object.create(null); - let property, value; - - for (property of exportDataProperties) { - value = this[property]; - - if (value !== undefined) { - data[property] = value; - } - } - - return data; - } - - fallbackToSystemFont(properties) { - this.missingFile = true; - const name = this.name; - const type = this.type; - const subtype = this.subtype; - let fontName = (0, _fonts_utils.normalizeFontName)(name); - const stdFontMap = (0, _standard_fonts.getStdFontMap)(), - nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)(); - const isStandardFont = !!stdFontMap[fontName]; - const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); - fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; - const fontBasicMetricsMap = (0, _metrics.getFontBasicMetrics)(); - const metrics = fontBasicMetricsMap[fontName]; - - if (metrics) { - if (isNaN(this.ascent)) { - this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS; - } - - if (isNaN(this.descent)) { - this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS; - } - - if (isNaN(this.capHeight)) { - this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS; - } - } - - 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; - const isNarrow = name.search(/Narrow/g) !== -1; - this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0; - - if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && this.cidEncoding.startsWith("Identity-")) { - const cidToGidMap = properties.cidToGidMap; - const map = []; - applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)()); - - if (/Arial-?Black/i.test(name)) { - applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)()); - } else if (/Calibri/i.test(name)) { - applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForCalibri)()); - } - - if (cidToGidMap) { - for (const charCode in map) { - const cid = map[charCode]; - - if (cidToGidMap[cid] !== undefined) { - map[+charCode] = cidToGidMap[cid]; - } - } - - if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { - this.toUnicode.forEach(function (charCode, unicodeCharCode) { - const cid = map[charCode]; - - if (cidToGidMap[cid] === undefined) { - map[+charCode] = unicodeCharCode; - } - }); - } - } - - if (!(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { - this.toUnicode.forEach(function (charCode, unicodeCharCode) { - map[+charCode] = unicodeCharCode; - }); - } - - this.toFontChar = map; - this.toUnicode = new _to_unicode_map.ToUnicodeMap(map); - } else if (/Symbol/i.test(fontName)) { - this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); - } else if (/Dingbats/i.test(fontName)) { - if (/Wingdings/i.test(name)) { - (0, _util.warn)("Non-embedded Wingdings font, falling back to ZapfDingbats."); - } - - this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences); - } else if (isStandardFont) { - const map = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); - - if (type === "CIDFontType2" && !this.cidEncoding.startsWith("Identity-") && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { - this.toUnicode.forEach(function (charCode, unicodeCharCode) { - map[+charCode] = unicodeCharCode; - }); - } - - this.toFontChar = map; - } else { - const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - const map = []; - this.toUnicode.forEach((charCode, unicodeCharCode) => { - if (!this.composite) { - const glyphName = this.differences[charCode] || this.defaultEncoding[charCode]; - const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); - - if (unicode !== -1) { - unicodeCharCode = unicode; - } - } - - map[+charCode] = unicodeCharCode; - }); - - if (this.composite && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { - if (/Verdana/i.test(name)) { - applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)()); - } - } - - this.toFontChar = map; - } - - amendFallbackToUnicode(properties); - this.loadedName = fontName.split("-")[0]; - this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont); - } - - checkAndRepair(name, font, properties) { - const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", "fpgm", "prep", "cvt ", "CFF "]; - - function readTables(file, numTables) { - const tables = Object.create(null); - tables["OS/2"] = null; - tables.cmap = null; - tables.head = null; - tables.hhea = null; - tables.hmtx = null; - tables.maxp = null; - tables.name = null; - tables.post = null; - - for (let i = 0; i < numTables; i++) { - const table = readTableEntry(file); - - if (!VALID_TABLES.includes(table.tag)) { - continue; - } - - if (table.length === 0) { - continue; - } - - tables[table.tag] = table; - } - - return tables; - } - - function readTableEntry(file) { - const tag = file.getString(4); - const checksum = file.getInt32() >>> 0; - const offset = file.getInt32() >>> 0; - const length = file.getInt32() >>> 0; - const previousPosition = file.pos; - file.pos = file.start ? file.start : 0; - file.skip(offset); - const data = file.getBytes(length); - file.pos = previousPosition; - - if (tag === "head") { - data[8] = data[9] = data[10] = data[11] = 0; - data[17] |= 0x20; - } - - return { - tag, - checksum, - length, - offset, - data - }; - } - - function readOpenTypeHeader(ttf) { - return { - version: ttf.getString(4), - numTables: ttf.getUint16(), - searchRange: ttf.getUint16(), - entrySelector: ttf.getUint16(), - rangeShift: ttf.getUint16() - }; - } - - function readTrueTypeCollectionHeader(ttc) { - const ttcTag = ttc.getString(4); - (0, _util.assert)(ttcTag === "ttcf", "Must be a TrueType Collection font."); - const majorVersion = ttc.getUint16(); - const minorVersion = ttc.getUint16(); - const numFonts = ttc.getInt32() >>> 0; - const offsetTable = []; - - for (let i = 0; i < numFonts; i++) { - offsetTable.push(ttc.getInt32() >>> 0); - } - - const header = { - ttcTag, - majorVersion, - minorVersion, - numFonts, - offsetTable - }; - - switch (majorVersion) { - case 1: - return header; - - case 2: - header.dsigTag = ttc.getInt32() >>> 0; - header.dsigLength = ttc.getInt32() >>> 0; - header.dsigOffset = ttc.getInt32() >>> 0; - return header; - } - - throw new _util.FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`); - } - - function readTrueTypeCollectionData(ttc, fontName) { - const { - numFonts, - offsetTable - } = readTrueTypeCollectionHeader(ttc); - const fontNameParts = fontName.split("+"); - let fallbackData; - - for (let i = 0; i < numFonts; i++) { - ttc.pos = (ttc.start || 0) + offsetTable[i]; - const potentialHeader = readOpenTypeHeader(ttc); - const potentialTables = readTables(ttc, potentialHeader.numTables); - - if (!potentialTables.name) { - throw new _util.FormatError('TrueType Collection font must contain a "name" table.'); - } - - const nameTable = readNameTable(potentialTables.name); - - for (let j = 0, jj = nameTable.length; j < jj; j++) { - for (let k = 0, kk = nameTable[j].length; k < kk; k++) { - const nameEntry = nameTable[j][k] && nameTable[j][k].replace(/\s/g, ""); - - if (!nameEntry) { - continue; - } - - if (nameEntry === fontName) { - return { - header: potentialHeader, - tables: potentialTables - }; - } - - if (fontNameParts.length < 2) { - continue; - } - - for (const part of fontNameParts) { - if (nameEntry === part) { - fallbackData = { - name: part, - header: potentialHeader, - tables: potentialTables - }; - } - } - } - } - } - - if (fallbackData) { - (0, _util.warn)(`TrueType Collection does not contain "${fontName}" font, ` + `falling back to "${fallbackData.name}" font instead.`); - return { - header: fallbackData.header, - tables: fallbackData.tables - }; - } - - throw new _util.FormatError(`TrueType Collection does not contain "${fontName}" font.`); - } - - function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) { - if (!cmap) { - (0, _util.warn)("No cmap table available."); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - let segment; - let start = (file.start ? file.start : 0) + cmap.offset; - file.pos = start; - file.skip(2); - const numTables = file.getUint16(); - let potentialTable; - let canBreak = false; - - for (let i = 0; i < numTables; i++) { - const platformId = file.getUint16(); - const encodingId = file.getUint16(); - const offset = file.getInt32() >>> 0; - let useTable = false; - - if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) { - continue; - } - - if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) { - useTable = true; - } else if (platformId === 1 && encodingId === 0) { - useTable = true; - } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) { - useTable = true; - - if (!isSymbolicFont) { - canBreak = true; - } - } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { - useTable = true; - let correctlySorted = true; - - if (i < numTables - 1) { - const nextBytes = file.peekBytes(2), - nextPlatformId = int16(nextBytes[0], nextBytes[1]); - - if (nextPlatformId < platformId) { - correctlySorted = false; - } - } - - if (correctlySorted) { - canBreak = true; - } - } - - if (useTable) { - potentialTable = { - platformId, - encodingId, - offset - }; - } - - if (canBreak) { - break; - } - } - - if (potentialTable) { - file.pos = start + potentialTable.offset; - } - - if (!potentialTable || file.peekByte() === -1) { - (0, _util.warn)("Could not find a preferred cmap table."); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - const format = file.getUint16(); - let hasShortCmap = false; - const mappings = []; - let j, glyphId; - - if (format === 0) { - file.skip(2 + 2); - - for (j = 0; j < 256; j++) { - const index = file.getByte(); - - if (!index) { - continue; - } - - mappings.push({ - charCode: j, - glyphId: index - }); - } - - hasShortCmap = true; - } else if (format === 2) { - file.skip(2 + 2); - const subHeaderKeys = []; - let maxSubHeaderKey = 0; - - for (let i = 0; i < 256; i++) { - const subHeaderKey = file.getUint16() >> 3; - subHeaderKeys.push(subHeaderKey); - maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey); - } - - const subHeaders = []; - - for (let i = 0; i <= maxSubHeaderKey; i++) { - subHeaders.push({ - firstCode: file.getUint16(), - entryCount: file.getUint16(), - idDelta: signedInt16(file.getByte(), file.getByte()), - idRangePos: file.pos + file.getUint16() - }); - } - - for (let i = 0; i < 256; i++) { - if (subHeaderKeys[i] === 0) { - file.pos = subHeaders[0].idRangePos + 2 * i; - glyphId = file.getUint16(); - mappings.push({ - charCode: i, - glyphId - }); - } else { - const s = subHeaders[subHeaderKeys[i]]; - - for (j = 0; j < s.entryCount; j++) { - const charCode = (i << 8) + j + s.firstCode; - file.pos = s.idRangePos + 2 * j; - glyphId = file.getUint16(); - - if (glyphId !== 0) { - glyphId = (glyphId + s.idDelta) % 65536; - } - - mappings.push({ - charCode, - glyphId - }); - } - } - } - } else if (format === 4) { - file.skip(2 + 2); - const segCount = file.getUint16() >> 1; - file.skip(6); - const segments = []; - let segIndex; - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments.push({ - end: file.getUint16() - }); - } - - file.skip(2); - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].start = file.getUint16(); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segments[segIndex].delta = file.getUint16(); - } - - let offsetsCount = 0, - offsetIndex; - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - const rangeOffset = file.getUint16(); - - if (!rangeOffset) { - segment.offsetIndex = -1; - continue; - } - - offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); - segment.offsetIndex = offsetIndex; - offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1); - } - - const offsets = []; - - for (j = 0; j < offsetsCount; j++) { - offsets.push(file.getUint16()); - } - - for (segIndex = 0; segIndex < segCount; segIndex++) { - segment = segments[segIndex]; - start = segment.start; - const end = segment.end; - const delta = segment.delta; - offsetIndex = segment.offsetIndex; - - for (j = start; j <= end; j++) { - if (j === 0xffff) { - continue; - } - - glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start]; - glyphId = glyphId + delta & 0xffff; - mappings.push({ - charCode: j, - glyphId - }); - } - } - } else if (format === 6) { - file.skip(2 + 2); - const firstCode = file.getUint16(); - const entryCount = file.getUint16(); - - for (j = 0; j < entryCount; j++) { - glyphId = file.getUint16(); - const charCode = firstCode + j; - mappings.push({ - charCode, - glyphId - }); - } - } else if (format === 12) { - file.skip(2 + 4 + 4); - const nGroups = file.getInt32() >>> 0; - - for (j = 0; j < nGroups; j++) { - const startCharCode = file.getInt32() >>> 0; - const endCharCode = file.getInt32() >>> 0; - let glyphCode = file.getInt32() >>> 0; - - for (let charCode = startCharCode; charCode <= endCharCode; charCode++) { - mappings.push({ - charCode, - glyphId: glyphCode++ - }); - } - } - } else { - (0, _util.warn)("cmap table has unsupported format: " + format); - return { - platformId: -1, - encodingId: -1, - mappings: [], - hasShortCmap: false - }; - } - - mappings.sort(function (a, b) { - return a.charCode - b.charCode; - }); - - for (let i = 1; i < mappings.length; i++) { - if (mappings[i - 1].charCode === mappings[i].charCode) { - mappings.splice(i, 1); - i--; - } - } - - return { - platformId: potentialTable.platformId, - encodingId: potentialTable.encodingId, - mappings, - hasShortCmap - }; - } - - function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) { - if (!header) { - if (metrics) { - metrics.data = null; - } - - return; - } - - file.pos = (file.start ? file.start : 0) + header.offset; - file.pos += 4; - file.pos += 2; - file.pos += 2; - file.pos += 2; - file.pos += 2; - file.pos += 2; - file.pos += 2; - file.pos += 2; - file.pos += 2; - file.pos += 2; - const caretOffset = file.getUint16(); - file.pos += 8; - file.pos += 2; - let numOfMetrics = file.getUint16(); - - if (caretOffset !== 0) { - const macStyle = int16(headTable.data[44], headTable.data[45]); - - if (!(macStyle & 2)) { - header.data[22] = 0; - header.data[23] = 0; - } - } - - if (numOfMetrics > numGlyphs) { - (0, _util.info)(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`); - numOfMetrics = numGlyphs; - header.data[34] = (numOfMetrics & 0xff00) >> 8; - header.data[35] = numOfMetrics & 0x00ff; - } - - const numOfSidebearings = numGlyphs - numOfMetrics; - const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1); - - if (numMissing > 0) { - const entries = new Uint8Array(metrics.length + numMissing * 2); - entries.set(metrics.data); - - if (dupFirstEntry) { - entries[metrics.length] = metrics.data[2]; - entries[metrics.length + 1] = metrics.data[3]; - } - - metrics.data = entries; - } - } - - function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) { - const glyphProfile = { - length: 0, - sizeOfInstructions: 0 - }; - - if (sourceEnd - sourceStart <= 12) { - return glyphProfile; - } - - const glyf = source.subarray(sourceStart, sourceEnd); - let contoursCount = signedInt16(glyf[0], glyf[1]); - - if (contoursCount < 0) { - contoursCount = -1; - writeSignedInt16(glyf, 0, contoursCount); - dest.set(glyf, destStart); - glyphProfile.length = glyf.length; - return glyphProfile; - } - - let i, - j = 10, - flagsCount = 0; - - for (i = 0; i < contoursCount; i++) { - const endPoint = glyf[j] << 8 | glyf[j + 1]; - flagsCount = endPoint + 1; - j += 2; - } - - const instructionsStart = j; - const instructionsLength = glyf[j] << 8 | glyf[j + 1]; - glyphProfile.sizeOfInstructions = instructionsLength; - j += 2 + instructionsLength; - const instructionsEnd = j; - let coordinatesLength = 0; - - for (i = 0; i < flagsCount; i++) { - const flag = glyf[j++]; - - if (flag & 0xc0) { - glyf[j - 1] = flag & 0x3f; - } - - let xLength = 2; - - if (flag & 2) { - xLength = 1; - } else if (flag & 16) { - xLength = 0; - } - - let yLength = 2; - - if (flag & 4) { - yLength = 1; - } else if (flag & 32) { - yLength = 0; - } - - const xyLength = xLength + yLength; - coordinatesLength += xyLength; - - if (flag & 8) { - const repeat = glyf[j++]; - i += repeat; - coordinatesLength += repeat * xyLength; - } - } - - if (coordinatesLength === 0) { - return glyphProfile; - } - - let glyphDataLength = j + coordinatesLength; - - if (glyphDataLength > glyf.length) { - return glyphProfile; - } - - if (!hintsValid && instructionsLength > 0) { - dest.set(glyf.subarray(0, instructionsStart), destStart); - dest.set([0, 0], destStart + instructionsStart); - dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2); - glyphDataLength -= instructionsLength; - - if (glyf.length - glyphDataLength > 3) { - glyphDataLength = glyphDataLength + 3 & ~3; - } - - glyphProfile.length = glyphDataLength; - return glyphProfile; - } - - if (glyf.length - glyphDataLength > 3) { - glyphDataLength = glyphDataLength + 3 & ~3; - dest.set(glyf.subarray(0, glyphDataLength), destStart); - glyphProfile.length = glyphDataLength; - return glyphProfile; - } - - dest.set(glyf, destStart); - glyphProfile.length = glyf.length; - return glyphProfile; - } - - function sanitizeHead(head, numGlyphs, locaLength) { - const data = head.data; - const version = int32(data[0], data[1], data[2], data[3]); - - if (version >> 16 !== 1) { - (0, _util.info)("Attempting to fix invalid version in head table: " + version); - data[0] = 0; - data[1] = 1; - data[2] = 0; - data[3] = 0; - } - - const indexToLocFormat = int16(data[50], data[51]); - - if (indexToLocFormat < 0 || indexToLocFormat > 1) { - (0, _util.info)("Attempting to fix invalid indexToLocFormat in head table: " + indexToLocFormat); - const numGlyphsPlusOne = numGlyphs + 1; - - if (locaLength === numGlyphsPlusOne << 1) { - data[50] = 0; - data[51] = 0; - } else if (locaLength === numGlyphsPlusOne << 2) { - data[50] = 0; - data[51] = 1; - } else { - throw new _util.FormatError("Could not fix indexToLocFormat: " + indexToLocFormat); - } - } - } - - function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) { - let itemSize, itemDecode, itemEncode; - - if (isGlyphLocationsLong) { - itemSize = 4; - - itemDecode = function fontItemDecodeLong(data, offset) { - return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; - }; - - itemEncode = function fontItemEncodeLong(data, offset, value) { - data[offset] = value >>> 24 & 0xff; - data[offset + 1] = value >> 16 & 0xff; - data[offset + 2] = value >> 8 & 0xff; - data[offset + 3] = value & 0xff; - }; - } else { - itemSize = 2; - - itemDecode = function fontItemDecode(data, offset) { - return data[offset] << 9 | data[offset + 1] << 1; - }; - - itemEncode = function fontItemEncode(data, offset, value) { - data[offset] = value >> 9 & 0xff; - data[offset + 1] = value >> 1 & 0xff; - }; - } - - const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs; - const locaDataSize = itemSize * (1 + numGlyphsOut); - const locaData = new Uint8Array(locaDataSize); - locaData.set(loca.data.subarray(0, locaDataSize)); - loca.data = locaData; - const oldGlyfData = glyf.data; - const oldGlyfDataLength = oldGlyfData.length; - const newGlyfData = new Uint8Array(oldGlyfDataLength); - let i, j; - const locaEntries = []; - - for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) { - let offset = itemDecode(locaData, j); - - if (offset > oldGlyfDataLength) { - offset = oldGlyfDataLength; - } - - locaEntries.push({ - index: i, - offset, - endOffset: 0 - }); - } - - locaEntries.sort((a, b) => { - return a.offset - b.offset; - }); - - for (i = 0; i < numGlyphs; i++) { - locaEntries[i].endOffset = locaEntries[i + 1].offset; - } - - locaEntries.sort((a, b) => { - return a.index - b.index; - }); - - for (i = 0; i < numGlyphs; i++) { - const { - offset, - endOffset - } = locaEntries[i]; - - if (offset !== 0 || endOffset !== 0) { - break; - } - - const nextOffset = locaEntries[i + 1].offset; - - if (nextOffset === 0) { - continue; - } - - locaEntries[i].endOffset = nextOffset; - break; - } - - const missingGlyphs = Object.create(null); - let writeOffset = 0; - itemEncode(locaData, 0, writeOffset); - - for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { - const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid); - const newLength = glyphProfile.length; - - if (newLength === 0) { - missingGlyphs[i] = true; - } - - if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) { - maxSizeOfInstructions = glyphProfile.sizeOfInstructions; - } - - writeOffset += newLength; - itemEncode(locaData, j, writeOffset); - } - - if (writeOffset === 0) { - const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); - - for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) { - itemEncode(locaData, j, simpleGlyph.length); - } - - glyf.data = simpleGlyph; - } else if (dupFirstEntry) { - const firstEntryLength = itemDecode(locaData, itemSize); - - if (newGlyfData.length > firstEntryLength + writeOffset) { - glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); - } else { - glyf.data = new Uint8Array(firstEntryLength + writeOffset); - glyf.data.set(newGlyfData.subarray(0, writeOffset)); - } - - glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); - itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength); - } else { - glyf.data = newGlyfData.subarray(0, writeOffset); - } - - return { - missingGlyphs, - maxSizeOfInstructions - }; - } - - function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) { - const start = (font.start ? font.start : 0) + post.offset; - font.pos = start; - const length = post.length, - end = start + length; - const version = font.getInt32(); - font.skip(28); - let glyphNames; - let valid = true; - let i; - - switch (version) { - case 0x00010000: - glyphNames = _fonts_utils.MacStandardGlyphOrdering; - break; - - case 0x00020000: - const numGlyphs = font.getUint16(); - - if (numGlyphs !== maxpNumGlyphs) { - valid = false; - break; - } - - const glyphNameIndexes = []; - - for (i = 0; i < numGlyphs; ++i) { - const index = font.getUint16(); - - if (index >= 32768) { - valid = false; - break; - } - - glyphNameIndexes.push(index); - } - - if (!valid) { - break; - } - - const customNames = [], - strBuf = []; - - while (font.pos < end) { - const stringLength = font.getByte(); - strBuf.length = stringLength; - - for (i = 0; i < stringLength; ++i) { - strBuf[i] = String.fromCharCode(font.getByte()); - } - - customNames.push(strBuf.join("")); - } - - glyphNames = []; - - for (i = 0; i < numGlyphs; ++i) { - const j = glyphNameIndexes[i]; - - if (j < 258) { - glyphNames.push(_fonts_utils.MacStandardGlyphOrdering[j]); - continue; - } - - glyphNames.push(customNames[j - 258]); - } - - break; - - case 0x00030000: - break; - - default: - (0, _util.warn)("Unknown/unsupported post table version " + version); - valid = false; - - if (propertiesObj.defaultEncoding) { - glyphNames = propertiesObj.defaultEncoding; - } - - break; - } - - propertiesObj.glyphNames = glyphNames; - return valid; - } - - function readNameTable(nameTable) { - const start = (font.start ? font.start : 0) + nameTable.offset; - font.pos = start; - const names = [[], []]; - const length = nameTable.length, - end = start + length; - const format = font.getUint16(); - const FORMAT_0_HEADER_LENGTH = 6; - - if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { - return names; - } - - const numRecords = font.getUint16(); - const stringsStart = font.getUint16(); - const records = []; - const NAME_RECORD_LENGTH = 12; - let i, ii; - - for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) { - const r = { - platform: font.getUint16(), - encoding: font.getUint16(), - language: font.getUint16(), - name: font.getUint16(), - length: font.getUint16(), - offset: font.getUint16() - }; - - if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) { - records.push(r); - } - } - - for (i = 0, ii = records.length; i < ii; i++) { - const record = records[i]; - - if (record.length <= 0) { - continue; - } - - const pos = start + stringsStart + record.offset; - - if (pos + record.length > end) { - continue; - } - - font.pos = pos; - const nameIndex = record.name; - - if (record.encoding) { - let str = ""; - - for (let j = 0, jj = record.length; j < jj; j += 2) { - str += String.fromCharCode(font.getUint16()); - } - - names[1][nameIndex] = str; - } else { - names[0][nameIndex] = font.getString(record.length); - } - } - - return names; - } - - const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; - - function sanitizeTTProgram(table, ttContext) { - let data = table.data; - let i = 0, - j, - n, - b, - funcId, - pc, - lastEndf = 0, - lastDeff = 0; - const stack = []; - const callstack = []; - const functionsCalled = []; - let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions; - let inFDEF = false, - ifLevel = 0, - inELSE = 0; - - for (let ii = data.length; i < ii;) { - const op = data[i++]; - - if (op === 0x40) { - n = data[i++]; - - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if (op === 0x41) { - n = data[i++]; - - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push(b << 8 | data[i++]); - } - } - } else if ((op & 0xf8) === 0xb0) { - n = op - 0xb0 + 1; - - if (inFDEF || inELSE) { - i += n; - } else { - for (j = 0; j < n; j++) { - stack.push(data[i++]); - } - } - } else if ((op & 0xf8) === 0xb8) { - n = op - 0xb8 + 1; - - if (inFDEF || inELSE) { - i += n * 2; - } else { - for (j = 0; j < n; j++) { - b = data[i++]; - stack.push(b << 8 | data[i++]); - } - } - } else if (op === 0x2b && !tooComplexToFollowFunctions) { - if (!inFDEF && !inELSE) { - funcId = stack[stack.length - 1]; - - if (isNaN(funcId)) { - (0, _util.info)("TT: CALL empty stack (or invalid entry)."); - } else { - ttContext.functionsUsed[funcId] = true; - - if (funcId in ttContext.functionsStackDeltas) { - const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId]; - - if (newStackLength < 0) { - (0, _util.warn)("TT: CALL invalid functions stack delta."); - ttContext.hintsValid = false; - return; - } - - stack.length = newStackLength; - } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) { - callstack.push({ - data, - i, - stackTop: stack.length - 1 - }); - functionsCalled.push(funcId); - pc = ttContext.functionsDefined[funcId]; - - if (!pc) { - (0, _util.warn)("TT: CALL non-existent function"); - ttContext.hintsValid = false; - return; - } - - data = pc.data; - i = pc.i; - } - } - } - } else if (op === 0x2c && !tooComplexToFollowFunctions) { - if (inFDEF || inELSE) { - (0, _util.warn)("TT: nested FDEFs not allowed"); - tooComplexToFollowFunctions = true; - } - - inFDEF = true; - lastDeff = i; - funcId = stack.pop(); - ttContext.functionsDefined[funcId] = { - data, - i - }; - } else if (op === 0x2d) { - if (inFDEF) { - inFDEF = false; - lastEndf = i; - } else { - pc = callstack.pop(); - - if (!pc) { - (0, _util.warn)("TT: ENDF bad stack"); - ttContext.hintsValid = false; - return; - } - - funcId = functionsCalled.pop(); - data = pc.data; - i = pc.i; - ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop; - } - } else if (op === 0x89) { - if (inFDEF || inELSE) { - (0, _util.warn)("TT: nested IDEFs not allowed"); - tooComplexToFollowFunctions = true; - } - - inFDEF = true; - lastDeff = i; - } else if (op === 0x58) { - ++ifLevel; - } else if (op === 0x1b) { - inELSE = ifLevel; - } else if (op === 0x59) { - if (inELSE === ifLevel) { - inELSE = 0; - } - - --ifLevel; - } else if (op === 0x1c) { - if (!inFDEF && !inELSE) { - const offset = stack[stack.length - 1]; - - if (offset > 0) { - i += offset - 1; - } - } - } - - if (!inFDEF && !inELSE) { - let stackDelta = 0; - - if (op <= 0x8e) { - stackDelta = TTOpsStackDeltas[op]; - } else if (op >= 0xc0 && op <= 0xdf) { - stackDelta = -1; - } else if (op >= 0xe0) { - stackDelta = -2; - } - - if (op >= 0x71 && op <= 0x75) { - n = stack.pop(); - - if (!isNaN(n)) { - stackDelta = -n * 2; - } - } - - while (stackDelta < 0 && stack.length > 0) { - stack.pop(); - stackDelta++; - } - - while (stackDelta > 0) { - stack.push(NaN); - stackDelta--; - } - } - } - - ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; - const content = [data]; - - if (i > data.length) { - content.push(new Uint8Array(i - data.length)); - } - - if (lastDeff > lastEndf) { - (0, _util.warn)("TT: complementing a missing function tail"); - content.push(new Uint8Array([0x22, 0x2d])); - } - - foldTTTable(table, content); - } - - function checkInvalidFunctions(ttContext, maxFunctionDefs) { - if (ttContext.tooComplexToFollowFunctions) { - return; - } - - if (ttContext.functionsDefined.length > maxFunctionDefs) { - (0, _util.warn)("TT: more functions defined than expected"); - ttContext.hintsValid = false; - return; - } - - for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { - if (j > maxFunctionDefs) { - (0, _util.warn)("TT: invalid function id: " + j); - ttContext.hintsValid = false; - return; - } - - if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { - (0, _util.warn)("TT: undefined function: " + j); - ttContext.hintsValid = false; - return; - } - } - } - - function foldTTTable(table, content) { - if (content.length > 1) { - let newLength = 0; - let j, jj; - - for (j = 0, jj = content.length; j < jj; j++) { - newLength += content[j].length; - } - - newLength = newLength + 3 & ~3; - const result = new Uint8Array(newLength); - let pos = 0; - - for (j = 0, jj = content.length; j < jj; j++) { - result.set(content[j], pos); - pos += content[j].length; - } - - table.data = result; - table.length = newLength; - } - } - - function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) { - const ttContext = { - functionsDefined: [], - functionsUsed: [], - functionsStackDeltas: [], - tooComplexToFollowFunctions: false, - hintsValid: true - }; - - if (fpgm) { - sanitizeTTProgram(fpgm, ttContext); - } - - if (prep) { - sanitizeTTProgram(prep, ttContext); - } - - if (fpgm) { - checkInvalidFunctions(ttContext, maxFunctionDefs); - } - - if (cvt && cvt.length & 1) { - const cvtData = new Uint8Array(cvt.length + 1); - cvtData.set(cvt.data); - cvt.data = cvtData; - } - - return ttContext.hintsValid; - } - - font = new _stream.Stream(new Uint8Array(font.getBytes())); - let header, tables; - - if (isTrueTypeCollectionFile(font)) { - const ttcData = readTrueTypeCollectionData(font, this.name); - header = ttcData.header; - tables = ttcData.tables; - } else { - header = readOpenTypeHeader(font); - tables = readTables(font, header.numTables); - } - - let cff, cffFile; - const isTrueType = !tables["CFF "]; - - if (!isTrueType) { - const isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap)); - - if (header.version === "OTTO" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) { - cffFile = new _stream.Stream(tables["CFF "].data); - cff = new _cff_font.CFFFont(cffFile, properties); - adjustWidths(properties); - return this.convert(name, cff, properties); - } - - delete tables.glyf; - delete tables.loca; - delete tables.fpgm; - delete tables.prep; - delete tables["cvt "]; - this.isOpenType = true; - } else { - if (!tables.loca) { - throw new _util.FormatError('Required "loca" table is not found'); - } - - if (!tables.glyf) { - (0, _util.warn)('Required "glyf" table is not found -- trying to recover.'); - tables.glyf = { - tag: "glyf", - data: new Uint8Array(0) - }; - } - - this.isOpenType = false; - } - - if (!tables.maxp) { - throw new _util.FormatError('Required "maxp" table is not found'); - } - - font.pos = (font.start || 0) + tables.maxp.offset; - const version = font.getInt32(); - const numGlyphs = font.getUint16(); - - if (properties.scaleFactors && properties.scaleFactors.length === numGlyphs && isTrueType) { - const { - scaleFactors - } = properties; - const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]); - const glyphs = new _glyf.GlyfTable({ - glyfTable: tables.glyf.data, - isGlyphLocationsLong, - locaTable: tables.loca.data, - numGlyphs - }); - glyphs.scale(scaleFactors); - const { - glyf, - loca, - isLocationLong - } = glyphs.write(); - tables.glyf.data = glyf; - tables.loca.data = loca; - - if (isLocationLong !== !!isGlyphLocationsLong) { - tables.head.data[50] = 0; - tables.head.data[51] = isLocationLong ? 1 : 0; - } - - const metrics = tables.hmtx.data; - - for (let i = 0; i < numGlyphs; i++) { - const j = 4 * i; - const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1])); - metrics[j] = advanceWidth >> 8 & 0xff; - metrics[j + 1] = advanceWidth & 0xff; - const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])); - writeSignedInt16(metrics, j + 2, lsb); - } - } - - let numGlyphsOut = numGlyphs + 1; - let dupFirstEntry = true; - - if (numGlyphsOut > 0xffff) { - dupFirstEntry = false; - numGlyphsOut = numGlyphs; - (0, _util.warn)("Not enough space in glyfs to duplicate first glyph."); - } - - let maxFunctionDefs = 0; - let maxSizeOfInstructions = 0; - - if (version >= 0x00010000 && tables.maxp.length >= 22) { - font.pos += 8; - const maxZones = font.getUint16(); - - if (maxZones > 2) { - tables.maxp.data[14] = 0; - tables.maxp.data[15] = 2; - } - - font.pos += 4; - maxFunctionDefs = font.getUint16(); - font.pos += 4; - maxSizeOfInstructions = font.getUint16(); - } - - tables.maxp.data[4] = numGlyphsOut >> 8; - tables.maxp.data[5] = numGlyphsOut & 255; - const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables["cvt "], maxFunctionDefs); - - if (!hintsValid) { - delete tables.fpgm; - delete tables.prep; - delete tables["cvt "]; - } - - sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry); - - if (!tables.head) { - throw new _util.FormatError('Required "head" table is not found'); - } - - sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0); - let missingGlyphs = Object.create(null); - - if (isTrueType) { - const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]); - const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions); - missingGlyphs = glyphsInfo.missingGlyphs; - - if (version >= 0x00010000 && tables.maxp.length >= 22) { - tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8; - tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255; - } - } - - if (!tables.hhea) { - throw new _util.FormatError('Required "hhea" table is not found'); - } - - if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) { - tables.hhea.data[10] = 0xff; - tables.hhea.data[11] = 0xff; - } - - const metricsOverride = { - unitsPerEm: int16(tables.head.data[18], tables.head.data[19]), - yMax: int16(tables.head.data[42], tables.head.data[43]), - yMin: signedInt16(tables.head.data[38], tables.head.data[39]), - ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]), - descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]), - lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]) - }; - this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; - this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; - this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm; - - if (this.cssFontInfo && this.cssFontInfo.lineHeight) { - this.lineHeight = this.cssFontInfo.metrics.lineHeight; - this.lineGap = this.cssFontInfo.metrics.lineGap; - } else { - this.lineHeight = this.ascent - this.descent + this.lineGap; - } - - if (tables.post) { - readPostScriptTable(tables.post, properties, numGlyphs); - } - - tables.post = { - tag: "post", - data: createPostTable(properties) - }; - const charCodeToGlyphId = []; - - function hasGlyph(glyphId) { - return !missingGlyphs[glyphId]; - } - - if (properties.composite) { - const cidToGidMap = properties.cidToGidMap || []; - const isCidToGidMapEmpty = cidToGidMap.length === 0; - properties.cMap.forEach(function (charCode, cid) { - if (typeof cid === "string") { - cid = convertCidString(charCode, cid, true); - } - - if (cid > 0xffff) { - throw new _util.FormatError("Max size of CID is 65,535"); - } - - let glyphId = -1; - - if (isCidToGidMapEmpty) { - glyphId = cid; - } else if (cidToGidMap[cid] !== undefined) { - glyphId = cidToGidMap[cid]; - } - - if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) { - charCodeToGlyphId[charCode] = glyphId; - } - }); - } else { - const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding); - const cmapPlatformId = cmapTable.platformId; - const cmapEncodingId = cmapTable.encodingId; - const cmapMappings = cmapTable.mappings; - const cmapMappingsLength = cmapMappings.length; - let baseEncoding = [], - forcePostTable = false; - - if (properties.hasEncoding && (properties.baseEncodingName === "MacRomanEncoding" || properties.baseEncodingName === "WinAnsiEncoding")) { - baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); - } - - if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) { - const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - - for (let charCode = 0; charCode < 256; charCode++) { - let glyphName; - - if (this.differences[charCode] !== undefined) { - glyphName = this.differences[charCode]; - } else if (baseEncoding.length && baseEncoding[charCode] !== "") { - glyphName = baseEncoding[charCode]; - } else { - glyphName = _encodings.StandardEncoding[charCode]; - } - - if (!glyphName) { - continue; - } - - const standardGlyphName = (0, _fonts_utils.recoverGlyphName)(glyphName, glyphsUnicodeMap); - let unicodeOrCharCode; - - if (cmapPlatformId === 3 && cmapEncodingId === 1) { - unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName]; - } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { - unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName); - } - - if (unicodeOrCharCode === undefined) { - if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { - const unicode = this.toUnicode.get(charCode); - - if (unicode) { - unicodeOrCharCode = unicode.codePointAt(0); - } - } - - if (unicodeOrCharCode === undefined) { - continue; - } - } - - for (let i = 0; i < cmapMappingsLength; ++i) { - if (cmapMappings[i].charCode !== unicodeOrCharCode) { - continue; - } - - charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; - break; - } - } - } else if (cmapPlatformId === 0) { - for (let i = 0; i < cmapMappingsLength; ++i) { - charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId; - } - - forcePostTable = true; - } else { - for (let i = 0; i < cmapMappingsLength; ++i) { - let charCode = cmapMappings[i].charCode; - - if (cmapPlatformId === 3 && charCode >= 0xf000 && charCode <= 0xf0ff) { - charCode &= 0xff; - } - - charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; - } - } - - if (properties.glyphNames && (baseEncoding.length || this.differences.length)) { - for (let i = 0; i < 256; ++i) { - if (!forcePostTable && charCodeToGlyphId[i] !== undefined) { - continue; - } - - const glyphName = this.differences[i] || baseEncoding[i]; - - if (!glyphName) { - continue; - } - - const glyphId = properties.glyphNames.indexOf(glyphName); - - if (glyphId > 0 && hasGlyph(glyphId)) { - charCodeToGlyphId[i] = glyphId; - } - } - } - } - - if (charCodeToGlyphId.length === 0) { - charCodeToGlyphId[0] = 0; - } - - let glyphZeroId = numGlyphsOut - 1; - - if (!dupFirstEntry) { - glyphZeroId = 0; - } - - if (!properties.cssFontInfo) { - const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId); - this.toFontChar = newMapping.toFontChar; - tables.cmap = { - tag: "cmap", - data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut) - }; - - if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"], font)) { - tables["OS/2"] = { - tag: "OS/2", - data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride) - }; - } - } - - if (!isTrueType) { - try { - cffFile = new _stream.Stream(tables["CFF "].data); - const parser = new _cff_parser.CFFParser(cffFile, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED); - cff = parser.parse(); - cff.duplicateFirstGlyph(); - const compiler = new _cff_parser.CFFCompiler(cff); - tables["CFF "].data = compiler.compile(); - } catch (e) { - (0, _util.warn)("Failed to compile font " + properties.loadedName); - } - } - - if (!tables.name) { - tables.name = { - tag: "name", - data: createNameTable(this.name) - }; - } else { - const namePrototype = readNameTable(tables.name); - tables.name.data = createNameTable(name, namePrototype); - this.psName = namePrototype[0][6] || null; - } - - const builder = new _opentype_file_builder.OpenTypeFileBuilder(header.version); - - for (const tableTag in tables) { - builder.addTable(tableTag, tables[tableTag].data); - } - - return builder.toArray(); - } - - convert(fontName, font, properties) { - properties.fixedPitch = false; - - if (properties.builtInEncoding) { - adjustToUnicode(properties, properties.builtInEncoding); - } - - let glyphZeroId = 1; - - if (font instanceof _cff_font.CFFFont) { - glyphZeroId = font.numGlyphs - 1; - } - - const mapping = font.getGlyphMapping(properties); - let newMapping = null; - let newCharCodeToGlyphId = mapping; - - if (!properties.cssFontInfo) { - newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId); - this.toFontChar = newMapping.toFontChar; - newCharCodeToGlyphId = newMapping.charCodeToGlyphId; - } - - const numGlyphs = font.numGlyphs; - - function getCharCodes(charCodeToGlyphId, glyphId) { - let charCodes = null; - - for (const charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - if (!charCodes) { - charCodes = []; - } - - charCodes.push(charCode | 0); - } - } - - return charCodes; - } - - function createCharCode(charCodeToGlyphId, glyphId) { - for (const charCode in charCodeToGlyphId) { - if (glyphId === charCodeToGlyphId[charCode]) { - return charCode | 0; - } - } - - newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId; - return newMapping.nextAvailableFontCharCode++; - } - - const seacs = font.seacs; - - if (newMapping && _fonts_utils.SEAC_ANALYSIS_ENABLED && seacs && seacs.length) { - const matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX; - const charset = font.getCharset(); - const seacMap = Object.create(null); - - for (let glyphId in seacs) { - glyphId |= 0; - const seac = seacs[glyphId]; - const baseGlyphName = _encodings.StandardEncoding[seac[2]]; - const accentGlyphName = _encodings.StandardEncoding[seac[3]]; - const baseGlyphId = charset.indexOf(baseGlyphName); - const accentGlyphId = charset.indexOf(accentGlyphName); - - if (baseGlyphId < 0 || accentGlyphId < 0) { - continue; - } - - const accentOffset = { - x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], - y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] - }; - const charCodes = getCharCodes(mapping, glyphId); - - if (!charCodes) { - continue; - } - - for (let i = 0, ii = charCodes.length; i < ii; i++) { - const charCode = charCodes[i]; - const charCodeToGlyphId = newMapping.charCodeToGlyphId; - const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId); - const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId); - seacMap[charCode] = { - baseFontCharCode, - accentFontCharCode, - accentOffset - }; - } - } - - properties.seacMap = seacMap; - } - - const unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; - const builder = new _opentype_file_builder.OpenTypeFileBuilder("\x4F\x54\x54\x4F"); - builder.addTable("CFF ", font.data); - builder.addTable("OS/2", createOS2Table(properties, newCharCodeToGlyphId)); - builder.addTable("cmap", createCmapTable(newCharCodeToGlyphId, numGlyphs)); - builder.addTable("head", "\x00\x01\x00\x00" + "\x00\x00\x10\x00" + "\x00\x00\x00\x00" + "\x5F\x0F\x3C\xF5" + "\x00\x00" + safeString16(unitsPerEm) + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00" + safeString16(properties.descent) + "\x0F\xFF" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + "\x00\x11" + "\x00\x00" + "\x00\x00" + "\x00\x00"); - builder.addTable("hhea", "\x00\x01\x00\x00" + safeString16(properties.ascent) + safeString16(properties.descent) + "\x00\x00" + "\xFF\xFF" + "\x00\x00" + "\x00\x00" + "\x00\x00" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + string16(numGlyphs)); - builder.addTable("hmtx", function fontFieldsHmtx() { - const charstrings = font.charstrings; - const cffWidths = font.cff ? font.cff.widths : null; - let hmtx = "\x00\x00\x00\x00"; - - for (let i = 1, ii = numGlyphs; i < ii; i++) { - let width = 0; - - if (charstrings) { - const charstring = charstrings[i - 1]; - width = "width" in charstring ? charstring.width : 0; - } else if (cffWidths) { - width = Math.ceil(cffWidths[i] || 0); - } - - hmtx += string16(width) + string16(0); - } - - return hmtx; - }()); - builder.addTable("maxp", "\x00\x00\x50\x00" + string16(numGlyphs)); - builder.addTable("name", createNameTable(fontName)); - builder.addTable("post", createPostTable(properties)); - return builder.toArray(); - } - - get spaceWidth() { - const possibleSpaceReplacements = ["space", "minus", "one", "i", "I"]; - let width; - - for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) { - const glyphName = possibleSpaceReplacements[i]; - - if (glyphName in this.widths) { - width = this.widths[glyphName]; - break; - } - - const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); - const glyphUnicode = glyphsUnicodeMap[glyphName]; - let charcode = 0; - - if (this.composite && this.cMap.contains(glyphUnicode)) { - charcode = this.cMap.lookup(glyphUnicode); - - if (typeof charcode === "string") { - charcode = convertCidString(glyphUnicode, charcode); - } - } - - if (!charcode && this.toUnicode) { - charcode = this.toUnicode.charCodeOf(glyphUnicode); - } - - if (charcode <= 0) { - charcode = glyphUnicode; - } - - width = this.widths[charcode]; - - if (width) { - break; - } - } - - width = width || this.defaultWidth; - return (0, _util.shadow)(this, "spaceWidth", width); - } - - _charToGlyph(charcode, isSpace = false) { - let fontCharCode, width, operatorListId; - let widthCode = charcode; - - if (this.cMap && this.cMap.contains(charcode)) { - widthCode = this.cMap.lookup(charcode); - - if (typeof widthCode === "string") { - widthCode = convertCidString(charcode, widthCode); - } - } - - width = this.widths[widthCode]; - - if (typeof width !== "number") { - width = this.defaultWidth; - } - - const vmetric = this.vmetrics && this.vmetrics[widthCode]; - let unicode = this.toUnicode.get(charcode) || charcode; - - if (typeof unicode === "number") { - unicode = String.fromCharCode(unicode); - } - - let isInFont = this.toFontChar[charcode] !== undefined; - fontCharCode = this.toFontChar[charcode] || charcode; - - if (this.missingFile) { - const glyphName = this.differences[charcode] || this.defaultEncoding[charcode]; - - if ((glyphName === ".notdef" || glyphName === "") && this.type === "Type1") { - fontCharCode = 0x20; - } - - fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode); - } - - if (this.isType3Font) { - operatorListId = fontCharCode; - } - - let accent = null; - - if (this.seacMap && this.seacMap[charcode]) { - isInFont = true; - const seac = this.seacMap[charcode]; - fontCharCode = seac.baseFontCharCode; - accent = { - fontChar: String.fromCodePoint(seac.accentFontCharCode), - offset: seac.accentOffset - }; - } - - let fontChar = ""; - - if (typeof fontCharCode === "number") { - if (fontCharCode <= 0x10ffff) { - fontChar = String.fromCodePoint(fontCharCode); - } else { - (0, _util.warn)(`charToGlyph - invalid fontCharCode: ${fontCharCode}`); - } - } - - let glyph = this._glyphCache[charcode]; - - if (!glyph || !glyph.matchesForCache(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) { - glyph = new Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont); - this._glyphCache[charcode] = glyph; - } - - return glyph; - } - - charsToGlyphs(chars) { - let glyphs = this._charsCache[chars]; - - if (glyphs) { - return glyphs; - } - - glyphs = []; - - if (this.cMap) { - const c = Object.create(null), - ii = chars.length; - let i = 0; - - while (i < ii) { - this.cMap.readCharCode(chars, i, c); - const { - charcode, - length - } = c; - i += length; - - const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20); - - glyphs.push(glyph); - } - } else { - for (let i = 0, ii = chars.length; i < ii; ++i) { - const charcode = chars.charCodeAt(i); - - const glyph = this._charToGlyph(charcode, charcode === 0x20); - - glyphs.push(glyph); - } - } - - return this._charsCache[chars] = 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; - - const getCharCode = this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode)); - - 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 charCode = getCharCode(unicode); - - 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; - } - -} - -exports.Font = Font; - -class ErrorFont { - constructor(error) { - this.error = error; - this.loadedName = "g_font_error"; - this.missingFile = true; - } - - charsToGlyphs() { - return []; - } - - encodeString(chars) { - return [chars]; - } - - exportData(extraProperties = false) { - return { - error: this.error - }; - } - -} - -exports.ErrorFont = ErrorFont; - -/***/ }), -/* 45 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -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__(46); - -var _encodings = __w_pdfjs_require__(19); - -const MAX_SUBR_NESTING = 10; -const 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"]; -exports.CFFStandardStrings = CFFStandardStrings; -const NUM_STANDARD_CFF_STRINGS = 391; - -const CFFParser = function CFFParserClosure() { - const CharstringValidationData = [null, { - id: "hstem", - min: 2, - stackClearing: true, - stem: true - }, null, { - id: "vstem", - min: 2, - stackClearing: true, - stem: true - }, { - id: "vmoveto", - min: 1, - stackClearing: true - }, { - id: "rlineto", - min: 2, - resetStack: true - }, { - id: "hlineto", - min: 1, - resetStack: true - }, { - id: "vlineto", - min: 1, - resetStack: true - }, { - id: "rrcurveto", - min: 6, - resetStack: true - }, null, { - id: "callsubr", - min: 1, - undefStack: true - }, { - id: "return", - min: 0, - undefStack: true - }, null, null, { - id: "endchar", - min: 0, - stackClearing: true - }, null, null, null, { - id: "hstemhm", - min: 2, - stackClearing: true, - stem: true - }, { - id: "hintmask", - min: 0, - stackClearing: true - }, { - id: "cntrmask", - min: 0, - stackClearing: true - }, { - id: "rmoveto", - min: 2, - stackClearing: true - }, { - id: "hmoveto", - min: 1, - stackClearing: true - }, { - id: "vstemhm", - min: 2, - stackClearing: true, - stem: true - }, { - id: "rcurveline", - min: 8, - resetStack: true - }, { - id: "rlinecurve", - min: 8, - resetStack: true - }, { - id: "vvcurveto", - min: 4, - resetStack: true - }, { - id: "hhcurveto", - min: 4, - resetStack: true - }, null, { - id: "callgsubr", - min: 1, - undefStack: true - }, { - id: "vhcurveto", - min: 4, - resetStack: true - }, { - id: "hvcurveto", - min: 4, - resetStack: true - }]; - const CharstringValidationData12 = [null, null, null, { - id: "and", - min: 2, - stackDelta: -1 - }, { - id: "or", - min: 2, - stackDelta: -1 - }, { - id: "not", - min: 1, - stackDelta: 0 - }, null, null, null, { - id: "abs", - min: 1, - stackDelta: 0 - }, { - id: "add", - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] + stack[index - 1]; - } - }, { - id: "sub", - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] - stack[index - 1]; - } - }, { - id: "div", - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] / stack[index - 1]; - } - }, null, { - id: "neg", - min: 1, - stackDelta: 0, - stackFn: function stack_div(stack, index) { - stack[index - 1] = -stack[index - 1]; - } - }, { - id: "eq", - min: 2, - stackDelta: -1 - }, null, null, { - id: "drop", - min: 1, - stackDelta: -1 - }, null, { - id: "put", - min: 2, - stackDelta: -2 - }, { - id: "get", - min: 1, - stackDelta: 0 - }, { - id: "ifelse", - min: 4, - stackDelta: -3 - }, { - id: "random", - min: 0, - stackDelta: 1 - }, { - id: "mul", - min: 2, - stackDelta: -1, - stackFn: function stack_div(stack, index) { - stack[index - 2] = stack[index - 2] * stack[index - 1]; - } - }, null, { - id: "sqrt", - min: 1, - stackDelta: 0 - }, { - id: "dup", - min: 1, - stackDelta: 1 - }, { - id: "exch", - min: 2, - stackDelta: 0 - }, { - id: "index", - min: 2, - stackDelta: 0 - }, { - id: "roll", - min: 3, - stackDelta: -2 - }, null, null, null, { - id: "hflex", - min: 7, - resetStack: true - }, { - id: "flex", - min: 13, - resetStack: true - }, { - id: "hflex1", - min: 9, - resetStack: true - }, { - id: "flex1", - min: 11, - resetStack: true - }]; - - class CFFParser { - constructor(file, properties, seacAnalysisEnabled) { - this.bytes = file.getBytes(); - this.properties = properties; - this.seacAnalysisEnabled = !!seacAnalysisEnabled; - } - - parse() { - const properties = this.properties; - const cff = new CFF(); - this.cff = cff; - const header = this.parseHeader(); - const nameIndex = this.parseIndex(header.endPos); - const topDictIndex = this.parseIndex(nameIndex.endPos); - const stringIndex = this.parseIndex(topDictIndex.endPos); - const globalSubrIndex = this.parseIndex(stringIndex.endPos); - const topDictParsed = this.parseDict(topDictIndex.obj.get(0)); - const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); - cff.header = header.obj; - cff.names = this.parseNameIndex(nameIndex.obj); - cff.strings = this.parseStringIndex(stringIndex.obj); - cff.topDict = topDict; - cff.globalSubrIndex = globalSubrIndex.obj; - this.parsePrivateDict(cff.topDict); - cff.isCIDFont = topDict.hasName("ROS"); - const charStringOffset = topDict.getByName("CharStrings"); - const charStringIndex = this.parseIndex(charStringOffset).obj; - const fontMatrix = topDict.getByName("FontMatrix"); - - if (fontMatrix) { - properties.fontMatrix = fontMatrix; - } - - const fontBBox = topDict.getByName("FontBBox"); - - if (fontBBox) { - properties.ascent = Math.max(fontBBox[3], fontBBox[1]); - properties.descent = Math.min(fontBBox[1], fontBBox[3]); - properties.ascentScaled = true; - } - - let charset, encoding; - - if (cff.isCIDFont) { - const fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj; - - for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) { - const dictRaw = fdArrayIndex.get(i); - const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings); - this.parsePrivateDict(fontDict); - cff.fdArray.push(fontDict); - } - - encoding = null; - charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, true); - cff.fdSelect = this.parseFDSelect(topDict.getByName("FDSelect"), charStringIndex.count); - } else { - charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, false); - encoding = this.parseEncoding(topDict.getByName("Encoding"), properties, cff.strings, charset.charset); - } - - cff.charset = charset; - cff.encoding = encoding; - const charStringsAndSeacs = this.parseCharStrings({ - charStrings: charStringIndex, - localSubrIndex: topDict.privateDict.subrsIndex, - globalSubrIndex: globalSubrIndex.obj, - fdSelect: cff.fdSelect, - fdArray: cff.fdArray, - privateDict: topDict.privateDict - }); - cff.charStrings = charStringsAndSeacs.charStrings; - cff.seacs = charStringsAndSeacs.seacs; - cff.widths = charStringsAndSeacs.widths; - return cff; - } - - parseHeader() { - let bytes = this.bytes; - const bytesLength = bytes.length; - let offset = 0; - - while (offset < bytesLength && bytes[offset] !== 1) { - ++offset; - } - - if (offset >= bytesLength) { - throw new _util.FormatError("Invalid CFF header"); - } - - if (offset !== 0) { - (0, _util.info)("cff data is shifted"); - bytes = bytes.subarray(offset); - this.bytes = bytes; - } - - const major = bytes[0]; - const minor = bytes[1]; - const hdrSize = bytes[2]; - const offSize = bytes[3]; - const header = new CFFHeader(major, minor, hdrSize, offSize); - return { - obj: header, - endPos: hdrSize - }; - } - - parseDict(dict) { - let pos = 0; - - function parseOperand() { - let value = dict[pos++]; - - if (value === 30) { - return parseFloatOperand(); - } else if (value === 28) { - value = dict[pos++]; - value = (value << 24 | dict[pos++] << 16) >> 16; - return value; - } else if (value === 29) { - value = dict[pos++]; - value = value << 8 | dict[pos++]; - value = value << 8 | dict[pos++]; - value = value << 8 | dict[pos++]; - return value; - } else if (value >= 32 && value <= 246) { - return value - 139; - } else if (value >= 247 && value <= 250) { - return (value - 247) * 256 + dict[pos++] + 108; - } else if (value >= 251 && value <= 254) { - return -((value - 251) * 256) - dict[pos++] - 108; - } - - (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.'); - return NaN; - } - - function parseFloatOperand() { - let str = ""; - const eof = 15; - const lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"]; - const length = dict.length; - - while (pos < length) { - const b = dict[pos++]; - const b1 = b >> 4; - const b2 = b & 15; - - if (b1 === eof) { - break; - } - - str += lookup[b1]; - - if (b2 === eof) { - break; - } - - str += lookup[b2]; - } - - return parseFloat(str); - } - - let operands = []; - const entries = []; - pos = 0; - const end = dict.length; - - while (pos < end) { - let b = dict[pos]; - - if (b <= 21) { - if (b === 12) { - b = b << 8 | dict[++pos]; - } - - entries.push([b, operands]); - operands = []; - ++pos; - } else { - operands.push(parseOperand()); - } - } - - return entries; - } - - parseIndex(pos) { - const cffIndex = new CFFIndex(); - const bytes = this.bytes; - const count = bytes[pos++] << 8 | bytes[pos++]; - const offsets = []; - let end = pos; - let i, ii; - - if (count !== 0) { - const offsetSize = bytes[pos++]; - const startPos = pos + (count + 1) * offsetSize - 1; - - for (i = 0, ii = count + 1; i < ii; ++i) { - let offset = 0; - - for (let j = 0; j < offsetSize; ++j) { - offset <<= 8; - offset += bytes[pos++]; - } - - offsets.push(startPos + offset); - } - - end = offsets[count]; - } - - for (i = 0, ii = offsets.length - 1; i < ii; ++i) { - const offsetStart = offsets[i]; - const offsetEnd = offsets[i + 1]; - cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); - } - - return { - obj: cffIndex, - endPos: end - }; - } - - parseNameIndex(index) { - const names = []; - - for (let i = 0, ii = index.count; i < ii; ++i) { - const name = index.get(i); - names.push((0, _util.bytesToString)(name)); - } - - return names; - } - - parseStringIndex(index) { - const strings = new CFFStrings(); - - for (let i = 0, ii = index.count; i < ii; ++i) { - const data = index.get(i); - strings.add((0, _util.bytesToString)(data)); - } - - return strings; - } - - createDict(Type, dict, strings) { - const cffDict = new Type(strings); - - for (let i = 0, ii = dict.length; i < ii; ++i) { - const pair = dict[i]; - const key = pair[0]; - const value = pair[1]; - cffDict.setByKey(key, value); - } - - return cffDict; - } - - parseCharString(state, data, localSubrIndex, globalSubrIndex) { - if (!data || state.callDepth > MAX_SUBR_NESTING) { - return false; - } - - let stackSize = state.stackSize; - const stack = state.stack; - const length = data.length; - - for (let j = 0; j < length;) { - const value = data[j++]; - let validationCommand = null; - - if (value === 12) { - const q = data[j++]; - - if (q === 0) { - data[j - 2] = 139; - data[j - 1] = 22; - stackSize = 0; - } else { - validationCommand = CharstringValidationData12[q]; - } - } else if (value === 28) { - stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16; - j += 2; - stackSize++; - } else if (value === 14) { - if (stackSize >= 4) { - stackSize -= 4; - - if (this.seacAnalysisEnabled) { - state.seac = stack.slice(stackSize, stackSize + 4); - return false; - } - } - - validationCommand = CharstringValidationData[value]; - } else if (value >= 32 && value <= 246) { - stack[stackSize] = value - 139; - stackSize++; - } else if (value >= 247 && value <= 254) { - stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108; - j++; - stackSize++; - } else if (value === 255) { - stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536; - j += 4; - stackSize++; - } else if (value === 19 || value === 20) { - state.hints += stackSize >> 1; - j += state.hints + 7 >> 3; - stackSize %= 2; - validationCommand = CharstringValidationData[value]; - } else if (value === 10 || value === 29) { - let subrsIndex; - - if (value === 10) { - subrsIndex = localSubrIndex; - } else { - subrsIndex = globalSubrIndex; - } - - if (!subrsIndex) { - validationCommand = CharstringValidationData[value]; - (0, _util.warn)("Missing subrsIndex for " + validationCommand.id); - return false; - } - - let bias = 32768; - - if (subrsIndex.count < 1240) { - bias = 107; - } else if (subrsIndex.count < 33900) { - bias = 1131; - } - - const subrNumber = stack[--stackSize] + bias; - - if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) { - validationCommand = CharstringValidationData[value]; - (0, _util.warn)("Out of bounds subrIndex for " + validationCommand.id); - return false; - } - - state.stackSize = stackSize; - state.callDepth++; - const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex); - - if (!valid) { - return false; - } - - state.callDepth--; - stackSize = state.stackSize; - continue; - } else if (value === 11) { - state.stackSize = stackSize; - return true; - } else if (value === 0 && j === data.length) { - data[j - 1] = 14; - validationCommand = CharstringValidationData[14]; - } else { - validationCommand = CharstringValidationData[value]; - } - - if (validationCommand) { - if (validationCommand.stem) { - state.hints += stackSize >> 1; - - if (value === 3 || value === 23) { - state.hasVStems = true; - } else if (state.hasVStems && (value === 1 || value === 18)) { - (0, _util.warn)("CFF stem hints are in wrong order"); - data[j - 1] = value === 1 ? 3 : 23; - } - } - - if ("min" in validationCommand) { - if (!state.undefStack && stackSize < validationCommand.min) { - (0, _util.warn)("Not enough parameters for " + validationCommand.id + "; actual: " + stackSize + ", expected: " + validationCommand.min); - - if (stackSize === 0) { - data[j - 1] = 14; - return true; - } - - return false; - } - } - - if (state.firstStackClearing && validationCommand.stackClearing) { - state.firstStackClearing = false; - stackSize -= validationCommand.min; - - if (stackSize >= 2 && validationCommand.stem) { - stackSize %= 2; - } else if (stackSize > 1) { - (0, _util.warn)("Found too many parameters for stack-clearing command"); - } - - if (stackSize > 0) { - state.width = stack[stackSize - 1]; - } - } - - if ("stackDelta" in validationCommand) { - if ("stackFn" in validationCommand) { - validationCommand.stackFn(stack, stackSize); - } - - stackSize += validationCommand.stackDelta; - } else if (validationCommand.stackClearing) { - stackSize = 0; - } else if (validationCommand.resetStack) { - stackSize = 0; - state.undefStack = false; - } else if (validationCommand.undefStack) { - stackSize = 0; - state.undefStack = true; - state.firstStackClearing = false; - } - } - } - - state.stackSize = stackSize; - return true; - } - - parseCharStrings({ - charStrings, - localSubrIndex, - globalSubrIndex, - fdSelect, - fdArray, - privateDict - }) { - const seacs = []; - const widths = []; - const count = charStrings.count; - - for (let i = 0; i < count; i++) { - const charstring = charStrings.get(i); - const state = { - callDepth: 0, - stackSize: 0, - stack: [], - undefStack: true, - hints: 0, - firstStackClearing: true, - seac: null, - width: null, - hasVStems: false - }; - let valid = true; - let localSubrToUse = null; - let privateDictToUse = privateDict; - - if (fdSelect && fdArray.length) { - const fdIndex = fdSelect.getFDIndex(i); - - if (fdIndex === -1) { - (0, _util.warn)("Glyph index is not in fd select."); - valid = false; - } - - if (fdIndex >= fdArray.length) { - (0, _util.warn)("Invalid fd index for glyph index."); - valid = false; - } - - if (valid) { - privateDictToUse = fdArray[fdIndex].privateDict; - localSubrToUse = privateDictToUse.subrsIndex; - } - } else if (localSubrIndex) { - localSubrToUse = localSubrIndex; - } - - if (valid) { - valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); - } - - if (state.width !== null) { - const nominalWidth = privateDictToUse.getByName("nominalWidthX"); - widths[i] = nominalWidth + state.width; - } else { - const defaultWidth = privateDictToUse.getByName("defaultWidthX"); - widths[i] = defaultWidth; - } - - if (state.seac !== null) { - seacs[i] = state.seac; - } - - if (!valid) { - charStrings.set(i, new Uint8Array([14])); - } - } - - return { - charStrings, - seacs, - widths - }; - } - - emptyPrivateDictionary(parentDict) { - const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings); - parentDict.setByKey(18, [0, 0]); - parentDict.privateDict = privateDict; - } - - parsePrivateDict(parentDict) { - if (!parentDict.hasName("Private")) { - this.emptyPrivateDictionary(parentDict); - return; - } - - const privateOffset = parentDict.getByName("Private"); - - if (!Array.isArray(privateOffset) || privateOffset.length !== 2) { - parentDict.removeByName("Private"); - return; - } - - const size = privateOffset[0]; - const offset = privateOffset[1]; - - if (size === 0 || offset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - - const privateDictEnd = offset + size; - const dictData = this.bytes.subarray(offset, privateDictEnd); - const dict = this.parseDict(dictData); - const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings); - parentDict.privateDict = privateDict; - - if (!privateDict.getByName("Subrs")) { - return; - } - - const subrsOffset = privateDict.getByName("Subrs"); - const relativeOffset = offset + subrsOffset; - - if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { - this.emptyPrivateDictionary(parentDict); - return; - } - - const subrsIndex = this.parseIndex(relativeOffset); - privateDict.subrsIndex = subrsIndex.obj; - } - - parseCharsets(pos, length, strings, cid) { - if (pos === 0) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset); - } else if (pos === 1) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset); - } else if (pos === 2) { - return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset); - } - - const bytes = this.bytes; - const start = pos; - const format = bytes[pos++]; - const charset = [cid ? 0 : ".notdef"]; - let id, count, i; - length -= 1; - - switch (format) { - case 0: - for (i = 0; i < length; i++) { - id = bytes[pos++] << 8 | bytes[pos++]; - charset.push(cid ? id : strings.get(id)); - } - - break; - - case 1: - while (charset.length <= length) { - id = bytes[pos++] << 8 | bytes[pos++]; - count = bytes[pos++]; - - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - - break; - - case 2: - while (charset.length <= length) { - id = bytes[pos++] << 8 | bytes[pos++]; - count = bytes[pos++] << 8 | bytes[pos++]; - - for (i = 0; i <= count; i++) { - charset.push(cid ? id++ : strings.get(id++)); - } - } - - break; - - default: - throw new _util.FormatError("Unknown charset format"); - } - - const end = pos; - const raw = bytes.subarray(start, end); - return new CFFCharset(false, format, charset, raw); - } - - parseEncoding(pos, properties, strings, charset) { - const encoding = Object.create(null); - const bytes = this.bytes; - let predefined = false; - let format, i, ii; - let raw = null; - - function readSupplement() { - const supplementsCount = bytes[pos++]; - - for (i = 0; i < supplementsCount; i++) { - const code = bytes[pos++]; - const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); - encoding[code] = charset.indexOf(strings.get(sid)); - } - } - - if (pos === 0 || pos === 1) { - predefined = true; - format = pos; - const baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding; - - for (i = 0, ii = charset.length; i < ii; i++) { - const index = baseEncoding.indexOf(charset[i]); - - if (index !== -1) { - encoding[index] = i; - } - } - } else { - const dataStart = pos; - format = bytes[pos++]; - - switch (format & 0x7f) { - case 0: - const glyphsCount = bytes[pos++]; - - for (i = 1; i <= glyphsCount; i++) { - encoding[bytes[pos++]] = i; - } - - break; - - case 1: - const rangesCount = bytes[pos++]; - let gid = 1; - - for (i = 0; i < rangesCount; i++) { - const start = bytes[pos++]; - const left = bytes[pos++]; - - for (let j = start; j <= start + left; j++) { - encoding[j] = gid++; - } - } - - break; - - default: - throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`); - } - - const dataEnd = pos; - - if (format & 0x80) { - bytes[dataStart] &= 0x7f; - readSupplement(); - } - - raw = bytes.subarray(dataStart, dataEnd); - } - - format &= 0x7f; - return new CFFEncoding(predefined, format, encoding, raw); - } - - parseFDSelect(pos, length) { - const bytes = this.bytes; - const format = bytes[pos++]; - const fdSelect = []; - let i; - - switch (format) { - case 0: - for (i = 0; i < length; ++i) { - const id = bytes[pos++]; - fdSelect.push(id); - } - - break; - - case 3: - const rangesCount = bytes[pos++] << 8 | bytes[pos++]; - - for (i = 0; i < rangesCount; ++i) { - let first = bytes[pos++] << 8 | bytes[pos++]; - - if (i === 0 && first !== 0) { - (0, _util.warn)("parseFDSelect: The first range must have a first GID of 0" + " -- trying to recover."); - first = 0; - } - - const fdIndex = bytes[pos++]; - const next = bytes[pos] << 8 | bytes[pos + 1]; - - for (let j = first; j < next; ++j) { - fdSelect.push(fdIndex); - } - } - - pos += 2; - break; - - default: - throw new _util.FormatError(`parseFDSelect: Unknown format "${format}".`); - } - - if (fdSelect.length !== length) { - throw new _util.FormatError("parseFDSelect: Invalid font data."); - } - - return new CFFFDSelect(format, fdSelect); - } - - } - - return CFFParser; -}(); - -exports.CFFParser = CFFParser; - -class CFF { - constructor() { - this.header = null; - this.names = []; - this.topDict = null; - this.strings = new CFFStrings(); - this.globalSubrIndex = null; - this.encoding = null; - this.charset = null; - this.charStrings = null; - this.fdArray = []; - this.fdSelect = null; - this.isCIDFont = false; - } - - duplicateFirstGlyph() { - if (this.charStrings.count >= 65535) { - (0, _util.warn)("Not enough space in charstrings to duplicate first glyph."); - return; - } - - const glyphZero = this.charStrings.get(0); - this.charStrings.add(glyphZero); - - if (this.isCIDFont) { - this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]); - } - } - - hasGlyphId(id) { - if (id < 0 || id >= this.charStrings.count) { - return false; - } - - const glyph = this.charStrings.get(id); - return glyph.length > 0; - } - -} - -exports.CFF = CFF; - -class CFFHeader { - constructor(major, minor, hdrSize, offSize) { - this.major = major; - this.minor = minor; - this.hdrSize = hdrSize; - this.offSize = offSize; - } - -} - -exports.CFFHeader = CFFHeader; - -class CFFStrings { - constructor() { - this.strings = []; - } - - get(index) { - if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) { - return CFFStandardStrings[index]; - } - - if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) { - return this.strings[index - NUM_STANDARD_CFF_STRINGS]; - } - - return CFFStandardStrings[0]; - } - - getSID(str) { - let index = CFFStandardStrings.indexOf(str); - - if (index !== -1) { - return index; - } - - index = this.strings.indexOf(str); - - if (index !== -1) { - return index + NUM_STANDARD_CFF_STRINGS; - } - - return -1; - } - - add(value) { - this.strings.push(value); - } - - get count() { - return this.strings.length; - } - -} - -exports.CFFStrings = CFFStrings; - -class CFFIndex { - constructor() { - this.objects = []; - this.length = 0; - } - - add(data) { - this.length += data.length; - this.objects.push(data); - } - - set(index, data) { - this.length += data.length - this.objects[index].length; - this.objects[index] = data; - } - - get(index) { - return this.objects[index]; - } - - get count() { - return this.objects.length; - } - -} - -exports.CFFIndex = CFFIndex; - -class CFFDict { - constructor(tables, strings) { - this.keyToNameMap = tables.keyToNameMap; - this.nameToKeyMap = tables.nameToKeyMap; - this.defaults = tables.defaults; - this.types = tables.types; - this.opcodes = tables.opcodes; - this.order = tables.order; - this.strings = strings; - this.values = Object.create(null); - } - - setByKey(key, value) { - if (!(key in this.keyToNameMap)) { - return false; - } - - const valueLength = value.length; - - if (valueLength === 0) { - return true; - } - - for (let i = 0; i < valueLength; i++) { - if (isNaN(value[i])) { - (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".'); - return true; - } - } - - const type = this.types[key]; - - if (type === "num" || type === "sid" || type === "offset") { - value = value[0]; - } - - this.values[key] = value; - return true; - } - - setByName(name, value) { - if (!(name in this.nameToKeyMap)) { - throw new _util.FormatError(`Invalid dictionary name "${name}"`); - } - - this.values[this.nameToKeyMap[name]] = value; - } - - hasName(name) { - return this.nameToKeyMap[name] in this.values; - } - - getByName(name) { - if (!(name in this.nameToKeyMap)) { - throw new _util.FormatError(`Invalid dictionary name ${name}"`); - } - - const key = this.nameToKeyMap[name]; - - if (!(key in this.values)) { - return this.defaults[key]; - } - - return this.values[key]; - } - - removeByName(name) { - delete this.values[this.nameToKeyMap[name]]; - } - - static createTables(layout) { - const tables = { - keyToNameMap: {}, - nameToKeyMap: {}, - defaults: {}, - types: {}, - opcodes: {}, - order: [] - }; - - for (let i = 0, ii = layout.length; i < ii; ++i) { - const entry = layout[i]; - const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; - tables.keyToNameMap[key] = entry[1]; - tables.nameToKeyMap[entry[1]] = key; - tables.types[key] = entry[2]; - tables.defaults[key] = entry[3]; - tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]]; - tables.order.push(key); - } - - return tables; - } - -} - -const CFFTopDict = function CFFTopDictClosure() { - const layout = [[[12, 30], "ROS", ["sid", "sid", "num"], null], [[12, 20], "SyntheticBase", "num", null], [0, "version", "sid", null], [1, "Notice", "sid", null], [[12, 0], "Copyright", "sid", null], [2, "FullName", "sid", null], [3, "FamilyName", "sid", null], [4, "Weight", "sid", null], [[12, 1], "isFixedPitch", "num", 0], [[12, 2], "ItalicAngle", "num", 0], [[12, 3], "UnderlinePosition", "num", -100], [[12, 4], "UnderlineThickness", "num", 50], [[12, 5], "PaintType", "num", 0], [[12, 6], "CharstringType", "num", 2], [[12, 7], "FontMatrix", ["num", "num", "num", "num", "num", "num"], [0.001, 0, 0, 0.001, 0, 0]], [13, "UniqueID", "num", null], [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], [[12, 8], "StrokeWidth", "num", 0], [14, "XUID", "array", null], [15, "charset", "offset", 0], [16, "Encoding", "offset", 0], [17, "CharStrings", "offset", 0], [18, "Private", ["offset", "offset"], null], [[12, 21], "PostScript", "sid", null], [[12, 22], "BaseFontName", "sid", null], [[12, 23], "BaseFontBlend", "delta", null], [[12, 31], "CIDFontVersion", "num", 0], [[12, 32], "CIDFontRevision", "num", 0], [[12, 33], "CIDFontType", "num", 0], [[12, 34], "CIDCount", "num", 8720], [[12, 35], "UIDBase", "num", null], [[12, 37], "FDSelect", "offset", null], [[12, 36], "FDArray", "offset", null], [[12, 38], "FontName", "sid", null]]; - let tables = null; - - class CFFTopDict extends CFFDict { - constructor(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - - super(tables, strings); - this.privateDict = null; - } - - } - - return CFFTopDict; -}(); - -exports.CFFTopDict = CFFTopDict; - -const CFFPrivateDict = function CFFPrivateDictClosure() { - const layout = [[6, "BlueValues", "delta", null], [7, "OtherBlues", "delta", null], [8, "FamilyBlues", "delta", null], [9, "FamilyOtherBlues", "delta", null], [[12, 9], "BlueScale", "num", 0.039625], [[12, 10], "BlueShift", "num", 7], [[12, 11], "BlueFuzz", "num", 1], [10, "StdHW", "num", null], [11, "StdVW", "num", null], [[12, 12], "StemSnapH", "delta", null], [[12, 13], "StemSnapV", "delta", null], [[12, 14], "ForceBold", "num", 0], [[12, 17], "LanguageGroup", "num", 0], [[12, 18], "ExpansionFactor", "num", 0.06], [[12, 19], "initialRandomSeed", "num", 0], [20, "defaultWidthX", "num", 0], [21, "nominalWidthX", "num", 0], [19, "Subrs", "offset", null]]; - let tables = null; - - class CFFPrivateDict extends CFFDict { - constructor(strings) { - if (tables === null) { - tables = CFFDict.createTables(layout); - } - - super(tables, strings); - this.subrsIndex = null; - } - - } - - return CFFPrivateDict; -}(); - -exports.CFFPrivateDict = CFFPrivateDict; -const CFFCharsetPredefinedTypes = { - ISO_ADOBE: 0, - EXPERT: 1, - EXPERT_SUBSET: 2 -}; - -class CFFCharset { - constructor(predefined, format, charset, raw) { - this.predefined = predefined; - this.format = format; - this.charset = charset; - this.raw = raw; - } - -} - -exports.CFFCharset = CFFCharset; - -class CFFEncoding { - constructor(predefined, format, encoding, raw) { - this.predefined = predefined; - this.format = format; - this.encoding = encoding; - this.raw = raw; - } - -} - -class CFFFDSelect { - constructor(format, fdSelect) { - this.format = format; - this.fdSelect = fdSelect; - } - - getFDIndex(glyphIndex) { - if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) { - return -1; - } - - return this.fdSelect[glyphIndex]; - } - -} - -exports.CFFFDSelect = CFFFDSelect; - -class CFFOffsetTracker { - constructor() { - this.offsets = Object.create(null); - } - - isTracking(key) { - return key in this.offsets; - } - - track(key, location) { - if (key in this.offsets) { - throw new _util.FormatError(`Already tracking location of ${key}`); - } - - this.offsets[key] = location; - } - - offset(value) { - for (const key in this.offsets) { - this.offsets[key] += value; - } - } - - setEntryLocation(key, values, output) { - if (!(key in this.offsets)) { - throw new _util.FormatError(`Not tracking location of ${key}`); - } - - const data = output.data; - const dataOffset = this.offsets[key]; - const size = 5; - - for (let i = 0, ii = values.length; i < ii; ++i) { - const offset0 = i * size + dataOffset; - const offset1 = offset0 + 1; - const offset2 = offset0 + 2; - const offset3 = offset0 + 3; - const offset4 = offset0 + 4; - - if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { - throw new _util.FormatError("writing to an offset that is not empty"); - } - - const value = values[i]; - data[offset0] = 0x1d; - data[offset1] = value >> 24 & 0xff; - data[offset2] = value >> 16 & 0xff; - data[offset3] = value >> 8 & 0xff; - data[offset4] = value & 0xff; - } - } - -} - -class CFFCompiler { - constructor(cff) { - this.cff = cff; - } - - compile() { - const cff = this.cff; - const output = { - data: [], - length: 0, - add: function CFFCompiler_add(data) { - this.data = this.data.concat(data); - this.length = this.data.length; - } - }; - const header = this.compileHeader(cff.header); - output.add(header); - const nameIndex = this.compileNameIndex(cff.names); - output.add(nameIndex); - - if (cff.isCIDFont) { - if (cff.topDict.hasName("FontMatrix")) { - const base = cff.topDict.getByName("FontMatrix"); - cff.topDict.removeByName("FontMatrix"); - - for (let i = 0, ii = cff.fdArray.length; i < ii; i++) { - const subDict = cff.fdArray[i]; - let matrix = base.slice(0); - - if (subDict.hasName("FontMatrix")) { - matrix = _util.Util.transform(matrix, subDict.getByName("FontMatrix")); - } - - subDict.setByName("FontMatrix", matrix); - } - } - } - - const xuid = cff.topDict.getByName("XUID"); - - if (xuid && xuid.length > 16) { - cff.topDict.removeByName("XUID"); - } - - cff.topDict.setByName("charset", 0); - let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont); - output.add(compiled.output); - const topDictTracker = compiled.trackers[0]; - const stringIndex = this.compileStringIndex(cff.strings.strings); - output.add(stringIndex); - const globalSubrIndex = this.compileIndex(cff.globalSubrIndex); - output.add(globalSubrIndex); - - if (cff.encoding && cff.topDict.hasName("Encoding")) { - if (cff.encoding.predefined) { - topDictTracker.setEntryLocation("Encoding", [cff.encoding.format], output); - } else { - const encoding = this.compileEncoding(cff.encoding); - topDictTracker.setEntryLocation("Encoding", [output.length], output); - output.add(encoding); - } - } - - const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont); - topDictTracker.setEntryLocation("charset", [output.length], output); - output.add(charset); - const charStrings = this.compileCharStrings(cff.charStrings); - topDictTracker.setEntryLocation("CharStrings", [output.length], output); - output.add(charStrings); - - if (cff.isCIDFont) { - topDictTracker.setEntryLocation("FDSelect", [output.length], output); - const fdSelect = this.compileFDSelect(cff.fdSelect); - output.add(fdSelect); - compiled = this.compileTopDicts(cff.fdArray, output.length, true); - topDictTracker.setEntryLocation("FDArray", [output.length], output); - output.add(compiled.output); - const fontDictTrackers = compiled.trackers; - this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); - } - - this.compilePrivateDicts([cff.topDict], [topDictTracker], output); - output.add([0]); - return output.data; - } - - encodeNumber(value) { - if (Number.isInteger(value)) { - return this.encodeInteger(value); - } - - return this.encodeFloat(value); - } - - static get EncodeFloatRegExp() { - return (0, _util.shadow)(this, "EncodeFloatRegExp", /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/); - } - - encodeFloat(num) { - let value = num.toString(); - const m = CFFCompiler.EncodeFloatRegExp.exec(value); - - if (m) { - const epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length)); - value = (Math.round(num * epsilon) / epsilon).toString(); - } - - let nibbles = ""; - let i, ii; - - for (i = 0, ii = value.length; i < ii; ++i) { - const a = value[i]; - - if (a === "e") { - nibbles += value[++i] === "-" ? "c" : "b"; - } else if (a === ".") { - nibbles += "a"; - } else if (a === "-") { - nibbles += "e"; - } else { - nibbles += a; - } - } - - nibbles += nibbles.length & 1 ? "f" : "ff"; - const out = [30]; - - for (i = 0, ii = nibbles.length; i < ii; i += 2) { - out.push(parseInt(nibbles.substring(i, i + 2), 16)); - } - - return out; - } - - encodeInteger(value) { - let code; - - if (value >= -107 && value <= 107) { - code = [value + 139]; - } else if (value >= 108 && value <= 1131) { - value -= 108; - code = [(value >> 8) + 247, value & 0xff]; - } else if (value >= -1131 && value <= -108) { - value = -value - 108; - code = [(value >> 8) + 251, value & 0xff]; - } else if (value >= -32768 && value <= 32767) { - code = [0x1c, value >> 8 & 0xff, value & 0xff]; - } else { - code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff]; - } - - return code; - } - - compileHeader(header) { - return [header.major, header.minor, 4, header.offSize]; - } - - compileNameIndex(names) { - const nameIndex = new CFFIndex(); - - for (let i = 0, ii = names.length; i < ii; ++i) { - const name = names[i]; - const length = Math.min(name.length, 127); - let sanitizedName = new Array(length); - - for (let j = 0; j < length; j++) { - let char = name[j]; - - if (char < "!" || char > "~" || char === "[" || char === "]" || char === "(" || char === ")" || char === "{" || char === "}" || char === "<" || char === ">" || char === "/" || char === "%") { - char = "_"; - } - - sanitizedName[j] = char; - } - - sanitizedName = sanitizedName.join(""); - - if (sanitizedName === "") { - sanitizedName = "Bad_Font_Name"; - } - - nameIndex.add((0, _util.stringToBytes)(sanitizedName)); - } - - return this.compileIndex(nameIndex); - } - - compileTopDicts(dicts, length, removeCidKeys) { - const fontDictTrackers = []; - let fdArrayIndex = new CFFIndex(); - - for (let i = 0, ii = dicts.length; i < ii; ++i) { - const fontDict = dicts[i]; - - if (removeCidKeys) { - fontDict.removeByName("CIDFontVersion"); - fontDict.removeByName("CIDFontRevision"); - fontDict.removeByName("CIDFontType"); - fontDict.removeByName("CIDCount"); - fontDict.removeByName("UIDBase"); - } - - const fontDictTracker = new CFFOffsetTracker(); - const fontDictData = this.compileDict(fontDict, fontDictTracker); - fontDictTrackers.push(fontDictTracker); - fdArrayIndex.add(fontDictData); - fontDictTracker.offset(length); - } - - fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); - return { - trackers: fontDictTrackers, - output: fdArrayIndex - }; - } - - compilePrivateDicts(dicts, trackers, output) { - for (let i = 0, ii = dicts.length; i < ii; ++i) { - const fontDict = dicts[i]; - const privateDict = fontDict.privateDict; - - if (!privateDict || !fontDict.hasName("Private")) { - throw new _util.FormatError("There must be a private dictionary."); - } - - const privateDictTracker = new CFFOffsetTracker(); - const privateDictData = this.compileDict(privateDict, privateDictTracker); - let outputLength = output.length; - privateDictTracker.offset(outputLength); - - if (!privateDictData.length) { - outputLength = 0; - } - - trackers[i].setEntryLocation("Private", [privateDictData.length, outputLength], output); - output.add(privateDictData); - - if (privateDict.subrsIndex && privateDict.hasName("Subrs")) { - const subrs = this.compileIndex(privateDict.subrsIndex); - privateDictTracker.setEntryLocation("Subrs", [privateDictData.length], output); - output.add(subrs); - } - } - } - - compileDict(dict, offsetTracker) { - let out = []; - const order = dict.order; - - for (let i = 0; i < order.length; ++i) { - const key = order[i]; - - if (!(key in dict.values)) { - continue; - } - - let values = dict.values[key]; - let types = dict.types[key]; - - if (!Array.isArray(types)) { - types = [types]; - } - - if (!Array.isArray(values)) { - values = [values]; - } - - if (values.length === 0) { - continue; - } - - for (let j = 0, jj = types.length; j < jj; ++j) { - const type = types[j]; - const value = values[j]; - - switch (type) { - case "num": - case "sid": - out = out.concat(this.encodeNumber(value)); - break; - - case "offset": - const name = dict.keyToNameMap[key]; - - if (!offsetTracker.isTracking(name)) { - offsetTracker.track(name, out.length); - } - - out = out.concat([0x1d, 0, 0, 0, 0]); - break; - - case "array": - case "delta": - out = out.concat(this.encodeNumber(value)); - - for (let k = 1, kk = values.length; k < kk; ++k) { - out = out.concat(this.encodeNumber(values[k])); - } - - break; - - default: - throw new _util.FormatError(`Unknown data type of ${type}`); - } - } - - out = out.concat(dict.opcodes[key]); - } - - return out; - } - - compileStringIndex(strings) { - const stringIndex = new CFFIndex(); - - for (let i = 0, ii = strings.length; i < ii; ++i) { - stringIndex.add((0, _util.stringToBytes)(strings[i])); - } - - return this.compileIndex(stringIndex); - } - - compileGlobalSubrIndex() { - const globalSubrIndex = this.cff.globalSubrIndex; - this.out.writeByteArray(this.compileIndex(globalSubrIndex)); - } - - compileCharStrings(charStrings) { - const charStringsIndex = new CFFIndex(); - - for (let i = 0; i < charStrings.count; i++) { - const glyph = charStrings.get(i); - - if (glyph.length === 0) { - charStringsIndex.add(new Uint8Array([0x8b, 0x0e])); - continue; - } - - charStringsIndex.add(glyph); - } - - return this.compileIndex(charStringsIndex); - } - - compileCharset(charset, numGlyphs, strings, isCIDFont) { - let out; - const numGlyphsLessNotDef = numGlyphs - 1; - - if (isCIDFont) { - out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]); - } else { - const length = 1 + numGlyphsLessNotDef * 2; - out = new Uint8Array(length); - out[0] = 0; - let charsetIndex = 0; - const numCharsets = charset.charset.length; - let warned = false; - - for (let i = 1; i < out.length; i += 2) { - let sid = 0; - - if (charsetIndex < numCharsets) { - const name = charset.charset[charsetIndex++]; - sid = strings.getSID(name); - - if (sid === -1) { - sid = 0; - - if (!warned) { - warned = true; - (0, _util.warn)(`Couldn't find ${name} in CFF strings`); - } - } - } - - out[i] = sid >> 8 & 0xff; - out[i + 1] = sid & 0xff; - } - } - - return this.compileTypedArray(out); - } - - compileEncoding(encoding) { - return this.compileTypedArray(encoding.raw); - } - - compileFDSelect(fdSelect) { - const format = fdSelect.format; - let out, i; - - switch (format) { - case 0: - out = new Uint8Array(1 + fdSelect.fdSelect.length); - out[0] = format; - - for (i = 0; i < fdSelect.fdSelect.length; i++) { - out[i + 1] = fdSelect.fdSelect[i]; - } - - break; - - case 3: - const start = 0; - let lastFD = fdSelect.fdSelect[0]; - const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD]; - - for (i = 1; i < fdSelect.fdSelect.length; i++) { - const currentFD = fdSelect.fdSelect[i]; - - if (currentFD !== lastFD) { - ranges.push(i >> 8 & 0xff, i & 0xff, currentFD); - lastFD = currentFD; - } - } - - const numRanges = (ranges.length - 3) / 3; - ranges[1] = numRanges >> 8 & 0xff; - ranges[2] = numRanges & 0xff; - ranges.push(i >> 8 & 0xff, i & 0xff); - out = new Uint8Array(ranges); - break; - } - - return this.compileTypedArray(out); - } - - compileTypedArray(data) { - const out = []; - - for (let i = 0, ii = data.length; i < ii; ++i) { - out[i] = data[i]; - } - - return out; - } - - compileIndex(index, trackers = []) { - const objects = index.objects; - const count = objects.length; - - if (count === 0) { - return [0, 0, 0]; - } - - const data = [count >> 8 & 0xff, count & 0xff]; - let lastOffset = 1, - i; - - for (i = 0; i < count; ++i) { - lastOffset += objects[i].length; - } - - let offsetSize; - - if (lastOffset < 0x100) { - offsetSize = 1; - } else if (lastOffset < 0x10000) { - offsetSize = 2; - } else if (lastOffset < 0x1000000) { - offsetSize = 3; - } else { - offsetSize = 4; - } - - data.push(offsetSize); - let relativeOffset = 1; - - for (i = 0; i < count + 1; i++) { - if (offsetSize === 1) { - data.push(relativeOffset & 0xff); - } else if (offsetSize === 2) { - data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff); - } else if (offsetSize === 3) { - data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); - } else { - data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); - } - - if (objects[i]) { - relativeOffset += objects[i].length; - } - } - - for (i = 0; i < count; i++) { - if (trackers[i]) { - trackers[i].offset(data.length); - } - - for (let j = 0, jj = objects[i].length; j < jj; j++) { - data.push(objects[i][j]); - } - } - - return data; - } - -} - -exports.CFFCompiler = CFFCompiler; - -/***/ }), -/* 46 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -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"]; -exports.ExpertCharset = ExpertCharset; -const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperior", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "hyphensuperior", "colonmonetary", "onefitted", "rupiah", "centoldstyle", "figuredash", "hypheninferior", "onequarter", "onehalf", "threequarters", "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"]; -exports.ExpertSubsetCharset = ExpertSubsetCharset; - -/***/ }), -/* 47 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getSerifFonts = exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = exports.getFontNameToFileMap = void 0; -exports.getStandardFontName = getStandardFontName; -exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = void 0; - -var _core_utils = __w_pdfjs_require__(8); - -var _fonts_utils = __w_pdfjs_require__(18); - -const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t["Times-Roman"] = "Times-Roman"; - t.Helvetica = "Helvetica"; - t.Courier = "Courier"; - t.Symbol = "Symbol"; - t["Times-Bold"] = "Times-Bold"; - t["Helvetica-Bold"] = "Helvetica-Bold"; - t["Courier-Bold"] = "Courier-Bold"; - t.ZapfDingbats = "ZapfDingbats"; - t["Times-Italic"] = "Times-Italic"; - t["Helvetica-Oblique"] = "Helvetica-Oblique"; - t["Courier-Oblique"] = "Courier-Oblique"; - t["Times-BoldItalic"] = "Times-BoldItalic"; - t["Helvetica-BoldOblique"] = "Helvetica-BoldOblique"; - t["Courier-BoldOblique"] = "Courier-BoldOblique"; - t.ArialNarrow = "Helvetica"; - t["ArialNarrow-Bold"] = "Helvetica-Bold"; - t["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique"; - t["ArialNarrow-Italic"] = "Helvetica-Oblique"; - t.ArialBlack = "Helvetica"; - t["ArialBlack-Bold"] = "Helvetica-Bold"; - t["ArialBlack-BoldItalic"] = "Helvetica-BoldOblique"; - t["ArialBlack-Italic"] = "Helvetica-Oblique"; - t["Arial-Black"] = "Helvetica"; - t["Arial-Black-Bold"] = "Helvetica-Bold"; - t["Arial-Black-BoldItalic"] = "Helvetica-BoldOblique"; - t["Arial-Black-Italic"] = "Helvetica-Oblique"; - t.Arial = "Helvetica"; - t["Arial-Bold"] = "Helvetica-Bold"; - t["Arial-BoldItalic"] = "Helvetica-BoldOblique"; - t["Arial-Italic"] = "Helvetica-Oblique"; - t["Arial-BoldItalicMT"] = "Helvetica-BoldOblique"; - t["Arial-BoldMT"] = "Helvetica-Bold"; - t["Arial-ItalicMT"] = "Helvetica-Oblique"; - t.ArialMT = "Helvetica"; - t["Courier-BoldItalic"] = "Courier-BoldOblique"; - t["Courier-Italic"] = "Courier-Oblique"; - t.CourierNew = "Courier"; - t["CourierNew-Bold"] = "Courier-Bold"; - t["CourierNew-BoldItalic"] = "Courier-BoldOblique"; - t["CourierNew-Italic"] = "Courier-Oblique"; - t["CourierNewPS-BoldItalicMT"] = "Courier-BoldOblique"; - t["CourierNewPS-BoldMT"] = "Courier-Bold"; - t["CourierNewPS-ItalicMT"] = "Courier-Oblique"; - t.CourierNewPSMT = "Courier"; - t["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; - t["Helvetica-Italic"] = "Helvetica-Oblique"; - t["Symbol-Bold"] = "Symbol"; - t["Symbol-BoldItalic"] = "Symbol"; - t["Symbol-Italic"] = "Symbol"; - t.TimesNewRoman = "Times-Roman"; - t["TimesNewRoman-Bold"] = "Times-Bold"; - t["TimesNewRoman-BoldItalic"] = "Times-BoldItalic"; - t["TimesNewRoman-Italic"] = "Times-Italic"; - t.TimesNewRomanPS = "Times-Roman"; - t["TimesNewRomanPS-Bold"] = "Times-Bold"; - t["TimesNewRomanPS-BoldItalic"] = "Times-BoldItalic"; - t["TimesNewRomanPS-BoldItalicMT"] = "Times-BoldItalic"; - t["TimesNewRomanPS-BoldMT"] = "Times-Bold"; - t["TimesNewRomanPS-Italic"] = "Times-Italic"; - t["TimesNewRomanPS-ItalicMT"] = "Times-Italic"; - t.TimesNewRomanPSMT = "Times-Roman"; - t["TimesNewRomanPSMT-Bold"] = "Times-Bold"; - t["TimesNewRomanPSMT-BoldItalic"] = "Times-BoldItalic"; - t["TimesNewRomanPSMT-Italic"] = "Times-Italic"; -}); -exports.getStdFontMap = getStdFontMap; -const getFontNameToFileMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t.Courier = "FoxitFixed.pfb"; - t["Courier-Bold"] = "FoxitFixedBold.pfb"; - t["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb"; - t["Courier-Oblique"] = "FoxitFixedItalic.pfb"; - t.Helvetica = "FoxitSans.pfb"; - t["Helvetica-Bold"] = "FoxitSansBold.pfb"; - t["Helvetica-BoldOblique"] = "FoxitSansBoldItalic.pfb"; - t["Helvetica-Oblique"] = "FoxitSansItalic.pfb"; - t["Times-Roman"] = "FoxitSerif.pfb"; - t["Times-Bold"] = "FoxitSerifBold.pfb"; - t["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb"; - t["Times-Italic"] = "FoxitSerifItalic.pfb"; - t.Symbol = "FoxitSymbol.pfb"; - t.ZapfDingbats = "FoxitDingbats.pfb"; - t["LiberationSans-Regular"] = "LiberationSans-Regular.ttf"; - t["LiberationSans-Bold"] = "LiberationSans-Bold.ttf"; - t["LiberationSans-Italic"] = "LiberationSans-Italic.ttf"; - t["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf"; -}); -exports.getFontNameToFileMap = getFontNameToFileMap; -const getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { - t.Calibri = "Helvetica"; - t["Calibri-Bold"] = "Helvetica-Bold"; - t["Calibri-BoldItalic"] = "Helvetica-BoldOblique"; - t["Calibri-Italic"] = "Helvetica-Oblique"; - t.CenturyGothic = "Helvetica"; - t["CenturyGothic-Bold"] = "Helvetica-Bold"; - t["CenturyGothic-BoldItalic"] = "Helvetica-BoldOblique"; - t["CenturyGothic-Italic"] = "Helvetica-Oblique"; - t.ComicSansMS = "Comic Sans MS"; - t["ComicSansMS-Bold"] = "Comic Sans MS-Bold"; - t["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic"; - t["ComicSansMS-Italic"] = "Comic Sans MS-Italic"; - t["ItcSymbol-Bold"] = "Helvetica-Bold"; - t["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique"; - t["ItcSymbol-Book"] = "Helvetica"; - t["ItcSymbol-BookItalic"] = "Helvetica-Oblique"; - t["ItcSymbol-Medium"] = "Helvetica"; - t["ItcSymbol-MediumItalic"] = "Helvetica-Oblique"; - t.LucidaConsole = "Courier"; - t["LucidaConsole-Bold"] = "Courier-Bold"; - t["LucidaConsole-BoldItalic"] = "Courier-BoldOblique"; - t["LucidaConsole-Italic"] = "Courier-Oblique"; - t["LucidaSans-Demi"] = "Helvetica-Bold"; - t["MS-Gothic"] = "MS Gothic"; - t["MS-Gothic-Bold"] = "MS Gothic-Bold"; - t["MS-Gothic-BoldItalic"] = "MS Gothic-BoldItalic"; - t["MS-Gothic-Italic"] = "MS Gothic-Italic"; - t["MS-Mincho"] = "MS Mincho"; - t["MS-Mincho-Bold"] = "MS Mincho-Bold"; - t["MS-Mincho-BoldItalic"] = "MS Mincho-BoldItalic"; - t["MS-Mincho-Italic"] = "MS Mincho-Italic"; - t["MS-PGothic"] = "MS PGothic"; - t["MS-PGothic-Bold"] = "MS PGothic-Bold"; - t["MS-PGothic-BoldItalic"] = "MS PGothic-BoldItalic"; - t["MS-PGothic-Italic"] = "MS PGothic-Italic"; - t["MS-PMincho"] = "MS PMincho"; - t["MS-PMincho-Bold"] = "MS PMincho-Bold"; - t["MS-PMincho-BoldItalic"] = "MS PMincho-BoldItalic"; - t["MS-PMincho-Italic"] = "MS PMincho-Italic"; - t.NuptialScript = "Times-Italic"; - t.SegoeUISymbol = "Helvetica"; - t.Wingdings = "ZapfDingbats"; - t["Wingdings-Regular"] = "ZapfDingbats"; -}); -exports.getNonStdFontMap = getNonStdFontMap; -const getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) { - t["Adobe Jenson"] = true; - t["Adobe Text"] = true; - t.Albertus = true; - t.Aldus = true; - t.Alexandria = true; - t.Algerian = true; - t["American Typewriter"] = true; - t.Antiqua = true; - t.Apex = true; - t.Arno = true; - t.Aster = true; - t.Aurora = true; - t.Baskerville = true; - t.Bell = true; - t.Bembo = true; - t["Bembo Schoolbook"] = true; - t.Benguiat = true; - t["Berkeley Old Style"] = true; - t["Bernhard Modern"] = true; - t["Berthold City"] = true; - t.Bodoni = true; - t["Bauer Bodoni"] = true; - t["Book Antiqua"] = true; - t.Bookman = true; - t["Bordeaux Roman"] = true; - t["Californian FB"] = true; - t.Calisto = true; - t.Calvert = true; - t.Capitals = true; - t.Cambria = true; - t.Cartier = true; - t.Caslon = true; - t.Catull = true; - t.Centaur = true; - t["Century Old Style"] = true; - t["Century Schoolbook"] = true; - t.Chaparral = true; - t["Charis SIL"] = true; - t.Cheltenham = true; - t["Cholla Slab"] = true; - t.Clarendon = true; - t.Clearface = true; - t.Cochin = true; - t.Colonna = true; - t["Computer Modern"] = true; - t["Concrete Roman"] = true; - t.Constantia = true; - t["Cooper Black"] = true; - t.Corona = true; - t.Ecotype = true; - t.Egyptienne = true; - t.Elephant = true; - t.Excelsior = true; - t.Fairfield = true; - t["FF Scala"] = true; - t.Folkard = true; - t.Footlight = true; - t.FreeSerif = true; - t["Friz Quadrata"] = true; - t.Garamond = true; - t.Gentium = true; - t.Georgia = true; - t.Gloucester = true; - t["Goudy Old Style"] = true; - t["Goudy Schoolbook"] = true; - t["Goudy Pro Font"] = true; - t.Granjon = true; - t["Guardian Egyptian"] = true; - t.Heather = true; - t.Hercules = true; - t["High Tower Text"] = true; - t.Hiroshige = true; - t["Hoefler Text"] = true; - t["Humana Serif"] = true; - t.Imprint = true; - t["Ionic No. 5"] = true; - t.Janson = true; - t.Joanna = true; - t.Korinna = true; - t.Lexicon = true; - t.LiberationSerif = true; - t["Liberation Serif"] = true; - t["Linux Libertine"] = true; - t.Literaturnaya = true; - t.Lucida = true; - t["Lucida Bright"] = true; - t.Melior = true; - t.Memphis = true; - t.Miller = true; - t.Minion = true; - t.Modern = true; - t["Mona Lisa"] = true; - t["Mrs Eaves"] = true; - t["MS Serif"] = true; - t["Museo Slab"] = true; - t["New York"] = true; - t["Nimbus Roman"] = true; - t["NPS Rawlinson Roadway"] = true; - t.NuptialScript = true; - t.Palatino = true; - t.Perpetua = true; - t.Plantin = true; - t["Plantin Schoolbook"] = true; - t.Playbill = true; - t["Poor Richard"] = true; - t["Rawlinson Roadway"] = true; - t.Renault = true; - t.Requiem = true; - t.Rockwell = true; - t.Roman = true; - t["Rotis Serif"] = true; - t.Sabon = true; - t.Scala = true; - t.Seagull = true; - t.Sistina = true; - t.Souvenir = true; - t.STIX = true; - t["Stone Informal"] = true; - t["Stone Serif"] = true; - t.Sylfaen = true; - t.Times = true; - t.Trajan = true; - t["Trinité"] = true; - t["Trump Mediaeval"] = true; - t.Utopia = true; - t["Vale Type"] = true; - t["Bitstream Vera"] = true; - t["Vera Serif"] = true; - t.Versailles = true; - t.Wanted = true; - t.Weiss = true; - t["Wide Latin"] = true; - t.Windsor = true; - t.XITS = true; -}); -exports.getSerifFonts = getSerifFonts; -const getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) { - t.Dingbats = true; - t.Symbol = true; - t.ZapfDingbats = true; -}); -exports.getSymbolsFonts = getSymbolsFonts; -const getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) { - t[2] = 10; - t[3] = 32; - t[4] = 33; - t[5] = 34; - t[6] = 35; - t[7] = 36; - t[8] = 37; - t[9] = 38; - t[10] = 39; - t[11] = 40; - t[12] = 41; - t[13] = 42; - t[14] = 43; - t[15] = 44; - t[16] = 45; - t[17] = 46; - t[18] = 47; - t[19] = 48; - t[20] = 49; - t[21] = 50; - t[22] = 51; - t[23] = 52; - t[24] = 53; - t[25] = 54; - t[26] = 55; - t[27] = 56; - t[28] = 57; - t[29] = 58; - t[30] = 894; - t[31] = 60; - t[32] = 61; - t[33] = 62; - t[34] = 63; - t[35] = 64; - t[36] = 65; - t[37] = 66; - t[38] = 67; - t[39] = 68; - t[40] = 69; - t[41] = 70; - t[42] = 71; - t[43] = 72; - t[44] = 73; - t[45] = 74; - t[46] = 75; - t[47] = 76; - t[48] = 77; - t[49] = 78; - t[50] = 79; - t[51] = 80; - t[52] = 81; - t[53] = 82; - t[54] = 83; - t[55] = 84; - t[56] = 85; - t[57] = 86; - t[58] = 87; - t[59] = 88; - t[60] = 89; - t[61] = 90; - t[62] = 91; - t[63] = 92; - t[64] = 93; - t[65] = 94; - t[66] = 95; - t[67] = 96; - t[68] = 97; - t[69] = 98; - t[70] = 99; - t[71] = 100; - t[72] = 101; - t[73] = 102; - t[74] = 103; - t[75] = 104; - t[76] = 105; - t[77] = 106; - t[78] = 107; - t[79] = 108; - t[80] = 109; - t[81] = 110; - t[82] = 111; - t[83] = 112; - t[84] = 113; - t[85] = 114; - t[86] = 115; - t[87] = 116; - t[88] = 117; - t[89] = 118; - t[90] = 119; - t[91] = 120; - t[92] = 121; - t[93] = 122; - t[94] = 123; - t[95] = 124; - t[96] = 125; - t[97] = 126; - t[98] = 196; - t[99] = 197; - t[100] = 199; - t[101] = 201; - t[102] = 209; - t[103] = 214; - t[104] = 220; - t[105] = 225; - t[106] = 224; - t[107] = 226; - t[108] = 228; - t[109] = 227; - t[110] = 229; - t[111] = 231; - t[112] = 233; - t[113] = 232; - t[114] = 234; - t[115] = 235; - t[116] = 237; - t[117] = 236; - t[118] = 238; - t[119] = 239; - t[120] = 241; - t[121] = 243; - t[122] = 242; - t[123] = 244; - t[124] = 246; - t[125] = 245; - t[126] = 250; - t[127] = 249; - t[128] = 251; - t[129] = 252; - t[130] = 8224; - t[131] = 176; - t[132] = 162; - t[133] = 163; - t[134] = 167; - t[135] = 8226; - t[136] = 182; - t[137] = 223; - t[138] = 174; - t[139] = 169; - t[140] = 8482; - t[141] = 180; - t[142] = 168; - t[143] = 8800; - t[144] = 198; - t[145] = 216; - t[146] = 8734; - t[147] = 177; - t[148] = 8804; - t[149] = 8805; - t[150] = 165; - t[151] = 181; - t[152] = 8706; - t[153] = 8721; - t[154] = 8719; - t[156] = 8747; - t[157] = 170; - t[158] = 186; - t[159] = 8486; - t[160] = 230; - t[161] = 248; - t[162] = 191; - t[163] = 161; - t[164] = 172; - t[165] = 8730; - t[166] = 402; - t[167] = 8776; - t[168] = 8710; - t[169] = 171; - t[170] = 187; - t[171] = 8230; - t[200] = 193; - t[203] = 205; - t[210] = 218; - t[223] = 711; - t[224] = 321; - t[225] = 322; - t[226] = 352; - t[227] = 353; - t[228] = 381; - t[229] = 382; - t[233] = 221; - t[234] = 253; - t[252] = 263; - t[253] = 268; - t[254] = 269; - t[258] = 258; - t[260] = 260; - t[261] = 261; - t[265] = 280; - t[266] = 281; - t[267] = 282; - t[268] = 283; - t[269] = 313; - t[275] = 323; - t[276] = 324; - t[278] = 328; - t[283] = 344; - t[284] = 345; - t[285] = 346; - t[286] = 347; - t[292] = 367; - t[295] = 377; - t[296] = 378; - t[298] = 380; - t[305] = 963; - t[306] = 964; - t[307] = 966; - t[308] = 8215; - t[309] = 8252; - t[310] = 8319; - t[311] = 8359; - t[312] = 8592; - t[313] = 8593; - t[337] = 9552; - t[493] = 1039; - t[494] = 1040; - t[705] = 1524; - t[706] = 8362; - t[710] = 64288; - t[711] = 64298; - t[759] = 1617; - t[761] = 1776; - t[763] = 1778; - t[775] = 1652; - t[777] = 1764; - t[778] = 1780; - t[779] = 1781; - t[780] = 1782; - t[782] = 771; - t[783] = 64726; - t[786] = 8363; - t[788] = 8532; - t[790] = 768; - t[791] = 769; - t[792] = 768; - t[795] = 803; - t[797] = 64336; - t[798] = 64337; - t[799] = 64342; - t[800] = 64343; - t[801] = 64344; - t[802] = 64345; - t[803] = 64362; - t[804] = 64363; - t[805] = 64364; - t[2424] = 7821; - t[2425] = 7822; - t[2426] = 7823; - t[2427] = 7824; - t[2428] = 7825; - t[2429] = 7826; - t[2430] = 7827; - t[2433] = 7682; - t[2678] = 8045; - t[2679] = 8046; - t[2830] = 1552; - t[2838] = 686; - t[2840] = 751; - t[2842] = 753; - t[2843] = 754; - t[2844] = 755; - t[2846] = 757; - t[2856] = 767; - t[2857] = 848; - t[2858] = 849; - t[2862] = 853; - t[2863] = 854; - t[2864] = 855; - t[2865] = 861; - t[2866] = 862; - t[2906] = 7460; - t[2908] = 7462; - t[2909] = 7463; - t[2910] = 7464; - t[2912] = 7466; - t[2913] = 7467; - t[2914] = 7468; - t[2916] = 7470; - t[2917] = 7471; - t[2918] = 7472; - t[2920] = 7474; - t[2921] = 7475; - t[2922] = 7476; - t[2924] = 7478; - t[2925] = 7479; - t[2926] = 7480; - t[2928] = 7482; - t[2929] = 7483; - t[2930] = 7484; - t[2932] = 7486; - t[2933] = 7487; - t[2934] = 7488; - t[2936] = 7490; - t[2937] = 7491; - t[2938] = 7492; - t[2940] = 7494; - t[2941] = 7495; - t[2942] = 7496; - t[2944] = 7498; - t[2946] = 7500; - t[2948] = 7502; - t[2950] = 7504; - t[2951] = 7505; - t[2952] = 7506; - t[2954] = 7508; - t[2955] = 7509; - t[2956] = 7510; - t[2958] = 7512; - t[2959] = 7513; - t[2960] = 7514; - t[2962] = 7516; - t[2963] = 7517; - t[2964] = 7518; - t[2966] = 7520; - t[2967] = 7521; - t[2968] = 7522; - t[2970] = 7524; - t[2971] = 7525; - t[2972] = 7526; - t[2974] = 7528; - t[2975] = 7529; - t[2976] = 7530; - t[2978] = 1537; - t[2979] = 1538; - t[2980] = 1539; - t[2982] = 1549; - t[2983] = 1551; - t[2984] = 1552; - t[2986] = 1554; - t[2987] = 1555; - t[2988] = 1556; - t[2990] = 1623; - t[2991] = 1624; - t[2995] = 1775; - t[2999] = 1791; - t[3002] = 64290; - t[3003] = 64291; - t[3004] = 64292; - t[3006] = 64294; - t[3007] = 64295; - t[3008] = 64296; - t[3011] = 1900; - t[3014] = 8223; - t[3015] = 8244; - t[3017] = 7532; - t[3018] = 7533; - t[3019] = 7534; - t[3075] = 7590; - t[3076] = 7591; - t[3079] = 7594; - t[3080] = 7595; - t[3083] = 7598; - t[3084] = 7599; - t[3087] = 7602; - t[3088] = 7603; - t[3091] = 7606; - t[3092] = 7607; - t[3095] = 7610; - t[3096] = 7611; - t[3099] = 7614; - t[3100] = 7615; - t[3103] = 7618; - t[3104] = 7619; - t[3107] = 8337; - t[3108] = 8338; - t[3116] = 1884; - t[3119] = 1885; - t[3120] = 1885; - t[3123] = 1886; - t[3124] = 1886; - t[3127] = 1887; - t[3128] = 1887; - t[3131] = 1888; - t[3132] = 1888; - t[3135] = 1889; - t[3136] = 1889; - t[3139] = 1890; - t[3140] = 1890; - t[3143] = 1891; - t[3144] = 1891; - t[3147] = 1892; - t[3148] = 1892; - t[3153] = 580; - t[3154] = 581; - t[3157] = 584; - t[3158] = 585; - t[3161] = 588; - t[3162] = 589; - t[3165] = 891; - t[3166] = 892; - t[3169] = 1274; - t[3170] = 1275; - t[3173] = 1278; - t[3174] = 1279; - t[3181] = 7622; - t[3182] = 7623; - t[3282] = 11799; - t[3316] = 578; - t[3379] = 42785; - t[3393] = 1159; - t[3416] = 8377; -}); -exports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts; -const getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) { - t[227] = 322; - t[264] = 261; - t[291] = 346; -}); -exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack; -const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) { - t[1] = 32; - t[4] = 65; - t[6] = 193; - t[17] = 66; - t[18] = 67; - t[21] = 268; - t[24] = 68; - t[28] = 69; - t[30] = 201; - t[32] = 282; - t[38] = 70; - t[39] = 71; - t[44] = 72; - t[47] = 73; - t[49] = 205; - t[58] = 74; - t[60] = 75; - t[62] = 76; - t[68] = 77; - t[69] = 78; - t[75] = 79; - t[87] = 80; - t[89] = 81; - t[90] = 82; - t[92] = 344; - t[94] = 83; - t[97] = 352; - t[100] = 84; - t[104] = 85; - t[115] = 86; - t[116] = 87; - t[121] = 88; - t[122] = 89; - t[124] = 221; - t[127] = 90; - t[129] = 381; - t[258] = 97; - t[260] = 225; - t[268] = 261; - t[271] = 98; - t[272] = 99; - t[273] = 263; - t[275] = 269; - t[282] = 100; - t[286] = 101; - t[288] = 233; - t[290] = 283; - t[295] = 281; - t[296] = 102; - t[336] = 103; - t[346] = 104; - t[349] = 105; - t[351] = 237; - t[361] = 106; - t[364] = 107; - t[367] = 108; - t[371] = 322; - t[373] = 109; - t[374] = 110; - t[381] = 111; - t[383] = 243; - t[393] = 112; - t[395] = 113; - t[396] = 114; - t[398] = 345; - t[400] = 115; - t[401] = 347; - t[403] = 353; - t[410] = 116; - t[437] = 117; - t[448] = 118; - t[449] = 119; - t[454] = 120; - t[455] = 121; - t[457] = 253; - t[460] = 122; - t[462] = 382; - t[463] = 380; - t[853] = 44; - t[855] = 58; - t[856] = 46; - t[876] = 47; - t[878] = 45; - t[882] = 45; - t[894] = 40; - t[895] = 41; - t[896] = 91; - t[897] = 93; - t[923] = 64; - t[1004] = 48; - t[1005] = 49; - t[1006] = 50; - t[1007] = 51; - t[1008] = 52; - t[1009] = 53; - t[1010] = 54; - t[1011] = 55; - t[1012] = 56; - t[1013] = 57; - t[1081] = 37; - t[1085] = 43; - t[1086] = 45; -}); -exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri; - -function getStandardFontName(name) { - const fontName = (0, _fonts_utils.normalizeFontName)(name); - const stdFontMap = getStdFontMap(); - return stdFontMap[fontName]; -} - -/***/ }), -/* 48 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ToUnicodeMap = exports.IdentityToUnicodeMap = void 0; - -var _util = __w_pdfjs_require__(2); - -class ToUnicodeMap { - constructor(cmap = []) { - this._map = cmap; - } - - get length() { - return this._map.length; - } - - forEach(callback) { - for (const charCode in this._map) { - callback(charCode, this._map[charCode].charCodeAt(0)); - } - } - - has(i) { - return this._map[i] !== undefined; - } - - get(i) { - return this._map[i]; - } - - charCodeOf(value) { - const map = this._map; - - if (map.length <= 0x10000) { - return map.indexOf(value); - } - - for (const charCode in map) { - if (map[charCode] === value) { - return charCode | 0; - } - } - - return -1; - } - - amend(map) { - for (const charCode in map) { - this._map[charCode] = map[charCode]; - } - } - -} - -exports.ToUnicodeMap = ToUnicodeMap; - -class IdentityToUnicodeMap { - constructor(firstChar, lastChar) { - this.firstChar = firstChar; - this.lastChar = lastChar; - } - - get length() { - return this.lastChar + 1 - this.firstChar; - } - - forEach(callback) { - for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) { - callback(i, i); - } - } - - has(i) { - return this.firstChar <= i && i <= this.lastChar; - } - - get(i) { - if (this.firstChar <= i && i <= this.lastChar) { - return String.fromCharCode(i); - } - - return undefined; - } - - charCodeOf(v) { - return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1; - } - - amend(map) { - (0, _util.unreachable)("Should not call amend()"); - } - -} - -exports.IdentityToUnicodeMap = IdentityToUnicodeMap; - -/***/ }), -/* 49 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.CFFFont = void 0; - -var _cff_parser = __w_pdfjs_require__(45); - -var _fonts_utils = __w_pdfjs_require__(18); - -var _util = __w_pdfjs_require__(2); - -class CFFFont { - constructor(file, properties) { - this.properties = properties; - const parser = new _cff_parser.CFFParser(file, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED); - this.cff = parser.parse(); - this.cff.duplicateFirstGlyph(); - const compiler = new _cff_parser.CFFCompiler(this.cff); - this.seacs = this.cff.seacs; - - try { - this.data = compiler.compile(); - } catch (e) { - (0, _util.warn)("Failed to compile font " + properties.loadedName); - this.data = file; - } - - this._createBuiltInEncoding(); - } - - get numGlyphs() { - return this.cff.charStrings.count; - } - - getCharset() { - return this.cff.charset.charset; - } - - getGlyphMapping() { - const cff = this.cff; - const properties = this.properties; - const charsets = cff.charset.charset; - let charCodeToGlyphId; - let glyphId; - - if (properties.composite) { - charCodeToGlyphId = Object.create(null); - let charCode; - - if (cff.isCIDFont) { - for (glyphId = 0; glyphId < charsets.length; glyphId++) { - const cid = charsets[glyphId]; - charCode = properties.cMap.charCodeOf(cid); - charCodeToGlyphId[charCode] = glyphId; - } - } else { - for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { - charCode = properties.cMap.charCodeOf(glyphId); - charCodeToGlyphId[charCode] = glyphId; - } - } - - return charCodeToGlyphId; - } - - let encoding = cff.encoding ? cff.encoding.encoding : null; - - if (properties.isInternalFont) { - encoding = properties.defaultEncoding; - } - - charCodeToGlyphId = (0, _fonts_utils.type1FontGlyphMapping)(properties, encoding, charsets); - return charCodeToGlyphId; - } - - hasGlyphId(id) { - return this.cff.hasGlyphId(id); - } - - _createBuiltInEncoding() { - const { - charset, - encoding - } = this.cff; - - if (!charset || !encoding) { - return; - } - - const charsets = charset.charset, - encodings = encoding.encoding; - const map = []; - - for (const charCode in encodings) { - const glyphId = encodings[charCode]; - - if (glyphId >= 0) { - const glyphName = charsets[glyphId]; - - if (glyphName) { - map[charCode] = glyphName; - } - } - } - - if (map.length > 0) { - this.properties.builtInEncoding = map; - } - } - -} - -exports.CFFFont = CFFFont; - -/***/ }), -/* 50 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.FontRendererFactory = void 0; - -var _util = __w_pdfjs_require__(2); - -var _cff_parser = __w_pdfjs_require__(45); - -var _glyphlist = __w_pdfjs_require__(20); - -var _encodings = __w_pdfjs_require__(19); - -var _stream = __w_pdfjs_require__(10); - -function getUint32(data, offset) { - return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; -} - -function getUint16(data, offset) { - return data[offset] << 8 | data[offset + 1]; -} - -function getInt16(data, offset) { - return (data[offset] << 24 | data[offset + 1] << 16) >> 16; -} - -function getInt8(data, offset) { - return data[offset] << 24 >> 24; -} - -function getFloat214(data, offset) { - return getInt16(data, offset) / 16384; -} - -function getSubroutineBias(subrs) { - const numSubrs = subrs.length; - let bias = 32768; - - if (numSubrs < 1240) { - bias = 107; - } else if (numSubrs < 33900) { - bias = 1131; - } - - return bias; -} - -function parseCmap(data, start, end) { - const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : getUint32(data, start + 16); - const format = getUint16(data, start + offset); - let ranges, p, i; - - if (format === 4) { - getUint16(data, start + offset + 2); - const segCount = getUint16(data, start + offset + 6) >> 1; - p = start + offset + 14; - ranges = []; - - for (i = 0; i < segCount; i++, p += 2) { - ranges[i] = { - end: getUint16(data, p) - }; - } - - p += 2; - - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].start = getUint16(data, p); - } - - for (i = 0; i < segCount; i++, p += 2) { - ranges[i].idDelta = getUint16(data, p); - } - - for (i = 0; i < segCount; i++, p += 2) { - let idOffset = getUint16(data, p); - - if (idOffset === 0) { - continue; - } - - ranges[i].ids = []; - - for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { - ranges[i].ids[j] = getUint16(data, p + idOffset); - idOffset += 2; - } - } - - return ranges; - } else if (format === 12) { - const groups = getUint32(data, start + offset + 12); - p = start + offset + 16; - ranges = []; - - for (i = 0; i < groups; i++) { - start = getUint32(data, p); - ranges.push({ - start, - end: getUint32(data, p + 4), - idDelta: getUint32(data, p + 8) - start - }); - p += 12; - } - - return ranges; - } - - throw new _util.FormatError(`unsupported cmap: ${format}`); -} - -function parseCff(data, start, end, seacAnalysisEnabled) { - const properties = {}; - const parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled); - const cff = parser.parse(); - return { - glyphs: cff.charStrings.objects, - subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects, - gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects, - isCFFCIDFont: cff.isCIDFont, - fdSelect: cff.fdSelect, - fdArray: cff.fdArray - }; -} - -function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { - let itemSize, itemDecode; - - if (isGlyphLocationsLong) { - itemSize = 4; - itemDecode = getUint32; - } else { - itemSize = 2; - - itemDecode = (data, offset) => 2 * getUint16(data, offset); - } - - const glyphs = []; - let startOffset = itemDecode(loca, 0); - - for (let j = itemSize; j < loca.length; j += itemSize) { - const endOffset = itemDecode(loca, j); - glyphs.push(glyf.subarray(startOffset, endOffset)); - startOffset = endOffset; - } - - return glyphs; -} - -function lookupCmap(ranges, unicode) { - const code = unicode.codePointAt(0); - let gid = 0, - l = 0, - r = ranges.length - 1; - - while (l < r) { - const c = l + r + 1 >> 1; - - if (code < ranges[c].start) { - r = c - 1; - } else { - l = c; - } - } - - if (ranges[l].start <= code && code <= ranges[l].end) { - gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff; - } - - return { - charCode: code, - glyphId: gid - }; -} - -function compileGlyf(code, cmds, font) { - function moveTo(x, y) { - cmds.push({ - cmd: "moveTo", - args: [x, y] - }); - } - - function lineTo(x, y) { - cmds.push({ - cmd: "lineTo", - args: [x, y] - }); - } - - function quadraticCurveTo(xa, ya, x, y) { - cmds.push({ - cmd: "quadraticCurveTo", - args: [xa, ya, x, y] - }); - } - - let i = 0; - const numberOfContours = getInt16(code, i); - let flags; - let x = 0, - y = 0; - i += 10; - - if (numberOfContours < 0) { - do { - flags = getUint16(code, i); - const glyphIndex = getUint16(code, i + 2); - i += 4; - let arg1, arg2; - - if (flags & 0x01) { - if (flags & 0x02) { - arg1 = getInt16(code, i); - arg2 = getInt16(code, i + 2); - } else { - arg1 = getUint16(code, i); - arg2 = getUint16(code, i + 2); - } - - i += 4; - } else { - if (flags & 0x02) { - arg1 = getInt8(code, i++); - arg2 = getInt8(code, i++); - } else { - arg1 = code[i++]; - arg2 = code[i++]; - } - } - - if (flags & 0x02) { - x = arg1; - y = arg2; - } else { - x = 0; - y = 0; - } - - let scaleX = 1, - scaleY = 1, - scale01 = 0, - scale10 = 0; - - if (flags & 0x08) { - scaleX = scaleY = getFloat214(code, i); - i += 2; - } else if (flags & 0x40) { - scaleX = getFloat214(code, i); - scaleY = getFloat214(code, i + 2); - i += 4; - } else if (flags & 0x80) { - scaleX = getFloat214(code, i); - scale01 = getFloat214(code, i + 2); - scale10 = getFloat214(code, i + 4); - scaleY = getFloat214(code, i + 6); - i += 8; - } - - const subglyph = font.glyphs[glyphIndex]; - - if (subglyph) { - cmds.push({ - cmd: "save" - }, { - cmd: "transform", - args: [scaleX, scale01, scale10, scaleY, x, y] - }); - - if (!(flags & 0x02)) {} - - compileGlyf(subglyph, cmds, font); - cmds.push({ - cmd: "restore" - }); - } - } while (flags & 0x20); - } else { - const endPtsOfContours = []; - let j, jj; - - for (j = 0; j < numberOfContours; j++) { - endPtsOfContours.push(getUint16(code, i)); - i += 2; - } - - const instructionLength = getUint16(code, i); - i += 2 + instructionLength; - const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1; - const points = []; - - while (points.length < numberOfPoints) { - flags = code[i++]; - let repeat = 1; - - if (flags & 0x08) { - repeat += code[i++]; - } - - while (repeat-- > 0) { - points.push({ - flags - }); - } - } - - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x12) { - case 0x00: - x += getInt16(code, i); - i += 2; - break; - - case 0x02: - x -= code[i++]; - break; - - case 0x12: - x += code[i++]; - break; - } - - points[j].x = x; - } - - for (j = 0; j < numberOfPoints; j++) { - switch (points[j].flags & 0x24) { - case 0x00: - y += getInt16(code, i); - i += 2; - break; - - case 0x04: - y -= code[i++]; - break; - - case 0x24: - y += code[i++]; - break; - } - - points[j].y = y; - } - - let startPoint = 0; - - for (i = 0; i < numberOfContours; i++) { - const endPoint = endPtsOfContours[i]; - const contour = points.slice(startPoint, endPoint + 1); - - if (contour[0].flags & 1) { - contour.push(contour[0]); - } else if (contour[contour.length - 1].flags & 1) { - contour.unshift(contour[contour.length - 1]); - } else { - const p = { - flags: 1, - x: (contour[0].x + contour[contour.length - 1].x) / 2, - y: (contour[0].y + contour[contour.length - 1].y) / 2 - }; - contour.unshift(p); - contour.push(p); - } - - moveTo(contour[0].x, contour[0].y); - - for (j = 1, jj = contour.length; j < jj; j++) { - if (contour[j].flags & 1) { - lineTo(contour[j].x, contour[j].y); - } else if (contour[j + 1].flags & 1) { - quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y); - j++; - } else { - quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2); - } - } - - startPoint = endPoint + 1; - } - } -} - -function compileCharString(charStringCode, cmds, font, glyphId) { - function moveTo(x, y) { - cmds.push({ - cmd: "moveTo", - args: [x, y] - }); - } - - function lineTo(x, y) { - cmds.push({ - cmd: "lineTo", - args: [x, y] - }); - } - - function bezierCurveTo(x1, y1, x2, y2, x, y) { - cmds.push({ - cmd: "bezierCurveTo", - args: [x1, y1, x2, y2, x, y] - }); - } - - const stack = []; - let x = 0, - y = 0; - let stems = 0; - - function parse(code) { - let i = 0; - - while (i < code.length) { - let stackClean = false; - let v = code[i++]; - let xa, xb, ya, yb, y1, y2, y3, n, subrCode; - - switch (v) { - case 1: - stems += stack.length >> 1; - stackClean = true; - break; - - case 3: - stems += stack.length >> 1; - stackClean = true; - break; - - case 4: - y += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - - case 5: - while (stack.length > 0) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - } - - break; - - case 6: - while (stack.length > 0) { - x += stack.shift(); - lineTo(x, y); - - if (stack.length === 0) { - break; - } - - y += stack.shift(); - lineTo(x, y); - } - - break; - - case 7: - while (stack.length > 0) { - y += stack.shift(); - lineTo(x, y); - - if (stack.length === 0) { - break; - } - - x += stack.shift(); - lineTo(x, y); - } - - break; - - case 8: - while (stack.length > 0) { - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - break; - - case 10: - n = stack.pop(); - subrCode = null; - - if (font.isCFFCIDFont) { - const fdIndex = font.fdSelect.getFDIndex(glyphId); - - if (fdIndex >= 0 && fdIndex < font.fdArray.length) { - const fontDict = font.fdArray[fdIndex]; - let subrs; - - if (fontDict.privateDict && fontDict.privateDict.subrsIndex) { - subrs = fontDict.privateDict.subrsIndex.objects; - } - - if (subrs) { - n += getSubroutineBias(subrs); - subrCode = subrs[n]; - } - } else { - (0, _util.warn)("Invalid fd index for glyph index."); - } - } else { - subrCode = font.subrs[n + font.subrsBias]; - } - - if (subrCode) { - parse(subrCode); - } - - break; - - case 11: - return; - - case 12: - v = code[i++]; - - switch (v) { - case 34: - xa = x + stack.shift(); - xb = xa + stack.shift(); - y1 = y + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y, xb, y1, x, y1); - xa = x + stack.shift(); - xb = xa + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y, x, y); - break; - - case 35: - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - stack.pop(); - break; - - case 36: - xa = x + stack.shift(); - y1 = y + stack.shift(); - xb = xa + stack.shift(); - y2 = y1 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y1, xb, y2, x, y2); - xa = x + stack.shift(); - xb = xa + stack.shift(); - y3 = y2 + stack.shift(); - x = xb + stack.shift(); - bezierCurveTo(xa, y2, xb, y3, x, y); - break; - - case 37: - const x0 = x, - y0 = y; - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb; - y = yb; - - if (Math.abs(x - x0) > Math.abs(y - y0)) { - x += stack.shift(); - } else { - y += stack.shift(); - } - - bezierCurveTo(xa, ya, xb, yb, x, y); - break; - - default: - throw new _util.FormatError(`unknown operator: 12 ${v}`); - } - - break; - - case 14: - if (stack.length >= 4) { - const achar = stack.pop(); - const bchar = stack.pop(); - y = stack.pop(); - x = stack.pop(); - cmds.push({ - cmd: "save" - }, { - cmd: "translate", - args: [x, y] - }); - let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]])); - compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); - cmds.push({ - cmd: "restore" - }); - cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]])); - compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); - } - - return; - - case 18: - stems += stack.length >> 1; - stackClean = true; - break; - - case 19: - stems += stack.length >> 1; - i += stems + 7 >> 3; - stackClean = true; - break; - - case 20: - stems += stack.length >> 1; - i += stems + 7 >> 3; - stackClean = true; - break; - - case 21: - y += stack.pop(); - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - - case 22: - x += stack.pop(); - moveTo(x, y); - stackClean = true; - break; - - case 23: - stems += stack.length >> 1; - stackClean = true; - break; - - case 24: - while (stack.length > 2) { - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - break; - - case 25: - while (stack.length > 6) { - x += stack.shift(); - y += stack.shift(); - lineTo(x, y); - } - - xa = x + stack.shift(); - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - break; - - case 26: - if (stack.length % 2) { - x += stack.shift(); - } - - while (stack.length > 0) { - xa = x; - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb; - y = yb + stack.shift(); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - break; - - case 27: - if (stack.length % 2) { - y += stack.shift(); - } - - while (stack.length > 0) { - xa = x + stack.shift(); - ya = y; - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb; - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - break; - - case 28: - stack.push((code[i] << 24 | code[i + 1] << 16) >> 16); - i += 2; - break; - - case 29: - n = stack.pop() + font.gsubrsBias; - subrCode = font.gsubrs[n]; - - if (subrCode) { - parse(subrCode); - } - - break; - - case 30: - while (stack.length > 0) { - xa = x; - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - - if (stack.length === 0) { - break; - } - - xa = x + stack.shift(); - ya = y; - xb = xa + stack.shift(); - yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - break; - - case 31: - while (stack.length > 0) { - xa = x + stack.shift(); - ya = y; - xb = xa + stack.shift(); - yb = ya + stack.shift(); - y = yb + stack.shift(); - x = xb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - - if (stack.length === 0) { - break; - } - - xa = x; - ya = y + stack.shift(); - xb = xa + stack.shift(); - yb = ya + stack.shift(); - x = xb + stack.shift(); - y = yb + (stack.length === 1 ? stack.shift() : 0); - bezierCurveTo(xa, ya, xb, yb, x, y); - } - - break; - - default: - if (v < 32) { - throw new _util.FormatError(`unknown operator: ${v}`); - } - - if (v < 247) { - stack.push(v - 139); - } else if (v < 251) { - stack.push((v - 247) * 256 + code[i++] + 108); - } else if (v < 255) { - stack.push(-(v - 251) * 256 - code[i++] - 108); - } else { - stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536); - i += 4; - } - - break; - } - - if (stackClean) { - stack.length = 0; - } - } - } - - parse(charStringCode); -} - -const NOOP = []; - -class CompiledFont { - constructor(fontMatrix) { - if (this.constructor === CompiledFont) { - (0, _util.unreachable)("Cannot initialize CompiledFont."); - } - - this.fontMatrix = fontMatrix; - this.compiledGlyphs = Object.create(null); - this.compiledCharCodeToGlyphId = Object.create(null); - } - - getPathJs(unicode) { - const { - charCode, - glyphId - } = lookupCmap(this.cmap, unicode); - let fn = this.compiledGlyphs[glyphId]; - - if (!fn) { - try { - fn = this.compileGlyph(this.glyphs[glyphId], glyphId); - this.compiledGlyphs[glyphId] = fn; - } catch (ex) { - this.compiledGlyphs[glyphId] = NOOP; - - if (this.compiledCharCodeToGlyphId[charCode] === undefined) { - this.compiledCharCodeToGlyphId[charCode] = glyphId; - } - - throw ex; - } - } - - if (this.compiledCharCodeToGlyphId[charCode] === undefined) { - this.compiledCharCodeToGlyphId[charCode] = glyphId; - } - - return fn; - } - - compileGlyph(code, glyphId) { - if (!code || code.length === 0 || code[0] === 14) { - return NOOP; - } - - let fontMatrix = this.fontMatrix; - - if (this.isCFFCIDFont) { - const fdIndex = this.fdSelect.getFDIndex(glyphId); - - if (fdIndex >= 0 && fdIndex < this.fdArray.length) { - const fontDict = this.fdArray[fdIndex]; - fontMatrix = fontDict.getByName("FontMatrix") || _util.FONT_IDENTITY_MATRIX; - } else { - (0, _util.warn)("Invalid fd index for glyph index."); - } - } - - const cmds = [{ - cmd: "save" - }, { - cmd: "transform", - args: fontMatrix.slice() - }, { - cmd: "scale", - args: ["size", "-size"] - }]; - this.compileGlyphImpl(code, cmds, glyphId); - cmds.push({ - cmd: "restore" - }); - return cmds; - } - - compileGlyphImpl() { - (0, _util.unreachable)("Children classes should implement this."); - } - - hasBuiltPath(unicode) { - const { - charCode, - glyphId - } = lookupCmap(this.cmap, unicode); - return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined; - } - -} - -class TrueTypeCompiled extends CompiledFont { - constructor(glyphs, cmap, fontMatrix) { - super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]); - this.glyphs = glyphs; - this.cmap = cmap; - } - - compileGlyphImpl(code, cmds) { - compileGlyf(code, cmds, this); - } - -} - -class Type2Compiled extends CompiledFont { - constructor(cffInfo, cmap, fontMatrix, glyphNameMap) { - super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]); - this.glyphs = cffInfo.glyphs; - this.gsubrs = cffInfo.gsubrs || []; - this.subrs = cffInfo.subrs || []; - this.cmap = cmap; - this.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)(); - this.gsubrsBias = getSubroutineBias(this.gsubrs); - this.subrsBias = getSubroutineBias(this.subrs); - this.isCFFCIDFont = cffInfo.isCFFCIDFont; - this.fdSelect = cffInfo.fdSelect; - this.fdArray = cffInfo.fdArray; - } - - compileGlyphImpl(code, cmds, glyphId) { - compileCharString(code, cmds, this, glyphId); - } - -} - -class FontRendererFactory { - static create(font, seacAnalysisEnabled) { - const data = new Uint8Array(font.data); - let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; - const numTables = getUint16(data, 4); - - for (let i = 0, p = 12; i < numTables; i++, p += 16) { - const tag = (0, _util.bytesToString)(data.subarray(p, p + 4)); - const offset = getUint32(data, p + 8); - const length = getUint32(data, p + 12); - - switch (tag) { - case "cmap": - cmap = parseCmap(data, offset, offset + length); - break; - - case "glyf": - glyf = data.subarray(offset, offset + length); - break; - - case "loca": - loca = data.subarray(offset, offset + length); - break; - - case "head": - unitsPerEm = getUint16(data, offset + 18); - indexToLocFormat = getUint16(data, offset + 50); - break; - - case "CFF ": - cff = parseCff(data, offset, offset + length, seacAnalysisEnabled); - break; - } - } - - if (glyf) { - const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]; - return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); - } - - return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); - } - -} - -exports.FontRendererFactory = FontRendererFactory; - -/***/ }), -/* 51 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getMetrics = exports.getFontBasicMetrics = void 0; - -var _core_utils = __w_pdfjs_require__(8); - -const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { - t.Courier = 600; - t["Courier-Bold"] = 600; - t["Courier-BoldOblique"] = 600; - t["Courier-Oblique"] = 600; - t.Helvetica = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 278; - t.exclam = 278; - t.quotedbl = 355; - t.numbersign = 556; - t.dollar = 556; - t.percent = 889; - t.ampersand = 667; - t.quoteright = 222; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 389; - t.plus = 584; - t.comma = 278; - t.hyphen = 333; - t.period = 278; - t.slash = 278; - t.zero = 556; - t.one = 556; - t.two = 556; - t.three = 556; - t.four = 556; - t.five = 556; - t.six = 556; - t.seven = 556; - t.eight = 556; - t.nine = 556; - t.colon = 278; - t.semicolon = 278; - t.less = 584; - t.equal = 584; - t.greater = 584; - t.question = 556; - t.at = 1015; - t.A = 667; - t.B = 667; - t.C = 722; - t.D = 722; - t.E = 667; - t.F = 611; - t.G = 778; - t.H = 722; - t.I = 278; - t.J = 500; - t.K = 667; - t.L = 556; - t.M = 833; - t.N = 722; - t.O = 778; - t.P = 667; - t.Q = 778; - t.R = 722; - t.S = 667; - t.T = 611; - t.U = 722; - t.V = 667; - t.W = 944; - t.X = 667; - t.Y = 667; - t.Z = 611; - t.bracketleft = 278; - t.backslash = 278; - t.bracketright = 278; - t.asciicircum = 469; - t.underscore = 556; - t.quoteleft = 222; - t.a = 556; - t.b = 556; - t.c = 500; - t.d = 556; - t.e = 556; - t.f = 278; - t.g = 556; - t.h = 556; - t.i = 222; - t.j = 222; - t.k = 500; - t.l = 222; - t.m = 833; - t.n = 556; - t.o = 556; - t.p = 556; - t.q = 556; - t.r = 333; - t.s = 500; - t.t = 278; - t.u = 556; - t.v = 500; - t.w = 722; - t.x = 500; - t.y = 500; - t.z = 500; - t.braceleft = 334; - t.bar = 260; - t.braceright = 334; - t.asciitilde = 584; - t.exclamdown = 333; - t.cent = 556; - t.sterling = 556; - t.fraction = 167; - t.yen = 556; - t.florin = 556; - t.section = 556; - t.currency = 556; - t.quotesingle = 191; - t.quotedblleft = 333; - t.guillemotleft = 556; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 500; - t.fl = 500; - t.endash = 556; - t.dagger = 556; - t.daggerdbl = 556; - t.periodcentered = 278; - t.paragraph = 537; - t.bullet = 350; - t.quotesinglbase = 222; - t.quotedblbase = 333; - t.quotedblright = 333; - t.guillemotright = 556; - t.ellipsis = 1000; - t.perthousand = 1000; - t.questiondown = 611; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 1000; - t.AE = 1000; - t.ordfeminine = 370; - t.Lslash = 556; - t.Oslash = 778; - t.OE = 1000; - t.ordmasculine = 365; - t.ae = 889; - t.dotlessi = 278; - t.lslash = 222; - t.oslash = 611; - t.oe = 944; - t.germandbls = 611; - t.Idieresis = 278; - t.eacute = 556; - t.abreve = 556; - t.uhungarumlaut = 556; - t.ecaron = 556; - t.Ydieresis = 667; - t.divide = 584; - t.Yacute = 667; - t.Acircumflex = 667; - t.aacute = 556; - t.Ucircumflex = 722; - t.yacute = 500; - t.scommaaccent = 500; - t.ecircumflex = 556; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 556; - t.Uacute = 722; - t.uogonek = 556; - t.Edieresis = 667; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 737; - t.Emacron = 667; - t.ccaron = 500; - t.aring = 556; - t.Ncommaaccent = 722; - t.lacute = 222; - t.agrave = 556; - t.Tcommaaccent = 611; - t.Cacute = 722; - t.atilde = 556; - t.Edotaccent = 667; - t.scaron = 500; - t.scedilla = 500; - t.iacute = 278; - t.lozenge = 471; - t.Rcaron = 722; - t.Gcommaaccent = 778; - t.ucircumflex = 556; - t.acircumflex = 556; - t.Amacron = 667; - t.rcaron = 333; - t.ccedilla = 500; - t.Zdotaccent = 611; - t.Thorn = 667; - t.Omacron = 778; - t.Racute = 722; - t.Sacute = 667; - t.dcaron = 643; - t.Umacron = 722; - t.uring = 556; - t.threesuperior = 333; - t.Ograve = 778; - t.Agrave = 667; - t.Abreve = 667; - t.multiply = 584; - t.uacute = 556; - t.Tcaron = 611; - t.partialdiff = 476; - t.ydieresis = 500; - t.Nacute = 722; - t.icircumflex = 278; - t.Ecircumflex = 667; - t.adieresis = 556; - t.edieresis = 556; - t.cacute = 500; - t.nacute = 556; - t.umacron = 556; - t.Ncaron = 722; - t.Iacute = 278; - t.plusminus = 584; - t.brokenbar = 260; - t.registered = 737; - t.Gbreve = 778; - t.Idotaccent = 278; - t.summation = 600; - t.Egrave = 667; - t.racute = 333; - t.omacron = 556; - t.Zacute = 611; - t.Zcaron = 611; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 722; - t.lcommaaccent = 222; - t.tcaron = 317; - t.eogonek = 556; - t.Uogonek = 722; - t.Aacute = 667; - t.Adieresis = 667; - t.egrave = 556; - t.zacute = 500; - t.iogonek = 222; - t.Oacute = 778; - t.oacute = 556; - t.amacron = 556; - t.sacute = 500; - t.idieresis = 278; - t.Ocircumflex = 778; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 556; - t.twosuperior = 333; - t.Odieresis = 778; - t.mu = 556; - t.igrave = 278; - t.ohungarumlaut = 556; - t.Eogonek = 667; - t.dcroat = 556; - t.threequarters = 834; - t.Scedilla = 667; - t.lcaron = 299; - t.Kcommaaccent = 667; - t.Lacute = 556; - t.trademark = 1000; - t.edotaccent = 556; - t.Igrave = 278; - t.Imacron = 278; - t.Lcaron = 556; - t.onehalf = 834; - t.lessequal = 549; - t.ocircumflex = 556; - t.ntilde = 556; - t.Uhungarumlaut = 722; - t.Eacute = 667; - t.emacron = 556; - t.gbreve = 556; - t.onequarter = 834; - t.Scaron = 667; - t.Scommaaccent = 667; - t.Ohungarumlaut = 778; - t.degree = 400; - t.ograve = 556; - t.Ccaron = 722; - t.ugrave = 556; - t.radical = 453; - t.Dcaron = 722; - t.rcommaaccent = 333; - t.Ntilde = 722; - t.otilde = 556; - t.Rcommaaccent = 722; - t.Lcommaaccent = 556; - t.Atilde = 667; - t.Aogonek = 667; - t.Aring = 667; - t.Otilde = 778; - t.zdotaccent = 500; - t.Ecaron = 667; - t.Iogonek = 278; - t.kcommaaccent = 500; - t.minus = 584; - t.Icircumflex = 278; - t.ncaron = 556; - t.tcommaaccent = 278; - t.logicalnot = 584; - t.odieresis = 556; - t.udieresis = 556; - t.notequal = 549; - t.gcommaaccent = 556; - t.eth = 556; - t.zcaron = 500; - t.ncommaaccent = 556; - t.onesuperior = 333; - t.imacron = 278; - t.Euro = 556; - }); - t["Helvetica-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 278; - t.exclam = 333; - t.quotedbl = 474; - t.numbersign = 556; - t.dollar = 556; - t.percent = 889; - t.ampersand = 722; - t.quoteright = 278; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 389; - t.plus = 584; - t.comma = 278; - t.hyphen = 333; - t.period = 278; - t.slash = 278; - t.zero = 556; - t.one = 556; - t.two = 556; - t.three = 556; - t.four = 556; - t.five = 556; - t.six = 556; - t.seven = 556; - t.eight = 556; - t.nine = 556; - t.colon = 333; - t.semicolon = 333; - t.less = 584; - t.equal = 584; - t.greater = 584; - t.question = 611; - t.at = 975; - t.A = 722; - t.B = 722; - t.C = 722; - t.D = 722; - t.E = 667; - t.F = 611; - t.G = 778; - t.H = 722; - t.I = 278; - t.J = 556; - t.K = 722; - t.L = 611; - t.M = 833; - t.N = 722; - t.O = 778; - t.P = 667; - t.Q = 778; - t.R = 722; - t.S = 667; - t.T = 611; - t.U = 722; - t.V = 667; - t.W = 944; - t.X = 667; - t.Y = 667; - t.Z = 611; - t.bracketleft = 333; - t.backslash = 278; - t.bracketright = 333; - t.asciicircum = 584; - t.underscore = 556; - t.quoteleft = 278; - t.a = 556; - t.b = 611; - t.c = 556; - t.d = 611; - t.e = 556; - t.f = 333; - t.g = 611; - t.h = 611; - t.i = 278; - t.j = 278; - t.k = 556; - t.l = 278; - t.m = 889; - t.n = 611; - t.o = 611; - t.p = 611; - t.q = 611; - t.r = 389; - t.s = 556; - t.t = 333; - t.u = 611; - t.v = 556; - t.w = 778; - t.x = 556; - t.y = 556; - t.z = 500; - t.braceleft = 389; - t.bar = 280; - t.braceright = 389; - t.asciitilde = 584; - t.exclamdown = 333; - t.cent = 556; - t.sterling = 556; - t.fraction = 167; - t.yen = 556; - t.florin = 556; - t.section = 556; - t.currency = 556; - t.quotesingle = 238; - t.quotedblleft = 500; - t.guillemotleft = 556; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 611; - t.fl = 611; - t.endash = 556; - t.dagger = 556; - t.daggerdbl = 556; - t.periodcentered = 278; - t.paragraph = 556; - t.bullet = 350; - t.quotesinglbase = 278; - t.quotedblbase = 500; - t.quotedblright = 500; - t.guillemotright = 556; - t.ellipsis = 1000; - t.perthousand = 1000; - t.questiondown = 611; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 1000; - t.AE = 1000; - t.ordfeminine = 370; - t.Lslash = 611; - t.Oslash = 778; - t.OE = 1000; - t.ordmasculine = 365; - t.ae = 889; - t.dotlessi = 278; - t.lslash = 278; - t.oslash = 611; - t.oe = 944; - t.germandbls = 611; - t.Idieresis = 278; - t.eacute = 556; - t.abreve = 556; - t.uhungarumlaut = 611; - t.ecaron = 556; - t.Ydieresis = 667; - t.divide = 584; - t.Yacute = 667; - t.Acircumflex = 722; - t.aacute = 556; - t.Ucircumflex = 722; - t.yacute = 556; - t.scommaaccent = 556; - t.ecircumflex = 556; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 556; - t.Uacute = 722; - t.uogonek = 611; - t.Edieresis = 667; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 737; - t.Emacron = 667; - t.ccaron = 556; - t.aring = 556; - t.Ncommaaccent = 722; - t.lacute = 278; - t.agrave = 556; - t.Tcommaaccent = 611; - t.Cacute = 722; - t.atilde = 556; - t.Edotaccent = 667; - t.scaron = 556; - t.scedilla = 556; - t.iacute = 278; - t.lozenge = 494; - t.Rcaron = 722; - t.Gcommaaccent = 778; - t.ucircumflex = 611; - t.acircumflex = 556; - t.Amacron = 722; - t.rcaron = 389; - t.ccedilla = 556; - t.Zdotaccent = 611; - t.Thorn = 667; - t.Omacron = 778; - t.Racute = 722; - t.Sacute = 667; - t.dcaron = 743; - t.Umacron = 722; - t.uring = 611; - t.threesuperior = 333; - t.Ograve = 778; - t.Agrave = 722; - t.Abreve = 722; - t.multiply = 584; - t.uacute = 611; - t.Tcaron = 611; - t.partialdiff = 494; - t.ydieresis = 556; - t.Nacute = 722; - t.icircumflex = 278; - t.Ecircumflex = 667; - t.adieresis = 556; - t.edieresis = 556; - t.cacute = 556; - t.nacute = 611; - t.umacron = 611; - t.Ncaron = 722; - t.Iacute = 278; - t.plusminus = 584; - t.brokenbar = 280; - t.registered = 737; - t.Gbreve = 778; - t.Idotaccent = 278; - t.summation = 600; - t.Egrave = 667; - t.racute = 389; - t.omacron = 611; - t.Zacute = 611; - t.Zcaron = 611; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 722; - t.lcommaaccent = 278; - t.tcaron = 389; - t.eogonek = 556; - t.Uogonek = 722; - t.Aacute = 722; - t.Adieresis = 722; - t.egrave = 556; - t.zacute = 500; - t.iogonek = 278; - t.Oacute = 778; - t.oacute = 611; - t.amacron = 556; - t.sacute = 556; - t.idieresis = 278; - t.Ocircumflex = 778; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 611; - t.twosuperior = 333; - t.Odieresis = 778; - t.mu = 611; - t.igrave = 278; - t.ohungarumlaut = 611; - t.Eogonek = 667; - t.dcroat = 611; - t.threequarters = 834; - t.Scedilla = 667; - t.lcaron = 400; - t.Kcommaaccent = 722; - t.Lacute = 611; - t.trademark = 1000; - t.edotaccent = 556; - t.Igrave = 278; - t.Imacron = 278; - t.Lcaron = 611; - t.onehalf = 834; - t.lessequal = 549; - t.ocircumflex = 611; - t.ntilde = 611; - t.Uhungarumlaut = 722; - t.Eacute = 667; - t.emacron = 556; - t.gbreve = 611; - t.onequarter = 834; - t.Scaron = 667; - t.Scommaaccent = 667; - t.Ohungarumlaut = 778; - t.degree = 400; - t.ograve = 611; - t.Ccaron = 722; - t.ugrave = 611; - t.radical = 549; - t.Dcaron = 722; - t.rcommaaccent = 389; - t.Ntilde = 722; - t.otilde = 611; - t.Rcommaaccent = 722; - t.Lcommaaccent = 611; - t.Atilde = 722; - t.Aogonek = 722; - t.Aring = 722; - t.Otilde = 778; - t.zdotaccent = 500; - t.Ecaron = 667; - t.Iogonek = 278; - t.kcommaaccent = 556; - t.minus = 584; - t.Icircumflex = 278; - t.ncaron = 611; - t.tcommaaccent = 333; - t.logicalnot = 584; - t.odieresis = 611; - t.udieresis = 611; - t.notequal = 549; - t.gcommaaccent = 611; - t.eth = 611; - t.zcaron = 500; - t.ncommaaccent = 611; - t.onesuperior = 333; - t.imacron = 278; - t.Euro = 556; - }); - t["Helvetica-BoldOblique"] = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 278; - t.exclam = 333; - t.quotedbl = 474; - t.numbersign = 556; - t.dollar = 556; - t.percent = 889; - t.ampersand = 722; - t.quoteright = 278; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 389; - t.plus = 584; - t.comma = 278; - t.hyphen = 333; - t.period = 278; - t.slash = 278; - t.zero = 556; - t.one = 556; - t.two = 556; - t.three = 556; - t.four = 556; - t.five = 556; - t.six = 556; - t.seven = 556; - t.eight = 556; - t.nine = 556; - t.colon = 333; - t.semicolon = 333; - t.less = 584; - t.equal = 584; - t.greater = 584; - t.question = 611; - t.at = 975; - t.A = 722; - t.B = 722; - t.C = 722; - t.D = 722; - t.E = 667; - t.F = 611; - t.G = 778; - t.H = 722; - t.I = 278; - t.J = 556; - t.K = 722; - t.L = 611; - t.M = 833; - t.N = 722; - t.O = 778; - t.P = 667; - t.Q = 778; - t.R = 722; - t.S = 667; - t.T = 611; - t.U = 722; - t.V = 667; - t.W = 944; - t.X = 667; - t.Y = 667; - t.Z = 611; - t.bracketleft = 333; - t.backslash = 278; - t.bracketright = 333; - t.asciicircum = 584; - t.underscore = 556; - t.quoteleft = 278; - t.a = 556; - t.b = 611; - t.c = 556; - t.d = 611; - t.e = 556; - t.f = 333; - t.g = 611; - t.h = 611; - t.i = 278; - t.j = 278; - t.k = 556; - t.l = 278; - t.m = 889; - t.n = 611; - t.o = 611; - t.p = 611; - t.q = 611; - t.r = 389; - t.s = 556; - t.t = 333; - t.u = 611; - t.v = 556; - t.w = 778; - t.x = 556; - t.y = 556; - t.z = 500; - t.braceleft = 389; - t.bar = 280; - t.braceright = 389; - t.asciitilde = 584; - t.exclamdown = 333; - t.cent = 556; - t.sterling = 556; - t.fraction = 167; - t.yen = 556; - t.florin = 556; - t.section = 556; - t.currency = 556; - t.quotesingle = 238; - t.quotedblleft = 500; - t.guillemotleft = 556; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 611; - t.fl = 611; - t.endash = 556; - t.dagger = 556; - t.daggerdbl = 556; - t.periodcentered = 278; - t.paragraph = 556; - t.bullet = 350; - t.quotesinglbase = 278; - t.quotedblbase = 500; - t.quotedblright = 500; - t.guillemotright = 556; - t.ellipsis = 1000; - t.perthousand = 1000; - t.questiondown = 611; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 1000; - t.AE = 1000; - t.ordfeminine = 370; - t.Lslash = 611; - t.Oslash = 778; - t.OE = 1000; - t.ordmasculine = 365; - t.ae = 889; - t.dotlessi = 278; - t.lslash = 278; - t.oslash = 611; - t.oe = 944; - t.germandbls = 611; - t.Idieresis = 278; - t.eacute = 556; - t.abreve = 556; - t.uhungarumlaut = 611; - t.ecaron = 556; - t.Ydieresis = 667; - t.divide = 584; - t.Yacute = 667; - t.Acircumflex = 722; - t.aacute = 556; - t.Ucircumflex = 722; - t.yacute = 556; - t.scommaaccent = 556; - t.ecircumflex = 556; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 556; - t.Uacute = 722; - t.uogonek = 611; - t.Edieresis = 667; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 737; - t.Emacron = 667; - t.ccaron = 556; - t.aring = 556; - t.Ncommaaccent = 722; - t.lacute = 278; - t.agrave = 556; - t.Tcommaaccent = 611; - t.Cacute = 722; - t.atilde = 556; - t.Edotaccent = 667; - t.scaron = 556; - t.scedilla = 556; - t.iacute = 278; - t.lozenge = 494; - t.Rcaron = 722; - t.Gcommaaccent = 778; - t.ucircumflex = 611; - t.acircumflex = 556; - t.Amacron = 722; - t.rcaron = 389; - t.ccedilla = 556; - t.Zdotaccent = 611; - t.Thorn = 667; - t.Omacron = 778; - t.Racute = 722; - t.Sacute = 667; - t.dcaron = 743; - t.Umacron = 722; - t.uring = 611; - t.threesuperior = 333; - t.Ograve = 778; - t.Agrave = 722; - t.Abreve = 722; - t.multiply = 584; - t.uacute = 611; - t.Tcaron = 611; - t.partialdiff = 494; - t.ydieresis = 556; - t.Nacute = 722; - t.icircumflex = 278; - t.Ecircumflex = 667; - t.adieresis = 556; - t.edieresis = 556; - t.cacute = 556; - t.nacute = 611; - t.umacron = 611; - t.Ncaron = 722; - t.Iacute = 278; - t.plusminus = 584; - t.brokenbar = 280; - t.registered = 737; - t.Gbreve = 778; - t.Idotaccent = 278; - t.summation = 600; - t.Egrave = 667; - t.racute = 389; - t.omacron = 611; - t.Zacute = 611; - t.Zcaron = 611; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 722; - t.lcommaaccent = 278; - t.tcaron = 389; - t.eogonek = 556; - t.Uogonek = 722; - t.Aacute = 722; - t.Adieresis = 722; - t.egrave = 556; - t.zacute = 500; - t.iogonek = 278; - t.Oacute = 778; - t.oacute = 611; - t.amacron = 556; - t.sacute = 556; - t.idieresis = 278; - t.Ocircumflex = 778; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 611; - t.twosuperior = 333; - t.Odieresis = 778; - t.mu = 611; - t.igrave = 278; - t.ohungarumlaut = 611; - t.Eogonek = 667; - t.dcroat = 611; - t.threequarters = 834; - t.Scedilla = 667; - t.lcaron = 400; - t.Kcommaaccent = 722; - t.Lacute = 611; - t.trademark = 1000; - t.edotaccent = 556; - t.Igrave = 278; - t.Imacron = 278; - t.Lcaron = 611; - t.onehalf = 834; - t.lessequal = 549; - t.ocircumflex = 611; - t.ntilde = 611; - t.Uhungarumlaut = 722; - t.Eacute = 667; - t.emacron = 556; - t.gbreve = 611; - t.onequarter = 834; - t.Scaron = 667; - t.Scommaaccent = 667; - t.Ohungarumlaut = 778; - t.degree = 400; - t.ograve = 611; - t.Ccaron = 722; - t.ugrave = 611; - t.radical = 549; - t.Dcaron = 722; - t.rcommaaccent = 389; - t.Ntilde = 722; - t.otilde = 611; - t.Rcommaaccent = 722; - t.Lcommaaccent = 611; - t.Atilde = 722; - t.Aogonek = 722; - t.Aring = 722; - t.Otilde = 778; - t.zdotaccent = 500; - t.Ecaron = 667; - t.Iogonek = 278; - t.kcommaaccent = 556; - t.minus = 584; - t.Icircumflex = 278; - t.ncaron = 611; - t.tcommaaccent = 333; - t.logicalnot = 584; - t.odieresis = 611; - t.udieresis = 611; - t.notequal = 549; - t.gcommaaccent = 611; - t.eth = 611; - t.zcaron = 500; - t.ncommaaccent = 611; - t.onesuperior = 333; - t.imacron = 278; - t.Euro = 556; - }); - t["Helvetica-Oblique"] = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 278; - t.exclam = 278; - t.quotedbl = 355; - t.numbersign = 556; - t.dollar = 556; - t.percent = 889; - t.ampersand = 667; - t.quoteright = 222; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 389; - t.plus = 584; - t.comma = 278; - t.hyphen = 333; - t.period = 278; - t.slash = 278; - t.zero = 556; - t.one = 556; - t.two = 556; - t.three = 556; - t.four = 556; - t.five = 556; - t.six = 556; - t.seven = 556; - t.eight = 556; - t.nine = 556; - t.colon = 278; - t.semicolon = 278; - t.less = 584; - t.equal = 584; - t.greater = 584; - t.question = 556; - t.at = 1015; - t.A = 667; - t.B = 667; - t.C = 722; - t.D = 722; - t.E = 667; - t.F = 611; - t.G = 778; - t.H = 722; - t.I = 278; - t.J = 500; - t.K = 667; - t.L = 556; - t.M = 833; - t.N = 722; - t.O = 778; - t.P = 667; - t.Q = 778; - t.R = 722; - t.S = 667; - t.T = 611; - t.U = 722; - t.V = 667; - t.W = 944; - t.X = 667; - t.Y = 667; - t.Z = 611; - t.bracketleft = 278; - t.backslash = 278; - t.bracketright = 278; - t.asciicircum = 469; - t.underscore = 556; - t.quoteleft = 222; - t.a = 556; - t.b = 556; - t.c = 500; - t.d = 556; - t.e = 556; - t.f = 278; - t.g = 556; - t.h = 556; - t.i = 222; - t.j = 222; - t.k = 500; - t.l = 222; - t.m = 833; - t.n = 556; - t.o = 556; - t.p = 556; - t.q = 556; - t.r = 333; - t.s = 500; - t.t = 278; - t.u = 556; - t.v = 500; - t.w = 722; - t.x = 500; - t.y = 500; - t.z = 500; - t.braceleft = 334; - t.bar = 260; - t.braceright = 334; - t.asciitilde = 584; - t.exclamdown = 333; - t.cent = 556; - t.sterling = 556; - t.fraction = 167; - t.yen = 556; - t.florin = 556; - t.section = 556; - t.currency = 556; - t.quotesingle = 191; - t.quotedblleft = 333; - t.guillemotleft = 556; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 500; - t.fl = 500; - t.endash = 556; - t.dagger = 556; - t.daggerdbl = 556; - t.periodcentered = 278; - t.paragraph = 537; - t.bullet = 350; - t.quotesinglbase = 222; - t.quotedblbase = 333; - t.quotedblright = 333; - t.guillemotright = 556; - t.ellipsis = 1000; - t.perthousand = 1000; - t.questiondown = 611; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 1000; - t.AE = 1000; - t.ordfeminine = 370; - t.Lslash = 556; - t.Oslash = 778; - t.OE = 1000; - t.ordmasculine = 365; - t.ae = 889; - t.dotlessi = 278; - t.lslash = 222; - t.oslash = 611; - t.oe = 944; - t.germandbls = 611; - t.Idieresis = 278; - t.eacute = 556; - t.abreve = 556; - t.uhungarumlaut = 556; - t.ecaron = 556; - t.Ydieresis = 667; - t.divide = 584; - t.Yacute = 667; - t.Acircumflex = 667; - t.aacute = 556; - t.Ucircumflex = 722; - t.yacute = 500; - t.scommaaccent = 500; - t.ecircumflex = 556; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 556; - t.Uacute = 722; - t.uogonek = 556; - t.Edieresis = 667; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 737; - t.Emacron = 667; - t.ccaron = 500; - t.aring = 556; - t.Ncommaaccent = 722; - t.lacute = 222; - t.agrave = 556; - t.Tcommaaccent = 611; - t.Cacute = 722; - t.atilde = 556; - t.Edotaccent = 667; - t.scaron = 500; - t.scedilla = 500; - t.iacute = 278; - t.lozenge = 471; - t.Rcaron = 722; - t.Gcommaaccent = 778; - t.ucircumflex = 556; - t.acircumflex = 556; - t.Amacron = 667; - t.rcaron = 333; - t.ccedilla = 500; - t.Zdotaccent = 611; - t.Thorn = 667; - t.Omacron = 778; - t.Racute = 722; - t.Sacute = 667; - t.dcaron = 643; - t.Umacron = 722; - t.uring = 556; - t.threesuperior = 333; - t.Ograve = 778; - t.Agrave = 667; - t.Abreve = 667; - t.multiply = 584; - t.uacute = 556; - t.Tcaron = 611; - t.partialdiff = 476; - t.ydieresis = 500; - t.Nacute = 722; - t.icircumflex = 278; - t.Ecircumflex = 667; - t.adieresis = 556; - t.edieresis = 556; - t.cacute = 500; - t.nacute = 556; - t.umacron = 556; - t.Ncaron = 722; - t.Iacute = 278; - t.plusminus = 584; - t.brokenbar = 260; - t.registered = 737; - t.Gbreve = 778; - t.Idotaccent = 278; - t.summation = 600; - t.Egrave = 667; - t.racute = 333; - t.omacron = 556; - t.Zacute = 611; - t.Zcaron = 611; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 722; - t.lcommaaccent = 222; - t.tcaron = 317; - t.eogonek = 556; - t.Uogonek = 722; - t.Aacute = 667; - t.Adieresis = 667; - t.egrave = 556; - t.zacute = 500; - t.iogonek = 222; - t.Oacute = 778; - t.oacute = 556; - t.amacron = 556; - t.sacute = 500; - t.idieresis = 278; - t.Ocircumflex = 778; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 556; - t.twosuperior = 333; - t.Odieresis = 778; - t.mu = 556; - t.igrave = 278; - t.ohungarumlaut = 556; - t.Eogonek = 667; - t.dcroat = 556; - t.threequarters = 834; - t.Scedilla = 667; - t.lcaron = 299; - t.Kcommaaccent = 667; - t.Lacute = 556; - t.trademark = 1000; - t.edotaccent = 556; - t.Igrave = 278; - t.Imacron = 278; - t.Lcaron = 556; - t.onehalf = 834; - t.lessequal = 549; - t.ocircumflex = 556; - t.ntilde = 556; - t.Uhungarumlaut = 722; - t.Eacute = 667; - t.emacron = 556; - t.gbreve = 556; - t.onequarter = 834; - t.Scaron = 667; - t.Scommaaccent = 667; - t.Ohungarumlaut = 778; - t.degree = 400; - t.ograve = 556; - t.Ccaron = 722; - t.ugrave = 556; - t.radical = 453; - t.Dcaron = 722; - t.rcommaaccent = 333; - t.Ntilde = 722; - t.otilde = 556; - t.Rcommaaccent = 722; - t.Lcommaaccent = 556; - t.Atilde = 667; - t.Aogonek = 667; - t.Aring = 667; - t.Otilde = 778; - t.zdotaccent = 500; - t.Ecaron = 667; - t.Iogonek = 278; - t.kcommaaccent = 500; - t.minus = 584; - t.Icircumflex = 278; - t.ncaron = 556; - t.tcommaaccent = 278; - t.logicalnot = 584; - t.odieresis = 556; - t.udieresis = 556; - t.notequal = 549; - t.gcommaaccent = 556; - t.eth = 556; - t.zcaron = 500; - t.ncommaaccent = 556; - t.onesuperior = 333; - t.imacron = 278; - t.Euro = 556; - }); - t.Symbol = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 250; - t.exclam = 333; - t.universal = 713; - t.numbersign = 500; - t.existential = 549; - t.percent = 833; - t.ampersand = 778; - t.suchthat = 439; - t.parenleft = 333; - t.parenright = 333; - t.asteriskmath = 500; - t.plus = 549; - t.comma = 250; - t.minus = 549; - t.period = 250; - t.slash = 278; - t.zero = 500; - t.one = 500; - t.two = 500; - t.three = 500; - t.four = 500; - t.five = 500; - t.six = 500; - t.seven = 500; - t.eight = 500; - t.nine = 500; - t.colon = 278; - t.semicolon = 278; - t.less = 549; - t.equal = 549; - t.greater = 549; - t.question = 444; - t.congruent = 549; - t.Alpha = 722; - t.Beta = 667; - t.Chi = 722; - t.Delta = 612; - t.Epsilon = 611; - t.Phi = 763; - t.Gamma = 603; - t.Eta = 722; - t.Iota = 333; - t.theta1 = 631; - t.Kappa = 722; - t.Lambda = 686; - t.Mu = 889; - t.Nu = 722; - t.Omicron = 722; - t.Pi = 768; - t.Theta = 741; - t.Rho = 556; - t.Sigma = 592; - t.Tau = 611; - t.Upsilon = 690; - t.sigma1 = 439; - t.Omega = 768; - t.Xi = 645; - t.Psi = 795; - t.Zeta = 611; - t.bracketleft = 333; - t.therefore = 863; - t.bracketright = 333; - t.perpendicular = 658; - t.underscore = 500; - t.radicalex = 500; - t.alpha = 631; - t.beta = 549; - t.chi = 549; - t.delta = 494; - t.epsilon = 439; - t.phi = 521; - t.gamma = 411; - t.eta = 603; - t.iota = 329; - t.phi1 = 603; - t.kappa = 549; - t.lambda = 549; - t.mu = 576; - t.nu = 521; - t.omicron = 549; - t.pi = 549; - t.theta = 521; - t.rho = 549; - t.sigma = 603; - t.tau = 439; - t.upsilon = 576; - t.omega1 = 713; - t.omega = 686; - t.xi = 493; - t.psi = 686; - t.zeta = 494; - t.braceleft = 480; - t.bar = 200; - t.braceright = 480; - t.similar = 549; - t.Euro = 750; - t.Upsilon1 = 620; - t.minute = 247; - t.lessequal = 549; - t.fraction = 167; - t.infinity = 713; - t.florin = 500; - t.club = 753; - t.diamond = 753; - t.heart = 753; - t.spade = 753; - t.arrowboth = 1042; - t.arrowleft = 987; - t.arrowup = 603; - t.arrowright = 987; - t.arrowdown = 603; - t.degree = 400; - t.plusminus = 549; - t.second = 411; - t.greaterequal = 549; - t.multiply = 549; - t.proportional = 713; - t.partialdiff = 494; - t.bullet = 460; - t.divide = 549; - t.notequal = 549; - t.equivalence = 549; - t.approxequal = 549; - t.ellipsis = 1000; - t.arrowvertex = 603; - t.arrowhorizex = 1000; - t.carriagereturn = 658; - t.aleph = 823; - t.Ifraktur = 686; - t.Rfraktur = 795; - t.weierstrass = 987; - t.circlemultiply = 768; - t.circleplus = 768; - t.emptyset = 823; - t.intersection = 768; - t.union = 768; - t.propersuperset = 713; - t.reflexsuperset = 713; - t.notsubset = 713; - t.propersubset = 713; - t.reflexsubset = 713; - t.element = 713; - t.notelement = 713; - t.angle = 768; - t.gradient = 713; - t.registerserif = 790; - t.copyrightserif = 790; - t.trademarkserif = 890; - t.product = 823; - t.radical = 549; - t.dotmath = 250; - t.logicalnot = 713; - t.logicaland = 603; - t.logicalor = 603; - t.arrowdblboth = 1042; - t.arrowdblleft = 987; - t.arrowdblup = 603; - t.arrowdblright = 987; - t.arrowdbldown = 603; - t.lozenge = 494; - t.angleleft = 329; - t.registersans = 790; - t.copyrightsans = 790; - t.trademarksans = 786; - t.summation = 713; - t.parenlefttp = 384; - t.parenleftex = 384; - t.parenleftbt = 384; - t.bracketlefttp = 384; - t.bracketleftex = 384; - t.bracketleftbt = 384; - t.bracelefttp = 494; - t.braceleftmid = 494; - t.braceleftbt = 494; - t.braceex = 494; - t.angleright = 329; - t.integral = 274; - t.integraltp = 686; - t.integralex = 686; - t.integralbt = 686; - t.parenrighttp = 384; - t.parenrightex = 384; - t.parenrightbt = 384; - t.bracketrighttp = 384; - t.bracketrightex = 384; - t.bracketrightbt = 384; - t.bracerighttp = 494; - t.bracerightmid = 494; - t.bracerightbt = 494; - t.apple = 790; - }); - t["Times-Roman"] = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 250; - t.exclam = 333; - t.quotedbl = 408; - t.numbersign = 500; - t.dollar = 500; - t.percent = 833; - t.ampersand = 778; - t.quoteright = 333; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 500; - t.plus = 564; - t.comma = 250; - t.hyphen = 333; - t.period = 250; - t.slash = 278; - t.zero = 500; - t.one = 500; - t.two = 500; - t.three = 500; - t.four = 500; - t.five = 500; - t.six = 500; - t.seven = 500; - t.eight = 500; - t.nine = 500; - t.colon = 278; - t.semicolon = 278; - t.less = 564; - t.equal = 564; - t.greater = 564; - t.question = 444; - t.at = 921; - t.A = 722; - t.B = 667; - t.C = 667; - t.D = 722; - t.E = 611; - t.F = 556; - t.G = 722; - t.H = 722; - t.I = 333; - t.J = 389; - t.K = 722; - t.L = 611; - t.M = 889; - t.N = 722; - t.O = 722; - t.P = 556; - t.Q = 722; - t.R = 667; - t.S = 556; - t.T = 611; - t.U = 722; - t.V = 722; - t.W = 944; - t.X = 722; - t.Y = 722; - t.Z = 611; - t.bracketleft = 333; - t.backslash = 278; - t.bracketright = 333; - t.asciicircum = 469; - t.underscore = 500; - t.quoteleft = 333; - t.a = 444; - t.b = 500; - t.c = 444; - t.d = 500; - t.e = 444; - t.f = 333; - t.g = 500; - t.h = 500; - t.i = 278; - t.j = 278; - t.k = 500; - t.l = 278; - t.m = 778; - t.n = 500; - t.o = 500; - t.p = 500; - t.q = 500; - t.r = 333; - t.s = 389; - t.t = 278; - t.u = 500; - t.v = 500; - t.w = 722; - t.x = 500; - t.y = 500; - t.z = 444; - t.braceleft = 480; - t.bar = 200; - t.braceright = 480; - t.asciitilde = 541; - t.exclamdown = 333; - t.cent = 500; - t.sterling = 500; - t.fraction = 167; - t.yen = 500; - t.florin = 500; - t.section = 500; - t.currency = 500; - t.quotesingle = 180; - t.quotedblleft = 444; - t.guillemotleft = 500; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 556; - t.fl = 556; - t.endash = 500; - t.dagger = 500; - t.daggerdbl = 500; - t.periodcentered = 250; - t.paragraph = 453; - t.bullet = 350; - t.quotesinglbase = 333; - t.quotedblbase = 444; - t.quotedblright = 444; - t.guillemotright = 500; - t.ellipsis = 1000; - t.perthousand = 1000; - t.questiondown = 444; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 1000; - t.AE = 889; - t.ordfeminine = 276; - t.Lslash = 611; - t.Oslash = 722; - t.OE = 889; - t.ordmasculine = 310; - t.ae = 667; - t.dotlessi = 278; - t.lslash = 278; - t.oslash = 500; - t.oe = 722; - t.germandbls = 500; - t.Idieresis = 333; - t.eacute = 444; - t.abreve = 444; - t.uhungarumlaut = 500; - t.ecaron = 444; - t.Ydieresis = 722; - t.divide = 564; - t.Yacute = 722; - t.Acircumflex = 722; - t.aacute = 444; - t.Ucircumflex = 722; - t.yacute = 500; - t.scommaaccent = 389; - t.ecircumflex = 444; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 444; - t.Uacute = 722; - t.uogonek = 500; - t.Edieresis = 611; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 760; - t.Emacron = 611; - t.ccaron = 444; - t.aring = 444; - t.Ncommaaccent = 722; - t.lacute = 278; - t.agrave = 444; - t.Tcommaaccent = 611; - t.Cacute = 667; - t.atilde = 444; - t.Edotaccent = 611; - t.scaron = 389; - t.scedilla = 389; - t.iacute = 278; - t.lozenge = 471; - t.Rcaron = 667; - t.Gcommaaccent = 722; - t.ucircumflex = 500; - t.acircumflex = 444; - t.Amacron = 722; - t.rcaron = 333; - t.ccedilla = 444; - t.Zdotaccent = 611; - t.Thorn = 556; - t.Omacron = 722; - t.Racute = 667; - t.Sacute = 556; - t.dcaron = 588; - t.Umacron = 722; - t.uring = 500; - t.threesuperior = 300; - t.Ograve = 722; - t.Agrave = 722; - t.Abreve = 722; - t.multiply = 564; - t.uacute = 500; - t.Tcaron = 611; - t.partialdiff = 476; - t.ydieresis = 500; - t.Nacute = 722; - t.icircumflex = 278; - t.Ecircumflex = 611; - t.adieresis = 444; - t.edieresis = 444; - t.cacute = 444; - t.nacute = 500; - t.umacron = 500; - t.Ncaron = 722; - t.Iacute = 333; - t.plusminus = 564; - t.brokenbar = 200; - t.registered = 760; - t.Gbreve = 722; - t.Idotaccent = 333; - t.summation = 600; - t.Egrave = 611; - t.racute = 333; - t.omacron = 500; - t.Zacute = 611; - t.Zcaron = 611; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 667; - t.lcommaaccent = 278; - t.tcaron = 326; - t.eogonek = 444; - t.Uogonek = 722; - t.Aacute = 722; - t.Adieresis = 722; - t.egrave = 444; - t.zacute = 444; - t.iogonek = 278; - t.Oacute = 722; - t.oacute = 500; - t.amacron = 444; - t.sacute = 389; - t.idieresis = 278; - t.Ocircumflex = 722; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 500; - t.twosuperior = 300; - t.Odieresis = 722; - t.mu = 500; - t.igrave = 278; - t.ohungarumlaut = 500; - t.Eogonek = 611; - t.dcroat = 500; - t.threequarters = 750; - t.Scedilla = 556; - t.lcaron = 344; - t.Kcommaaccent = 722; - t.Lacute = 611; - t.trademark = 980; - t.edotaccent = 444; - t.Igrave = 333; - t.Imacron = 333; - t.Lcaron = 611; - t.onehalf = 750; - t.lessequal = 549; - t.ocircumflex = 500; - t.ntilde = 500; - t.Uhungarumlaut = 722; - t.Eacute = 611; - t.emacron = 444; - t.gbreve = 500; - t.onequarter = 750; - t.Scaron = 556; - t.Scommaaccent = 556; - t.Ohungarumlaut = 722; - t.degree = 400; - t.ograve = 500; - t.Ccaron = 667; - t.ugrave = 500; - t.radical = 453; - t.Dcaron = 722; - t.rcommaaccent = 333; - t.Ntilde = 722; - t.otilde = 500; - t.Rcommaaccent = 667; - t.Lcommaaccent = 611; - t.Atilde = 722; - t.Aogonek = 722; - t.Aring = 722; - t.Otilde = 722; - t.zdotaccent = 444; - t.Ecaron = 611; - t.Iogonek = 333; - t.kcommaaccent = 500; - t.minus = 564; - t.Icircumflex = 333; - t.ncaron = 500; - t.tcommaaccent = 278; - t.logicalnot = 564; - t.odieresis = 500; - t.udieresis = 500; - t.notequal = 549; - t.gcommaaccent = 500; - t.eth = 500; - t.zcaron = 444; - t.ncommaaccent = 500; - t.onesuperior = 300; - t.imacron = 278; - t.Euro = 500; - }); - t["Times-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 250; - t.exclam = 333; - t.quotedbl = 555; - t.numbersign = 500; - t.dollar = 500; - t.percent = 1000; - t.ampersand = 833; - t.quoteright = 333; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 500; - t.plus = 570; - t.comma = 250; - t.hyphen = 333; - t.period = 250; - t.slash = 278; - t.zero = 500; - t.one = 500; - t.two = 500; - t.three = 500; - t.four = 500; - t.five = 500; - t.six = 500; - t.seven = 500; - t.eight = 500; - t.nine = 500; - t.colon = 333; - t.semicolon = 333; - t.less = 570; - t.equal = 570; - t.greater = 570; - t.question = 500; - t.at = 930; - t.A = 722; - t.B = 667; - t.C = 722; - t.D = 722; - t.E = 667; - t.F = 611; - t.G = 778; - t.H = 778; - t.I = 389; - t.J = 500; - t.K = 778; - t.L = 667; - t.M = 944; - t.N = 722; - t.O = 778; - t.P = 611; - t.Q = 778; - t.R = 722; - t.S = 556; - t.T = 667; - t.U = 722; - t.V = 722; - t.W = 1000; - t.X = 722; - t.Y = 722; - t.Z = 667; - t.bracketleft = 333; - t.backslash = 278; - t.bracketright = 333; - t.asciicircum = 581; - t.underscore = 500; - t.quoteleft = 333; - t.a = 500; - t.b = 556; - t.c = 444; - t.d = 556; - t.e = 444; - t.f = 333; - t.g = 500; - t.h = 556; - t.i = 278; - t.j = 333; - t.k = 556; - t.l = 278; - t.m = 833; - t.n = 556; - t.o = 500; - t.p = 556; - t.q = 556; - t.r = 444; - t.s = 389; - t.t = 333; - t.u = 556; - t.v = 500; - t.w = 722; - t.x = 500; - t.y = 500; - t.z = 444; - t.braceleft = 394; - t.bar = 220; - t.braceright = 394; - t.asciitilde = 520; - t.exclamdown = 333; - t.cent = 500; - t.sterling = 500; - t.fraction = 167; - t.yen = 500; - t.florin = 500; - t.section = 500; - t.currency = 500; - t.quotesingle = 278; - t.quotedblleft = 500; - t.guillemotleft = 500; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 556; - t.fl = 556; - t.endash = 500; - t.dagger = 500; - t.daggerdbl = 500; - t.periodcentered = 250; - t.paragraph = 540; - t.bullet = 350; - t.quotesinglbase = 333; - t.quotedblbase = 500; - t.quotedblright = 500; - t.guillemotright = 500; - t.ellipsis = 1000; - t.perthousand = 1000; - t.questiondown = 500; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 1000; - t.AE = 1000; - t.ordfeminine = 300; - t.Lslash = 667; - t.Oslash = 778; - t.OE = 1000; - t.ordmasculine = 330; - t.ae = 722; - t.dotlessi = 278; - t.lslash = 278; - t.oslash = 500; - t.oe = 722; - t.germandbls = 556; - t.Idieresis = 389; - t.eacute = 444; - t.abreve = 500; - t.uhungarumlaut = 556; - t.ecaron = 444; - t.Ydieresis = 722; - t.divide = 570; - t.Yacute = 722; - t.Acircumflex = 722; - t.aacute = 500; - t.Ucircumflex = 722; - t.yacute = 500; - t.scommaaccent = 389; - t.ecircumflex = 444; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 500; - t.Uacute = 722; - t.uogonek = 556; - t.Edieresis = 667; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 747; - t.Emacron = 667; - t.ccaron = 444; - t.aring = 500; - t.Ncommaaccent = 722; - t.lacute = 278; - t.agrave = 500; - t.Tcommaaccent = 667; - t.Cacute = 722; - t.atilde = 500; - t.Edotaccent = 667; - t.scaron = 389; - t.scedilla = 389; - t.iacute = 278; - t.lozenge = 494; - t.Rcaron = 722; - t.Gcommaaccent = 778; - t.ucircumflex = 556; - t.acircumflex = 500; - t.Amacron = 722; - t.rcaron = 444; - t.ccedilla = 444; - t.Zdotaccent = 667; - t.Thorn = 611; - t.Omacron = 778; - t.Racute = 722; - t.Sacute = 556; - t.dcaron = 672; - t.Umacron = 722; - t.uring = 556; - t.threesuperior = 300; - t.Ograve = 778; - t.Agrave = 722; - t.Abreve = 722; - t.multiply = 570; - t.uacute = 556; - t.Tcaron = 667; - t.partialdiff = 494; - t.ydieresis = 500; - t.Nacute = 722; - t.icircumflex = 278; - t.Ecircumflex = 667; - t.adieresis = 500; - t.edieresis = 444; - t.cacute = 444; - t.nacute = 556; - t.umacron = 556; - t.Ncaron = 722; - t.Iacute = 389; - t.plusminus = 570; - t.brokenbar = 220; - t.registered = 747; - t.Gbreve = 778; - t.Idotaccent = 389; - t.summation = 600; - t.Egrave = 667; - t.racute = 444; - t.omacron = 500; - t.Zacute = 667; - t.Zcaron = 667; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 722; - t.lcommaaccent = 278; - t.tcaron = 416; - t.eogonek = 444; - t.Uogonek = 722; - t.Aacute = 722; - t.Adieresis = 722; - t.egrave = 444; - t.zacute = 444; - t.iogonek = 278; - t.Oacute = 778; - t.oacute = 500; - t.amacron = 500; - t.sacute = 389; - t.idieresis = 278; - t.Ocircumflex = 778; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 556; - t.twosuperior = 300; - t.Odieresis = 778; - t.mu = 556; - t.igrave = 278; - t.ohungarumlaut = 500; - t.Eogonek = 667; - t.dcroat = 556; - t.threequarters = 750; - t.Scedilla = 556; - t.lcaron = 394; - t.Kcommaaccent = 778; - t.Lacute = 667; - t.trademark = 1000; - t.edotaccent = 444; - t.Igrave = 389; - t.Imacron = 389; - t.Lcaron = 667; - t.onehalf = 750; - t.lessequal = 549; - t.ocircumflex = 500; - t.ntilde = 556; - t.Uhungarumlaut = 722; - t.Eacute = 667; - t.emacron = 444; - t.gbreve = 500; - t.onequarter = 750; - t.Scaron = 556; - t.Scommaaccent = 556; - t.Ohungarumlaut = 778; - t.degree = 400; - t.ograve = 500; - t.Ccaron = 722; - t.ugrave = 556; - t.radical = 549; - t.Dcaron = 722; - t.rcommaaccent = 444; - t.Ntilde = 722; - t.otilde = 500; - t.Rcommaaccent = 722; - t.Lcommaaccent = 667; - t.Atilde = 722; - t.Aogonek = 722; - t.Aring = 722; - t.Otilde = 778; - t.zdotaccent = 444; - t.Ecaron = 667; - t.Iogonek = 389; - t.kcommaaccent = 556; - t.minus = 570; - t.Icircumflex = 389; - t.ncaron = 556; - t.tcommaaccent = 333; - t.logicalnot = 570; - t.odieresis = 500; - t.udieresis = 556; - t.notequal = 549; - t.gcommaaccent = 500; - t.eth = 500; - t.zcaron = 444; - t.ncommaaccent = 556; - t.onesuperior = 300; - t.imacron = 278; - t.Euro = 500; - }); - t["Times-BoldItalic"] = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 250; - t.exclam = 389; - t.quotedbl = 555; - t.numbersign = 500; - t.dollar = 500; - t.percent = 833; - t.ampersand = 778; - t.quoteright = 333; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 500; - t.plus = 570; - t.comma = 250; - t.hyphen = 333; - t.period = 250; - t.slash = 278; - t.zero = 500; - t.one = 500; - t.two = 500; - t.three = 500; - t.four = 500; - t.five = 500; - t.six = 500; - t.seven = 500; - t.eight = 500; - t.nine = 500; - t.colon = 333; - t.semicolon = 333; - t.less = 570; - t.equal = 570; - t.greater = 570; - t.question = 500; - t.at = 832; - t.A = 667; - t.B = 667; - t.C = 667; - t.D = 722; - t.E = 667; - t.F = 667; - t.G = 722; - t.H = 778; - t.I = 389; - t.J = 500; - t.K = 667; - t.L = 611; - t.M = 889; - t.N = 722; - t.O = 722; - t.P = 611; - t.Q = 722; - t.R = 667; - t.S = 556; - t.T = 611; - t.U = 722; - t.V = 667; - t.W = 889; - t.X = 667; - t.Y = 611; - t.Z = 611; - t.bracketleft = 333; - t.backslash = 278; - t.bracketright = 333; - t.asciicircum = 570; - t.underscore = 500; - t.quoteleft = 333; - t.a = 500; - t.b = 500; - t.c = 444; - t.d = 500; - t.e = 444; - t.f = 333; - t.g = 500; - t.h = 556; - t.i = 278; - t.j = 278; - t.k = 500; - t.l = 278; - t.m = 778; - t.n = 556; - t.o = 500; - t.p = 500; - t.q = 500; - t.r = 389; - t.s = 389; - t.t = 278; - t.u = 556; - t.v = 444; - t.w = 667; - t.x = 500; - t.y = 444; - t.z = 389; - t.braceleft = 348; - t.bar = 220; - t.braceright = 348; - t.asciitilde = 570; - t.exclamdown = 389; - t.cent = 500; - t.sterling = 500; - t.fraction = 167; - t.yen = 500; - t.florin = 500; - t.section = 500; - t.currency = 500; - t.quotesingle = 278; - t.quotedblleft = 500; - t.guillemotleft = 500; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 556; - t.fl = 556; - t.endash = 500; - t.dagger = 500; - t.daggerdbl = 500; - t.periodcentered = 250; - t.paragraph = 500; - t.bullet = 350; - t.quotesinglbase = 333; - t.quotedblbase = 500; - t.quotedblright = 500; - t.guillemotright = 500; - t.ellipsis = 1000; - t.perthousand = 1000; - t.questiondown = 500; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 1000; - t.AE = 944; - t.ordfeminine = 266; - t.Lslash = 611; - t.Oslash = 722; - t.OE = 944; - t.ordmasculine = 300; - t.ae = 722; - t.dotlessi = 278; - t.lslash = 278; - t.oslash = 500; - t.oe = 722; - t.germandbls = 500; - t.Idieresis = 389; - t.eacute = 444; - t.abreve = 500; - t.uhungarumlaut = 556; - t.ecaron = 444; - t.Ydieresis = 611; - t.divide = 570; - t.Yacute = 611; - t.Acircumflex = 667; - t.aacute = 500; - t.Ucircumflex = 722; - t.yacute = 444; - t.scommaaccent = 389; - t.ecircumflex = 444; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 500; - t.Uacute = 722; - t.uogonek = 556; - t.Edieresis = 667; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 747; - t.Emacron = 667; - t.ccaron = 444; - t.aring = 500; - t.Ncommaaccent = 722; - t.lacute = 278; - t.agrave = 500; - t.Tcommaaccent = 611; - t.Cacute = 667; - t.atilde = 500; - t.Edotaccent = 667; - t.scaron = 389; - t.scedilla = 389; - t.iacute = 278; - t.lozenge = 494; - t.Rcaron = 667; - t.Gcommaaccent = 722; - t.ucircumflex = 556; - t.acircumflex = 500; - t.Amacron = 667; - t.rcaron = 389; - t.ccedilla = 444; - t.Zdotaccent = 611; - t.Thorn = 611; - t.Omacron = 722; - t.Racute = 667; - t.Sacute = 556; - t.dcaron = 608; - t.Umacron = 722; - t.uring = 556; - t.threesuperior = 300; - t.Ograve = 722; - t.Agrave = 667; - t.Abreve = 667; - t.multiply = 570; - t.uacute = 556; - t.Tcaron = 611; - t.partialdiff = 494; - t.ydieresis = 444; - t.Nacute = 722; - t.icircumflex = 278; - t.Ecircumflex = 667; - t.adieresis = 500; - t.edieresis = 444; - t.cacute = 444; - t.nacute = 556; - t.umacron = 556; - t.Ncaron = 722; - t.Iacute = 389; - t.plusminus = 570; - t.brokenbar = 220; - t.registered = 747; - t.Gbreve = 722; - t.Idotaccent = 389; - t.summation = 600; - t.Egrave = 667; - t.racute = 389; - t.omacron = 500; - t.Zacute = 611; - t.Zcaron = 611; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 667; - t.lcommaaccent = 278; - t.tcaron = 366; - t.eogonek = 444; - t.Uogonek = 722; - t.Aacute = 667; - t.Adieresis = 667; - t.egrave = 444; - t.zacute = 389; - t.iogonek = 278; - t.Oacute = 722; - t.oacute = 500; - t.amacron = 500; - t.sacute = 389; - t.idieresis = 278; - t.Ocircumflex = 722; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 500; - t.twosuperior = 300; - t.Odieresis = 722; - t.mu = 576; - t.igrave = 278; - t.ohungarumlaut = 500; - t.Eogonek = 667; - t.dcroat = 500; - t.threequarters = 750; - t.Scedilla = 556; - t.lcaron = 382; - t.Kcommaaccent = 667; - t.Lacute = 611; - t.trademark = 1000; - t.edotaccent = 444; - t.Igrave = 389; - t.Imacron = 389; - t.Lcaron = 611; - t.onehalf = 750; - t.lessequal = 549; - t.ocircumflex = 500; - t.ntilde = 556; - t.Uhungarumlaut = 722; - t.Eacute = 667; - t.emacron = 444; - t.gbreve = 500; - t.onequarter = 750; - t.Scaron = 556; - t.Scommaaccent = 556; - t.Ohungarumlaut = 722; - t.degree = 400; - t.ograve = 500; - t.Ccaron = 667; - t.ugrave = 556; - t.radical = 549; - t.Dcaron = 722; - t.rcommaaccent = 389; - t.Ntilde = 722; - t.otilde = 500; - t.Rcommaaccent = 667; - t.Lcommaaccent = 611; - t.Atilde = 667; - t.Aogonek = 667; - t.Aring = 667; - t.Otilde = 722; - t.zdotaccent = 389; - t.Ecaron = 667; - t.Iogonek = 389; - t.kcommaaccent = 500; - t.minus = 606; - t.Icircumflex = 389; - t.ncaron = 556; - t.tcommaaccent = 278; - t.logicalnot = 606; - t.odieresis = 500; - t.udieresis = 556; - t.notequal = 549; - t.gcommaaccent = 500; - t.eth = 500; - t.zcaron = 389; - t.ncommaaccent = 556; - t.onesuperior = 300; - t.imacron = 278; - t.Euro = 500; - }); - t["Times-Italic"] = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 250; - t.exclam = 333; - t.quotedbl = 420; - t.numbersign = 500; - t.dollar = 500; - t.percent = 833; - t.ampersand = 778; - t.quoteright = 333; - t.parenleft = 333; - t.parenright = 333; - t.asterisk = 500; - t.plus = 675; - t.comma = 250; - t.hyphen = 333; - t.period = 250; - t.slash = 278; - t.zero = 500; - t.one = 500; - t.two = 500; - t.three = 500; - t.four = 500; - t.five = 500; - t.six = 500; - t.seven = 500; - t.eight = 500; - t.nine = 500; - t.colon = 333; - t.semicolon = 333; - t.less = 675; - t.equal = 675; - t.greater = 675; - t.question = 500; - t.at = 920; - t.A = 611; - t.B = 611; - t.C = 667; - t.D = 722; - t.E = 611; - t.F = 611; - t.G = 722; - t.H = 722; - t.I = 333; - t.J = 444; - t.K = 667; - t.L = 556; - t.M = 833; - t.N = 667; - t.O = 722; - t.P = 611; - t.Q = 722; - t.R = 611; - t.S = 500; - t.T = 556; - t.U = 722; - t.V = 611; - t.W = 833; - t.X = 611; - t.Y = 556; - t.Z = 556; - t.bracketleft = 389; - t.backslash = 278; - t.bracketright = 389; - t.asciicircum = 422; - t.underscore = 500; - t.quoteleft = 333; - t.a = 500; - t.b = 500; - t.c = 444; - t.d = 500; - t.e = 444; - t.f = 278; - t.g = 500; - t.h = 500; - t.i = 278; - t.j = 278; - t.k = 444; - t.l = 278; - t.m = 722; - t.n = 500; - t.o = 500; - t.p = 500; - t.q = 500; - t.r = 389; - t.s = 389; - t.t = 278; - t.u = 500; - t.v = 444; - t.w = 667; - t.x = 444; - t.y = 444; - t.z = 389; - t.braceleft = 400; - t.bar = 275; - t.braceright = 400; - t.asciitilde = 541; - t.exclamdown = 389; - t.cent = 500; - t.sterling = 500; - t.fraction = 167; - t.yen = 500; - t.florin = 500; - t.section = 500; - t.currency = 500; - t.quotesingle = 214; - t.quotedblleft = 556; - t.guillemotleft = 500; - t.guilsinglleft = 333; - t.guilsinglright = 333; - t.fi = 500; - t.fl = 500; - t.endash = 500; - t.dagger = 500; - t.daggerdbl = 500; - t.periodcentered = 250; - t.paragraph = 523; - t.bullet = 350; - t.quotesinglbase = 333; - t.quotedblbase = 556; - t.quotedblright = 556; - t.guillemotright = 500; - t.ellipsis = 889; - t.perthousand = 1000; - t.questiondown = 500; - t.grave = 333; - t.acute = 333; - t.circumflex = 333; - t.tilde = 333; - t.macron = 333; - t.breve = 333; - t.dotaccent = 333; - t.dieresis = 333; - t.ring = 333; - t.cedilla = 333; - t.hungarumlaut = 333; - t.ogonek = 333; - t.caron = 333; - t.emdash = 889; - t.AE = 889; - t.ordfeminine = 276; - t.Lslash = 556; - t.Oslash = 722; - t.OE = 944; - t.ordmasculine = 310; - t.ae = 667; - t.dotlessi = 278; - t.lslash = 278; - t.oslash = 500; - t.oe = 667; - t.germandbls = 500; - t.Idieresis = 333; - t.eacute = 444; - t.abreve = 500; - t.uhungarumlaut = 500; - t.ecaron = 444; - t.Ydieresis = 556; - t.divide = 675; - t.Yacute = 556; - t.Acircumflex = 611; - t.aacute = 500; - t.Ucircumflex = 722; - t.yacute = 444; - t.scommaaccent = 389; - t.ecircumflex = 444; - t.Uring = 722; - t.Udieresis = 722; - t.aogonek = 500; - t.Uacute = 722; - t.uogonek = 500; - t.Edieresis = 611; - t.Dcroat = 722; - t.commaaccent = 250; - t.copyright = 760; - t.Emacron = 611; - t.ccaron = 444; - t.aring = 500; - t.Ncommaaccent = 667; - t.lacute = 278; - t.agrave = 500; - t.Tcommaaccent = 556; - t.Cacute = 667; - t.atilde = 500; - t.Edotaccent = 611; - t.scaron = 389; - t.scedilla = 389; - t.iacute = 278; - t.lozenge = 471; - t.Rcaron = 611; - t.Gcommaaccent = 722; - t.ucircumflex = 500; - t.acircumflex = 500; - t.Amacron = 611; - t.rcaron = 389; - t.ccedilla = 444; - t.Zdotaccent = 556; - t.Thorn = 611; - t.Omacron = 722; - t.Racute = 611; - t.Sacute = 500; - t.dcaron = 544; - t.Umacron = 722; - t.uring = 500; - t.threesuperior = 300; - t.Ograve = 722; - t.Agrave = 611; - t.Abreve = 611; - t.multiply = 675; - t.uacute = 500; - t.Tcaron = 556; - t.partialdiff = 476; - t.ydieresis = 444; - t.Nacute = 667; - t.icircumflex = 278; - t.Ecircumflex = 611; - t.adieresis = 500; - t.edieresis = 444; - t.cacute = 444; - t.nacute = 500; - t.umacron = 500; - t.Ncaron = 667; - t.Iacute = 333; - t.plusminus = 675; - t.brokenbar = 275; - t.registered = 760; - t.Gbreve = 722; - t.Idotaccent = 333; - t.summation = 600; - t.Egrave = 611; - t.racute = 389; - t.omacron = 500; - t.Zacute = 556; - t.Zcaron = 556; - t.greaterequal = 549; - t.Eth = 722; - t.Ccedilla = 667; - t.lcommaaccent = 278; - t.tcaron = 300; - t.eogonek = 444; - t.Uogonek = 722; - t.Aacute = 611; - t.Adieresis = 611; - t.egrave = 444; - t.zacute = 389; - t.iogonek = 278; - t.Oacute = 722; - t.oacute = 500; - t.amacron = 500; - t.sacute = 389; - t.idieresis = 278; - t.Ocircumflex = 722; - t.Ugrave = 722; - t.Delta = 612; - t.thorn = 500; - t.twosuperior = 300; - t.Odieresis = 722; - t.mu = 500; - t.igrave = 278; - t.ohungarumlaut = 500; - t.Eogonek = 611; - t.dcroat = 500; - t.threequarters = 750; - t.Scedilla = 500; - t.lcaron = 300; - t.Kcommaaccent = 667; - t.Lacute = 556; - t.trademark = 980; - t.edotaccent = 444; - t.Igrave = 333; - t.Imacron = 333; - t.Lcaron = 611; - t.onehalf = 750; - t.lessequal = 549; - t.ocircumflex = 500; - t.ntilde = 500; - t.Uhungarumlaut = 722; - t.Eacute = 611; - t.emacron = 444; - t.gbreve = 500; - t.onequarter = 750; - t.Scaron = 500; - t.Scommaaccent = 500; - t.Ohungarumlaut = 722; - t.degree = 400; - t.ograve = 500; - t.Ccaron = 667; - t.ugrave = 500; - t.radical = 453; - t.Dcaron = 722; - t.rcommaaccent = 389; - t.Ntilde = 667; - t.otilde = 500; - t.Rcommaaccent = 611; - t.Lcommaaccent = 556; - t.Atilde = 611; - t.Aogonek = 611; - t.Aring = 611; - t.Otilde = 722; - t.zdotaccent = 389; - t.Ecaron = 611; - t.Iogonek = 333; - t.kcommaaccent = 444; - t.minus = 675; - t.Icircumflex = 333; - t.ncaron = 500; - t.tcommaaccent = 278; - t.logicalnot = 675; - t.odieresis = 500; - t.udieresis = 500; - t.notequal = 549; - t.gcommaaccent = 500; - t.eth = 500; - t.zcaron = 389; - t.ncommaaccent = 500; - t.onesuperior = 300; - t.imacron = 278; - t.Euro = 500; - }); - t.ZapfDingbats = (0, _core_utils.getLookupTableFactory)(function (t) { - t.space = 278; - t.a1 = 974; - t.a2 = 961; - t.a202 = 974; - t.a3 = 980; - t.a4 = 719; - t.a5 = 789; - t.a119 = 790; - t.a118 = 791; - t.a117 = 690; - t.a11 = 960; - t.a12 = 939; - t.a13 = 549; - t.a14 = 855; - t.a15 = 911; - t.a16 = 933; - t.a105 = 911; - t.a17 = 945; - t.a18 = 974; - t.a19 = 755; - t.a20 = 846; - t.a21 = 762; - t.a22 = 761; - t.a23 = 571; - t.a24 = 677; - t.a25 = 763; - t.a26 = 760; - t.a27 = 759; - t.a28 = 754; - t.a6 = 494; - t.a7 = 552; - t.a8 = 537; - t.a9 = 577; - t.a10 = 692; - t.a29 = 786; - t.a30 = 788; - t.a31 = 788; - t.a32 = 790; - t.a33 = 793; - t.a34 = 794; - t.a35 = 816; - t.a36 = 823; - t.a37 = 789; - t.a38 = 841; - t.a39 = 823; - t.a40 = 833; - t.a41 = 816; - t.a42 = 831; - t.a43 = 923; - t.a44 = 744; - t.a45 = 723; - t.a46 = 749; - t.a47 = 790; - t.a48 = 792; - t.a49 = 695; - t.a50 = 776; - t.a51 = 768; - t.a52 = 792; - t.a53 = 759; - t.a54 = 707; - t.a55 = 708; - t.a56 = 682; - t.a57 = 701; - t.a58 = 826; - t.a59 = 815; - t.a60 = 789; - t.a61 = 789; - t.a62 = 707; - t.a63 = 687; - t.a64 = 696; - t.a65 = 689; - t.a66 = 786; - t.a67 = 787; - t.a68 = 713; - t.a69 = 791; - t.a70 = 785; - t.a71 = 791; - t.a72 = 873; - t.a73 = 761; - t.a74 = 762; - t.a203 = 762; - t.a75 = 759; - t.a204 = 759; - t.a76 = 892; - t.a77 = 892; - t.a78 = 788; - t.a79 = 784; - t.a81 = 438; - t.a82 = 138; - t.a83 = 277; - t.a84 = 415; - t.a97 = 392; - t.a98 = 392; - t.a99 = 668; - t.a100 = 668; - t.a89 = 390; - t.a90 = 390; - t.a93 = 317; - t.a94 = 317; - t.a91 = 276; - t.a92 = 276; - t.a205 = 509; - t.a85 = 509; - t.a206 = 410; - t.a86 = 410; - t.a87 = 234; - t.a88 = 234; - t.a95 = 334; - t.a96 = 334; - t.a101 = 732; - t.a102 = 544; - t.a103 = 544; - t.a104 = 910; - t.a106 = 667; - t.a107 = 760; - t.a108 = 760; - t.a112 = 776; - t.a111 = 595; - t.a110 = 694; - t.a109 = 626; - t.a120 = 788; - t.a121 = 788; - t.a122 = 788; - t.a123 = 788; - t.a124 = 788; - t.a125 = 788; - t.a126 = 788; - t.a127 = 788; - t.a128 = 788; - t.a129 = 788; - t.a130 = 788; - t.a131 = 788; - t.a132 = 788; - t.a133 = 788; - t.a134 = 788; - t.a135 = 788; - t.a136 = 788; - t.a137 = 788; - t.a138 = 788; - t.a139 = 788; - t.a140 = 788; - t.a141 = 788; - t.a142 = 788; - t.a143 = 788; - t.a144 = 788; - t.a145 = 788; - t.a146 = 788; - t.a147 = 788; - t.a148 = 788; - t.a149 = 788; - t.a150 = 788; - t.a151 = 788; - t.a152 = 788; - t.a153 = 788; - t.a154 = 788; - t.a155 = 788; - t.a156 = 788; - t.a157 = 788; - t.a158 = 788; - t.a159 = 788; - t.a160 = 894; - t.a161 = 838; - t.a163 = 1016; - t.a164 = 458; - t.a196 = 748; - t.a165 = 924; - t.a192 = 748; - t.a166 = 918; - t.a167 = 927; - t.a168 = 928; - t.a169 = 928; - t.a170 = 834; - t.a171 = 873; - t.a172 = 828; - t.a173 = 924; - t.a162 = 924; - t.a174 = 917; - t.a175 = 930; - t.a176 = 931; - t.a177 = 463; - t.a178 = 883; - t.a179 = 836; - t.a193 = 836; - t.a180 = 867; - t.a199 = 867; - t.a181 = 696; - t.a200 = 696; - t.a182 = 874; - t.a201 = 874; - t.a183 = 760; - t.a184 = 946; - t.a197 = 771; - t.a185 = 865; - t.a194 = 771; - t.a198 = 888; - t.a186 = 967; - t.a195 = 888; - t.a187 = 831; - t.a188 = 873; - t.a189 = 927; - t.a190 = 970; - t.a191 = 918; - }); -}); -exports.getMetrics = getMetrics; -const getFontBasicMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { - t.Courier = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: -426 - }; - t["Courier-Bold"] = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: 439 - }; - t["Courier-Oblique"] = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: 426 - }; - t["Courier-BoldOblique"] = { - ascent: 629, - descent: -157, - capHeight: 562, - xHeight: 426 - }; - t.Helvetica = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 523 - }; - t["Helvetica-Bold"] = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 532 - }; - t["Helvetica-Oblique"] = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 523 - }; - t["Helvetica-BoldOblique"] = { - ascent: 718, - descent: -207, - capHeight: 718, - xHeight: 532 - }; - t["Times-Roman"] = { - ascent: 683, - descent: -217, - capHeight: 662, - xHeight: 450 - }; - t["Times-Bold"] = { - ascent: 683, - descent: -217, - capHeight: 676, - xHeight: 461 - }; - t["Times-Italic"] = { - ascent: 683, - descent: -217, - capHeight: 653, - xHeight: 441 - }; - t["Times-BoldItalic"] = { - ascent: 683, - descent: -217, - capHeight: 669, - xHeight: 462 - }; - t.Symbol = { - ascent: Math.NaN, - descent: Math.NaN, - capHeight: Math.NaN, - xHeight: Math.NaN - }; - t.ZapfDingbats = { - ascent: Math.NaN, - descent: Math.NaN, - capHeight: Math.NaN, - xHeight: Math.NaN - }; -}); -exports.getFontBasicMetrics = getFontBasicMetrics; - -/***/ }), -/* 52 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GlyfTable = void 0; -const ON_CURVE_POINT = 1 << 0; -const X_SHORT_VECTOR = 1 << 1; -const Y_SHORT_VECTOR = 1 << 2; -const REPEAT_FLAG = 1 << 3; -const X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4; -const Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5; -const OVERLAP_SIMPLE = 1 << 6; -const ARG_1_AND_2_ARE_WORDS = 1 << 0; -const ARGS_ARE_XY_VALUES = 1 << 1; -const WE_HAVE_A_SCALE = 1 << 3; -const MORE_COMPONENTS = 1 << 5; -const WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6; -const WE_HAVE_A_TWO_BY_TWO = 1 << 7; -const WE_HAVE_INSTRUCTIONS = 1 << 8; - -class GlyfTable { - constructor({ - glyfTable, - isGlyphLocationsLong, - locaTable, - numGlyphs - }) { - this.glyphs = []; - const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength); - const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength); - const offsetSize = isGlyphLocationsLong ? 4 : 2; - let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0); - let pos = 0; - - for (let i = 0; i < numGlyphs; i++) { - pos += offsetSize; - const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos); - - if (next === prev) { - this.glyphs.push(new Glyph({})); - continue; - } - - const glyph = Glyph.parse(prev, glyf); - this.glyphs.push(glyph); - prev = next; - } - } - - getSize() { - return this.glyphs.reduce((a, g) => { - const size = g.getSize(); - return a + (size + 3 & ~3); - }, 0); - } - - write() { - const totalSize = this.getSize(); - const glyfTable = new DataView(new ArrayBuffer(totalSize)); - const isLocationLong = totalSize > 0x1fffe; - const offsetSize = isLocationLong ? 4 : 2; - const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize)); - - if (isLocationLong) { - locaTable.setUint32(0, 0); - } else { - locaTable.setUint16(0, 0); - } - - let pos = 0; - let locaIndex = 0; - - for (const glyph of this.glyphs) { - pos += glyph.write(pos, glyfTable); - pos = pos + 3 & ~3; - locaIndex += offsetSize; - - if (isLocationLong) { - locaTable.setUint32(locaIndex, pos); - } else { - locaTable.setUint16(locaIndex, pos >> 1); - } - } - - return { - isLocationLong, - loca: new Uint8Array(locaTable.buffer), - glyf: new Uint8Array(glyfTable.buffer) - }; - } - - scale(factors) { - for (let i = 0, ii = this.glyphs.length; i < ii; i++) { - this.glyphs[i].scale(factors[i]); - } - } - -} - -exports.GlyfTable = GlyfTable; - -class Glyph { - constructor({ - header = null, - simple = null, - composites = null - }) { - this.header = header; - this.simple = simple; - this.composites = composites; - } - - static parse(pos, glyf) { - const [read, header] = GlyphHeader.parse(pos, glyf); - pos += read; - - if (header.numberOfContours < 0) { - const composites = []; - - while (true) { - const [n, composite] = CompositeGlyph.parse(pos, glyf); - pos += n; - composites.push(composite); - - if (!(composite.flags & MORE_COMPONENTS)) { - break; - } - } - - return new Glyph({ - header, - composites - }); - } - - const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours); - return new Glyph({ - header, - simple - }); - } - - getSize() { - if (!this.header) { - return 0; - } - - const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0); - return this.header.getSize() + size; - } - - write(pos, buf) { - if (!this.header) { - return 0; - } - - const spos = pos; - pos += this.header.write(pos, buf); - - if (this.simple) { - pos += this.simple.write(pos, buf); - } else { - for (const composite of this.composites) { - pos += composite.write(pos, buf); - } - } - - return pos - spos; - } - - scale(factor) { - if (!this.header) { - return; - } - - const xMiddle = (this.header.xMin + this.header.xMax) / 2; - this.header.scale(xMiddle, factor); - - if (this.simple) { - this.simple.scale(xMiddle, factor); - } else { - for (const composite of this.composites) { - composite.scale(xMiddle, factor); - } - } - } - -} - -class GlyphHeader { - constructor({ - numberOfContours, - xMin, - yMin, - xMax, - yMax - }) { - this.numberOfContours = numberOfContours; - this.xMin = xMin; - this.yMin = yMin; - this.xMax = xMax; - this.yMax = yMax; - } - - static parse(pos, glyf) { - return [10, new GlyphHeader({ - numberOfContours: glyf.getInt16(pos), - xMin: glyf.getInt16(pos + 2), - yMin: glyf.getInt16(pos + 4), - xMax: glyf.getInt16(pos + 6), - yMax: glyf.getInt16(pos + 8) - })]; - } - - getSize() { - return 10; - } - - write(pos, buf) { - buf.setInt16(pos, this.numberOfContours); - buf.setInt16(pos + 2, this.xMin); - buf.setInt16(pos + 4, this.yMin); - buf.setInt16(pos + 6, this.xMax); - buf.setInt16(pos + 8, this.yMax); - return 10; - } - - scale(x, factor) { - this.xMin = Math.round(x + (this.xMin - x) * factor); - this.xMax = Math.round(x + (this.xMax - x) * factor); - } - -} - -class Contour { - constructor({ - flags, - xCoordinates, - yCoordinates - }) { - this.xCoordinates = xCoordinates; - this.yCoordinates = yCoordinates; - this.flags = flags; - } - -} - -class SimpleGlyph { - constructor({ - contours, - instructions - }) { - this.contours = contours; - this.instructions = instructions; - } - - static parse(pos, glyf, numberOfContours) { - const endPtsOfContours = []; - - for (let i = 0; i < numberOfContours; i++) { - const endPt = glyf.getUint16(pos); - pos += 2; - endPtsOfContours.push(endPt); - } - - const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1; - const instructionLength = glyf.getUint16(pos); - pos += 2; - const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); - pos += instructionLength; - const flags = []; - - for (let i = 0; i < numberOfPt; pos++, i++) { - let flag = glyf.getUint8(pos); - flags.push(flag); - - if (flag & REPEAT_FLAG) { - const count = glyf.getUint8(++pos); - flag ^= REPEAT_FLAG; - - for (let m = 0; m < count; m++) { - flags.push(flag); - } - - i += count; - } - } - - const allXCoordinates = []; - let xCoordinates = []; - let yCoordinates = []; - let pointFlags = []; - const contours = []; - let endPtsOfContoursIndex = 0; - let lastCoordinate = 0; - - for (let i = 0; i < numberOfPt; i++) { - const flag = flags[i]; - - if (flag & X_SHORT_VECTOR) { - const x = glyf.getUint8(pos++); - lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x; - xCoordinates.push(lastCoordinate); - } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) { - xCoordinates.push(lastCoordinate); - } else { - lastCoordinate += glyf.getInt16(pos); - pos += 2; - xCoordinates.push(lastCoordinate); - } - - if (endPtsOfContours[endPtsOfContoursIndex] === i) { - endPtsOfContoursIndex++; - allXCoordinates.push(xCoordinates); - xCoordinates = []; - } - } - - lastCoordinate = 0; - endPtsOfContoursIndex = 0; - - for (let i = 0; i < numberOfPt; i++) { - const flag = flags[i]; - - if (flag & Y_SHORT_VECTOR) { - const y = glyf.getUint8(pos++); - lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y; - yCoordinates.push(lastCoordinate); - } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) { - yCoordinates.push(lastCoordinate); - } else { - lastCoordinate += glyf.getInt16(pos); - pos += 2; - yCoordinates.push(lastCoordinate); - } - - pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE); - - if (endPtsOfContours[endPtsOfContoursIndex] === i) { - xCoordinates = allXCoordinates[endPtsOfContoursIndex]; - endPtsOfContoursIndex++; - contours.push(new Contour({ - flags: pointFlags, - xCoordinates, - yCoordinates - })); - yCoordinates = []; - pointFlags = []; - } - } - - return new SimpleGlyph({ - contours, - instructions - }); - } - - getSize() { - let size = this.contours.length * 2 + 2 + this.instructions.length; - let lastX = 0; - let lastY = 0; - - for (const contour of this.contours) { - size += contour.flags.length; - - for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { - const x = contour.xCoordinates[i]; - const y = contour.yCoordinates[i]; - let abs = Math.abs(x - lastX); - - if (abs > 255) { - size += 2; - } else if (abs > 0) { - size += 1; - } - - lastX = x; - abs = Math.abs(y - lastY); - - if (abs > 255) { - size += 2; - } else if (abs > 0) { - size += 1; - } - - lastY = y; - } - } - - return size; - } - - write(pos, buf) { - const spos = pos; - const xCoordinates = []; - const yCoordinates = []; - const flags = []; - let lastX = 0; - let lastY = 0; - - for (const contour of this.contours) { - for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { - let flag = contour.flags[i]; - const x = contour.xCoordinates[i]; - let delta = x - lastX; - - if (delta === 0) { - flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR; - xCoordinates.push(0); - } else { - const abs = Math.abs(delta); - - if (abs <= 255) { - flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR; - xCoordinates.push(abs); - } else { - xCoordinates.push(delta); - } - } - - lastX = x; - const y = contour.yCoordinates[i]; - delta = y - lastY; - - if (delta === 0) { - flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR; - yCoordinates.push(0); - } else { - const abs = Math.abs(delta); - - if (abs <= 255) { - flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR; - yCoordinates.push(abs); - } else { - yCoordinates.push(delta); - } - } - - lastY = y; - flags.push(flag); - } - - buf.setUint16(pos, xCoordinates.length - 1); - pos += 2; - } - - buf.setUint16(pos, this.instructions.length); - pos += 2; - - if (this.instructions.length) { - new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); - pos += this.instructions.length; - } - - for (const flag of flags) { - buf.setUint8(pos++, flag); - } - - for (let i = 0, ii = xCoordinates.length; i < ii; i++) { - const x = xCoordinates[i]; - const flag = flags[i]; - - if (flag & X_SHORT_VECTOR) { - buf.setUint8(pos++, x); - } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) { - buf.setInt16(pos, x); - pos += 2; - } - } - - for (let i = 0, ii = yCoordinates.length; i < ii; i++) { - const y = yCoordinates[i]; - const flag = flags[i]; - - if (flag & Y_SHORT_VECTOR) { - buf.setUint8(pos++, y); - } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) { - buf.setInt16(pos, y); - pos += 2; - } - } - - return pos - spos; - } - - scale(x, factor) { - for (const contour of this.contours) { - if (contour.xCoordinates.length === 0) { - continue; - } - - for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { - contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor); - } - } - } - -} - -class CompositeGlyph { - constructor({ - flags, - glyphIndex, - argument1, - argument2, - transf, - instructions - }) { - this.flags = flags; - this.glyphIndex = glyphIndex; - this.argument1 = argument1; - this.argument2 = argument2; - this.transf = transf; - this.instructions = instructions; - } - - static parse(pos, glyf) { - const spos = pos; - const transf = []; - let flags = glyf.getUint16(pos); - const glyphIndex = glyf.getUint16(pos + 2); - pos += 4; - let argument1, argument2; - - if (flags & ARG_1_AND_2_ARE_WORDS) { - if (flags & ARGS_ARE_XY_VALUES) { - argument1 = glyf.getInt16(pos); - argument2 = glyf.getInt16(pos + 2); - } else { - argument1 = glyf.getUint16(pos); - argument2 = glyf.getUint16(pos + 2); - } - - pos += 4; - flags ^= ARG_1_AND_2_ARE_WORDS; - } else { - if (flags & ARGS_ARE_XY_VALUES) { - argument1 = glyf.getInt8(pos); - argument2 = glyf.getInt8(pos + 1); - } else { - argument1 = glyf.getUint8(pos); - argument2 = glyf.getUint8(pos + 1); - } - - pos += 2; - } - - if (flags & WE_HAVE_A_SCALE) { - transf.push(glyf.getUint16(pos)); - pos += 2; - } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) { - transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2)); - pos += 4; - } else if (flags & WE_HAVE_A_TWO_BY_TWO) { - transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6)); - pos += 8; - } - - let instructions = null; - - if (flags & WE_HAVE_INSTRUCTIONS) { - const instructionLength = glyf.getUint16(pos); - pos += 2; - instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); - pos += instructionLength; - } - - return [pos - spos, new CompositeGlyph({ - flags, - glyphIndex, - argument1, - argument2, - transf, - instructions - })]; - } - - getSize() { - let size = 2 + 2 + this.transf.length * 2; - - if (this.flags & WE_HAVE_INSTRUCTIONS) { - size += 2 + this.instructions.length; - } - - size += 2; - - if (this.flags & 2) { - if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { - size += 2; - } - } else { - if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { - size += 2; - } - } - - return size; - } - - write(pos, buf) { - const spos = pos; - - if (this.flags & ARGS_ARE_XY_VALUES) { - if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { - this.flags |= ARG_1_AND_2_ARE_WORDS; - } - } else { - if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { - this.flags |= ARG_1_AND_2_ARE_WORDS; - } - } - - buf.setUint16(pos, this.flags); - buf.setUint16(pos + 2, this.glyphIndex); - pos += 4; - - if (this.flags & ARG_1_AND_2_ARE_WORDS) { - if (this.flags & ARGS_ARE_XY_VALUES) { - buf.setInt16(pos, this.argument1); - buf.setInt16(pos + 2, this.argument2); - } else { - buf.setUint16(pos, this.argument1); - buf.setUint16(pos + 2, this.argument2); - } - - pos += 4; - } else { - buf.setUint8(pos, this.argument1); - buf.setUint8(pos + 1, this.argument2); - pos += 2; - } - - if (this.flags & WE_HAVE_INSTRUCTIONS) { - buf.setUint16(pos, this.instructions.length); - pos += 2; - - if (this.instructions.length) { - new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); - pos += this.instructions.length; - } - } - - return pos - spos; - } - - scale(x, factor) {} - -} - -/***/ }), -/* 53 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.OpenTypeFileBuilder = void 0; - -var _core_utils = __w_pdfjs_require__(8); - -var _util = __w_pdfjs_require__(2); - -function writeInt16(dest, offset, num) { - dest[offset] = num >> 8 & 0xff; - dest[offset + 1] = num & 0xff; -} - -function writeInt32(dest, offset, num) { - dest[offset] = num >> 24 & 0xff; - dest[offset + 1] = num >> 16 & 0xff; - dest[offset + 2] = num >> 8 & 0xff; - dest[offset + 3] = num & 0xff; -} - -function writeData(dest, offset, data) { - if (data instanceof Uint8Array) { - dest.set(data, offset); - } else if (typeof data === "string") { - for (let i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data.charCodeAt(i) & 0xff; - } - } else { - for (let i = 0, ii = data.length; i < ii; i++) { - dest[offset++] = data[i] & 0xff; - } - } -} - -const OTF_HEADER_SIZE = 12; -const OTF_TABLE_ENTRY_SIZE = 16; - -class OpenTypeFileBuilder { - constructor(sfnt) { - this.sfnt = sfnt; - this.tables = Object.create(null); - } - - static getSearchParams(entriesCount, entrySize) { - let maxPower2 = 1, - log2 = 0; - - while ((maxPower2 ^ entriesCount) > maxPower2) { - maxPower2 <<= 1; - log2++; - } - - const searchRange = maxPower2 * entrySize; - return { - range: searchRange, - entry: log2, - rangeShift: entrySize * entriesCount - searchRange - }; - } - - toArray() { - let sfnt = this.sfnt; - const tables = this.tables; - const tablesNames = Object.keys(tables); - tablesNames.sort(); - const numTables = tablesNames.length; - let i, j, jj, table, tableName; - let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; - const tableOffsets = [offset]; - - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - const paddedLength = (table.length + 3 & ~3) >>> 0; - offset += paddedLength; - tableOffsets.push(offset); - } - - const file = new Uint8Array(offset); - - for (i = 0; i < numTables; i++) { - table = tables[tablesNames[i]]; - writeData(file, tableOffsets[i], table); - } - - if (sfnt === "true") { - sfnt = (0, _util.string32)(0x00010000); - } - - file[0] = sfnt.charCodeAt(0) & 0xff; - file[1] = sfnt.charCodeAt(1) & 0xff; - file[2] = sfnt.charCodeAt(2) & 0xff; - file[3] = sfnt.charCodeAt(3) & 0xff; - writeInt16(file, 4, numTables); - const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); - writeInt16(file, 6, searchParams.range); - writeInt16(file, 8, searchParams.entry); - writeInt16(file, 10, searchParams.rangeShift); - offset = OTF_HEADER_SIZE; - - for (i = 0; i < numTables; i++) { - tableName = tablesNames[i]; - file[offset] = tableName.charCodeAt(0) & 0xff; - file[offset + 1] = tableName.charCodeAt(1) & 0xff; - file[offset + 2] = tableName.charCodeAt(2) & 0xff; - file[offset + 3] = tableName.charCodeAt(3) & 0xff; - let checksum = 0; - - for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { - const quad = (0, _core_utils.readUint32)(file, j); - checksum = checksum + quad >>> 0; - } - - writeInt32(file, offset + 4, checksum); - writeInt32(file, offset + 8, tableOffsets[i]); - writeInt32(file, offset + 12, tables[tableName].length); - offset += OTF_TABLE_ENTRY_SIZE; - } - - return file; - } - - addTable(tag, data) { - if (tag in this.tables) { - throw new Error("Table " + tag + " already exists"); - } - - this.tables[tag] = data; - } - -} - -exports.OpenTypeFileBuilder = OpenTypeFileBuilder; - -/***/ }), -/* 54 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Type1Font = void 0; - -var _cff_parser = __w_pdfjs_require__(45); - -var _fonts_utils = __w_pdfjs_require__(18); - -var _core_utils = __w_pdfjs_require__(8); - -var _stream = __w_pdfjs_require__(10); - -var _type1_parser = __w_pdfjs_require__(55); - -var _util = __w_pdfjs_require__(2); - -function findBlock(streamBytes, signature, startIndex) { - const streamBytesLength = streamBytes.length; - const signatureLength = signature.length; - const scanLength = streamBytesLength - signatureLength; - let i = startIndex, - found = false; - - while (i < scanLength) { - let j = 0; - - while (j < signatureLength && streamBytes[i + j] === signature[j]) { - j++; - } - - if (j >= signatureLength) { - i += j; - - while (i < streamBytesLength && (0, _core_utils.isWhiteSpace)(streamBytes[i])) { - i++; - } - - found = true; - break; - } - - i++; - } - - return { - found, - length: i - }; -} - -function getHeaderBlock(stream, suggestedLength) { - const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63]; - const streamStartPos = stream.pos; - let headerBytes, headerBytesLength, block; - - try { - headerBytes = stream.getBytes(suggestedLength); - headerBytesLength = headerBytes.length; - } catch (ex) {} - - if (headerBytesLength === suggestedLength) { - block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length); - - if (block.found && block.length === suggestedLength) { - return { - stream: new _stream.Stream(headerBytes), - length: suggestedLength - }; - } - } - - (0, _util.warn)('Invalid "Length1" property in Type1 font -- trying to recover.'); - stream.pos = streamStartPos; - const SCAN_BLOCK_LENGTH = 2048; - let actualLength; - - while (true) { - const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); - block = findBlock(scanBytes, EEXEC_SIGNATURE, 0); - - if (block.length === 0) { - break; - } - - stream.pos += block.length; - - if (block.found) { - actualLength = stream.pos - streamStartPos; - break; - } - } - - stream.pos = streamStartPos; - - if (actualLength) { - return { - stream: new _stream.Stream(stream.getBytes(actualLength)), - length: actualLength - }; - } - - (0, _util.warn)('Unable to recover "Length1" property in Type1 font -- using as is.'); - return { - stream: new _stream.Stream(stream.getBytes(suggestedLength)), - length: suggestedLength - }; -} - -function getEexecBlock(stream, suggestedLength) { - const eexecBytes = stream.getBytes(); - return { - stream: new _stream.Stream(eexecBytes), - length: eexecBytes.length - }; -} - -class Type1Font { - constructor(name, file, properties) { - const PFB_HEADER_SIZE = 6; - let headerBlockLength = properties.length1; - let eexecBlockLength = properties.length2; - let pfbHeader = file.peekBytes(PFB_HEADER_SIZE); - const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; - - if (pfbHeaderPresent) { - file.skip(PFB_HEADER_SIZE); - headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; - } - - const headerBlock = getHeaderBlock(file, headerBlockLength); - const headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, _fonts_utils.SEAC_ANALYSIS_ENABLED); - headerBlockParser.extractFontHeader(properties); - - if (pfbHeaderPresent) { - pfbHeader = file.getBytes(PFB_HEADER_SIZE); - eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; - } - - const eexecBlock = getEexecBlock(file, eexecBlockLength); - const eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, _fonts_utils.SEAC_ANALYSIS_ENABLED); - const data = eexecBlockParser.extractFontProgram(properties); - - for (const key in data.properties) { - properties[key] = data.properties[key]; - } - - const charstrings = data.charstrings; - const type2Charstrings = this.getType2Charstrings(charstrings); - const subrs = this.getType2Subrs(data.subrs); - this.charstrings = charstrings; - this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties); - this.seacs = this.getSeacs(data.charstrings); - } - - get numGlyphs() { - return this.charstrings.length + 1; - } - - getCharset() { - const charset = [".notdef"]; - const charstrings = this.charstrings; - - for (let glyphId = 0; glyphId < charstrings.length; glyphId++) { - charset.push(charstrings[glyphId].glyphName); - } - - return charset; - } - - getGlyphMapping(properties) { - const charstrings = this.charstrings; - - if (properties.composite) { - const charCodeToGlyphId = Object.create(null); - - for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) { - const charCode = properties.cMap.charCodeOf(glyphId); - charCodeToGlyphId[charCode] = glyphId + 1; - } - - return charCodeToGlyphId; - } - - const glyphNames = [".notdef"]; - let builtInEncoding, glyphId; - - for (glyphId = 0; glyphId < charstrings.length; glyphId++) { - glyphNames.push(charstrings[glyphId].glyphName); - } - - const encoding = properties.builtInEncoding; - - if (encoding) { - builtInEncoding = Object.create(null); - - for (const charCode in encoding) { - glyphId = glyphNames.indexOf(encoding[charCode]); - - if (glyphId >= 0) { - builtInEncoding[charCode] = glyphId; - } - } - } - - return (0, _fonts_utils.type1FontGlyphMapping)(properties, builtInEncoding, glyphNames); - } - - hasGlyphId(id) { - if (id < 0 || id >= this.numGlyphs) { - return false; - } - - if (id === 0) { - return true; - } - - const glyph = this.charstrings[id - 1]; - return glyph.charstring.length > 0; - } - - getSeacs(charstrings) { - const seacMap = []; - - for (let i = 0, ii = charstrings.length; i < ii; i++) { - const charstring = charstrings[i]; - - if (charstring.seac) { - seacMap[i + 1] = charstring.seac; - } - } - - return seacMap; - } - - getType2Charstrings(type1Charstrings) { - const type2Charstrings = []; - - for (let i = 0, ii = type1Charstrings.length; i < ii; i++) { - type2Charstrings.push(type1Charstrings[i].charstring); - } - - return type2Charstrings; - } - - getType2Subrs(type1Subrs) { - let bias = 0; - const count = type1Subrs.length; - - if (count < 1133) { - bias = 107; - } else if (count < 33769) { - bias = 1131; - } else { - bias = 32768; - } - - const type2Subrs = []; - let i; - - for (i = 0; i < bias; i++) { - type2Subrs.push([0x0b]); - } - - for (i = 0; i < count; i++) { - type2Subrs.push(type1Subrs[i]); - } - - return type2Subrs; - } - - wrap(name, glyphs, charstrings, subrs, properties) { - const cff = new _cff_parser.CFF(); - cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4); - cff.names = [name]; - const topDict = new _cff_parser.CFFTopDict(); - topDict.setByName("version", 391); - topDict.setByName("Notice", 392); - topDict.setByName("FullName", 393); - topDict.setByName("FamilyName", 394); - topDict.setByName("Weight", 395); - topDict.setByName("Encoding", null); - topDict.setByName("FontMatrix", properties.fontMatrix); - topDict.setByName("FontBBox", properties.bbox); - topDict.setByName("charset", null); - topDict.setByName("CharStrings", null); - topDict.setByName("Private", null); - cff.topDict = topDict; - const strings = new _cff_parser.CFFStrings(); - strings.add("Version 0.11"); - strings.add("See original notice"); - strings.add(name); - strings.add(name); - strings.add("Medium"); - cff.strings = strings; - cff.globalSubrIndex = new _cff_parser.CFFIndex(); - const count = glyphs.length; - const charsetArray = [".notdef"]; - let i, ii; - - for (i = 0; i < count; i++) { - const glyphName = charstrings[i].glyphName; - - const index = _cff_parser.CFFStandardStrings.indexOf(glyphName); - - if (index === -1) { - strings.add(glyphName); - } - - charsetArray.push(glyphName); - } - - cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray); - const charStringsIndex = new _cff_parser.CFFIndex(); - charStringsIndex.add([0x8b, 0x0e]); - - for (i = 0; i < count; i++) { - charStringsIndex.add(glyphs[i]); - } - - cff.charStrings = charStringsIndex; - const privateDict = new _cff_parser.CFFPrivateDict(); - privateDict.setByName("Subrs", null); - const fields = ["BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StemSnapH", "StemSnapV", "BlueShift", "BlueFuzz", "BlueScale", "LanguageGroup", "ExpansionFactor", "ForceBold", "StdHW", "StdVW"]; - - for (i = 0, ii = fields.length; i < ii; i++) { - const field = fields[i]; - - if (!(field in properties.privateData)) { - continue; - } - - const value = properties.privateData[field]; - - if (Array.isArray(value)) { - for (let j = value.length - 1; j > 0; j--) { - value[j] -= value[j - 1]; - } - } - - privateDict.setByName(field, value); - } - - cff.topDict.privateDict = privateDict; - const subrIndex = new _cff_parser.CFFIndex(); - - for (i = 0, ii = subrs.length; i < ii; i++) { - subrIndex.add(subrs[i]); - } - - privateDict.subrsIndex = subrIndex; - const compiler = new _cff_parser.CFFCompiler(cff); - return compiler.compile(); - } - -} - -exports.Type1Font = Type1Font; - -/***/ }), -/* 55 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Type1Parser = void 0; - -var _encodings = __w_pdfjs_require__(19); - -var _core_utils = __w_pdfjs_require__(8); - -var _stream = __w_pdfjs_require__(10); - -var _util = __w_pdfjs_require__(2); - -const HINTING_ENABLED = false; - -const Type1CharString = function Type1CharStringClosure() { - const COMMAND_MAP = { - hstem: [1], - vstem: [3], - vmoveto: [4], - rlineto: [5], - hlineto: [6], - vlineto: [7], - rrcurveto: [8], - callsubr: [10], - flex: [12, 35], - drop: [12, 18], - endchar: [14], - rmoveto: [21], - hmoveto: [22], - vhcurveto: [30], - hvcurveto: [31] - }; - - class Type1CharString { - constructor() { - this.width = 0; - this.lsb = 0; - this.flexing = false; - this.output = []; - this.stack = []; - } - - convert(encoded, subrs, seacAnalysisEnabled) { - const count = encoded.length; - let error = false; - let wx, sbx, subrNumber; - - for (let i = 0; i < count; i++) { - let value = encoded[i]; - - if (value < 32) { - if (value === 12) { - value = (value << 8) + encoded[++i]; - } - - switch (value) { - case 1: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - - case 3: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - - case 4: - if (this.flexing) { - if (this.stack.length < 1) { - error = true; - break; - } - - const dy = this.stack.pop(); - this.stack.push(0, dy); - break; - } - - error = this.executeCommand(1, COMMAND_MAP.vmoveto); - break; - - case 5: - error = this.executeCommand(2, COMMAND_MAP.rlineto); - break; - - case 6: - error = this.executeCommand(1, COMMAND_MAP.hlineto); - break; - - case 7: - error = this.executeCommand(1, COMMAND_MAP.vlineto); - break; - - case 8: - error = this.executeCommand(6, COMMAND_MAP.rrcurveto); - break; - - case 9: - this.stack = []; - break; - - case 10: - if (this.stack.length < 1) { - error = true; - break; - } - - subrNumber = this.stack.pop(); - - if (!subrs[subrNumber]) { - error = true; - break; - } - - error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled); - break; - - case 11: - return error; - - case 13: - if (this.stack.length < 2) { - error = true; - break; - } - - wx = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx); - error = this.executeCommand(2, COMMAND_MAP.hmoveto); - break; - - case 14: - this.output.push(COMMAND_MAP.endchar[0]); - break; - - case 21: - if (this.flexing) { - break; - } - - error = this.executeCommand(2, COMMAND_MAP.rmoveto); - break; - - case 22: - if (this.flexing) { - this.stack.push(0); - break; - } - - error = this.executeCommand(1, COMMAND_MAP.hmoveto); - break; - - case 30: - error = this.executeCommand(4, COMMAND_MAP.vhcurveto); - break; - - case 31: - error = this.executeCommand(4, COMMAND_MAP.hvcurveto); - break; - - case (12 << 8) + 0: - this.stack = []; - break; - - case (12 << 8) + 1: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.vstem); - break; - - case (12 << 8) + 2: - if (!HINTING_ENABLED) { - this.stack = []; - break; - } - - error = this.executeCommand(2, COMMAND_MAP.hstem); - break; - - case (12 << 8) + 6: - if (seacAnalysisEnabled) { - const asb = this.stack[this.stack.length - 5]; - this.seac = this.stack.splice(-4, 4); - this.seac[0] += this.lsb - asb; - error = this.executeCommand(0, COMMAND_MAP.endchar); - } else { - error = this.executeCommand(4, COMMAND_MAP.endchar); - } - - break; - - case (12 << 8) + 7: - if (this.stack.length < 4) { - error = true; - break; - } - - this.stack.pop(); - wx = this.stack.pop(); - const sby = this.stack.pop(); - sbx = this.stack.pop(); - this.lsb = sbx; - this.width = wx; - this.stack.push(wx, sbx, sby); - error = this.executeCommand(3, COMMAND_MAP.rmoveto); - break; - - case (12 << 8) + 12: - if (this.stack.length < 2) { - error = true; - break; - } - - const num2 = this.stack.pop(); - const num1 = this.stack.pop(); - this.stack.push(num1 / num2); - break; - - case (12 << 8) + 16: - if (this.stack.length < 2) { - error = true; - break; - } - - subrNumber = this.stack.pop(); - const numArgs = this.stack.pop(); - - if (subrNumber === 0 && numArgs === 3) { - const flexArgs = this.stack.splice(this.stack.length - 17, 17); - this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]); - error = this.executeCommand(13, COMMAND_MAP.flex, true); - this.flexing = false; - this.stack.push(flexArgs[15], flexArgs[16]); - } else if (subrNumber === 1 && numArgs === 0) { - this.flexing = true; - } - - break; - - case (12 << 8) + 17: - break; - - case (12 << 8) + 33: - this.stack = []; - break; - - default: - (0, _util.warn)('Unknown type 1 charstring command of "' + value + '"'); - break; - } - - if (error) { - break; - } - - continue; - } else if (value <= 246) { - value -= 139; - } else if (value <= 250) { - value = (value - 247) * 256 + encoded[++i] + 108; - } else if (value <= 254) { - value = -((value - 251) * 256) - encoded[++i] - 108; - } else { - value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; - } - - this.stack.push(value); - } - - return error; - } - - executeCommand(howManyArgs, command, keepStack) { - const stackLength = this.stack.length; - - if (howManyArgs > stackLength) { - return true; - } - - const start = stackLength - howManyArgs; - - for (let i = start; i < stackLength; i++) { - let value = this.stack[i]; - - if (Number.isInteger(value)) { - this.output.push(28, value >> 8 & 0xff, value & 0xff); - } else { - value = 65536 * value | 0; - this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); - } - } - - this.output.push.apply(this.output, command); - - if (keepStack) { - this.stack.splice(start, howManyArgs); - } else { - this.stack.length = 0; - } - - return false; - } - - } - - return Type1CharString; -}(); - -const Type1Parser = function Type1ParserClosure() { - const EEXEC_ENCRYPT_KEY = 55665; - const CHAR_STRS_ENCRYPT_KEY = 4330; - - function isHexDigit(code) { - return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102; - } - - function decrypt(data, key, discardNumber) { - if (discardNumber >= data.length) { - return new Uint8Array(0); - } - - const c1 = 52845, - c2 = 22719; - let r = key | 0, - i, - j; - - for (i = 0; i < discardNumber; i++) { - r = (data[i] + r) * c1 + c2 & (1 << 16) - 1; - } - - const count = data.length - discardNumber; - const decrypted = new Uint8Array(count); - - for (i = discardNumber, j = 0; j < count; i++, j++) { - const value = data[i]; - decrypted[j] = value ^ r >> 8; - r = (value + r) * c1 + c2 & (1 << 16) - 1; - } - - return decrypted; - } - - function decryptAscii(data, key, discardNumber) { - const c1 = 52845, - c2 = 22719; - let r = key | 0; - const count = data.length, - maybeLength = count >>> 1; - const decrypted = new Uint8Array(maybeLength); - let i, j; - - for (i = 0, j = 0; i < count; i++) { - const digit1 = data[i]; - - if (!isHexDigit(digit1)) { - continue; - } - - i++; - let digit2; - - while (i < count && !isHexDigit(digit2 = data[i])) { - i++; - } - - if (i < count) { - const value = parseInt(String.fromCharCode(digit1, digit2), 16); - decrypted[j++] = value ^ r >> 8; - r = (value + r) * c1 + c2 & (1 << 16) - 1; - } - } - - return decrypted.slice(discardNumber, j); - } - - function isSpecial(c) { - return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29; - } - - class Type1Parser { - constructor(stream, encrypted, seacAnalysisEnabled) { - if (encrypted) { - const data = stream.getBytes(); - const isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7])); - stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)); - } - - this.seacAnalysisEnabled = !!seacAnalysisEnabled; - this.stream = stream; - this.nextChar(); - } - - readNumberArray() { - this.getToken(); - const array = []; - - while (true) { - const token = this.getToken(); - - if (token === null || token === "]" || token === "}") { - break; - } - - array.push(parseFloat(token || 0)); - } - - return array; - } - - readNumber() { - const token = this.getToken(); - return parseFloat(token || 0); - } - - readInt() { - const token = this.getToken(); - return parseInt(token || 0, 10) | 0; - } - - readBoolean() { - const token = this.getToken(); - return token === "true" ? 1 : 0; - } - - nextChar() { - return this.currentChar = this.stream.getByte(); - } - - prevChar() { - this.stream.skip(-2); - return this.currentChar = this.stream.getByte(); - } - - getToken() { - let comment = false; - let ch = this.currentChar; - - while (true) { - if (ch === -1) { - return null; - } - - if (comment) { - if (ch === 0x0a || ch === 0x0d) { - comment = false; - } - } else if (ch === 0x25) { - comment = true; - } else if (!(0, _core_utils.isWhiteSpace)(ch)) { - break; - } - - ch = this.nextChar(); - } - - if (isSpecial(ch)) { - this.nextChar(); - return String.fromCharCode(ch); - } - - let token = ""; - - do { - token += String.fromCharCode(ch); - ch = this.nextChar(); - } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch)); - - return token; - } - - readCharStrings(bytes, lenIV) { - if (lenIV === -1) { - return bytes; - } - - return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV); - } - - extractFontProgram(properties) { - const stream = this.stream; - const subrs = [], - charstrings = []; - const privateData = Object.create(null); - privateData.lenIV = 4; - const program = { - subrs: [], - charstrings: [], - properties: { - privateData - } - }; - let token, length, data, lenIV, encoded; - - while ((token = this.getToken()) !== null) { - if (token !== "/") { - continue; - } - - token = this.getToken(); - - switch (token) { - case "CharStrings": - this.getToken(); - this.getToken(); - this.getToken(); - this.getToken(); - - while (true) { - token = this.getToken(); - - if (token === null || token === "end") { - break; - } - - if (token !== "/") { - continue; - } - - const glyph = this.getToken(); - length = this.readInt(); - this.getToken(); - data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); - lenIV = program.properties.privateData.lenIV; - encoded = this.readCharStrings(data, lenIV); - this.nextChar(); - token = this.getToken(); - - if (token === "noaccess") { - this.getToken(); - } else if (token === "/") { - this.prevChar(); - } - - charstrings.push({ - glyph, - encoded - }); - } - - break; - - case "Subrs": - this.readInt(); - this.getToken(); - - while (this.getToken() === "dup") { - const index = this.readInt(); - length = this.readInt(); - this.getToken(); - data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); - lenIV = program.properties.privateData.lenIV; - encoded = this.readCharStrings(data, lenIV); - this.nextChar(); - token = this.getToken(); - - if (token === "noaccess") { - this.getToken(); - } - - subrs[index] = encoded; - } - - break; - - case "BlueValues": - case "OtherBlues": - case "FamilyBlues": - case "FamilyOtherBlues": - const blueArray = this.readNumberArray(); - - if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) { - program.properties.privateData[token] = blueArray; - } - - break; - - case "StemSnapH": - case "StemSnapV": - program.properties.privateData[token] = this.readNumberArray(); - break; - - case "StdHW": - case "StdVW": - program.properties.privateData[token] = this.readNumberArray()[0]; - break; - - case "BlueShift": - case "lenIV": - case "BlueFuzz": - case "BlueScale": - case "LanguageGroup": - case "ExpansionFactor": - program.properties.privateData[token] = this.readNumber(); - break; - - case "ForceBold": - program.properties.privateData[token] = this.readBoolean(); - break; - } - } - - for (let i = 0; i < charstrings.length; i++) { - const glyph = charstrings[i].glyph; - encoded = charstrings[i].encoded; - const charString = new Type1CharString(); - const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled); - let output = charString.output; - - if (error) { - output = [14]; - } - - const charStringObject = { - glyphName: glyph, - charstring: output, - width: charString.width, - lsb: charString.lsb, - seac: charString.seac - }; - - if (glyph === ".notdef") { - program.charstrings.unshift(charStringObject); - } else { - program.charstrings.push(charStringObject); - } - - if (properties.builtInEncoding) { - const index = properties.builtInEncoding.indexOf(glyph); - - if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) { - properties.widths[index] = charString.width; - } - } - } - - return program; - } - - extractFontHeader(properties) { - let token; - - while ((token = this.getToken()) !== null) { - if (token !== "/") { - continue; - } - - token = this.getToken(); - - switch (token) { - case "FontMatrix": - const matrix = this.readNumberArray(); - properties.fontMatrix = matrix; - break; - - case "Encoding": - const encodingArg = this.getToken(); - let encoding; - - if (!/^\d+$/.test(encodingArg)) { - encoding = (0, _encodings.getEncoding)(encodingArg); - } else { - encoding = []; - const size = parseInt(encodingArg, 10) | 0; - this.getToken(); - - for (let j = 0; j < size; j++) { - token = this.getToken(); - - while (token !== "dup" && token !== "def") { - token = this.getToken(); - - if (token === null) { - return; - } - } - - if (token === "def") { - break; - } - - const index = this.readInt(); - this.getToken(); - const glyph = this.getToken(); - encoding[index] = glyph; - this.getToken(); - } - } - - properties.builtInEncoding = encoding; - break; - - case "FontBBox": - const fontBBox = this.readNumberArray(); - properties.ascent = Math.max(fontBBox[3], fontBBox[1]); - properties.descent = Math.min(fontBBox[1], fontBBox[3]); - properties.ascentScaled = true; - break; - } - } - } - - } - - return Type1Parser; -}(); - -exports.Type1Parser = Type1Parser; - -/***/ }), -/* 56 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Pattern = void 0; -exports.getTilingPatternIR = getTilingPatternIR; - -var _util = __w_pdfjs_require__(2); - -var _base_stream = __w_pdfjs_require__(9); - -var _colorspace = __w_pdfjs_require__(24); - -var _core_utils = __w_pdfjs_require__(8); - -const ShadingType = { - FUNCTION_BASED: 1, - AXIAL: 2, - RADIAL: 3, - FREE_FORM_MESH: 4, - LATTICE_FORM_MESH: 5, - COONS_PATCH_MESH: 6, - TENSOR_PATCH_MESH: 7 -}; - -class Pattern { - constructor() { - (0, _util.unreachable)("Cannot initialize Pattern."); - } - - static parseShading(shading, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) { - const dict = shading instanceof _base_stream.BaseStream ? shading.dict : shading; - const type = dict.get("ShadingType"); - - try { - switch (type) { - case ShadingType.AXIAL: - case ShadingType.RADIAL: - return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache); - - case ShadingType.FREE_FORM_MESH: - case ShadingType.LATTICE_FORM_MESH: - case ShadingType.COONS_PATCH_MESH: - case ShadingType.TENSOR_PATCH_MESH: - return new MeshShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache); - - default: - throw new _util.FormatError("Unsupported ShadingType: " + type); - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - handler.send("UnsupportedFeature", { - featureId: _util.UNSUPPORTED_FEATURES.shadingPattern - }); - (0, _util.warn)(ex); - return new DummyShading(); - } - } - -} - -exports.Pattern = Pattern; - -class BaseShading { - static get SMALL_NUMBER() { - return (0, _util.shadow)(this, "SMALL_NUMBER", 1e-6); - } - - constructor() { - if (this.constructor === BaseShading) { - (0, _util.unreachable)("Cannot initialize BaseShading."); - } - } - - getIR() { - (0, _util.unreachable)("Abstract method `getIR` called."); - } - -} - -class RadialAxialShading extends BaseShading { - constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) { - super(); - this.coordsArr = dict.getArray("Coords"); - this.shadingType = dict.get("ShadingType"); - - const cs = _colorspace.ColorSpace.parse({ - cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), - xref, - resources, - pdfFunctionFactory, - localColorSpaceCache - }); - - const bbox = dict.getArray("BBox"); - - if (Array.isArray(bbox) && bbox.length === 4) { - this.bbox = _util.Util.normalizeRect(bbox); - } else { - this.bbox = null; - } - - let t0 = 0.0, - t1 = 1.0; - - if (dict.has("Domain")) { - const domainArr = dict.getArray("Domain"); - t0 = domainArr[0]; - t1 = domainArr[1]; - } - - let extendStart = false, - extendEnd = false; - - if (dict.has("Extend")) { - const extendArr = dict.getArray("Extend"); - extendStart = extendArr[0]; - extendEnd = extendArr[1]; - } - - if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) { - const [x1, y1, r1, x2, y2, r2] = this.coordsArr; - const distance = Math.hypot(x1 - x2, y1 - y2); - - if (r1 <= r2 + distance && r2 <= r1 + distance) { - (0, _util.warn)("Unsupported radial gradient."); - } - } - - this.extendStart = extendStart; - this.extendEnd = extendEnd; - const fnObj = dict.getRaw("Function"); - const fn = pdfFunctionFactory.createFromArray(fnObj); - const NUMBER_OF_SAMPLES = 10; - const step = (t1 - t0) / NUMBER_OF_SAMPLES; - const colorStops = this.colorStops = []; - - if (t0 >= t1 || step <= 0) { - (0, _util.info)("Bad shading domain."); - return; - } - - const color = new Float32Array(cs.numComps), - ratio = new Float32Array(1); - let rgbColor; - - for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) { - ratio[0] = t0 + i * step; - fn(ratio, 0, color, 0); - rgbColor = cs.getRgb(color, 0); - - const cssColor = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]); - - colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]); - } - - let background = "transparent"; - - if (dict.has("Background")) { - rgbColor = cs.getRgb(dict.get("Background"), 0); - background = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]); - } - - if (!extendStart) { - colorStops.unshift([0, background]); - colorStops[1][0] += BaseShading.SMALL_NUMBER; - } - - if (!extendEnd) { - colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER; - colorStops.push([1, background]); - } - - this.colorStops = colorStops; - } - - getIR() { - const coordsArr = this.coordsArr; - const shadingType = this.shadingType; - let type, p0, p1, r0, r1; - - if (shadingType === ShadingType.AXIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[2], coordsArr[3]]; - r0 = null; - r1 = null; - type = "axial"; - } else if (shadingType === ShadingType.RADIAL) { - p0 = [coordsArr[0], coordsArr[1]]; - p1 = [coordsArr[3], coordsArr[4]]; - r0 = coordsArr[2]; - r1 = coordsArr[5]; - type = "radial"; - } else { - (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`); - } - - return ["RadialAxial", type, this.bbox, this.colorStops, p0, p1, r0, r1]; - } - -} - -class MeshStreamReader { - constructor(stream, context) { - this.stream = stream; - this.context = context; - this.buffer = 0; - this.bufferLength = 0; - const numComps = context.numComps; - this.tmpCompsBuf = new Float32Array(numComps); - const csNumComps = context.colorSpace.numComps; - this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf; - } - - get hasData() { - if (this.stream.end) { - return this.stream.pos < this.stream.end; - } - - if (this.bufferLength > 0) { - return true; - } - - const nextByte = this.stream.getByte(); - - if (nextByte < 0) { - return false; - } - - this.buffer = nextByte; - this.bufferLength = 8; - return true; - } - - readBits(n) { - let buffer = this.buffer; - let bufferLength = this.bufferLength; - - if (n === 32) { - if (bufferLength === 0) { - return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0; - } - - buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte(); - const nextByte = this.stream.getByte(); - this.buffer = nextByte & (1 << bufferLength) - 1; - return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0; - } - - if (n === 8 && bufferLength === 0) { - return this.stream.getByte(); - } - - while (bufferLength < n) { - buffer = buffer << 8 | this.stream.getByte(); - bufferLength += 8; - } - - bufferLength -= n; - this.bufferLength = bufferLength; - this.buffer = buffer & (1 << bufferLength) - 1; - return buffer >> bufferLength; - } - - align() { - this.buffer = 0; - this.bufferLength = 0; - } - - readFlag() { - return this.readBits(this.context.bitsPerFlag); - } - - readCoordinate() { - const bitsPerCoordinate = this.context.bitsPerCoordinate; - const xi = this.readBits(bitsPerCoordinate); - const yi = this.readBits(bitsPerCoordinate); - const decode = this.context.decode; - const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10; - return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]]; - } - - readComponents() { - const numComps = this.context.numComps; - const bitsPerComponent = this.context.bitsPerComponent; - const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10; - const decode = this.context.decode; - const components = this.tmpCompsBuf; - - for (let i = 0, j = 4; i < numComps; i++, j += 2) { - const ci = this.readBits(bitsPerComponent); - components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; - } - - const color = this.tmpCsCompsBuf; - - if (this.context.colorFn) { - this.context.colorFn(components, 0, color, 0); - } - - return this.context.colorSpace.getRgb(color, 0); - } - -} - -const getB = function getBClosure() { - function buildB(count) { - const lut = []; - - for (let i = 0; i <= count; i++) { - const t = i / count, - t_ = 1 - t; - lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t])); - } - - return lut; - } - - const cache = []; - return function (count) { - if (!cache[count]) { - cache[count] = buildB(count); - } - - return cache[count]; - }; -}(); - -class MeshShading extends BaseShading { - static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() { - return (0, _util.shadow)(this, "MIN_SPLIT_PATCH_CHUNKS_AMOUNT", 3); - } - - static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() { - return (0, _util.shadow)(this, "MAX_SPLIT_PATCH_CHUNKS_AMOUNT", 20); - } - - static get TRIANGLE_DENSITY() { - return (0, _util.shadow)(this, "TRIANGLE_DENSITY", 20); - } - - constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) { - super(); - - if (!(stream instanceof _base_stream.BaseStream)) { - throw new _util.FormatError("Mesh data is not a stream"); - } - - const dict = stream.dict; - this.shadingType = dict.get("ShadingType"); - const bbox = dict.getArray("BBox"); - - if (Array.isArray(bbox) && bbox.length === 4) { - this.bbox = _util.Util.normalizeRect(bbox); - } else { - this.bbox = null; - } - - const cs = _colorspace.ColorSpace.parse({ - cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), - xref, - resources, - pdfFunctionFactory, - localColorSpaceCache - }); - - this.background = dict.has("Background") ? cs.getRgb(dict.get("Background"), 0) : null; - const fnObj = dict.getRaw("Function"); - const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null; - this.coords = []; - this.colors = []; - this.figures = []; - const decodeContext = { - bitsPerCoordinate: dict.get("BitsPerCoordinate"), - bitsPerComponent: dict.get("BitsPerComponent"), - bitsPerFlag: dict.get("BitsPerFlag"), - decode: dict.getArray("Decode"), - colorFn: fn, - colorSpace: cs, - numComps: fn ? 1 : cs.numComps - }; - const reader = new MeshStreamReader(stream, decodeContext); - let patchMesh = false; - - switch (this.shadingType) { - case ShadingType.FREE_FORM_MESH: - this._decodeType4Shading(reader); - - break; - - case ShadingType.LATTICE_FORM_MESH: - const verticesPerRow = dict.get("VerticesPerRow") | 0; - - if (verticesPerRow < 2) { - throw new _util.FormatError("Invalid VerticesPerRow"); - } - - this._decodeType5Shading(reader, verticesPerRow); - - break; - - case ShadingType.COONS_PATCH_MESH: - this._decodeType6Shading(reader); - - patchMesh = true; - break; - - case ShadingType.TENSOR_PATCH_MESH: - this._decodeType7Shading(reader); - - patchMesh = true; - break; - - default: - (0, _util.unreachable)("Unsupported mesh type."); - break; - } - - if (patchMesh) { - this._updateBounds(); - - for (let i = 0, ii = this.figures.length; i < ii; i++) { - this._buildFigureFromPatch(i); - } - } - - this._updateBounds(); - - this._packData(); - } - - _decodeType4Shading(reader) { - const coords = this.coords; - const colors = this.colors; - const operators = []; - const ps = []; - let verticesLeft = 0; - - while (reader.hasData) { - const f = reader.readFlag(); - const coord = reader.readCoordinate(); - const color = reader.readComponents(); - - if (verticesLeft === 0) { - if (!(0 <= f && f <= 2)) { - throw new _util.FormatError("Unknown type4 flag"); - } - - switch (f) { - case 0: - verticesLeft = 3; - break; - - case 1: - ps.push(ps[ps.length - 2], ps[ps.length - 1]); - verticesLeft = 1; - break; - - case 2: - ps.push(ps[ps.length - 3], ps[ps.length - 1]); - verticesLeft = 1; - break; - } - - operators.push(f); - } - - ps.push(coords.length); - coords.push(coord); - colors.push(color); - verticesLeft--; - reader.align(); - } - - this.figures.push({ - type: "triangles", - coords: new Int32Array(ps), - colors: new Int32Array(ps) - }); - } - - _decodeType5Shading(reader, verticesPerRow) { - const coords = this.coords; - const colors = this.colors; - const ps = []; - - while (reader.hasData) { - const coord = reader.readCoordinate(); - const color = reader.readComponents(); - ps.push(coords.length); - coords.push(coord); - colors.push(color); - } - - this.figures.push({ - type: "lattice", - coords: new Int32Array(ps), - colors: new Int32Array(ps), - verticesPerRow - }); - } - - _decodeType6Shading(reader) { - const coords = this.coords; - const colors = this.colors; - const ps = new Int32Array(16); - const cs = new Int32Array(4); - - while (reader.hasData) { - const f = reader.readFlag(); - - if (!(0 <= f && f <= 3)) { - throw new _util.FormatError("Unknown type6 flag"); - } - - const pi = coords.length; - - for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) { - coords.push(reader.readCoordinate()); - } - - const ci = colors.length; - - for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { - colors.push(reader.readComponents()); - } - - let tmp1, tmp2, tmp3, tmp4; - - switch (f) { - case 0: - ps[12] = pi + 3; - ps[13] = pi + 4; - ps[14] = pi + 5; - ps[15] = pi + 6; - ps[8] = pi + 2; - ps[11] = pi + 7; - ps[4] = pi + 1; - ps[7] = pi + 8; - ps[0] = pi; - ps[1] = pi + 11; - ps[2] = pi + 10; - ps[3] = pi + 9; - cs[2] = ci + 1; - cs[3] = ci + 2; - cs[0] = ci; - cs[1] = ci + 3; - break; - - case 1: - tmp1 = ps[12]; - tmp2 = ps[13]; - tmp3 = ps[14]; - tmp4 = ps[15]; - ps[12] = tmp4; - ps[13] = pi + 0; - ps[14] = pi + 1; - ps[15] = pi + 2; - ps[8] = tmp3; - ps[11] = pi + 3; - ps[4] = tmp2; - ps[7] = pi + 4; - ps[0] = tmp1; - ps[1] = pi + 7; - ps[2] = pi + 6; - ps[3] = pi + 5; - tmp1 = cs[2]; - tmp2 = cs[3]; - cs[2] = tmp2; - cs[3] = ci; - cs[0] = tmp1; - cs[1] = ci + 1; - break; - - case 2: - tmp1 = ps[15]; - tmp2 = ps[11]; - ps[12] = ps[3]; - ps[13] = pi + 0; - ps[14] = pi + 1; - ps[15] = pi + 2; - ps[8] = ps[7]; - ps[11] = pi + 3; - ps[4] = tmp2; - ps[7] = pi + 4; - ps[0] = tmp1; - ps[1] = pi + 7; - ps[2] = pi + 6; - ps[3] = pi + 5; - tmp1 = cs[3]; - cs[2] = cs[1]; - cs[3] = ci; - cs[0] = tmp1; - cs[1] = ci + 1; - break; - - case 3: - ps[12] = ps[0]; - ps[13] = pi + 0; - ps[14] = pi + 1; - ps[15] = pi + 2; - ps[8] = ps[1]; - ps[11] = pi + 3; - ps[4] = ps[2]; - ps[7] = pi + 4; - ps[0] = ps[3]; - ps[1] = pi + 7; - ps[2] = pi + 6; - ps[3] = pi + 5; - cs[2] = cs[0]; - cs[3] = ci; - cs[0] = cs[1]; - cs[1] = ci + 1; - break; - } - - ps[5] = coords.length; - coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]); - ps[6] = coords.length; - coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]); - ps[9] = coords.length; - coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]); - ps[10] = coords.length; - coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]); - this.figures.push({ - type: "patch", - coords: new Int32Array(ps), - colors: new Int32Array(cs) - }); - } - } - - _decodeType7Shading(reader) { - const coords = this.coords; - const colors = this.colors; - const ps = new Int32Array(16); - const cs = new Int32Array(4); - - while (reader.hasData) { - const f = reader.readFlag(); - - if (!(0 <= f && f <= 3)) { - throw new _util.FormatError("Unknown type7 flag"); - } - - const pi = coords.length; - - for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) { - coords.push(reader.readCoordinate()); - } - - const ci = colors.length; - - for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { - colors.push(reader.readComponents()); - } - - let tmp1, tmp2, tmp3, tmp4; - - switch (f) { - case 0: - ps[12] = pi + 3; - ps[13] = pi + 4; - ps[14] = pi + 5; - ps[15] = pi + 6; - ps[8] = pi + 2; - ps[9] = pi + 13; - ps[10] = pi + 14; - ps[11] = pi + 7; - ps[4] = pi + 1; - ps[5] = pi + 12; - ps[6] = pi + 15; - ps[7] = pi + 8; - ps[0] = pi; - ps[1] = pi + 11; - ps[2] = pi + 10; - ps[3] = pi + 9; - cs[2] = ci + 1; - cs[3] = ci + 2; - cs[0] = ci; - cs[1] = ci + 3; - break; - - case 1: - tmp1 = ps[12]; - tmp2 = ps[13]; - tmp3 = ps[14]; - tmp4 = ps[15]; - ps[12] = tmp4; - ps[13] = pi + 0; - ps[14] = pi + 1; - ps[15] = pi + 2; - ps[8] = tmp3; - ps[9] = pi + 9; - ps[10] = pi + 10; - ps[11] = pi + 3; - ps[4] = tmp2; - ps[5] = pi + 8; - ps[6] = pi + 11; - ps[7] = pi + 4; - ps[0] = tmp1; - ps[1] = pi + 7; - ps[2] = pi + 6; - ps[3] = pi + 5; - tmp1 = cs[2]; - tmp2 = cs[3]; - cs[2] = tmp2; - cs[3] = ci; - cs[0] = tmp1; - cs[1] = ci + 1; - break; - - case 2: - tmp1 = ps[15]; - tmp2 = ps[11]; - ps[12] = ps[3]; - ps[13] = pi + 0; - ps[14] = pi + 1; - ps[15] = pi + 2; - ps[8] = ps[7]; - ps[9] = pi + 9; - ps[10] = pi + 10; - ps[11] = pi + 3; - ps[4] = tmp2; - ps[5] = pi + 8; - ps[6] = pi + 11; - ps[7] = pi + 4; - ps[0] = tmp1; - ps[1] = pi + 7; - ps[2] = pi + 6; - ps[3] = pi + 5; - tmp1 = cs[3]; - cs[2] = cs[1]; - cs[3] = ci; - cs[0] = tmp1; - cs[1] = ci + 1; - break; - - case 3: - ps[12] = ps[0]; - ps[13] = pi + 0; - ps[14] = pi + 1; - ps[15] = pi + 2; - ps[8] = ps[1]; - ps[9] = pi + 9; - ps[10] = pi + 10; - ps[11] = pi + 3; - ps[4] = ps[2]; - ps[5] = pi + 8; - ps[6] = pi + 11; - ps[7] = pi + 4; - ps[0] = ps[3]; - ps[1] = pi + 7; - ps[2] = pi + 6; - ps[3] = pi + 5; - cs[2] = cs[0]; - cs[3] = ci; - cs[0] = cs[1]; - cs[1] = ci + 1; - break; - } - - this.figures.push({ - type: "patch", - coords: new Int32Array(ps), - colors: new Int32Array(cs) - }); - } - } - - _buildFigureFromPatch(index) { - const figure = this.figures[index]; - (0, _util.assert)(figure.type === "patch", "Unexpected patch mesh figure"); - const coords = this.coords, - colors = this.colors; - const pi = figure.coords; - const ci = figure.colors; - const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); - const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); - const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); - const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); - let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0])); - splitXBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)); - let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1])); - splitYBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)); - const verticesPerRow = splitXBy + 1; - const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); - const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); - let k = 0; - const cl = new Uint8Array(3), - cr = new Uint8Array(3); - const c0 = colors[ci[0]], - c1 = colors[ci[1]], - c2 = colors[ci[2]], - c3 = colors[ci[3]]; - const bRow = getB(splitYBy), - bCol = getB(splitXBy); - - for (let row = 0; row <= splitYBy; row++) { - cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0; - cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0; - cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0; - cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0; - cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0; - cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0; - - for (let col = 0; col <= splitXBy; col++, k++) { - if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) { - continue; - } - - let x = 0, - y = 0; - let q = 0; - - for (let i = 0; i <= 3; i++) { - for (let j = 0; j <= 3; j++, q++) { - const m = bRow[row][i] * bCol[col][j]; - x += coords[pi[q]][0] * m; - y += coords[pi[q]][1] * m; - } - } - - figureCoords[k] = coords.length; - coords.push([x, y]); - figureColors[k] = colors.length; - const newColor = new Uint8Array(3); - newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0; - newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0; - newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0; - colors.push(newColor); - } - } - - figureCoords[0] = pi[0]; - figureColors[0] = ci[0]; - figureCoords[splitXBy] = pi[3]; - figureColors[splitXBy] = ci[1]; - figureCoords[verticesPerRow * splitYBy] = pi[12]; - figureColors[verticesPerRow * splitYBy] = ci[2]; - figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; - figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; - this.figures[index] = { - type: "lattice", - coords: figureCoords, - colors: figureColors, - verticesPerRow - }; - } - - _updateBounds() { - let minX = this.coords[0][0], - minY = this.coords[0][1], - maxX = minX, - maxY = minY; - - for (let i = 1, ii = this.coords.length; i < ii; i++) { - const x = this.coords[i][0], - y = this.coords[i][1]; - minX = minX > x ? x : minX; - minY = minY > y ? y : minY; - maxX = maxX < x ? x : maxX; - maxY = maxY < y ? y : maxY; - } - - this.bounds = [minX, minY, maxX, maxY]; - } - - _packData() { - let i, ii, j, jj; - const coords = this.coords; - const coordsPacked = new Float32Array(coords.length * 2); - - for (i = 0, j = 0, ii = coords.length; i < ii; i++) { - const xy = coords[i]; - coordsPacked[j++] = xy[0]; - coordsPacked[j++] = xy[1]; - } - - this.coords = coordsPacked; - const colors = this.colors; - const colorsPacked = new Uint8Array(colors.length * 3); - - for (i = 0, j = 0, ii = colors.length; i < ii; i++) { - const c = colors[i]; - colorsPacked[j++] = c[0]; - colorsPacked[j++] = c[1]; - colorsPacked[j++] = c[2]; - } - - this.colors = colorsPacked; - const figures = this.figures; - - for (i = 0, ii = figures.length; i < ii; i++) { - const figure = figures[i], - ps = figure.coords, - cs = figure.colors; - - for (j = 0, jj = ps.length; j < jj; j++) { - ps[j] *= 2; - cs[j] *= 3; - } - } - } - - getIR() { - return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.bbox, this.background]; - } - -} - -class DummyShading extends BaseShading { - getIR() { - return ["Dummy"]; - } - -} - -function getTilingPatternIR(operatorList, dict, color) { - const matrix = dict.getArray("Matrix"); - - const bbox = _util.Util.normalizeRect(dict.getArray("BBox")); - - const xstep = dict.get("XStep"); - const ystep = dict.get("YStep"); - const paintType = dict.get("PaintType"); - const tilingType = dict.get("TilingType"); - - if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) { - throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`); - } - - return ["TilingPattern", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; -} - -/***/ }), -/* 57 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PostScriptEvaluator = exports.PostScriptCompiler = exports.PDFFunctionFactory = void 0; -exports.isPDFFunction = isPDFFunction; - -var _primitives = __w_pdfjs_require__(5); - -var _util = __w_pdfjs_require__(2); - -var _ps_parser = __w_pdfjs_require__(58); - -var _base_stream = __w_pdfjs_require__(9); - -var _image_utils = __w_pdfjs_require__(59); - -class PDFFunctionFactory { - constructor({ - xref, - isEvalSupported = true - }) { - this.xref = xref; - this.isEvalSupported = isEvalSupported !== false; - } - - create(fn) { - const cachedFunction = this.getCached(fn); - - if (cachedFunction) { - return cachedFunction; - } - - const parsedFunction = PDFFunction.parse({ - xref: this.xref, - isEvalSupported: this.isEvalSupported, - fn: fn instanceof _primitives.Ref ? this.xref.fetch(fn) : fn - }); - - this._cache(fn, parsedFunction); - - return parsedFunction; - } - - createFromArray(fnObj) { - const cachedFunction = this.getCached(fnObj); - - if (cachedFunction) { - return cachedFunction; - } - - const parsedFunction = PDFFunction.parseArray({ - xref: this.xref, - isEvalSupported: this.isEvalSupported, - fnObj: fnObj instanceof _primitives.Ref ? this.xref.fetch(fnObj) : fnObj - }); - - this._cache(fnObj, parsedFunction); - - return parsedFunction; - } - - getCached(cacheKey) { - let fnRef; - - if (cacheKey instanceof _primitives.Ref) { - fnRef = cacheKey; - } else if (cacheKey instanceof _primitives.Dict) { - fnRef = cacheKey.objId; - } else if (cacheKey instanceof _base_stream.BaseStream) { - fnRef = cacheKey.dict && cacheKey.dict.objId; - } - - if (fnRef) { - const localFunction = this._localFunctionCache.getByRef(fnRef); - - if (localFunction) { - return localFunction; - } - } - - return null; - } - - _cache(cacheKey, parsedFunction) { - if (!parsedFunction) { - throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.'); - } - - let fnRef; - - if (cacheKey instanceof _primitives.Ref) { - fnRef = cacheKey; - } else if (cacheKey instanceof _primitives.Dict) { - fnRef = cacheKey.objId; - } else if (cacheKey instanceof _base_stream.BaseStream) { - fnRef = cacheKey.dict && cacheKey.dict.objId; - } - - if (fnRef) { - this._localFunctionCache.set(null, fnRef, parsedFunction); - } - } - - get _localFunctionCache() { - return (0, _util.shadow)(this, "_localFunctionCache", new _image_utils.LocalFunctionCache()); - } - -} - -exports.PDFFunctionFactory = PDFFunctionFactory; - -function toNumberArray(arr) { - if (!Array.isArray(arr)) { - return null; - } - - const length = arr.length; - - for (let i = 0; i < length; i++) { - if (typeof arr[i] !== "number") { - const result = new Array(length); - - for (let j = 0; j < length; j++) { - result[j] = +arr[j]; - } - - return result; - } - } - - return arr; -} - -class PDFFunction { - static getSampleArray(size, outputSize, bps, stream) { - let i, ii; - let length = 1; - - for (i = 0, ii = size.length; i < ii; i++) { - length *= size[i]; - } - - length *= outputSize; - const array = new Array(length); - let codeSize = 0; - let codeBuf = 0; - const sampleMul = 1.0 / (2.0 ** bps - 1); - const strBytes = stream.getBytes((length * bps + 7) / 8); - let strIdx = 0; - - for (i = 0; i < length; i++) { - while (codeSize < bps) { - codeBuf <<= 8; - codeBuf |= strBytes[strIdx++]; - codeSize += 8; - } - - codeSize -= bps; - array[i] = (codeBuf >> codeSize) * sampleMul; - codeBuf &= (1 << codeSize) - 1; - } - - return array; - } - - static parse({ - xref, - isEvalSupported, - fn - }) { - const dict = fn.dict || fn; - const typeNum = dict.get("FunctionType"); - - switch (typeNum) { - case 0: - return this.constructSampled({ - xref, - isEvalSupported, - fn, - dict - }); - - case 1: - break; - - case 2: - return this.constructInterpolated({ - xref, - isEvalSupported, - dict - }); - - case 3: - return this.constructStiched({ - xref, - isEvalSupported, - dict - }); - - case 4: - return this.constructPostScript({ - xref, - isEvalSupported, - fn, - dict - }); - } - - throw new _util.FormatError("Unknown type of function"); - } - - static parseArray({ - xref, - isEvalSupported, - fnObj - }) { - if (!Array.isArray(fnObj)) { - return this.parse({ - xref, - isEvalSupported, - fn: fnObj - }); - } - - const fnArray = []; - - for (let j = 0, jj = fnObj.length; j < jj; j++) { - fnArray.push(this.parse({ - xref, - isEvalSupported, - fn: xref.fetchIfRef(fnObj[j]) - })); - } - - return function (src, srcOffset, dest, destOffset) { - for (let i = 0, ii = fnArray.length; i < ii; i++) { - fnArray[i](src, srcOffset, dest, destOffset + i); - } - }; - } - - static constructSampled({ - xref, - isEvalSupported, - fn, - dict - }) { - function toMultiArray(arr) { - const inputLength = arr.length; - const out = []; - let index = 0; - - for (let i = 0; i < inputLength; i += 2) { - out[index++] = [arr[i], arr[i + 1]]; - } - - return out; - } - - function interpolate(x, xmin, xmax, ymin, ymax) { - return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin)); - } - - let domain = toNumberArray(dict.getArray("Domain")); - let range = toNumberArray(dict.getArray("Range")); - - if (!domain || !range) { - throw new _util.FormatError("No domain or range"); - } - - const inputSize = domain.length / 2; - const outputSize = range.length / 2; - domain = toMultiArray(domain); - range = toMultiArray(range); - const size = toNumberArray(dict.getArray("Size")); - const bps = dict.get("BitsPerSample"); - const order = dict.get("Order") || 1; - - if (order !== 1) { - (0, _util.info)("No support for cubic spline interpolation: " + order); - } - - let encode = toNumberArray(dict.getArray("Encode")); - - if (!encode) { - encode = []; - - for (let i = 0; i < inputSize; ++i) { - encode.push([0, size[i] - 1]); - } - } else { - encode = toMultiArray(encode); - } - - let decode = toNumberArray(dict.getArray("Decode")); - - if (!decode) { - decode = range; - } else { - decode = toMultiArray(decode); - } - - const samples = this.getSampleArray(size, outputSize, bps, fn); - return function constructSampledFn(src, srcOffset, dest, destOffset) { - const cubeVertices = 1 << inputSize; - const cubeN = new Float64Array(cubeVertices); - const cubeVertex = new Uint32Array(cubeVertices); - let i, j; - - for (j = 0; j < cubeVertices; j++) { - cubeN[j] = 1; - } - - let k = outputSize, - pos = 1; - - for (i = 0; i < inputSize; ++i) { - const domain_2i = domain[i][0]; - const domain_2i_1 = domain[i][1]; - const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1); - let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]); - const size_i = size[i]; - e = Math.min(Math.max(e, 0), size_i - 1); - const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; - const n0 = e0 + 1 - e; - const n1 = e - e0; - const offset0 = e0 * k; - const offset1 = offset0 + k; - - for (j = 0; j < cubeVertices; j++) { - if (j & pos) { - cubeN[j] *= n1; - cubeVertex[j] += offset1; - } else { - cubeN[j] *= n0; - cubeVertex[j] += offset0; - } - } - - k *= size_i; - pos <<= 1; - } - - for (j = 0; j < outputSize; ++j) { - let rj = 0; - - for (i = 0; i < cubeVertices; i++) { - rj += samples[cubeVertex[i] + j] * cubeN[i]; - } - - rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); - dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]); - } - }; - } - - static constructInterpolated({ - xref, - isEvalSupported, - dict - }) { - const c0 = toNumberArray(dict.getArray("C0")) || [0]; - const c1 = toNumberArray(dict.getArray("C1")) || [1]; - const n = dict.get("N"); - const diff = []; - - for (let i = 0, ii = c0.length; i < ii; ++i) { - diff.push(c1[i] - c0[i]); - } - - const length = diff.length; - return function constructInterpolatedFn(src, srcOffset, dest, destOffset) { - const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n; - - for (let j = 0; j < length; ++j) { - dest[destOffset + j] = c0[j] + x * diff[j]; - } - }; - } - - static constructStiched({ - xref, - isEvalSupported, - dict - }) { - const domain = toNumberArray(dict.getArray("Domain")); - - if (!domain) { - throw new _util.FormatError("No domain"); - } - - const inputSize = domain.length / 2; - - if (inputSize !== 1) { - throw new _util.FormatError("Bad domain for stiched function"); - } - - const fnRefs = dict.get("Functions"); - const fns = []; - - for (let i = 0, ii = fnRefs.length; i < ii; ++i) { - fns.push(this.parse({ - xref, - isEvalSupported, - fn: xref.fetchIfRef(fnRefs[i]) - })); - } - - const bounds = toNumberArray(dict.getArray("Bounds")); - const encode = toNumberArray(dict.getArray("Encode")); - const tmpBuf = new Float32Array(1); - return function constructStichedFn(src, srcOffset, dest, destOffset) { - const clip = function constructStichedFromIRClip(v, min, max) { - if (v > max) { - v = max; - } else if (v < min) { - v = min; - } - - return v; - }; - - const v = clip(src[srcOffset], domain[0], domain[1]); - const length = bounds.length; - let i; - - for (i = 0; i < length; ++i) { - if (v < bounds[i]) { - break; - } - } - - let dmin = domain[0]; - - if (i > 0) { - dmin = bounds[i - 1]; - } - - let dmax = domain[1]; - - if (i < bounds.length) { - dmax = bounds[i]; - } - - const rmin = encode[2 * i]; - const rmax = encode[2 * i + 1]; - tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); - fns[i](tmpBuf, 0, dest, destOffset); - }; - } - - static constructPostScript({ - xref, - isEvalSupported, - fn, - dict - }) { - const domain = toNumberArray(dict.getArray("Domain")); - const range = toNumberArray(dict.getArray("Range")); - - if (!domain) { - throw new _util.FormatError("No domain."); - } - - if (!range) { - throw new _util.FormatError("No range."); - } - - const lexer = new _ps_parser.PostScriptLexer(fn); - const parser = new _ps_parser.PostScriptParser(lexer); - const code = parser.parse(); - - if (isEvalSupported && _util.FeatureTest.isEvalSupported) { - const compiled = new PostScriptCompiler().compile(code, domain, range); - - if (compiled) { - return new Function("src", "srcOffset", "dest", "destOffset", compiled); - } - } - - (0, _util.info)("Unable to compile PS function"); - const numOutputs = range.length >> 1; - const numInputs = domain.length >> 1; - const evaluator = new PostScriptEvaluator(code); - const cache = Object.create(null); - const MAX_CACHE_SIZE = 2048 * 4; - let cache_available = MAX_CACHE_SIZE; - const tmpBuf = new Float32Array(numInputs); - return function constructPostScriptFn(src, srcOffset, dest, destOffset) { - let i, value; - let key = ""; - const input = tmpBuf; - - for (i = 0; i < numInputs; i++) { - value = src[srcOffset + i]; - input[i] = value; - key += value + "_"; - } - - const cachedValue = cache[key]; - - if (cachedValue !== undefined) { - dest.set(cachedValue, destOffset); - return; - } - - const output = new Float32Array(numOutputs); - const stack = evaluator.execute(input); - const stackIndex = stack.length - numOutputs; - - for (i = 0; i < numOutputs; i++) { - value = stack[stackIndex + i]; - let bound = range[i * 2]; - - if (value < bound) { - value = bound; - } else { - bound = range[i * 2 + 1]; - - if (value > bound) { - value = bound; - } - } - - output[i] = value; - } - - if (cache_available > 0) { - cache_available--; - cache[key] = output; - } - - dest.set(output, destOffset); - }; - } - -} - -function isPDFFunction(v) { - let fnDict; - - if (typeof v !== "object") { - return false; - } else if (v instanceof _primitives.Dict) { - fnDict = v; - } else if (v instanceof _base_stream.BaseStream) { - fnDict = v.dict; - } else { - return false; - } - - return fnDict.has("FunctionType"); -} - -class PostScriptStack { - static get MAX_STACK_SIZE() { - return (0, _util.shadow)(this, "MAX_STACK_SIZE", 100); - } - - constructor(initialStack) { - this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0); - } - - push(value) { - if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) { - throw new Error("PostScript function stack overflow."); - } - - this.stack.push(value); - } - - pop() { - if (this.stack.length <= 0) { - throw new Error("PostScript function stack underflow."); - } - - return this.stack.pop(); - } - - copy(n) { - if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) { - throw new Error("PostScript function stack overflow."); - } - - const stack = this.stack; - - for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) { - stack.push(stack[i]); - } - } - - index(n) { - this.push(this.stack[this.stack.length - n - 1]); - } - - roll(n, p) { - const stack = this.stack; - const l = stack.length - n; - const r = stack.length - 1; - const c = l + (p - Math.floor(p / n) * n); - - for (let i = l, j = r; i < j; i++, j--) { - const t = stack[i]; - stack[i] = stack[j]; - stack[j] = t; - } - - for (let i = l, j = c - 1; i < j; i++, j--) { - const t = stack[i]; - stack[i] = stack[j]; - stack[j] = t; - } - - for (let i = c, j = r; i < j; i++, j--) { - const t = stack[i]; - stack[i] = stack[j]; - stack[j] = t; - } - } - -} - -class PostScriptEvaluator { - constructor(operators) { - this.operators = operators; - } - - execute(initialStack) { - const stack = new PostScriptStack(initialStack); - let counter = 0; - const operators = this.operators; - const length = operators.length; - let operator, a, b; - - while (counter < length) { - operator = operators[counter++]; - - if (typeof operator === "number") { - stack.push(operator); - continue; - } - - switch (operator) { - case "jz": - b = stack.pop(); - a = stack.pop(); - - if (!a) { - counter = b; - } - - break; - - case "j": - a = stack.pop(); - counter = a; - break; - - case "abs": - a = stack.pop(); - stack.push(Math.abs(a)); - break; - - case "add": - b = stack.pop(); - a = stack.pop(); - stack.push(a + b); - break; - - case "and": - b = stack.pop(); - a = stack.pop(); - - if (typeof a === "boolean" && typeof b === "boolean") { - stack.push(a && b); - } else { - stack.push(a & b); - } - - break; - - case "atan": - a = stack.pop(); - stack.push(Math.atan(a)); - break; - - case "bitshift": - b = stack.pop(); - a = stack.pop(); - - if (a > 0) { - stack.push(a << b); - } else { - stack.push(a >> b); - } - - break; - - case "ceiling": - a = stack.pop(); - stack.push(Math.ceil(a)); - break; - - case "copy": - a = stack.pop(); - stack.copy(a); - break; - - case "cos": - a = stack.pop(); - stack.push(Math.cos(a)); - break; - - case "cvi": - a = stack.pop() | 0; - stack.push(a); - break; - - case "cvr": - break; - - case "div": - b = stack.pop(); - a = stack.pop(); - stack.push(a / b); - break; - - case "dup": - stack.copy(1); - break; - - case "eq": - b = stack.pop(); - a = stack.pop(); - stack.push(a === b); - break; - - case "exch": - stack.roll(2, 1); - break; - - case "exp": - b = stack.pop(); - a = stack.pop(); - stack.push(a ** b); - break; - - case "false": - stack.push(false); - break; - - case "floor": - a = stack.pop(); - stack.push(Math.floor(a)); - break; - - case "ge": - b = stack.pop(); - a = stack.pop(); - stack.push(a >= b); - break; - - case "gt": - b = stack.pop(); - a = stack.pop(); - stack.push(a > b); - break; - - case "idiv": - b = stack.pop(); - a = stack.pop(); - stack.push(a / b | 0); - break; - - case "index": - a = stack.pop(); - stack.index(a); - break; - - case "le": - b = stack.pop(); - a = stack.pop(); - stack.push(a <= b); - break; - - case "ln": - a = stack.pop(); - stack.push(Math.log(a)); - break; - - case "log": - a = stack.pop(); - stack.push(Math.log(a) / Math.LN10); - break; - - case "lt": - b = stack.pop(); - a = stack.pop(); - stack.push(a < b); - break; - - case "mod": - b = stack.pop(); - a = stack.pop(); - stack.push(a % b); - break; - - case "mul": - b = stack.pop(); - a = stack.pop(); - stack.push(a * b); - break; - - case "ne": - b = stack.pop(); - a = stack.pop(); - stack.push(a !== b); - break; - - case "neg": - a = stack.pop(); - stack.push(-a); - break; - - case "not": - a = stack.pop(); - - if (typeof a === "boolean") { - stack.push(!a); - } else { - stack.push(~a); - } - - break; - - case "or": - b = stack.pop(); - a = stack.pop(); - - if (typeof a === "boolean" && typeof b === "boolean") { - stack.push(a || b); - } else { - stack.push(a | b); - } - - break; - - case "pop": - stack.pop(); - break; - - case "roll": - b = stack.pop(); - a = stack.pop(); - stack.roll(a, b); - break; - - case "round": - a = stack.pop(); - stack.push(Math.round(a)); - break; - - case "sin": - a = stack.pop(); - stack.push(Math.sin(a)); - break; - - case "sqrt": - a = stack.pop(); - stack.push(Math.sqrt(a)); - break; - - case "sub": - b = stack.pop(); - a = stack.pop(); - stack.push(a - b); - break; - - case "true": - stack.push(true); - break; - - case "truncate": - a = stack.pop(); - a = a < 0 ? Math.ceil(a) : Math.floor(a); - stack.push(a); - break; - - case "xor": - b = stack.pop(); - a = stack.pop(); - - if (typeof a === "boolean" && typeof b === "boolean") { - stack.push(a !== b); - } else { - stack.push(a ^ b); - } - - break; - - default: - throw new _util.FormatError(`Unknown operator ${operator}`); - } - } - - return stack.stack; - } - -} - -exports.PostScriptEvaluator = PostScriptEvaluator; - -const PostScriptCompiler = function PostScriptCompilerClosure() { - class AstNode { - constructor(type) { - this.type = type; - } - - visit(visitor) { - (0, _util.unreachable)("abstract method"); - } - - } - - class AstArgument extends AstNode { - constructor(index, min, max) { - super("args"); - this.index = index; - this.min = min; - this.max = max; - } - - visit(visitor) { - visitor.visitArgument(this); - } - - } - - class AstLiteral extends AstNode { - constructor(number) { - super("literal"); - this.number = number; - this.min = number; - this.max = number; - } - - visit(visitor) { - visitor.visitLiteral(this); - } - - } - - class AstBinaryOperation extends AstNode { - constructor(op, arg1, arg2, min, max) { - super("binary"); - this.op = op; - this.arg1 = arg1; - this.arg2 = arg2; - this.min = min; - this.max = max; - } - - visit(visitor) { - visitor.visitBinaryOperation(this); - } - - } - - class AstMin extends AstNode { - constructor(arg, max) { - super("max"); - this.arg = arg; - this.min = arg.min; - this.max = max; - } - - visit(visitor) { - visitor.visitMin(this); - } - - } - - class AstVariable extends AstNode { - constructor(index, min, max) { - super("var"); - this.index = index; - this.min = min; - this.max = max; - } - - visit(visitor) { - visitor.visitVariable(this); - } - - } - - class AstVariableDefinition extends AstNode { - constructor(variable, arg) { - super("definition"); - this.variable = variable; - this.arg = arg; - } - - visit(visitor) { - visitor.visitVariableDefinition(this); - } - - } - - class ExpressionBuilderVisitor { - constructor() { - this.parts = []; - } - - visitArgument(arg) { - this.parts.push("Math.max(", arg.min, ", Math.min(", arg.max, ", src[srcOffset + ", arg.index, "]))"); - } - - visitVariable(variable) { - this.parts.push("v", variable.index); - } - - visitLiteral(literal) { - this.parts.push(literal.number); - } - - visitBinaryOperation(operation) { - this.parts.push("("); - operation.arg1.visit(this); - this.parts.push(" ", operation.op, " "); - operation.arg2.visit(this); - this.parts.push(")"); - } - - visitVariableDefinition(definition) { - this.parts.push("var "); - definition.variable.visit(this); - this.parts.push(" = "); - definition.arg.visit(this); - this.parts.push(";"); - } - - visitMin(max) { - this.parts.push("Math.min("); - max.arg.visit(this); - this.parts.push(", ", max.max, ")"); - } - - toString() { - return this.parts.join(""); - } - - } - - function buildAddOperation(num1, num2) { - if (num2.type === "literal" && num2.number === 0) { - return num1; - } - - if (num1.type === "literal" && num1.number === 0) { - return num2; - } - - if (num2.type === "literal" && num1.type === "literal") { - return new AstLiteral(num1.number + num2.number); - } - - return new AstBinaryOperation("+", num1, num2, num1.min + num2.min, num1.max + num2.max); - } - - function buildMulOperation(num1, num2) { - if (num2.type === "literal") { - if (num2.number === 0) { - return new AstLiteral(0); - } else if (num2.number === 1) { - return num1; - } else if (num1.type === "literal") { - return new AstLiteral(num1.number * num2.number); - } - } - - if (num1.type === "literal") { - if (num1.number === 0) { - return new AstLiteral(0); - } else if (num1.number === 1) { - return num2; - } - } - - const min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); - const max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); - return new AstBinaryOperation("*", num1, num2, min, max); - } - - function buildSubOperation(num1, num2) { - if (num2.type === "literal") { - if (num2.number === 0) { - return num1; - } else if (num1.type === "literal") { - return new AstLiteral(num1.number - num2.number); - } - } - - if (num2.type === "binary" && num2.op === "-" && num1.type === "literal" && num1.number === 1 && num2.arg1.type === "literal" && num2.arg1.number === 1) { - return num2.arg2; - } - - return new AstBinaryOperation("-", num1, num2, num1.min - num2.max, num1.max - num2.min); - } - - function buildMinOperation(num1, max) { - if (num1.min >= max) { - return new AstLiteral(max); - } else if (num1.max <= max) { - return num1; - } - - return new AstMin(num1, max); - } - - class PostScriptCompiler { - compile(code, domain, range) { - const stack = []; - const instructions = []; - const inputSize = domain.length >> 1, - outputSize = range.length >> 1; - let lastRegister = 0; - let n, j; - let num1, num2, ast1, ast2, tmpVar, item; - - for (let i = 0; i < inputSize; i++) { - stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); - } - - for (let i = 0, ii = code.length; i < ii; i++) { - item = code[i]; - - if (typeof item === "number") { - stack.push(new AstLiteral(item)); - continue; - } - - switch (item) { - case "add": - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildAddOperation(num1, num2)); - break; - - case "cvr": - if (stack.length < 1) { - return null; - } - - break; - - case "mul": - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildMulOperation(num1, num2)); - break; - - case "sub": - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - stack.push(buildSubOperation(num1, num2)); - break; - - case "exch": - if (stack.length < 2) { - return null; - } - - ast1 = stack.pop(); - ast2 = stack.pop(); - stack.push(ast1, ast2); - break; - - case "pop": - if (stack.length < 1) { - return null; - } - - stack.pop(); - break; - - case "index": - if (stack.length < 1) { - return null; - } - - num1 = stack.pop(); - - if (num1.type !== "literal") { - return null; - } - - n = num1.number; - - if (n < 0 || !Number.isInteger(n) || stack.length < n) { - return null; - } - - ast1 = stack[stack.length - n - 1]; - - if (ast1.type === "literal" || ast1.type === "var") { - stack.push(ast1); - break; - } - - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - n - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - - case "dup": - if (stack.length < 1) { - return null; - } - - if (typeof code[i + 1] === "number" && code[i + 2] === "gt" && code[i + 3] === i + 7 && code[i + 4] === "jz" && code[i + 5] === "pop" && code[i + 6] === code[i + 1]) { - num1 = stack.pop(); - stack.push(buildMinOperation(num1, code[i + 1])); - i += 6; - break; - } - - ast1 = stack[stack.length - 1]; - - if (ast1.type === "literal" || ast1.type === "var") { - stack.push(ast1); - break; - } - - tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); - stack[stack.length - 1] = tmpVar; - stack.push(tmpVar); - instructions.push(new AstVariableDefinition(tmpVar, ast1)); - break; - - case "roll": - if (stack.length < 2) { - return null; - } - - num2 = stack.pop(); - num1 = stack.pop(); - - if (num2.type !== "literal" || num1.type !== "literal") { - return null; - } - - j = num2.number; - n = num1.number; - - if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) { - return null; - } - - j = (j % n + n) % n; - - if (j === 0) { - break; - } - - Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j)); - break; - - default: - return null; - } - } - - if (stack.length !== outputSize) { - return null; - } - - const result = []; - - for (const instruction of instructions) { - const statementBuilder = new ExpressionBuilderVisitor(); - instruction.visit(statementBuilder); - result.push(statementBuilder.toString()); - } - - for (let i = 0, ii = stack.length; i < ii; i++) { - const expr = stack[i], - statementBuilder = new ExpressionBuilderVisitor(); - expr.visit(statementBuilder); - const min = range[i * 2], - max = range[i * 2 + 1]; - const out = [statementBuilder.toString()]; - - if (min > expr.min) { - out.unshift("Math.max(", min, ", "); - out.push(")"); - } - - if (max < expr.max) { - out.unshift("Math.min(", max, ", "); - out.push(")"); - } - - out.unshift("dest[destOffset + ", i, "] = "); - out.push(";"); - result.push(out.join("")); - } - - return result.join("\n"); - } - - } - - return PostScriptCompiler; -}(); - -exports.PostScriptCompiler = PostScriptCompiler; - -/***/ }), -/* 58 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PostScriptParser = exports.PostScriptLexer = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _core_utils = __w_pdfjs_require__(8); - -class PostScriptParser { - constructor(lexer) { - this.lexer = lexer; - this.operators = []; - this.token = null; - this.prev = null; - } - - nextToken() { - this.prev = this.token; - this.token = this.lexer.getToken(); - } - - accept(type) { - if (this.token.type === type) { - this.nextToken(); - return true; - } - - return false; - } - - expect(type) { - if (this.accept(type)) { - return true; - } - - throw new _util.FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`); - } - - parse() { - this.nextToken(); - this.expect(PostScriptTokenTypes.LBRACE); - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - return this.operators; - } - - parseBlock() { - while (true) { - if (this.accept(PostScriptTokenTypes.NUMBER)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { - this.operators.push(this.prev.value); - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - this.parseCondition(); - } else { - return; - } - } - } - - parseCondition() { - const conditionLocation = this.operators.length; - this.operators.push(null, null); - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - - if (this.accept(PostScriptTokenTypes.IF)) { - this.operators[conditionLocation] = this.operators.length; - this.operators[conditionLocation + 1] = "jz"; - } else if (this.accept(PostScriptTokenTypes.LBRACE)) { - const jumpLocation = this.operators.length; - this.operators.push(null, null); - const endOfTrue = this.operators.length; - this.parseBlock(); - this.expect(PostScriptTokenTypes.RBRACE); - this.expect(PostScriptTokenTypes.IFELSE); - this.operators[jumpLocation] = this.operators.length; - this.operators[jumpLocation + 1] = "j"; - this.operators[conditionLocation] = endOfTrue; - this.operators[conditionLocation + 1] = "jz"; - } else { - throw new _util.FormatError("PS Function: error parsing conditional."); - } - } - -} - -exports.PostScriptParser = PostScriptParser; -const PostScriptTokenTypes = { - LBRACE: 0, - RBRACE: 1, - NUMBER: 2, - OPERATOR: 3, - IF: 4, - IFELSE: 5 -}; - -class PostScriptToken { - static get opCache() { - return (0, _util.shadow)(this, "opCache", Object.create(null)); - } - - constructor(type, value) { - this.type = type; - this.value = value; - } - - static getOperator(op) { - const opValue = PostScriptToken.opCache[op]; - - if (opValue) { - return opValue; - } - - return PostScriptToken.opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); - } - - static get LBRACE() { - return (0, _util.shadow)(this, "LBRACE", new PostScriptToken(PostScriptTokenTypes.LBRACE, "{")); - } - - static get RBRACE() { - return (0, _util.shadow)(this, "RBRACE", new PostScriptToken(PostScriptTokenTypes.RBRACE, "}")); - } - - static get IF() { - return (0, _util.shadow)(this, "IF", new PostScriptToken(PostScriptTokenTypes.IF, "IF")); - } - - static get IFELSE() { - return (0, _util.shadow)(this, "IFELSE", new PostScriptToken(PostScriptTokenTypes.IFELSE, "IFELSE")); - } - -} - -class PostScriptLexer { - constructor(stream) { - this.stream = stream; - this.nextChar(); - this.strBuf = []; - } - - nextChar() { - return this.currentChar = this.stream.getByte(); - } - - getToken() { - let comment = false; - let ch = this.currentChar; - - while (true) { - if (ch < 0) { - return _primitives.EOF; - } - - if (comment) { - if (ch === 0x0a || ch === 0x0d) { - comment = false; - } - } else if (ch === 0x25) { - comment = true; - } else if (!(0, _core_utils.isWhiteSpace)(ch)) { - break; - } - - ch = this.nextChar(); - } - - switch (ch | 0) { - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x2b: - case 0x2d: - case 0x2e: - return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber()); - - case 0x7b: - this.nextChar(); - return PostScriptToken.LBRACE; - - case 0x7d: - this.nextChar(); - return PostScriptToken.RBRACE; - } - - const strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) { - strBuf.push(String.fromCharCode(ch)); - } - - const str = strBuf.join(""); - - switch (str.toLowerCase()) { - case "if": - return PostScriptToken.IF; - - case "ifelse": - return PostScriptToken.IFELSE; - - default: - return PostScriptToken.getOperator(str); - } - } - - getNumber() { - let ch = this.currentChar; - const strBuf = this.strBuf; - strBuf.length = 0; - strBuf[0] = String.fromCharCode(ch); - - while ((ch = this.nextChar()) >= 0) { - if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) { - strBuf.push(String.fromCharCode(ch)); - } else { - break; - } - } - - const value = parseFloat(strBuf.join("")); - - if (isNaN(value)) { - throw new _util.FormatError(`Invalid floating point number: ${value}`); - } - - return value; - } - -} - -exports.PostScriptLexer = PostScriptLexer; - -/***/ }), -/* 59 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.LocalTilingPatternCache = exports.LocalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.GlobalImageCache = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -class BaseLocalCache { - constructor(options) { - if (this.constructor === BaseLocalCache) { - (0, _util.unreachable)("Cannot initialize BaseLocalCache."); - } - - this._onlyRefs = (options && options.onlyRefs) === true; - - if (!this._onlyRefs) { - this._nameRefMap = new Map(); - this._imageMap = new Map(); - } - - this._imageCache = new _primitives.RefSetCache(); - } - - getByName(name) { - if (this._onlyRefs) { - (0, _util.unreachable)("Should not call `getByName` method."); - } - - const ref = this._nameRefMap.get(name); - - if (ref) { - return this.getByRef(ref); - } - - return this._imageMap.get(name) || null; - } - - getByRef(ref) { - return this._imageCache.get(ref) || null; - } - - set(name, ref, data) { - (0, _util.unreachable)("Abstract method `set` called."); - } - -} - -class LocalImageCache extends BaseLocalCache { - set(name, ref = null, data) { - if (typeof name !== "string") { - throw new Error('LocalImageCache.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.LocalImageCache = LocalImageCache; - -class LocalColorSpaceCache extends BaseLocalCache { - set(name = null, ref = null, data) { - if (typeof name !== "string" && !ref) { - throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.'); - } - - if (ref) { - if (this._imageCache.has(ref)) { - return; - } - - if (name !== null) { - this._nameRefMap.set(name, ref); - } - - this._imageCache.put(ref, data); - - return; - } - - if (this._imageMap.has(name)) { - return; - } - - this._imageMap.set(name, data); - } - -} - -exports.LocalColorSpaceCache = LocalColorSpaceCache; - -class LocalFunctionCache extends BaseLocalCache { - constructor(options) { - super({ - onlyRefs: true - }); - } - - set(name = null, ref, data) { - if (!ref) { - throw new Error('LocalFunctionCache.set - expected "ref" argument.'); - } - - if (this._imageCache.has(ref)) { - return; - } - - this._imageCache.put(ref, data); - } - -} - -exports.LocalFunctionCache = LocalFunctionCache; - -class LocalGStateCache extends BaseLocalCache { - set(name, ref = null, data) { - if (typeof name !== "string") { - throw new Error('LocalGStateCache.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.LocalGStateCache = LocalGStateCache; - -class LocalTilingPatternCache extends BaseLocalCache { - constructor(options) { - super({ - onlyRefs: true - }); - } - - set(name = null, ref, data) { - if (!ref) { - throw new Error('LocalTilingPatternCache.set - expected "ref" argument.'); - } - - if (this._imageCache.has(ref)) { - return; - } - - this._imageCache.put(ref, data); - } - -} - -exports.LocalTilingPatternCache = LocalTilingPatternCache; - -class GlobalImageCache { - static get NUM_PAGES_THRESHOLD() { - return (0, _util.shadow)(this, "NUM_PAGES_THRESHOLD", 2); - } - - static get MIN_IMAGES_TO_CACHE() { - return (0, _util.shadow)(this, "MIN_IMAGES_TO_CACHE", 10); - } - - static get MAX_BYTE_SIZE() { - return (0, _util.shadow)(this, "MAX_BYTE_SIZE", 40e6); - } - - constructor() { - this._refCache = new _primitives.RefSetCache(); - this._imageCache = new _primitives.RefSetCache(); - } - - get _byteSize() { - let byteSize = 0; - - for (const imageData of this._imageCache) { - byteSize += imageData.byteSize; - } - - return byteSize; - } - - get _cacheLimitReached() { - if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) { - return false; - } - - if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) { - return false; - } - - return true; - } - - shouldCache(ref, pageIndex) { - const pageIndexSet = this._refCache.get(ref); - - const numPages = pageIndexSet ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1) : 1; - - if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) { - return false; - } - - if (!this._imageCache.has(ref) && this._cacheLimitReached) { - return false; - } - - return true; - } - - addPageIndex(ref, pageIndex) { - let pageIndexSet = this._refCache.get(ref); - - if (!pageIndexSet) { - pageIndexSet = new Set(); - - this._refCache.put(ref, pageIndexSet); - } - - pageIndexSet.add(pageIndex); - } - - addByteSize(ref, byteSize) { - const imageData = this._imageCache.get(ref); - - if (!imageData) { - return; - } - - if (imageData.byteSize) { - return; - } - - imageData.byteSize = byteSize; - } - - getData(ref, pageIndex) { - const pageIndexSet = this._refCache.get(ref); - - if (!pageIndexSet) { - return null; - } - - if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { - return null; - } - - const imageData = this._imageCache.get(ref); - - if (!imageData) { - return null; - } - - pageIndexSet.add(pageIndex); - return imageData; - } - - setData(ref, data) { - if (!this._refCache.has(ref)) { - throw new Error('GlobalImageCache.setData - expected "addPageIndex" to have been called.'); - } - - if (this._imageCache.has(ref)) { - return; - } - - if (this._cacheLimitReached) { - (0, _util.warn)("GlobalImageCache.setData - cache limit reached."); - return; - } - - this._imageCache.put(ref, data); - } - - clear(onlyData = false) { - if (!onlyData) { - this._refCache.clear(); - } - - this._imageCache.clear(); - } - -} - -exports.GlobalImageCache = GlobalImageCache; - -/***/ }), -/* 60 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.bidi = bidi; - -var _util = __w_pdfjs_require__(2); - -const baseTypes = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "ON", "ON", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "ON", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "ON", "ET", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "L", "ON", "ON", "BN", "ON", "ON", "ET", "ET", "EN", "EN", "ON", "L", "ON", "ON", "ON", "EN", "L", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L"]; -const arabicTypes = ["AN", "AN", "AN", "AN", "AN", "AN", "ON", "ON", "AL", "ET", "ET", "AL", "CS", "AL", "ON", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "ON", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL"]; - -function isOdd(i) { - return (i & 1) !== 0; -} - -function isEven(i) { - return (i & 1) === 0; -} - -function findUnequal(arr, start, value) { - let j, jj; - - for (j = start, jj = arr.length; j < jj; ++j) { - if (arr[j] !== value) { - return j; - } - } - - return j; -} - -function setValues(arr, start, end, value) { - for (let j = start; j < end; ++j) { - arr[j] = value; - } -} - -function reverseValues(arr, start, end) { - for (let i = start, j = end - 1; i < j; ++i, --j) { - const temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - } -} - -function createBidiText(str, isLTR, vertical = false) { - let dir = "ltr"; - - if (vertical) { - dir = "ttb"; - } else if (!isLTR) { - dir = "rtl"; - } - - return { - str, - dir - }; -} - -const chars = []; -const types = []; - -function bidi(str, startLevel = -1, vertical = false) { - let isLTR = true; - const strLength = str.length; - - if (strLength === 0 || vertical) { - return createBidiText(str, isLTR, vertical); - } - - chars.length = strLength; - types.length = strLength; - let numBidi = 0; - let i, ii; - - for (i = 0; i < strLength; ++i) { - chars[i] = str.charAt(i); - const charCode = str.charCodeAt(i); - let charType = "L"; - - if (charCode <= 0x00ff) { - charType = baseTypes[charCode]; - } else if (0x0590 <= charCode && charCode <= 0x05f4) { - charType = "R"; - } else if (0x0600 <= charCode && charCode <= 0x06ff) { - charType = arabicTypes[charCode & 0xff]; - - if (!charType) { - (0, _util.warn)("Bidi: invalid Unicode character " + charCode.toString(16)); - } - } else if (0x0700 <= charCode && charCode <= 0x08ac) { - charType = "AL"; - } - - if (charType === "R" || charType === "AL" || charType === "AN") { - numBidi++; - } - - types[i] = charType; - } - - if (numBidi === 0) { - isLTR = true; - return createBidiText(str, isLTR); - } - - if (startLevel === -1) { - if (numBidi / strLength < 0.3 && strLength > 4) { - isLTR = true; - startLevel = 0; - } else { - isLTR = false; - startLevel = 1; - } - } - - const levels = []; - - for (i = 0; i < strLength; ++i) { - levels[i] = startLevel; - } - - const e = isOdd(startLevel) ? "R" : "L"; - const sor = e; - const eor = sor; - let lastType = sor; - - for (i = 0; i < strLength; ++i) { - if (types[i] === "NSM") { - types[i] = lastType; - } else { - lastType = types[i]; - } - } - - lastType = sor; - let t; - - for (i = 0; i < strLength; ++i) { - t = types[i]; - - if (t === "EN") { - types[i] = lastType === "AL" ? "AN" : "EN"; - } else if (t === "R" || t === "L" || t === "AL") { - lastType = t; - } - } - - for (i = 0; i < strLength; ++i) { - t = types[i]; - - if (t === "AL") { - types[i] = "R"; - } - } - - for (i = 1; i < strLength - 1; ++i) { - if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") { - types[i] = "EN"; - } - - if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) { - types[i] = types[i - 1]; - } - } - - for (i = 0; i < strLength; ++i) { - if (types[i] === "EN") { - for (let j = i - 1; j >= 0; --j) { - if (types[j] !== "ET") { - break; - } - - types[j] = "EN"; - } - - for (let j = i + 1; j < strLength; ++j) { - if (types[j] !== "ET") { - break; - } - - types[j] = "EN"; - } - } - } - - for (i = 0; i < strLength; ++i) { - t = types[i]; - - if (t === "WS" || t === "ES" || t === "ET" || t === "CS") { - types[i] = "ON"; - } - } - - lastType = sor; - - for (i = 0; i < strLength; ++i) { - t = types[i]; - - if (t === "EN") { - types[i] = lastType === "L" ? "L" : "EN"; - } else if (t === "R" || t === "L") { - lastType = t; - } - } - - for (i = 0; i < strLength; ++i) { - if (types[i] === "ON") { - const end = findUnequal(types, i + 1, "ON"); - let before = sor; - - if (i > 0) { - before = types[i - 1]; - } - - let after = eor; - - if (end + 1 < strLength) { - after = types[end + 1]; - } - - if (before !== "L") { - before = "R"; - } - - if (after !== "L") { - after = "R"; - } - - if (before === after) { - setValues(types, i, end, before); - } - - i = end - 1; - } - } - - for (i = 0; i < strLength; ++i) { - if (types[i] === "ON") { - types[i] = e; - } - } - - for (i = 0; i < strLength; ++i) { - t = types[i]; - - if (isEven(levels[i])) { - if (t === "R") { - levels[i] += 1; - } else if (t === "AN" || t === "EN") { - levels[i] += 2; - } - } else { - if (t === "L" || t === "AN" || t === "EN") { - levels[i] += 1; - } - } - } - - let highestLevel = -1; - let lowestOddLevel = 99; - let level; - - for (i = 0, ii = levels.length; i < ii; ++i) { - level = levels[i]; - - if (highestLevel < level) { - highestLevel = level; - } - - if (lowestOddLevel > level && isOdd(level)) { - lowestOddLevel = level; - } - } - - for (level = highestLevel; level >= lowestOddLevel; --level) { - let start = -1; - - for (i = 0, ii = levels.length; i < ii; ++i) { - if (levels[i] < level) { - if (start >= 0) { - reverseValues(chars, start, i); - start = -1; - } - } else if (start < 0) { - start = i; - } - } - - if (start >= 0) { - reverseValues(chars, start, levels.length); - } - } - - for (i = 0, ii = chars.length; i < ii; ++i) { - const ch = chars[i]; - - if (ch === "<" || ch === ">") { - chars[i] = ""; - } - } - - return createBidiText(chars.join(""), isLTR); -} - -/***/ }), -/* 61 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MurmurHash3_64 = void 0; - -var _util = __w_pdfjs_require__(2); - -const SEED = 0xc3d2e1f0; -const MASK_HIGH = 0xffff0000; -const MASK_LOW = 0xffff; - -class MurmurHash3_64 { - constructor(seed) { - this.h1 = seed ? seed & 0xffffffff : SEED; - this.h2 = seed ? seed & 0xffffffff : SEED; - } - - update(input) { - let data, length; - - if (typeof input === "string") { - data = new Uint8Array(input.length * 2); - length = 0; - - for (let i = 0, ii = input.length; i < ii; i++) { - const code = input.charCodeAt(i); - - if (code <= 0xff) { - data[length++] = code; - } else { - data[length++] = code >>> 8; - data[length++] = code & 0xff; - } - } - } else if ((0, _util.isArrayBuffer)(input)) { - data = input.slice(); - length = data.byteLength; - } else { - throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); - } - - const blockCounts = length >> 2; - const tailLength = length - blockCounts * 4; - const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); - let k1 = 0, - k2 = 0; - let h1 = this.h1, - h2 = this.h2; - const C1 = 0xcc9e2d51, - C2 = 0x1b873593; - const C1_LOW = C1 & MASK_LOW, - C2_LOW = C2 & MASK_LOW; - - for (let i = 0; i < blockCounts; i++) { - if (i & 1) { - k1 = dataUint32[i]; - k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; - k1 = k1 << 15 | k1 >>> 17; - k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; - h1 ^= k1; - h1 = h1 << 13 | h1 >>> 19; - h1 = h1 * 5 + 0xe6546b64; - } else { - k2 = dataUint32[i]; - k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; - k2 = k2 << 15 | k2 >>> 17; - k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; - h2 ^= k2; - h2 = h2 << 13 | h2 >>> 19; - h2 = h2 * 5 + 0xe6546b64; - } - } - - k1 = 0; - - switch (tailLength) { - case 3: - k1 ^= data[blockCounts * 4 + 2] << 16; - - case 2: - k1 ^= data[blockCounts * 4 + 1] << 8; - - case 1: - k1 ^= data[blockCounts * 4]; - k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; - k1 = k1 << 15 | k1 >>> 17; - k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; - - if (blockCounts & 1) { - h1 ^= k1; - } else { - h2 ^= k1; - } - - } - - this.h1 = h1; - this.h2 = h2; - } - - hexdigest() { - let h1 = this.h1, - h2 = this.h2; - h1 ^= h2 >>> 1; - h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; - h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; - h1 ^= h2 >>> 1; - h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; - h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; - h1 ^= h2 >>> 1; - const hex1 = (h1 >>> 0).toString(16), - hex2 = (h2 >>> 0).toString(16); - return hex1.padStart(8, "0") + hex2.padStart(8, "0"); - } - -} - -exports.MurmurHash3_64 = MurmurHash3_64; - -/***/ }), -/* 62 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.OperatorList = void 0; - -var _util = __w_pdfjs_require__(2); - -function addState(parentState, pattern, checkFn, iterateFn, processFn) { - let state = parentState; - - for (let i = 0, ii = pattern.length - 1; i < ii; i++) { - const item = pattern[i]; - state = state[item] || (state[item] = []); - } - - state[pattern[pattern.length - 1]] = { - checkFn, - iterateFn, - processFn - }; -} - -const InitialState = []; -addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) { - const fnArray = context.fnArray; - const iFirstSave = context.iCurr - 3; - const 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) { - const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; - const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; - const MAX_WIDTH = 1000; - const IMAGE_PADDING = 1; - const fnArray = context.fnArray, - argsArray = context.argsArray; - const curr = context.iCurr; - const iFirstSave = curr - 3; - const iFirstTransform = curr - 2; - const iFirstPIIXO = curr - 1; - const 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; - } - - let maxX = 0; - const map = []; - let maxLineHeight = 0; - let currentX = IMAGE_PADDING, - currentY = IMAGE_PADDING; - - for (let q = 0; q < count; q++) { - const transform = argsArray[iFirstTransform + (q << 2)]; - const 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); - } - - const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; - const imgHeight = currentY + maxLineHeight + IMAGE_PADDING; - const imgData = new Uint8Array(imgWidth * imgHeight * 4); - const imgRowSize = imgWidth << 2; - - for (let q = 0; q < count; q++) { - const data = argsArray[iFirstPIIXO + (q << 2)][0].data; - const rowSize = map[q].w << 2; - let dataOffset = 0; - let offset = map[q].x + map[q].y * imgWidth << 2; - imgData.set(data.subarray(0, rowSize), offset - imgRowSize); - - for (let 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) { - const fnArray = context.fnArray; - const iFirstSave = context.iCurr - 3; - const 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) { - const MIN_IMAGES_IN_MASKS_BLOCK = 10; - const MAX_IMAGES_IN_MASKS_BLOCK = 100; - const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; - const fnArray = context.fnArray, - argsArray = context.argsArray; - const curr = context.iCurr; - const iFirstSave = curr - 3; - const iFirstTransform = curr - 2; - const iFirstPIMXO = curr - 1; - let count = Math.floor((i - iFirstSave) / 4); - - if (count < MIN_IMAGES_IN_MASKS_BLOCK) { - return i - (i - iFirstSave) % 4; - } - - let isSameImage = false; - let iTransform, transformArgs; - const 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; - let iPIMXO = iFirstPIMXO + 4; - - for (let 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); - const positions = new Float32Array(count * 2); - iTransform = iFirstTransform; - - for (let 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); - const images = []; - - for (let q = 0; q < count; q++) { - transformArgs = argsArray[iFirstTransform + (q << 2)]; - const maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; - images.push({ - data: maskParams.data, - width: maskParams.width, - height: maskParams.height, - interpolate: maskParams.interpolate, - count: maskParams.count, - 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) { - const argsArray = context.argsArray; - const iFirstTransform = context.iCurr - 2; - return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0; -}, function iterateImageGroup(context, i) { - const fnArray = context.fnArray, - argsArray = context.argsArray; - const iFirstSave = context.iCurr - 3; - const pos = (i - iFirstSave) % 4; - - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.save; - - case 1: - if (fnArray[i] !== _util.OPS.transform) { - return false; - } - - const iFirstTransform = context.iCurr - 2; - const firstTransformArg0 = argsArray[iFirstTransform][0]; - const 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; - } - - const iFirstPIXO = context.iCurr - 1; - const 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) { - const MIN_IMAGES_IN_BLOCK = 3; - const MAX_IMAGES_IN_BLOCK = 1000; - const fnArray = context.fnArray, - argsArray = context.argsArray; - const curr = context.iCurr; - const iFirstSave = curr - 3; - const iFirstTransform = curr - 2; - const iFirstPIXO = curr - 1; - const firstPIXOArg0 = argsArray[iFirstPIXO][0]; - const firstTransformArg0 = argsArray[iFirstTransform][0]; - const firstTransformArg3 = argsArray[iFirstTransform][3]; - const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK); - - if (count < MIN_IMAGES_IN_BLOCK) { - return i - (i - iFirstSave) % 4; - } - - const positions = new Float32Array(count * 2); - let iTransform = iFirstTransform; - - for (let q = 0; q < count; q++, iTransform += 4) { - const transformArgs = argsArray[iTransform]; - positions[q << 1] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - const 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) { - const fnArray = context.fnArray, - argsArray = context.argsArray; - const iFirstSave = context.iCurr - 4; - const 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; - } - - const iFirstSetFont = context.iCurr - 3; - const firstSetFontArg0 = argsArray[iFirstSetFont][0]; - const 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) { - const MIN_CHARS_IN_BLOCK = 3; - const MAX_CHARS_IN_BLOCK = 1000; - const fnArray = context.fnArray, - argsArray = context.argsArray; - const curr = context.iCurr; - const iFirstBeginText = curr - 4; - const iFirstSetFont = curr - 3; - const iFirstSetTextMatrix = curr - 2; - const iFirstShowText = curr - 1; - const iFirstEndText = curr; - const firstSetFontArg0 = argsArray[iFirstSetFont][0]; - const firstSetFontArg1 = argsArray[iFirstSetFont][1]; - let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); - - if (count < MIN_CHARS_IN_BLOCK) { - return i - (i - iFirstBeginText) % 5; - } - - let 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; - } - - let iEndText = iFirst + 4; - - for (let q = 1; q < count; q++) { - fnArray.splice(iEndText, 3); - argsArray.splice(iEndText, 3); - iEndText += 2; - } - - return iEndText + 1; -}); - -class NullOptimizer { - constructor(queue) { - this.queue = queue; - } - - _optimize() {} - - push(fn, args) { - this.queue.fnArray.push(fn); - this.queue.argsArray.push(args); - - this._optimize(); - } - - flush() {} - - reset() {} - -} - -class QueueOptimizer extends NullOptimizer { - constructor(queue) { - super(queue); - this.state = null; - this.context = { - iCurr: 0, - fnArray: queue.fnArray, - argsArray: queue.argsArray - }; - this.match = null; - this.lastProcessed = 0; - } - - _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; - } - - 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; - } - -} - -class OperatorList { - static get CHUNK_SIZE() { - return (0, _util.shadow)(this, "CHUNK_SIZE", 1000); - } - - static get CHUNK_SIZE_ABOUT() { - return (0, _util.shadow)(this, "CHUNK_SIZE_ABOUT", this.CHUNK_SIZE - 5); - } - - constructor(intent = 0, streamSink) { - this._streamSink = streamSink; - this.fnArray = []; - this.argsArray = []; - - if (streamSink && !(intent & _util.RenderingIntentFlag.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(); - } - - 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 >= OperatorList.CHUNK_SIZE) { - this.flush(); - } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) { - this.flush(); - } - } - } - - addImageOps(fn, args, optionalContent) { - if (optionalContent !== undefined) { - this.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); - } - - this.addOp(fn, args); - - if (optionalContent !== undefined) { - this.addOp(_util.OPS.endMarkedContent, []); - } - } - - 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 (let 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 && arg.data && arg.data.buffer instanceof ArrayBuffer) { - 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(); - } - -} - -exports.OperatorList = OperatorList; - -/***/ }), -/* 63 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFImage = void 0; - -var _util = __w_pdfjs_require__(2); - -var _image_utils = __w_pdfjs_require__(64); - -var _base_stream = __w_pdfjs_require__(9); - -var _colorspace = __w_pdfjs_require__(24); - -var _decode_stream = __w_pdfjs_require__(29); - -var _jpeg_stream = __w_pdfjs_require__(37); - -var _jpx = __w_pdfjs_require__(40); - -var _primitives = __w_pdfjs_require__(5); - -function decodeAndClamp(value, addend, coefficient, max) { - value = addend + value * coefficient; - - if (value < 0) { - value = 0; - } else if (value > max) { - value = max; - } - - return value; -} - -function resizeImageMask(src, bpc, w1, h1, w2, h2) { - const length = w2 * h2; - let dest; - - if (bpc <= 8) { - dest = new Uint8Array(length); - } else if (bpc <= 16) { - dest = new Uint16Array(length); - } else { - dest = new Uint32Array(length); - } - - const xRatio = w1 / w2; - const yRatio = h1 / h2; - let i, - j, - py, - newIndex = 0, - oldIndex; - const xScaled = new Uint16Array(w2); - const w1Scanline = w1; - - for (i = 0; i < w2; i++) { - xScaled[i] = Math.floor(i * xRatio); - } - - for (i = 0; i < h2; i++) { - py = Math.floor(i * yRatio) * w1Scanline; - - for (j = 0; j < w2; j++) { - oldIndex = py + xScaled[j]; - dest[newIndex++] = src[oldIndex]; - } - } - - return dest; -} - -class PDFImage { - constructor({ - xref, - res, - image, - isInline = false, - smask = null, - mask = null, - isMask = false, - pdfFunctionFactory, - localColorSpaceCache - }) { - this.image = image; - const dict = image.dict; - const filter = dict.get("F", "Filter"); - - if (filter instanceof _primitives.Name) { - switch (filter.name) { - case "JPXDecode": - const jpxImage = new _jpx.JpxImage(); - jpxImage.parseImageProperties(image.stream); - image.stream.reset(); - image.width = jpxImage.width; - image.height = jpxImage.height; - image.bitsPerComponent = jpxImage.bitsPerComponent; - image.numComps = jpxImage.componentsCount; - break; - - case "JBIG2Decode": - image.bitsPerComponent = 1; - image.numComps = 1; - break; - } - } - - let width = dict.get("W", "Width"); - let height = dict.get("H", "Height"); - - if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) { - (0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image dictionary."); - width = image.width; - height = image.height; - } - - if (width < 1 || height < 1) { - throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`); - } - - this.width = width; - this.height = height; - this.interpolate = dict.get("I", "Interpolate"); - this.imageMask = dict.get("IM", "ImageMask") || false; - this.matte = dict.get("Matte") || false; - let bitsPerComponent = image.bitsPerComponent; - - if (!bitsPerComponent) { - bitsPerComponent = dict.get("BPC", "BitsPerComponent"); - - if (!bitsPerComponent) { - if (this.imageMask) { - bitsPerComponent = 1; - } else { - throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`); - } - } - } - - this.bpc = bitsPerComponent; - - if (!this.imageMask) { - let colorSpace = dict.getRaw("CS") || dict.getRaw("ColorSpace"); - - if (!colorSpace) { - (0, _util.info)("JPX images (which do not require color spaces)"); - - switch (image.numComps) { - case 1: - colorSpace = _primitives.Name.get("DeviceGray"); - break; - - case 3: - colorSpace = _primitives.Name.get("DeviceRGB"); - break; - - case 4: - colorSpace = _primitives.Name.get("DeviceCMYK"); - break; - - default: - throw new Error(`JPX images with ${image.numComps} color components not supported.`); - } - } - - this.colorSpace = _colorspace.ColorSpace.parse({ - cs: colorSpace, - xref, - resources: isInline ? res : null, - pdfFunctionFactory, - localColorSpaceCache - }); - this.numComps = this.colorSpace.numComps; - } - - this.decode = dict.getArray("D", "Decode"); - this.needsDecode = false; - - if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) { - this.needsDecode = true; - const max = (1 << bitsPerComponent) - 1; - this.decodeCoefficients = []; - this.decodeAddends = []; - const isIndexed = this.colorSpace && this.colorSpace.name === "Indexed"; - - for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) { - const dmin = this.decode[i]; - const dmax = this.decode[i + 1]; - this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin; - this.decodeAddends[j] = isIndexed ? dmin : max * dmin; - } - } - - if (smask) { - this.smask = new PDFImage({ - xref, - res, - image: smask, - isInline, - pdfFunctionFactory, - localColorSpaceCache - }); - } else if (mask) { - if (mask instanceof _base_stream.BaseStream) { - const maskDict = mask.dict, - imageMask = maskDict.get("IM", "ImageMask"); - - if (!imageMask) { - (0, _util.warn)("Ignoring /Mask in image without /ImageMask."); - } else { - this.mask = new PDFImage({ - xref, - res, - image: mask, - isInline, - isMask: true, - pdfFunctionFactory, - localColorSpaceCache - }); - } - } else { - this.mask = mask; - } - } - } - - static async buildImage({ - xref, - res, - image, - isInline = false, - pdfFunctionFactory, - localColorSpaceCache - }) { - const imageData = image; - let smaskData = null; - let maskData = null; - const smask = image.dict.get("SMask"); - const mask = image.dict.get("Mask"); - - if (smask) { - if (smask instanceof _base_stream.BaseStream) { - smaskData = smask; - } else { - (0, _util.warn)("Unsupported /SMask format."); - } - } else if (mask) { - if (mask instanceof _base_stream.BaseStream || Array.isArray(mask)) { - maskData = mask; - } else { - (0, _util.warn)("Unsupported /Mask format."); - } - } - - return new PDFImage({ - xref, - res, - image: imageData, - isInline, - smask: smaskData, - mask: maskData, - pdfFunctionFactory, - localColorSpaceCache - }); - } - - static createRawMask({ - imgArray, - width, - height, - imageIsFromDecodeStream, - inverseDecode, - interpolate - }) { - const computedLength = (width + 7 >> 3) * height; - const actualLength = imgArray.byteLength; - const haveFullData = computedLength === actualLength; - let data, i; - - if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { - data = imgArray; - } else if (!inverseDecode) { - data = new Uint8Array(imgArray); - } else { - data = new Uint8Array(computedLength); - data.set(imgArray); - data.fill(0xff, actualLength); - } - - if (inverseDecode) { - for (i = 0; i < actualLength; i++) { - data[i] ^= 0xff; - } - } - - return { - data, - width, - height, - interpolate - }; - } - - static createMask({ - imgArray, - width, - height, - imageIsFromDecodeStream, - inverseDecode, - interpolate - }) { - const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128)); - - if (isSingleOpaquePixel) { - return { - isSingleOpaquePixel - }; - } - - if (_util.FeatureTest.isOffscreenCanvasSupported) { - const canvas = new OffscreenCanvas(width, height); - const ctx = canvas.getContext("2d"); - const imgData = ctx.createImageData(width, height); - (0, _image_utils.applyMaskImageData)({ - src: imgArray, - dest: imgData.data, - width, - height, - inverseDecode - }); - ctx.putImageData(imgData, 0, 0); - const bitmap = canvas.transferToImageBitmap(); - return { - data: null, - width, - height, - interpolate, - bitmap - }; - } - - return this.createRawMask({ - imgArray, - width, - height, - inverseDecode, - imageIsFromDecodeStream, - interpolate - }); - } - - get drawWidth() { - return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0); - } - - get drawHeight() { - return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0); - } - - decodeBuffer(buffer) { - const bpc = this.bpc; - const numComps = this.numComps; - const decodeAddends = this.decodeAddends; - const decodeCoefficients = this.decodeCoefficients; - const max = (1 << bpc) - 1; - let i, ii; - - if (bpc === 1) { - for (i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] = +!buffer[i]; - } - - return; - } - - let index = 0; - - for (i = 0, ii = this.width * this.height; i < ii; i++) { - for (let j = 0; j < numComps; j++) { - buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max); - index++; - } - } - } - - getComponents(buffer) { - const bpc = this.bpc; - - if (bpc === 8) { - return buffer; - } - - const width = this.width; - const height = this.height; - const numComps = this.numComps; - const length = width * height * numComps; - let bufferPos = 0; - let output; - - if (bpc <= 8) { - output = new Uint8Array(length); - } else if (bpc <= 16) { - output = new Uint16Array(length); - } else { - output = new Uint32Array(length); - } - - const rowComps = width * numComps; - const max = (1 << bpc) - 1; - let i = 0, - ii, - buf; - - if (bpc === 1) { - let mask, loop1End, loop2End; - - for (let j = 0; j < height; j++) { - loop1End = i + (rowComps & ~7); - loop2End = i + rowComps; - - while (i < loop1End) { - buf = buffer[bufferPos++]; - output[i] = buf >> 7 & 1; - output[i + 1] = buf >> 6 & 1; - output[i + 2] = buf >> 5 & 1; - output[i + 3] = buf >> 4 & 1; - output[i + 4] = buf >> 3 & 1; - output[i + 5] = buf >> 2 & 1; - output[i + 6] = buf >> 1 & 1; - output[i + 7] = buf & 1; - i += 8; - } - - if (i < loop2End) { - buf = buffer[bufferPos++]; - mask = 128; - - while (i < loop2End) { - output[i++] = +!!(buf & mask); - mask >>= 1; - } - } - } - } else { - let bits = 0; - buf = 0; - - for (i = 0, ii = length; i < ii; ++i) { - if (i % rowComps === 0) { - buf = 0; - bits = 0; - } - - while (bits < bpc) { - buf = buf << 8 | buffer[bufferPos++]; - bits += 8; - } - - const remainingBits = bits - bpc; - let value = buf >> remainingBits; - - if (value < 0) { - value = 0; - } else if (value > max) { - value = max; - } - - output[i] = value; - buf &= (1 << remainingBits) - 1; - bits = remainingBits; - } - } - - return output; - } - - fillOpacity(rgbaBuf, width, height, actualHeight, image) { - const smask = this.smask; - const mask = this.mask; - let alphaBuf, sw, sh, i, ii, j; - - if (smask) { - sw = smask.width; - sh = smask.height; - alphaBuf = new Uint8ClampedArray(sw * sh); - smask.fillGrayBuffer(alphaBuf); - - if (sw !== width || sh !== height) { - alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height); - } - } else if (mask) { - if (mask instanceof PDFImage) { - sw = mask.width; - sh = mask.height; - alphaBuf = new Uint8ClampedArray(sw * sh); - mask.numComps = 1; - mask.fillGrayBuffer(alphaBuf); - - for (i = 0, ii = sw * sh; i < ii; ++i) { - alphaBuf[i] = 255 - alphaBuf[i]; - } - - if (sw !== width || sh !== height) { - alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height); - } - } else if (Array.isArray(mask)) { - alphaBuf = new Uint8ClampedArray(width * height); - const numComps = this.numComps; - - for (i = 0, ii = width * height; i < ii; ++i) { - let opacity = 0; - const imageOffset = i * numComps; - - for (j = 0; j < numComps; ++j) { - const color = image[imageOffset + j]; - const maskOffset = j * 2; - - if (color < mask[maskOffset] || color > mask[maskOffset + 1]) { - opacity = 255; - break; - } - } - - alphaBuf[i] = opacity; - } - } else { - throw new _util.FormatError("Unknown mask format."); - } - } - - if (alphaBuf) { - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = alphaBuf[i]; - } - } else { - for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { - rgbaBuf[j] = 255; - } - } - } - - undoPreblend(buffer, width, height) { - const matte = this.smask && this.smask.matte; - - if (!matte) { - return; - } - - const matteRgb = this.colorSpace.getRgb(matte, 0); - const matteR = matteRgb[0]; - const matteG = matteRgb[1]; - const matteB = matteRgb[2]; - const length = width * height * 4; - - for (let i = 0; i < length; i += 4) { - const alpha = buffer[i + 3]; - - if (alpha === 0) { - buffer[i] = 255; - buffer[i + 1] = 255; - buffer[i + 2] = 255; - continue; - } - - const k = 255 / alpha; - buffer[i] = (buffer[i] - matteR) * k + matteR; - buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG; - buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB; - } - } - - createImageData(forceRGBA = false) { - const drawWidth = this.drawWidth; - const drawHeight = this.drawHeight; - const imgData = { - width: drawWidth, - height: drawHeight, - interpolate: this.interpolate, - kind: 0, - data: null - }; - const numComps = this.numComps; - const originalWidth = this.width; - const originalHeight = this.height; - const bpc = this.bpc; - const rowBytes = originalWidth * numComps * bpc + 7 >> 3; - - if (!forceRGBA) { - let kind; - - if (this.colorSpace.name === "DeviceGray" && bpc === 1) { - kind = _util.ImageKind.GRAYSCALE_1BPP; - } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) { - kind = _util.ImageKind.RGB_24BPP; - } - - if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) { - imgData.kind = kind; - imgData.data = this.getImageBytes(originalHeight * rowBytes, {}); - - if (this.needsDecode) { - (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale."); - const buffer = imgData.data; - - for (let i = 0, ii = buffer.length; i < ii; i++) { - buffer[i] ^= 0xff; - } - } - - return imgData; - } - - if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) { - let imageLength = originalHeight * rowBytes; - - switch (this.colorSpace.name) { - case "DeviceGray": - imageLength *= 3; - - case "DeviceRGB": - case "DeviceCMYK": - imgData.kind = _util.ImageKind.RGB_24BPP; - imgData.data = this.getImageBytes(imageLength, { - drawWidth, - drawHeight, - forceRGB: true - }); - return imgData; - } - } - } - - const imgArray = this.getImageBytes(originalHeight * rowBytes, { - internal: true - }); - const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight; - const comps = this.getComponents(imgArray); - let alpha01, maybeUndoPreblend; - - if (!forceRGBA && !this.smask && !this.mask) { - imgData.kind = _util.ImageKind.RGB_24BPP; - imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3); - alpha01 = 0; - maybeUndoPreblend = false; - } else { - imgData.kind = _util.ImageKind.RGBA_32BPP; - imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4); - alpha01 = 1; - maybeUndoPreblend = true; - this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps); - } - - if (this.needsDecode) { - this.decodeBuffer(comps); - } - - this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01); - - if (maybeUndoPreblend) { - this.undoPreblend(imgData.data, drawWidth, actualHeight); - } - - return imgData; - } - - fillGrayBuffer(buffer) { - const numComps = this.numComps; - - if (numComps !== 1) { - throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`); - } - - const width = this.width; - const height = this.height; - const bpc = this.bpc; - const rowBytes = width * numComps * bpc + 7 >> 3; - const imgArray = this.getImageBytes(height * rowBytes, { - internal: true - }); - const comps = this.getComponents(imgArray); - let i, length; - - if (bpc === 1) { - length = width * height; - - if (this.needsDecode) { - for (i = 0; i < length; ++i) { - buffer[i] = comps[i] - 1 & 255; - } - } else { - for (i = 0; i < length; ++i) { - buffer[i] = -comps[i] & 255; - } - } - - return; - } - - if (this.needsDecode) { - this.decodeBuffer(comps); - } - - length = width * height; - const scale = 255 / ((1 << bpc) - 1); - - for (i = 0; i < length; ++i) { - buffer[i] = scale * comps[i]; - } - } - - getImageBytes(length, { - drawWidth, - drawHeight, - forceRGB = false, - internal = false - }) { - this.image.reset(); - this.image.drawWidth = drawWidth || this.width; - this.image.drawHeight = drawHeight || this.height; - this.image.forceRGB = !!forceRGB; - const imageBytes = this.image.getBytes(length); - - if (internal || this.image instanceof _decode_stream.DecodeStream) { - return imageBytes; - } - - (0, _util.assert)(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported "imageBytes" type.'); - return new Uint8Array(imageBytes); - } - -} - -exports.PDFImage = PDFImage; - -/***/ }), -/* 64 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.applyMaskImageData = applyMaskImageData; - -var _util = __w_pdfjs_require__(2); - -function applyMaskImageData({ - src, - srcPos = 0, - dest, - destPos = 0, - width, - height, - inverseDecode = false -}) { - const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; - const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; - const widthInSource = width >> 3; - const widthRemainder = width & 7; - const srcLength = src.length; - dest = new Uint32Array(dest.buffer); - - for (let i = 0; i < height; i++) { - for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { - const elem = srcPos < srcLength ? src[srcPos] : 255; - dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; - dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; - } - - if (widthRemainder === 0) { - continue; - } - - const elem = srcPos < srcLength ? src[srcPos++] : 255; - - for (let j = 0; j < widthRemainder; j++) { - dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; - } - } - - return { - srcPos, - destPos - }; -} - -/***/ }), -/* 65 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Catalog = void 0; - -var _core_utils = __w_pdfjs_require__(8); - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _name_number_tree = __w_pdfjs_require__(66); - -var _base_stream = __w_pdfjs_require__(9); - -var _cleanup_helper = __w_pdfjs_require__(67); - -var _colorspace = __w_pdfjs_require__(24); - -var _file_spec = __w_pdfjs_require__(68); - -var _image_utils = __w_pdfjs_require__(59); - -var _metadata_parser = __w_pdfjs_require__(69); - -var _struct_tree = __w_pdfjs_require__(71); - -function fetchDestination(dest) { - if (dest instanceof _primitives.Dict) { - dest = dest.get("D"); - } - - return Array.isArray(dest) ? dest : null; -} - -class Catalog { - constructor(pdfManager, xref) { - this.pdfManager = pdfManager; - this.xref = xref; - this._catDict = xref.getCatalogObj(); - - if (!(this._catDict instanceof _primitives.Dict)) { - throw new _util.FormatError("Catalog object is not a dictionary."); - } - - this.toplevelPagesDict; - this._actualNumPages = null; - this.fontCache = new _primitives.RefSetCache(); - this.builtInCMapCache = new Map(); - this.standardFontDataCache = new Map(); - this.globalImageCache = new _image_utils.GlobalImageCache(); - this.pageKidsCountCache = new _primitives.RefSetCache(); - this.pageIndexCache = new _primitives.RefSetCache(); - this.nonBlendModesSet = new _primitives.RefSet(); - } - - get version() { - const version = this._catDict.get("Version"); - - return (0, _util.shadow)(this, "version", version instanceof _primitives.Name ? version.name : null); - } - - get lang() { - const lang = this._catDict.get("Lang"); - - return (0, _util.shadow)(this, "lang", typeof lang === "string" ? (0, _util.stringToPDFString)(lang) : null); - } - - get needsRendering() { - const needsRendering = this._catDict.get("NeedsRendering"); - - return (0, _util.shadow)(this, "needsRendering", typeof needsRendering === "boolean" ? needsRendering : false); - } - - get collection() { - let collection = null; - - try { - const obj = this._catDict.get("Collection"); - - if (obj instanceof _primitives.Dict && obj.size > 0) { - collection = obj; - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.info)("Cannot fetch Collection entry; assuming no collection is present."); - } - - return (0, _util.shadow)(this, "collection", collection); - } - - get acroForm() { - let acroForm = null; - - try { - const obj = this._catDict.get("AcroForm"); - - if (obj instanceof _primitives.Dict && obj.size > 0) { - acroForm = obj; - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.info)("Cannot fetch AcroForm entry; assuming no forms are present."); - } - - return (0, _util.shadow)(this, "acroForm", acroForm); - } - - get acroFormRef() { - const value = this._catDict.getRaw("AcroForm"); - - return (0, _util.shadow)(this, "acroFormRef", value instanceof _primitives.Ref ? value : null); - } - - get metadata() { - const streamRef = this._catDict.getRaw("Metadata"); - - if (!(streamRef instanceof _primitives.Ref)) { - return (0, _util.shadow)(this, "metadata", null); - } - - let metadata = null; - - try { - const suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata); - const stream = this.xref.fetch(streamRef, suppressEncryption); - - if (stream instanceof _base_stream.BaseStream && stream.dict instanceof _primitives.Dict) { - const type = stream.dict.get("Type"); - const subtype = stream.dict.get("Subtype"); - - if ((0, _primitives.isName)(type, "Metadata") && (0, _primitives.isName)(subtype, "XML")) { - const data = (0, _util.stringToUTF8String)(stream.getString()); - - if (data) { - metadata = new _metadata_parser.MetadataParser(data).serializable; - } - } - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.info)(`Skipping invalid Metadata: "${ex}".`); - } - - 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 (!(obj instanceof _primitives.Dict)) { - return null; - } - - const markInfo = { - Marked: false, - UserProperties: false, - Suspects: false - }; - - for (const key in markInfo) { - const value = obj.get(key); - - if (typeof value === "boolean") { - markInfo[key] = value; - } - } - - return markInfo; - } - - get structTreeRoot() { - let structTree = null; - - try { - structTree = this._readStructTreeRoot(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("Unable read to structTreeRoot info."); - } - - return (0, _util.shadow)(this, "structTreeRoot", structTree); - } - - _readStructTreeRoot() { - const obj = this._catDict.get("StructTreeRoot"); - - if (!(obj instanceof _primitives.Dict)) { - return null; - } - - const root = new _struct_tree.StructTreeRoot(obj); - root.init(); - return root; - } - - get toplevelPagesDict() { - const pagesObj = this._catDict.get("Pages"); - - if (!(pagesObj instanceof _primitives.Dict)) { - throw new _util.FormatError("Invalid top-level pages dictionary."); - } - - return (0, _util.shadow)(this, "toplevelPagesDict", pagesObj); - } - - get documentOutline() { - let obj = null; - - try { - obj = this._readDocumentOutline(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("Unable to read document outline."); - } - - return (0, _util.shadow)(this, "documentOutline", obj); - } - - _readDocumentOutline() { - let obj = this._catDict.get("Outlines"); - - if (!(obj instanceof _primitives.Dict)) { - return null; - } - - obj = obj.getRaw("First"); - - if (!(obj instanceof _primitives.Ref)) { - return null; - } - - const root = { - items: [] - }; - const queue = [{ - obj, - parent: root - }]; - const processed = new _primitives.RefSet(); - processed.put(obj); - const xref = this.xref, - blackColor = new Uint8ClampedArray(3); - - while (queue.length > 0) { - const i = queue.shift(); - const outlineDict = xref.fetchIfRef(i.obj); - - if (outlineDict === null) { - continue; - } - - if (!outlineDict.has("Title")) { - throw new _util.FormatError("Invalid outline item encountered."); - } - - const data = { - url: null, - dest: null - }; - Catalog.parseDestDictionary({ - destDict: outlineDict, - resultObj: data, - docBaseUrl: this.pdfManager.docBaseUrl - }); - const title = outlineDict.get("Title"); - const flags = outlineDict.get("F") || 0; - const color = outlineDict.getArray("C"); - const count = outlineDict.get("Count"); - let rgbColor = blackColor; - - if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) { - rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0); - } - - const outlineItem = { - dest: data.dest, - url: data.url, - unsafeUrl: data.unsafeUrl, - newWindow: data.newWindow, - title: (0, _util.stringToPDFString)(title), - color: rgbColor, - count: Number.isInteger(count) ? count : undefined, - bold: !!(flags & 2), - italic: !!(flags & 1), - items: [] - }; - i.parent.items.push(outlineItem); - obj = outlineDict.getRaw("First"); - - if (obj instanceof _primitives.Ref && !processed.has(obj)) { - queue.push({ - obj, - parent: outlineItem - }); - processed.put(obj); - } - - obj = outlineDict.getRaw("Next"); - - if (obj instanceof _primitives.Ref && !processed.has(obj)) { - queue.push({ - obj, - parent: i.parent - }); - processed.put(obj); - } - } - - return root.items.length > 0 ? root.items : null; - } - - get permissions() { - let permissions = null; - - try { - permissions = this._readPermissions(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("Unable to read permissions."); - } - - return (0, _util.shadow)(this, "permissions", permissions); - } - - _readPermissions() { - const encrypt = this.xref.trailer.get("Encrypt"); - - if (!(encrypt instanceof _primitives.Dict)) { - return null; - } - - let flags = encrypt.get("P"); - - if (typeof flags !== "number") { - return null; - } - - flags += 2 ** 32; - const permissions = []; - - for (const key in _util.PermissionFlag) { - const value = _util.PermissionFlag[key]; - - if (flags & value) { - permissions.push(value); - } - } - - return permissions; - } - - get optionalContentConfig() { - let config = null; - - try { - const properties = this._catDict.get("OCProperties"); - - if (!properties) { - return (0, _util.shadow)(this, "optionalContentConfig", null); - } - - const defaultConfig = properties.get("D"); - - if (!defaultConfig) { - return (0, _util.shadow)(this, "optionalContentConfig", null); - } - - const groupsData = properties.get("OCGs"); - - if (!Array.isArray(groupsData)) { - return (0, _util.shadow)(this, "optionalContentConfig", null); - } - - const groups = []; - const groupRefs = []; - - for (const groupRef of groupsData) { - if (!(groupRef instanceof _primitives.Ref)) { - continue; - } - - groupRefs.push(groupRef); - const group = this.xref.fetchIfRef(groupRef); - groups.push({ - id: groupRef.toString(), - name: typeof group.get("Name") === "string" ? (0, _util.stringToPDFString)(group.get("Name")) : null, - intent: typeof group.get("Intent") === "string" ? (0, _util.stringToPDFString)(group.get("Intent")) : null - }); - } - - config = this._readOptionalContentConfig(defaultConfig, groupRefs); - config.groups = groups; - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)(`Unable to read optional content config: ${ex}`); - } - - return (0, _util.shadow)(this, "optionalContentConfig", config); - } - - _readOptionalContentConfig(config, contentGroupRefs) { - function parseOnOff(refs) { - const onParsed = []; - - if (Array.isArray(refs)) { - for (const value of refs) { - if (!(value instanceof _primitives.Ref)) { - continue; - } - - if (contentGroupRefs.includes(value)) { - onParsed.push(value.toString()); - } - } - } - - return onParsed; - } - - function parseOrder(refs, nestedLevels = 0) { - if (!Array.isArray(refs)) { - return null; - } - - const order = []; - - for (const value of refs) { - if (value instanceof _primitives.Ref && contentGroupRefs.includes(value)) { - parsedOrderRefs.put(value); - order.push(value.toString()); - continue; - } - - const nestedOrder = parseNestedOrder(value, nestedLevels); - - if (nestedOrder) { - order.push(nestedOrder); - } - } - - if (nestedLevels > 0) { - return order; - } - - const hiddenGroups = []; - - for (const groupRef of contentGroupRefs) { - if (parsedOrderRefs.has(groupRef)) { - continue; - } - - hiddenGroups.push(groupRef.toString()); - } - - if (hiddenGroups.length) { - order.push({ - name: null, - order: hiddenGroups - }); - } - - return order; - } - - function parseNestedOrder(ref, nestedLevels) { - if (++nestedLevels > MAX_NESTED_LEVELS) { - (0, _util.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS."); - return null; - } - - const value = xref.fetchIfRef(ref); - - if (!Array.isArray(value)) { - return null; - } - - const nestedName = xref.fetchIfRef(value[0]); - - if (typeof nestedName !== "string") { - return null; - } - - const nestedOrder = parseOrder(value.slice(1), nestedLevels); - - if (!nestedOrder || !nestedOrder.length) { - return null; - } - - return { - name: (0, _util.stringToPDFString)(nestedName), - order: nestedOrder - }; - } - - const xref = this.xref, - parsedOrderRefs = new _primitives.RefSet(), - MAX_NESTED_LEVELS = 10; - return { - name: typeof config.get("Name") === "string" ? (0, _util.stringToPDFString)(config.get("Name")) : null, - creator: typeof config.get("Creator") === "string" ? (0, _util.stringToPDFString)(config.get("Creator")) : null, - baseState: config.get("BaseState") instanceof _primitives.Name ? config.get("BaseState").name : null, - on: parseOnOff(config.get("ON")), - off: parseOnOff(config.get("OFF")), - order: parseOrder(config.get("Order")), - groups: null - }; - } - - setActualNumPages(num = null) { - this._actualNumPages = num; - } - - get hasActualNumPages() { - return this._actualNumPages !== null; - } - - get _pagesCount() { - const obj = this.toplevelPagesDict.get("Count"); - - if (!Number.isInteger(obj)) { - throw new _util.FormatError("Page count in top-level pages dictionary is not an integer."); - } - - return (0, _util.shadow)(this, "_pagesCount", obj); - } - - get numPages() { - return this.hasActualNumPages ? this._actualNumPages : this._pagesCount; - } - - get destinations() { - const obj = this._readDests(), - dests = Object.create(null); - - if (obj instanceof _name_number_tree.NameTree) { - for (const [key, value] of obj.getAll()) { - const dest = fetchDestination(value); - - if (dest) { - dests[(0, _util.stringToPDFString)(key)] = dest; - } - } - } else if (obj instanceof _primitives.Dict) { - obj.forEach(function (key, value) { - const dest = fetchDestination(value); - - if (dest) { - dests[key] = dest; - } - }); - } - - return (0, _util.shadow)(this, "destinations", dests); - } - - getDestination(id) { - const obj = this._readDests(); - - if (obj instanceof _name_number_tree.NameTree) { - const dest = fetchDestination(obj.get(id)); - - if (dest) { - return dest; - } - - const allDest = this.destinations[id]; - - if (allDest) { - (0, _util.warn)(`Found "${id}" at an incorrect position in the NameTree.`); - return allDest; - } - } else if (obj instanceof _primitives.Dict) { - const dest = fetchDestination(obj.get(id)); - - if (dest) { - return dest; - } - } - - return null; - } - - _readDests() { - const obj = this._catDict.get("Names"); - - if (obj && obj.has("Dests")) { - return new _name_number_tree.NameTree(obj.getRaw("Dests"), this.xref); - } else if (this._catDict.has("Dests")) { - return this._catDict.get("Dests"); - } - - return undefined; - } - - get pageLabels() { - let obj = null; - - try { - obj = this._readPageLabels(); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)("Unable to read page labels."); - } - - return (0, _util.shadow)(this, "pageLabels", obj); - } - - _readPageLabels() { - const obj = this._catDict.getRaw("PageLabels"); - - if (!obj) { - return null; - } - - const pageLabels = new Array(this.numPages); - let style = null, - prefix = ""; - const numberTree = new _name_number_tree.NumberTree(obj, this.xref); - const nums = numberTree.getAll(); - let currentLabel = "", - currentIndex = 1; - - for (let i = 0, ii = this.numPages; i < ii; i++) { - const labelDict = nums.get(i); - - if (labelDict !== undefined) { - if (!(labelDict instanceof _primitives.Dict)) { - throw new _util.FormatError("PageLabel is not a dictionary."); - } - - if (labelDict.has("Type") && !(0, _primitives.isName)(labelDict.get("Type"), "PageLabel")) { - throw new _util.FormatError("Invalid type in PageLabel dictionary."); - } - - if (labelDict.has("S")) { - const s = labelDict.get("S"); - - if (!(s instanceof _primitives.Name)) { - throw new _util.FormatError("Invalid style in PageLabel dictionary."); - } - - style = s.name; - } else { - style = null; - } - - if (labelDict.has("P")) { - const p = labelDict.get("P"); - - if (typeof p !== "string") { - throw new _util.FormatError("Invalid prefix in PageLabel dictionary."); - } - - prefix = (0, _util.stringToPDFString)(p); - } else { - prefix = ""; - } - - if (labelDict.has("St")) { - const st = labelDict.get("St"); - - if (!(Number.isInteger(st) && st >= 1)) { - throw new _util.FormatError("Invalid start in PageLabel dictionary."); - } - - currentIndex = st; - } else { - currentIndex = 1; - } - } - - switch (style) { - case "D": - currentLabel = currentIndex; - break; - - case "R": - case "r": - currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === "r"); - break; - - case "A": - case "a": - const LIMIT = 26; - const A_UPPER_CASE = 0x41, - A_LOWER_CASE = 0x61; - const baseCharCode = style === "a" ? A_LOWER_CASE : A_UPPER_CASE; - const letterIndex = currentIndex - 1; - const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT); - currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1); - break; - - default: - if (style) { - throw new _util.FormatError(`Invalid style "${style}" in PageLabel dictionary.`); - } - - currentLabel = ""; - } - - pageLabels[i] = prefix + currentLabel; - currentIndex++; - } - - return pageLabels; - } - - get pageLayout() { - const obj = this._catDict.get("PageLayout"); - - let pageLayout = ""; - - if (obj instanceof _primitives.Name) { - switch (obj.name) { - case "SinglePage": - case "OneColumn": - case "TwoColumnLeft": - case "TwoColumnRight": - case "TwoPageLeft": - case "TwoPageRight": - pageLayout = obj.name; - } - } - - return (0, _util.shadow)(this, "pageLayout", pageLayout); - } - - get pageMode() { - const obj = this._catDict.get("PageMode"); - - let pageMode = "UseNone"; - - if (obj instanceof _primitives.Name) { - switch (obj.name) { - case "UseNone": - case "UseOutlines": - case "UseThumbs": - case "FullScreen": - case "UseOC": - case "UseAttachments": - pageMode = obj.name; - } - } - - return (0, _util.shadow)(this, "pageMode", pageMode); - } - - get viewerPreferences() { - const obj = this._catDict.get("ViewerPreferences"); - - if (!(obj instanceof _primitives.Dict)) { - return (0, _util.shadow)(this, "viewerPreferences", null); - } - - let prefs = null; - - for (const key of obj.getKeys()) { - const value = obj.get(key); - let prefValue; - - switch (key) { - case "HideToolbar": - case "HideMenubar": - case "HideWindowUI": - case "FitWindow": - case "CenterWindow": - case "DisplayDocTitle": - case "PickTrayByPDFSize": - if (typeof value === "boolean") { - prefValue = value; - } - - break; - - case "NonFullScreenPageMode": - if (value instanceof _primitives.Name) { - switch (value.name) { - case "UseNone": - case "UseOutlines": - case "UseThumbs": - case "UseOC": - prefValue = value.name; - break; - - default: - prefValue = "UseNone"; - } - } - - break; - - case "Direction": - if (value instanceof _primitives.Name) { - switch (value.name) { - case "L2R": - case "R2L": - prefValue = value.name; - break; - - default: - prefValue = "L2R"; - } - } - - break; - - case "ViewArea": - case "ViewClip": - case "PrintArea": - case "PrintClip": - if (value instanceof _primitives.Name) { - switch (value.name) { - case "MediaBox": - case "CropBox": - case "BleedBox": - case "TrimBox": - case "ArtBox": - prefValue = value.name; - break; - - default: - prefValue = "CropBox"; - } - } - - break; - - case "PrintScaling": - if (value instanceof _primitives.Name) { - switch (value.name) { - case "None": - case "AppDefault": - prefValue = value.name; - break; - - default: - prefValue = "AppDefault"; - } - } - - break; - - case "Duplex": - if (value instanceof _primitives.Name) { - switch (value.name) { - case "Simplex": - case "DuplexFlipShortEdge": - case "DuplexFlipLongEdge": - prefValue = value.name; - break; - - default: - prefValue = "None"; - } - } - - break; - - case "PrintPageRange": - if (Array.isArray(value) && value.length % 2 === 0) { - const isValid = value.every((page, i, arr) => { - return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages; - }); - - if (isValid) { - prefValue = value; - } - } - - break; - - case "NumCopies": - if (Number.isInteger(value) && value > 0) { - prefValue = value; - } - - break; - - default: - (0, _util.warn)(`Ignoring non-standard key in ViewerPreferences: ${key}.`); - continue; - } - - if (prefValue === undefined) { - (0, _util.warn)(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`); - continue; - } - - if (!prefs) { - prefs = Object.create(null); - } - - prefs[key] = prefValue; - } - - return (0, _util.shadow)(this, "viewerPreferences", prefs); - } - - get openAction() { - const obj = this._catDict.get("OpenAction"); - - const openAction = Object.create(null); - - if (obj instanceof _primitives.Dict) { - const destDict = new _primitives.Dict(this.xref); - destDict.set("A", obj); - const resultObj = { - url: null, - dest: null, - action: null - }; - Catalog.parseDestDictionary({ - destDict, - resultObj - }); - - if (Array.isArray(resultObj.dest)) { - openAction.dest = resultObj.dest; - } else if (resultObj.action) { - openAction.action = resultObj.action; - } - } else if (Array.isArray(obj)) { - openAction.dest = obj; - } - - return (0, _util.shadow)(this, "openAction", (0, _util.objectSize)(openAction) > 0 ? openAction : null); - } - - get attachments() { - const obj = this._catDict.get("Names"); - - let attachments = null; - - if (obj instanceof _primitives.Dict && obj.has("EmbeddedFiles")) { - const nameTree = new _name_number_tree.NameTree(obj.getRaw("EmbeddedFiles"), this.xref); - - for (const [key, value] of nameTree.getAll()) { - const fs = new _file_spec.FileSpec(value, this.xref); - - if (!attachments) { - attachments = Object.create(null); - } - - attachments[(0, _util.stringToPDFString)(key)] = fs.serializable; - } - } - - return (0, _util.shadow)(this, "attachments", attachments); - } - - get xfaImages() { - const obj = this._catDict.get("Names"); - - let xfaImages = null; - - if (obj instanceof _primitives.Dict && obj.has("XFAImages")) { - const nameTree = new _name_number_tree.NameTree(obj.getRaw("XFAImages"), this.xref); - - for (const [key, value] of nameTree.getAll()) { - if (!xfaImages) { - xfaImages = new _primitives.Dict(this.xref); - } - - xfaImages.set((0, _util.stringToPDFString)(key), value); - } - } - - return (0, _util.shadow)(this, "xfaImages", xfaImages); - } - - _collectJavaScript() { - const obj = this._catDict.get("Names"); - - let javaScript = null; - - function appendIfJavaScriptDict(name, jsDict) { - if (!(jsDict instanceof _primitives.Dict)) { - return; - } - - if (!(0, _primitives.isName)(jsDict.get("S"), "JavaScript")) { - return; - } - - let js = jsDict.get("JS"); - - if (js instanceof _base_stream.BaseStream) { - js = js.getString(); - } else if (typeof js !== "string") { - return; - } - - if (javaScript === null) { - javaScript = new Map(); - } - - javaScript.set(name, (0, _util.stringToPDFString)(js)); - } - - if (obj instanceof _primitives.Dict && obj.has("JavaScript")) { - const nameTree = new _name_number_tree.NameTree(obj.getRaw("JavaScript"), this.xref); - - for (const [key, value] of nameTree.getAll()) { - appendIfJavaScriptDict((0, _util.stringToPDFString)(key), value); - } - } - - const openAction = this._catDict.get("OpenAction"); - - if (openAction) { - appendIfJavaScriptDict("OpenAction", openAction); - } - - return javaScript; - } - - get javaScript() { - const javaScript = this._collectJavaScript(); - - return (0, _util.shadow)(this, "javaScript", javaScript ? [...javaScript.values()] : null); - } - - get jsActions() { - const javaScript = this._collectJavaScript(); - - let actions = (0, _core_utils.collectActions)(this.xref, this._catDict, _util.DocumentActionEventType); - - if (javaScript) { - if (!actions) { - actions = Object.create(null); - } - - for (const [key, val] of javaScript) { - if (key in actions) { - actions[key].push(val); - } else { - actions[key] = [val]; - } - } - } - - return (0, _util.shadow)(this, "jsActions", actions); - } - - async fontFallback(id, handler) { - const translatedFonts = await Promise.all(this.fontCache); - - for (const translatedFont of translatedFonts) { - if (translatedFont.loadedName === id) { - translatedFont.fallback(handler); - return; - } - } - } - - async cleanup(manuallyTriggered = false) { - (0, _cleanup_helper.clearGlobalCaches)(); - this.globalImageCache.clear(manuallyTriggered); - this.pageKidsCountCache.clear(); - this.pageIndexCache.clear(); - this.nonBlendModesSet.clear(); - const translatedFonts = await Promise.all(this.fontCache); - - for (const { - dict - } of translatedFonts) { - delete dict.cacheKey; - } - - this.fontCache.clear(); - this.builtInCMapCache.clear(); - this.standardFontDataCache.clear(); - } - - async getPageDict(pageIndex) { - const nodesToVisit = [this.toplevelPagesDict]; - const visitedNodes = new _primitives.RefSet(); - - const pagesRef = this._catDict.getRaw("Pages"); - - if (pagesRef instanceof _primitives.Ref) { - visitedNodes.put(pagesRef); - } - - const xref = this.xref, - pageKidsCountCache = this.pageKidsCountCache, - pageIndexCache = this.pageIndexCache; - let currentPageIndex = 0; - - while (nodesToVisit.length) { - const currentNode = nodesToVisit.pop(); - - if (currentNode instanceof _primitives.Ref) { - const count = pageKidsCountCache.get(currentNode); - - if (count >= 0 && currentPageIndex + count <= pageIndex) { - currentPageIndex += count; - continue; - } - - if (visitedNodes.has(currentNode)) { - throw new _util.FormatError("Pages tree contains circular reference."); - } - - visitedNodes.put(currentNode); - const obj = await xref.fetchAsync(currentNode); - - if (obj instanceof _primitives.Dict) { - let type = obj.getRaw("Type"); - - if (type instanceof _primitives.Ref) { - type = await xref.fetchAsync(type); - } - - if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) { - if (!pageKidsCountCache.has(currentNode)) { - pageKidsCountCache.put(currentNode, 1); - } - - if (!pageIndexCache.has(currentNode)) { - pageIndexCache.put(currentNode, currentPageIndex); - } - - if (currentPageIndex === pageIndex) { - return [obj, currentNode]; - } - - currentPageIndex++; - continue; - } - } - - nodesToVisit.push(obj); - continue; - } - - if (!(currentNode instanceof _primitives.Dict)) { - throw new _util.FormatError("Page dictionary kid reference points to wrong type of object."); - } - - const { - objId - } = currentNode; - let count = currentNode.getRaw("Count"); - - if (count instanceof _primitives.Ref) { - count = await xref.fetchAsync(count); - } - - if (Number.isInteger(count) && count >= 0) { - if (objId && !pageKidsCountCache.has(objId)) { - pageKidsCountCache.put(objId, count); - } - - if (currentPageIndex + count <= pageIndex) { - currentPageIndex += count; - continue; - } - } - - let kids = currentNode.getRaw("Kids"); - - if (kids instanceof _primitives.Ref) { - kids = await xref.fetchAsync(kids); - } - - if (!Array.isArray(kids)) { - let type = currentNode.getRaw("Type"); - - if (type instanceof _primitives.Ref) { - type = await xref.fetchAsync(type); - } - - if ((0, _primitives.isName)(type, "Page") || !currentNode.has("Kids")) { - if (currentPageIndex === pageIndex) { - return [currentNode, null]; - } - - currentPageIndex++; - continue; - } - - throw new _util.FormatError("Page dictionary kids object is not an array."); - } - - for (let last = kids.length - 1; last >= 0; last--) { - nodesToVisit.push(kids[last]); - } - } - - throw new Error(`Page index ${pageIndex} not found.`); - } - - async getAllPageDicts(recoveryMode = false) { - const queue = [{ - currentNode: this.toplevelPagesDict, - posInKids: 0 - }]; - const visitedNodes = new _primitives.RefSet(); - - const pagesRef = this._catDict.getRaw("Pages"); - - if (pagesRef instanceof _primitives.Ref) { - visitedNodes.put(pagesRef); - } - - const map = new Map(), - xref = this.xref, - pageIndexCache = this.pageIndexCache; - let pageIndex = 0; - - function addPageDict(pageDict, pageRef) { - if (pageRef && !pageIndexCache.has(pageRef)) { - pageIndexCache.put(pageRef, pageIndex); - } - - map.set(pageIndex++, [pageDict, pageRef]); - } - - function addPageError(error) { - if (error instanceof _core_utils.XRefEntryException && !recoveryMode) { - throw error; - } - - map.set(pageIndex++, [error, null]); - } - - while (queue.length > 0) { - const queueItem = queue[queue.length - 1]; - const { - currentNode, - posInKids - } = queueItem; - let kids = currentNode.getRaw("Kids"); - - if (kids instanceof _primitives.Ref) { - try { - kids = await xref.fetchAsync(kids); - } catch (ex) { - addPageError(ex); - break; - } - } - - if (!Array.isArray(kids)) { - addPageError(new _util.FormatError("Page dictionary kids object is not an array.")); - break; - } - - if (posInKids >= kids.length) { - queue.pop(); - continue; - } - - const kidObj = kids[posInKids]; - let obj; - - if (kidObj instanceof _primitives.Ref) { - if (visitedNodes.has(kidObj)) { - addPageError(new _util.FormatError("Pages tree contains circular reference.")); - break; - } - - visitedNodes.put(kidObj); - - try { - obj = await xref.fetchAsync(kidObj); - } catch (ex) { - addPageError(ex); - break; - } - } else { - obj = kidObj; - } - - if (!(obj instanceof _primitives.Dict)) { - addPageError(new _util.FormatError("Page dictionary kid reference points to wrong type of object.")); - break; - } - - let type = obj.getRaw("Type"); - - if (type instanceof _primitives.Ref) { - try { - type = await xref.fetchAsync(type); - } catch (ex) { - addPageError(ex); - break; - } - } - - if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) { - addPageDict(obj, kidObj instanceof _primitives.Ref ? kidObj : null); - } else { - queue.push({ - currentNode: obj, - posInKids: 0 - }); - } - - queueItem.posInKids++; - } - - return map; - } - - getPageIndex(pageRef) { - const cachedPageIndex = this.pageIndexCache.get(pageRef); - - if (cachedPageIndex !== undefined) { - return Promise.resolve(cachedPageIndex); - } - - const xref = this.xref; - - function pagesBeforeRef(kidRef) { - let total = 0, - parentRef; - return xref.fetchAsync(kidRef).then(function (node) { - if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, "Page") && !(node instanceof _primitives.Dict && !node.has("Type") && node.has("Contents"))) { - throw new _util.FormatError("The reference does not point to a /Page dictionary."); - } - - if (!node) { - return null; - } - - if (!(node instanceof _primitives.Dict)) { - throw new _util.FormatError("Node must be a dictionary."); - } - - parentRef = node.getRaw("Parent"); - return node.getAsync("Parent"); - }).then(function (parent) { - if (!parent) { - return null; - } - - if (!(parent instanceof _primitives.Dict)) { - throw new _util.FormatError("Parent must be a dictionary."); - } - - return parent.getAsync("Kids"); - }).then(function (kids) { - if (!kids) { - return null; - } - - const kidPromises = []; - let found = false; - - for (let i = 0, ii = kids.length; i < ii; i++) { - const kid = kids[i]; - - if (!(kid instanceof _primitives.Ref)) { - throw new _util.FormatError("Kid must be a reference."); - } - - if ((0, _primitives.isRefsEqual)(kid, kidRef)) { - found = true; - break; - } - - kidPromises.push(xref.fetchAsync(kid).then(function (obj) { - if (!(obj instanceof _primitives.Dict)) { - throw new _util.FormatError("Kid node must be a dictionary."); - } - - if (obj.has("Count")) { - total += obj.get("Count"); - } else { - total++; - } - })); - } - - if (!found) { - throw new _util.FormatError("Kid reference not found in parent's kids."); - } - - return Promise.all(kidPromises).then(function () { - return [total, parentRef]; - }); - }); - } - - let total = 0; - - const next = ref => pagesBeforeRef(ref).then(args => { - if (!args) { - this.pageIndexCache.put(pageRef, total); - return total; - } - - const [count, parentRef] = args; - total += count; - return next(parentRef); - }); - - return next(pageRef); - } - - get baseUrl() { - const uri = this._catDict.get("URI"); - - if (uri instanceof _primitives.Dict) { - const base = uri.get("Base"); - - if (typeof base === "string") { - const absoluteUrl = (0, _util.createValidAbsoluteUrl)(base, null, { - tryConvertEncoding: true - }); - - if (absoluteUrl) { - return (0, _util.shadow)(this, "baseUrl", absoluteUrl.href); - } - } - } - - return (0, _util.shadow)(this, "baseUrl", null); - } - - static parseDestDictionary(params) { - const destDict = params.destDict; - - if (!(destDict instanceof _primitives.Dict)) { - (0, _util.warn)("parseDestDictionary: `destDict` must be a dictionary."); - return; - } - - const resultObj = params.resultObj; - - if (typeof resultObj !== "object") { - (0, _util.warn)("parseDestDictionary: `resultObj` must be an object."); - return; - } - - const docBaseUrl = params.docBaseUrl || null; - let action = destDict.get("A"), - url, - dest; - - if (!(action instanceof _primitives.Dict)) { - if (destDict.has("Dest")) { - action = destDict.get("Dest"); - } else { - action = destDict.get("AA"); - - if (action instanceof _primitives.Dict) { - if (action.has("D")) { - action = action.get("D"); - } else if (action.has("U")) { - action = action.get("U"); - } - } - } - } - - if (action instanceof _primitives.Dict) { - const actionType = action.get("S"); - - if (!(actionType instanceof _primitives.Name)) { - (0, _util.warn)("parseDestDictionary: Invalid type in Action dictionary."); - return; - } - - const actionName = actionType.name; - - switch (actionName) { - case "ResetForm": - const flags = action.get("Flags"); - const include = ((typeof flags === "number" ? flags : 0) & 1) === 0; - const fields = []; - const refs = []; - - for (const obj of action.get("Fields") || []) { - if (obj instanceof _primitives.Ref) { - refs.push(obj.toString()); - } else if (typeof obj === "string") { - fields.push((0, _util.stringToPDFString)(obj)); - } - } - - resultObj.resetForm = { - fields, - refs, - include - }; - break; - - case "URI": - url = action.get("URI"); - - if (url instanceof _primitives.Name) { - url = "/" + url.name; - } - - break; - - case "GoTo": - dest = action.get("D"); - break; - - case "Launch": - case "GoToR": - const urlDict = action.get("F"); - - if (urlDict instanceof _primitives.Dict) { - url = urlDict.get("F") || null; - } else if (typeof urlDict === "string") { - url = urlDict; - } - - let remoteDest = action.get("D"); - - if (remoteDest) { - if (remoteDest instanceof _primitives.Name) { - remoteDest = remoteDest.name; - } - - if (typeof url === "string") { - const baseUrl = url.split("#")[0]; - - if (typeof remoteDest === "string") { - url = baseUrl + "#" + remoteDest; - } else if (Array.isArray(remoteDest)) { - url = baseUrl + "#" + JSON.stringify(remoteDest); - } - } - } - - const newWindow = action.get("NewWindow"); - - if (typeof newWindow === "boolean") { - resultObj.newWindow = newWindow; - } - - break; - - case "Named": - const namedAction = action.get("N"); - - if (namedAction instanceof _primitives.Name) { - resultObj.action = namedAction.name; - } - - break; - - case "JavaScript": - const jsAction = action.get("JS"); - let js; - - if (jsAction instanceof _base_stream.BaseStream) { - js = jsAction.getString(); - } else if (typeof jsAction === "string") { - js = jsAction; - } - - const jsURL = js && (0, _core_utils.recoverJsURL)((0, _util.stringToPDFString)(js)); - - if (jsURL) { - url = jsURL.url; - resultObj.newWindow = jsURL.newWindow; - break; - } - - default: - if (actionName === "JavaScript" || actionName === "SubmitForm") { - break; - } - - (0, _util.warn)(`parseDestDictionary - unsupported action: "${actionName}".`); - break; - } - } else if (destDict.has("Dest")) { - dest = destDict.get("Dest"); - } - - if (typeof url === "string") { - const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl, { - addDefaultProtocol: true, - tryConvertEncoding: true - }); - - if (absoluteUrl) { - resultObj.url = absoluteUrl.href; - } - - resultObj.unsafeUrl = url; - } - - if (dest) { - if (dest instanceof _primitives.Name) { - dest = dest.name; - } - - if (typeof dest === "string") { - resultObj.dest = (0, _util.stringToPDFString)(dest); - } else if (Array.isArray(dest)) { - resultObj.dest = dest; - } - } - } - -} - -exports.Catalog = Catalog; - -/***/ }), -/* 66 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NumberTree = exports.NameTree = void 0; - -var _primitives = __w_pdfjs_require__(5); - -var _util = __w_pdfjs_require__(2); - -class NameOrNumberTree { - constructor(root, xref, type) { - if (this.constructor === NameOrNumberTree) { - (0, _util.unreachable)("Cannot initialize NameOrNumberTree."); - } - - this.root = root; - this.xref = xref; - this._type = type; - } - - getAll() { - const map = new Map(); - - if (!this.root) { - return map; - } - - const xref = this.xref; - const processed = new _primitives.RefSet(); - processed.put(this.root); - const queue = [this.root]; - - while (queue.length > 0) { - const obj = xref.fetchIfRef(queue.shift()); - - if (!(obj instanceof _primitives.Dict)) { - continue; - } - - if (obj.has("Kids")) { - const kids = obj.get("Kids"); - - if (!Array.isArray(kids)) { - continue; - } - - for (const kid of kids) { - if (processed.has(kid)) { - throw new _util.FormatError(`Duplicate entry in "${this._type}" tree.`); - } - - queue.push(kid); - processed.put(kid); - } - - continue; - } - - const entries = obj.get(this._type); - - if (!Array.isArray(entries)) { - continue; - } - - for (let i = 0, ii = entries.length; i < ii; i += 2) { - map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1])); - } - } - - return map; - } - - get(key) { - if (!this.root) { - return null; - } - - const xref = this.xref; - let kidsOrEntries = xref.fetchIfRef(this.root); - let loopCount = 0; - const MAX_LEVELS = 10; - - while (kidsOrEntries.has("Kids")) { - if (++loopCount > MAX_LEVELS) { - (0, _util.warn)(`Search depth limit reached for "${this._type}" tree.`); - return null; - } - - const kids = kidsOrEntries.get("Kids"); - - if (!Array.isArray(kids)) { - return null; - } - - let l = 0, - r = kids.length - 1; - - while (l <= r) { - const m = l + r >> 1; - const kid = xref.fetchIfRef(kids[m]); - const limits = kid.get("Limits"); - - if (key < xref.fetchIfRef(limits[0])) { - r = m - 1; - } else if (key > xref.fetchIfRef(limits[1])) { - l = m + 1; - } else { - kidsOrEntries = kid; - break; - } - } - - if (l > r) { - return null; - } - } - - const entries = kidsOrEntries.get(this._type); - - if (Array.isArray(entries)) { - let l = 0, - r = entries.length - 2; - - while (l <= r) { - const tmp = l + r >> 1, - m = tmp + (tmp & 1); - const currentKey = xref.fetchIfRef(entries[m]); - - if (key < currentKey) { - r = m - 2; - } else if (key > currentKey) { - l = m + 2; - } else { - return xref.fetchIfRef(entries[m + 1]); - } - } - } - - return null; - } - -} - -class NameTree extends NameOrNumberTree { - constructor(root, xref) { - super(root, xref, "Names"); - } - -} - -exports.NameTree = NameTree; - -class NumberTree extends NameOrNumberTree { - constructor(root, xref) { - super(root, xref, "Nums"); - } - -} - -exports.NumberTree = NumberTree; - -/***/ }), -/* 67 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.clearGlobalCaches = clearGlobalCaches; - -var _primitives = __w_pdfjs_require__(5); - -var _unicode = __w_pdfjs_require__(21); - -function clearGlobalCaches() { - (0, _primitives.clearPrimitiveCaches)(); - (0, _unicode.clearUnicodeCaches)(); -} - -/***/ }), -/* 68 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.FileSpec = void 0; - -var _util = __w_pdfjs_require__(2); - -var _base_stream = __w_pdfjs_require__(9); - -var _primitives = __w_pdfjs_require__(5); - -function pickPlatformItem(dict) { - if (dict.has("UF")) { - return dict.get("UF"); - } else if (dict.has("F")) { - return dict.get("F"); - } else if (dict.has("Unix")) { - return dict.get("Unix"); - } else if (dict.has("Mac")) { - return dict.get("Mac"); - } else if (dict.has("DOS")) { - return dict.get("DOS"); - } - - return null; -} - -class FileSpec { - constructor(root, xref) { - if (!(root instanceof _primitives.Dict)) { - return; - } - - this.xref = xref; - this.root = root; - - if (root.has("FS")) { - this.fs = root.get("FS"); - } - - this.description = root.has("Desc") ? (0, _util.stringToPDFString)(root.get("Desc")) : ""; - - if (root.has("RF")) { - (0, _util.warn)("Related file specifications are not supported"); - } - - this.contentAvailable = true; - - if (!root.has("EF")) { - this.contentAvailable = false; - (0, _util.warn)("Non-embedded file specifications are not supported"); - } - } - - get filename() { - if (!this._filename && this.root) { - const filename = pickPlatformItem(this.root) || "unnamed"; - this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\/g, "\\").replace(/\\\//g, "/").replace(/\\/g, "/"); - } - - return this._filename; - } - - get content() { - if (!this.contentAvailable) { - return null; - } - - if (!this.contentRef && this.root) { - this.contentRef = pickPlatformItem(this.root.get("EF")); - } - - let content = null; - - if (this.contentRef) { - const fileObj = this.xref.fetchIfRef(this.contentRef); - - if (fileObj instanceof _base_stream.BaseStream) { - content = fileObj.getBytes(); - } else { - (0, _util.warn)("Embedded file specification points to non-existing/invalid content"); - } - } else { - (0, _util.warn)("Embedded file specification does not have a content"); - } - - return content; - } - - get serializable() { - return { - filename: this.filename, - content: this.content - }; - } - -} - -exports.FileSpec = FileSpec; - -/***/ }), -/* 69 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MetadataParser = void 0; - -var _xml_parser = __w_pdfjs_require__(70); - -class MetadataParser { - constructor(data) { - data = this._repair(data); - const parser = new _xml_parser.SimpleXMLParser({ - lowerCaseName: true - }); - const xmlDocument = parser.parseFromString(data); - this._metadataMap = new Map(); - this._data = data; - - if (xmlDocument) { - this._parse(xmlDocument); - } - } - - _repair(data) { - return data.replace(/^[^<]+/, "").replace(/>\\376\\377([^<]+)/g, function (all, codes) { - const bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { - return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); - }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) { - switch (name) { - case "amp": - return "&"; - - case "apos": - return "'"; - - case "gt": - return ">"; - - case "lt": - return "<"; - - case "quot": - return '"'; - } - - throw new Error(`_repair: ${name} isn't defined.`); - }); - const charBuf = []; - - for (let i = 0, ii = bytes.length; i < ii; i += 2) { - const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); - - if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) { - charBuf.push(String.fromCharCode(code)); - } else { - charBuf.push("&#x" + (0x10000 + code).toString(16).substring(1) + ";"); - } - } - - return ">" + charBuf.join(""); - }); - } - - _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"); - } - - _parseArray(entry) { - if (!entry.hasChildNodes()) { - return; - } - - const [seqNode] = entry.childNodes; - const sequence = this._getSequence(seqNode) || []; - - this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim())); - } - - _parse(xmlDocument) { - let rdf = xmlDocument.documentElement; - - if (rdf.nodeName !== "rdf:rdf") { - rdf = rdf.firstChild; - - while (rdf && rdf.nodeName !== "rdf:rdf") { - rdf = rdf.nextSibling; - } - } - - if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) { - return; - } - - for (const desc of rdf.childNodes) { - if (desc.nodeName !== "rdf:description") { - continue; - } - - for (const entry of desc.childNodes) { - const name = entry.nodeName; - - switch (name) { - case "#text": - continue; - - case "dc:creator": - case "dc:subject": - this._parseArray(entry); - - continue; - } - - this._metadataMap.set(name, entry.textContent.trim()); - } - } - } - - get serializable() { - return { - parsedData: this._metadataMap, - rawData: this._data - }; - } - -} - -exports.MetadataParser = MetadataParser; - -/***/ }), -/* 70 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XMLParserErrorCode = exports.XMLParserBase = exports.SimpleXMLParser = exports.SimpleDOMNode = void 0; - -var _core_utils = __w_pdfjs_require__(8); - -const XMLParserErrorCode = { - NoError: 0, - EndOfDocument: -1, - UnterminatedCdat: -2, - UnterminatedXmlDeclaration: -3, - UnterminatedDoctypeDeclaration: -4, - UnterminatedComment: -5, - MalformedElement: -6, - OutOfMemory: -7, - UnterminatedAttributeValue: -8, - UnterminatedElement: -9, - ElementNeverBegun: -10 -}; -exports.XMLParserErrorCode = XMLParserErrorCode; - -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 '"'; - - case "apos": - 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] !== "?" && 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) {} - -} - -exports.XMLParserBase = XMLParserBase; - -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(""); - } - - get children() { - return this.childNodes || []; - } - - 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, _core_utils.encodeToXmlString)(this.nodeValue)); - return; - } - - buffer.push(`<${this.nodeName}`); - - if (this.attributes) { - for (const attribute of this.attributes) { - buffer.push(` ${attribute.name}="${(0, _core_utils.encodeToXmlString)(attribute.value)}"`); - } - } - - if (this.hasChildNodes()) { - buffer.push(">"); - - for (const child of this.childNodes) { - child.dump(buffer); - } - - buffer.push(``); - } else if (this.nodeValue) { - buffer.push(`>${(0, _core_utils.encodeToXmlString)(this.nodeValue)}`); - } 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 - }; - } - - 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 null; - } - - for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) { - lastElement.childNodes[i].parentNode = lastElement; - } - - return lastElement; - } - - onError(code) { - this._errorCode = code; - } - -} - -exports.SimpleXMLParser = SimpleXMLParser; - -/***/ }), -/* 71 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.StructTreeRoot = exports.StructTreePage = void 0; - -var _primitives = __w_pdfjs_require__(5); - -var _util = __w_pdfjs_require__(2); - -var _name_number_tree = __w_pdfjs_require__(66); - -const MAX_DEPTH = 40; -const StructElementType = { - PAGE_CONTENT: "PAGE_CONTENT", - STREAM_CONTENT: "STREAM_CONTENT", - OBJECT: "OBJECT", - ELEMENT: "ELEMENT" -}; - -class StructTreeRoot { - constructor(rootDict) { - this.dict = rootDict; - this.roleMap = new Map(); - } - - init() { - this.readRoleMap(); - } - - readRoleMap() { - const roleMapDict = this.dict.get("RoleMap"); - - if (!(roleMapDict instanceof _primitives.Dict)) { - return; - } - - roleMapDict.forEach((key, value) => { - if (!(value instanceof _primitives.Name)) { - return; - } - - this.roleMap.set(key, value.name); - }); - } - -} - -exports.StructTreeRoot = StructTreeRoot; - -class StructElementNode { - constructor(tree, dict) { - this.tree = tree; - this.dict = dict; - this.kids = []; - this.parseKids(); - } - - get role() { - const nameObj = this.dict.get("S"); - const name = nameObj instanceof _primitives.Name ? nameObj.name : ""; - const { - root - } = this.tree; - - if (root.roleMap.has(name)) { - return root.roleMap.get(name); - } - - return name; - } - - parseKids() { - let pageObjId = null; - const objRef = this.dict.getRaw("Pg"); - - if (objRef instanceof _primitives.Ref) { - pageObjId = objRef.toString(); - } - - const kids = this.dict.get("K"); - - if (Array.isArray(kids)) { - for (const kid of kids) { - const element = this.parseKid(pageObjId, kid); - - if (element) { - this.kids.push(element); - } - } - } else { - const element = this.parseKid(pageObjId, kids); - - if (element) { - this.kids.push(element); - } - } - } - - parseKid(pageObjId, kid) { - if (Number.isInteger(kid)) { - if (this.tree.pageDict.objId !== pageObjId) { - return null; - } - - return new StructElement({ - type: StructElementType.PAGE_CONTENT, - mcid: kid, - pageObjId - }); - } - - let kidDict = null; - - if (kid instanceof _primitives.Ref) { - kidDict = this.dict.xref.fetch(kid); - } else if (kid instanceof _primitives.Dict) { - kidDict = kid; - } - - if (!kidDict) { - return null; - } - - const pageRef = kidDict.getRaw("Pg"); - - if (pageRef instanceof _primitives.Ref) { - pageObjId = pageRef.toString(); - } - - const type = kidDict.get("Type") instanceof _primitives.Name ? kidDict.get("Type").name : null; - - if (type === "MCR") { - if (this.tree.pageDict.objId !== pageObjId) { - return null; - } - - return new StructElement({ - type: StructElementType.STREAM_CONTENT, - refObjId: kidDict.getRaw("Stm") instanceof _primitives.Ref ? kidDict.getRaw("Stm").toString() : null, - pageObjId, - mcid: kidDict.get("MCID") - }); - } - - if (type === "OBJR") { - if (this.tree.pageDict.objId !== pageObjId) { - return null; - } - - return new StructElement({ - type: StructElementType.OBJECT, - refObjId: kidDict.getRaw("Obj") instanceof _primitives.Ref ? kidDict.getRaw("Obj").toString() : null, - pageObjId - }); - } - - return new StructElement({ - type: StructElementType.ELEMENT, - dict: kidDict - }); - } - -} - -class StructElement { - constructor({ - type, - dict = null, - mcid = null, - pageObjId = null, - refObjId = null - }) { - this.type = type; - this.dict = dict; - this.mcid = mcid; - this.pageObjId = pageObjId; - this.refObjId = refObjId; - this.parentNode = null; - } - -} - -class StructTreePage { - constructor(structTreeRoot, pageDict) { - this.root = structTreeRoot; - this.rootDict = structTreeRoot ? structTreeRoot.dict : null; - this.pageDict = pageDict; - this.nodes = []; - } - - parse() { - if (!this.root || !this.rootDict) { - return; - } - - const parentTree = this.rootDict.get("ParentTree"); - - if (!parentTree) { - return; - } - - const id = this.pageDict.get("StructParents"); - - if (!Number.isInteger(id)) { - return; - } - - const numberTree = new _name_number_tree.NumberTree(parentTree, this.rootDict.xref); - const parentArray = numberTree.get(id); - - if (!Array.isArray(parentArray)) { - return; - } - - const map = new Map(); - - for (const ref of parentArray) { - if (ref instanceof _primitives.Ref) { - this.addNode(this.rootDict.xref.fetch(ref), map); - } - } - } - - addNode(dict, map, level = 0) { - if (level > MAX_DEPTH) { - (0, _util.warn)("StructTree MAX_DEPTH reached."); - return null; - } - - if (map.has(dict)) { - return map.get(dict); - } - - const element = new StructElementNode(this, dict); - map.set(dict, element); - const parent = dict.get("P"); - - if (!parent || (0, _primitives.isName)(parent.get("Type"), "StructTreeRoot")) { - if (!this.addTopLevelNode(dict, element)) { - map.delete(dict); - } - - return element; - } - - const parentNode = this.addNode(parent, map, level + 1); - - if (!parentNode) { - return element; - } - - let save = false; - - for (const kid of parentNode.kids) { - if (kid.type === StructElementType.ELEMENT && kid.dict === dict) { - kid.parentNode = element; - save = true; - } - } - - if (!save) { - map.delete(dict); - } - - return element; - } - - addTopLevelNode(dict, element) { - const obj = this.rootDict.get("K"); - - if (!obj) { - return false; - } - - if (obj instanceof _primitives.Dict) { - if (obj.objId !== dict.objId) { - return false; - } - - this.nodes[0] = element; - return true; - } - - if (!Array.isArray(obj)) { - return true; - } - - let save = false; - - for (let i = 0; i < obj.length; i++) { - const kidRef = obj[i]; - - if (kidRef && kidRef.toString() === dict.objId) { - this.nodes[i] = element; - save = true; - } - } - - return save; - } - - get serializable() { - function nodeToSerializable(node, parent, level = 0) { - if (level > MAX_DEPTH) { - (0, _util.warn)("StructTree too deep to be fully serialized."); - return; - } - - const obj = Object.create(null); - obj.role = node.role; - obj.children = []; - parent.children.push(obj); - const alt = node.dict.get("Alt"); - - if (typeof alt === "string") { - obj.alt = (0, _util.stringToPDFString)(alt); - } - - const lang = node.dict.get("Lang"); - - if (typeof lang === "string") { - obj.lang = (0, _util.stringToPDFString)(lang); - } - - for (const kid of node.kids) { - const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null; - - if (kidElement) { - nodeToSerializable(kidElement, obj, level + 1); - continue; - } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) { - obj.children.push({ - type: "content", - id: `page${kid.pageObjId}_mcid${kid.mcid}` - }); - } else if (kid.type === StructElementType.OBJECT) { - obj.children.push({ - type: "object", - id: kid.refObjId - }); - } - } - } - - const root = Object.create(null); - root.children = []; - root.role = "Root"; - - for (const child of this.nodes) { - if (!child) { - continue; - } - - nodeToSerializable(child, root); - } - - return root; - } - -} - -exports.StructTreePage = StructTreePage; - -/***/ }), -/* 72 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ObjectLoader = void 0; - -var _primitives = __w_pdfjs_require__(5); - -var _base_stream = __w_pdfjs_require__(9); - -var _core_utils = __w_pdfjs_require__(8); - -var _util = __w_pdfjs_require__(2); - -function mayHaveChildren(value) { - return value instanceof _primitives.Ref || value instanceof _primitives.Dict || value instanceof _base_stream.BaseStream || Array.isArray(value); -} - -function addChildren(node, nodesToVisit) { - if (node instanceof _primitives.Dict) { - node = node.getRawValues(); - } else if (node instanceof _base_stream.BaseStream) { - node = node.dict.getRawValues(); - } else if (!Array.isArray(node)) { - return; - } - - for (const rawValue of node) { - if (mayHaveChildren(rawValue)) { - nodesToVisit.push(rawValue); - } - } -} - -class ObjectLoader { - constructor(dict, keys, xref) { - this.dict = dict; - this.keys = keys; - this.xref = xref; - this.refSet = null; - } - - async load() { - if (this.xref.stream.isDataLoaded) { - return undefined; - } - - const { - keys, - dict - } = this; - this.refSet = new _primitives.RefSet(); - const nodesToVisit = []; - - for (let i = 0, ii = keys.length; i < ii; i++) { - const rawValue = dict.getRaw(keys[i]); - - if (rawValue !== undefined) { - nodesToVisit.push(rawValue); - } - } - - return this._walk(nodesToVisit); - } - - async _walk(nodesToVisit) { - const nodesToRevisit = []; - const pendingRequests = []; - - while (nodesToVisit.length) { - let currentNode = nodesToVisit.pop(); - - if (currentNode instanceof _primitives.Ref) { - if (this.refSet.has(currentNode)) { - continue; - } - - try { - this.refSet.put(currentNode); - currentNode = this.xref.fetch(currentNode); - } catch (ex) { - if (!(ex instanceof _core_utils.MissingDataException)) { - (0, _util.warn)(`ObjectLoader._walk - requesting all data: "${ex}".`); - this.refSet = null; - const { - manager - } = this.xref.stream; - return manager.requestAllChunks(); - } - - nodesToRevisit.push(currentNode); - pendingRequests.push({ - begin: ex.begin, - end: ex.end - }); - } - } - - if (currentNode instanceof _base_stream.BaseStream) { - const baseStreams = currentNode.getBaseStreams(); - - if (baseStreams) { - let foundMissingData = false; - - for (const stream of baseStreams) { - if (stream.isDataLoaded) { - continue; - } - - foundMissingData = true; - pendingRequests.push({ - begin: stream.start, - end: stream.end - }); - } - - if (foundMissingData) { - nodesToRevisit.push(currentNode); - } - } - } - - addChildren(currentNode, nodesToVisit); - } - - if (pendingRequests.length) { - await this.xref.stream.manager.requestRanges(pendingRequests); - - for (const node of nodesToRevisit) { - if (node instanceof _primitives.Ref) { - this.refSet.remove(node); - } - } - - return this._walk(nodesToRevisit); - } - - this.refSet = null; - return undefined; - } - -} - -exports.ObjectLoader = ObjectLoader; - -/***/ }), -/* 73 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -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__(70); - -var _base_stream = __w_pdfjs_require__(9); - -var _crypto = __w_pdfjs_require__(74); - -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 = stream.getString(); - - if (transform !== null) { - string = transform.encryptString(string); - } - - buffer.push(string, "\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 (value instanceof _primitives.Name) { - buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`); - } else if (value instanceof _primitives.Ref) { - 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 (typeof value === "boolean") { - buffer.push(value.toString()); - } else if (value instanceof _primitives.Dict) { - writeDict(value, buffer, transform); - } else if (value instanceof _base_stream.BaseStream) { - writeStream(value, buffer, transform); - } else if (value === null) { - buffer.push("null"); - } else { - (0, _util.warn)(`Unhandled value in writer: ${typeof value}, please file a bug.`); - } -} - -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 writeXFADataForAcroform(str, newRefs) { - 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) { - if (Array.isArray(value)) { - node.childNodes = value.map(val => new _xml_parser.SimpleDOMNode("value", val)); - } else { - node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)]; - } - } else { - (0, _util.warn)(`Node not found for path: ${path}`); - } - } - - const buffer = []; - xml.documentElement.dump(buffer); - return buffer.join(""); -} - -function updateXFA({ - xfaData, - xfaDatasetsRef, - hasXfaDatasetsEntry, - acroFormRef, - acroForm, - newRefs, - xref, - xrefInfo -}) { - if (xref === null) { - return; - } - - if (!hasXfaDatasetsEntry) { - if (!acroFormRef) { - (0, _util.warn)("XFA - Cannot save it"); - return; - } - - const oldXfa = acroForm.get("XFA"); - const newXfa = oldXfa.slice(); - newXfa.splice(2, 0, "datasets"); - newXfa.splice(3, 0, xfaDatasetsRef); - acroForm.set("XFA", newXfa); - const encrypt = xref.encrypt; - let transform = null; - - if (encrypt) { - transform = encrypt.createCipherTransform(acroFormRef.num, acroFormRef.gen); - } - - const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\n`]; - writeDict(acroForm, buffer, transform); - buffer.push("\n"); - acroForm.set("XFA", oldXfa); - newRefs.push({ - ref: acroFormRef, - data: buffer.join("") - }); - } - - if (xfaData === null) { - const datasets = xref.fetchIfRef(xfaDatasetsRef); - xfaData = writeXFADataForAcroform(datasets.getString(), newRefs); - } - - const encrypt = xref.encrypt; - - if (encrypt) { - const transform = encrypt.createCipherTransform(xfaDatasetsRef.num, xfaDatasetsRef.gen); - xfaData = transform.encryptString(xfaData); - } - - const data = `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\nstream\n` + xfaData + "\nendstream\nendobj\n"; - newRefs.push({ - ref: xfaDatasetsRef, - data - }); -} - -function incrementalUpdate({ - originalData, - xrefInfo, - newRefs, - xref = null, - hasXfa = false, - xfaDatasetsRef = null, - hasXfaDatasetsEntry = false, - acroFormRef = null, - acroForm = null, - xfaData = null -}) { - if (hasXfa) { - updateXFA({ - xfaData, - xfaDatasetsRef, - hasXfaDatasetsEntry, - acroFormRef, - acroForm, - newRefs, - xref, - xrefInfo - }); - } - - 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.encryptRef !== null) { - newXref.set("Encrypt", xrefInfo.encryptRef); - } - - 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, 1); - buffer.push(data); - } - - newXref.set("Index", indexes); - - if (Array.isArray(xrefInfo.fileIds) && 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; -} - -/***/ }), -/* 74 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0; -exports.calculateSHA384 = calculateSHA384; -exports.calculateSHA512 = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _decrypt_stream = __w_pdfjs_require__(75); - -class ARCFourCipher { - constructor(key) { - this.a = 0; - this.b = 0; - const s = new Uint8Array(256); - const keyLength = key.length; - - for (let i = 0; i < 256; ++i) { - s[i] = i; - } - - for (let i = 0, j = 0; i < 256; ++i) { - const tmp = s[i]; - j = j + tmp + key[i % keyLength] & 0xff; - s[i] = s[j]; - s[j] = tmp; - } - - this.s = s; - } - - encryptBlock(data) { - let a = this.a, - b = this.b; - const s = this.s; - const n = data.length; - const output = new Uint8Array(n); - - for (let i = 0; i < n; ++i) { - a = a + 1 & 0xff; - const tmp = s[a]; - b = b + tmp & 0xff; - const tmp2 = s[b]; - s[a] = tmp2; - s[b] = tmp; - output[i] = data[i] ^ s[tmp + tmp2 & 0xff]; - } - - this.a = a; - this.b = b; - return output; - } - - decryptBlock(data) { - return this.encryptBlock(data); - } - - encrypt(data) { - return this.encryptBlock(data); - } - -} - -exports.ARCFourCipher = ARCFourCipher; - -const calculateMD5 = function calculateMD5Closure() { - const r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]); - const k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]); - - function hash(data, offset, length) { - let h0 = 1732584193, - h1 = -271733879, - h2 = -1732584194, - h3 = 271733878; - const paddedLength = length + 72 & ~63; - const padded = new Uint8Array(paddedLength); - let i, j; - - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - - padded[i++] = 0x80; - const n = paddedLength - 8; - - while (i < n) { - padded[i++] = 0; - } - - padded[i++] = length << 3 & 0xff; - padded[i++] = length >> 5 & 0xff; - padded[i++] = length >> 13 & 0xff; - padded[i++] = length >> 21 & 0xff; - padded[i++] = length >>> 29 & 0xff; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - const w = new Int32Array(16); - - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j, i += 4) { - w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24; - } - - let a = h0, - b = h1, - c = h2, - d = h3, - f, - g; - - for (j = 0; j < 64; ++j) { - if (j < 16) { - f = b & c | ~b & d; - g = j; - } else if (j < 32) { - f = d & b | ~d & c; - g = 5 * j + 1 & 15; - } else if (j < 48) { - f = b ^ c ^ d; - g = 3 * j + 5 & 15; - } else { - f = c ^ (b | ~d); - g = 7 * j & 15; - } - - const tmp = d, - rotateArg = a + f + k[j] + w[g] | 0, - rotate = r[j]; - d = c; - c = b; - b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0; - a = tmp; - } - - h0 = h0 + a | 0; - h1 = h1 + b | 0; - h2 = h2 + c | 0; - h3 = h3 + d | 0; - } - - return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]); - } - - return hash; -}(); - -exports.calculateMD5 = calculateMD5; - -class Word64 { - constructor(highInteger, lowInteger) { - this.high = highInteger | 0; - this.low = lowInteger | 0; - } - - and(word) { - this.high &= word.high; - this.low &= word.low; - } - - xor(word) { - this.high ^= word.high; - this.low ^= word.low; - } - - or(word) { - this.high |= word.high; - this.low |= word.low; - } - - shiftRight(places) { - if (places >= 32) { - this.low = this.high >>> places - 32 | 0; - this.high = 0; - } else { - this.low = this.low >>> places | this.high << 32 - places; - this.high = this.high >>> places | 0; - } - } - - shiftLeft(places) { - if (places >= 32) { - this.high = this.low << places - 32; - this.low = 0; - } else { - this.high = this.high << places | this.low >>> 32 - places; - this.low <<= places; - } - } - - rotateRight(places) { - let low, high; - - if (places & 32) { - high = this.low; - low = this.high; - } else { - low = this.low; - high = this.high; - } - - places &= 31; - this.low = low >>> places | high << 32 - places; - this.high = high >>> places | low << 32 - places; - } - - not() { - this.high = ~this.high; - this.low = ~this.low; - } - - add(word) { - const lowAdd = (this.low >>> 0) + (word.low >>> 0); - let highAdd = (this.high >>> 0) + (word.high >>> 0); - - if (lowAdd > 0xffffffff) { - highAdd += 1; - } - - this.low = lowAdd | 0; - this.high = highAdd | 0; - } - - copyTo(bytes, offset) { - bytes[offset] = this.high >>> 24 & 0xff; - bytes[offset + 1] = this.high >> 16 & 0xff; - bytes[offset + 2] = this.high >> 8 & 0xff; - bytes[offset + 3] = this.high & 0xff; - bytes[offset + 4] = this.low >>> 24 & 0xff; - bytes[offset + 5] = this.low >> 16 & 0xff; - bytes[offset + 6] = this.low >> 8 & 0xff; - bytes[offset + 7] = this.low & 0xff; - } - - assign(word) { - this.high = word.high; - this.low = word.low; - } - -} - -const calculateSHA256 = function calculateSHA256Closure() { - function rotr(x, n) { - return x >>> n | x << 32 - n; - } - - function ch(x, y, z) { - return x & y ^ ~x & z; - } - - function maj(x, y, z) { - return x & y ^ x & z ^ y & z; - } - - function sigma(x) { - return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); - } - - function sigmaPrime(x) { - return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); - } - - function littleSigma(x) { - return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; - } - - function littleSigmaPrime(x) { - return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; - } - - const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; - - function hash(data, offset, length) { - let h0 = 0x6a09e667, - h1 = 0xbb67ae85, - h2 = 0x3c6ef372, - h3 = 0xa54ff53a, - h4 = 0x510e527f, - h5 = 0x9b05688c, - h6 = 0x1f83d9ab, - h7 = 0x5be0cd19; - const paddedLength = Math.ceil((length + 9) / 64) * 64; - const padded = new Uint8Array(paddedLength); - let i, j; - - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - - padded[i++] = 0x80; - const n = paddedLength - 8; - - while (i < n) { - padded[i++] = 0; - } - - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = length >>> 29 & 0xff; - padded[i++] = length >> 21 & 0xff; - padded[i++] = length >> 13 & 0xff; - padded[i++] = length >> 5 & 0xff; - padded[i++] = length << 3 & 0xff; - const w = new Uint32Array(64); - - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; - i += 4; - } - - for (j = 16; j < 64; ++j) { - w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0; - } - - let a = h0, - b = h1, - c = h2, - d = h3, - e = h4, - f = h5, - g = h6, - h = h7, - t1, - t2; - - for (j = 0; j < 64; ++j) { - t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j]; - t2 = sigma(a) + maj(a, b, c); - h = g; - g = f; - f = e; - e = d + t1 | 0; - d = c; - c = b; - b = a; - a = t1 + t2 | 0; - } - - h0 = h0 + a | 0; - h1 = h1 + b | 0; - h2 = h2 + c | 0; - h3 = h3 + d | 0; - h4 = h4 + e | 0; - h5 = h5 + f | 0; - h6 = h6 + g | 0; - h7 = h7 + h | 0; - } - - return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]); - } - - return hash; -}(); - -exports.calculateSHA256 = calculateSHA256; - -const calculateSHA512 = function calculateSHA512Closure() { - function ch(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.not(); - tmp.and(z); - result.xor(tmp); - } - - function maj(result, x, y, z, tmp) { - result.assign(x); - result.and(y); - tmp.assign(x); - tmp.and(z); - result.xor(tmp); - tmp.assign(y); - tmp.and(z); - result.xor(tmp); - } - - function sigma(result, x, tmp) { - result.assign(x); - result.rotateRight(28); - tmp.assign(x); - tmp.rotateRight(34); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(39); - result.xor(tmp); - } - - function sigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(14); - tmp.assign(x); - tmp.rotateRight(18); - result.xor(tmp); - tmp.assign(x); - tmp.rotateRight(41); - result.xor(tmp); - } - - function littleSigma(result, x, tmp) { - result.assign(x); - result.rotateRight(1); - tmp.assign(x); - tmp.rotateRight(8); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(7); - result.xor(tmp); - } - - function littleSigmaPrime(result, x, tmp) { - result.assign(x); - result.rotateRight(19); - tmp.assign(x); - tmp.rotateRight(61); - result.xor(tmp); - tmp.assign(x); - tmp.shiftRight(6); - result.xor(tmp); - } - - const k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]; - - function hash(data, offset, length, mode384 = false) { - let h0, h1, h2, h3, h4, h5, h6, h7; - - if (!mode384) { - h0 = new Word64(0x6a09e667, 0xf3bcc908); - h1 = new Word64(0xbb67ae85, 0x84caa73b); - h2 = new Word64(0x3c6ef372, 0xfe94f82b); - h3 = new Word64(0xa54ff53a, 0x5f1d36f1); - h4 = new Word64(0x510e527f, 0xade682d1); - h5 = new Word64(0x9b05688c, 0x2b3e6c1f); - h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); - h7 = new Word64(0x5be0cd19, 0x137e2179); - } else { - h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); - h1 = new Word64(0x629a292a, 0x367cd507); - h2 = new Word64(0x9159015a, 0x3070dd17); - h3 = new Word64(0x152fecd8, 0xf70e5939); - h4 = new Word64(0x67332667, 0xffc00b31); - h5 = new Word64(0x8eb44a87, 0x68581511); - h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); - h7 = new Word64(0x47b5481d, 0xbefa4fa4); - } - - const paddedLength = Math.ceil((length + 17) / 128) * 128; - const padded = new Uint8Array(paddedLength); - let i, j; - - for (i = 0; i < length; ++i) { - padded[i] = data[offset++]; - } - - padded[i++] = 0x80; - const n = paddedLength - 16; - - while (i < n) { - padded[i++] = 0; - } - - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = 0; - padded[i++] = length >>> 29 & 0xff; - padded[i++] = length >> 21 & 0xff; - padded[i++] = length >> 13 & 0xff; - padded[i++] = length >> 5 & 0xff; - padded[i++] = length << 3 & 0xff; - const w = new Array(80); - - for (i = 0; i < 80; i++) { - w[i] = new Word64(0, 0); - } - - let a = new Word64(0, 0), - b = new Word64(0, 0), - c = new Word64(0, 0); - let d = new Word64(0, 0), - e = new Word64(0, 0), - f = new Word64(0, 0); - let g = new Word64(0, 0), - h = new Word64(0, 0); - const t1 = new Word64(0, 0), - t2 = new Word64(0, 0); - const tmp1 = new Word64(0, 0), - tmp2 = new Word64(0, 0); - let tmp3; - - for (i = 0; i < paddedLength;) { - for (j = 0; j < 16; ++j) { - w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; - w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7]; - i += 8; - } - - for (j = 16; j < 80; ++j) { - tmp3 = w[j]; - littleSigmaPrime(tmp3, w[j - 2], tmp2); - tmp3.add(w[j - 7]); - littleSigma(tmp1, w[j - 15], tmp2); - tmp3.add(tmp1); - tmp3.add(w[j - 16]); - } - - a.assign(h0); - b.assign(h1); - c.assign(h2); - d.assign(h3); - e.assign(h4); - f.assign(h5); - g.assign(h6); - h.assign(h7); - - for (j = 0; j < 80; ++j) { - t1.assign(h); - sigmaPrime(tmp1, e, tmp2); - t1.add(tmp1); - ch(tmp1, e, f, g, tmp2); - t1.add(tmp1); - t1.add(k[j]); - t1.add(w[j]); - sigma(t2, a, tmp2); - maj(tmp1, a, b, c, tmp2); - t2.add(tmp1); - tmp3 = h; - h = g; - g = f; - f = e; - d.add(t1); - e = d; - d = c; - c = b; - b = a; - tmp3.assign(t1); - tmp3.add(t2); - a = tmp3; - } - - h0.add(a); - h1.add(b); - h2.add(c); - h3.add(d); - h4.add(e); - h5.add(f); - h6.add(g); - h7.add(h); - } - - let result; - - if (!mode384) { - result = new Uint8Array(64); - h0.copyTo(result, 0); - h1.copyTo(result, 8); - h2.copyTo(result, 16); - h3.copyTo(result, 24); - h4.copyTo(result, 32); - h5.copyTo(result, 40); - h6.copyTo(result, 48); - h7.copyTo(result, 56); - } else { - result = new Uint8Array(48); - h0.copyTo(result, 0); - h1.copyTo(result, 8); - h2.copyTo(result, 16); - h3.copyTo(result, 24); - h4.copyTo(result, 32); - h5.copyTo(result, 40); - } - - return result; - } - - return hash; -}(); - -exports.calculateSHA512 = calculateSHA512; - -function calculateSHA384(data, offset, length) { - return calculateSHA512(data, offset, length, true); -} - -class NullCipher { - decryptBlock(data) { - return data; - } - - encrypt(data) { - return data; - } - -} - -class AESBaseCipher { - constructor() { - if (this.constructor === AESBaseCipher) { - (0, _util.unreachable)("Cannot initialize AESBaseCipher."); - } - - this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]); - this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]); - this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); - this._mixCol = new Uint8Array(256); - - for (let i = 0; i < 256; i++) { - if (i < 128) { - this._mixCol[i] = i << 1; - } else { - this._mixCol[i] = i << 1 ^ 0x1b; - } - } - - this.buffer = new Uint8Array(16); - this.bufferPosition = 0; - } - - _expandKey(cipherKey) { - (0, _util.unreachable)("Cannot call `_expandKey` on the base class"); - } - - _decrypt(input, key) { - let t, u, v; - const state = new Uint8Array(16); - state.set(input); - - for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - - for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) { - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - - for (let j = 0; j < 16; ++j) { - state[j] = this._inv_s[state[j]]; - } - - for (let j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - - for (let j = 0; j < 16; j += 4) { - const s0 = this._mix[state[j]]; - const s1 = this._mix[state[j + 1]]; - const s2 = this._mix[state[j + 2]]; - const s3 = this._mix[state[j + 3]]; - t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8; - state[j] = t >>> 24 & 0xff; - state[j + 1] = t >> 16 & 0xff; - state[j + 2] = t >> 8 & 0xff; - state[j + 3] = t & 0xff; - } - } - - t = state[13]; - state[13] = state[9]; - state[9] = state[5]; - state[5] = state[1]; - state[1] = t; - t = state[14]; - u = state[10]; - state[14] = state[6]; - state[10] = state[2]; - state[6] = t; - state[2] = u; - t = state[15]; - u = state[11]; - v = state[7]; - state[15] = state[3]; - state[11] = t; - state[7] = u; - state[3] = v; - - for (let j = 0; j < 16; ++j) { - state[j] = this._inv_s[state[j]]; - state[j] ^= key[j]; - } - - return state; - } - - _encrypt(input, key) { - const s = this._s; - let t, u, v; - const state = new Uint8Array(16); - state.set(input); - - for (let j = 0; j < 16; ++j) { - state[j] ^= key[j]; - } - - for (let i = 1; i < this._cyclesOfRepetition; i++) { - for (let j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - - for (let j = 0; j < 16; j += 4) { - const s0 = state[j + 0]; - const s1 = state[j + 1]; - const s2 = state[j + 2]; - const s3 = state[j + 3]; - t = s0 ^ s1 ^ s2 ^ s3; - state[j + 0] ^= t ^ this._mixCol[s0 ^ s1]; - state[j + 1] ^= t ^ this._mixCol[s1 ^ s2]; - state[j + 2] ^= t ^ this._mixCol[s2 ^ s3]; - state[j + 3] ^= t ^ this._mixCol[s3 ^ s0]; - } - - for (let j = 0, k = i * 16; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - } - - for (let j = 0; j < 16; ++j) { - state[j] = s[state[j]]; - } - - v = state[1]; - state[1] = state[5]; - state[5] = state[9]; - state[9] = state[13]; - state[13] = v; - v = state[2]; - u = state[6]; - state[2] = state[10]; - state[6] = state[14]; - state[10] = v; - state[14] = u; - v = state[3]; - u = state[7]; - t = state[11]; - state[3] = state[15]; - state[7] = v; - state[11] = u; - state[15] = t; - - for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { - state[j] ^= key[k]; - } - - return state; - } - - _decryptBlock2(data, finalize) { - const sourceLength = data.length; - let buffer = this.buffer, - bufferLength = this.bufferPosition; - const result = []; - let iv = this.iv; - - for (let i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - - if (bufferLength < 16) { - continue; - } - - const plain = this._decrypt(buffer, this._key); - - for (let j = 0; j < 16; ++j) { - plain[j] ^= iv[j]; - } - - iv = buffer; - result.push(plain); - buffer = new Uint8Array(16); - bufferLength = 0; - } - - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - - if (result.length === 0) { - return new Uint8Array(0); - } - - let outputLength = 16 * result.length; - - if (finalize) { - const lastBlock = result[result.length - 1]; - let psLen = lastBlock[15]; - - if (psLen <= 16) { - for (let i = 15, ii = 16 - psLen; i >= ii; --i) { - if (lastBlock[i] !== psLen) { - psLen = 0; - break; - } - } - - outputLength -= psLen; - result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); - } - } - - const output = new Uint8Array(outputLength); - - for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - - return output; - } - - decryptBlock(data, finalize, iv = null) { - const sourceLength = data.length; - const buffer = this.buffer; - let bufferLength = this.bufferPosition; - - if (iv) { - this.iv = iv; - } else { - for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { - buffer[bufferLength] = data[i]; - } - - if (bufferLength < 16) { - this.bufferLength = bufferLength; - return new Uint8Array(0); - } - - this.iv = buffer; - data = data.subarray(16); - } - - this.buffer = new Uint8Array(16); - this.bufferLength = 0; - this.decryptBlock = this._decryptBlock2; - return this.decryptBlock(data, finalize); - } - - encrypt(data, iv) { - const sourceLength = data.length; - let buffer = this.buffer, - bufferLength = this.bufferPosition; - const result = []; - - if (!iv) { - iv = new Uint8Array(16); - } - - for (let i = 0; i < sourceLength; ++i) { - buffer[bufferLength] = data[i]; - ++bufferLength; - - if (bufferLength < 16) { - continue; - } - - for (let j = 0; j < 16; ++j) { - buffer[j] ^= iv[j]; - } - - const cipher = this._encrypt(buffer, this._key); - - iv = cipher; - result.push(cipher); - buffer = new Uint8Array(16); - bufferLength = 0; - } - - this.buffer = buffer; - this.bufferLength = bufferLength; - this.iv = iv; - - if (result.length === 0) { - return new Uint8Array(0); - } - - const outputLength = 16 * result.length; - const output = new Uint8Array(outputLength); - - for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { - output.set(result[i], j); - } - - return output; - } - -} - -class AES128Cipher extends AESBaseCipher { - constructor(key) { - super(); - this._cyclesOfRepetition = 10; - this._keySize = 160; - this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]); - this._key = this._expandKey(key); - } - - _expandKey(cipherKey) { - const b = 176; - const s = this._s; - const rcon = this._rcon; - const result = new Uint8Array(b); - result.set(cipherKey); - - for (let j = 16, i = 1; j < b; ++i) { - let t1 = result[j - 3]; - let t2 = result[j - 2]; - let t3 = result[j - 1]; - let t4 = result[j - 4]; - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - t1 ^= rcon[i]; - - for (let n = 0; n < 4; ++n) { - result[j] = t1 ^= result[j - 16]; - j++; - result[j] = t2 ^= result[j - 16]; - j++; - result[j] = t3 ^= result[j - 16]; - j++; - result[j] = t4 ^= result[j - 16]; - j++; - } - } - - return result; - } - -} - -exports.AES128Cipher = AES128Cipher; - -class AES256Cipher extends AESBaseCipher { - constructor(key) { - super(); - this._cyclesOfRepetition = 14; - this._keySize = 224; - this._key = this._expandKey(key); - } - - _expandKey(cipherKey) { - const b = 240; - const s = this._s; - const result = new Uint8Array(b); - result.set(cipherKey); - let r = 1; - let t1, t2, t3, t4; - - for (let j = 32, i = 1; j < b; ++i) { - if (j % 32 === 16) { - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - } else if (j % 32 === 0) { - t1 = result[j - 3]; - t2 = result[j - 2]; - t3 = result[j - 1]; - t4 = result[j - 4]; - t1 = s[t1]; - t2 = s[t2]; - t3 = s[t3]; - t4 = s[t4]; - t1 ^= r; - - if ((r <<= 1) >= 256) { - r = (r ^ 0x1b) & 0xff; - } - } - - for (let n = 0; n < 4; ++n) { - result[j] = t1 ^= result[j - 32]; - j++; - result[j] = t2 ^= result[j - 32]; - j++; - result[j] = t3 ^= result[j - 32]; - j++; - result[j] = t4 ^= result[j - 32]; - j++; - } - } - - return result; - } - -} - -exports.AES256Cipher = AES256Cipher; - -class PDF17 { - checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { - const hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - const result = calculateSHA256(hashData, 0, hashData.length); - return (0, _util.isArrayEqual)(result, ownerPassword); - } - - checkUserPassword(password, userValidationSalt, userPassword) { - const hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - const result = calculateSHA256(hashData, 0, hashData.length); - return (0, _util.isArrayEqual)(result, userPassword); - } - - getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { - const hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - const key = calculateSHA256(hashData, 0, hashData.length); - const cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); - } - - getUserKey(password, userKeySalt, userEncryption) { - const hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - const key = calculateSHA256(hashData, 0, hashData.length); - const cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); - } - -} - -exports.PDF17 = PDF17; - -const PDF20 = function PDF20Closure() { - function calculatePDF20Hash(password, input, userBytes) { - let k = calculateSHA256(input, 0, input.length).subarray(0, 32); - let e = [0]; - let i = 0; - - while (i < 64 || e[e.length - 1] > i - 32) { - const combinedLength = password.length + k.length + userBytes.length, - combinedArray = new Uint8Array(combinedLength); - let writeOffset = 0; - combinedArray.set(password, writeOffset); - writeOffset += password.length; - combinedArray.set(k, writeOffset); - writeOffset += k.length; - combinedArray.set(userBytes, writeOffset); - const k1 = new Uint8Array(combinedLength * 64); - - for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) { - k1.set(combinedArray, pos); - } - - const cipher = new AES128Cipher(k.subarray(0, 16)); - e = cipher.encrypt(k1, k.subarray(16, 32)); - let remainder = 0; - - for (let z = 0; z < 16; z++) { - remainder *= 256 % 3; - remainder %= 3; - remainder += (e[z] >>> 0) % 3; - remainder %= 3; - } - - if (remainder === 0) { - k = calculateSHA256(e, 0, e.length); - } else if (remainder === 1) { - k = calculateSHA384(e, 0, e.length); - } else if (remainder === 2) { - k = calculateSHA512(e, 0, e.length); - } - - i++; - } - - return k.subarray(0, 32); - } - - class PDF20 { - hash(password, concatBytes, userBytes) { - return calculatePDF20Hash(password, concatBytes, userBytes); - } - - checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { - const hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerValidationSalt, password.length); - hashData.set(userBytes, password.length + ownerValidationSalt.length); - const result = calculatePDF20Hash(password, hashData, userBytes); - return (0, _util.isArrayEqual)(result, ownerPassword); - } - - checkUserPassword(password, userValidationSalt, userPassword) { - const hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userValidationSalt, password.length); - const result = calculatePDF20Hash(password, hashData, []); - return (0, _util.isArrayEqual)(result, userPassword); - } - - getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { - const hashData = new Uint8Array(password.length + 56); - hashData.set(password, 0); - hashData.set(ownerKeySalt, password.length); - hashData.set(userBytes, password.length + ownerKeySalt.length); - const key = calculatePDF20Hash(password, hashData, userBytes); - const cipher = new AES256Cipher(key); - return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); - } - - getUserKey(password, userKeySalt, userEncryption) { - const hashData = new Uint8Array(password.length + 8); - hashData.set(password, 0); - hashData.set(userKeySalt, password.length); - const key = calculatePDF20Hash(password, hashData, []); - const cipher = new AES256Cipher(key); - return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); - } - - } - - return PDF20; -}(); - -exports.PDF20 = PDF20; - -class CipherTransform { - constructor(stringCipherConstructor, streamCipherConstructor) { - this.StringCipherConstructor = stringCipherConstructor; - this.StreamCipherConstructor = streamCipherConstructor; - } - - createStream(stream, length) { - const cipher = new this.StreamCipherConstructor(); - return new _decrypt_stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) { - return cipher.decryptBlock(data, finalize); - }); - } - - decryptString(s) { - const cipher = new this.StringCipherConstructor(); - let data = (0, _util.stringToBytes)(s); - data = cipher.decryptBlock(data, true); - return (0, _util.bytesToString)(data); - } - - encryptString(s) { - const cipher = new this.StringCipherConstructor(); - - if (cipher instanceof AESBaseCipher) { - const strLen = s.length; - const pad = 16 - strLen % 16; - s += String.fromCharCode(pad).repeat(pad); - const iv = new Uint8Array(16); - - if (typeof crypto !== "undefined") { - crypto.getRandomValues(iv); - } else { - for (let i = 0; i < 16; i++) { - iv[i] = Math.floor(256 * Math.random()); - } - } - - let data = (0, _util.stringToBytes)(s); - data = cipher.encrypt(data, iv); - const buf = new Uint8Array(16 + data.length); - buf.set(iv); - buf.set(data, 16); - return (0, _util.bytesToString)(buf); - } - - let data = (0, _util.stringToBytes)(s); - data = cipher.encrypt(data); - return (0, _util.bytesToString)(data); - } - -} - -const CipherTransformFactory = function CipherTransformFactoryClosure() { - const defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]); - - function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) { - if (password) { - const passwordLength = Math.min(127, password.length); - password = password.subarray(0, passwordLength); - } else { - password = []; - } - - let pdfAlgorithm; - - if (revision === 6) { - pdfAlgorithm = new PDF20(); - } else { - pdfAlgorithm = new PDF17(); - } - - if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) { - return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); - } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) { - return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption); - } - - return null; - } - - function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) { - const hashDataSize = 40 + ownerPassword.length + fileId.length; - const hashData = new Uint8Array(hashDataSize); - let i = 0, - j, - n; - - if (password) { - n = Math.min(32, password.length); - - for (; i < n; ++i) { - hashData[i] = password[i]; - } - } - - j = 0; - - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - - for (j = 0, n = ownerPassword.length; j < n; ++j) { - hashData[i++] = ownerPassword[j]; - } - - hashData[i++] = flags & 0xff; - hashData[i++] = flags >> 8 & 0xff; - hashData[i++] = flags >> 16 & 0xff; - hashData[i++] = flags >>> 24 & 0xff; - - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - - if (revision >= 4 && !encryptMetadata) { - hashData[i++] = 0xff; - hashData[i++] = 0xff; - hashData[i++] = 0xff; - hashData[i++] = 0xff; - } - - let hash = calculateMD5(hashData, 0, i); - const keyLengthInBytes = keyLength >> 3; - - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, keyLengthInBytes); - } - } - - const encryptionKey = hash.subarray(0, keyLengthInBytes); - let cipher, checkData; - - if (revision >= 3) { - for (i = 0; i < 32; ++i) { - hashData[i] = defaultPasswordBytes[i]; - } - - for (j = 0, n = fileId.length; j < n; ++j) { - hashData[i++] = fileId[j]; - } - - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); - n = encryptionKey.length; - const derivedKey = new Uint8Array(n); - - for (j = 1; j <= 19; ++j) { - for (let k = 0; k < n; ++k) { - derivedKey[k] = encryptionKey[k] ^ j; - } - - cipher = new ARCFourCipher(derivedKey); - checkData = cipher.encryptBlock(checkData); - } - - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } else { - cipher = new ARCFourCipher(encryptionKey); - checkData = cipher.encryptBlock(defaultPasswordBytes); - - for (j = 0, n = checkData.length; j < n; ++j) { - if (userPassword[j] !== checkData[j]) { - return null; - } - } - } - - return encryptionKey; - } - - function decodeUserPassword(password, ownerPassword, revision, keyLength) { - const hashData = new Uint8Array(32); - let i = 0; - const n = Math.min(32, password.length); - - for (; i < n; ++i) { - hashData[i] = password[i]; - } - - let j = 0; - - while (i < 32) { - hashData[i++] = defaultPasswordBytes[j++]; - } - - let hash = calculateMD5(hashData, 0, i); - const keyLengthInBytes = keyLength >> 3; - - if (revision >= 3) { - for (j = 0; j < 50; ++j) { - hash = calculateMD5(hash, 0, hash.length); - } - } - - let cipher, userPassword; - - if (revision >= 3) { - userPassword = ownerPassword; - const derivedKey = new Uint8Array(keyLengthInBytes); - - for (j = 19; j >= 0; j--) { - for (let k = 0; k < keyLengthInBytes; ++k) { - derivedKey[k] = hash[k] ^ j; - } - - cipher = new ARCFourCipher(derivedKey); - userPassword = cipher.encryptBlock(userPassword); - } - } else { - cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); - userPassword = cipher.encryptBlock(ownerPassword); - } - - return userPassword; - } - - const identityName = _primitives.Name.get("Identity"); - - function buildObjectKey(num, gen, encryptionKey, isAes = false) { - const key = new Uint8Array(encryptionKey.length + 9); - const n = encryptionKey.length; - let i; - - for (i = 0; i < n; ++i) { - key[i] = encryptionKey[i]; - } - - key[i++] = num & 0xff; - key[i++] = num >> 8 & 0xff; - key[i++] = num >> 16 & 0xff; - key[i++] = gen & 0xff; - key[i++] = gen >> 8 & 0xff; - - if (isAes) { - key[i++] = 0x73; - key[i++] = 0x41; - key[i++] = 0x6c; - key[i++] = 0x54; - } - - const hash = calculateMD5(key, 0, i); - return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); - } - - function buildCipherConstructor(cf, name, num, gen, key) { - if (!(name instanceof _primitives.Name)) { - throw new _util.FormatError("Invalid crypt filter name."); - } - - const cryptFilter = cf.get(name.name); - let cfm; - - if (cryptFilter !== null && cryptFilter !== undefined) { - cfm = cryptFilter.get("CFM"); - } - - if (!cfm || cfm.name === "None") { - return function cipherTransformFactoryBuildCipherConstructorNone() { - return new NullCipher(); - }; - } - - if (cfm.name === "V2") { - return function cipherTransformFactoryBuildCipherConstructorV2() { - return new ARCFourCipher(buildObjectKey(num, gen, key, false)); - }; - } - - if (cfm.name === "AESV2") { - return function cipherTransformFactoryBuildCipherConstructorAESV2() { - return new AES128Cipher(buildObjectKey(num, gen, key, true)); - }; - } - - if (cfm.name === "AESV3") { - return function cipherTransformFactoryBuildCipherConstructorAESV3() { - return new AES256Cipher(key); - }; - } - - throw new _util.FormatError("Unknown crypto method"); - } - - class CipherTransformFactory { - constructor(dict, fileId, password) { - const filter = dict.get("Filter"); - - if (!(0, _primitives.isName)(filter, "Standard")) { - throw new _util.FormatError("unknown encryption method"); - } - - this.filterName = filter.name; - this.dict = dict; - const algorithm = dict.get("V"); - - if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) { - throw new _util.FormatError("unsupported encryption algorithm"); - } - - this.algorithm = algorithm; - let keyLength = dict.get("Length"); - - if (!keyLength) { - if (algorithm <= 3) { - keyLength = 40; - } else { - const cfDict = dict.get("CF"); - const streamCryptoName = dict.get("StmF"); - - if (cfDict instanceof _primitives.Dict && streamCryptoName instanceof _primitives.Name) { - cfDict.suppressEncryption = true; - const handlerDict = cfDict.get(streamCryptoName.name); - keyLength = handlerDict && handlerDict.get("Length") || 128; - - if (keyLength < 40) { - keyLength <<= 3; - } - } - } - } - - if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) { - throw new _util.FormatError("invalid key length"); - } - - const ownerPassword = (0, _util.stringToBytes)(dict.get("O")).subarray(0, 32); - const userPassword = (0, _util.stringToBytes)(dict.get("U")).subarray(0, 32); - const flags = dict.get("P"); - const revision = dict.get("R"); - const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get("EncryptMetadata") !== false; - this.encryptMetadata = encryptMetadata; - const fileIdBytes = (0, _util.stringToBytes)(fileId); - let passwordBytes; - - if (password) { - if (revision === 6) { - try { - password = (0, _util.utf8StringToString)(password); - } catch (ex) { - (0, _util.warn)("CipherTransformFactory: " + "Unable to convert UTF8 encoded password."); - } - } - - passwordBytes = (0, _util.stringToBytes)(password); - } - - let encryptionKey; - - if (algorithm !== 5) { - encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); - } else { - const ownerValidationSalt = (0, _util.stringToBytes)(dict.get("O")).subarray(32, 40); - const ownerKeySalt = (0, _util.stringToBytes)(dict.get("O")).subarray(40, 48); - const uBytes = (0, _util.stringToBytes)(dict.get("U")).subarray(0, 48); - const userValidationSalt = (0, _util.stringToBytes)(dict.get("U")).subarray(32, 40); - const userKeySalt = (0, _util.stringToBytes)(dict.get("U")).subarray(40, 48); - const ownerEncryption = (0, _util.stringToBytes)(dict.get("OE")); - const userEncryption = (0, _util.stringToBytes)(dict.get("UE")); - const perms = (0, _util.stringToBytes)(dict.get("Perms")); - encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); - } - - if (!encryptionKey && !password) { - throw new _util.PasswordException("No password given", _util.PasswordResponses.NEED_PASSWORD); - } else if (!encryptionKey && password) { - const decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength); - encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); - } - - if (!encryptionKey) { - throw new _util.PasswordException("Incorrect Password", _util.PasswordResponses.INCORRECT_PASSWORD); - } - - this.encryptionKey = encryptionKey; - - if (algorithm >= 4) { - const cf = dict.get("CF"); - - if (cf instanceof _primitives.Dict) { - cf.suppressEncryption = true; - } - - this.cf = cf; - this.stmf = dict.get("StmF") || identityName; - this.strf = dict.get("StrF") || identityName; - this.eff = dict.get("EFF") || this.stmf; - } - } - - createCipherTransform(num, gen) { - if (this.algorithm === 4 || this.algorithm === 5) { - return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey)); - } - - const key = buildObjectKey(num, gen, this.encryptionKey, false); - - const cipherConstructor = function buildCipherCipherConstructor() { - return new ARCFourCipher(key); - }; - - return new CipherTransform(cipherConstructor, cipherConstructor); - } - - } - - return CipherTransformFactory; -}(); - -exports.CipherTransformFactory = CipherTransformFactory; - -/***/ }), -/* 75 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DecryptStream = void 0; - -var _decode_stream = __w_pdfjs_require__(29); - -const chunkSize = 512; - -class DecryptStream extends _decode_stream.DecodeStream { - constructor(str, maybeLength, decrypt) { - super(maybeLength); - this.str = str; - this.dict = str.dict; - this.decrypt = decrypt; - this.nextChunk = null; - this.initialized = false; - } - - readBlock() { - let chunk; - - if (this.initialized) { - chunk = this.nextChunk; - } else { - chunk = this.str.getBytes(chunkSize); - this.initialized = true; - } - - if (!chunk || chunk.length === 0) { - this.eof = true; - return; - } - - this.nextChunk = this.str.getBytes(chunkSize); - const hasMoreData = this.nextChunk && this.nextChunk.length > 0; - const decrypt = this.decrypt; - chunk = decrypt(chunk, !hasMoreData); - let bufferLength = this.bufferLength; - const n = chunk.length, - buffer = this.ensureBuffer(bufferLength + n); - - for (let i = 0; i < n; i++) { - buffer[bufferLength++] = chunk[i]; - } - - this.bufferLength = bufferLength; - } - -} - -exports.DecryptStream = DecryptStream; - -/***/ }), -/* 76 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XFAFactory = void 0; - -var _xfa_object = __w_pdfjs_require__(77); - -var _bind = __w_pdfjs_require__(81); - -var _data = __w_pdfjs_require__(87); - -var _fonts = __w_pdfjs_require__(85); - -var _utils = __w_pdfjs_require__(78); - -var _util = __w_pdfjs_require__(2); - -var _parser = __w_pdfjs_require__(88); - -var _xhtml = __w_pdfjs_require__(98); - -class XFAFactory { - constructor(data) { - try { - this.root = new _parser.XFAParser().parse(XFAFactory._createDocument(data)); - const binder = new _bind.Binder(this.root); - this.form = binder.bind(); - this.dataHandler = new _data.DataHandler(this.root, binder.getData()); - this.form[_xfa_object.$globalData].template = this.form; - } catch (e) { - (0, _util.warn)(`XFA - an error occurred during parsing and binding: ${e}`); - } - } - - isValid() { - return this.root && this.form; - } - - _createPagesHelper() { - const iterator = this.form[_xfa_object.$toPages](); - - return new Promise((resolve, reject) => { - const nextIteration = () => { - try { - const value = iterator.next(); - - if (value.done) { - resolve(value.value); - } else { - setTimeout(nextIteration, 0); - } - } catch (e) { - reject(e); - } - }; - - setTimeout(nextIteration, 0); - }); - } - - async _createPages() { - try { - this.pages = await this._createPagesHelper(); - this.dims = this.pages.children.map(c => { - const { - width, - height - } = c.attributes.style; - return [0, 0, parseInt(width), parseInt(height)]; - }); - } catch (e) { - (0, _util.warn)(`XFA - an error occurred during layout: ${e}`); - } - } - - getBoundingBox(pageIndex) { - return this.dims[pageIndex]; - } - - async getNumPages() { - if (!this.pages) { - await this._createPages(); - } - - return this.dims.length; - } - - setImages(images) { - this.form[_xfa_object.$globalData].images = images; - } - - setFonts(fonts) { - this.form[_xfa_object.$globalData].fontFinder = new _fonts.FontFinder(fonts); - const missingFonts = []; - - for (let typeface of this.form[_xfa_object.$globalData].usedTypefaces) { - typeface = (0, _utils.stripQuotes)(typeface); - - const font = this.form[_xfa_object.$globalData].fontFinder.find(typeface); - - if (!font) { - missingFonts.push(typeface); - } - } - - if (missingFonts.length > 0) { - return missingFonts; - } - - return null; - } - - appendFonts(fonts, reallyMissingFonts) { - this.form[_xfa_object.$globalData].fontFinder.add(fonts, reallyMissingFonts); - } - - async getPages() { - if (!this.pages) { - await this._createPages(); - } - - const pages = this.pages; - this.pages = null; - return pages; - } - - serializeData(storage) { - return this.dataHandler.serialize(storage); - } - - static _createDocument(data) { - if (!data["/xdp:xdp"]) { - return data["xdp:xdp"]; - } - - return Object.values(data).join(""); - } - - static getRichTextAsHtml(rc) { - if (!rc || typeof rc !== "string") { - return null; - } - - try { - let root = new _parser.XFAParser(_xhtml.XhtmlNamespace, true).parse(rc); - - if (!["body", "xhtml"].includes(root[_xfa_object.$nodeName])) { - const newRoot = _xhtml.XhtmlNamespace.body({}); - - newRoot[_xfa_object.$appendChild](root); - - root = newRoot; - } - - const result = root[_xfa_object.$toHTML](); - - if (!result.success) { - return null; - } - - const { - html - } = result; - const { - attributes - } = html; - - if (attributes) { - if (attributes.class) { - attributes.class = attributes.class.filter(attr => !attr.startsWith("xfa")); - } - - attributes.dir = "auto"; - } - - return { - html, - str: root[_xfa_object.$text]() - }; - } catch (e) { - (0, _util.warn)(`XFA - an error occurred during parsing of rich text: ${e}`); - } - - return null; - } - -} - -exports.XFAFactory = XFAFactory; - -/***/ }), -/* 77 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject = exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject = exports.$uid = exports.$toStyle = exports.$toString = exports.$toPages = exports.$toHTML = exports.$text = exports.$tabIndex = exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = exports.$resolvePrototypes = exports.$removeChild = exports.$pushPara = exports.$pushGlyphs = exports.$popPara = exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = exports.$globalData = exports.$getTemplateRoot = exports.$getSubformParent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace = exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra = exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = exports.$acceptWhitespace = void 0; - -var _utils = __w_pdfjs_require__(78); - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -var _namespaces = __w_pdfjs_require__(79); - -var _som = __w_pdfjs_require__(80); - -const $acceptWhitespace = Symbol(); -exports.$acceptWhitespace = $acceptWhitespace; -const $addHTML = Symbol(); -exports.$addHTML = $addHTML; -const $appendChild = Symbol(); -exports.$appendChild = $appendChild; -const $childrenToHTML = Symbol(); -exports.$childrenToHTML = $childrenToHTML; -const $clean = Symbol(); -exports.$clean = $clean; -const $cleanPage = Symbol(); -exports.$cleanPage = $cleanPage; -const $cleanup = Symbol(); -exports.$cleanup = $cleanup; -const $clone = Symbol(); -exports.$clone = $clone; -const $consumed = Symbol(); -exports.$consumed = $consumed; -const $content = Symbol("content"); -exports.$content = $content; -const $data = Symbol("data"); -exports.$data = $data; -const $dump = Symbol(); -exports.$dump = $dump; -const $extra = Symbol("extra"); -exports.$extra = $extra; -const $finalize = Symbol(); -exports.$finalize = $finalize; -const $flushHTML = Symbol(); -exports.$flushHTML = $flushHTML; -const $getAttributeIt = Symbol(); -exports.$getAttributeIt = $getAttributeIt; -const $getAttributes = Symbol(); -exports.$getAttributes = $getAttributes; -const $getAvailableSpace = Symbol(); -exports.$getAvailableSpace = $getAvailableSpace; -const $getChildrenByClass = Symbol(); -exports.$getChildrenByClass = $getChildrenByClass; -const $getChildrenByName = Symbol(); -exports.$getChildrenByName = $getChildrenByName; -const $getChildrenByNameIt = Symbol(); -exports.$getChildrenByNameIt = $getChildrenByNameIt; -const $getDataValue = Symbol(); -exports.$getDataValue = $getDataValue; -const $getExtra = Symbol(); -exports.$getExtra = $getExtra; -const $getRealChildrenByNameIt = Symbol(); -exports.$getRealChildrenByNameIt = $getRealChildrenByNameIt; -const $getChildren = Symbol(); -exports.$getChildren = $getChildren; -const $getContainedChildren = Symbol(); -exports.$getContainedChildren = $getContainedChildren; -const $getNextPage = Symbol(); -exports.$getNextPage = $getNextPage; -const $getSubformParent = Symbol(); -exports.$getSubformParent = $getSubformParent; -const $getParent = Symbol(); -exports.$getParent = $getParent; -const $getTemplateRoot = Symbol(); -exports.$getTemplateRoot = $getTemplateRoot; -const $globalData = Symbol(); -exports.$globalData = $globalData; -const $hasSettableValue = Symbol(); -exports.$hasSettableValue = $hasSettableValue; -const $ids = Symbol(); -exports.$ids = $ids; -const $indexOf = Symbol(); -exports.$indexOf = $indexOf; -const $insertAt = Symbol(); -exports.$insertAt = $insertAt; -const $isCDATAXml = Symbol(); -exports.$isCDATAXml = $isCDATAXml; -const $isBindable = Symbol(); -exports.$isBindable = $isBindable; -const $isDataValue = Symbol(); -exports.$isDataValue = $isDataValue; -const $isDescendent = Symbol(); -exports.$isDescendent = $isDescendent; -const $isNsAgnostic = Symbol(); -exports.$isNsAgnostic = $isNsAgnostic; -const $isSplittable = Symbol(); -exports.$isSplittable = $isSplittable; -const $isThereMoreWidth = Symbol(); -exports.$isThereMoreWidth = $isThereMoreWidth; -const $isTransparent = Symbol(); -exports.$isTransparent = $isTransparent; -const $isUsable = Symbol(); -exports.$isUsable = $isUsable; -const $lastAttribute = Symbol(); -const $namespaceId = Symbol("namespaceId"); -exports.$namespaceId = $namespaceId; -const $nodeName = Symbol("nodeName"); -exports.$nodeName = $nodeName; -const $nsAttributes = Symbol(); -exports.$nsAttributes = $nsAttributes; -const $onChild = Symbol(); -exports.$onChild = $onChild; -const $onChildCheck = Symbol(); -exports.$onChildCheck = $onChildCheck; -const $onText = Symbol(); -exports.$onText = $onText; -const $pushGlyphs = Symbol(); -exports.$pushGlyphs = $pushGlyphs; -const $popPara = Symbol(); -exports.$popPara = $popPara; -const $pushPara = Symbol(); -exports.$pushPara = $pushPara; -const $removeChild = Symbol(); -exports.$removeChild = $removeChild; -const $root = Symbol("root"); -exports.$root = $root; -const $resolvePrototypes = Symbol(); -exports.$resolvePrototypes = $resolvePrototypes; -const $searchNode = Symbol(); -exports.$searchNode = $searchNode; -const $setId = Symbol(); -exports.$setId = $setId; -const $setSetAttributes = Symbol(); -exports.$setSetAttributes = $setSetAttributes; -const $setValue = Symbol(); -exports.$setValue = $setValue; -const $tabIndex = Symbol(); -exports.$tabIndex = $tabIndex; -const $text = Symbol(); -exports.$text = $text; -const $toPages = Symbol(); -exports.$toPages = $toPages; -const $toHTML = Symbol(); -exports.$toHTML = $toHTML; -const $toString = Symbol(); -exports.$toString = $toString; -const $toStyle = Symbol(); -exports.$toStyle = $toStyle; -const $uid = Symbol("uid"); -exports.$uid = $uid; - -const _applyPrototype = Symbol(); - -const _attributes = Symbol(); - -const _attributeNames = Symbol(); - -const _children = Symbol("_children"); - -const _cloneAttribute = Symbol(); - -const _dataValue = Symbol(); - -const _defaultValue = Symbol(); - -const _filteredChildrenGenerator = Symbol(); - -const _getPrototype = Symbol(); - -const _getUnsetAttributes = Symbol(); - -const _hasChildren = Symbol(); - -const _max = Symbol(); - -const _options = Symbol(); - -const _parent = Symbol("parent"); - -const _resolvePrototypesHelper = Symbol(); - -const _setAttributes = Symbol(); - -const _validator = Symbol(); - -let uid = 0; -const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; - -class XFAObject { - constructor(nsId, name, hasChildren = false) { - this[$namespaceId] = nsId; - this[$nodeName] = name; - this[_hasChildren] = hasChildren; - this[_parent] = null; - this[_children] = []; - this[$uid] = `${name}${uid++}`; - this[$globalData] = null; - } - - [$onChild](child) { - if (!this[_hasChildren] || !this[$onChildCheck](child)) { - return false; - } - - const name = child[$nodeName]; - const node = this[name]; - - if (node instanceof XFAObjectArray) { - if (node.push(child)) { - this[$appendChild](child); - return true; - } - } else { - if (node !== null) { - this[$removeChild](node); - } - - this[name] = child; - this[$appendChild](child); - return true; - } - - let id = ""; - - if (this.id) { - id = ` (id: ${this.id})`; - } else if (this.name) { - id = ` (name: ${this.name} ${this.h.value})`; - } - - (0, _util.warn)(`XFA - node "${this[$nodeName]}"${id} has already enough "${name}"!`); - return false; - } - - [$onChildCheck](child) { - return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId]; - } - - [$isNsAgnostic]() { - return false; - } - - [$acceptWhitespace]() { - return false; - } - - [$isCDATAXml]() { - return false; - } - - [$isBindable]() { - return false; - } - - [$popPara]() { - if (this.para) { - this[$getTemplateRoot]()[$extra].paraStack.pop(); - } - } - - [$pushPara]() { - this[$getTemplateRoot]()[$extra].paraStack.push(this.para); - } - - [$setId](ids) { - if (this.id && this[$namespaceId] === _namespaces.NamespaceIds.template.id) { - ids.set(this.id, this); - } - } - - [$getTemplateRoot]() { - return this[$globalData].template; - } - - [$isSplittable]() { - return false; - } - - [$isThereMoreWidth]() { - return false; - } - - [$appendChild](child) { - child[_parent] = this; - - this[_children].push(child); - - if (!child[$globalData] && this[$globalData]) { - child[$globalData] = this[$globalData]; - } - } - - [$removeChild](child) { - const i = this[_children].indexOf(child); - - this[_children].splice(i, 1); - } - - [$hasSettableValue]() { - return this.hasOwnProperty("value"); - } - - [$setValue](_) {} - - [$onText](_) {} - - [$finalize]() {} - - [$clean](builder) { - delete this[_hasChildren]; - - if (this[$cleanup]) { - builder.clean(this[$cleanup]); - delete this[$cleanup]; - } - } - - [$indexOf](child) { - return this[_children].indexOf(child); - } - - [$insertAt](i, child) { - child[_parent] = this; - - this[_children].splice(i, 0, child); - - if (!child[$globalData] && this[$globalData]) { - child[$globalData] = this[$globalData]; - } - } - - [$isTransparent]() { - return !this.name; - } - - [$lastAttribute]() { - return ""; - } - - [$text]() { - if (this[_children].length === 0) { - return this[$content]; - } - - return this[_children].map(c => c[$text]()).join(""); - } - - get [_attributeNames]() { - const proto = Object.getPrototypeOf(this); - - if (!proto._attributes) { - const attributes = proto._attributes = new Set(); - - for (const name of Object.getOwnPropertyNames(this)) { - if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) { - break; - } - - attributes.add(name); - } - } - - return (0, _util.shadow)(this, _attributeNames, proto._attributes); - } - - [$isDescendent](parent) { - let node = this; - - while (node) { - if (node === parent) { - return true; - } - - node = node[$getParent](); - } - - return false; - } - - [$getParent]() { - return this[_parent]; - } - - [$getSubformParent]() { - return this[$getParent](); - } - - [$getChildren](name = null) { - if (!name) { - return this[_children]; - } - - return this[name]; - } - - [$dump]() { - const dumped = Object.create(null); - - if (this[$content]) { - dumped.$content = this[$content]; - } - - for (const name of Object.getOwnPropertyNames(this)) { - const value = this[name]; - - if (value === null) { - continue; - } - - if (value instanceof XFAObject) { - dumped[name] = value[$dump](); - } else if (value instanceof XFAObjectArray) { - if (!value.isEmpty()) { - dumped[name] = value.dump(); - } - } else { - dumped[name] = value; - } - } - - return dumped; - } - - [$toStyle]() { - return null; - } - - [$toHTML]() { - return _utils.HTMLResult.EMPTY; - } - - *[$getContainedChildren]() { - for (const node of this[$getChildren]()) { - yield node; - } - } - - *[_filteredChildrenGenerator](filter, include) { - for (const node of this[$getContainedChildren]()) { - if (!filter || include === filter.has(node[$nodeName])) { - const availableSpace = this[$getAvailableSpace](); - const res = node[$toHTML](availableSpace); - - if (!res.success) { - this[$extra].failingNode = node; - } - - yield res; - } - } - } - - [$flushHTML]() { - return null; - } - - [$addHTML](html, bbox) { - this[$extra].children.push(html); - } - - [$getAvailableSpace]() {} - - [$childrenToHTML]({ - filter = null, - include = true - }) { - if (!this[$extra].generator) { - this[$extra].generator = this[_filteredChildrenGenerator](filter, include); - } else { - const availableSpace = this[$getAvailableSpace](); - const res = this[$extra].failingNode[$toHTML](availableSpace); - - if (!res.success) { - return res; - } - - if (res.html) { - this[$addHTML](res.html, res.bbox); - } - - delete this[$extra].failingNode; - } - - while (true) { - const gen = this[$extra].generator.next(); - - if (gen.done) { - break; - } - - const res = gen.value; - - if (!res.success) { - return res; - } - - if (res.html) { - this[$addHTML](res.html, res.bbox); - } - } - - this[$extra].generator = null; - return _utils.HTMLResult.EMPTY; - } - - [$setSetAttributes](attributes) { - this[_setAttributes] = new Set(Object.keys(attributes)); - } - - [_getUnsetAttributes](protoAttributes) { - const allAttr = this[_attributeNames]; - const setAttr = this[_setAttributes]; - return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x)); - } - - [$resolvePrototypes](ids, ancestors = new Set()) { - for (const child of this[_children]) { - child[_resolvePrototypesHelper](ids, ancestors); - } - } - - [_resolvePrototypesHelper](ids, ancestors) { - const proto = this[_getPrototype](ids, ancestors); - - if (proto) { - this[_applyPrototype](proto, ids, ancestors); - } else { - this[$resolvePrototypes](ids, ancestors); - } - } - - [_getPrototype](ids, ancestors) { - const { - use, - usehref - } = this; - - if (!use && !usehref) { - return null; - } - - let proto = null; - let somExpression = null; - let id = null; - let ref = use; - - if (usehref) { - ref = usehref; - - if (usehref.startsWith("#som(") && usehref.endsWith(")")) { - somExpression = usehref.slice("#som(".length, usehref.length - 1); - } else if (usehref.startsWith(".#som(") && usehref.endsWith(")")) { - somExpression = usehref.slice(".#som(".length, usehref.length - 1); - } else if (usehref.startsWith("#")) { - id = usehref.slice(1); - } else if (usehref.startsWith(".#")) { - id = usehref.slice(2); - } - } else if (use.startsWith("#")) { - id = use.slice(1); - } else { - somExpression = use; - } - - this.use = this.usehref = ""; - - if (id) { - proto = ids.get(id); - } else { - proto = (0, _som.searchNode)(ids.get($root), this, somExpression, true, false); - - if (proto) { - proto = proto[0]; - } - } - - if (!proto) { - (0, _util.warn)(`XFA - Invalid prototype reference: ${ref}.`); - return null; - } - - if (proto[$nodeName] !== this[$nodeName]) { - (0, _util.warn)(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`); - return null; - } - - if (ancestors.has(proto)) { - (0, _util.warn)(`XFA - Cycle detected in prototypes use.`); - return null; - } - - ancestors.add(proto); - - const protoProto = proto[_getPrototype](ids, ancestors); - - if (protoProto) { - proto[_applyPrototype](protoProto, ids, ancestors); - } - - proto[$resolvePrototypes](ids, ancestors); - ancestors.delete(proto); - return proto; - } - - [_applyPrototype](proto, ids, ancestors) { - if (ancestors.has(proto)) { - (0, _util.warn)(`XFA - Cycle detected in prototypes use.`); - return; - } - - if (!this[$content] && proto[$content]) { - this[$content] = proto[$content]; - } - - const newAncestors = new Set(ancestors); - newAncestors.add(proto); - - for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) { - this[unsetAttrName] = proto[unsetAttrName]; - - if (this[_setAttributes]) { - this[_setAttributes].add(unsetAttrName); - } - } - - for (const name of Object.getOwnPropertyNames(this)) { - if (this[_attributeNames].has(name)) { - continue; - } - - const value = this[name]; - const protoValue = proto[name]; - - if (value instanceof XFAObjectArray) { - for (const child of value[_children]) { - child[_resolvePrototypesHelper](ids, ancestors); - } - - for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) { - const child = proto[_children][i][$clone](); - - if (value.push(child)) { - child[_parent] = this; - - this[_children].push(child); - - child[_resolvePrototypesHelper](ids, ancestors); - } else { - break; - } - } - - continue; - } - - if (value !== null) { - value[$resolvePrototypes](ids, ancestors); - - if (protoValue) { - value[_applyPrototype](protoValue, ids, ancestors); - } - - continue; - } - - if (protoValue !== null) { - const child = protoValue[$clone](); - child[_parent] = this; - this[name] = child; - - this[_children].push(child); - - child[_resolvePrototypesHelper](ids, ancestors); - } - } - } - - static [_cloneAttribute](obj) { - if (Array.isArray(obj)) { - return obj.map(x => XFAObject[_cloneAttribute](x)); - } - - if (typeof obj === "object" && obj !== null) { - return Object.assign({}, obj); - } - - return obj; - } - - [$clone]() { - const clone = Object.create(Object.getPrototypeOf(this)); - - for (const $symbol of Object.getOwnPropertySymbols(this)) { - try { - clone[$symbol] = this[$symbol]; - } catch (_) { - (0, _util.shadow)(clone, $symbol, this[$symbol]); - } - } - - clone[$uid] = `${clone[$nodeName]}${uid++}`; - clone[_children] = []; - - for (const name of Object.getOwnPropertyNames(this)) { - if (this[_attributeNames].has(name)) { - clone[name] = XFAObject[_cloneAttribute](this[name]); - continue; - } - - const value = this[name]; - - if (value instanceof XFAObjectArray) { - clone[name] = new XFAObjectArray(value[_max]); - } else { - clone[name] = null; - } - } - - for (const child of this[_children]) { - const name = child[$nodeName]; - const clonedChild = child[$clone](); - - clone[_children].push(clonedChild); - - clonedChild[_parent] = clone; - - if (clone[name] === null) { - clone[name] = clonedChild; - } else { - clone[name][_children].push(clonedChild); - } - } - - return clone; - } - - [$getChildren](name = null) { - if (!name) { - return this[_children]; - } - - return this[_children].filter(c => c[$nodeName] === name); - } - - [$getChildrenByClass](name) { - return this[name]; - } - - [$getChildrenByName](name, allTransparent, first = true) { - return Array.from(this[$getChildrenByNameIt](name, allTransparent, first)); - } - - *[$getChildrenByNameIt](name, allTransparent, first = true) { - if (name === "parent") { - yield this[_parent]; - return; - } - - for (const child of this[_children]) { - if (child[$nodeName] === name) { - yield child; - } - - if (child.name === name) { - yield child; - } - - if (allTransparent || child[$isTransparent]()) { - yield* child[$getChildrenByNameIt](name, allTransparent, false); - } - } - - if (first && this[_attributeNames].has(name)) { - yield new XFAAttribute(this, name, this[name]); - } - } - -} - -exports.XFAObject = XFAObject; - -class XFAObjectArray { - constructor(max = Infinity) { - this[_max] = max; - this[_children] = []; - } - - push(child) { - const len = this[_children].length; - - if (len <= this[_max]) { - this[_children].push(child); - - return true; - } - - (0, _util.warn)(`XFA - node "${child[$nodeName]}" accepts no more than ${this[_max]} children`); - return false; - } - - isEmpty() { - return this[_children].length === 0; - } - - dump() { - return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]()); - } - - [$clone]() { - const clone = new XFAObjectArray(this[_max]); - clone[_children] = this[_children].map(c => c[$clone]()); - return clone; - } - - get children() { - return this[_children]; - } - - clear() { - this[_children].length = 0; - } - -} - -exports.XFAObjectArray = XFAObjectArray; - -class XFAAttribute { - constructor(node, name, value) { - this[_parent] = node; - this[$nodeName] = name; - this[$content] = value; - this[$consumed] = false; - this[$uid] = `attribute${uid++}`; - } - - [$getParent]() { - return this[_parent]; - } - - [$isDataValue]() { - return true; - } - - [$getDataValue]() { - return this[$content].trim(); - } - - [$setValue](value) { - value = value.value || ""; - this[$content] = value.toString(); - } - - [$text]() { - return this[$content]; - } - - [$isDescendent](parent) { - return this[_parent] === parent || this[_parent][$isDescendent](parent); - } - -} - -exports.XFAAttribute = XFAAttribute; - -class XmlObject extends XFAObject { - constructor(nsId, name, attributes = {}) { - super(nsId, name); - this[$content] = ""; - this[_dataValue] = null; - - if (name !== "#text") { - const map = new Map(); - this[_attributes] = map; - - for (const [attrName, value] of Object.entries(attributes)) { - map.set(attrName, new XFAAttribute(this, attrName, value)); - } - - if (attributes.hasOwnProperty($nsAttributes)) { - const dataNode = attributes[$nsAttributes].xfa.dataNode; - - if (dataNode !== undefined) { - if (dataNode === "dataGroup") { - this[_dataValue] = false; - } else if (dataNode === "dataValue") { - this[_dataValue] = true; - } - } - } - } - - this[$consumed] = false; - } - - [$toString](buf) { - const tagName = this[$nodeName]; - - if (tagName === "#text") { - buf.push((0, _core_utils.encodeToXmlString)(this[$content])); - return; - } - - const utf8TagName = (0, _util.utf8StringToString)(tagName); - const prefix = this[$namespaceId] === NS_DATASETS ? "xfa:" : ""; - buf.push(`<${prefix}${utf8TagName}`); - - for (const [name, value] of this[_attributes].entries()) { - const utf8Name = (0, _util.utf8StringToString)(name); - buf.push(` ${utf8Name}="${(0, _core_utils.encodeToXmlString)(value[$content])}"`); - } - - if (this[_dataValue] !== null) { - if (this[_dataValue]) { - buf.push(` xfa:dataNode="dataValue"`); - } else { - buf.push(` xfa:dataNode="dataGroup"`); - } - } - - if (!this[$content] && this[_children].length === 0) { - buf.push("/>"); - return; - } - - buf.push(">"); - - if (this[$content]) { - if (typeof this[$content] === "string") { - buf.push((0, _core_utils.encodeToXmlString)(this[$content])); - } else { - this[$content][$toString](buf); - } - } else { - for (const child of this[_children]) { - child[$toString](buf); - } - } - - buf.push(``); - } - - [$onChild](child) { - if (this[$content]) { - const node = new XmlObject(this[$namespaceId], "#text"); - this[$appendChild](node); - node[$content] = this[$content]; - this[$content] = ""; - } - - this[$appendChild](child); - return true; - } - - [$onText](str) { - this[$content] += str; - } - - [$finalize]() { - if (this[$content] && this[_children].length > 0) { - const node = new XmlObject(this[$namespaceId], "#text"); - this[$appendChild](node); - node[$content] = this[$content]; - delete this[$content]; - } - } - - [$toHTML]() { - if (this[$nodeName] === "#text") { - return _utils.HTMLResult.success({ - name: "#text", - value: this[$content] - }); - } - - return _utils.HTMLResult.EMPTY; - } - - [$getChildren](name = null) { - if (!name) { - return this[_children]; - } - - return this[_children].filter(c => c[$nodeName] === name); - } - - [$getAttributes]() { - return this[_attributes]; - } - - [$getChildrenByClass](name) { - const value = this[_attributes].get(name); - - if (value !== undefined) { - return value; - } - - return this[$getChildren](name); - } - - *[$getChildrenByNameIt](name, allTransparent) { - const value = this[_attributes].get(name); - - if (value) { - yield value; - } - - for (const child of this[_children]) { - if (child[$nodeName] === name) { - yield child; - } - - if (allTransparent) { - yield* child[$getChildrenByNameIt](name, allTransparent); - } - } - } - - *[$getAttributeIt](name, skipConsumed) { - const value = this[_attributes].get(name); - - if (value && (!skipConsumed || !value[$consumed])) { - yield value; - } - - for (const child of this[_children]) { - yield* child[$getAttributeIt](name, skipConsumed); - } - } - - *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) { - for (const child of this[_children]) { - if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) { - yield child; - } - - if (allTransparent) { - yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed); - } - } - } - - [$isDataValue]() { - if (this[_dataValue] === null) { - return this[_children].length === 0 || this[_children][0][$namespaceId] === _namespaces.NamespaceIds.xhtml.id; - } - - return this[_dataValue]; - } - - [$getDataValue]() { - if (this[_dataValue] === null) { - if (this[_children].length === 0) { - return this[$content].trim(); - } - - if (this[_children][0][$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { - return this[_children][0][$text]().trim(); - } - - return null; - } - - return this[$content].trim(); - } - - [$setValue](value) { - value = value.value || ""; - this[$content] = value.toString(); - } - - [$dump](hasNS = false) { - const dumped = Object.create(null); - - if (hasNS) { - dumped.$ns = this[$namespaceId]; - } - - if (this[$content]) { - dumped.$content = this[$content]; - } - - dumped.$name = this[$nodeName]; - dumped.children = []; - - for (const child of this[_children]) { - dumped.children.push(child[$dump](hasNS)); - } - - dumped.attributes = Object.create(null); - - for (const [name, value] of this[_attributes]) { - dumped.attributes[name] = value[$content]; - } - - return dumped; - } - -} - -exports.XmlObject = XmlObject; - -class ContentObject extends XFAObject { - constructor(nsId, name) { - super(nsId, name); - this[$content] = ""; - } - - [$onText](text) { - this[$content] += text; - } - - [$finalize]() {} - -} - -exports.ContentObject = ContentObject; - -class OptionObject extends ContentObject { - constructor(nsId, name, options) { - super(nsId, name); - this[_options] = options; - } - - [$finalize]() { - this[$content] = (0, _utils.getKeyword)({ - data: this[$content], - defaultValue: this[_options][0], - validate: k => this[_options].includes(k) - }); - } - - [$clean](builder) { - super[$clean](builder); - delete this[_options]; - } - -} - -exports.OptionObject = OptionObject; - -class StringObject extends ContentObject { - [$finalize]() { - this[$content] = this[$content].trim(); - } - -} - -exports.StringObject = StringObject; - -class IntegerObject extends ContentObject { - constructor(nsId, name, defaultValue, validator) { - super(nsId, name); - this[_defaultValue] = defaultValue; - this[_validator] = validator; - } - - [$finalize]() { - this[$content] = (0, _utils.getInteger)({ - data: this[$content], - defaultValue: this[_defaultValue], - validate: this[_validator] - }); - } - - [$clean](builder) { - super[$clean](builder); - delete this[_defaultValue]; - delete this[_validator]; - } - -} - -exports.IntegerObject = IntegerObject; - -class Option01 extends IntegerObject { - constructor(nsId, name) { - super(nsId, name, 0, n => n === 1); - } - -} - -exports.Option01 = Option01; - -class Option10 extends IntegerObject { - constructor(nsId, name) { - super(nsId, name, 1, n => n === 0); - } - -} - -exports.Option10 = Option10; - -/***/ }), -/* 78 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.HTMLResult = void 0; -exports.getBBox = getBBox; -exports.getColor = getColor; -exports.getFloat = getFloat; -exports.getInteger = getInteger; -exports.getKeyword = getKeyword; -exports.getMeasurement = getMeasurement; -exports.getRatio = getRatio; -exports.getRelevant = getRelevant; -exports.getStringOption = getStringOption; -exports.stripQuotes = stripQuotes; - -var _util = __w_pdfjs_require__(2); - -const dimConverters = { - pt: x => x, - cm: x => x / 2.54 * 72, - mm: x => x / (10 * 2.54) * 72, - in: x => x * 72, - px: x => x -}; -const measurementPattern = /([+-]?\d+\.?\d*)(.*)/; - -function stripQuotes(str) { - if (str.startsWith("'") || str.startsWith('"')) { - return str.slice(1, str.length - 1); - } - - return str; -} - -function getInteger({ - data, - defaultValue, - validate -}) { - if (!data) { - return defaultValue; - } - - data = data.trim(); - const n = parseInt(data, 10); - - if (!isNaN(n) && validate(n)) { - return n; - } - - return defaultValue; -} - -function getFloat({ - data, - defaultValue, - validate -}) { - if (!data) { - return defaultValue; - } - - data = data.trim(); - const n = parseFloat(data); - - if (!isNaN(n) && validate(n)) { - return n; - } - - return defaultValue; -} - -function getKeyword({ - data, - defaultValue, - validate -}) { - if (!data) { - return defaultValue; - } - - data = data.trim(); - - if (validate(data)) { - return data; - } - - return defaultValue; -} - -function getStringOption(data, options) { - return getKeyword({ - data, - defaultValue: options[0], - validate: k => options.includes(k) - }); -} - -function getMeasurement(str, def = "0") { - def = def || "0"; - - if (!str) { - return getMeasurement(def); - } - - const match = str.trim().match(measurementPattern); - - if (!match) { - return getMeasurement(def); - } - - const [, valueStr, unit] = match; - const value = parseFloat(valueStr); - - if (isNaN(value)) { - return getMeasurement(def); - } - - if (value === 0) { - return 0; - } - - const conv = dimConverters[unit]; - - if (conv) { - return conv(value); - } - - return value; -} - -function getRatio(data) { - if (!data) { - return { - num: 1, - den: 1 - }; - } - - const ratio = data.trim().split(/\s*:\s*/).map(x => parseFloat(x)).filter(x => !isNaN(x)); - - if (ratio.length === 1) { - ratio.push(1); - } - - if (ratio.length === 0) { - return { - num: 1, - den: 1 - }; - } - - const [num, den] = ratio; - return { - num, - den - }; -} - -function getRelevant(data) { - if (!data) { - return []; - } - - return data.trim().split(/\s+/).map(e => { - return { - excluded: e[0] === "-", - viewname: e.substring(1) - }; - }); -} - -function getColor(data, def = [0, 0, 0]) { - let [r, g, b] = def; - - if (!data) { - return { - r, - g, - b - }; - } - - const color = data.trim().split(/\s*,\s*/).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255)).map(c => isNaN(c) ? 0 : c); - - if (color.length < 3) { - return { - r, - g, - b - }; - } - - [r, g, b] = color; - return { - r, - g, - b - }; -} - -function getBBox(data) { - const def = -1; - - if (!data) { - return { - x: def, - y: def, - width: def, - height: def - }; - } - - const bbox = data.trim().split(/\s*,\s*/).map(m => getMeasurement(m, "-1")); - - if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) { - return { - x: def, - y: def, - width: def, - height: def - }; - } - - const [x, y, width, height] = bbox; - return { - x, - y, - width, - height - }; -} - -class HTMLResult { - static get FAILURE() { - return (0, _util.shadow)(this, "FAILURE", new HTMLResult(false, null, null, null)); - } - - static get EMPTY() { - return (0, _util.shadow)(this, "EMPTY", new HTMLResult(true, null, null, null)); - } - - constructor(success, html, bbox, breakNode) { - this.success = success; - this.html = html; - this.bbox = bbox; - this.breakNode = breakNode; - } - - isBreak() { - return !!this.breakNode; - } - - static breakNode(node) { - return new HTMLResult(false, null, null, node); - } - - static success(html, bbox = null) { - return new HTMLResult(true, html, bbox, null); - } - -} - -exports.HTMLResult = HTMLResult; - -/***/ }), -/* 79 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NamespaceIds = exports.$buildXFAObject = void 0; -const $buildXFAObject = Symbol(); -exports.$buildXFAObject = $buildXFAObject; -const NamespaceIds = { - config: { - id: 0, - check: ns => ns.startsWith("http://www.xfa.org/schema/xci/") - }, - connectionSet: { - id: 1, - check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-connection-set/") - }, - datasets: { - id: 2, - check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-data/") - }, - form: { - id: 3, - check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-form/") - }, - localeSet: { - id: 4, - check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-locale-set/") - }, - pdf: { - id: 5, - check: ns => ns === "http://ns.adobe.com/xdp/pdf/" - }, - signature: { - id: 6, - check: ns => ns === "http://www.w3.org/2000/09/xmldsig#" - }, - sourceSet: { - id: 7, - check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-source-set/") - }, - stylesheet: { - id: 8, - check: ns => ns === "http://www.w3.org/1999/XSL/Transform" - }, - template: { - id: 9, - check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-template/") - }, - xdc: { - id: 10, - check: ns => ns.startsWith("http://www.xfa.org/schema/xdc/") - }, - xdp: { - id: 11, - check: ns => ns === "http://ns.adobe.com/xdp/" - }, - xfdf: { - id: 12, - check: ns => ns === "http://ns.adobe.com/xfdf/" - }, - xhtml: { - id: 13, - check: ns => ns === "http://www.w3.org/1999/xhtml" - }, - xmpmeta: { - id: 14, - check: ns => ns === "http://ns.adobe.com/xmpmeta/" - } -}; -exports.NamespaceIds = NamespaceIds; - -/***/ }), -/* 80 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createDataNode = createDataNode; -exports.searchNode = searchNode; - -var _xfa_object = __w_pdfjs_require__(77); - -var _namespaces = __w_pdfjs_require__(79); - -var _util = __w_pdfjs_require__(2); - -const namePattern = /^[^.[]+/; -const indexPattern = /^[^\]]+/; -const operators = { - dot: 0, - dotDot: 1, - dotHash: 2, - dotBracket: 3, - dotParen: 4 -}; -const shortcuts = new Map([["$data", (root, current) => root.datasets ? root.datasets.data : root], ["$record", (root, current) => (root.datasets ? root.datasets.data : root)[_xfa_object.$getChildren]()[0]], ["$template", (root, current) => root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], ["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, current) => current]]); -const somCache = new WeakMap(); -const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; - -function parseIndex(index) { - index = index.trim(); - - if (index === "*") { - return Infinity; - } - - return parseInt(index, 10) || 0; -} - -function parseExpression(expr, dotDotAllowed, noExpr = true) { - let match = expr.match(namePattern); - - if (!match) { - return null; - } - - let [name] = match; - const parsed = [{ - name, - cacheName: "." + name, - index: 0, - js: null, - formCalc: null, - operator: operators.dot - }]; - let pos = name.length; - - while (pos < expr.length) { - const spos = pos; - const char = expr.charAt(pos++); - - if (char === "[") { - match = expr.slice(pos).match(indexPattern); - - if (!match) { - (0, _util.warn)("XFA - Invalid index in SOM expression"); - return null; - } - - parsed[parsed.length - 1].index = parseIndex(match[0]); - pos += match[0].length + 1; - continue; - } - - let operator; - - switch (expr.charAt(pos)) { - case ".": - if (!dotDotAllowed) { - return null; - } - - pos++; - operator = operators.dotDot; - break; - - case "#": - pos++; - operator = operators.dotHash; - break; - - case "[": - if (noExpr) { - (0, _util.warn)("XFA - SOM expression contains a FormCalc subexpression which is not supported for now."); - return null; - } - - operator = operators.dotBracket; - break; - - case "(": - if (noExpr) { - (0, _util.warn)("XFA - SOM expression contains a JavaScript subexpression which is not supported for now."); - return null; - } - - operator = operators.dotParen; - break; - - default: - operator = operators.dot; - break; - } - - match = expr.slice(pos).match(namePattern); - - if (!match) { - break; - } - - [name] = match; - pos += name.length; - parsed.push({ - name, - cacheName: expr.slice(spos, pos), - operator, - index: 0, - js: null, - formCalc: null - }); - } - - return parsed; -} - -function searchNode(root, container, expr, dotDotAllowed = true, useCache = true) { - const parsed = parseExpression(expr, dotDotAllowed); - - if (!parsed) { - return null; - } - - const fn = shortcuts.get(parsed[0].name); - let i = 0; - let isQualified; - - if (fn) { - isQualified = true; - root = [fn(root, container)]; - i = 1; - } else { - isQualified = container === null; - root = [container || root]; - } - - for (let ii = parsed.length; i < ii; i++) { - const { - name, - cacheName, - operator, - index - } = parsed[i]; - const nodes = []; - - for (const node of root) { - if (!(node instanceof _xfa_object.XFAObject)) { - continue; - } - - let children, cached; - - if (useCache) { - cached = somCache.get(node); - - if (!cached) { - cached = new Map(); - somCache.set(node, cached); - } - - children = cached.get(cacheName); - } - - if (!children) { - switch (operator) { - case operators.dot: - children = node[_xfa_object.$getChildrenByName](name, false); - break; - - case operators.dotDot: - children = node[_xfa_object.$getChildrenByName](name, true); - break; - - case operators.dotHash: - children = node[_xfa_object.$getChildrenByClass](name); - - if (children instanceof _xfa_object.XFAObjectArray) { - children = children.children; - } else { - children = [children]; - } - - break; - - default: - break; - } - - if (useCache) { - cached.set(cacheName, children); - } - } - - if (children.length > 0) { - nodes.push(children); - } - } - - if (nodes.length === 0 && !isQualified && i === 0) { - const parent = container[_xfa_object.$getParent](); - - container = parent; - - if (!container) { - return null; - } - - i = -1; - root = [container]; - continue; - } - - if (isFinite(index)) { - root = nodes.filter(node => index < node.length).map(node => node[index]); - } else { - root = nodes.reduce((acc, node) => acc.concat(node), []); - } - } - - if (root.length === 0) { - return null; - } - - return root; -} - -function createNodes(root, path) { - let node = null; - - for (const { - name, - index - } of path) { - for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) { - const nsId = root[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : root[_xfa_object.$namespaceId]; - node = new _xfa_object.XmlObject(nsId, name); - - root[_xfa_object.$appendChild](node); - } - - root = node; - } - - return node; -} - -function createDataNode(root, container, expr) { - const parsed = parseExpression(expr); - - if (!parsed) { - return null; - } - - if (parsed.some(x => x.operator === operators.dotDot)) { - return null; - } - - const fn = shortcuts.get(parsed[0].name); - let i = 0; - - if (fn) { - root = fn(root, container); - i = 1; - } else { - root = container || root; - } - - for (let ii = parsed.length; i < ii; i++) { - const { - name, - operator, - index - } = parsed[i]; - - if (!isFinite(index)) { - parsed[i].index = 0; - return createNodes(root, parsed.slice(i)); - } - - let children; - - switch (operator) { - case operators.dot: - children = root[_xfa_object.$getChildrenByName](name, false); - break; - - case operators.dotDot: - children = root[_xfa_object.$getChildrenByName](name, true); - break; - - case operators.dotHash: - children = root[_xfa_object.$getChildrenByClass](name); - - if (children instanceof _xfa_object.XFAObjectArray) { - children = children.children; - } else { - children = [children]; - } - - break; - - default: - break; - } - - if (children.length === 0) { - return createNodes(root, parsed.slice(i)); - } - - if (index < children.length) { - const child = children[index]; - - if (!(child instanceof _xfa_object.XFAObject)) { - (0, _util.warn)(`XFA - Cannot create a node.`); - return null; - } - - root = child; - } else { - parsed[i].index = index - children.length; - return createNodes(root, parsed.slice(i)); - } - } - - return null; -} - -/***/ }), -/* 81 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Binder = void 0; - -var _xfa_object = __w_pdfjs_require__(77); - -var _template = __w_pdfjs_require__(82); - -var _som = __w_pdfjs_require__(80); - -var _namespaces = __w_pdfjs_require__(79); - -var _util = __w_pdfjs_require__(2); - -const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; - -function createText(content) { - const node = new _template.Text({}); - node[_xfa_object.$content] = content; - return node; -} - -class Binder { - constructor(root) { - this.root = root; - this.datasets = root.datasets; - - if (root.datasets && root.datasets.data) { - this.data = root.datasets.data; - } else { - this.data = new _xfa_object.XmlObject(_namespaces.NamespaceIds.datasets.id, "data"); - } - - this.emptyMerge = this.data[_xfa_object.$getChildren]().length === 0; - this.root.form = this.form = root.template[_xfa_object.$clone](); - } - - _isConsumeData() { - return !this.emptyMerge && this._mergeMode; - } - - _isMatchTemplate() { - return !this._isConsumeData(); - } - - bind() { - this._bindElement(this.form, this.data); - - return this.form; - } - - getData() { - return this.data; - } - - _bindValue(formNode, data, picture) { - formNode[_xfa_object.$data] = data; - - if (formNode[_xfa_object.$hasSettableValue]()) { - if (data[_xfa_object.$isDataValue]()) { - const value = data[_xfa_object.$getDataValue](); - - formNode[_xfa_object.$setValue](createText(value)); - } else if (formNode instanceof _template.Field && formNode.ui && formNode.ui.choiceList && formNode.ui.choiceList.open === "multiSelect") { - const value = data[_xfa_object.$getChildren]().map(child => child[_xfa_object.$content].trim()).join("\n"); - - formNode[_xfa_object.$setValue](createText(value)); - } else if (this._isConsumeData()) { - (0, _util.warn)(`XFA - Nodes haven't the same type.`); - } - } else if (!data[_xfa_object.$isDataValue]() || this._isMatchTemplate()) { - this._bindElement(formNode, data); - } else { - (0, _util.warn)(`XFA - Nodes haven't the same type.`); - } - } - - _findDataByNameToConsume(name, isValue, dataNode, global) { - if (!name) { - return null; - } - - let generator, match; - - for (let i = 0; i < 3; i++) { - generator = dataNode[_xfa_object.$getRealChildrenByNameIt](name, false, true); - - while (true) { - match = generator.next().value; - - if (!match) { - break; - } - - if (isValue === match[_xfa_object.$isDataValue]()) { - return match; - } - } - - if (dataNode[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.datasets.id && dataNode[_xfa_object.$nodeName] === "data") { - break; - } - - dataNode = dataNode[_xfa_object.$getParent](); - } - - if (!global) { - return null; - } - - generator = this.data[_xfa_object.$getRealChildrenByNameIt](name, true, false); - match = generator.next().value; - - if (match) { - return match; - } - - generator = this.data[_xfa_object.$getAttributeIt](name, true); - match = generator.next().value; - - if (match && match[_xfa_object.$isDataValue]()) { - return match; - } - - return null; - } - - _setProperties(formNode, dataNode) { - if (!formNode.hasOwnProperty("setProperty")) { - return; - } - - for (const { - ref, - target, - connection - } of formNode.setProperty.children) { - if (connection) { - continue; - } - - if (!ref) { - continue; - } - - const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false); - - if (!nodes) { - (0, _util.warn)(`XFA - Invalid reference: ${ref}.`); - continue; - } - - const [node] = nodes; - - if (!node[_xfa_object.$isDescendent](this.data)) { - (0, _util.warn)(`XFA - Invalid node: must be a data node.`); - continue; - } - - const targetNodes = (0, _som.searchNode)(this.root, formNode, target, false, false); - - if (!targetNodes) { - (0, _util.warn)(`XFA - Invalid target: ${target}.`); - continue; - } - - const [targetNode] = targetNodes; - - if (!targetNode[_xfa_object.$isDescendent](formNode)) { - (0, _util.warn)(`XFA - Invalid target: must be a property or subproperty.`); - continue; - } - - const targetParent = targetNode[_xfa_object.$getParent](); - - if (targetNode instanceof _template.SetProperty || targetParent instanceof _template.SetProperty) { - (0, _util.warn)(`XFA - Invalid target: cannot be a setProperty or one of its properties.`); - continue; - } - - if (targetNode instanceof _template.BindItems || targetParent instanceof _template.BindItems) { - (0, _util.warn)(`XFA - Invalid target: cannot be a bindItems or one of its properties.`); - continue; - } - - const content = node[_xfa_object.$text](); - - const name = targetNode[_xfa_object.$nodeName]; - - if (targetNode instanceof _xfa_object.XFAAttribute) { - const attrs = Object.create(null); - attrs[name] = content; - const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]); - targetParent[name] = obj[name]; - continue; - } - - if (!targetNode.hasOwnProperty(_xfa_object.$content)) { - (0, _util.warn)(`XFA - Invalid node to use in setProperty`); - continue; - } - - targetNode[_xfa_object.$data] = node; - targetNode[_xfa_object.$content] = content; - - targetNode[_xfa_object.$finalize](); - } - } - - _bindItems(formNode, dataNode) { - if (!formNode.hasOwnProperty("items") || !formNode.hasOwnProperty("bindItems") || formNode.bindItems.isEmpty()) { - return; - } - - for (const item of formNode.items.children) { - formNode[_xfa_object.$removeChild](item); - } - - formNode.items.clear(); - const labels = new _template.Items({}); - const values = new _template.Items({}); - - formNode[_xfa_object.$appendChild](labels); - - formNode.items.push(labels); - - formNode[_xfa_object.$appendChild](values); - - formNode.items.push(values); - - for (const { - ref, - labelRef, - valueRef, - connection - } of formNode.bindItems.children) { - if (connection) { - continue; - } - - if (!ref) { - continue; - } - - const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false); - - if (!nodes) { - (0, _util.warn)(`XFA - Invalid reference: ${ref}.`); - continue; - } - - for (const node of nodes) { - if (!node[_xfa_object.$isDescendent](this.datasets)) { - (0, _util.warn)(`XFA - Invalid ref (${ref}): must be a datasets child.`); - continue; - } - - const labelNodes = (0, _som.searchNode)(this.root, node, labelRef, true, false); - - if (!labelNodes) { - (0, _util.warn)(`XFA - Invalid label: ${labelRef}.`); - continue; - } - - const [labelNode] = labelNodes; - - if (!labelNode[_xfa_object.$isDescendent](this.datasets)) { - (0, _util.warn)(`XFA - Invalid label: must be a datasets child.`); - continue; - } - - const valueNodes = (0, _som.searchNode)(this.root, node, valueRef, true, false); - - if (!valueNodes) { - (0, _util.warn)(`XFA - Invalid value: ${valueRef}.`); - continue; - } - - const [valueNode] = valueNodes; - - if (!valueNode[_xfa_object.$isDescendent](this.datasets)) { - (0, _util.warn)(`XFA - Invalid value: must be a datasets child.`); - continue; - } - - const label = createText(labelNode[_xfa_object.$text]()); - const value = createText(valueNode[_xfa_object.$text]()); - - labels[_xfa_object.$appendChild](label); - - labels.text.push(label); - - values[_xfa_object.$appendChild](value); - - values.text.push(value); - } - } - } - - _bindOccurrences(formNode, matches, picture) { - let baseClone; - - if (matches.length > 1) { - baseClone = formNode[_xfa_object.$clone](); - - baseClone[_xfa_object.$removeChild](baseClone.occur); - - baseClone.occur = null; - } - - this._bindValue(formNode, matches[0], picture); - - this._setProperties(formNode, matches[0]); - - this._bindItems(formNode, matches[0]); - - if (matches.length === 1) { - return; - } - - const parent = formNode[_xfa_object.$getParent](); - - const name = formNode[_xfa_object.$nodeName]; - - const pos = parent[_xfa_object.$indexOf](formNode); - - for (let i = 1, ii = matches.length; i < ii; i++) { - const match = matches[i]; - - const clone = baseClone[_xfa_object.$clone](); - - parent[name].push(clone); - - parent[_xfa_object.$insertAt](pos + i, clone); - - this._bindValue(clone, match, picture); - - this._setProperties(clone, match); - - this._bindItems(clone, match); - } - } - - _createOccurrences(formNode) { - if (!this.emptyMerge) { - return; - } - - const { - occur - } = formNode; - - if (!occur || occur.initial <= 1) { - return; - } - - const parent = formNode[_xfa_object.$getParent](); - - const name = formNode[_xfa_object.$nodeName]; - - if (!(parent[name] instanceof _xfa_object.XFAObjectArray)) { - return; - } - - let currentNumber; - - if (formNode.name) { - currentNumber = parent[name].children.filter(e => e.name === formNode.name).length; - } else { - currentNumber = parent[name].children.length; - } - - const pos = parent[_xfa_object.$indexOf](formNode) + 1; - const ii = occur.initial - currentNumber; - - if (ii) { - const nodeClone = formNode[_xfa_object.$clone](); - - nodeClone[_xfa_object.$removeChild](nodeClone.occur); - - nodeClone.occur = null; - parent[name].push(nodeClone); - - parent[_xfa_object.$insertAt](pos, nodeClone); - - for (let i = 1; i < ii; i++) { - const clone = nodeClone[_xfa_object.$clone](); - - parent[name].push(clone); - - parent[_xfa_object.$insertAt](pos + i, clone); - } - } - } - - _getOccurInfo(formNode) { - const { - name, - occur - } = formNode; - - if (!occur || !name) { - return [1, 1]; - } - - const max = occur.max === -1 ? Infinity : occur.max; - return [occur.min, max]; - } - - _setAndBind(formNode, dataNode) { - this._setProperties(formNode, dataNode); - - this._bindItems(formNode, dataNode); - - this._bindElement(formNode, dataNode); - } - - _bindElement(formNode, dataNode) { - const uselessNodes = []; - - this._createOccurrences(formNode); - - for (const child of formNode[_xfa_object.$getChildren]()) { - if (child[_xfa_object.$data]) { - continue; - } - - if (this._mergeMode === undefined && child[_xfa_object.$nodeName] === "subform") { - this._mergeMode = child.mergeMode === "consumeData"; - - const dataChildren = dataNode[_xfa_object.$getChildren](); - - if (dataChildren.length > 0) { - this._bindOccurrences(child, [dataChildren[0]], null); - } else if (this.emptyMerge) { - const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : dataNode[_xfa_object.$namespaceId]; - const dataChild = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name || "root"); - - dataNode[_xfa_object.$appendChild](dataChild); - - this._bindElement(child, dataChild); - } - - continue; - } - - if (!child[_xfa_object.$isBindable]()) { - continue; - } - - let global = false; - let picture = null; - let ref = null; - let match = null; - - if (child.bind) { - switch (child.bind.match) { - case "none": - this._setAndBind(child, dataNode); - - continue; - - case "global": - global = true; - break; - - case "dataRef": - if (!child.bind.ref) { - (0, _util.warn)(`XFA - ref is empty in node ${child[_xfa_object.$nodeName]}.`); - - this._setAndBind(child, dataNode); - - continue; - } - - ref = child.bind.ref; - break; - - default: - break; - } - - if (child.bind.picture) { - picture = child.bind.picture[_xfa_object.$content]; - } - } - - const [min, max] = this._getOccurInfo(child); - - if (ref) { - match = (0, _som.searchNode)(this.root, dataNode, ref, true, false); - - if (match === null) { - match = (0, _som.createDataNode)(this.data, dataNode, ref); - - if (!match) { - continue; - } - - if (this._isConsumeData()) { - match[_xfa_object.$consumed] = true; - } - - this._setAndBind(child, match); - - continue; - } else { - if (this._isConsumeData()) { - match = match.filter(node => !node[_xfa_object.$consumed]); - } - - if (match.length > max) { - match = match.slice(0, max); - } else if (match.length === 0) { - match = null; - } - - if (match && this._isConsumeData()) { - match.forEach(node => { - node[_xfa_object.$consumed] = true; - }); - } - } - } else { - if (!child.name) { - this._setAndBind(child, dataNode); - - continue; - } - - if (this._isConsumeData()) { - const matches = []; - - while (matches.length < max) { - const found = this._findDataByNameToConsume(child.name, child[_xfa_object.$hasSettableValue](), dataNode, global); - - if (!found) { - break; - } - - found[_xfa_object.$consumed] = true; - matches.push(found); - } - - match = matches.length > 0 ? matches : null; - } else { - match = dataNode[_xfa_object.$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value; - - if (!match) { - if (min === 0) { - uselessNodes.push(child); - continue; - } - - const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : dataNode[_xfa_object.$namespaceId]; - match = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name); - - if (this.emptyMerge) { - match[_xfa_object.$consumed] = true; - } - - dataNode[_xfa_object.$appendChild](match); - - this._setAndBind(child, match); - - continue; - } - - if (this.emptyMerge) { - match[_xfa_object.$consumed] = true; - } - - match = [match]; - } - } - - if (match) { - this._bindOccurrences(child, match, picture); - } else if (min > 0) { - this._setAndBind(child, dataNode); - } else { - uselessNodes.push(child); - } - } - - uselessNodes.forEach(node => node[_xfa_object.$getParent]()[_xfa_object.$removeChild](node)); - } - -} - -exports.Binder = Binder; - -/***/ }), -/* 82 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = exports.Items = exports.Field = exports.BindItems = void 0; - -var _xfa_object = __w_pdfjs_require__(77); - -var _namespaces = __w_pdfjs_require__(79); - -var _layout = __w_pdfjs_require__(83); - -var _html_utils = __w_pdfjs_require__(84); - -var _utils = __w_pdfjs_require__(78); - -var _util = __w_pdfjs_require__(2); - -var _fonts = __w_pdfjs_require__(85); - -var _core_utils = __w_pdfjs_require__(8); - -var _som = __w_pdfjs_require__(80); - -const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id; -const SVG_NS = "http://www.w3.org/2000/svg"; -const MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2; -const MAX_EMPTY_PAGES = 3; -const DEFAULT_TAB_INDEX = 5000; -const HEADING_PATTERN = /^H(\d+)$/; -const MIMES = new Set(["image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/png", "image/apng", "image/x-png", "image/bmp", "image/x-ms-bmp", "image/tiff", "image/tif", "application/octet-stream"]); -const IMAGES_HEADERS = [[[0x42, 0x4d], "image/bmp"], [[0xff, 0xd8, 0xff], "image/jpeg"], [[0x49, 0x49, 0x2a, 0x00], "image/tiff"], [[0x4d, 0x4d, 0x00, 0x2a], "image/tiff"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], "image/gif"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], "image/png"]]; - -function getBorderDims(node) { - if (!node || !node.border) { - return { - w: 0, - h: 0 - }; - } - - const borderExtra = node.border[_xfa_object.$getExtra](); - - if (!borderExtra) { - return { - w: 0, - h: 0 - }; - } - - return { - w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2], - h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3] - }; -} - -function hasMargin(node) { - return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset); -} - -function _setValue(templateNode, value) { - if (!templateNode.value) { - const nodeValue = new Value({}); - - templateNode[_xfa_object.$appendChild](nodeValue); - - templateNode.value = nodeValue; - } - - templateNode.value[_xfa_object.$setValue](value); -} - -function* getContainedChildren(node) { - for (const child of node[_xfa_object.$getChildren]()) { - if (child instanceof SubformSet) { - yield* child[_xfa_object.$getContainedChildren](); - continue; - } - - yield child; - } -} - -function setTabIndex(node) { - while (node) { - if (!node.traversal) { - node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex]; - return; - } - - if (node[_xfa_object.$tabIndex]) { - return; - } - - let next = null; - - for (const child of node.traversal[_xfa_object.$getChildren]()) { - if (child.operation === "next") { - next = child; - break; - } - } - - if (!next || !next.ref) { - node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex]; - return; - } - - const root = node[_xfa_object.$getTemplateRoot](); - - node[_xfa_object.$tabIndex] = ++root[_xfa_object.$tabIndex]; - - const ref = root[_xfa_object.$searchNode](next.ref, node); - - if (!ref) { - return; - } - - node = ref[0]; - } -} - -function applyAssist(obj, attributes) { - const assist = obj.assist; - - if (assist) { - const assistTitle = assist[_xfa_object.$toHTML](); - - if (assistTitle) { - attributes.title = assistTitle; - } - - const role = assist.role; - const match = role.match(HEADING_PATTERN); - - if (match) { - const ariaRole = "heading"; - const ariaLevel = match[1]; - attributes.role = ariaRole; - attributes["aria-level"] = ariaLevel; - } - } - - if (obj.layout === "table") { - attributes.role = "table"; - } else if (obj.layout === "row") { - attributes.role = "row"; - } else { - const parent = obj[_xfa_object.$getParent](); - - if (parent.layout === "row") { - if (parent.assist && parent.assist.role === "TH") { - attributes.role = "columnheader"; - } else { - attributes.role = "cell"; - } - } - } -} - -function ariaLabel(obj) { - if (!obj.assist) { - return null; - } - - const assist = obj.assist; - - if (assist.speak && assist.speak[_xfa_object.$content] !== "") { - return assist.speak[_xfa_object.$content]; - } - - if (assist.toolTip) { - return assist.toolTip[_xfa_object.$content]; - } - - return null; -} - -function valueToHtml(value) { - return _utils.HTMLResult.success({ - name: "div", - attributes: { - class: ["xfaRich"], - style: Object.create(null) - }, - children: [{ - name: "span", - attributes: { - style: Object.create(null) - }, - value - }] - }); -} - -function setFirstUnsplittable(node) { - const root = node[_xfa_object.$getTemplateRoot](); - - if (root[_xfa_object.$extra].firstUnsplittable === null) { - root[_xfa_object.$extra].firstUnsplittable = node; - root[_xfa_object.$extra].noLayoutFailure = true; - } -} - -function unsetFirstUnsplittable(node) { - const root = node[_xfa_object.$getTemplateRoot](); - - if (root[_xfa_object.$extra].firstUnsplittable === node) { - root[_xfa_object.$extra].noLayoutFailure = false; - } -} - -function handleBreak(node) { - if (node[_xfa_object.$extra]) { - return false; - } - - node[_xfa_object.$extra] = Object.create(null); - - if (node.targetType === "auto") { - return false; - } - - const root = node[_xfa_object.$getTemplateRoot](); - - let target = null; - - if (node.target) { - target = root[_xfa_object.$searchNode](node.target, node[_xfa_object.$getParent]()); - - if (!target) { - return false; - } - - target = target[0]; - } - - const { - currentPageArea, - currentContentArea - } = root[_xfa_object.$extra]; - - if (node.targetType === "pageArea") { - if (!(target instanceof PageArea)) { - target = null; - } - - if (node.startNew) { - node[_xfa_object.$extra].target = target || currentPageArea; - return true; - } else if (target && target !== currentPageArea) { - node[_xfa_object.$extra].target = target; - return true; - } - - return false; - } - - if (!(target instanceof ContentArea)) { - target = null; - } - - const pageArea = target && target[_xfa_object.$getParent](); - - let index; - let nextPageArea = pageArea; - - if (node.startNew) { - if (target) { - const contentAreas = pageArea.contentArea.children; - const indexForCurrent = contentAreas.indexOf(currentContentArea); - const indexForTarget = contentAreas.indexOf(target); - - if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) { - nextPageArea = null; - } - - index = indexForTarget - 1; - } else { - index = currentPageArea.contentArea.children.indexOf(currentContentArea); - } - } else if (target && target !== currentContentArea) { - const contentAreas = pageArea.contentArea.children; - index = contentAreas.indexOf(target) - 1; - nextPageArea = pageArea === currentPageArea ? null : pageArea; - } else { - return false; - } - - node[_xfa_object.$extra].target = nextPageArea; - node[_xfa_object.$extra].index = index; - return true; -} - -function handleOverflow(node, extraNode, space) { - const root = node[_xfa_object.$getTemplateRoot](); - - const saved = root[_xfa_object.$extra].noLayoutFailure; - const savedMethod = extraNode[_xfa_object.$getSubformParent]; - - extraNode[_xfa_object.$getSubformParent] = () => node; - - root[_xfa_object.$extra].noLayoutFailure = true; - - const res = extraNode[_xfa_object.$toHTML](space); - - node[_xfa_object.$addHTML](res.html, res.bbox); - - root[_xfa_object.$extra].noLayoutFailure = saved; - extraNode[_xfa_object.$getSubformParent] = savedMethod; -} - -class AppearanceFilter extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "appearanceFilter"); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Arc extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "arc", true); - this.circular = (0, _utils.getInteger)({ - data: attributes.circular, - defaultValue: 0, - validate: x => x === 1 - }); - this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); - this.id = attributes.id || ""; - this.startAngle = (0, _utils.getFloat)({ - data: attributes.startAngle, - defaultValue: 0, - validate: x => true - }); - this.sweepAngle = (0, _utils.getFloat)({ - data: attributes.sweepAngle, - defaultValue: 360, - validate: x => true - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.edge = null; - this.fill = null; - } - - [_xfa_object.$toHTML]() { - const edge = this.edge ? this.edge : new Edge({}); - - const edgeStyle = edge[_xfa_object.$toStyle](); - - const style = Object.create(null); - - if (this.fill && this.fill.presence === "visible") { - Object.assign(style, this.fill[_xfa_object.$toStyle]()); - } else { - style.fill = "transparent"; - } - - style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0); - style.stroke = edgeStyle.color; - let arc; - const attributes = { - xmlns: SVG_NS, - style: { - width: "100%", - height: "100%", - overflow: "visible" - } - }; - - if (this.sweepAngle === 360) { - arc = { - name: "ellipse", - attributes: { - xmlns: SVG_NS, - cx: "50%", - cy: "50%", - rx: "50%", - ry: "50%", - style - } - }; - } else { - const startAngle = this.startAngle * Math.PI / 180; - const sweepAngle = this.sweepAngle * Math.PI / 180; - const largeArc = this.sweepAngle > 180 ? 1 : 0; - const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))]; - arc = { - name: "path", - attributes: { - xmlns: SVG_NS, - d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`, - vectorEffect: "non-scaling-stroke", - style - } - }; - Object.assign(attributes, { - viewBox: "0 0 100 100", - preserveAspectRatio: "none" - }); - } - - const svg = { - name: "svg", - children: [arc], - attributes - }; - - const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); - - if (hasMargin(parent)) { - return _utils.HTMLResult.success({ - name: "div", - attributes: { - style: { - display: "inline", - width: "100%", - height: "100%" - } - }, - children: [svg] - }); - } - - svg.attributes.style.position = "absolute"; - return _utils.HTMLResult.success(svg); - } - -} - -class Area extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "area", true); - this.colSpan = (0, _utils.getInteger)({ - data: attributes.colSpan, - defaultValue: 1, - validate: n => n >= 1 || n === -1 - }); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); - this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); - this.desc = null; - this.extras = null; - this.area = new _xfa_object.XFAObjectArray(); - this.draw = new _xfa_object.XFAObjectArray(); - this.exObject = new _xfa_object.XFAObjectArray(); - this.exclGroup = new _xfa_object.XFAObjectArray(); - this.field = new _xfa_object.XFAObjectArray(); - this.subform = new _xfa_object.XFAObjectArray(); - this.subformSet = new _xfa_object.XFAObjectArray(); - } - - *[_xfa_object.$getContainedChildren]() { - yield* getContainedChildren(this); - } - - [_xfa_object.$isTransparent]() { - return true; - } - - [_xfa_object.$isBindable]() { - return true; - } - - [_xfa_object.$addHTML](html, bbox) { - const [x, y, w, h] = bbox; - this[_xfa_object.$extra].width = Math.max(this[_xfa_object.$extra].width, x + w); - this[_xfa_object.$extra].height = Math.max(this[_xfa_object.$extra].height, y + h); - - this[_xfa_object.$extra].children.push(html); - } - - [_xfa_object.$getAvailableSpace]() { - return this[_xfa_object.$extra].availableSpace; - } - - [_xfa_object.$toHTML](availableSpace) { - const style = (0, _html_utils.toStyle)(this, "position"); - const attributes = { - style, - id: this[_xfa_object.$uid], - class: ["xfaArea"] - }; - - if ((0, _html_utils.isPrintOnly)(this)) { - attributes.class.push("xfaPrintOnly"); - } - - if (this.name) { - attributes.xfaName = this.name; - } - - const children = []; - this[_xfa_object.$extra] = { - children, - width: 0, - height: 0, - availableSpace - }; - - const result = this[_xfa_object.$childrenToHTML]({ - filter: new Set(["area", "draw", "field", "exclGroup", "subform", "subformSet"]), - include: true - }); - - if (!result.success) { - if (result.isBreak()) { - return result; - } - - delete this[_xfa_object.$extra]; - return _utils.HTMLResult.FAILURE; - } - - style.width = (0, _html_utils.measureToString)(this[_xfa_object.$extra].width); - style.height = (0, _html_utils.measureToString)(this[_xfa_object.$extra].height); - const html = { - name: "div", - attributes, - children - }; - const bbox = [this.x, this.y, this[_xfa_object.$extra].width, this[_xfa_object.$extra].height]; - delete this[_xfa_object.$extra]; - return _utils.HTMLResult.success(html, bbox); - } - -} - -class Assist extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "assist", true); - this.id = attributes.id || ""; - this.role = attributes.role || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.speak = null; - this.toolTip = null; - } - - [_xfa_object.$toHTML]() { - return this.toolTip && this.toolTip[_xfa_object.$content] ? this.toolTip[_xfa_object.$content] : null; - } - -} - -class Barcode extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "barcode", true); - this.charEncoding = (0, _utils.getKeyword)({ - data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : "", - defaultValue: "", - validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) - }); - this.checksum = (0, _utils.getStringOption)(attributes.checksum, ["none", "1mod10", "1mod10_1mod11", "2mod10", "auto"]); - this.dataColumnCount = (0, _utils.getInteger)({ - data: attributes.dataColumnCount, - defaultValue: -1, - validate: x => x >= 0 - }); - this.dataLength = (0, _utils.getInteger)({ - data: attributes.dataLength, - defaultValue: -1, - validate: x => x >= 0 - }); - this.dataPrep = (0, _utils.getStringOption)(attributes.dataPrep, ["none", "flateCompress"]); - this.dataRowCount = (0, _utils.getInteger)({ - data: attributes.dataRowCount, - defaultValue: -1, - validate: x => x >= 0 - }); - this.endChar = attributes.endChar || ""; - this.errorCorrectionLevel = (0, _utils.getInteger)({ - data: attributes.errorCorrectionLevel, - defaultValue: -1, - validate: x => x >= 0 && x <= 8 - }); - this.id = attributes.id || ""; - this.moduleHeight = (0, _utils.getMeasurement)(attributes.moduleHeight, "5mm"); - this.moduleWidth = (0, _utils.getMeasurement)(attributes.moduleWidth, "0.25mm"); - this.printCheckDigit = (0, _utils.getInteger)({ - data: attributes.printCheckDigit, - defaultValue: 0, - validate: x => x === 1 - }); - this.rowColumnRatio = (0, _utils.getRatio)(attributes.rowColumnRatio); - this.startChar = attributes.startChar || ""; - this.textLocation = (0, _utils.getStringOption)(attributes.textLocation, ["below", "above", "aboveEmbedded", "belowEmbedded", "none"]); - this.truncate = (0, _utils.getInteger)({ - data: attributes.truncate, - defaultValue: 0, - validate: x => x === 1 - }); - this.type = (0, _utils.getStringOption)(attributes.type ? attributes.type.toLowerCase() : "", ["aztec", "codabar", "code2of5industrial", "code2of5interleaved", "code2of5matrix", "code2of5standard", "code3of9", "code3of9extended", "code11", "code49", "code93", "code128", "code128a", "code128b", "code128c", "code128sscc", "datamatrix", "ean8", "ean8add2", "ean8add5", "ean13", "ean13add2", "ean13add5", "ean13pwcd", "fim", "logmars", "maxicode", "msi", "pdf417", "pdf417macro", "plessey", "postauscust2", "postauscust3", "postausreplypaid", "postausstandard", "postukrm4scc", "postusdpbc", "postusimb", "postusstandard", "postus5zip", "qrcode", "rfid", "rss14", "rss14expanded", "rss14limited", "rss14stacked", "rss14stackedomni", "rss14truncated", "telepen", "ucc128", "ucc128random", "ucc128sscc", "upca", "upcaadd2", "upcaadd5", "upcapwcd", "upce", "upceadd2", "upceadd5", "upcean2", "upcean5", "upsmaxicode"]); - this.upsMode = (0, _utils.getStringOption)(attributes.upsMode, ["usCarrier", "internationalCarrier", "secureSymbol", "standardSymbol"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.wideNarrowRatio = (0, _utils.getRatio)(attributes.wideNarrowRatio); - this.encrypt = null; - this.extras = null; - } - -} - -class Bind extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "bind", true); - this.match = (0, _utils.getStringOption)(attributes.match, ["once", "dataRef", "global", "none"]); - this.ref = attributes.ref || ""; - this.picture = null; - } - -} - -class BindItems extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "bindItems"); - this.connection = attributes.connection || ""; - this.labelRef = attributes.labelRef || ""; - this.ref = attributes.ref || ""; - this.valueRef = attributes.valueRef || ""; - } - -} - -exports.BindItems = BindItems; - -class Bookend extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "bookend"); - this.id = attributes.id || ""; - this.leader = attributes.leader || ""; - this.trailer = attributes.trailer || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class BooleanElement extends _xfa_object.Option01 { - constructor(attributes) { - super(TEMPLATE_NS_ID, "boolean"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$toHTML](availableSpace) { - return valueToHtml(this[_xfa_object.$content] === 1 ? "1" : "0"); - } - -} - -class Border extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "border", true); - this.break = (0, _utils.getStringOption)(attributes.break, ["close", "open"]); - this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); - this.id = attributes.id || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.corner = new _xfa_object.XFAObjectArray(4); - this.edge = new _xfa_object.XFAObjectArray(4); - this.extras = null; - this.fill = null; - this.margin = null; - } - - [_xfa_object.$getExtra]() { - if (!this[_xfa_object.$extra]) { - const edges = this.edge.children.slice(); - - if (edges.length < 4) { - const defaultEdge = edges[edges.length - 1] || new Edge({}); - - for (let i = edges.length; i < 4; i++) { - edges.push(defaultEdge); - } - } - - const widths = edges.map(edge => edge.thickness); - const insets = [0, 0, 0, 0]; - - if (this.margin) { - insets[0] = this.margin.topInset; - insets[1] = this.margin.rightInset; - insets[2] = this.margin.bottomInset; - insets[3] = this.margin.leftInset; - } - - this[_xfa_object.$extra] = { - widths, - insets, - edges - }; - } - - return this[_xfa_object.$extra]; - } - - [_xfa_object.$toStyle]() { - const { - edges - } = this[_xfa_object.$getExtra](); - - const edgeStyles = edges.map(node => { - const style = node[_xfa_object.$toStyle](); - - style.color = style.color || "#000000"; - return style; - }); - const style = Object.create(null); - - if (this.margin) { - Object.assign(style, this.margin[_xfa_object.$toStyle]()); - } - - if (this.fill && this.fill.presence === "visible") { - Object.assign(style, this.fill[_xfa_object.$toStyle]()); - } - - if (this.corner.children.some(node => node.radius !== 0)) { - const cornerStyles = this.corner.children.map(node => node[_xfa_object.$toStyle]()); - - if (cornerStyles.length === 2 || cornerStyles.length === 3) { - const last = cornerStyles[cornerStyles.length - 1]; - - for (let i = cornerStyles.length; i < 4; i++) { - cornerStyles.push(last); - } - } - - style.borderRadius = cornerStyles.map(s => s.radius).join(" "); - } - - switch (this.presence) { - case "invisible": - case "hidden": - style.borderStyle = ""; - break; - - case "inactive": - style.borderStyle = "none"; - break; - - default: - style.borderStyle = edgeStyles.map(s => s.style).join(" "); - break; - } - - style.borderWidth = edgeStyles.map(s => s.width).join(" "); - style.borderColor = edgeStyles.map(s => s.color).join(" "); - return style; - } - -} - -class Break extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "break", true); - this.after = (0, _utils.getStringOption)(attributes.after, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); - this.afterTarget = attributes.afterTarget || ""; - this.before = (0, _utils.getStringOption)(attributes.before, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); - this.beforeTarget = attributes.beforeTarget || ""; - this.bookendLeader = attributes.bookendLeader || ""; - this.bookendTrailer = attributes.bookendTrailer || ""; - this.id = attributes.id || ""; - this.overflowLeader = attributes.overflowLeader || ""; - this.overflowTarget = attributes.overflowTarget || ""; - this.overflowTrailer = attributes.overflowTrailer || ""; - this.startNew = (0, _utils.getInteger)({ - data: attributes.startNew, - defaultValue: 0, - validate: x => x === 1 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - } - -} - -class BreakAfter extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "breakAfter", true); - this.id = attributes.id || ""; - this.leader = attributes.leader || ""; - this.startNew = (0, _utils.getInteger)({ - data: attributes.startNew, - defaultValue: 0, - validate: x => x === 1 - }); - this.target = attributes.target || ""; - this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea"]); - this.trailer = attributes.trailer || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.script = null; - } - -} - -class BreakBefore extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "breakBefore", true); - this.id = attributes.id || ""; - this.leader = attributes.leader || ""; - this.startNew = (0, _utils.getInteger)({ - data: attributes.startNew, - defaultValue: 0, - validate: x => x === 1 - }); - this.target = attributes.target || ""; - this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea"]); - this.trailer = attributes.trailer || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.script = null; - } - - [_xfa_object.$toHTML](availableSpace) { - this[_xfa_object.$extra] = {}; - return _utils.HTMLResult.FAILURE; - } - -} - -class Button extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "button", true); - this.highlight = (0, _utils.getStringOption)(attributes.highlight, ["inverted", "none", "outline", "push"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - } - - [_xfa_object.$toHTML](availableSpace) { - const parent = this[_xfa_object.$getParent](); - - const grandpa = parent[_xfa_object.$getParent](); - - const htmlButton = { - name: "button", - attributes: { - id: this[_xfa_object.$uid], - class: ["xfaButton"], - style: {} - }, - children: [] - }; - - for (const event of grandpa.event.children) { - if (event.activity !== "click" || !event.script) { - continue; - } - - const jsURL = (0, _core_utils.recoverJsURL)(event.script[_xfa_object.$content]); - - if (!jsURL) { - continue; - } - - const href = (0, _html_utils.fixURL)(jsURL.url); - - if (!href) { - continue; - } - - htmlButton.children.push({ - name: "a", - attributes: { - id: "link" + this[_xfa_object.$uid], - href, - newWindow: jsURL.newWindow, - class: ["xfaLink"], - style: {} - }, - children: [] - }); - } - - return _utils.HTMLResult.success(htmlButton); - } - -} - -class Calculate extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "calculate", true); - this.id = attributes.id || ""; - this.override = (0, _utils.getStringOption)(attributes.override, ["disabled", "error", "ignore", "warning"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.message = null; - this.script = null; - } - -} - -class Caption extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "caption", true); - this.id = attributes.id || ""; - this.placement = (0, _utils.getStringOption)(attributes.placement, ["left", "bottom", "inline", "right", "top"]); - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.reserve = Math.ceil((0, _utils.getMeasurement)(attributes.reserve)); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.font = null; - this.margin = null; - this.para = null; - this.value = null; - } - - [_xfa_object.$setValue](value) { - _setValue(this, value); - } - - [_xfa_object.$getExtra](availableSpace) { - if (!this[_xfa_object.$extra]) { - let { - width, - height - } = availableSpace; - - switch (this.placement) { - case "left": - case "right": - case "inline": - width = this.reserve <= 0 ? width : this.reserve; - break; - - case "top": - case "bottom": - height = this.reserve <= 0 ? height : this.reserve; - break; - } - - this[_xfa_object.$extra] = (0, _html_utils.layoutNode)(this, { - width, - height - }); - } - - return this[_xfa_object.$extra]; - } - - [_xfa_object.$toHTML](availableSpace) { - if (!this.value) { - return _utils.HTMLResult.EMPTY; - } - - this[_xfa_object.$pushPara](); - - const value = this.value[_xfa_object.$toHTML](availableSpace).html; - - if (!value) { - this[_xfa_object.$popPara](); - - return _utils.HTMLResult.EMPTY; - } - - const savedReserve = this.reserve; - - if (this.reserve <= 0) { - const { - w, - h - } = this[_xfa_object.$getExtra](availableSpace); - - switch (this.placement) { - case "left": - case "right": - case "inline": - this.reserve = w; - break; - - case "top": - case "bottom": - this.reserve = h; - break; - } - } - - const children = []; - - if (typeof value === "string") { - children.push({ - name: "#text", - value - }); - } else { - children.push(value); - } - - const style = (0, _html_utils.toStyle)(this, "font", "margin", "visibility"); - - switch (this.placement) { - case "left": - case "right": - if (this.reserve > 0) { - style.width = (0, _html_utils.measureToString)(this.reserve); - } - - break; - - case "top": - case "bottom": - if (this.reserve > 0) { - style.height = (0, _html_utils.measureToString)(this.reserve); - } - - break; - } - - (0, _html_utils.setPara)(this, null, value); - - this[_xfa_object.$popPara](); - - this.reserve = savedReserve; - return _utils.HTMLResult.success({ - name: "div", - attributes: { - style, - class: ["xfaCaption"] - }, - children - }); - } - -} - -class Certificate extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "certificate"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Certificates extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "certificates", true); - this.credentialServerPolicy = (0, _utils.getStringOption)(attributes.credentialServerPolicy, ["optional", "required"]); - this.id = attributes.id || ""; - this.url = attributes.url || ""; - this.urlPolicy = attributes.urlPolicy || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.encryption = null; - this.issuers = null; - this.keyUsage = null; - this.oids = null; - this.signing = null; - this.subjectDNs = null; - } - -} - -class CheckButton extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "checkButton", true); - this.id = attributes.id || ""; - this.mark = (0, _utils.getStringOption)(attributes.mark, ["default", "check", "circle", "cross", "diamond", "square", "star"]); - this.shape = (0, _utils.getStringOption)(attributes.shape, ["square", "round"]); - this.size = (0, _utils.getMeasurement)(attributes.size, "10pt"); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - - [_xfa_object.$toHTML](availableSpace) { - const style = (0, _html_utils.toStyle)("margin"); - const size = (0, _html_utils.measureToString)(this.size); - style.width = style.height = size; - let type; - let className; - let groupId; - - const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); - - const items = field.items.children.length && field.items.children[0][_xfa_object.$toHTML]().html || []; - const exportedValue = { - on: (items[0] !== undefined ? items[0] : "on").toString(), - off: (items[1] !== undefined ? items[1] : "off").toString() - }; - const value = field.value && field.value[_xfa_object.$text]() || "off"; - const checked = value === exportedValue.on || undefined; - - const container = field[_xfa_object.$getSubformParent](); - - const fieldId = field[_xfa_object.$uid]; - let dataId; - - if (container instanceof ExclGroup) { - groupId = container[_xfa_object.$uid]; - type = "radio"; - className = "xfaRadio"; - dataId = container[_xfa_object.$data] && container[_xfa_object.$data][_xfa_object.$uid] || container[_xfa_object.$uid]; - } else { - type = "checkbox"; - className = "xfaCheckbox"; - dataId = field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid]; - } - - const input = { - name: "input", - attributes: { - class: [className], - style, - fieldId, - dataId, - type, - checked, - xfaOn: exportedValue.on, - xfaOff: exportedValue.off, - "aria-label": ariaLabel(field) - } - }; - - if (groupId) { - input.attributes.name = groupId; - } - - return _utils.HTMLResult.success({ - name: "label", - attributes: { - class: ["xfaLabel"] - }, - children: [input] - }); - } - -} - -class ChoiceList extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "choiceList", true); - this.commitOn = (0, _utils.getStringOption)(attributes.commitOn, ["select", "exit"]); - this.id = attributes.id || ""; - this.open = (0, _utils.getStringOption)(attributes.open, ["userControl", "always", "multiSelect", "onEntry"]); - this.textEntry = (0, _utils.getInteger)({ - data: attributes.textEntry, - defaultValue: 0, - validate: x => x === 1 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - - [_xfa_object.$toHTML](availableSpace) { - const style = (0, _html_utils.toStyle)(this, "border", "margin"); - - const ui = this[_xfa_object.$getParent](); - - const field = ui[_xfa_object.$getParent](); - - const fontSize = field.font && field.font.size || 10; - const optionStyle = { - fontSize: `calc(${fontSize}px * var(--zoom-factor))` - }; - const children = []; - - if (field.items.children.length > 0) { - const items = field.items; - let displayedIndex = 0; - let saveIndex = 0; - - if (items.children.length === 2) { - displayedIndex = items.children[0].save; - saveIndex = 1 - displayedIndex; - } - - const displayed = items.children[displayedIndex][_xfa_object.$toHTML]().html; - - const values = items.children[saveIndex][_xfa_object.$toHTML]().html; - - let selected = false; - const value = field.value && field.value[_xfa_object.$text]() || ""; - - for (let i = 0, ii = displayed.length; i < ii; i++) { - const option = { - name: "option", - attributes: { - value: values[i] || displayed[i], - style: optionStyle - }, - value: displayed[i] - }; - - if (values[i] === value) { - option.attributes.selected = selected = true; - } - - children.push(option); - } - - if (!selected) { - children.splice(0, 0, { - name: "option", - attributes: { - hidden: true, - selected: true - }, - value: " " - }); - } - } - - const selectAttributes = { - class: ["xfaSelect"], - fieldId: field[_xfa_object.$uid], - dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], - style, - "aria-label": ariaLabel(field) - }; - - if (this.open === "multiSelect") { - selectAttributes.multiple = true; - } - - return _utils.HTMLResult.success({ - name: "label", - attributes: { - class: ["xfaLabel"] - }, - children: [{ - name: "select", - children, - attributes: selectAttributes - }] - }); - } - -} - -class Color extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "color", true); - this.cSpace = (0, _utils.getStringOption)(attributes.cSpace, ["SRGB"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.value = attributes.value ? (0, _utils.getColor)(attributes.value) : ""; - this.extras = null; - } - - [_xfa_object.$hasSettableValue]() { - return false; - } - - [_xfa_object.$toStyle]() { - return this.value ? _util.Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null; - } - -} - -class Comb extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "comb"); - this.id = attributes.id || ""; - this.numberOfCells = (0, _utils.getInteger)({ - data: attributes.numberOfCells, - defaultValue: 0, - validate: x => x >= 0 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Connect extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "connect", true); - this.connection = attributes.connection || ""; - this.id = attributes.id || ""; - this.ref = attributes.ref || ""; - this.usage = (0, _utils.getStringOption)(attributes.usage, ["exportAndImport", "exportOnly", "importOnly"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.picture = null; - } - -} - -class ContentArea extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "contentArea", true); - this.h = (0, _utils.getMeasurement)(attributes.h); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.w = (0, _utils.getMeasurement)(attributes.w); - this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); - this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); - this.desc = null; - this.extras = null; - } - - [_xfa_object.$toHTML](availableSpace) { - const left = (0, _html_utils.measureToString)(this.x); - const top = (0, _html_utils.measureToString)(this.y); - const style = { - left, - top, - width: (0, _html_utils.measureToString)(this.w), - height: (0, _html_utils.measureToString)(this.h) - }; - const classNames = ["xfaContentarea"]; - - if ((0, _html_utils.isPrintOnly)(this)) { - classNames.push("xfaPrintOnly"); - } - - return _utils.HTMLResult.success({ - name: "div", - children: [], - attributes: { - style, - class: classNames, - id: this[_xfa_object.$uid] - } - }); - } - -} - -class Corner extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "corner", true); - this.id = attributes.id || ""; - this.inverted = (0, _utils.getInteger)({ - data: attributes.inverted, - defaultValue: 0, - validate: x => x === 1 - }); - this.join = (0, _utils.getStringOption)(attributes.join, ["square", "round"]); - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.radius = (0, _utils.getMeasurement)(attributes.radius); - this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); - this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt"); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.color = null; - this.extras = null; - } - - [_xfa_object.$toStyle]() { - const style = (0, _html_utils.toStyle)(this, "visibility"); - style.radius = (0, _html_utils.measureToString)(this.join === "square" ? 0 : this.radius); - return style; - } - -} - -class DateElement extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "date"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - const date = this[_xfa_object.$content].trim(); - - this[_xfa_object.$content] = date ? new Date(date) : null; - } - - [_xfa_object.$toHTML](availableSpace) { - return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : ""); - } - -} - -class DateTime extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "dateTime"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - const date = this[_xfa_object.$content].trim(); - - this[_xfa_object.$content] = date ? new Date(date) : null; - } - - [_xfa_object.$toHTML](availableSpace) { - return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : ""); - } - -} - -class DateTimeEdit extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "dateTimeEdit", true); - this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); - this.id = attributes.id || ""; - this.picker = (0, _utils.getStringOption)(attributes.picker, ["host", "none"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.border = null; - this.comb = null; - this.extras = null; - this.margin = null; - } - - [_xfa_object.$toHTML](availableSpace) { - const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); - - const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); - - const html = { - name: "input", - attributes: { - type: "text", - fieldId: field[_xfa_object.$uid], - dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], - class: ["xfaTextfield"], - style, - "aria-label": ariaLabel(field) - } - }; - return _utils.HTMLResult.success({ - name: "label", - attributes: { - class: ["xfaLabel"] - }, - children: [html] - }); - } - -} - -class Decimal extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "decimal"); - this.fracDigits = (0, _utils.getInteger)({ - data: attributes.fracDigits, - defaultValue: 2, - validate: x => true - }); - this.id = attributes.id || ""; - this.leadDigits = (0, _utils.getInteger)({ - data: attributes.leadDigits, - defaultValue: -1, - validate: x => true - }); - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - const number = parseFloat(this[_xfa_object.$content].trim()); - this[_xfa_object.$content] = isNaN(number) ? null : number; - } - - [_xfa_object.$toHTML](availableSpace) { - return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : ""); - } - -} - -class DefaultUi extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "defaultUi", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - } - -} - -class Desc extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "desc", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.boolean = new _xfa_object.XFAObjectArray(); - this.date = new _xfa_object.XFAObjectArray(); - this.dateTime = new _xfa_object.XFAObjectArray(); - this.decimal = new _xfa_object.XFAObjectArray(); - this.exData = new _xfa_object.XFAObjectArray(); - this.float = new _xfa_object.XFAObjectArray(); - this.image = new _xfa_object.XFAObjectArray(); - this.integer = new _xfa_object.XFAObjectArray(); - this.text = new _xfa_object.XFAObjectArray(); - this.time = new _xfa_object.XFAObjectArray(); - } - -} - -class DigestMethod extends _xfa_object.OptionObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class DigestMethods extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "digestMethods", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.digestMethod = new _xfa_object.XFAObjectArray(); - } - -} - -class Draw extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "draw", true); - this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); - this.colSpan = (0, _utils.getInteger)({ - data: attributes.colSpan, - defaultValue: 1, - validate: n => n >= 1 || n === -1 - }); - this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; - this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); - this.id = attributes.id || ""; - this.locale = attributes.locale || ""; - this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); - this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); - this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); - this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); - this.name = attributes.name || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.rotate = (0, _utils.getInteger)({ - data: attributes.rotate, - defaultValue: 0, - validate: x => x % 90 === 0 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; - this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); - this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); - this.assist = null; - this.border = null; - this.caption = null; - this.desc = null; - this.extras = null; - this.font = null; - this.keep = null; - this.margin = null; - this.para = null; - this.traversal = null; - this.ui = null; - this.value = null; - this.setProperty = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$setValue](value) { - _setValue(this, value); - } - - [_xfa_object.$toHTML](availableSpace) { - setTabIndex(this); - - if (this.presence === "hidden" || this.presence === "inactive") { - return _utils.HTMLResult.EMPTY; - } - - (0, _html_utils.fixDimensions)(this); - - this[_xfa_object.$pushPara](); - - const savedW = this.w; - const savedH = this.h; - const { - w, - h, - isBroken - } = (0, _html_utils.layoutNode)(this, availableSpace); - - if (w && this.w === "") { - if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) { - this[_xfa_object.$popPara](); - - return _utils.HTMLResult.FAILURE; - } - - this.w = w; - } - - if (h && this.h === "") { - this.h = h; - } - - setFirstUnsplittable(this); - - if (!(0, _layout.checkDimensions)(this, availableSpace)) { - this.w = savedW; - this.h = savedH; - - this[_xfa_object.$popPara](); - - return _utils.HTMLResult.FAILURE; - } - - unsetFirstUnsplittable(this); - const style = (0, _html_utils.toStyle)(this, "font", "hAlign", "dimensions", "position", "presence", "rotate", "anchorType", "border", "margin"); - (0, _html_utils.setMinMaxDimensions)(this, style); - - if (style.margin) { - style.padding = style.margin; - delete style.margin; - } - - const classNames = ["xfaDraw"]; - - if (this.font) { - classNames.push("xfaFont"); - } - - if ((0, _html_utils.isPrintOnly)(this)) { - classNames.push("xfaPrintOnly"); - } - - const attributes = { - style, - id: this[_xfa_object.$uid], - class: classNames - }; - - if (this.name) { - attributes.xfaName = this.name; - } - - const html = { - name: "div", - attributes, - children: [] - }; - applyAssist(this, attributes); - const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace); - const value = this.value ? this.value[_xfa_object.$toHTML](availableSpace).html : null; - - if (value === null) { - this.w = savedW; - this.h = savedH; - - this[_xfa_object.$popPara](); - - return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); - } - - html.children.push(value); - (0, _html_utils.setPara)(this, style, value); - this.w = savedW; - this.h = savedH; - - this[_xfa_object.$popPara](); - - return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); - } - -} - -class Edge extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "edge", true); - this.cap = (0, _utils.getStringOption)(attributes.cap, ["square", "butt", "round"]); - this.id = attributes.id || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); - this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt"); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.color = null; - this.extras = null; - } - - [_xfa_object.$toStyle]() { - const style = (0, _html_utils.toStyle)(this, "visibility"); - Object.assign(style, { - linecap: this.cap, - width: (0, _html_utils.measureToString)(this.thickness), - color: this.color ? this.color[_xfa_object.$toStyle]() : "#000000", - style: "" - }); - - if (this.presence !== "visible") { - style.style = "none"; - } else { - switch (this.stroke) { - case "solid": - style.style = "solid"; - break; - - case "dashDot": - style.style = "dashed"; - break; - - case "dashDotDot": - style.style = "dashed"; - break; - - case "dashed": - style.style = "dashed"; - break; - - case "dotted": - style.style = "dotted"; - break; - - case "embossed": - style.style = "ridge"; - break; - - case "etched": - style.style = "groove"; - break; - - case "lowered": - style.style = "inset"; - break; - - case "raised": - style.style = "outset"; - break; - } - } - - return style; - } - -} - -class Encoding extends _xfa_object.OptionObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "encoding", ["adbe.x509.rsa_sha1", "adbe.pkcs7.detached", "adbe.pkcs7.sha1"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Encodings extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "encodings", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.encoding = new _xfa_object.XFAObjectArray(); - } - -} - -class Encrypt extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "encrypt", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.certificate = null; - } - -} - -class EncryptData extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "encryptData", true); - this.id = attributes.id || ""; - this.operation = (0, _utils.getStringOption)(attributes.operation, ["encrypt", "decrypt"]); - this.target = attributes.target || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.filter = null; - this.manifest = null; - } - -} - -class Encryption extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "encryption", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.certificate = new _xfa_object.XFAObjectArray(); - } - -} - -class EncryptionMethod extends _xfa_object.OptionObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "encryptionMethod", ["", "AES256-CBC", "TRIPLEDES-CBC", "AES128-CBC", "AES192-CBC"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class EncryptionMethods extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "encryptionMethods", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.encryptionMethod = new _xfa_object.XFAObjectArray(); - } - -} - -class Event extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "event", true); - this.activity = (0, _utils.getStringOption)(attributes.activity, ["click", "change", "docClose", "docReady", "enter", "exit", "full", "indexChange", "initialize", "mouseDown", "mouseEnter", "mouseExit", "mouseUp", "postExecute", "postOpen", "postPrint", "postSave", "postSign", "postSubmit", "preExecute", "preOpen", "prePrint", "preSave", "preSign", "preSubmit", "ready", "validationState"]); - this.id = attributes.id || ""; - this.listen = (0, _utils.getStringOption)(attributes.listen, ["refOnly", "refAndDescendents"]); - this.name = attributes.name || ""; - this.ref = attributes.ref || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.encryptData = null; - this.execute = null; - this.script = null; - this.signData = null; - this.submit = null; - } - -} - -class ExData extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "exData"); - this.contentType = attributes.contentType || ""; - this.href = attributes.href || ""; - this.id = attributes.id || ""; - this.maxLength = (0, _utils.getInteger)({ - data: attributes.maxLength, - defaultValue: -1, - validate: x => x >= -1 - }); - this.name = attributes.name || ""; - this.rid = attributes.rid || ""; - this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["none", "base64", "package"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$isCDATAXml]() { - return this.contentType === "text/html"; - } - - [_xfa_object.$onChild](child) { - if (this.contentType === "text/html" && child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { - this[_xfa_object.$content] = child; - return true; - } - - if (this.contentType === "text/xml") { - this[_xfa_object.$content] = child; - return true; - } - - return false; - } - - [_xfa_object.$toHTML](availableSpace) { - if (this.contentType !== "text/html" || !this[_xfa_object.$content]) { - return _utils.HTMLResult.EMPTY; - } - - return this[_xfa_object.$content][_xfa_object.$toHTML](availableSpace); - } - -} - -class ExObject extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "exObject", true); - this.archive = attributes.archive || ""; - this.classId = attributes.classId || ""; - this.codeBase = attributes.codeBase || ""; - this.codeType = attributes.codeType || ""; - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.boolean = new _xfa_object.XFAObjectArray(); - this.date = new _xfa_object.XFAObjectArray(); - this.dateTime = new _xfa_object.XFAObjectArray(); - this.decimal = new _xfa_object.XFAObjectArray(); - this.exData = new _xfa_object.XFAObjectArray(); - this.exObject = new _xfa_object.XFAObjectArray(); - this.float = new _xfa_object.XFAObjectArray(); - this.image = new _xfa_object.XFAObjectArray(); - this.integer = new _xfa_object.XFAObjectArray(); - this.text = new _xfa_object.XFAObjectArray(); - this.time = new _xfa_object.XFAObjectArray(); - } - -} - -class ExclGroup extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "exclGroup", true); - this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); - this.accessKey = attributes.accessKey || ""; - this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); - this.colSpan = (0, _utils.getInteger)({ - data: attributes.colSpan, - defaultValue: 1, - validate: n => n >= 1 || n === -1 - }); - this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; - this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); - this.id = attributes.id || ""; - this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); - this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); - this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); - this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); - this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); - this.name = attributes.name || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; - this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); - this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); - this.assist = null; - this.bind = null; - this.border = null; - this.calculate = null; - this.caption = null; - this.desc = null; - this.extras = null; - this.margin = null; - this.para = null; - this.traversal = null; - this.validate = null; - this.connect = new _xfa_object.XFAObjectArray(); - this.event = new _xfa_object.XFAObjectArray(); - this.field = new _xfa_object.XFAObjectArray(); - this.setProperty = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$isBindable]() { - return true; - } - - [_xfa_object.$hasSettableValue]() { - return true; - } - - [_xfa_object.$setValue](value) { - for (const field of this.field.children) { - if (!field.value) { - const nodeValue = new Value({}); - - field[_xfa_object.$appendChild](nodeValue); - - field.value = nodeValue; - } - - field.value[_xfa_object.$setValue](value); - } - } - - [_xfa_object.$isThereMoreWidth]() { - return this.layout.endsWith("-tb") && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth](); - } - - [_xfa_object.$isSplittable]() { - const parent = this[_xfa_object.$getSubformParent](); - - if (!parent[_xfa_object.$isSplittable]()) { - return false; - } - - if (this[_xfa_object.$extra]._isSplittable !== undefined) { - return this[_xfa_object.$extra]._isSplittable; - } - - if (this.layout === "position" || this.layout.includes("row")) { - this[_xfa_object.$extra]._isSplittable = false; - return false; - } - - if (parent.layout && parent.layout.endsWith("-tb") && parent[_xfa_object.$extra].numberInLine !== 0) { - return false; - } - - this[_xfa_object.$extra]._isSplittable = true; - return true; - } - - [_xfa_object.$flushHTML]() { - return (0, _layout.flushHTML)(this); - } - - [_xfa_object.$addHTML](html, bbox) { - (0, _layout.addHTML)(this, html, bbox); - } - - [_xfa_object.$getAvailableSpace]() { - return (0, _layout.getAvailableSpace)(this); - } - - [_xfa_object.$toHTML](availableSpace) { - setTabIndex(this); - - if (this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { - return _utils.HTMLResult.EMPTY; - } - - (0, _html_utils.fixDimensions)(this); - const children = []; - const attributes = { - id: this[_xfa_object.$uid], - class: [] - }; - (0, _html_utils.setAccess)(this, attributes.class); - - if (!this[_xfa_object.$extra]) { - this[_xfa_object.$extra] = Object.create(null); - } - - Object.assign(this[_xfa_object.$extra], { - children, - attributes, - attempt: 0, - line: null, - numberInLine: 0, - availableSpace: { - width: Math.min(this.w || Infinity, availableSpace.width), - height: Math.min(this.h || Infinity, availableSpace.height) - }, - width: 0, - height: 0, - prevHeight: 0, - currentWidth: 0 - }); - - const isSplittable = this[_xfa_object.$isSplittable](); - - if (!isSplittable) { - setFirstUnsplittable(this); - } - - if (!(0, _layout.checkDimensions)(this, availableSpace)) { - return _utils.HTMLResult.FAILURE; - } - - const filter = new Set(["field"]); - - if (this.layout.includes("row")) { - const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths; - - if (Array.isArray(columnWidths) && columnWidths.length > 0) { - this[_xfa_object.$extra].columnWidths = columnWidths; - this[_xfa_object.$extra].currentColumn = 0; - } - } - - const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); - const classNames = ["xfaExclgroup"]; - const cl = (0, _html_utils.layoutClass)(this); - - if (cl) { - classNames.push(cl); - } - - if ((0, _html_utils.isPrintOnly)(this)) { - classNames.push("xfaPrintOnly"); - } - - attributes.style = style; - attributes.class = classNames; - - if (this.name) { - attributes.xfaName = this.name; - } - - this[_xfa_object.$pushPara](); - - const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; - const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; - - for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) { - if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { - this[_xfa_object.$extra].numberInLine = 0; - } - - const result = this[_xfa_object.$childrenToHTML]({ - filter, - include: true - }); - - if (result.success) { - break; - } - - if (result.isBreak()) { - this[_xfa_object.$popPara](); - - return result; - } - - if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && !this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { - this[_xfa_object.$extra].attempt = maxRun; - break; - } - } - - this[_xfa_object.$popPara](); - - if (!isSplittable) { - unsetFirstUnsplittable(this); - } - - if (this[_xfa_object.$extra].attempt === maxRun) { - if (!isSplittable) { - delete this[_xfa_object.$extra]; - } - - return _utils.HTMLResult.FAILURE; - } - - let marginH = 0; - let marginV = 0; - - if (this.margin) { - marginH = this.margin.leftInset + this.margin.rightInset; - marginV = this.margin.topInset + this.margin.bottomInset; - } - - const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0); - const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0); - const bbox = [this.x, this.y, width, height]; - - if (this.w === "") { - style.width = (0, _html_utils.measureToString)(width); - } - - if (this.h === "") { - style.height = (0, _html_utils.measureToString)(height); - } - - const html = { - name: "div", - attributes, - children - }; - applyAssist(this, attributes); - delete this[_xfa_object.$extra]; - return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); - } - -} - -class Execute extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "execute"); - this.connection = attributes.connection || ""; - this.executeType = (0, _utils.getStringOption)(attributes.executeType, ["import", "remerge"]); - this.id = attributes.id || ""; - this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Extras extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "extras", true); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.boolean = new _xfa_object.XFAObjectArray(); - this.date = new _xfa_object.XFAObjectArray(); - this.dateTime = new _xfa_object.XFAObjectArray(); - this.decimal = new _xfa_object.XFAObjectArray(); - this.exData = new _xfa_object.XFAObjectArray(); - this.extras = new _xfa_object.XFAObjectArray(); - this.float = new _xfa_object.XFAObjectArray(); - this.image = new _xfa_object.XFAObjectArray(); - this.integer = new _xfa_object.XFAObjectArray(); - this.text = new _xfa_object.XFAObjectArray(); - this.time = new _xfa_object.XFAObjectArray(); - } - -} - -class Field extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "field", true); - this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); - this.accessKey = attributes.accessKey || ""; - this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); - this.colSpan = (0, _utils.getInteger)({ - data: attributes.colSpan, - defaultValue: 1, - validate: n => n >= 1 || n === -1 - }); - this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; - this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); - this.id = attributes.id || ""; - this.locale = attributes.locale || ""; - this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); - this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); - this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); - this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); - this.name = attributes.name || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.rotate = (0, _utils.getInteger)({ - data: attributes.rotate, - defaultValue: 0, - validate: x => x % 90 === 0 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; - this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); - this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); - this.assist = null; - this.bind = null; - this.border = null; - this.calculate = null; - this.caption = null; - this.desc = null; - this.extras = null; - this.font = null; - this.format = null; - this.items = new _xfa_object.XFAObjectArray(2); - this.keep = null; - this.margin = null; - this.para = null; - this.traversal = null; - this.ui = null; - this.validate = null; - this.value = null; - this.bindItems = new _xfa_object.XFAObjectArray(); - this.connect = new _xfa_object.XFAObjectArray(); - this.event = new _xfa_object.XFAObjectArray(); - this.setProperty = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$isBindable]() { - return true; - } - - [_xfa_object.$setValue](value) { - _setValue(this, value); - } - - [_xfa_object.$toHTML](availableSpace) { - setTabIndex(this); - - if (!this.ui) { - this.ui = new Ui({}); - this.ui[_xfa_object.$globalData] = this[_xfa_object.$globalData]; - - this[_xfa_object.$appendChild](this.ui); - - let node; - - switch (this.items.children.length) { - case 0: - node = new TextEdit({}); - this.ui.textEdit = node; - break; - - case 1: - node = new CheckButton({}); - this.ui.checkButton = node; - break; - - case 2: - node = new ChoiceList({}); - this.ui.choiceList = node; - break; - } - - this.ui[_xfa_object.$appendChild](node); - } - - if (!this.ui || this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { - return _utils.HTMLResult.EMPTY; - } - - if (this.caption) { - delete this.caption[_xfa_object.$extra]; - } - - this[_xfa_object.$pushPara](); - - const caption = this.caption ? this.caption[_xfa_object.$toHTML](availableSpace).html : null; - const savedW = this.w; - const savedH = this.h; - let marginH = 0; - let marginV = 0; - - if (this.margin) { - marginH = this.margin.leftInset + this.margin.rightInset; - marginV = this.margin.topInset + this.margin.bottomInset; - } - - let borderDims = null; - - if (this.w === "" || this.h === "") { - let width = null; - let height = null; - let uiW = 0; - let uiH = 0; - - if (this.ui.checkButton) { - uiW = uiH = this.ui.checkButton.size; - } else { - const { - w, - h - } = (0, _html_utils.layoutNode)(this, availableSpace); - - if (w !== null) { - uiW = w; - uiH = h; - } else { - uiH = (0, _fonts.getMetrics)(this.font, true).lineNoGap; - } - } - - borderDims = getBorderDims(this.ui[_xfa_object.$getExtra]()); - uiW += borderDims.w; - uiH += borderDims.h; - - if (this.caption) { - const { - w, - h, - isBroken - } = this.caption[_xfa_object.$getExtra](availableSpace); - - if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) { - this[_xfa_object.$popPara](); - - return _utils.HTMLResult.FAILURE; - } - - width = w; - height = h; - - switch (this.caption.placement) { - case "left": - case "right": - case "inline": - width += uiW; - break; - - case "top": - case "bottom": - height += uiH; - break; - } - } else { - width = uiW; - height = uiH; - } - - if (width && this.w === "") { - width += marginH; - this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW); - } - - if (height && this.h === "") { - height += marginV; - this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH); - } - } - - this[_xfa_object.$popPara](); - - (0, _html_utils.fixDimensions)(this); - setFirstUnsplittable(this); - - if (!(0, _layout.checkDimensions)(this, availableSpace)) { - this.w = savedW; - this.h = savedH; - - this[_xfa_object.$popPara](); - - return _utils.HTMLResult.FAILURE; - } - - unsetFirstUnsplittable(this); - const style = (0, _html_utils.toStyle)(this, "font", "dimensions", "position", "rotate", "anchorType", "presence", "margin", "hAlign"); - (0, _html_utils.setMinMaxDimensions)(this, style); - const classNames = ["xfaField"]; - - if (this.font) { - classNames.push("xfaFont"); - } - - if ((0, _html_utils.isPrintOnly)(this)) { - classNames.push("xfaPrintOnly"); - } - - const attributes = { - style, - id: this[_xfa_object.$uid], - class: classNames - }; - - if (style.margin) { - style.padding = style.margin; - delete style.margin; - } - - (0, _html_utils.setAccess)(this, classNames); - - if (this.name) { - attributes.xfaName = this.name; - } - - const children = []; - const html = { - name: "div", - attributes, - children - }; - applyAssist(this, attributes); - const borderStyle = this.border ? this.border[_xfa_object.$toStyle]() : null; - const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace); - - const ui = this.ui[_xfa_object.$toHTML]().html; - - if (!ui) { - Object.assign(style, borderStyle); - return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); - } - - if (this[_xfa_object.$tabIndex]) { - if (ui.children && ui.children[0]) { - ui.children[0].attributes.tabindex = this[_xfa_object.$tabIndex]; - } else { - ui.attributes.tabindex = this[_xfa_object.$tabIndex]; - } - } - - if (!ui.attributes.style) { - ui.attributes.style = Object.create(null); - } - - let aElement = null; - - if (this.ui.button) { - if (ui.children.length === 1) { - [aElement] = ui.children.splice(0, 1); - } - - Object.assign(ui.attributes.style, borderStyle); - } else { - Object.assign(style, borderStyle); - } - - children.push(ui); - - if (this.value) { - if (this.ui.imageEdit) { - ui.children.push(this.value[_xfa_object.$toHTML]().html); - } else if (!this.ui.button) { - let value = ""; - - if (this.value.exData) { - value = this.value.exData[_xfa_object.$text](); - } else if (this.value.text) { - value = this.value.text[_xfa_object.$getExtra](); - } else { - const htmlValue = this.value[_xfa_object.$toHTML]().html; - - if (htmlValue !== null) { - value = htmlValue.children[0].value; - } - } - - if (this.ui.textEdit && this.value.text && this.value.text.maxChars) { - ui.children[0].attributes.maxLength = this.value.text.maxChars; - } - - if (value) { - if (this.ui.numericEdit) { - value = parseFloat(value); - value = isNaN(value) ? "" : value.toString(); - } - - if (ui.children[0].name === "textarea") { - ui.children[0].attributes.textContent = value; - } else { - ui.children[0].attributes.value = value; - } - } - } - } - - if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) { - borderDims = borderDims || getBorderDims(this.ui[_xfa_object.$getExtra]()); - let captionHeight = 0; - - if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { - captionHeight = this.caption.reserve; - - if (captionHeight <= 0) { - captionHeight = this.caption[_xfa_object.$getExtra](availableSpace).h; - } - - const inputHeight = this.h - captionHeight - marginV - borderDims.h; - ui.children[0].attributes.style.height = (0, _html_utils.measureToString)(inputHeight); - } else { - ui.children[0].attributes.style.height = "100%"; - } - } - - if (aElement) { - ui.children.push(aElement); - } - - if (!caption) { - if (ui.attributes.class) { - ui.attributes.class.push("xfaLeft"); - } - - this.w = savedW; - this.h = savedH; - return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); - } - - if (this.ui.button) { - if (style.padding) { - delete style.padding; - } - - if (caption.name === "div") { - caption.name = "span"; - } - - ui.children.push(caption); - return _utils.HTMLResult.success(html, bbox); - } else if (this.ui.checkButton) { - caption.attributes.class[0] = "xfaCaptionForCheckButton"; - } - - if (!ui.attributes.class) { - ui.attributes.class = []; - } - - ui.children.splice(0, 0, caption); - - switch (this.caption.placement) { - case "left": - ui.attributes.class.push("xfaLeft"); - break; - - case "right": - ui.attributes.class.push("xfaRight"); - break; - - case "top": - ui.attributes.class.push("xfaTop"); - break; - - case "bottom": - ui.attributes.class.push("xfaBottom"); - break; - - case "inline": - ui.attributes.class.push("xfaLeft"); - break; - } - - this.w = savedW; - this.h = savedH; - return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); - } - -} - -exports.Field = Field; - -class Fill extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "fill", true); - this.id = attributes.id || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.color = null; - this.extras = null; - this.linear = null; - this.pattern = null; - this.radial = null; - this.solid = null; - this.stipple = null; - } - - [_xfa_object.$toStyle]() { - const parent = this[_xfa_object.$getParent](); - - const grandpa = parent[_xfa_object.$getParent](); - - const ggrandpa = grandpa[_xfa_object.$getParent](); - - const style = Object.create(null); - let propName = "color"; - let altPropName = propName; - - if (parent instanceof Border) { - propName = "background-color"; - altPropName = "background"; - - if (ggrandpa instanceof Ui) { - style.backgroundColor = "white"; - } - } - - if (parent instanceof Rectangle || parent instanceof Arc) { - propName = altPropName = "fill"; - style.fill = "white"; - } - - for (const name of Object.getOwnPropertyNames(this)) { - if (name === "extras" || name === "color") { - continue; - } - - const obj = this[name]; - - if (!(obj instanceof _xfa_object.XFAObject)) { - continue; - } - - const color = obj[_xfa_object.$toStyle](this.color); - - if (color) { - style[color.startsWith("#") ? propName : altPropName] = color; - } - - return style; - } - - if (this.color && this.color.value) { - const color = this.color[_xfa_object.$toStyle](); - - style[color.startsWith("#") ? propName : altPropName] = color; - } - - return style; - } - -} - -class Filter extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "filter", true); - this.addRevocationInfo = (0, _utils.getStringOption)(attributes.addRevocationInfo, ["", "required", "optional", "none"]); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.version = (0, _utils.getInteger)({ - data: this.version, - defaultValue: 5, - validate: x => x >= 1 && x <= 5 - }); - this.appearanceFilter = null; - this.certificates = null; - this.digestMethods = null; - this.encodings = null; - this.encryptionMethods = null; - this.handler = null; - this.lockDocument = null; - this.mdp = null; - this.reasons = null; - this.timeStamp = null; - } - -} - -class Float extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "float"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - const number = parseFloat(this[_xfa_object.$content].trim()); - this[_xfa_object.$content] = isNaN(number) ? null : number; - } - - [_xfa_object.$toHTML](availableSpace) { - return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : ""); - } - -} - -class Font extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "font", true); - this.baselineShift = (0, _utils.getMeasurement)(attributes.baselineShift); - this.fontHorizontalScale = (0, _utils.getFloat)({ - data: attributes.fontHorizontalScale, - defaultValue: 100, - validate: x => x >= 0 - }); - this.fontVerticalScale = (0, _utils.getFloat)({ - data: attributes.fontVerticalScale, - defaultValue: 100, - validate: x => x >= 0 - }); - this.id = attributes.id || ""; - this.kerningMode = (0, _utils.getStringOption)(attributes.kerningMode, ["none", "pair"]); - this.letterSpacing = (0, _utils.getMeasurement)(attributes.letterSpacing, "0"); - this.lineThrough = (0, _utils.getInteger)({ - data: attributes.lineThrough, - defaultValue: 0, - validate: x => x === 1 || x === 2 - }); - this.lineThroughPeriod = (0, _utils.getStringOption)(attributes.lineThroughPeriod, ["all", "word"]); - this.overline = (0, _utils.getInteger)({ - data: attributes.overline, - defaultValue: 0, - validate: x => x === 1 || x === 2 - }); - this.overlinePeriod = (0, _utils.getStringOption)(attributes.overlinePeriod, ["all", "word"]); - this.posture = (0, _utils.getStringOption)(attributes.posture, ["normal", "italic"]); - this.size = (0, _utils.getMeasurement)(attributes.size, "10pt"); - this.typeface = attributes.typeface || "Courier"; - this.underline = (0, _utils.getInteger)({ - data: attributes.underline, - defaultValue: 0, - validate: x => x === 1 || x === 2 - }); - this.underlinePeriod = (0, _utils.getStringOption)(attributes.underlinePeriod, ["all", "word"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.weight = (0, _utils.getStringOption)(attributes.weight, ["normal", "bold"]); - this.extras = null; - this.fill = null; - } - - [_xfa_object.$clean](builder) { - super[_xfa_object.$clean](builder); - - this[_xfa_object.$globalData].usedTypefaces.add(this.typeface); - } - - [_xfa_object.$toStyle]() { - const style = (0, _html_utils.toStyle)(this, "fill"); - const color = style.color; - - if (color) { - if (color === "#000000") { - delete style.color; - } else if (!color.startsWith("#")) { - style.background = color; - style.backgroundClip = "text"; - style.color = "transparent"; - } - } - - if (this.baselineShift) { - style.verticalAlign = (0, _html_utils.measureToString)(this.baselineShift); - } - - style.fontKerning = this.kerningMode === "none" ? "none" : "normal"; - style.letterSpacing = (0, _html_utils.measureToString)(this.letterSpacing); - - if (this.lineThrough !== 0) { - style.textDecoration = "line-through"; - - if (this.lineThrough === 2) { - style.textDecorationStyle = "double"; - } - } - - if (this.overline !== 0) { - style.textDecoration = "overline"; - - if (this.overline === 2) { - style.textDecorationStyle = "double"; - } - } - - style.fontStyle = this.posture; - style.fontSize = (0, _html_utils.measureToString)(0.99 * this.size); - (0, _html_utils.setFontFamily)(this, this, this[_xfa_object.$globalData].fontFinder, style); - - if (this.underline !== 0) { - style.textDecoration = "underline"; - - if (this.underline === 2) { - style.textDecorationStyle = "double"; - } - } - - style.fontWeight = this.weight; - return style; - } - -} - -class Format extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "format", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.picture = null; - } - -} - -class Handler extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "handler"); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Hyphenation extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "hyphenation"); - this.excludeAllCaps = (0, _utils.getInteger)({ - data: attributes.excludeAllCaps, - defaultValue: 0, - validate: x => x === 1 - }); - this.excludeInitialCap = (0, _utils.getInteger)({ - data: attributes.excludeInitialCap, - defaultValue: 0, - validate: x => x === 1 - }); - this.hyphenate = (0, _utils.getInteger)({ - data: attributes.hyphenate, - defaultValue: 0, - validate: x => x === 1 - }); - this.id = attributes.id || ""; - this.pushCharacterCount = (0, _utils.getInteger)({ - data: attributes.pushCharacterCount, - defaultValue: 3, - validate: x => x >= 0 - }); - this.remainCharacterCount = (0, _utils.getInteger)({ - data: attributes.remainCharacterCount, - defaultValue: 3, - validate: x => x >= 0 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.wordCharacterCount = (0, _utils.getInteger)({ - data: attributes.wordCharacterCount, - defaultValue: 7, - validate: x => x >= 0 - }); - } - -} - -class Image extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "image"); - this.aspect = (0, _utils.getStringOption)(attributes.aspect, ["fit", "actual", "height", "none", "width"]); - this.contentType = attributes.contentType || ""; - this.href = attributes.href || ""; - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["base64", "none", "package"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$toHTML]() { - if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) { - return _utils.HTMLResult.EMPTY; - } - - let buffer = this[_xfa_object.$globalData].images && this[_xfa_object.$globalData].images.get(this.href); - - if (!buffer && (this.href || !this[_xfa_object.$content])) { - return _utils.HTMLResult.EMPTY; - } - - if (!buffer && this.transferEncoding === "base64") { - buffer = (0, _util.stringToBytes)(atob(this[_xfa_object.$content])); - } - - if (!buffer) { - return _utils.HTMLResult.EMPTY; - } - - if (!this.contentType) { - for (const [header, type] of IMAGES_HEADERS) { - if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) { - this.contentType = type; - break; - } - } - - if (!this.contentType) { - return _utils.HTMLResult.EMPTY; - } - } - - const blob = new Blob([buffer], { - type: this.contentType - }); - let style; - - switch (this.aspect) { - case "fit": - case "actual": - break; - - case "height": - style = { - height: "100%", - objectFit: "fill" - }; - break; - - case "none": - style = { - width: "100%", - height: "100%", - objectFit: "fill" - }; - break; - - case "width": - style = { - width: "100%", - objectFit: "fill" - }; - break; - } - - const parent = this[_xfa_object.$getParent](); - - return _utils.HTMLResult.success({ - name: "img", - attributes: { - class: ["xfaImage"], - style, - src: URL.createObjectURL(blob), - alt: parent ? ariaLabel(parent[_xfa_object.$getParent]()) : null - } - }); - } - -} - -class ImageEdit extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "imageEdit", true); - this.data = (0, _utils.getStringOption)(attributes.data, ["link", "embed"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - - [_xfa_object.$toHTML](availableSpace) { - if (this.data === "embed") { - return _utils.HTMLResult.success({ - name: "div", - children: [], - attributes: {} - }); - } - - return _utils.HTMLResult.EMPTY; - } - -} - -class Integer extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "integer"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - const number = parseInt(this[_xfa_object.$content].trim(), 10); - this[_xfa_object.$content] = isNaN(number) ? null : number; - } - - [_xfa_object.$toHTML](availableSpace) { - return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : ""); - } - -} - -class Issuers extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "issuers", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.certificate = new _xfa_object.XFAObjectArray(); - } - -} - -class Items extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "items", true); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.ref = attributes.ref || ""; - this.save = (0, _utils.getInteger)({ - data: attributes.save, - defaultValue: 0, - validate: x => x === 1 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.boolean = new _xfa_object.XFAObjectArray(); - this.date = new _xfa_object.XFAObjectArray(); - this.dateTime = new _xfa_object.XFAObjectArray(); - this.decimal = new _xfa_object.XFAObjectArray(); - this.exData = new _xfa_object.XFAObjectArray(); - this.float = new _xfa_object.XFAObjectArray(); - this.image = new _xfa_object.XFAObjectArray(); - this.integer = new _xfa_object.XFAObjectArray(); - this.text = new _xfa_object.XFAObjectArray(); - this.time = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$toHTML]() { - const output = []; - - for (const child of this[_xfa_object.$getChildren]()) { - output.push(child[_xfa_object.$text]()); - } - - return _utils.HTMLResult.success(output); - } - -} - -exports.Items = Items; - -class Keep extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "keep", true); - this.id = attributes.id || ""; - const options = ["none", "contentArea", "pageArea"]; - this.intact = (0, _utils.getStringOption)(attributes.intact, options); - this.next = (0, _utils.getStringOption)(attributes.next, options); - this.previous = (0, _utils.getStringOption)(attributes.previous, options); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - } - -} - -class KeyUsage extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "keyUsage"); - const options = ["", "yes", "no"]; - this.crlSign = (0, _utils.getStringOption)(attributes.crlSign, options); - this.dataEncipherment = (0, _utils.getStringOption)(attributes.dataEncipherment, options); - this.decipherOnly = (0, _utils.getStringOption)(attributes.decipherOnly, options); - this.digitalSignature = (0, _utils.getStringOption)(attributes.digitalSignature, options); - this.encipherOnly = (0, _utils.getStringOption)(attributes.encipherOnly, options); - this.id = attributes.id || ""; - this.keyAgreement = (0, _utils.getStringOption)(attributes.keyAgreement, options); - this.keyCertSign = (0, _utils.getStringOption)(attributes.keyCertSign, options); - this.keyEncipherment = (0, _utils.getStringOption)(attributes.keyEncipherment, options); - this.nonRepudiation = (0, _utils.getStringOption)(attributes.nonRepudiation, options); - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Line extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "line", true); - this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); - this.id = attributes.id || ""; - this.slope = (0, _utils.getStringOption)(attributes.slope, ["\\", "/"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.edge = null; - } - - [_xfa_object.$toHTML]() { - const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); - - const edge = this.edge ? this.edge : new Edge({}); - - const edgeStyle = edge[_xfa_object.$toStyle](); - - const style = Object.create(null); - const thickness = edge.presence === "visible" ? edge.thickness : 0; - style.strokeWidth = (0, _html_utils.measureToString)(thickness); - style.stroke = edgeStyle.color; - let x1, y1, x2, y2; - let width = "100%"; - let height = "100%"; - - if (parent.w <= thickness) { - [x1, y1, x2, y2] = ["50%", 0, "50%", "100%"]; - width = style.strokeWidth; - } else if (parent.h <= thickness) { - [x1, y1, x2, y2] = [0, "50%", "100%", "50%"]; - height = style.strokeWidth; - } else { - if (this.slope === "\\") { - [x1, y1, x2, y2] = [0, 0, "100%", "100%"]; - } else { - [x1, y1, x2, y2] = [0, "100%", "100%", 0]; - } - } - - const line = { - name: "line", - attributes: { - xmlns: SVG_NS, - x1, - y1, - x2, - y2, - style - } - }; - const svg = { - name: "svg", - children: [line], - attributes: { - xmlns: SVG_NS, - width, - height, - style: { - overflow: "visible" - } - } - }; - - if (hasMargin(parent)) { - return _utils.HTMLResult.success({ - name: "div", - attributes: { - style: { - display: "inline", - width: "100%", - height: "100%" - } - }, - children: [svg] - }); - } - - svg.attributes.style.position = "absolute"; - return _utils.HTMLResult.success(svg); - } - -} - -class Linear extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "linear", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["toRight", "toBottom", "toLeft", "toTop"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.color = null; - this.extras = null; - } - - [_xfa_object.$toStyle](startColor) { - startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; - const transf = this.type.replace(/([RBLT])/, " $1").toLowerCase(); - const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000"; - return `linear-gradient(${transf}, ${startColor}, ${endColor})`; - } - -} - -class LockDocument extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "lockDocument"); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = (0, _utils.getStringOption)(this[_xfa_object.$content], ["auto", "0", "1"]); - } - -} - -class Manifest extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "manifest", true); - this.action = (0, _utils.getStringOption)(attributes.action, ["include", "all", "exclude"]); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.ref = new _xfa_object.XFAObjectArray(); - } - -} - -class Margin extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "margin", true); - this.bottomInset = (0, _utils.getMeasurement)(attributes.bottomInset, "0"); - this.id = attributes.id || ""; - this.leftInset = (0, _utils.getMeasurement)(attributes.leftInset, "0"); - this.rightInset = (0, _utils.getMeasurement)(attributes.rightInset, "0"); - this.topInset = (0, _utils.getMeasurement)(attributes.topInset, "0"); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - } - - [_xfa_object.$toStyle]() { - return { - margin: (0, _html_utils.measureToString)(this.topInset) + " " + (0, _html_utils.measureToString)(this.rightInset) + " " + (0, _html_utils.measureToString)(this.bottomInset) + " " + (0, _html_utils.measureToString)(this.leftInset) - }; - } - -} - -class Mdp extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "mdp"); - this.id = attributes.id || ""; - this.permissions = (0, _utils.getInteger)({ - data: attributes.permissions, - defaultValue: 2, - validate: x => x === 1 || x === 3 - }); - this.signatureType = (0, _utils.getStringOption)(attributes.signatureType, ["filler", "author"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Medium extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "medium"); - this.id = attributes.id || ""; - this.imagingBBox = (0, _utils.getBBox)(attributes.imagingBBox); - this.long = (0, _utils.getMeasurement)(attributes.long); - this.orientation = (0, _utils.getStringOption)(attributes.orientation, ["portrait", "landscape"]); - this.short = (0, _utils.getMeasurement)(attributes.short); - this.stock = attributes.stock || ""; - this.trayIn = (0, _utils.getStringOption)(attributes.trayIn, ["auto", "delegate", "pageFront"]); - this.trayOut = (0, _utils.getStringOption)(attributes.trayOut, ["auto", "delegate"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Message extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "message", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.text = new _xfa_object.XFAObjectArray(); - } - -} - -class NumericEdit extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "numericEdit", true); - this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.border = null; - this.comb = null; - this.extras = null; - this.margin = null; - } - - [_xfa_object.$toHTML](availableSpace) { - const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); - - const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); - - const html = { - name: "input", - attributes: { - type: "text", - fieldId: field[_xfa_object.$uid], - dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], - class: ["xfaTextfield"], - style, - "aria-label": ariaLabel(field) - } - }; - return _utils.HTMLResult.success({ - name: "label", - attributes: { - class: ["xfaLabel"] - }, - children: [html] - }); - } - -} - -class Occur extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "occur", true); - this.id = attributes.id || ""; - this.initial = attributes.initial !== "" ? (0, _utils.getInteger)({ - data: attributes.initial, - defaultValue: "", - validate: x => true - }) : ""; - this.max = attributes.max !== "" ? (0, _utils.getInteger)({ - data: attributes.max, - defaultValue: 1, - validate: x => true - }) : ""; - this.min = attributes.min !== "" ? (0, _utils.getInteger)({ - data: attributes.min, - defaultValue: 1, - validate: x => true - }) : ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - } - - [_xfa_object.$clean]() { - const parent = this[_xfa_object.$getParent](); - - const originalMin = this.min; - - if (this.min === "") { - this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1; - } - - if (this.max === "") { - if (originalMin === "") { - this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1; - } else { - this.max = this.min; - } - } - - if (this.max !== -1 && this.max < this.min) { - this.max = this.min; - } - - if (this.initial === "") { - this.initial = parent instanceof Template ? 1 : this.min; - } - } - -} - -class Oid extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "oid"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Oids extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "oids", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.oid = new _xfa_object.XFAObjectArray(); - } - -} - -class Overflow extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "overflow"); - this.id = attributes.id || ""; - this.leader = attributes.leader || ""; - this.target = attributes.target || ""; - this.trailer = attributes.trailer || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$getExtra]() { - if (!this[_xfa_object.$extra]) { - const parent = this[_xfa_object.$getParent](); - - const root = this[_xfa_object.$getTemplateRoot](); - - const target = root[_xfa_object.$searchNode](this.target, parent); - - const leader = root[_xfa_object.$searchNode](this.leader, parent); - - const trailer = root[_xfa_object.$searchNode](this.trailer, parent); - - this[_xfa_object.$extra] = { - target: target && target[0] || null, - leader: leader && leader[0] || null, - trailer: trailer && trailer[0] || null, - addLeader: false, - addTrailer: false - }; - } - - return this[_xfa_object.$extra]; - } - -} - -class PageArea extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "pageArea", true); - this.blankOrNotBlank = (0, _utils.getStringOption)(attributes.blankOrNotBlank, ["any", "blank", "notBlank"]); - this.id = attributes.id || ""; - this.initialNumber = (0, _utils.getInteger)({ - data: attributes.initialNumber, - defaultValue: 1, - validate: x => true - }); - this.name = attributes.name || ""; - this.numbered = (0, _utils.getInteger)({ - data: attributes.numbered, - defaultValue: 1, - validate: x => true - }); - this.oddOrEven = (0, _utils.getStringOption)(attributes.oddOrEven, ["any", "even", "odd"]); - this.pagePosition = (0, _utils.getStringOption)(attributes.pagePosition, ["any", "first", "last", "only", "rest"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.desc = null; - this.extras = null; - this.medium = null; - this.occur = null; - this.area = new _xfa_object.XFAObjectArray(); - this.contentArea = new _xfa_object.XFAObjectArray(); - this.draw = new _xfa_object.XFAObjectArray(); - this.exclGroup = new _xfa_object.XFAObjectArray(); - this.field = new _xfa_object.XFAObjectArray(); - this.subform = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$isUsable]() { - if (!this[_xfa_object.$extra]) { - this[_xfa_object.$extra] = { - numberOfUse: 0 - }; - return true; - } - - return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max; - } - - [_xfa_object.$cleanPage]() { - delete this[_xfa_object.$extra]; - } - - [_xfa_object.$getNextPage]() { - if (!this[_xfa_object.$extra]) { - this[_xfa_object.$extra] = { - numberOfUse: 0 - }; - } - - const parent = this[_xfa_object.$getParent](); - - if (parent.relation === "orderedOccurrence") { - if (this[_xfa_object.$isUsable]()) { - this[_xfa_object.$extra].numberOfUse += 1; - return this; - } - } - - return parent[_xfa_object.$getNextPage](); - } - - [_xfa_object.$getAvailableSpace]() { - return this[_xfa_object.$extra].space || { - width: 0, - height: 0 - }; - } - - [_xfa_object.$toHTML]() { - if (!this[_xfa_object.$extra]) { - this[_xfa_object.$extra] = { - numberOfUse: 1 - }; - } - - const children = []; - this[_xfa_object.$extra].children = children; - const style = Object.create(null); - - if (this.medium && this.medium.short && this.medium.long) { - style.width = (0, _html_utils.measureToString)(this.medium.short); - style.height = (0, _html_utils.measureToString)(this.medium.long); - this[_xfa_object.$extra].space = { - width: this.medium.short, - height: this.medium.long - }; - - if (this.medium.orientation === "landscape") { - const x = style.width; - style.width = style.height; - style.height = x; - this[_xfa_object.$extra].space = { - width: this.medium.long, - height: this.medium.short - }; - } - } else { - (0, _util.warn)("XFA - No medium specified in pageArea: please file a bug."); - } - - this[_xfa_object.$childrenToHTML]({ - filter: new Set(["area", "draw", "field", "subform"]), - include: true - }); - - this[_xfa_object.$childrenToHTML]({ - filter: new Set(["contentArea"]), - include: true - }); - - return _utils.HTMLResult.success({ - name: "div", - children, - attributes: { - class: ["xfaPage"], - id: this[_xfa_object.$uid], - style, - xfaName: this.name - } - }); - } - -} - -class PageSet extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "pageSet", true); - this.duplexImposition = (0, _utils.getStringOption)(attributes.duplexImposition, ["longEdge", "shortEdge"]); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.relation = (0, _utils.getStringOption)(attributes.relation, ["orderedOccurrence", "duplexPaginated", "simplexPaginated"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.occur = null; - this.pageArea = new _xfa_object.XFAObjectArray(); - this.pageSet = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$cleanPage]() { - for (const page of this.pageArea.children) { - page[_xfa_object.$cleanPage](); - } - - for (const page of this.pageSet.children) { - page[_xfa_object.$cleanPage](); - } - } - - [_xfa_object.$isUsable]() { - return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max; - } - - [_xfa_object.$getNextPage]() { - if (!this[_xfa_object.$extra]) { - this[_xfa_object.$extra] = { - numberOfUse: 1, - pageIndex: -1, - pageSetIndex: -1 - }; - } - - if (this.relation === "orderedOccurrence") { - if (this[_xfa_object.$extra].pageIndex + 1 < this.pageArea.children.length) { - this[_xfa_object.$extra].pageIndex += 1; - const pageArea = this.pageArea.children[this[_xfa_object.$extra].pageIndex]; - return pageArea[_xfa_object.$getNextPage](); - } - - if (this[_xfa_object.$extra].pageSetIndex + 1 < this.pageSet.children.length) { - this[_xfa_object.$extra].pageSetIndex += 1; - return this.pageSet.children[this[_xfa_object.$extra].pageSetIndex][_xfa_object.$getNextPage](); - } - - if (this[_xfa_object.$isUsable]()) { - this[_xfa_object.$extra].numberOfUse += 1; - this[_xfa_object.$extra].pageIndex = -1; - this[_xfa_object.$extra].pageSetIndex = -1; - return this[_xfa_object.$getNextPage](); - } - - const parent = this[_xfa_object.$getParent](); - - if (parent instanceof PageSet) { - return parent[_xfa_object.$getNextPage](); - } - - this[_xfa_object.$cleanPage](); - - return this[_xfa_object.$getNextPage](); - } - - const pageNumber = this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].pageNumber; - - const parity = pageNumber % 2 === 0 ? "even" : "odd"; - const position = pageNumber === 0 ? "first" : "rest"; - let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position); - - if (page) { - return page; - } - - page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === position); - - if (page) { - return page; - } - - page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === "any"); - - if (page) { - return page; - } - - return this.pageArea.children[0]; - } - -} - -class Para extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "para", true); - this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); - this.id = attributes.id || ""; - this.lineHeight = attributes.lineHeight ? (0, _utils.getMeasurement)(attributes.lineHeight, "0pt") : ""; - this.marginLeft = attributes.marginLeft ? (0, _utils.getMeasurement)(attributes.marginLeft, "0pt") : ""; - this.marginRight = attributes.marginRight ? (0, _utils.getMeasurement)(attributes.marginRight, "0pt") : ""; - this.orphans = (0, _utils.getInteger)({ - data: attributes.orphans, - defaultValue: 0, - validate: x => x >= 0 - }); - this.preserve = attributes.preserve || ""; - this.radixOffset = attributes.radixOffset ? (0, _utils.getMeasurement)(attributes.radixOffset, "0pt") : ""; - this.spaceAbove = attributes.spaceAbove ? (0, _utils.getMeasurement)(attributes.spaceAbove, "0pt") : ""; - this.spaceBelow = attributes.spaceBelow ? (0, _utils.getMeasurement)(attributes.spaceBelow, "0pt") : ""; - this.tabDefault = attributes.tabDefault ? (0, _utils.getMeasurement)(this.tabDefault) : ""; - this.tabStops = (attributes.tabStops || "").trim().split(/\s+/).map((x, i) => i % 2 === 1 ? (0, _utils.getMeasurement)(x) : x); - this.textIndent = attributes.textIndent ? (0, _utils.getMeasurement)(attributes.textIndent, "0pt") : ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.vAlign = (0, _utils.getStringOption)(attributes.vAlign, ["top", "bottom", "middle"]); - this.widows = (0, _utils.getInteger)({ - data: attributes.widows, - defaultValue: 0, - validate: x => x >= 0 - }); - this.hyphenation = null; - } - - [_xfa_object.$toStyle]() { - const style = (0, _html_utils.toStyle)(this, "hAlign"); - - if (this.marginLeft !== "") { - style.paddingLeft = (0, _html_utils.measureToString)(this.marginLeft); - } - - if (this.marginRight !== "") { - style.paddingight = (0, _html_utils.measureToString)(this.marginRight); - } - - if (this.spaceAbove !== "") { - style.paddingTop = (0, _html_utils.measureToString)(this.spaceAbove); - } - - if (this.spaceBelow !== "") { - style.paddingBottom = (0, _html_utils.measureToString)(this.spaceBelow); - } - - if (this.textIndent !== "") { - style.textIndent = (0, _html_utils.measureToString)(this.textIndent); - (0, _html_utils.fixTextIndent)(style); - } - - if (this.lineHeight > 0) { - style.lineHeight = (0, _html_utils.measureToString)(this.lineHeight); - } - - if (this.tabDefault !== "") { - style.tabSize = (0, _html_utils.measureToString)(this.tabDefault); - } - - if (this.tabStops.length > 0) {} - - if (this.hyphenatation) { - Object.assign(style, this.hyphenatation[_xfa_object.$toStyle]()); - } - - return style; - } - -} - -class PasswordEdit extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "passwordEdit", true); - this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); - this.id = attributes.id || ""; - this.passwordChar = attributes.passwordChar || "*"; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.border = null; - this.extras = null; - this.margin = null; - } - -} - -class Pattern extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "pattern", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["crossHatch", "crossDiagonal", "diagonalLeft", "diagonalRight", "horizontal", "vertical"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.color = null; - this.extras = null; - } - - [_xfa_object.$toStyle](startColor) { - startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; - const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000"; - const width = 5; - const cmd = "repeating-linear-gradient"; - const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`; - - switch (this.type) { - case "crossHatch": - return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`; - - case "crossDiagonal": - return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`; - - case "diagonalLeft": - return `${cmd}(45deg,${colors})`; - - case "diagonalRight": - return `${cmd}(-45deg,${colors})`; - - case "horizontal": - return `${cmd}(to top,${colors})`; - - case "vertical": - return `${cmd}(to right,${colors})`; - } - - return ""; - } - -} - -class Picture extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "picture"); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Proto extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "proto", true); - this.appearanceFilter = new _xfa_object.XFAObjectArray(); - this.arc = new _xfa_object.XFAObjectArray(); - this.area = new _xfa_object.XFAObjectArray(); - this.assist = new _xfa_object.XFAObjectArray(); - this.barcode = new _xfa_object.XFAObjectArray(); - this.bindItems = new _xfa_object.XFAObjectArray(); - this.bookend = new _xfa_object.XFAObjectArray(); - this.boolean = new _xfa_object.XFAObjectArray(); - this.border = new _xfa_object.XFAObjectArray(); - this.break = new _xfa_object.XFAObjectArray(); - this.breakAfter = new _xfa_object.XFAObjectArray(); - this.breakBefore = new _xfa_object.XFAObjectArray(); - this.button = new _xfa_object.XFAObjectArray(); - this.calculate = new _xfa_object.XFAObjectArray(); - this.caption = new _xfa_object.XFAObjectArray(); - this.certificate = new _xfa_object.XFAObjectArray(); - this.certificates = new _xfa_object.XFAObjectArray(); - this.checkButton = new _xfa_object.XFAObjectArray(); - this.choiceList = new _xfa_object.XFAObjectArray(); - this.color = new _xfa_object.XFAObjectArray(); - this.comb = new _xfa_object.XFAObjectArray(); - this.connect = new _xfa_object.XFAObjectArray(); - this.contentArea = new _xfa_object.XFAObjectArray(); - this.corner = new _xfa_object.XFAObjectArray(); - this.date = new _xfa_object.XFAObjectArray(); - this.dateTime = new _xfa_object.XFAObjectArray(); - this.dateTimeEdit = new _xfa_object.XFAObjectArray(); - this.decimal = new _xfa_object.XFAObjectArray(); - this.defaultUi = new _xfa_object.XFAObjectArray(); - this.desc = new _xfa_object.XFAObjectArray(); - this.digestMethod = new _xfa_object.XFAObjectArray(); - this.digestMethods = new _xfa_object.XFAObjectArray(); - this.draw = new _xfa_object.XFAObjectArray(); - this.edge = new _xfa_object.XFAObjectArray(); - this.encoding = new _xfa_object.XFAObjectArray(); - this.encodings = new _xfa_object.XFAObjectArray(); - this.encrypt = new _xfa_object.XFAObjectArray(); - this.encryptData = new _xfa_object.XFAObjectArray(); - this.encryption = new _xfa_object.XFAObjectArray(); - this.encryptionMethod = new _xfa_object.XFAObjectArray(); - this.encryptionMethods = new _xfa_object.XFAObjectArray(); - this.event = new _xfa_object.XFAObjectArray(); - this.exData = new _xfa_object.XFAObjectArray(); - this.exObject = new _xfa_object.XFAObjectArray(); - this.exclGroup = new _xfa_object.XFAObjectArray(); - this.execute = new _xfa_object.XFAObjectArray(); - this.extras = new _xfa_object.XFAObjectArray(); - this.field = new _xfa_object.XFAObjectArray(); - this.fill = new _xfa_object.XFAObjectArray(); - this.filter = new _xfa_object.XFAObjectArray(); - this.float = new _xfa_object.XFAObjectArray(); - this.font = new _xfa_object.XFAObjectArray(); - this.format = new _xfa_object.XFAObjectArray(); - this.handler = new _xfa_object.XFAObjectArray(); - this.hyphenation = new _xfa_object.XFAObjectArray(); - this.image = new _xfa_object.XFAObjectArray(); - this.imageEdit = new _xfa_object.XFAObjectArray(); - this.integer = new _xfa_object.XFAObjectArray(); - this.issuers = new _xfa_object.XFAObjectArray(); - this.items = new _xfa_object.XFAObjectArray(); - this.keep = new _xfa_object.XFAObjectArray(); - this.keyUsage = new _xfa_object.XFAObjectArray(); - this.line = new _xfa_object.XFAObjectArray(); - this.linear = new _xfa_object.XFAObjectArray(); - this.lockDocument = new _xfa_object.XFAObjectArray(); - this.manifest = new _xfa_object.XFAObjectArray(); - this.margin = new _xfa_object.XFAObjectArray(); - this.mdp = new _xfa_object.XFAObjectArray(); - this.medium = new _xfa_object.XFAObjectArray(); - this.message = new _xfa_object.XFAObjectArray(); - this.numericEdit = new _xfa_object.XFAObjectArray(); - this.occur = new _xfa_object.XFAObjectArray(); - this.oid = new _xfa_object.XFAObjectArray(); - this.oids = new _xfa_object.XFAObjectArray(); - this.overflow = new _xfa_object.XFAObjectArray(); - this.pageArea = new _xfa_object.XFAObjectArray(); - this.pageSet = new _xfa_object.XFAObjectArray(); - this.para = new _xfa_object.XFAObjectArray(); - this.passwordEdit = new _xfa_object.XFAObjectArray(); - this.pattern = new _xfa_object.XFAObjectArray(); - this.picture = new _xfa_object.XFAObjectArray(); - this.radial = new _xfa_object.XFAObjectArray(); - this.reason = new _xfa_object.XFAObjectArray(); - this.reasons = new _xfa_object.XFAObjectArray(); - this.rectangle = new _xfa_object.XFAObjectArray(); - this.ref = new _xfa_object.XFAObjectArray(); - this.script = new _xfa_object.XFAObjectArray(); - this.setProperty = new _xfa_object.XFAObjectArray(); - this.signData = new _xfa_object.XFAObjectArray(); - this.signature = new _xfa_object.XFAObjectArray(); - this.signing = new _xfa_object.XFAObjectArray(); - this.solid = new _xfa_object.XFAObjectArray(); - this.speak = new _xfa_object.XFAObjectArray(); - this.stipple = new _xfa_object.XFAObjectArray(); - this.subform = new _xfa_object.XFAObjectArray(); - this.subformSet = new _xfa_object.XFAObjectArray(); - this.subjectDN = new _xfa_object.XFAObjectArray(); - this.subjectDNs = new _xfa_object.XFAObjectArray(); - this.submit = new _xfa_object.XFAObjectArray(); - this.text = new _xfa_object.XFAObjectArray(); - this.textEdit = new _xfa_object.XFAObjectArray(); - this.time = new _xfa_object.XFAObjectArray(); - this.timeStamp = new _xfa_object.XFAObjectArray(); - this.toolTip = new _xfa_object.XFAObjectArray(); - this.traversal = new _xfa_object.XFAObjectArray(); - this.traverse = new _xfa_object.XFAObjectArray(); - this.ui = new _xfa_object.XFAObjectArray(); - this.validate = new _xfa_object.XFAObjectArray(); - this.value = new _xfa_object.XFAObjectArray(); - this.variables = new _xfa_object.XFAObjectArray(); - } - -} - -class Radial extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "radial", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["toEdge", "toCenter"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.color = null; - this.extras = null; - } - - [_xfa_object.$toStyle](startColor) { - startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; - const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000"; - const colors = this.type === "toEdge" ? `${startColor},${endColor}` : `${endColor},${startColor}`; - return `radial-gradient(circle at center, ${colors})`; - } - -} - -class Reason extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "reason"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Reasons extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "reasons", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.reason = new _xfa_object.XFAObjectArray(); - } - -} - -class Rectangle extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "rectangle", true); - this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.corner = new _xfa_object.XFAObjectArray(4); - this.edge = new _xfa_object.XFAObjectArray(4); - this.fill = null; - } - - [_xfa_object.$toHTML]() { - const edge = this.edge.children.length ? this.edge.children[0] : new Edge({}); - - const edgeStyle = edge[_xfa_object.$toStyle](); - - const style = Object.create(null); - - if (this.fill && this.fill.presence === "visible") { - Object.assign(style, this.fill[_xfa_object.$toStyle]()); - } else { - style.fill = "transparent"; - } - - style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0); - style.stroke = edgeStyle.color; - const corner = this.corner.children.length ? this.corner.children[0] : new Corner({}); - - const cornerStyle = corner[_xfa_object.$toStyle](); - - const rect = { - name: "rect", - attributes: { - xmlns: SVG_NS, - width: "100%", - height: "100%", - x: 0, - y: 0, - rx: cornerStyle.radius, - ry: cornerStyle.radius, - style - } - }; - const svg = { - name: "svg", - children: [rect], - attributes: { - xmlns: SVG_NS, - style: { - overflow: "visible" - }, - width: "100%", - height: "100%" - } - }; - - const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); - - if (hasMargin(parent)) { - return _utils.HTMLResult.success({ - name: "div", - attributes: { - style: { - display: "inline", - width: "100%", - height: "100%" - } - }, - children: [svg] - }); - } - - svg.attributes.style.position = "absolute"; - return _utils.HTMLResult.success(svg); - } - -} - -class RefElement extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "ref"); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Script extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "script"); - this.binding = attributes.binding || ""; - this.contentType = attributes.contentType || ""; - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class SetProperty extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "setProperty"); - this.connection = attributes.connection || ""; - this.ref = attributes.ref || ""; - this.target = attributes.target || ""; - } - -} - -exports.SetProperty = SetProperty; - -class SignData extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "signData", true); - this.id = attributes.id || ""; - this.operation = (0, _utils.getStringOption)(attributes.operation, ["sign", "clear", "verify"]); - this.ref = attributes.ref || ""; - this.target = attributes.target || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.filter = null; - this.manifest = null; - } - -} - -class Signature extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "signature", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["PDF1.3", "PDF1.6"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.border = null; - this.extras = null; - this.filter = null; - this.manifest = null; - this.margin = null; - } - -} - -class Signing extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "signing", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.certificate = new _xfa_object.XFAObjectArray(); - } - -} - -class Solid extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "solid", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - } - - [_xfa_object.$toStyle](startColor) { - return startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF"; - } - -} - -class Speak extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "speak"); - this.disable = (0, _utils.getInteger)({ - data: attributes.disable, - defaultValue: 0, - validate: x => x === 1 - }); - this.id = attributes.id || ""; - this.priority = (0, _utils.getStringOption)(attributes.priority, ["custom", "caption", "name", "toolTip"]); - this.rid = attributes.rid || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Stipple extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "stipple", true); - this.id = attributes.id || ""; - this.rate = (0, _utils.getInteger)({ - data: attributes.rate, - defaultValue: 50, - validate: x => x >= 0 && x <= 100 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.color = null; - this.extras = null; - } - - [_xfa_object.$toStyle](bgColor) { - const alpha = this.rate / 100; - return _util.Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)); - } - -} - -class Subform extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "subform", true); - this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); - this.allowMacro = (0, _utils.getInteger)({ - data: attributes.allowMacro, - defaultValue: 0, - validate: x => x === 1 - }); - this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); - this.colSpan = (0, _utils.getInteger)({ - data: attributes.colSpan, - defaultValue: 1, - validate: n => n >= 1 || n === -1 - }); - this.columnWidths = (attributes.columnWidths || "").trim().split(/\s+/).map(x => x === "-1" ? -1 : (0, _utils.getMeasurement)(x)); - this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; - this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); - this.id = attributes.id || ""; - this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); - this.locale = attributes.locale || ""; - this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); - this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); - this.mergeMode = (0, _utils.getStringOption)(attributes.mergeMode, ["consumeData", "matchTemplate"]); - this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); - this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); - this.name = attributes.name || ""; - this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.restoreState = (0, _utils.getStringOption)(attributes.restoreState, ["manual", "auto"]); - this.scope = (0, _utils.getStringOption)(attributes.scope, ["name", "none"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; - this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); - this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); - this.assist = null; - this.bind = null; - this.bookend = null; - this.border = null; - this.break = null; - this.calculate = null; - this.desc = null; - this.extras = null; - this.keep = null; - this.margin = null; - this.occur = null; - this.overflow = null; - this.pageSet = null; - this.para = null; - this.traversal = null; - this.validate = null; - this.variables = null; - this.area = new _xfa_object.XFAObjectArray(); - this.breakAfter = new _xfa_object.XFAObjectArray(); - this.breakBefore = new _xfa_object.XFAObjectArray(); - this.connect = new _xfa_object.XFAObjectArray(); - this.draw = new _xfa_object.XFAObjectArray(); - this.event = new _xfa_object.XFAObjectArray(); - this.exObject = new _xfa_object.XFAObjectArray(); - this.exclGroup = new _xfa_object.XFAObjectArray(); - this.field = new _xfa_object.XFAObjectArray(); - this.proto = new _xfa_object.XFAObjectArray(); - this.setProperty = new _xfa_object.XFAObjectArray(); - this.subform = new _xfa_object.XFAObjectArray(); - this.subformSet = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$getSubformParent]() { - const parent = this[_xfa_object.$getParent](); - - if (parent instanceof SubformSet) { - return parent[_xfa_object.$getSubformParent](); - } - - return parent; - } - - [_xfa_object.$isBindable]() { - return true; - } - - [_xfa_object.$isThereMoreWidth]() { - return this.layout.endsWith("-tb") && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth](); - } - - *[_xfa_object.$getContainedChildren]() { - yield* getContainedChildren(this); - } - - [_xfa_object.$flushHTML]() { - return (0, _layout.flushHTML)(this); - } - - [_xfa_object.$addHTML](html, bbox) { - (0, _layout.addHTML)(this, html, bbox); - } - - [_xfa_object.$getAvailableSpace]() { - return (0, _layout.getAvailableSpace)(this); - } - - [_xfa_object.$isSplittable]() { - const parent = this[_xfa_object.$getSubformParent](); - - if (!parent[_xfa_object.$isSplittable]()) { - return false; - } - - if (this[_xfa_object.$extra]._isSplittable !== undefined) { - return this[_xfa_object.$extra]._isSplittable; - } - - if (this.layout === "position" || this.layout.includes("row")) { - this[_xfa_object.$extra]._isSplittable = false; - return false; - } - - if (this.keep && this.keep.intact !== "none") { - this[_xfa_object.$extra]._isSplittable = false; - return false; - } - - if (parent.layout && parent.layout.endsWith("-tb") && parent[_xfa_object.$extra].numberInLine !== 0) { - return false; - } - - this[_xfa_object.$extra]._isSplittable = true; - return true; - } - - [_xfa_object.$toHTML](availableSpace) { - setTabIndex(this); - - if (this.break) { - if (this.break.after !== "auto" || this.break.afterTarget !== "") { - const node = new BreakAfter({ - targetType: this.break.after, - target: this.break.afterTarget, - startNew: this.break.startNew.toString() - }); - node[_xfa_object.$globalData] = this[_xfa_object.$globalData]; - - this[_xfa_object.$appendChild](node); - - this.breakAfter.push(node); - } - - if (this.break.before !== "auto" || this.break.beforeTarget !== "") { - const node = new BreakBefore({ - targetType: this.break.before, - target: this.break.beforeTarget, - startNew: this.break.startNew.toString() - }); - node[_xfa_object.$globalData] = this[_xfa_object.$globalData]; - - this[_xfa_object.$appendChild](node); - - this.breakBefore.push(node); - } - - if (this.break.overflowTarget !== "") { - const node = new Overflow({ - target: this.break.overflowTarget, - leader: this.break.overflowLeader, - trailer: this.break.overflowTrailer - }); - node[_xfa_object.$globalData] = this[_xfa_object.$globalData]; - - this[_xfa_object.$appendChild](node); - - this.overflow.push(node); - } - - this[_xfa_object.$removeChild](this.break); - - this.break = null; - } - - if (this.presence === "hidden" || this.presence === "inactive") { - return _utils.HTMLResult.EMPTY; - } - - if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) { - (0, _util.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug."); - } - - if (this.breakBefore.children.length >= 1) { - const breakBefore = this.breakBefore.children[0]; - - if (handleBreak(breakBefore)) { - return _utils.HTMLResult.breakNode(breakBefore); - } - } - - if (this[_xfa_object.$extra] && this[_xfa_object.$extra].afterBreakAfter) { - return _utils.HTMLResult.EMPTY; - } - - (0, _html_utils.fixDimensions)(this); - const children = []; - const attributes = { - id: this[_xfa_object.$uid], - class: [] - }; - (0, _html_utils.setAccess)(this, attributes.class); - - if (!this[_xfa_object.$extra]) { - this[_xfa_object.$extra] = Object.create(null); - } - - Object.assign(this[_xfa_object.$extra], { - children, - line: null, - attributes, - attempt: 0, - numberInLine: 0, - availableSpace: { - width: Math.min(this.w || Infinity, availableSpace.width), - height: Math.min(this.h || Infinity, availableSpace.height) - }, - width: 0, - height: 0, - prevHeight: 0, - currentWidth: 0 - }); - - const root = this[_xfa_object.$getTemplateRoot](); - - const savedNoLayoutFailure = root[_xfa_object.$extra].noLayoutFailure; - - const isSplittable = this[_xfa_object.$isSplittable](); - - if (!isSplittable) { - setFirstUnsplittable(this); - } - - if (!(0, _layout.checkDimensions)(this, availableSpace)) { - return _utils.HTMLResult.FAILURE; - } - - const filter = new Set(["area", "draw", "exclGroup", "field", "subform", "subformSet"]); - - if (this.layout.includes("row")) { - const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths; - - if (Array.isArray(columnWidths) && columnWidths.length > 0) { - this[_xfa_object.$extra].columnWidths = columnWidths; - this[_xfa_object.$extra].currentColumn = 0; - } - } - - const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); - const classNames = ["xfaSubform"]; - const cl = (0, _html_utils.layoutClass)(this); - - if (cl) { - classNames.push(cl); - } - - attributes.style = style; - attributes.class = classNames; - - if (this.name) { - attributes.xfaName = this.name; - } - - if (this.overflow) { - const overflowExtra = this.overflow[_xfa_object.$getExtra](); - - if (overflowExtra.addLeader) { - overflowExtra.addLeader = false; - handleOverflow(this, overflowExtra.leader, availableSpace); - } - } - - this[_xfa_object.$pushPara](); - - const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; - const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; - - for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) { - if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { - this[_xfa_object.$extra].numberInLine = 0; - } - - const result = this[_xfa_object.$childrenToHTML]({ - filter, - include: true - }); - - if (result.success) { - break; - } - - if (result.isBreak()) { - this[_xfa_object.$popPara](); - - return result; - } - - if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && !root[_xfa_object.$extra].noLayoutFailure) { - this[_xfa_object.$extra].attempt = maxRun; - break; - } - } - - this[_xfa_object.$popPara](); - - if (!isSplittable) { - unsetFirstUnsplittable(this); - } - - root[_xfa_object.$extra].noLayoutFailure = savedNoLayoutFailure; - - if (this[_xfa_object.$extra].attempt === maxRun) { - if (this.overflow) { - this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].overflowNode = this.overflow; - } - - if (!isSplittable) { - delete this[_xfa_object.$extra]; - } - - return _utils.HTMLResult.FAILURE; - } - - if (this.overflow) { - const overflowExtra = this.overflow[_xfa_object.$getExtra](); - - if (overflowExtra.addTrailer) { - overflowExtra.addTrailer = false; - handleOverflow(this, overflowExtra.trailer, availableSpace); - } - } - - let marginH = 0; - let marginV = 0; - - if (this.margin) { - marginH = this.margin.leftInset + this.margin.rightInset; - marginV = this.margin.topInset + this.margin.bottomInset; - } - - const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0); - const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0); - const bbox = [this.x, this.y, width, height]; - - if (this.w === "") { - style.width = (0, _html_utils.measureToString)(width); - } - - if (this.h === "") { - style.height = (0, _html_utils.measureToString)(height); - } - - if ((style.width === "0px" || style.height === "0px") && children.length === 0) { - return _utils.HTMLResult.EMPTY; - } - - const html = { - name: "div", - attributes, - children - }; - applyAssist(this, attributes); - - const result = _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); - - if (this.breakAfter.children.length >= 1) { - const breakAfter = this.breakAfter.children[0]; - - if (handleBreak(breakAfter)) { - this[_xfa_object.$extra].afterBreakAfter = result; - return _utils.HTMLResult.breakNode(breakAfter); - } - } - - delete this[_xfa_object.$extra]; - return result; - } - -} - -class SubformSet extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "subformSet", true); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.relation = (0, _utils.getStringOption)(attributes.relation, ["ordered", "choice", "unordered"]); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.bookend = null; - this.break = null; - this.desc = null; - this.extras = null; - this.occur = null; - this.overflow = null; - this.breakAfter = new _xfa_object.XFAObjectArray(); - this.breakBefore = new _xfa_object.XFAObjectArray(); - this.subform = new _xfa_object.XFAObjectArray(); - this.subformSet = new _xfa_object.XFAObjectArray(); - } - - *[_xfa_object.$getContainedChildren]() { - yield* getContainedChildren(this); - } - - [_xfa_object.$getSubformParent]() { - let parent = this[_xfa_object.$getParent](); - - while (!(parent instanceof Subform)) { - parent = parent[_xfa_object.$getParent](); - } - - return parent; - } - - [_xfa_object.$isBindable]() { - return true; - } - -} - -class SubjectDN extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "subjectDN"); - this.delimiter = attributes.delimiter || ","; - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = new Map(this[_xfa_object.$content].split(this.delimiter).map(kv => { - kv = kv.split("=", 2); - kv[0] = kv[0].trim(); - return kv; - })); - } - -} - -class SubjectDNs extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "subjectDNs", true); - this.id = attributes.id || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.subjectDN = new _xfa_object.XFAObjectArray(); - } - -} - -class Submit extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "submit", true); - this.embedPDF = (0, _utils.getInteger)({ - data: attributes.embedPDF, - defaultValue: 0, - validate: x => x === 1 - }); - this.format = (0, _utils.getStringOption)(attributes.format, ["xdp", "formdata", "pdf", "urlencoded", "xfd", "xml"]); - this.id = attributes.id || ""; - this.target = attributes.target || ""; - this.textEncoding = (0, _utils.getKeyword)({ - data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : "", - defaultValue: "", - validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.xdpContent = attributes.xdpContent || ""; - this.encrypt = null; - this.encryptData = new _xfa_object.XFAObjectArray(); - this.signData = new _xfa_object.XFAObjectArray(); - } - -} - -class Template extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "template", true); - this.baseProfile = (0, _utils.getStringOption)(attributes.baseProfile, ["full", "interactiveForms"]); - this.extras = null; - this.subform = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$finalize]() { - if (this.subform.children.length === 0) { - (0, _util.warn)("XFA - No subforms in template node."); - } - - if (this.subform.children.length >= 2) { - (0, _util.warn)("XFA - Several subforms in template node: please file a bug."); - } - - this[_xfa_object.$tabIndex] = DEFAULT_TAB_INDEX; - } - - [_xfa_object.$isSplittable]() { - return true; - } - - [_xfa_object.$searchNode](expr, container) { - if (expr.startsWith("#")) { - return [this[_xfa_object.$ids].get(expr.slice(1))]; - } - - return (0, _som.searchNode)(this, container, expr, true, true); - } - - *[_xfa_object.$toPages]() { - if (!this.subform.children.length) { - return _utils.HTMLResult.success({ - name: "div", - children: [] - }); - } - - this[_xfa_object.$extra] = { - overflowNode: null, - firstUnsplittable: null, - currentContentArea: null, - currentPageArea: null, - noLayoutFailure: false, - pageNumber: 1, - pagePosition: "first", - oddOrEven: "odd", - blankOrNotBlank: "nonBlank", - paraStack: [] - }; - const root = this.subform.children[0]; - - root.pageSet[_xfa_object.$cleanPage](); - - const pageAreas = root.pageSet.pageArea.children; - const mainHtml = { - name: "div", - children: [] - }; - let pageArea = null; - let breakBefore = null; - let breakBeforeTarget = null; - - if (root.breakBefore.children.length >= 1) { - breakBefore = root.breakBefore.children[0]; - breakBeforeTarget = breakBefore.target; - } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) { - breakBefore = root.subform.children[0].breakBefore.children[0]; - breakBeforeTarget = breakBefore.target; - } else if (root.break && root.break.beforeTarget) { - breakBefore = root.break; - breakBeforeTarget = breakBefore.beforeTarget; - } else if (root.subform.children.length >= 1 && root.subform.children[0].break && root.subform.children[0].break.beforeTarget) { - breakBefore = root.subform.children[0].break; - breakBeforeTarget = breakBefore.beforeTarget; - } - - if (breakBefore) { - const target = this[_xfa_object.$searchNode](breakBeforeTarget, breakBefore[_xfa_object.$getParent]()); - - if (target instanceof PageArea) { - pageArea = target; - breakBefore[_xfa_object.$extra] = {}; - } - } - - if (!pageArea) { - pageArea = pageAreas[0]; - } - - pageArea[_xfa_object.$extra] = { - numberOfUse: 1 - }; - - const pageAreaParent = pageArea[_xfa_object.$getParent](); - - pageAreaParent[_xfa_object.$extra] = { - numberOfUse: 1, - pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea), - pageSetIndex: 0 - }; - let targetPageArea; - let leader = null; - let trailer = null; - let hasSomething = true; - let hasSomethingCounter = 0; - let startIndex = 0; - - while (true) { - if (!hasSomething) { - mainHtml.children.pop(); - - if (++hasSomethingCounter === MAX_EMPTY_PAGES) { - (0, _util.warn)("XFA - Something goes wrong: please file a bug."); - return mainHtml; - } - } else { - hasSomethingCounter = 0; - } - - targetPageArea = null; - this[_xfa_object.$extra].currentPageArea = pageArea; - - const page = pageArea[_xfa_object.$toHTML]().html; - - mainHtml.children.push(page); - - if (leader) { - this[_xfa_object.$extra].noLayoutFailure = true; - page.children.push(leader[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html); - leader = null; - } - - if (trailer) { - this[_xfa_object.$extra].noLayoutFailure = true; - page.children.push(trailer[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html); - trailer = null; - } - - const contentAreas = pageArea.contentArea.children; - const htmlContentAreas = page.children.filter(node => node.attributes.class.includes("xfaContentarea")); - hasSomething = false; - this[_xfa_object.$extra].firstUnsplittable = null; - this[_xfa_object.$extra].noLayoutFailure = false; - - const flush = index => { - const html = root[_xfa_object.$flushHTML](); - - if (html) { - hasSomething = hasSomething || html.children && html.children.length !== 0; - htmlContentAreas[index].children.push(html); - } - }; - - for (let i = startIndex, ii = contentAreas.length; i < ii; i++) { - const contentArea = this[_xfa_object.$extra].currentContentArea = contentAreas[i]; - const space = { - width: contentArea.w, - height: contentArea.h - }; - startIndex = 0; - - if (leader) { - htmlContentAreas[i].children.push(leader[_xfa_object.$toHTML](space).html); - leader = null; - } - - if (trailer) { - htmlContentAreas[i].children.push(trailer[_xfa_object.$toHTML](space).html); - trailer = null; - } - - const html = root[_xfa_object.$toHTML](space); - - if (html.success) { - if (html.html) { - hasSomething = hasSomething || html.html.children && html.html.children.length !== 0; - htmlContentAreas[i].children.push(html.html); - } else if (!hasSomething && mainHtml.children.length > 1) { - mainHtml.children.pop(); - } - - return mainHtml; - } - - if (html.isBreak()) { - const node = html.breakNode; - flush(i); - - if (node.targetType === "auto") { - continue; - } - - if (node.leader) { - leader = this[_xfa_object.$searchNode](node.leader, node[_xfa_object.$getParent]()); - leader = leader ? leader[0] : null; - } - - if (node.trailer) { - trailer = this[_xfa_object.$searchNode](node.trailer, node[_xfa_object.$getParent]()); - trailer = trailer ? trailer[0] : null; - } - - if (node.targetType === "pageArea") { - targetPageArea = node[_xfa_object.$extra].target; - i = Infinity; - } else if (!node[_xfa_object.$extra].target) { - i = node[_xfa_object.$extra].index; - } else { - targetPageArea = node[_xfa_object.$extra].target; - startIndex = node[_xfa_object.$extra].index + 1; - i = Infinity; - } - - continue; - } - - if (this[_xfa_object.$extra].overflowNode) { - const node = this[_xfa_object.$extra].overflowNode; - this[_xfa_object.$extra].overflowNode = null; - - const overflowExtra = node[_xfa_object.$getExtra](); - - const target = overflowExtra.target; - overflowExtra.addLeader = overflowExtra.leader !== null; - overflowExtra.addTrailer = overflowExtra.trailer !== null; - flush(i); - const currentIndex = i; - i = Infinity; - - if (target instanceof PageArea) { - targetPageArea = target; - } else if (target instanceof ContentArea) { - const index = contentAreas.findIndex(e => e === target); - - if (index !== -1) { - if (index > currentIndex) { - i = index - 1; - } else { - startIndex = index; - } - } else { - targetPageArea = target[_xfa_object.$getParent](); - startIndex = targetPageArea.contentArea.children.findIndex(e => e === target); - } - } - - continue; - } - - flush(i); - } - - this[_xfa_object.$extra].pageNumber += 1; - - if (targetPageArea) { - if (targetPageArea[_xfa_object.$isUsable]()) { - targetPageArea[_xfa_object.$extra].numberOfUse += 1; - } else { - targetPageArea = null; - } - } - - pageArea = targetPageArea || pageArea[_xfa_object.$getNextPage](); - yield null; - } - } - -} - -exports.Template = Template; - -class Text extends _xfa_object.ContentObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "text"); - this.id = attributes.id || ""; - this.maxChars = (0, _utils.getInteger)({ - data: attributes.maxChars, - defaultValue: 0, - validate: x => x >= 0 - }); - this.name = attributes.name || ""; - this.rid = attributes.rid || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$acceptWhitespace]() { - return true; - } - - [_xfa_object.$onChild](child) { - if (child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { - this[_xfa_object.$content] = child; - return true; - } - - (0, _util.warn)(`XFA - Invalid content in Text: ${child[_xfa_object.$nodeName]}.`); - return false; - } - - [_xfa_object.$onText](str) { - if (this[_xfa_object.$content] instanceof _xfa_object.XFAObject) { - return; - } - - super[_xfa_object.$onText](str); - } - - [_xfa_object.$finalize]() { - if (typeof this[_xfa_object.$content] === "string") { - this[_xfa_object.$content] = this[_xfa_object.$content].replace(/\r\n/g, "\n"); - } - } - - [_xfa_object.$getExtra]() { - if (typeof this[_xfa_object.$content] === "string") { - return this[_xfa_object.$content].split(/[\u2029\u2028\n]/).reduce((acc, line) => { - if (line) { - acc.push(line); - } - - return acc; - }, []).join("\n"); - } - - return this[_xfa_object.$content][_xfa_object.$text](); - } - - [_xfa_object.$toHTML](availableSpace) { - if (typeof this[_xfa_object.$content] === "string") { - const html = valueToHtml(this[_xfa_object.$content]).html; - - if (this[_xfa_object.$content].includes("\u2029")) { - html.name = "div"; - html.children = []; - - this[_xfa_object.$content].split("\u2029").map(para => para.split(/[\u2028\n]/).reduce((acc, line) => { - acc.push({ - name: "span", - value: line - }, { - name: "br" - }); - return acc; - }, [])).forEach(lines => { - html.children.push({ - name: "p", - children: lines - }); - }); - } else if (/[\u2028\n]/.test(this[_xfa_object.$content])) { - html.name = "div"; - html.children = []; - - this[_xfa_object.$content].split(/[\u2028\n]/).forEach(line => { - html.children.push({ - name: "span", - value: line - }, { - name: "br" - }); - }); - } - - return _utils.HTMLResult.success(html); - } - - return this[_xfa_object.$content][_xfa_object.$toHTML](availableSpace); - } - -} - -exports.Text = Text; - -class TextEdit extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "textEdit", true); - this.allowRichText = (0, _utils.getInteger)({ - data: attributes.allowRichText, - defaultValue: 0, - validate: x => x === 1 - }); - this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); - this.id = attributes.id || ""; - this.multiLine = (0, _utils.getInteger)({ - data: attributes.multiLine, - defaultValue: "", - validate: x => x === 0 || x === 1 - }); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.vScrollPolicy = (0, _utils.getStringOption)(attributes.vScrollPolicy, ["auto", "off", "on"]); - this.border = null; - this.comb = null; - this.extras = null; - this.margin = null; - } - - [_xfa_object.$toHTML](availableSpace) { - const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); - let html; - - const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent](); - - if (this.multiLine === "") { - this.multiLine = field instanceof Draw ? 1 : 0; - } - - if (this.multiLine === 1) { - html = { - name: "textarea", - attributes: { - dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], - fieldId: field[_xfa_object.$uid], - class: ["xfaTextfield"], - style, - "aria-label": ariaLabel(field) - } - }; - } else { - html = { - name: "input", - attributes: { - type: "text", - dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid], - fieldId: field[_xfa_object.$uid], - class: ["xfaTextfield"], - style, - "aria-label": ariaLabel(field) - } - }; - } - - return _utils.HTMLResult.success({ - name: "label", - attributes: { - class: ["xfaLabel"] - }, - children: [html] - }); - } - -} - -class Time extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "time"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - - [_xfa_object.$finalize]() { - const date = this[_xfa_object.$content].trim(); - - this[_xfa_object.$content] = date ? new Date(date) : null; - } - - [_xfa_object.$toHTML](availableSpace) { - return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : ""); - } - -} - -class TimeStamp extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "timeStamp"); - this.id = attributes.id || ""; - this.server = attributes.server || ""; - this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class ToolTip extends _xfa_object.StringObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "toolTip"); - this.id = attributes.id || ""; - this.rid = attributes.rid || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Traversal extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "traversal", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.traverse = new _xfa_object.XFAObjectArray(); - } - -} - -class Traverse extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "traverse", true); - this.id = attributes.id || ""; - this.operation = (0, _utils.getStringOption)(attributes.operation, ["next", "back", "down", "first", "left", "right", "up"]); - this.ref = attributes.ref || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.script = null; - } - - get name() { - return this.operation; - } - - [_xfa_object.$isTransparent]() { - return false; - } - -} - -class Ui extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "ui", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.picture = null; - this.barcode = null; - this.button = null; - this.checkButton = null; - this.choiceList = null; - this.dateTimeEdit = null; - this.defaultUi = null; - this.imageEdit = null; - this.numericEdit = null; - this.passwordEdit = null; - this.signature = null; - this.textEdit = null; - } - - [_xfa_object.$getExtra]() { - if (this[_xfa_object.$extra] === undefined) { - for (const name of Object.getOwnPropertyNames(this)) { - if (name === "extras" || name === "picture") { - continue; - } - - const obj = this[name]; - - if (!(obj instanceof _xfa_object.XFAObject)) { - continue; - } - - this[_xfa_object.$extra] = obj; - return obj; - } - - this[_xfa_object.$extra] = null; - } - - return this[_xfa_object.$extra]; - } - - [_xfa_object.$toHTML](availableSpace) { - const obj = this[_xfa_object.$getExtra](); - - if (obj) { - return obj[_xfa_object.$toHTML](availableSpace); - } - - return _utils.HTMLResult.EMPTY; - } - -} - -class Validate extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "validate", true); - this.formatTest = (0, _utils.getStringOption)(attributes.formatTest, ["warning", "disabled", "error"]); - this.id = attributes.id || ""; - this.nullTest = (0, _utils.getStringOption)(attributes.nullTest, ["disabled", "error", "warning"]); - this.scriptTest = (0, _utils.getStringOption)(attributes.scriptTest, ["error", "disabled", "warning"]); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.extras = null; - this.message = null; - this.picture = null; - this.script = null; - } - -} - -class Value extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "value", true); - this.id = attributes.id || ""; - this.override = (0, _utils.getInteger)({ - data: attributes.override, - defaultValue: 0, - validate: x => x === 1 - }); - this.relevant = (0, _utils.getRelevant)(attributes.relevant); - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.arc = null; - this.boolean = null; - this.date = null; - this.dateTime = null; - this.decimal = null; - this.exData = null; - this.float = null; - this.image = null; - this.integer = null; - this.line = null; - this.rectangle = null; - this.text = null; - this.time = null; - } - - [_xfa_object.$setValue](value) { - const parent = this[_xfa_object.$getParent](); - - if (parent instanceof Field) { - if (parent.ui && parent.ui.imageEdit) { - if (!this.image) { - this.image = new Image({}); - - this[_xfa_object.$appendChild](this.image); - } - - this.image[_xfa_object.$content] = value[_xfa_object.$content]; - return; - } - } - - const valueName = value[_xfa_object.$nodeName]; - - if (this[valueName] !== null) { - this[valueName][_xfa_object.$content] = value[_xfa_object.$content]; - return; - } - - for (const name of Object.getOwnPropertyNames(this)) { - const obj = this[name]; - - if (obj instanceof _xfa_object.XFAObject) { - this[name] = null; - - this[_xfa_object.$removeChild](obj); - } - } - - this[value[_xfa_object.$nodeName]] = value; - - this[_xfa_object.$appendChild](value); - } - - [_xfa_object.$text]() { - if (this.exData) { - if (typeof this.exData[_xfa_object.$content] === "string") { - return this.exData[_xfa_object.$content].trim(); - } - - return this.exData[_xfa_object.$content][_xfa_object.$text]().trim(); - } - - for (const name of Object.getOwnPropertyNames(this)) { - if (name === "image") { - continue; - } - - const obj = this[name]; - - if (obj instanceof _xfa_object.XFAObject) { - return (obj[_xfa_object.$content] || "").toString().trim(); - } - } - - return null; - } - - [_xfa_object.$toHTML](availableSpace) { - for (const name of Object.getOwnPropertyNames(this)) { - const obj = this[name]; - - if (!(obj instanceof _xfa_object.XFAObject)) { - continue; - } - - return obj[_xfa_object.$toHTML](availableSpace); - } - - return _utils.HTMLResult.EMPTY; - } - -} - -exports.Value = Value; - -class Variables extends _xfa_object.XFAObject { - constructor(attributes) { - super(TEMPLATE_NS_ID, "variables", true); - this.id = attributes.id || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - this.boolean = new _xfa_object.XFAObjectArray(); - this.date = new _xfa_object.XFAObjectArray(); - this.dateTime = new _xfa_object.XFAObjectArray(); - this.decimal = new _xfa_object.XFAObjectArray(); - this.exData = new _xfa_object.XFAObjectArray(); - this.float = new _xfa_object.XFAObjectArray(); - this.image = new _xfa_object.XFAObjectArray(); - this.integer = new _xfa_object.XFAObjectArray(); - this.manifest = new _xfa_object.XFAObjectArray(); - this.script = new _xfa_object.XFAObjectArray(); - this.text = new _xfa_object.XFAObjectArray(); - this.time = new _xfa_object.XFAObjectArray(); - } - - [_xfa_object.$isTransparent]() { - return true; - } - -} - -class TemplateNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (TemplateNamespace.hasOwnProperty(name)) { - const node = TemplateNamespace[name](attributes); - - node[_xfa_object.$setSetAttributes](attributes); - - return node; - } - - return undefined; - } - - static appearanceFilter(attrs) { - return new AppearanceFilter(attrs); - } - - static arc(attrs) { - return new Arc(attrs); - } - - static area(attrs) { - return new Area(attrs); - } - - static assist(attrs) { - return new Assist(attrs); - } - - static barcode(attrs) { - return new Barcode(attrs); - } - - static bind(attrs) { - return new Bind(attrs); - } - - static bindItems(attrs) { - return new BindItems(attrs); - } - - static bookend(attrs) { - return new Bookend(attrs); - } - - static boolean(attrs) { - return new BooleanElement(attrs); - } - - static border(attrs) { - return new Border(attrs); - } - - static break(attrs) { - return new Break(attrs); - } - - static breakAfter(attrs) { - return new BreakAfter(attrs); - } - - static breakBefore(attrs) { - return new BreakBefore(attrs); - } - - static button(attrs) { - return new Button(attrs); - } - - static calculate(attrs) { - return new Calculate(attrs); - } - - static caption(attrs) { - return new Caption(attrs); - } - - static certificate(attrs) { - return new Certificate(attrs); - } - - static certificates(attrs) { - return new Certificates(attrs); - } - - static checkButton(attrs) { - return new CheckButton(attrs); - } - - static choiceList(attrs) { - return new ChoiceList(attrs); - } - - static color(attrs) { - return new Color(attrs); - } - - static comb(attrs) { - return new Comb(attrs); - } - - static connect(attrs) { - return new Connect(attrs); - } - - static contentArea(attrs) { - return new ContentArea(attrs); - } - - static corner(attrs) { - return new Corner(attrs); - } - - static date(attrs) { - return new DateElement(attrs); - } - - static dateTime(attrs) { - return new DateTime(attrs); - } - - static dateTimeEdit(attrs) { - return new DateTimeEdit(attrs); - } - - static decimal(attrs) { - return new Decimal(attrs); - } - - static defaultUi(attrs) { - return new DefaultUi(attrs); - } - - static desc(attrs) { - return new Desc(attrs); - } - - static digestMethod(attrs) { - return new DigestMethod(attrs); - } - - static digestMethods(attrs) { - return new DigestMethods(attrs); - } - - static draw(attrs) { - return new Draw(attrs); - } - - static edge(attrs) { - return new Edge(attrs); - } - - static encoding(attrs) { - return new Encoding(attrs); - } - - static encodings(attrs) { - return new Encodings(attrs); - } - - static encrypt(attrs) { - return new Encrypt(attrs); - } - - static encryptData(attrs) { - return new EncryptData(attrs); - } - - static encryption(attrs) { - return new Encryption(attrs); - } - - static encryptionMethod(attrs) { - return new EncryptionMethod(attrs); - } - - static encryptionMethods(attrs) { - return new EncryptionMethods(attrs); - } - - static event(attrs) { - return new Event(attrs); - } - - static exData(attrs) { - return new ExData(attrs); - } - - static exObject(attrs) { - return new ExObject(attrs); - } - - static exclGroup(attrs) { - return new ExclGroup(attrs); - } - - static execute(attrs) { - return new Execute(attrs); - } - - static extras(attrs) { - return new Extras(attrs); - } - - static field(attrs) { - return new Field(attrs); - } - - static fill(attrs) { - return new Fill(attrs); - } - - static filter(attrs) { - return new Filter(attrs); - } - - static float(attrs) { - return new Float(attrs); - } - - static font(attrs) { - return new Font(attrs); - } - - static format(attrs) { - return new Format(attrs); - } - - static handler(attrs) { - return new Handler(attrs); - } - - static hyphenation(attrs) { - return new Hyphenation(attrs); - } - - static image(attrs) { - return new Image(attrs); - } - - static imageEdit(attrs) { - return new ImageEdit(attrs); - } - - static integer(attrs) { - return new Integer(attrs); - } - - static issuers(attrs) { - return new Issuers(attrs); - } - - static items(attrs) { - return new Items(attrs); - } - - static keep(attrs) { - return new Keep(attrs); - } - - static keyUsage(attrs) { - return new KeyUsage(attrs); - } - - static line(attrs) { - return new Line(attrs); - } - - static linear(attrs) { - return new Linear(attrs); - } - - static lockDocument(attrs) { - return new LockDocument(attrs); - } - - static manifest(attrs) { - return new Manifest(attrs); - } - - static margin(attrs) { - return new Margin(attrs); - } - - static mdp(attrs) { - return new Mdp(attrs); - } - - static medium(attrs) { - return new Medium(attrs); - } - - static message(attrs) { - return new Message(attrs); - } - - static numericEdit(attrs) { - return new NumericEdit(attrs); - } - - static occur(attrs) { - return new Occur(attrs); - } - - static oid(attrs) { - return new Oid(attrs); - } - - static oids(attrs) { - return new Oids(attrs); - } - - static overflow(attrs) { - return new Overflow(attrs); - } - - static pageArea(attrs) { - return new PageArea(attrs); - } - - static pageSet(attrs) { - return new PageSet(attrs); - } - - static para(attrs) { - return new Para(attrs); - } - - static passwordEdit(attrs) { - return new PasswordEdit(attrs); - } - - static pattern(attrs) { - return new Pattern(attrs); - } - - static picture(attrs) { - return new Picture(attrs); - } - - static proto(attrs) { - return new Proto(attrs); - } - - static radial(attrs) { - return new Radial(attrs); - } - - static reason(attrs) { - return new Reason(attrs); - } - - static reasons(attrs) { - return new Reasons(attrs); - } - - static rectangle(attrs) { - return new Rectangle(attrs); - } - - static ref(attrs) { - return new RefElement(attrs); - } - - static script(attrs) { - return new Script(attrs); - } - - static setProperty(attrs) { - return new SetProperty(attrs); - } - - static signData(attrs) { - return new SignData(attrs); - } - - static signature(attrs) { - return new Signature(attrs); - } - - static signing(attrs) { - return new Signing(attrs); - } - - static solid(attrs) { - return new Solid(attrs); - } - - static speak(attrs) { - return new Speak(attrs); - } - - static stipple(attrs) { - return new Stipple(attrs); - } - - static subform(attrs) { - return new Subform(attrs); - } - - static subformSet(attrs) { - return new SubformSet(attrs); - } - - static subjectDN(attrs) { - return new SubjectDN(attrs); - } - - static subjectDNs(attrs) { - return new SubjectDNs(attrs); - } - - static submit(attrs) { - return new Submit(attrs); - } - - static template(attrs) { - return new Template(attrs); - } - - static text(attrs) { - return new Text(attrs); - } - - static textEdit(attrs) { - return new TextEdit(attrs); - } - - static time(attrs) { - return new Time(attrs); - } - - static timeStamp(attrs) { - return new TimeStamp(attrs); - } - - static toolTip(attrs) { - return new ToolTip(attrs); - } - - static traversal(attrs) { - return new Traversal(attrs); - } - - static traverse(attrs) { - return new Traverse(attrs); - } - - static ui(attrs) { - return new Ui(attrs); - } - - static validate(attrs) { - return new Validate(attrs); - } - - static value(attrs) { - return new Value(attrs); - } - - static variables(attrs) { - return new Variables(attrs); - } - -} - -exports.TemplateNamespace = TemplateNamespace; - -/***/ }), -/* 83 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.addHTML = addHTML; -exports.checkDimensions = checkDimensions; -exports.flushHTML = flushHTML; -exports.getAvailableSpace = getAvailableSpace; - -var _xfa_object = __w_pdfjs_require__(77); - -var _html_utils = __w_pdfjs_require__(84); - -function createLine(node, children) { - return { - name: "div", - attributes: { - class: [node.layout === "lr-tb" ? "xfaLr" : "xfaRl"] - }, - children - }; -} - -function flushHTML(node) { - if (!node[_xfa_object.$extra]) { - return null; - } - - const attributes = node[_xfa_object.$extra].attributes; - const html = { - name: "div", - attributes, - children: node[_xfa_object.$extra].children - }; - - if (node[_xfa_object.$extra].failingNode) { - const htmlFromFailing = node[_xfa_object.$extra].failingNode[_xfa_object.$flushHTML](); - - if (htmlFromFailing) { - if (node.layout.endsWith("-tb")) { - html.children.push(createLine(node, [htmlFromFailing])); - } else { - html.children.push(htmlFromFailing); - } - } - } - - if (html.children.length === 0) { - return null; - } - - return html; -} - -function addHTML(node, html, bbox) { - const extra = node[_xfa_object.$extra]; - const availableSpace = extra.availableSpace; - const [x, y, w, h] = bbox; - - switch (node.layout) { - case "position": - { - extra.width = Math.max(extra.width, x + w); - extra.height = Math.max(extra.height, y + h); - extra.children.push(html); - break; - } - - case "lr-tb": - case "rl-tb": - if (!extra.line || extra.attempt === 1) { - extra.line = createLine(node, []); - extra.children.push(extra.line); - extra.numberInLine = 0; - } - - extra.numberInLine += 1; - extra.line.children.push(html); - - if (extra.attempt === 0) { - extra.currentWidth += w; - extra.height = Math.max(extra.height, extra.prevHeight + h); - } else { - extra.currentWidth = w; - extra.prevHeight = extra.height; - extra.height += h; - extra.attempt = 0; - } - - extra.width = Math.max(extra.width, extra.currentWidth); - break; - - case "rl-row": - case "row": - { - extra.children.push(html); - extra.width += w; - extra.height = Math.max(extra.height, h); - const height = (0, _html_utils.measureToString)(extra.height); - - for (const child of extra.children) { - child.attributes.style.height = height; - } - - break; - } - - case "table": - { - extra.width = Math.min(availableSpace.width, Math.max(extra.width, w)); - extra.height += h; - extra.children.push(html); - break; - } - - case "tb": - { - extra.width = Math.min(availableSpace.width, Math.max(extra.width, w)); - extra.height += h; - extra.children.push(html); - break; - } - } -} - -function getAvailableSpace(node) { - const availableSpace = node[_xfa_object.$extra].availableSpace; - const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0; - const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0; - - switch (node.layout) { - case "lr-tb": - case "rl-tb": - if (node[_xfa_object.$extra].attempt === 0) { - return { - width: availableSpace.width - marginH - node[_xfa_object.$extra].currentWidth, - height: availableSpace.height - marginV - node[_xfa_object.$extra].prevHeight - }; - } - - return { - width: availableSpace.width - marginH, - height: availableSpace.height - marginV - node[_xfa_object.$extra].height - }; - - case "rl-row": - case "row": - const width = node[_xfa_object.$extra].columnWidths.slice(node[_xfa_object.$extra].currentColumn).reduce((a, x) => a + x); - - return { - width, - height: availableSpace.height - marginH - }; - - case "table": - case "tb": - return { - width: availableSpace.width - marginH, - height: availableSpace.height - marginV - node[_xfa_object.$extra].height - }; - - case "position": - default: - return availableSpace; - } -} - -function getTransformedBBox(node) { - let w = node.w === "" ? NaN : node.w; - let h = node.h === "" ? NaN : node.h; - let [centerX, centerY] = [0, 0]; - - switch (node.anchorType || "") { - case "bottomCenter": - [centerX, centerY] = [w / 2, h]; - break; - - case "bottomLeft": - [centerX, centerY] = [0, h]; - break; - - case "bottomRight": - [centerX, centerY] = [w, h]; - break; - - case "middleCenter": - [centerX, centerY] = [w / 2, h / 2]; - break; - - case "middleLeft": - [centerX, centerY] = [0, h / 2]; - break; - - case "middleRight": - [centerX, centerY] = [w, h / 2]; - break; - - case "topCenter": - [centerX, centerY] = [w / 2, 0]; - break; - - case "topRight": - [centerX, centerY] = [w, 0]; - break; - } - - let x, y; - - switch (node.rotate || 0) { - case 0: - [x, y] = [-centerX, -centerY]; - break; - - case 90: - [x, y] = [-centerY, centerX]; - [w, h] = [h, -w]; - break; - - case 180: - [x, y] = [centerX, centerY]; - [w, h] = [-w, -h]; - break; - - case 270: - [x, y] = [centerY, -centerX]; - [w, h] = [-h, w]; - break; - } - - return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)]; -} - -function checkDimensions(node, space) { - if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].firstUnsplittable === null) { - return true; - } - - if (node.w === 0 || node.h === 0) { - return true; - } - - const ERROR = 2; - - const parent = node[_xfa_object.$getSubformParent](); - - const attempt = parent[_xfa_object.$extra] && parent[_xfa_object.$extra].attempt || 0; - const [, y, w, h] = getTransformedBBox(node); - - switch (parent.layout) { - case "lr-tb": - case "rl-tb": - if (attempt === 0) { - if (!node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { - if (node.h !== "" && Math.round(h - space.height) > ERROR) { - return false; - } - - if (node.w !== "") { - if (Math.round(w - space.width) <= ERROR) { - return true; - } - - if (parent[_xfa_object.$extra].numberInLine === 0) { - return space.height > ERROR; - } - - return false; - } - - return space.width > ERROR; - } - - if (node.w !== "") { - return Math.round(w - space.width) <= ERROR; - } - - return space.width > ERROR; - } - - if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { - return true; - } - - if (node.h !== "" && Math.round(h - space.height) > ERROR) { - return false; - } - - if (node.w === "" || Math.round(w - space.width) <= ERROR) { - return space.height > ERROR; - } - - if (parent[_xfa_object.$isThereMoreWidth]()) { - return false; - } - - return space.height > ERROR; - - case "table": - case "tb": - if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { - return true; - } - - if (node.h !== "" && !node[_xfa_object.$isSplittable]()) { - return Math.round(h - space.height) <= ERROR; - } - - if (node.w === "" || Math.round(w - space.width) <= ERROR) { - return space.height > ERROR; - } - - if (parent[_xfa_object.$isThereMoreWidth]()) { - return false; - } - - return space.height > ERROR; - - case "position": - if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { - return true; - } - - if (node.h === "" || Math.round(h + y - space.height) <= ERROR) { - return true; - } - - const area = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].currentContentArea; - - return h + y > area.h; - - case "rl-row": - case "row": - if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) { - return true; - } - - if (node.h !== "") { - return Math.round(h - space.height) <= ERROR; - } - - return true; - - default: - return true; - } -} - -/***/ }), -/* 84 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.computeBbox = computeBbox; -exports.createWrapper = createWrapper; -exports.fixDimensions = fixDimensions; -exports.fixTextIndent = fixTextIndent; -exports.fixURL = fixURL; -exports.isPrintOnly = isPrintOnly; -exports.layoutClass = layoutClass; -exports.layoutNode = layoutNode; -exports.measureToString = measureToString; -exports.setAccess = setAccess; -exports.setFontFamily = setFontFamily; -exports.setMinMaxDimensions = setMinMaxDimensions; -exports.setPara = setPara; -exports.toStyle = toStyle; - -var _xfa_object = __w_pdfjs_require__(77); - -var _util = __w_pdfjs_require__(2); - -var _utils = __w_pdfjs_require__(78); - -var _fonts = __w_pdfjs_require__(85); - -var _text = __w_pdfjs_require__(86); - -function measureToString(m) { - if (typeof m === "string") { - return "0px"; - } - - return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`; -} - -const converters = { - anchorType(node, style) { - const parent = node[_xfa_object.$getSubformParent](); - - if (!parent || parent.layout && parent.layout !== "position") { - return; - } - - if (!("transform" in style)) { - style.transform = ""; - } - - switch (node.anchorType) { - case "bottomCenter": - style.transform += "translate(-50%, -100%)"; - break; - - case "bottomLeft": - style.transform += "translate(0,-100%)"; - break; - - case "bottomRight": - style.transform += "translate(-100%,-100%)"; - break; - - case "middleCenter": - style.transform += "translate(-50%,-50%)"; - break; - - case "middleLeft": - style.transform += "translate(0,-50%)"; - break; - - case "middleRight": - style.transform += "translate(-100%,-50%)"; - break; - - case "topCenter": - style.transform += "translate(-50%,0)"; - break; - - case "topRight": - style.transform += "translate(-100%,0)"; - break; - } - }, - - dimensions(node, style) { - const parent = node[_xfa_object.$getSubformParent](); - - let width = node.w; - const height = node.h; - - if (parent.layout && parent.layout.includes("row")) { - const extra = parent[_xfa_object.$extra]; - const colSpan = node.colSpan; - let w; - - if (colSpan === -1) { - w = extra.columnWidths.slice(extra.currentColumn).reduce((a, x) => a + x, 0); - extra.currentColumn = 0; - } else { - w = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, x) => a + x, 0); - extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length; - } - - if (!isNaN(w)) { - width = node.w = w; - } - } - - if (width !== "") { - style.width = measureToString(width); - } else { - style.width = "auto"; - } - - if (height !== "") { - style.height = measureToString(height); - } else { - style.height = "auto"; - } - }, - - position(node, style) { - const parent = node[_xfa_object.$getSubformParent](); - - if (parent && parent.layout && parent.layout !== "position") { - return; - } - - style.position = "absolute"; - style.left = measureToString(node.x); - style.top = measureToString(node.y); - }, - - rotate(node, style) { - if (node.rotate) { - if (!("transform" in style)) { - style.transform = ""; - } - - style.transform += `rotate(-${node.rotate}deg)`; - style.transformOrigin = "top left"; - } - }, - - presence(node, style) { - switch (node.presence) { - case "invisible": - style.visibility = "hidden"; - break; - - case "hidden": - case "inactive": - style.display = "none"; - break; - } - }, - - hAlign(node, style) { - if (node[_xfa_object.$nodeName] === "para") { - switch (node.hAlign) { - case "justifyAll": - style.textAlign = "justify-all"; - break; - - case "radix": - style.textAlign = "left"; - break; - - default: - style.textAlign = node.hAlign; - } - } else { - switch (node.hAlign) { - case "left": - style.alignSelf = "start"; - break; - - case "center": - style.alignSelf = "center"; - break; - - case "right": - style.alignSelf = "end"; - break; - } - } - }, - - margin(node, style) { - if (node.margin) { - style.margin = node.margin[_xfa_object.$toStyle]().margin; - } - } - -}; - -function setMinMaxDimensions(node, style) { - const parent = node[_xfa_object.$getSubformParent](); - - if (parent.layout === "position") { - if (node.minW > 0) { - style.minWidth = measureToString(node.minW); - } - - if (node.maxW > 0) { - style.maxWidth = measureToString(node.maxW); - } - - if (node.minH > 0) { - style.minHeight = measureToString(node.minH); - } - - if (node.maxH > 0) { - style.maxHeight = measureToString(node.maxH); - } - } -} - -function layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) { - const measure = new _text.TextMeasure(xfaFont, margin, lineHeight, fontFinder); - - if (typeof text === "string") { - measure.addString(text); - } else { - text[_xfa_object.$pushGlyphs](measure); - } - - return measure.compute(width); -} - -function layoutNode(node, availableSpace) { - let height = null; - let width = null; - let isBroken = false; - - if ((!node.w || !node.h) && node.value) { - let marginH = 0; - let marginV = 0; - - if (node.margin) { - marginH = node.margin.leftInset + node.margin.rightInset; - marginV = node.margin.topInset + node.margin.bottomInset; - } - - let lineHeight = null; - let margin = null; - - if (node.para) { - margin = Object.create(null); - lineHeight = node.para.lineHeight === "" ? null : node.para.lineHeight; - margin.top = node.para.spaceAbove === "" ? 0 : node.para.spaceAbove; - margin.bottom = node.para.spaceBelow === "" ? 0 : node.para.spaceBelow; - margin.left = node.para.marginLeft === "" ? 0 : node.para.marginLeft; - margin.right = node.para.marginRight === "" ? 0 : node.para.marginRight; - } - - let font = node.font; - - if (!font) { - const root = node[_xfa_object.$getTemplateRoot](); - - let parent = node[_xfa_object.$getParent](); - - while (parent && parent !== root) { - if (parent.font) { - font = parent.font; - break; - } - - parent = parent[_xfa_object.$getParent](); - } - } - - const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH; - const fontFinder = node[_xfa_object.$globalData].fontFinder; - - if (node.value.exData && node.value.exData[_xfa_object.$content] && node.value.exData.contentType === "text/html") { - const res = layoutText(node.value.exData[_xfa_object.$content], font, margin, lineHeight, fontFinder, maxWidth); - width = res.width; - height = res.height; - isBroken = res.isBroken; - } else { - const text = node.value[_xfa_object.$text](); - - if (text) { - const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth); - width = res.width; - height = res.height; - isBroken = res.isBroken; - } - } - - if (width !== null && !node.w) { - width += marginH; - } - - if (height !== null && !node.h) { - height += marginV; - } - } - - return { - w: width, - h: height, - isBroken - }; -} - -function computeBbox(node, html, availableSpace) { - let bbox; - - if (node.w !== "" && node.h !== "") { - bbox = [node.x, node.y, node.w, node.h]; - } else { - if (!availableSpace) { - return null; - } - - let width = node.w; - - if (width === "") { - if (node.maxW === 0) { - const parent = node[_xfa_object.$getSubformParent](); - - if (parent.layout === "position" && parent.w !== "") { - width = 0; - } else { - width = node.minW; - } - } else { - width = Math.min(node.maxW, availableSpace.width); - } - - html.attributes.style.width = measureToString(width); - } - - let height = node.h; - - if (height === "") { - if (node.maxH === 0) { - const parent = node[_xfa_object.$getSubformParent](); - - if (parent.layout === "position" && parent.h !== "") { - height = 0; - } else { - height = node.minH; - } - } else { - height = Math.min(node.maxH, availableSpace.height); - } - - html.attributes.style.height = measureToString(height); - } - - bbox = [node.x, node.y, width, height]; - } - - return bbox; -} - -function fixDimensions(node) { - const parent = node[_xfa_object.$getSubformParent](); - - if (parent.layout && parent.layout.includes("row")) { - const extra = parent[_xfa_object.$extra]; - const colSpan = node.colSpan; - let width; - - if (colSpan === -1) { - width = extra.columnWidths.slice(extra.currentColumn).reduce((a, w) => a + w, 0); - } else { - width = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, w) => a + w, 0); - } - - if (!isNaN(width)) { - node.w = width; - } - } - - if (parent.layout && parent.layout !== "position") { - node.x = node.y = 0; - } - - if (node.layout === "table") { - if (node.w === "" && Array.isArray(node.columnWidths)) { - node.w = node.columnWidths.reduce((a, x) => a + x, 0); - } - } -} - -function layoutClass(node) { - switch (node.layout) { - case "position": - return "xfaPosition"; - - case "lr-tb": - return "xfaLrTb"; - - case "rl-row": - return "xfaRlRow"; - - case "rl-tb": - return "xfaRlTb"; - - case "row": - return "xfaRow"; - - case "table": - return "xfaTable"; - - case "tb": - return "xfaTb"; - - default: - return "xfaPosition"; - } -} - -function toStyle(node, ...names) { - const style = Object.create(null); - - for (const name of names) { - const value = node[name]; - - if (value === null) { - continue; - } - - if (converters.hasOwnProperty(name)) { - converters[name](node, style); - continue; - } - - if (value instanceof _xfa_object.XFAObject) { - const newStyle = value[_xfa_object.$toStyle](); - - if (newStyle) { - Object.assign(style, newStyle); - } else { - (0, _util.warn)(`(DEBUG) - XFA - style for ${name} not implemented yet`); - } - } - } - - return style; -} - -function createWrapper(node, html) { - const { - attributes - } = html; - const { - style - } = attributes; - const wrapper = { - name: "div", - attributes: { - class: ["xfaWrapper"], - style: Object.create(null) - }, - children: [] - }; - attributes.class.push("xfaWrapped"); - - if (node.border) { - const { - widths, - insets - } = node.border[_xfa_object.$extra]; - let width, height; - let top = insets[0]; - let left = insets[3]; - const insetsH = insets[0] + insets[2]; - const insetsW = insets[1] + insets[3]; - - switch (node.border.hand) { - case "even": - top -= widths[0] / 2; - left -= widths[3] / 2; - width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`; - height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`; - break; - - case "left": - top -= widths[0]; - left -= widths[3]; - width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`; - height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`; - break; - - case "right": - width = insetsW ? `calc(100% - ${insetsW}px)` : "100%"; - height = insetsH ? `calc(100% - ${insetsH}px)` : "100%"; - break; - } - - const classNames = ["xfaBorder"]; - - if (isPrintOnly(node.border)) { - classNames.push("xfaPrintOnly"); - } - - const border = { - name: "div", - attributes: { - class: classNames, - style: { - top: `${top}px`, - left: `${left}px`, - width, - height - } - }, - children: [] - }; - - for (const key of ["border", "borderWidth", "borderColor", "borderRadius", "borderStyle"]) { - if (style[key] !== undefined) { - border.attributes.style[key] = style[key]; - delete style[key]; - } - } - - wrapper.children.push(border, html); - } else { - wrapper.children.push(html); - } - - for (const key of ["background", "backgroundClip", "top", "left", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "transform", "transformOrigin", "visibility"]) { - if (style[key] !== undefined) { - wrapper.attributes.style[key] = style[key]; - delete style[key]; - } - } - - if (style.position === "absolute") { - wrapper.attributes.style.position = "absolute"; - } else { - wrapper.attributes.style.position = "relative"; - } - - delete style.position; - - if (style.alignSelf) { - wrapper.attributes.style.alignSelf = style.alignSelf; - delete style.alignSelf; - } - - return wrapper; -} - -function fixTextIndent(styles) { - const indent = (0, _utils.getMeasurement)(styles.textIndent, "0px"); - - if (indent >= 0) { - return; - } - - const align = styles.textAlign === "right" ? "right" : "left"; - const name = "padding" + (align === "left" ? "Left" : "Right"); - const padding = (0, _utils.getMeasurement)(styles[name], "0px"); - styles[name] = `${padding - indent}px`; -} - -function setAccess(node, classNames) { - switch (node.access) { - case "nonInteractive": - classNames.push("xfaNonInteractive"); - break; - - case "readOnly": - classNames.push("xfaReadOnly"); - break; - - case "protected": - classNames.push("xfaDisabled"); - break; - } -} - -function isPrintOnly(node) { - return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === "print"; -} - -function getCurrentPara(node) { - const stack = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].paraStack; - - return stack.length ? stack[stack.length - 1] : null; -} - -function setPara(node, nodeStyle, value) { - if (value.attributes.class && value.attributes.class.includes("xfaRich")) { - if (nodeStyle) { - if (node.h === "") { - nodeStyle.height = "auto"; - } - - if (node.w === "") { - nodeStyle.width = "auto"; - } - } - - const para = getCurrentPara(node); - - if (para) { - const valueStyle = value.attributes.style; - valueStyle.display = "flex"; - valueStyle.flexDirection = "column"; - - switch (para.vAlign) { - case "top": - valueStyle.justifyContent = "start"; - break; - - case "bottom": - valueStyle.justifyContent = "end"; - break; - - case "middle": - valueStyle.justifyContent = "center"; - break; - } - - const paraStyle = para[_xfa_object.$toStyle](); - - for (const [key, val] of Object.entries(paraStyle)) { - if (!(key in valueStyle)) { - valueStyle[key] = val; - } - } - } - } -} - -function setFontFamily(xfaFont, node, fontFinder, style) { - if (!fontFinder) { - delete style.fontFamily; - return; - } - - const name = (0, _utils.stripQuotes)(xfaFont.typeface); - style.fontFamily = `"${name}"`; - const typeface = fontFinder.find(name); - - if (typeface) { - const { - fontFamily - } = typeface.regular.cssFontInfo; - - if (fontFamily !== name) { - style.fontFamily = `"${fontFamily}"`; - } - - const para = getCurrentPara(node); - - if (para && para.lineHeight !== "") { - return; - } - - if (style.lineHeight) { - return; - } - - const pdfFont = (0, _fonts.selectFont)(xfaFont, typeface); - - if (pdfFont) { - style.lineHeight = Math.max(1.2, pdfFont.lineHeight); - } - } -} - -function fixURL(str) { - const absoluteUrl = (0, _util.createValidAbsoluteUrl)(str, null, { - addDefaultProtocol: true, - tryConvertEncoding: true - }); - return absoluteUrl ? absoluteUrl.href : null; -} - -/***/ }), -/* 85 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.FontFinder = void 0; -exports.getMetrics = getMetrics; -exports.selectFont = selectFont; - -var _xfa_object = __w_pdfjs_require__(77); - -var _utils = __w_pdfjs_require__(78); - -var _util = __w_pdfjs_require__(2); - -class FontFinder { - constructor(pdfFonts) { - this.fonts = new Map(); - this.cache = new Map(); - this.warned = new Set(); - this.defaultFont = null; - this.add(pdfFonts); - } - - add(pdfFonts, reallyMissingFonts = null) { - for (const pdfFont of pdfFonts) { - this.addPdfFont(pdfFont); - } - - for (const pdfFont of this.fonts.values()) { - if (!pdfFont.regular) { - pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic; - } - } - - if (!reallyMissingFonts || reallyMissingFonts.size === 0) { - return; - } - - const myriad = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); - - for (const missing of reallyMissingFonts) { - this.fonts.set(missing, myriad); - } - } - - addPdfFont(pdfFont) { - const cssFontInfo = pdfFont.cssFontInfo; - const name = cssFontInfo.fontFamily; - let font = this.fonts.get(name); - - if (!font) { - font = Object.create(null); - this.fonts.set(name, font); - - if (!this.defaultFont) { - this.defaultFont = font; - } - } - - let property = ""; - const fontWeight = parseFloat(cssFontInfo.fontWeight); - - if (parseFloat(cssFontInfo.italicAngle) !== 0) { - property = fontWeight >= 700 ? "bolditalic" : "italic"; - } else if (fontWeight >= 700) { - property = "bold"; - } - - if (!property) { - if (pdfFont.name.includes("Bold") || pdfFont.psName && pdfFont.psName.includes("Bold")) { - property = "bold"; - } - - if (pdfFont.name.includes("Italic") || pdfFont.name.endsWith("It") || pdfFont.psName && (pdfFont.psName.includes("Italic") || pdfFont.psName.endsWith("It"))) { - property += "italic"; - } - } - - if (!property) { - property = "regular"; - } - - font[property] = pdfFont; - } - - getDefault() { - return this.defaultFont; - } - - find(fontName, mustWarn = true) { - let font = this.fonts.get(fontName) || this.cache.get(fontName); - - if (font) { - return font; - } - - const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi; - let name = fontName.replace(pattern, ""); - font = this.fonts.get(name); - - if (font) { - this.cache.set(fontName, font); - return font; - } - - name = name.toLowerCase(); - const maybe = []; - - for (const [family, pdfFont] of this.fonts.entries()) { - if (family.replace(pattern, "").toLowerCase().startsWith(name)) { - maybe.push(pdfFont); - } - } - - if (maybe.length === 0) { - for (const [, pdfFont] of this.fonts.entries()) { - if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, "").toLowerCase().startsWith(name)) { - maybe.push(pdfFont); - } - } - } - - if (maybe.length === 0) { - name = name.replace(/psmt|mt/gi, ""); - - for (const [family, pdfFont] of this.fonts.entries()) { - if (family.replace(pattern, "").toLowerCase().startsWith(name)) { - maybe.push(pdfFont); - } - } - } - - if (maybe.length === 0) { - for (const pdfFont of this.fonts.values()) { - if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, "").toLowerCase().startsWith(name)) { - maybe.push(pdfFont); - } - } - } - - if (maybe.length >= 1) { - if (maybe.length !== 1 && mustWarn) { - (0, _util.warn)(`XFA - Too many choices to guess the correct font: ${fontName}`); - } - - this.cache.set(fontName, maybe[0]); - return maybe[0]; - } - - if (mustWarn && !this.warned.has(fontName)) { - this.warned.add(fontName); - (0, _util.warn)(`XFA - Cannot find the font: ${fontName}`); - } - - return null; - } - -} - -exports.FontFinder = FontFinder; - -function selectFont(xfaFont, typeface) { - if (xfaFont.posture === "italic") { - if (xfaFont.weight === "bold") { - return typeface.bolditalic; - } - - return typeface.italic; - } else if (xfaFont.weight === "bold") { - return typeface.bold; - } - - return typeface.regular; -} - -function getMetrics(xfaFont, real = false) { - let pdfFont = null; - - if (xfaFont) { - const name = (0, _utils.stripQuotes)(xfaFont.typeface); - - const typeface = xfaFont[_xfa_object.$globalData].fontFinder.find(name); - - pdfFont = selectFont(xfaFont, typeface); - } - - if (!pdfFont) { - return { - lineHeight: 12, - lineGap: 2, - lineNoGap: 10 - }; - } - - const size = xfaFont.size || 10; - const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2; - const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; - return { - lineHeight: lineHeight * size, - lineGap: lineGap * size, - lineNoGap: Math.max(1, lineHeight - lineGap) * size - }; -} - -/***/ }), -/* 86 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TextMeasure = void 0; - -var _fonts = __w_pdfjs_require__(85); - -const WIDTH_FACTOR = 1.02; - -class FontInfo { - constructor(xfaFont, margin, lineHeight, fontFinder) { - this.lineHeight = lineHeight; - this.paraMargin = margin || { - top: 0, - bottom: 0, - left: 0, - right: 0 - }; - - if (!xfaFont) { - [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); - return; - } - - this.xfaFont = { - typeface: xfaFont.typeface, - posture: xfaFont.posture, - weight: xfaFont.weight, - size: xfaFont.size, - letterSpacing: xfaFont.letterSpacing - }; - const typeface = fontFinder.find(xfaFont.typeface); - - if (!typeface) { - [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); - return; - } - - this.pdfFont = (0, _fonts.selectFont)(xfaFont, typeface); - - if (!this.pdfFont) { - [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); - } - } - - defaultFont(fontFinder) { - const font = fontFinder.find("Helvetica", false) || fontFinder.find("Myriad Pro", false) || fontFinder.find("Arial", false) || fontFinder.getDefault(); - - if (font && font.regular) { - const pdfFont = font.regular; - const info = pdfFont.cssFontInfo; - const xfaFont = { - typeface: info.fontFamily, - posture: "normal", - weight: "normal", - size: 10, - letterSpacing: 0 - }; - return [pdfFont, xfaFont]; - } - - const xfaFont = { - typeface: "Courier", - posture: "normal", - weight: "normal", - size: 10, - letterSpacing: 0 - }; - return [null, xfaFont]; - } - -} - -class FontSelector { - constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) { - this.fontFinder = fontFinder; - this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)]; - } - - pushData(xfaFont, margin, lineHeight) { - const lastFont = this.stack[this.stack.length - 1]; - - for (const name of ["typeface", "posture", "weight", "size", "letterSpacing"]) { - if (!xfaFont[name]) { - xfaFont[name] = lastFont.xfaFont[name]; - } - } - - for (const name of ["top", "bottom", "left", "right"]) { - if (isNaN(margin[name])) { - margin[name] = lastFont.paraMargin[name]; - } - } - - const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder); - - if (!fontInfo.pdfFont) { - fontInfo.pdfFont = lastFont.pdfFont; - } - - this.stack.push(fontInfo); - } - - popFont() { - this.stack.pop(); - } - - topFont() { - return this.stack[this.stack.length - 1]; - } - -} - -class TextMeasure { - constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) { - this.glyphs = []; - this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts); - this.extraHeight = 0; - } - - pushData(xfaFont, margin, lineHeight) { - this.fontSelector.pushData(xfaFont, margin, lineHeight); - } - - popFont(xfaFont) { - return this.fontSelector.popFont(); - } - - addPara() { - const lastFont = this.fontSelector.topFont(); - this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom; - } - - addString(str) { - if (!str) { - return; - } - - const lastFont = this.fontSelector.topFont(); - const fontSize = lastFont.xfaFont.size; - - if (lastFont.pdfFont) { - const letterSpacing = lastFont.xfaFont.letterSpacing; - const pdfFont = lastFont.pdfFont; - const fontLineHeight = pdfFont.lineHeight || 1.2; - const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize; - const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; - const noGap = fontLineHeight - lineGap; - const firstLineHeight = Math.max(1, noGap) * fontSize; - const scale = fontSize / 1000; - const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(" ")[0].width; - - for (const line of str.split(/[\u2029\n]/)) { - const encodedLine = pdfFont.encodeString(line).join(""); - const glyphs = pdfFont.charsToGlyphs(encodedLine); - - for (const glyph of glyphs) { - const width = glyph.width || fallbackWidth; - this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]); - } - - this.glyphs.push([0, 0, 0, "\n", true]); - } - - this.glyphs.pop(); - return; - } - - for (const line of str.split(/[\u2029\n]/)) { - for (const char of line.split("")) { - this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]); - } - - this.glyphs.push([0, 0, 0, "\n", true]); - } - - this.glyphs.pop(); - } - - compute(maxWidth) { - let lastSpacePos = -1, - lastSpaceWidth = 0, - width = 0, - height = 0, - currentLineWidth = 0, - currentLineHeight = 0; - let isBroken = false; - let isFirstLine = true; - - for (let i = 0, ii = this.glyphs.length; i < ii; i++) { - const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i]; - const isSpace = char === " "; - const glyphHeight = isFirstLine ? firstLineHeight : lineHeight; - - if (isEOL) { - width = Math.max(width, currentLineWidth); - currentLineWidth = 0; - height += currentLineHeight; - currentLineHeight = glyphHeight; - lastSpacePos = -1; - lastSpaceWidth = 0; - isFirstLine = false; - continue; - } - - if (isSpace) { - if (currentLineWidth + glyphWidth > maxWidth) { - width = Math.max(width, currentLineWidth); - currentLineWidth = 0; - height += currentLineHeight; - currentLineHeight = glyphHeight; - lastSpacePos = -1; - lastSpaceWidth = 0; - isBroken = true; - isFirstLine = false; - } else { - currentLineHeight = Math.max(glyphHeight, currentLineHeight); - lastSpaceWidth = currentLineWidth; - currentLineWidth += glyphWidth; - lastSpacePos = i; - } - - continue; - } - - if (currentLineWidth + glyphWidth > maxWidth) { - height += currentLineHeight; - currentLineHeight = glyphHeight; - - if (lastSpacePos !== -1) { - i = lastSpacePos; - width = Math.max(width, lastSpaceWidth); - currentLineWidth = 0; - lastSpacePos = -1; - lastSpaceWidth = 0; - } else { - width = Math.max(width, currentLineWidth); - currentLineWidth = glyphWidth; - } - - isBroken = true; - isFirstLine = false; - continue; - } - - currentLineWidth += glyphWidth; - currentLineHeight = Math.max(glyphHeight, currentLineHeight); - } - - width = Math.max(width, currentLineWidth); - height += currentLineHeight + this.extraHeight; - return { - width: WIDTH_FACTOR * width, - height, - isBroken - }; - } - -} - -exports.TextMeasure = TextMeasure; - -/***/ }), -/* 87 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DataHandler = void 0; - -var _xfa_object = __w_pdfjs_require__(77); - -class DataHandler { - constructor(root, data) { - this.data = data; - this.dataset = root.datasets || null; - } - - serialize(storage) { - const stack = [[-1, this.data[_xfa_object.$getChildren]()]]; - - while (stack.length > 0) { - const last = stack[stack.length - 1]; - const [i, children] = last; - - if (i + 1 === children.length) { - stack.pop(); - continue; - } - - const child = children[++last[0]]; - const storageEntry = storage.get(child[_xfa_object.$uid]); - - if (storageEntry) { - child[_xfa_object.$setValue](storageEntry); - } else { - const attributes = child[_xfa_object.$getAttributes](); - - for (const value of attributes.values()) { - const entry = storage.get(value[_xfa_object.$uid]); - - if (entry) { - value[_xfa_object.$setValue](entry); - - break; - } - } - } - - const nodes = child[_xfa_object.$getChildren](); - - if (nodes.length > 0) { - stack.push([-1, nodes]); - } - } - - const buf = [``]; - - if (this.dataset) { - for (const child of this.dataset[_xfa_object.$getChildren]()) { - if (child[_xfa_object.$nodeName] !== "data") { - child[_xfa_object.$toString](buf); - } - } - } - - this.data[_xfa_object.$toString](buf); - - buf.push(""); - return buf.join(""); - } - -} - -exports.DataHandler = DataHandler; - -/***/ }), -/* 88 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XFAParser = void 0; - -var _xfa_object = __w_pdfjs_require__(77); - -var _xml_parser = __w_pdfjs_require__(70); - -var _builder = __w_pdfjs_require__(89); - -var _util = __w_pdfjs_require__(2); - -class XFAParser extends _xml_parser.XMLParserBase { - constructor(rootNameSpace = null, richText = false) { - super(); - this._builder = new _builder.Builder(rootNameSpace); - this._stack = []; - this._globalData = { - usedTypefaces: new Set() - }; - this._ids = new Map(); - this._current = this._builder.buildRoot(this._ids); - this._errorCode = _xml_parser.XMLParserErrorCode.NoError; - this._whiteRegex = /^\s+$/; - this._nbsps = /\xa0+/g; - this._richText = richText; - } - - parse(data) { - this.parseXml(data); - - if (this._errorCode !== _xml_parser.XMLParserErrorCode.NoError) { - return undefined; - } - - this._current[_xfa_object.$finalize](); - - return this._current.element; - } - - onText(text) { - text = text.replace(this._nbsps, match => match.slice(1) + " "); - - if (this._richText || this._current[_xfa_object.$acceptWhitespace]()) { - this._current[_xfa_object.$onText](text, this._richText); - - return; - } - - if (this._whiteRegex.test(text)) { - return; - } - - this._current[_xfa_object.$onText](text.trim()); - } - - onCdata(text) { - this._current[_xfa_object.$onText](text); - } - - _mkAttributes(attributes, tagName) { - let namespace = null; - let prefixes = null; - const attributeObj = Object.create({}); - - for (const { - name, - value - } of attributes) { - if (name === "xmlns") { - if (!namespace) { - namespace = value; - } else { - (0, _util.warn)(`XFA - multiple namespace definition in <${tagName}>`); - } - } else if (name.startsWith("xmlns:")) { - const prefix = name.substring("xmlns:".length); - - if (!prefixes) { - prefixes = []; - } - - prefixes.push({ - prefix, - value - }); - } else { - const i = name.indexOf(":"); - - if (i === -1) { - attributeObj[name] = value; - } else { - let nsAttrs = attributeObj[_xfa_object.$nsAttributes]; - - if (!nsAttrs) { - nsAttrs = attributeObj[_xfa_object.$nsAttributes] = Object.create(null); - } - - const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)]; - let attrs = nsAttrs[ns]; - - if (!attrs) { - attrs = nsAttrs[ns] = Object.create(null); - } - - attrs[attrName] = value; - } - } - } - - return [namespace, prefixes, attributeObj]; - } - - _getNameAndPrefix(name, nsAgnostic) { - const i = name.indexOf(":"); - - if (i === -1) { - return [name, null]; - } - - return [name.substring(i + 1), nsAgnostic ? "" : name.substring(0, i)]; - } - - onBeginElement(tagName, attributes, isEmpty) { - const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName); - - const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic()); - - const node = this._builder.build({ - nsPrefix, - name, - attributes: attributesObj, - namespace, - prefixes - }); - - node[_xfa_object.$globalData] = this._globalData; - - if (isEmpty) { - node[_xfa_object.$finalize](); - - if (this._current[_xfa_object.$onChild](node)) { - node[_xfa_object.$setId](this._ids); - } - - node[_xfa_object.$clean](this._builder); - - return; - } - - this._stack.push(this._current); - - this._current = node; - } - - onEndElement(name) { - const node = this._current; - - if (node[_xfa_object.$isCDATAXml]() && typeof node[_xfa_object.$content] === "string") { - const parser = new XFAParser(); - parser._globalData = this._globalData; - const root = parser.parse(node[_xfa_object.$content]); - node[_xfa_object.$content] = null; - - node[_xfa_object.$onChild](root); - } - - node[_xfa_object.$finalize](); - - this._current = this._stack.pop(); - - if (this._current[_xfa_object.$onChild](node)) { - node[_xfa_object.$setId](this._ids); - } - - node[_xfa_object.$clean](this._builder); - } - - onError(code) { - this._errorCode = code; - } - -} - -exports.XFAParser = XFAParser; - -/***/ }), -/* 89 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Builder = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -var _setup = __w_pdfjs_require__(90); - -var _template = __w_pdfjs_require__(82); - -var _unknown = __w_pdfjs_require__(99); - -var _util = __w_pdfjs_require__(2); - -class Root extends _xfa_object.XFAObject { - constructor(ids) { - super(-1, "root", Object.create(null)); - this.element = null; - this[_xfa_object.$ids] = ids; - } - - [_xfa_object.$onChild](child) { - this.element = child; - return true; - } - - [_xfa_object.$finalize]() { - super[_xfa_object.$finalize](); - - if (this.element.template instanceof _template.Template) { - this[_xfa_object.$ids].set(_xfa_object.$root, this.element); - - this.element.template[_xfa_object.$resolvePrototypes](this[_xfa_object.$ids]); - - this.element.template[_xfa_object.$ids] = this[_xfa_object.$ids]; - } - } - -} - -class Empty extends _xfa_object.XFAObject { - constructor() { - super(-1, "", Object.create(null)); - } - - [_xfa_object.$onChild](_) { - return false; - } - -} - -class Builder { - constructor(rootNameSpace = null) { - this._namespaceStack = []; - this._nsAgnosticLevel = 0; - this._namespacePrefixes = new Map(); - this._namespaces = new Map(); - this._nextNsId = Math.max(...Object.values(_namespaces.NamespaceIds).map(({ - id - }) => id)); - this._currentNamespace = rootNameSpace || new _unknown.UnknownNamespace(++this._nextNsId); - } - - buildRoot(ids) { - return new Root(ids); - } - - build({ - nsPrefix, - name, - attributes, - namespace, - prefixes - }) { - const hasNamespaceDef = namespace !== null; - - if (hasNamespaceDef) { - this._namespaceStack.push(this._currentNamespace); - - this._currentNamespace = this._searchNamespace(namespace); - } - - if (prefixes) { - this._addNamespacePrefix(prefixes); - } - - if (attributes.hasOwnProperty(_xfa_object.$nsAttributes)) { - const dataTemplate = _setup.NamespaceSetUp.datasets; - const nsAttrs = attributes[_xfa_object.$nsAttributes]; - let xfaAttrs = null; - - for (const [ns, attrs] of Object.entries(nsAttrs)) { - const nsToUse = this._getNamespaceToUse(ns); - - if (nsToUse === dataTemplate) { - xfaAttrs = { - xfa: attrs - }; - break; - } - } - - if (xfaAttrs) { - attributes[_xfa_object.$nsAttributes] = xfaAttrs; - } else { - delete attributes[_xfa_object.$nsAttributes]; - } - } - - const namespaceToUse = this._getNamespaceToUse(nsPrefix); - - const node = namespaceToUse && namespaceToUse[_namespaces.$buildXFAObject](name, attributes) || new Empty(); - - if (node[_xfa_object.$isNsAgnostic]()) { - this._nsAgnosticLevel++; - } - - if (hasNamespaceDef || prefixes || node[_xfa_object.$isNsAgnostic]()) { - node[_xfa_object.$cleanup] = { - hasNamespace: hasNamespaceDef, - prefixes, - nsAgnostic: node[_xfa_object.$isNsAgnostic]() - }; - } - - return node; - } - - isNsAgnostic() { - return this._nsAgnosticLevel > 0; - } - - _searchNamespace(nsName) { - let ns = this._namespaces.get(nsName); - - if (ns) { - return ns; - } - - for (const [name, { - check - }] of Object.entries(_namespaces.NamespaceIds)) { - if (check(nsName)) { - ns = _setup.NamespaceSetUp[name]; - - if (ns) { - this._namespaces.set(nsName, ns); - - return ns; - } - - break; - } - } - - ns = new _unknown.UnknownNamespace(++this._nextNsId); - - this._namespaces.set(nsName, ns); - - return ns; - } - - _addNamespacePrefix(prefixes) { - for (const { - prefix, - value - } of prefixes) { - const namespace = this._searchNamespace(value); - - let prefixStack = this._namespacePrefixes.get(prefix); - - if (!prefixStack) { - prefixStack = []; - - this._namespacePrefixes.set(prefix, prefixStack); - } - - prefixStack.push(namespace); - } - } - - _getNamespaceToUse(prefix) { - if (!prefix) { - return this._currentNamespace; - } - - const prefixStack = this._namespacePrefixes.get(prefix); - - if (prefixStack && prefixStack.length > 0) { - return prefixStack[prefixStack.length - 1]; - } - - (0, _util.warn)(`Unknown namespace prefix: ${prefix}.`); - return null; - } - - clean(data) { - const { - hasNamespace, - prefixes, - nsAgnostic - } = data; - - if (hasNamespace) { - this._currentNamespace = this._namespaceStack.pop(); - } - - if (prefixes) { - prefixes.forEach(({ - prefix - }) => { - this._namespacePrefixes.get(prefix).pop(); - }); - } - - if (nsAgnostic) { - this._nsAgnosticLevel--; - } - } - -} - -exports.Builder = Builder; - -/***/ }), -/* 90 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NamespaceSetUp = void 0; - -var _config = __w_pdfjs_require__(91); - -var _connection_set = __w_pdfjs_require__(92); - -var _datasets = __w_pdfjs_require__(93); - -var _locale_set = __w_pdfjs_require__(94); - -var _signature = __w_pdfjs_require__(95); - -var _stylesheet = __w_pdfjs_require__(96); - -var _template = __w_pdfjs_require__(82); - -var _xdp = __w_pdfjs_require__(97); - -var _xhtml = __w_pdfjs_require__(98); - -const NamespaceSetUp = { - config: _config.ConfigNamespace, - connection: _connection_set.ConnectionSetNamespace, - datasets: _datasets.DatasetsNamespace, - localeSet: _locale_set.LocaleSetNamespace, - signature: _signature.SignatureNamespace, - stylesheet: _stylesheet.StylesheetNamespace, - template: _template.TemplateNamespace, - xdp: _xdp.XdpNamespace, - xhtml: _xhtml.XhtmlNamespace -}; -exports.NamespaceSetUp = NamespaceSetUp; - -/***/ }), -/* 91 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ConfigNamespace = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -var _utils = __w_pdfjs_require__(78); - -var _util = __w_pdfjs_require__(2); - -const CONFIG_NS_ID = _namespaces.NamespaceIds.config.id; - -class Acrobat extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "acrobat", true); - this.acrobat7 = null; - this.autoSave = null; - this.common = null; - this.validate = null; - this.validateApprovalSignatures = null; - this.submitUrl = new _xfa_object.XFAObjectArray(); - } - -} - -class Acrobat7 extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "acrobat7", true); - this.dynamicRender = null; - } - -} - -class ADBE_JSConsole extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]); - } - -} - -class ADBE_JSDebugger extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]); - } - -} - -class AddSilentPrint extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "addSilentPrint"); - } - -} - -class AddViewerPreferences extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "addViewerPreferences"); - } - -} - -class AdjustData extends _xfa_object.Option10 { - constructor(attributes) { - super(CONFIG_NS_ID, "adjustData"); - } - -} - -class AdobeExtensionLevel extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "adobeExtensionLevel", 0, n => n >= 1 && n <= 8); - } - -} - -class Agent extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "agent", true); - this.name = attributes.name ? attributes.name.trim() : ""; - this.common = new _xfa_object.XFAObjectArray(); - } - -} - -class AlwaysEmbed extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "alwaysEmbed"); - } - -} - -class Amd extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "amd"); - } - -} - -class Area extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "area"); - this.level = (0, _utils.getInteger)({ - data: attributes.level, - defaultValue: 0, - validate: n => n >= 1 && n <= 3 - }); - this.name = (0, _utils.getStringOption)(attributes.name, ["", "barcode", "coreinit", "deviceDriver", "font", "general", "layout", "merge", "script", "signature", "sourceSet", "templateCache"]); - } - -} - -class Attributes extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "attributes", ["preserve", "delegate", "ignore"]); - } - -} - -class AutoSave extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "autoSave", ["disabled", "enabled"]); - } - -} - -class Base extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "base"); - } - -} - -class BatchOutput extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "batchOutput"); - this.format = (0, _utils.getStringOption)(attributes.format, ["none", "concat", "zip", "zipCompress"]); - } - -} - -class BehaviorOverride extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "behaviorOverride"); - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = new Map(this[_xfa_object.$content].trim().split(/\s+/).filter(x => x.includes(":")).map(x => x.split(":", 2))); - } - -} - -class Cache extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "cache", true); - this.templateCache = null; - } - -} - -class Change extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "change"); - } - -} - -class Common extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "common", true); - this.data = null; - this.locale = null; - this.localeSet = null; - this.messaging = null; - this.suppressBanner = null; - this.template = null; - this.validationMessaging = null; - this.versionControl = null; - this.log = new _xfa_object.XFAObjectArray(); - } - -} - -class Compress extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "compress"); - this.scope = (0, _utils.getStringOption)(attributes.scope, ["imageOnly", "document"]); - } - -} - -class CompressLogicalStructure extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "compressLogicalStructure"); - } - -} - -class CompressObjectStream extends _xfa_object.Option10 { - constructor(attributes) { - super(CONFIG_NS_ID, "compressObjectStream"); - } - -} - -class Compression extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "compression", true); - this.compressLogicalStructure = null; - this.compressObjectStream = null; - this.level = null; - this.type = null; - } - -} - -class Config extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "config", true); - this.acrobat = null; - this.present = null; - this.trace = null; - this.agent = new _xfa_object.XFAObjectArray(); - } - -} - -class Conformance extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "conformance", ["A", "B"]); - } - -} - -class ContentCopy extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "contentCopy"); - } - -} - -class Copies extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "copies", 1, n => n >= 1); - } - -} - -class Creator extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "creator"); - } - -} - -class CurrentPage extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "currentPage", 0, n => n >= 0); - } - -} - -class Data extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "data", true); - this.adjustData = null; - this.attributes = null; - this.incrementalLoad = null; - this.outputXSL = null; - this.range = null; - this.record = null; - this.startNode = null; - this.uri = null; - this.window = null; - this.xsl = null; - this.excludeNS = new _xfa_object.XFAObjectArray(); - this.transform = new _xfa_object.XFAObjectArray(); - } - -} - -class Debug extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "debug", true); - this.uri = null; - } - -} - -class DefaultTypeface extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "defaultTypeface"); - this.writingScript = (0, _utils.getStringOption)(attributes.writingScript, ["*", "Arabic", "Cyrillic", "EastEuropeanRoman", "Greek", "Hebrew", "Japanese", "Korean", "Roman", "SimplifiedChinese", "Thai", "TraditionalChinese", "Vietnamese"]); - } - -} - -class Destination extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]); - } - -} - -class DocumentAssembly extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "documentAssembly"); - } - -} - -class Driver extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "driver", true); - this.name = attributes.name ? attributes.name.trim() : ""; - this.fontInfo = null; - this.xdc = null; - } - -} - -class DuplexOption extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "duplexOption", ["simplex", "duplexFlipLongEdge", "duplexFlipShortEdge"]); - } - -} - -class DynamicRender extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "dynamicRender", ["forbidden", "required"]); - } - -} - -class Embed extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "embed"); - } - -} - -class Encrypt extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "encrypt"); - } - -} - -class Encryption extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "encryption", true); - this.encrypt = null; - this.encryptionLevel = null; - this.permissions = null; - } - -} - -class EncryptionLevel extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "encryptionLevel", ["40bit", "128bit"]); - } - -} - -class Enforce extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "enforce"); - } - -} - -class Equate extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "equate"); - this.force = (0, _utils.getInteger)({ - data: attributes.force, - defaultValue: 1, - validate: n => n === 0 - }); - this.from = attributes.from || ""; - this.to = attributes.to || ""; - } - -} - -class EquateRange extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "equateRange"); - this.from = attributes.from || ""; - this.to = attributes.to || ""; - this._unicodeRange = attributes.unicodeRange || ""; - } - - get unicodeRange() { - const ranges = []; - const unicodeRegex = /U\+([0-9a-fA-F]+)/; - const unicodeRange = this._unicodeRange; - - for (let range of unicodeRange.split(",").map(x => x.trim()).filter(x => !!x)) { - range = range.split("-", 2).map(x => { - const found = x.match(unicodeRegex); - - if (!found) { - return 0; - } - - return parseInt(found[1], 16); - }); - - if (range.length === 1) { - range.push(range[0]); - } - - ranges.push(range); - } - - return (0, _util.shadow)(this, "unicodeRange", ranges); - } - -} - -class Exclude extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "exclude"); - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => x && ["calculate", "close", "enter", "exit", "initialize", "ready", "validate"].includes(x)); - } - -} - -class ExcludeNS extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "excludeNS"); - } - -} - -class FlipLabel extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "flipLabel", ["usePrinterSetting", "on", "off"]); - } - -} - -class FontInfo extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "fontInfo", true); - this.embed = null; - this.map = null; - this.subsetBelow = null; - this.alwaysEmbed = new _xfa_object.XFAObjectArray(); - this.defaultTypeface = new _xfa_object.XFAObjectArray(); - this.neverEmbed = new _xfa_object.XFAObjectArray(); - } - -} - -class FormFieldFilling extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "formFieldFilling"); - } - -} - -class GroupParent extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "groupParent"); - } - -} - -class IfEmpty extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]); - } - -} - -class IncludeXDPContent extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "includeXDPContent"); - } - -} - -class IncrementalLoad extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "incrementalLoad", ["none", "forwardOnly"]); - } - -} - -class IncrementalMerge extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "incrementalMerge"); - } - -} - -class Interactive extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "interactive"); - } - -} - -class Jog extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "jog", ["usePrinterSetting", "none", "pageSet"]); - } - -} - -class LabelPrinter extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "labelPrinter", true); - this.name = (0, _utils.getStringOption)(attributes.name, ["zpl", "dpl", "ipl", "tcpl"]); - this.batchOutput = null; - this.flipLabel = null; - this.fontInfo = null; - this.xdc = null; - } - -} - -class Layout extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "layout", ["paginate", "panel"]); - } - -} - -class Level extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "level", 0, n => n > 0); - } - -} - -class Linearized extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "linearized"); - } - -} - -class Locale extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "locale"); - } - -} - -class LocaleSet extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "localeSet"); - } - -} - -class Log extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "log", true); - this.mode = null; - this.threshold = null; - this.to = null; - this.uri = null; - } - -} - -class MapElement extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "map", true); - this.equate = new _xfa_object.XFAObjectArray(); - this.equateRange = new _xfa_object.XFAObjectArray(); - } - -} - -class MediumInfo extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "mediumInfo", true); - this.map = null; - } - -} - -class Message extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "message", true); - this.msgId = null; - this.severity = null; - } - -} - -class Messaging extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "messaging", true); - this.message = new _xfa_object.XFAObjectArray(); - } - -} - -class Mode extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "mode", ["append", "overwrite"]); - } - -} - -class ModifyAnnots extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "modifyAnnots"); - } - -} - -class MsgId extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "msgId", 1, n => n >= 1); - } - -} - -class NameAttr extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "nameAttr"); - } - -} - -class NeverEmbed extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "neverEmbed"); - } - -} - -class NumberOfCopies extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "numberOfCopies", null, n => n >= 2 && n <= 5); - } - -} - -class OpenAction extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "openAction", true); - this.destination = null; - } - -} - -class Output extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "output", true); - this.to = null; - this.type = null; - this.uri = null; - } - -} - -class OutputBin extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "outputBin"); - } - -} - -class OutputXSL extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "outputXSL", true); - this.uri = null; - } - -} - -class Overprint extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "overprint", ["none", "both", "draw", "field"]); - } - -} - -class Packets extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "packets"); - } - - [_xfa_object.$finalize]() { - if (this[_xfa_object.$content] === "*") { - return; - } - - this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => ["config", "datasets", "template", "xfdf", "xslt"].includes(x)); - } - -} - -class PageOffset extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "pageOffset"); - this.x = (0, _utils.getInteger)({ - data: attributes.x, - defaultValue: "useXDCSetting", - validate: n => true - }); - this.y = (0, _utils.getInteger)({ - data: attributes.y, - defaultValue: "useXDCSetting", - validate: n => true - }); - } - -} - -class PageRange extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "pageRange"); - } - - [_xfa_object.$finalize]() { - const numbers = this[_xfa_object.$content].trim().split(/\s+/).map(x => parseInt(x, 10)); - - const ranges = []; - - for (let i = 0, ii = numbers.length; i < ii; i += 2) { - ranges.push(numbers.slice(i, i + 2)); - } - - this[_xfa_object.$content] = ranges; - } - -} - -class Pagination extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]); - } - -} - -class PaginationOverride extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "paginationOverride", ["none", "forceDuplex", "forceDuplexLongEdge", "forceDuplexShortEdge", "forceSimplex"]); - } - -} - -class Part extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "part", 1, n => false); - } - -} - -class Pcl extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "pcl", true); - this.name = attributes.name || ""; - this.batchOutput = null; - this.fontInfo = null; - this.jog = null; - this.mediumInfo = null; - this.outputBin = null; - this.pageOffset = null; - this.staple = null; - this.xdc = null; - } - -} - -class Pdf extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "pdf", true); - this.name = attributes.name || ""; - this.adobeExtensionLevel = null; - this.batchOutput = null; - this.compression = null; - this.creator = null; - this.encryption = null; - this.fontInfo = null; - this.interactive = null; - this.linearized = null; - this.openAction = null; - this.pdfa = null; - this.producer = null; - this.renderPolicy = null; - this.scriptModel = null; - this.silentPrint = null; - this.submitFormat = null; - this.tagged = null; - this.version = null; - this.viewerPreferences = null; - this.xdc = null; - } - -} - -class Pdfa extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "pdfa", true); - this.amd = null; - this.conformance = null; - this.includeXDPContent = null; - this.part = null; - } - -} - -class Permissions extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "permissions", true); - this.accessibleContent = null; - this.change = null; - this.contentCopy = null; - this.documentAssembly = null; - this.formFieldFilling = null; - this.modifyAnnots = null; - this.plaintextMetadata = null; - this.print = null; - this.printHighQuality = null; - } - -} - -class PickTrayByPDFSize extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "pickTrayByPDFSize"); - } - -} - -class Picture extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "picture"); - } - -} - -class PlaintextMetadata extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "plaintextMetadata"); - } - -} - -class Presence extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "presence", ["preserve", "dissolve", "dissolveStructure", "ignore", "remove"]); - } - -} - -class Present extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "present", true); - this.behaviorOverride = null; - this.cache = null; - this.common = null; - this.copies = null; - this.destination = null; - this.incrementalMerge = null; - this.layout = null; - this.output = null; - this.overprint = null; - this.pagination = null; - this.paginationOverride = null; - this.script = null; - this.validate = null; - this.xdp = null; - this.driver = new _xfa_object.XFAObjectArray(); - this.labelPrinter = new _xfa_object.XFAObjectArray(); - this.pcl = new _xfa_object.XFAObjectArray(); - this.pdf = new _xfa_object.XFAObjectArray(); - this.ps = new _xfa_object.XFAObjectArray(); - this.submitUrl = new _xfa_object.XFAObjectArray(); - this.webClient = new _xfa_object.XFAObjectArray(); - this.zpl = new _xfa_object.XFAObjectArray(); - } - -} - -class Print extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "print"); - } - -} - -class PrintHighQuality extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "printHighQuality"); - } - -} - -class PrintScaling extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "printScaling", ["appdefault", "noScaling"]); - } - -} - -class PrinterName extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "printerName"); - } - -} - -class Producer extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "producer"); - } - -} - -class Ps extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "ps", true); - this.name = attributes.name || ""; - this.batchOutput = null; - this.fontInfo = null; - this.jog = null; - this.mediumInfo = null; - this.outputBin = null; - this.staple = null; - this.xdc = null; - } - -} - -class Range extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "range"); - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s*,\s*/, 2).map(range => range.split("-").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => { - if (range.length === 1) { - range.push(range[0]); - } - - return range; - }); - } - -} - -class Record extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "record"); - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = this[_xfa_object.$content].trim(); - const n = parseInt(this[_xfa_object.$content], 10); - - if (!isNaN(n) && n >= 0) { - this[_xfa_object.$content] = n; - } - } - -} - -class Relevant extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "relevant"); - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/); - } - -} - -class Rename extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "rename"); - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = this[_xfa_object.$content].trim(); - - if (this[_xfa_object.$content].toLowerCase().startsWith("xml") || this[_xfa_object.$content].match(new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u"))) { - (0, _util.warn)("XFA - Rename: invalid XFA name"); - } - } - -} - -class RenderPolicy extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "renderPolicy", ["server", "client"]); - } - -} - -class RunScripts extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "runScripts", ["both", "client", "none", "server"]); - } - -} - -class Script extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "script", true); - this.currentPage = null; - this.exclude = null; - this.runScripts = null; - } - -} - -class ScriptModel extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "scriptModel", ["XFA", "none"]); - } - -} - -class Severity extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "severity", ["ignore", "error", "information", "trace", "warning"]); - } - -} - -class SilentPrint extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "silentPrint", true); - this.addSilentPrint = null; - this.printerName = null; - } - -} - -class Staple extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "staple"); - this.mode = (0, _utils.getStringOption)(attributes.mode, ["usePrinterSetting", "on", "off"]); - } - -} - -class StartNode extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "startNode"); - } - -} - -class StartPage extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "startPage", 0, n => true); - } - -} - -class SubmitFormat extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]); - } - -} - -class SubmitUrl extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "submitUrl"); - } - -} - -class SubsetBelow extends _xfa_object.IntegerObject { - constructor(attributes) { - super(CONFIG_NS_ID, "subsetBelow", 100, n => n >= 0 && n <= 100); - } - -} - -class SuppressBanner extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "suppressBanner"); - } - -} - -class Tagged extends _xfa_object.Option01 { - constructor(attributes) { - super(CONFIG_NS_ID, "tagged"); - } - -} - -class Template extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "template", true); - this.base = null; - this.relevant = null; - this.startPage = null; - this.uri = null; - this.xsl = null; - } - -} - -class Threshold extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "threshold", ["trace", "error", "information", "warning"]); - } - -} - -class To extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]); - } - -} - -class TemplateCache extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "templateCache"); - this.maxEntries = (0, _utils.getInteger)({ - data: attributes.maxEntries, - defaultValue: 5, - validate: n => n >= 0 - }); - } - -} - -class Trace extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "trace", true); - this.area = new _xfa_object.XFAObjectArray(); - } - -} - -class Transform extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "transform", true); - this.groupParent = null; - this.ifEmpty = null; - this.nameAttr = null; - this.picture = null; - this.presence = null; - this.rename = null; - this.whitespace = null; - } - -} - -class Type extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "type", ["none", "ascii85", "asciiHex", "ccittfax", "flate", "lzw", "runLength", "native", "xdp", "mergedXDP"]); - } - -} - -class Uri extends _xfa_object.StringObject { - constructor(attributes) { - super(CONFIG_NS_ID, "uri"); - } - -} - -class Validate extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]); - } - -} - -class ValidateApprovalSignatures extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "validateApprovalSignatures"); - } - - [_xfa_object.$finalize]() { - this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => ["docReady", "postSign"].includes(x)); - } - -} - -class ValidationMessaging extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "validationMessaging", ["allMessagesIndividually", "allMessagesTogether", "firstMessageOnly", "noMessages"]); - } - -} - -class Version extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]); - } - -} - -class VersionControl extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "VersionControl"); - this.outputBelow = (0, _utils.getStringOption)(attributes.outputBelow, ["warn", "error", "update"]); - this.sourceAbove = (0, _utils.getStringOption)(attributes.sourceAbove, ["warn", "error"]); - this.sourceBelow = (0, _utils.getStringOption)(attributes.sourceBelow, ["update", "maintain"]); - } - -} - -class ViewerPreferences extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "viewerPreferences", true); - this.ADBE_JSConsole = null; - this.ADBE_JSDebugger = null; - this.addViewerPreferences = null; - this.duplexOption = null; - this.enforce = null; - this.numberOfCopies = null; - this.pageRange = null; - this.pickTrayByPDFSize = null; - this.printScaling = null; - } - -} - -class WebClient extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "webClient", true); - this.name = attributes.name ? attributes.name.trim() : ""; - this.fontInfo = null; - this.xdc = null; - } - -} - -class Whitespace extends _xfa_object.OptionObject { - constructor(attributes) { - super(CONFIG_NS_ID, "whitespace", ["preserve", "ltrim", "normalize", "rtrim", "trim"]); - } - -} - -class Window extends _xfa_object.ContentObject { - constructor(attributes) { - super(CONFIG_NS_ID, "window"); - } - - [_xfa_object.$finalize]() { - const pair = this[_xfa_object.$content].trim().split(/\s*,\s*/, 2).map(x => parseInt(x, 10)); - - if (pair.some(x => isNaN(x))) { - this[_xfa_object.$content] = [0, 0]; - return; - } - - if (pair.length === 1) { - pair.push(pair[0]); - } - - this[_xfa_object.$content] = pair; - } - -} - -class Xdc extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "xdc", true); - this.uri = new _xfa_object.XFAObjectArray(); - this.xsl = new _xfa_object.XFAObjectArray(); - } - -} - -class Xdp extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "xdp", true); - this.packets = null; - } - -} - -class Xsl extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "xsl", true); - this.debug = null; - this.uri = null; - } - -} - -class Zpl extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONFIG_NS_ID, "zpl", true); - this.name = attributes.name ? attributes.name.trim() : ""; - this.batchOutput = null; - this.flipLabel = null; - this.fontInfo = null; - this.xdc = null; - } - -} - -class ConfigNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (ConfigNamespace.hasOwnProperty(name)) { - return ConfigNamespace[name](attributes); - } - - return undefined; - } - - static acrobat(attrs) { - return new Acrobat(attrs); - } - - static acrobat7(attrs) { - return new Acrobat7(attrs); - } - - static ADBE_JSConsole(attrs) { - return new ADBE_JSConsole(attrs); - } - - static ADBE_JSDebugger(attrs) { - return new ADBE_JSDebugger(attrs); - } - - static addSilentPrint(attrs) { - return new AddSilentPrint(attrs); - } - - static addViewerPreferences(attrs) { - return new AddViewerPreferences(attrs); - } - - static adjustData(attrs) { - return new AdjustData(attrs); - } - - static adobeExtensionLevel(attrs) { - return new AdobeExtensionLevel(attrs); - } - - static agent(attrs) { - return new Agent(attrs); - } - - static alwaysEmbed(attrs) { - return new AlwaysEmbed(attrs); - } - - static amd(attrs) { - return new Amd(attrs); - } - - static area(attrs) { - return new Area(attrs); - } - - static attributes(attrs) { - return new Attributes(attrs); - } - - static autoSave(attrs) { - return new AutoSave(attrs); - } - - static base(attrs) { - return new Base(attrs); - } - - static batchOutput(attrs) { - return new BatchOutput(attrs); - } - - static behaviorOverride(attrs) { - return new BehaviorOverride(attrs); - } - - static cache(attrs) { - return new Cache(attrs); - } - - static change(attrs) { - return new Change(attrs); - } - - static common(attrs) { - return new Common(attrs); - } - - static compress(attrs) { - return new Compress(attrs); - } - - static compressLogicalStructure(attrs) { - return new CompressLogicalStructure(attrs); - } - - static compressObjectStream(attrs) { - return new CompressObjectStream(attrs); - } - - static compression(attrs) { - return new Compression(attrs); - } - - static config(attrs) { - return new Config(attrs); - } - - static conformance(attrs) { - return new Conformance(attrs); - } - - static contentCopy(attrs) { - return new ContentCopy(attrs); - } - - static copies(attrs) { - return new Copies(attrs); - } - - static creator(attrs) { - return new Creator(attrs); - } - - static currentPage(attrs) { - return new CurrentPage(attrs); - } - - static data(attrs) { - return new Data(attrs); - } - - static debug(attrs) { - return new Debug(attrs); - } - - static defaultTypeface(attrs) { - return new DefaultTypeface(attrs); - } - - static destination(attrs) { - return new Destination(attrs); - } - - static documentAssembly(attrs) { - return new DocumentAssembly(attrs); - } - - static driver(attrs) { - return new Driver(attrs); - } - - static duplexOption(attrs) { - return new DuplexOption(attrs); - } - - static dynamicRender(attrs) { - return new DynamicRender(attrs); - } - - static embed(attrs) { - return new Embed(attrs); - } - - static encrypt(attrs) { - return new Encrypt(attrs); - } - - static encryption(attrs) { - return new Encryption(attrs); - } - - static encryptionLevel(attrs) { - return new EncryptionLevel(attrs); - } - - static enforce(attrs) { - return new Enforce(attrs); - } - - static equate(attrs) { - return new Equate(attrs); - } - - static equateRange(attrs) { - return new EquateRange(attrs); - } - - static exclude(attrs) { - return new Exclude(attrs); - } - - static excludeNS(attrs) { - return new ExcludeNS(attrs); - } - - static flipLabel(attrs) { - return new FlipLabel(attrs); - } - - static fontInfo(attrs) { - return new FontInfo(attrs); - } - - static formFieldFilling(attrs) { - return new FormFieldFilling(attrs); - } - - static groupParent(attrs) { - return new GroupParent(attrs); - } - - static ifEmpty(attrs) { - return new IfEmpty(attrs); - } - - static includeXDPContent(attrs) { - return new IncludeXDPContent(attrs); - } - - static incrementalLoad(attrs) { - return new IncrementalLoad(attrs); - } - - static incrementalMerge(attrs) { - return new IncrementalMerge(attrs); - } - - static interactive(attrs) { - return new Interactive(attrs); - } - - static jog(attrs) { - return new Jog(attrs); - } - - static labelPrinter(attrs) { - return new LabelPrinter(attrs); - } - - static layout(attrs) { - return new Layout(attrs); - } - - static level(attrs) { - return new Level(attrs); - } - - static linearized(attrs) { - return new Linearized(attrs); - } - - static locale(attrs) { - return new Locale(attrs); - } - - static localeSet(attrs) { - return new LocaleSet(attrs); - } - - static log(attrs) { - return new Log(attrs); - } - - static map(attrs) { - return new MapElement(attrs); - } - - static mediumInfo(attrs) { - return new MediumInfo(attrs); - } - - static message(attrs) { - return new Message(attrs); - } - - static messaging(attrs) { - return new Messaging(attrs); - } - - static mode(attrs) { - return new Mode(attrs); - } - - static modifyAnnots(attrs) { - return new ModifyAnnots(attrs); - } - - static msgId(attrs) { - return new MsgId(attrs); - } - - static nameAttr(attrs) { - return new NameAttr(attrs); - } - - static neverEmbed(attrs) { - return new NeverEmbed(attrs); - } - - static numberOfCopies(attrs) { - return new NumberOfCopies(attrs); - } - - static openAction(attrs) { - return new OpenAction(attrs); - } - - static output(attrs) { - return new Output(attrs); - } - - static outputBin(attrs) { - return new OutputBin(attrs); - } - - static outputXSL(attrs) { - return new OutputXSL(attrs); - } - - static overprint(attrs) { - return new Overprint(attrs); - } - - static packets(attrs) { - return new Packets(attrs); - } - - static pageOffset(attrs) { - return new PageOffset(attrs); - } - - static pageRange(attrs) { - return new PageRange(attrs); - } - - static pagination(attrs) { - return new Pagination(attrs); - } - - static paginationOverride(attrs) { - return new PaginationOverride(attrs); - } - - static part(attrs) { - return new Part(attrs); - } - - static pcl(attrs) { - return new Pcl(attrs); - } - - static pdf(attrs) { - return new Pdf(attrs); - } - - static pdfa(attrs) { - return new Pdfa(attrs); - } - - static permissions(attrs) { - return new Permissions(attrs); - } - - static pickTrayByPDFSize(attrs) { - return new PickTrayByPDFSize(attrs); - } - - static picture(attrs) { - return new Picture(attrs); - } - - static plaintextMetadata(attrs) { - return new PlaintextMetadata(attrs); - } - - static presence(attrs) { - return new Presence(attrs); - } - - static present(attrs) { - return new Present(attrs); - } - - static print(attrs) { - return new Print(attrs); - } - - static printHighQuality(attrs) { - return new PrintHighQuality(attrs); - } - - static printScaling(attrs) { - return new PrintScaling(attrs); - } - - static printerName(attrs) { - return new PrinterName(attrs); - } - - static producer(attrs) { - return new Producer(attrs); - } - - static ps(attrs) { - return new Ps(attrs); - } - - static range(attrs) { - return new Range(attrs); - } - - static record(attrs) { - return new Record(attrs); - } - - static relevant(attrs) { - return new Relevant(attrs); - } - - static rename(attrs) { - return new Rename(attrs); - } - - static renderPolicy(attrs) { - return new RenderPolicy(attrs); - } - - static runScripts(attrs) { - return new RunScripts(attrs); - } - - static script(attrs) { - return new Script(attrs); - } - - static scriptModel(attrs) { - return new ScriptModel(attrs); - } - - static severity(attrs) { - return new Severity(attrs); - } - - static silentPrint(attrs) { - return new SilentPrint(attrs); - } - - static staple(attrs) { - return new Staple(attrs); - } - - static startNode(attrs) { - return new StartNode(attrs); - } - - static startPage(attrs) { - return new StartPage(attrs); - } - - static submitFormat(attrs) { - return new SubmitFormat(attrs); - } - - static submitUrl(attrs) { - return new SubmitUrl(attrs); - } - - static subsetBelow(attrs) { - return new SubsetBelow(attrs); - } - - static suppressBanner(attrs) { - return new SuppressBanner(attrs); - } - - static tagged(attrs) { - return new Tagged(attrs); - } - - static template(attrs) { - return new Template(attrs); - } - - static templateCache(attrs) { - return new TemplateCache(attrs); - } - - static threshold(attrs) { - return new Threshold(attrs); - } - - static to(attrs) { - return new To(attrs); - } - - static trace(attrs) { - return new Trace(attrs); - } - - static transform(attrs) { - return new Transform(attrs); - } - - static type(attrs) { - return new Type(attrs); - } - - static uri(attrs) { - return new Uri(attrs); - } - - static validate(attrs) { - return new Validate(attrs); - } - - static validateApprovalSignatures(attrs) { - return new ValidateApprovalSignatures(attrs); - } - - static validationMessaging(attrs) { - return new ValidationMessaging(attrs); - } - - static version(attrs) { - return new Version(attrs); - } - - static versionControl(attrs) { - return new VersionControl(attrs); - } - - static viewerPreferences(attrs) { - return new ViewerPreferences(attrs); - } - - static webClient(attrs) { - return new WebClient(attrs); - } - - static whitespace(attrs) { - return new Whitespace(attrs); - } - - static window(attrs) { - return new Window(attrs); - } - - static xdc(attrs) { - return new Xdc(attrs); - } - - static xdp(attrs) { - return new Xdp(attrs); - } - - static xsl(attrs) { - return new Xsl(attrs); - } - - static zpl(attrs) { - return new Zpl(attrs); - } - -} - -exports.ConfigNamespace = ConfigNamespace; - -/***/ }), -/* 92 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ConnectionSetNamespace = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id; - -class ConnectionSet extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "connectionSet", true); - this.wsdlConnection = new _xfa_object.XFAObjectArray(); - this.xmlConnection = new _xfa_object.XFAObjectArray(); - this.xsdConnection = new _xfa_object.XFAObjectArray(); - } - -} - -class EffectiveInputPolicy extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "effectiveInputPolicy"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class EffectiveOutputPolicy extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "effectiveOutputPolicy"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Operation extends _xfa_object.StringObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "operation"); - this.id = attributes.id || ""; - this.input = attributes.input || ""; - this.name = attributes.name || ""; - this.output = attributes.output || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class RootElement extends _xfa_object.StringObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "rootElement"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class SoapAction extends _xfa_object.StringObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "soapAction"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class SoapAddress extends _xfa_object.StringObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "soapAddress"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class Uri extends _xfa_object.StringObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "uri"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class WsdlAddress extends _xfa_object.StringObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "wsdlAddress"); - this.id = attributes.id || ""; - this.name = attributes.name || ""; - this.use = attributes.use || ""; - this.usehref = attributes.usehref || ""; - } - -} - -class WsdlConnection extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "wsdlConnection", true); - this.dataDescription = attributes.dataDescription || ""; - this.name = attributes.name || ""; - this.effectiveInputPolicy = null; - this.effectiveOutputPolicy = null; - this.operation = null; - this.soapAction = null; - this.soapAddress = null; - this.wsdlAddress = null; - } - -} - -class XmlConnection extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "xmlConnection", true); - this.dataDescription = attributes.dataDescription || ""; - this.name = attributes.name || ""; - this.uri = null; - } - -} - -class XsdConnection extends _xfa_object.XFAObject { - constructor(attributes) { - super(CONNECTION_SET_NS_ID, "xsdConnection", true); - this.dataDescription = attributes.dataDescription || ""; - this.name = attributes.name || ""; - this.rootElement = null; - this.uri = null; - } - -} - -class ConnectionSetNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (ConnectionSetNamespace.hasOwnProperty(name)) { - return ConnectionSetNamespace[name](attributes); - } - - return undefined; - } - - static connectionSet(attrs) { - return new ConnectionSet(attrs); - } - - static effectiveInputPolicy(attrs) { - return new EffectiveInputPolicy(attrs); - } - - static effectiveOutputPolicy(attrs) { - return new EffectiveOutputPolicy(attrs); - } - - static operation(attrs) { - return new Operation(attrs); - } - - static rootElement(attrs) { - return new RootElement(attrs); - } - - static soapAction(attrs) { - return new SoapAction(attrs); - } - - static soapAddress(attrs) { - return new SoapAddress(attrs); - } - - static uri(attrs) { - return new Uri(attrs); - } - - static wsdlAddress(attrs) { - return new WsdlAddress(attrs); - } - - static wsdlConnection(attrs) { - return new WsdlConnection(attrs); - } - - static xmlConnection(attrs) { - return new XmlConnection(attrs); - } - - static xsdConnection(attrs) { - return new XsdConnection(attrs); - } - -} - -exports.ConnectionSetNamespace = ConnectionSetNamespace; - -/***/ }), -/* 93 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DatasetsNamespace = void 0; - -var _xfa_object = __w_pdfjs_require__(77); - -var _namespaces = __w_pdfjs_require__(79); - -const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id; - -class Data extends _xfa_object.XmlObject { - constructor(attributes) { - super(DATASETS_NS_ID, "data", attributes); - } - - [_xfa_object.$isNsAgnostic]() { - return true; - } - -} - -class Datasets extends _xfa_object.XFAObject { - constructor(attributes) { - super(DATASETS_NS_ID, "datasets", true); - this.data = null; - this.Signature = null; - } - - [_xfa_object.$onChild](child) { - const name = child[_xfa_object.$nodeName]; - - if (name === "data" && child[_xfa_object.$namespaceId] === DATASETS_NS_ID || name === "Signature" && child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.signature.id) { - this[name] = child; - } - - this[_xfa_object.$appendChild](child); - } - -} - -class DatasetsNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (DatasetsNamespace.hasOwnProperty(name)) { - return DatasetsNamespace[name](attributes); - } - - return undefined; - } - - static datasets(attributes) { - return new Datasets(attributes); - } - - static data(attributes) { - return new Data(attributes); - } - -} - -exports.DatasetsNamespace = DatasetsNamespace; - -/***/ }), -/* 94 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.LocaleSetNamespace = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -var _utils = __w_pdfjs_require__(78); - -const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id; - -class CalendarSymbols extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "calendarSymbols", true); - this.name = "gregorian"; - this.dayNames = new _xfa_object.XFAObjectArray(2); - this.eraNames = null; - this.meridiemNames = null; - this.monthNames = new _xfa_object.XFAObjectArray(2); - } - -} - -class CurrencySymbol extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "currencySymbol"); - this.name = (0, _utils.getStringOption)(attributes.name, ["symbol", "isoname", "decimal"]); - } - -} - -class CurrencySymbols extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "currencySymbols", true); - this.currencySymbol = new _xfa_object.XFAObjectArray(3); - } - -} - -class DatePattern extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "datePattern"); - this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); - } - -} - -class DatePatterns extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "datePatterns", true); - this.datePattern = new _xfa_object.XFAObjectArray(4); - } - -} - -class DateTimeSymbols extends _xfa_object.ContentObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "dateTimeSymbols"); - } - -} - -class Day extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "day"); - } - -} - -class DayNames extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "dayNames", true); - this.abbr = (0, _utils.getInteger)({ - data: attributes.abbr, - defaultValue: 0, - validate: x => x === 1 - }); - this.day = new _xfa_object.XFAObjectArray(7); - } - -} - -class Era extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "era"); - } - -} - -class EraNames extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "eraNames", true); - this.era = new _xfa_object.XFAObjectArray(2); - } - -} - -class Locale extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "locale", true); - this.desc = attributes.desc || ""; - this.name = "isoname"; - this.calendarSymbols = null; - this.currencySymbols = null; - this.datePatterns = null; - this.dateTimeSymbols = null; - this.numberPatterns = null; - this.numberSymbols = null; - this.timePatterns = null; - this.typeFaces = null; - } - -} - -class LocaleSet extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "localeSet", true); - this.locale = new _xfa_object.XFAObjectArray(); - } - -} - -class Meridiem extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "meridiem"); - } - -} - -class MeridiemNames extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "meridiemNames", true); - this.meridiem = new _xfa_object.XFAObjectArray(2); - } - -} - -class Month extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "month"); - } - -} - -class MonthNames extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "monthNames", true); - this.abbr = (0, _utils.getInteger)({ - data: attributes.abbr, - defaultValue: 0, - validate: x => x === 1 - }); - this.month = new _xfa_object.XFAObjectArray(12); - } - -} - -class NumberPattern extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "numberPattern"); - this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); - } - -} - -class NumberPatterns extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "numberPatterns", true); - this.numberPattern = new _xfa_object.XFAObjectArray(4); - } - -} - -class NumberSymbol extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "numberSymbol"); - this.name = (0, _utils.getStringOption)(attributes.name, ["decimal", "grouping", "percent", "minus", "zero"]); - } - -} - -class NumberSymbols extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "numberSymbols", true); - this.numberSymbol = new _xfa_object.XFAObjectArray(5); - } - -} - -class TimePattern extends _xfa_object.StringObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "timePattern"); - this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); - } - -} - -class TimePatterns extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "timePatterns", true); - this.timePattern = new _xfa_object.XFAObjectArray(4); - } - -} - -class TypeFace extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "typeFace", true); - this.name = attributes.name | ""; - } - -} - -class TypeFaces extends _xfa_object.XFAObject { - constructor(attributes) { - super(LOCALE_SET_NS_ID, "typeFaces", true); - this.typeFace = new _xfa_object.XFAObjectArray(); - } - -} - -class LocaleSetNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (LocaleSetNamespace.hasOwnProperty(name)) { - return LocaleSetNamespace[name](attributes); - } - - return undefined; - } - - static calendarSymbols(attrs) { - return new CalendarSymbols(attrs); - } - - static currencySymbol(attrs) { - return new CurrencySymbol(attrs); - } - - static currencySymbols(attrs) { - return new CurrencySymbols(attrs); - } - - static datePattern(attrs) { - return new DatePattern(attrs); - } - - static datePatterns(attrs) { - return new DatePatterns(attrs); - } - - static dateTimeSymbols(attrs) { - return new DateTimeSymbols(attrs); - } - - static day(attrs) { - return new Day(attrs); - } - - static dayNames(attrs) { - return new DayNames(attrs); - } - - static era(attrs) { - return new Era(attrs); - } - - static eraNames(attrs) { - return new EraNames(attrs); - } - - static locale(attrs) { - return new Locale(attrs); - } - - static localeSet(attrs) { - return new LocaleSet(attrs); - } - - static meridiem(attrs) { - return new Meridiem(attrs); - } - - static meridiemNames(attrs) { - return new MeridiemNames(attrs); - } - - static month(attrs) { - return new Month(attrs); - } - - static monthNames(attrs) { - return new MonthNames(attrs); - } - - static numberPattern(attrs) { - return new NumberPattern(attrs); - } - - static numberPatterns(attrs) { - return new NumberPatterns(attrs); - } - - static numberSymbol(attrs) { - return new NumberSymbol(attrs); - } - - static numberSymbols(attrs) { - return new NumberSymbols(attrs); - } - - static timePattern(attrs) { - return new TimePattern(attrs); - } - - static timePatterns(attrs) { - return new TimePatterns(attrs); - } - - static typeFace(attrs) { - return new TypeFace(attrs); - } - - static typeFaces(attrs) { - return new TypeFaces(attrs); - } - -} - -exports.LocaleSetNamespace = LocaleSetNamespace; - -/***/ }), -/* 95 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SignatureNamespace = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id; - -class Signature extends _xfa_object.XFAObject { - constructor(attributes) { - super(SIGNATURE_NS_ID, "signature", true); - } - -} - -class SignatureNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (SignatureNamespace.hasOwnProperty(name)) { - return SignatureNamespace[name](attributes); - } - - return undefined; - } - - static signature(attributes) { - return new Signature(attributes); - } - -} - -exports.SignatureNamespace = SignatureNamespace; - -/***/ }), -/* 96 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.StylesheetNamespace = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id; - -class Stylesheet extends _xfa_object.XFAObject { - constructor(attributes) { - super(STYLESHEET_NS_ID, "stylesheet", true); - } - -} - -class StylesheetNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (StylesheetNamespace.hasOwnProperty(name)) { - return StylesheetNamespace[name](attributes); - } - - return undefined; - } - - static stylesheet(attributes) { - return new Stylesheet(attributes); - } - -} - -exports.StylesheetNamespace = StylesheetNamespace; - -/***/ }), -/* 97 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XdpNamespace = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id; - -class Xdp extends _xfa_object.XFAObject { - constructor(attributes) { - super(XDP_NS_ID, "xdp", true); - this.uuid = attributes.uuid || ""; - this.timeStamp = attributes.timeStamp || ""; - this.config = null; - this.connectionSet = null; - this.datasets = null; - this.localeSet = null; - this.stylesheet = new _xfa_object.XFAObjectArray(); - this.template = null; - } - - [_xfa_object.$onChildCheck](child) { - const ns = _namespaces.NamespaceIds[child[_xfa_object.$nodeName]]; - return ns && child[_xfa_object.$namespaceId] === ns.id; - } - -} - -class XdpNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (XdpNamespace.hasOwnProperty(name)) { - return XdpNamespace[name](attributes); - } - - return undefined; - } - - static xdp(attributes) { - return new Xdp(attributes); - } - -} - -exports.XdpNamespace = XdpNamespace; - -/***/ }), -/* 98 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XhtmlNamespace = void 0; - -var _xfa_object = __w_pdfjs_require__(77); - -var _namespaces = __w_pdfjs_require__(79); - -var _html_utils = __w_pdfjs_require__(84); - -var _utils = __w_pdfjs_require__(78); - -const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id; -const $richText = Symbol(); -const VALID_STYLES = new Set(["color", "font", "font-family", "font-size", "font-stretch", "font-style", "font-weight", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "letter-spacing", "line-height", "orphans", "page-break-after", "page-break-before", "page-break-inside", "tab-interval", "tab-stop", "text-align", "text-decoration", "text-indent", "vertical-align", "widows", "kerning-mode", "xfa-font-horizontal-scale", "xfa-font-vertical-scale", "xfa-spacerun", "xfa-tab-stops"]); -const StyleMapping = new Map([["page-break-after", "breakAfter"], ["page-break-before", "breakBefore"], ["page-break-inside", "breakInside"], ["kerning-mode", value => value === "none" ? "none" : "normal"], ["xfa-font-horizontal-scale", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], ["xfa-font-vertical-scale", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], ["xfa-spacerun", ""], ["xfa-tab-stops", ""], ["font-size", (value, original) => { - value = original.fontSize = (0, _utils.getMeasurement)(value); - return (0, _html_utils.measureToString)(0.99 * value); -}], ["letter-spacing", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["line-height", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-bottom", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-left", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-right", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-top", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["text-indent", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["font-family", value => value], ["vertical-align", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))]]); -const spacesRegExp = /\s+/g; -const crlfRegExp = /[\r\n]+/g; -const crlfForRichTextRegExp = /\r\n?/g; - -function mapStyle(styleStr, node, richText) { - const style = Object.create(null); - - if (!styleStr) { - return style; - } - - const original = Object.create(null); - - for (const [key, value] of styleStr.split(";").map(s => s.split(":", 2))) { - const mapping = StyleMapping.get(key); - - if (mapping === "") { - continue; - } - - let newValue = value; - - if (mapping) { - if (typeof mapping === "string") { - newValue = mapping; - } else { - newValue = mapping(value, original); - } - } - - if (key.endsWith("scale")) { - if (style.transform) { - style.transform = `${style[key]} ${newValue}`; - } else { - style.transform = newValue; - } - } else { - style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] = newValue; - } - } - - if (style.fontFamily) { - (0, _html_utils.setFontFamily)({ - typeface: style.fontFamily, - weight: style.fontWeight || "normal", - posture: style.fontStyle || "normal", - size: original.fontSize || 0 - }, node, node[_xfa_object.$globalData].fontFinder, style); - } - - if (richText && style.verticalAlign && style.verticalAlign !== "0px" && style.fontSize) { - const SUB_SUPER_SCRIPT_FACTOR = 0.583; - const VERTICAL_FACTOR = 0.333; - const fontSize = (0, _utils.getMeasurement)(style.fontSize); - style.fontSize = (0, _html_utils.measureToString)(fontSize * SUB_SUPER_SCRIPT_FACTOR); - style.verticalAlign = (0, _html_utils.measureToString)(Math.sign((0, _utils.getMeasurement)(style.verticalAlign)) * fontSize * VERTICAL_FACTOR); - } - - (0, _html_utils.fixTextIndent)(style); - return style; -} - -function checkStyle(node) { - if (!node.style) { - return ""; - } - - return node.style.trim().split(/\s*;\s*/).filter(s => !!s).map(s => s.split(/\s*:\s*/, 2)).filter(([key, value]) => { - if (key === "font-family") { - node[_xfa_object.$globalData].usedTypefaces.add(value); - } - - return VALID_STYLES.has(key); - }).map(kv => kv.join(":")).join(";"); -} - -const NoWhites = new Set(["body", "html"]); - -class XhtmlObject extends _xfa_object.XmlObject { - constructor(attributes, name) { - super(XHTML_NS_ID, name); - this[$richText] = false; - this.style = attributes.style || ""; - } - - [_xfa_object.$clean](builder) { - super[_xfa_object.$clean](builder); - - this.style = checkStyle(this); - } - - [_xfa_object.$acceptWhitespace]() { - return !NoWhites.has(this[_xfa_object.$nodeName]); - } - - [_xfa_object.$onText](str, richText = false) { - if (!richText) { - str = str.replace(crlfRegExp, ""); - - if (!this.style.includes("xfa-spacerun:yes")) { - str = str.replace(spacesRegExp, " "); - } - } else { - this[$richText] = true; - } - - if (str) { - this[_xfa_object.$content] += str; - } - } - - [_xfa_object.$pushGlyphs](measure, mustPop = true) { - const xfaFont = Object.create(null); - const margin = { - top: NaN, - bottom: NaN, - left: NaN, - right: NaN - }; - let lineHeight = null; - - for (const [key, value] of this.style.split(";").map(s => s.split(":", 2))) { - switch (key) { - case "font-family": - xfaFont.typeface = (0, _utils.stripQuotes)(value); - break; - - case "font-size": - xfaFont.size = (0, _utils.getMeasurement)(value); - break; - - case "font-weight": - xfaFont.weight = value; - break; - - case "font-style": - xfaFont.posture = value; - break; - - case "letter-spacing": - xfaFont.letterSpacing = (0, _utils.getMeasurement)(value); - break; - - case "margin": - const values = value.split(/ \t/).map(x => (0, _utils.getMeasurement)(x)); - - switch (values.length) { - case 1: - margin.top = margin.bottom = margin.left = margin.right = values[0]; - break; - - case 2: - margin.top = margin.bottom = values[0]; - margin.left = margin.right = values[1]; - break; - - case 3: - margin.top = values[0]; - margin.bottom = values[2]; - margin.left = margin.right = values[1]; - break; - - case 4: - margin.top = values[0]; - margin.left = values[1]; - margin.bottom = values[2]; - margin.right = values[3]; - break; - } - - break; - - case "margin-top": - margin.top = (0, _utils.getMeasurement)(value); - break; - - case "margin-bottom": - margin.bottom = (0, _utils.getMeasurement)(value); - break; - - case "margin-left": - margin.left = (0, _utils.getMeasurement)(value); - break; - - case "margin-right": - margin.right = (0, _utils.getMeasurement)(value); - break; - - case "line-height": - lineHeight = (0, _utils.getMeasurement)(value); - break; - } - } - - measure.pushData(xfaFont, margin, lineHeight); - - if (this[_xfa_object.$content]) { - measure.addString(this[_xfa_object.$content]); - } else { - for (const child of this[_xfa_object.$getChildren]()) { - if (child[_xfa_object.$nodeName] === "#text") { - measure.addString(child[_xfa_object.$content]); - continue; - } - - child[_xfa_object.$pushGlyphs](measure); - } - } - - if (mustPop) { - measure.popFont(); - } - } - - [_xfa_object.$toHTML](availableSpace) { - const children = []; - this[_xfa_object.$extra] = { - children - }; - - this[_xfa_object.$childrenToHTML]({}); - - if (children.length === 0 && !this[_xfa_object.$content]) { - return _utils.HTMLResult.EMPTY; - } - - let value; - - if (this[$richText]) { - value = this[_xfa_object.$content] ? this[_xfa_object.$content].replace(crlfForRichTextRegExp, "\n") : undefined; - } else { - value = this[_xfa_object.$content] || undefined; - } - - return _utils.HTMLResult.success({ - name: this[_xfa_object.$nodeName], - attributes: { - href: this.href, - style: mapStyle(this.style, this, this[$richText]) - }, - children, - value - }); - } - -} - -class A extends XhtmlObject { - constructor(attributes) { - super(attributes, "a"); - this.href = (0, _html_utils.fixURL)(attributes.href) || ""; - } - -} - -class B extends XhtmlObject { - constructor(attributes) { - super(attributes, "b"); - } - - [_xfa_object.$pushGlyphs](measure) { - measure.pushFont({ - weight: "bold" - }); - - super[_xfa_object.$pushGlyphs](measure); - - measure.popFont(); - } - -} - -class Body extends XhtmlObject { - constructor(attributes) { - super(attributes, "body"); - } - - [_xfa_object.$toHTML](availableSpace) { - const res = super[_xfa_object.$toHTML](availableSpace); - - const { - html - } = res; - - if (!html) { - return _utils.HTMLResult.EMPTY; - } - - html.name = "div"; - html.attributes.class = ["xfaRich"]; - return res; - } - -} - -class Br extends XhtmlObject { - constructor(attributes) { - super(attributes, "br"); - } - - [_xfa_object.$text]() { - return "\n"; - } - - [_xfa_object.$pushGlyphs](measure) { - measure.addString("\n"); - } - - [_xfa_object.$toHTML](availableSpace) { - return _utils.HTMLResult.success({ - name: "br" - }); - } - -} - -class Html extends XhtmlObject { - constructor(attributes) { - super(attributes, "html"); - } - - [_xfa_object.$toHTML](availableSpace) { - const children = []; - this[_xfa_object.$extra] = { - children - }; - - this[_xfa_object.$childrenToHTML]({}); - - if (children.length === 0) { - return _utils.HTMLResult.success({ - name: "div", - attributes: { - class: ["xfaRich"], - style: {} - }, - value: this[_xfa_object.$content] || "" - }); - } - - if (children.length === 1) { - const child = children[0]; - - if (child.attributes && child.attributes.class.includes("xfaRich")) { - return _utils.HTMLResult.success(child); - } - } - - return _utils.HTMLResult.success({ - name: "div", - attributes: { - class: ["xfaRich"], - style: {} - }, - children - }); - } - -} - -class I extends XhtmlObject { - constructor(attributes) { - super(attributes, "i"); - } - - [_xfa_object.$pushGlyphs](measure) { - measure.pushFont({ - posture: "italic" - }); - - super[_xfa_object.$pushGlyphs](measure); - - measure.popFont(); - } - -} - -class Li extends XhtmlObject { - constructor(attributes) { - super(attributes, "li"); - } - -} - -class Ol extends XhtmlObject { - constructor(attributes) { - super(attributes, "ol"); - } - -} - -class P extends XhtmlObject { - constructor(attributes) { - super(attributes, "p"); - } - - [_xfa_object.$pushGlyphs](measure) { - super[_xfa_object.$pushGlyphs](measure, false); - - measure.addString("\n"); - measure.addPara(); - measure.popFont(); - } - - [_xfa_object.$text]() { - const siblings = this[_xfa_object.$getParent]()[_xfa_object.$getChildren](); - - if (siblings[siblings.length - 1] === this) { - return super[_xfa_object.$text](); - } - - return super[_xfa_object.$text]() + "\n"; - } - -} - -class Span extends XhtmlObject { - constructor(attributes) { - super(attributes, "span"); - } - -} - -class Sub extends XhtmlObject { - constructor(attributes) { - super(attributes, "sub"); - } - -} - -class Sup extends XhtmlObject { - constructor(attributes) { - super(attributes, "sup"); - } - -} - -class Ul extends XhtmlObject { - constructor(attributes) { - super(attributes, "ul"); - } - -} - -class XhtmlNamespace { - static [_namespaces.$buildXFAObject](name, attributes) { - if (XhtmlNamespace.hasOwnProperty(name)) { - return XhtmlNamespace[name](attributes); - } - - return undefined; - } - - static a(attributes) { - return new A(attributes); - } - - static b(attributes) { - return new B(attributes); - } - - static body(attributes) { - return new Body(attributes); - } - - static br(attributes) { - return new Br(attributes); - } - - static html(attributes) { - return new Html(attributes); - } - - static i(attributes) { - return new I(attributes); - } - - static li(attributes) { - return new Li(attributes); - } - - static ol(attributes) { - return new Ol(attributes); - } - - static p(attributes) { - return new P(attributes); - } - - static span(attributes) { - return new Span(attributes); - } - - static sub(attributes) { - return new Sub(attributes); - } - - static sup(attributes) { - return new Sup(attributes); - } - - static ul(attributes) { - return new Ul(attributes); - } - -} - -exports.XhtmlNamespace = XhtmlNamespace; - -/***/ }), -/* 99 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.UnknownNamespace = void 0; - -var _namespaces = __w_pdfjs_require__(79); - -var _xfa_object = __w_pdfjs_require__(77); - -class UnknownNamespace { - constructor(nsId) { - this.namespaceId = nsId; - } - - [_namespaces.$buildXFAObject](name, attributes) { - return new _xfa_object.XmlObject(this.namespaceId, name, attributes); - } - -} - -exports.UnknownNamespace = UnknownNamespace; - -/***/ }), -/* 100 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DatasetReader = void 0; - -var _util = __w_pdfjs_require__(2); - -var _core_utils = __w_pdfjs_require__(8); - -var _xml_parser = __w_pdfjs_require__(70); - -function decodeString(str) { - try { - return (0, _util.stringToUTF8String)(str); - } catch (ex) { - (0, _util.warn)(`UTF-8 decoding failed: "${ex}".`); - return str; - } -} - -class DatasetXMLParser extends _xml_parser.SimpleXMLParser { - constructor(options) { - super(options); - this.node = null; - } - - onEndElement(name) { - const node = super.onEndElement(name); - - if (node && name === "xfa:datasets") { - this.node = node; - throw new Error("Aborting DatasetXMLParser."); - } - } - -} - -class DatasetReader { - constructor(data) { - if (data.datasets) { - this.node = new _xml_parser.SimpleXMLParser({ - hasAttributes: true - }).parseFromString(data.datasets).documentElement; - } else { - const parser = new DatasetXMLParser({ - hasAttributes: true - }); - - try { - parser.parseFromString(data["xdp:xdp"]); - } catch (_) {} - - this.node = parser.node; - } - } - - getValue(path) { - if (!this.node || !path) { - return ""; - } - - const node = this.node.searchNode((0, _core_utils.parseXFAPath)(path), 0); - - if (!node) { - return ""; - } - - const first = node.firstChild; - - if (first && first.nodeName === "value") { - return node.children.map(child => decodeString(child.textContent)); - } - - return decodeString(node.textContent); - } - -} - -exports.DatasetReader = DatasetReader; - -/***/ }), -/* 101 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XRef = void 0; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _core_utils = __w_pdfjs_require__(8); - -var _parser = __w_pdfjs_require__(27); - -var _base_stream = __w_pdfjs_require__(9); - -var _crypto = __w_pdfjs_require__(74); - -class XRef { - constructor(stream, pdfManager) { - this.stream = stream; - this.pdfManager = pdfManager; - this.entries = []; - this.xrefstms = Object.create(null); - this._cacheMap = new Map(); - this._pendingRefs = new _primitives.RefSet(); - this.stats = new _core_utils.DocStats(pdfManager.msgHandler); - this._newRefNum = null; - } - - getNewRef() { - if (this._newRefNum === null) { - this._newRefNum = this.entries.length; - } - - return _primitives.Ref.get(this._newRefNum++, 0); - } - - resetNewRef() { - this._newRefNum = null; - } - - setStartXRef(startXRef) { - this.startXRefQueue = [startXRef]; - } - - parse(recoveryMode = false) { - let trailerDict; - - if (!recoveryMode) { - trailerDict = this.readXRef(); - } else { - (0, _util.warn)("Indexing all PDF objects"); - trailerDict = this.indexObjects(); - } - - trailerDict.assignXref(this); - this.trailer = trailerDict; - let encrypt; - - try { - encrypt = trailerDict.get("Encrypt"); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)(`XRef.parse - Invalid "Encrypt" reference: "${ex}".`); - } - - if (encrypt instanceof _primitives.Dict) { - const ids = trailerDict.get("ID"); - const fileId = ids && ids.length ? ids[0] : ""; - encrypt.suppressEncryption = true; - this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password); - } - - let root; - - try { - root = trailerDict.get("Root"); - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)(`XRef.parse - Invalid "Root" reference: "${ex}".`); - } - - if (root instanceof _primitives.Dict) { - try { - const pages = root.get("Pages"); - - if (pages instanceof _primitives.Dict) { - this.root = root; - return; - } - } catch (ex) { - if (ex instanceof _core_utils.MissingDataException) { - throw ex; - } - - (0, _util.warn)(`XRef.parse - Invalid "Pages" reference: "${ex}".`); - } - } - - if (!recoveryMode) { - throw new _core_utils.XRefParseException(); - } - - throw new _util.InvalidPDFException("Invalid Root reference."); - } - - processXRefTable(parser) { - if (!("tableState" in this)) { - this.tableState = { - entryNum: 0, - streamPos: parser.lexer.stream.pos, - parserBuf1: parser.buf1, - parserBuf2: parser.buf2 - }; - } - - const obj = this.readXRefTable(parser); - - if (!(0, _primitives.isCmd)(obj, "trailer")) { - throw new _util.FormatError("Invalid XRef table: could not find trailer dictionary"); - } - - let dict = parser.getObj(); - - if (!(dict instanceof _primitives.Dict) && dict.dict) { - dict = dict.dict; - } - - if (!(dict instanceof _primitives.Dict)) { - throw new _util.FormatError("Invalid XRef table: could not parse trailer dictionary"); - } - - delete this.tableState; - return dict; - } - - readXRefTable(parser) { - const stream = parser.lexer.stream; - const tableState = this.tableState; - stream.pos = tableState.streamPos; - parser.buf1 = tableState.parserBuf1; - parser.buf2 = tableState.parserBuf2; - let obj; - - while (true) { - if (!("firstEntryNum" in tableState) || !("entryCount" in tableState)) { - if ((0, _primitives.isCmd)(obj = parser.getObj(), "trailer")) { - break; - } - - tableState.firstEntryNum = obj; - tableState.entryCount = parser.getObj(); - } - - let first = tableState.firstEntryNum; - const count = tableState.entryCount; - - if (!Number.isInteger(first) || !Number.isInteger(count)) { - throw new _util.FormatError("Invalid XRef table: wrong types in subsection header"); - } - - for (let i = tableState.entryNum; i < count; i++) { - tableState.streamPos = stream.pos; - tableState.entryNum = i; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - const entry = {}; - entry.offset = parser.getObj(); - entry.gen = parser.getObj(); - const type = parser.getObj(); - - if (type instanceof _primitives.Cmd) { - switch (type.cmd) { - case "f": - entry.free = true; - break; - - case "n": - entry.uncompressed = true; - break; - } - } - - if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) { - throw new _util.FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`); - } - - if (i === 0 && entry.free && first === 1) { - first = 0; - } - - if (!this.entries[i + first]) { - this.entries[i + first] = entry; - } - } - - tableState.entryNum = 0; - tableState.streamPos = stream.pos; - tableState.parserBuf1 = parser.buf1; - tableState.parserBuf2 = parser.buf2; - delete tableState.firstEntryNum; - delete tableState.entryCount; - } - - if (this.entries[0] && !this.entries[0].free) { - throw new _util.FormatError("Invalid XRef table: unexpected first object"); - } - - return obj; - } - - processXRefStream(stream) { - if (!("streamState" in this)) { - const streamParameters = stream.dict; - const byteWidths = streamParameters.get("W"); - let range = streamParameters.get("Index"); - - if (!range) { - range = [0, streamParameters.get("Size")]; - } - - this.streamState = { - entryRanges: range, - byteWidths, - entryNum: 0, - streamPos: stream.pos - }; - } - - this.readXRefStream(stream); - delete this.streamState; - return stream.dict; - } - - readXRefStream(stream) { - const streamState = this.streamState; - stream.pos = streamState.streamPos; - const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths; - const entryRanges = streamState.entryRanges; - - while (entryRanges.length > 0) { - const [first, n] = entryRanges; - - if (!Number.isInteger(first) || !Number.isInteger(n)) { - throw new _util.FormatError(`Invalid XRef range fields: ${first}, ${n}`); - } - - if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) { - throw new _util.FormatError(`Invalid XRef entry fields length: ${first}, ${n}`); - } - - for (let i = streamState.entryNum; i < n; ++i) { - streamState.entryNum = i; - streamState.streamPos = stream.pos; - let type = 0, - offset = 0, - generation = 0; - - for (let j = 0; j < typeFieldWidth; ++j) { - const typeByte = stream.getByte(); - - if (typeByte === -1) { - throw new _util.FormatError("Invalid XRef byteWidths 'type'."); - } - - type = type << 8 | typeByte; - } - - if (typeFieldWidth === 0) { - type = 1; - } - - for (let j = 0; j < offsetFieldWidth; ++j) { - const offsetByte = stream.getByte(); - - if (offsetByte === -1) { - throw new _util.FormatError("Invalid XRef byteWidths 'offset'."); - } - - offset = offset << 8 | offsetByte; - } - - for (let j = 0; j < generationFieldWidth; ++j) { - const generationByte = stream.getByte(); - - if (generationByte === -1) { - throw new _util.FormatError("Invalid XRef byteWidths 'generation'."); - } - - generation = generation << 8 | generationByte; - } - - const entry = {}; - entry.offset = offset; - entry.gen = generation; - - switch (type) { - case 0: - entry.free = true; - break; - - case 1: - entry.uncompressed = true; - break; - - case 2: - break; - - default: - throw new _util.FormatError(`Invalid XRef entry type: ${type}`); - } - - if (!this.entries[first + i]) { - this.entries[first + i] = entry; - } - } - - streamState.entryNum = 0; - streamState.streamPos = stream.pos; - entryRanges.splice(0, 2); - } - } - - indexObjects() { - const TAB = 0x9, - LF = 0xa, - CR = 0xd, - SPACE = 0x20; - const PERCENT = 0x25, - LT = 0x3c; - - function readToken(data, offset) { - let token = "", - ch = data[offset]; - - while (ch !== LF && ch !== CR && ch !== LT) { - if (++offset >= data.length) { - break; - } - - token += String.fromCharCode(ch); - ch = data[offset]; - } - - return token; - } - - function skipUntil(data, offset, what) { - const length = what.length, - dataLength = data.length; - let skipped = 0; - - while (offset < dataLength) { - let i = 0; - - while (i < length && data[offset + i] === what[i]) { - ++i; - } - - if (i >= length) { - break; - } - - offset++; - skipped++; - } - - return skipped; - } - - const objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; - const endobjRegExp = /\bendobj[\b\s]$/; - const nestedObjRegExp = /\s+(\d+\s+\d+\s+obj[\b\s<])$/; - const CHECK_CONTENT_LENGTH = 25; - const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); - const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]); - const objBytes = new Uint8Array([111, 98, 106]); - const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); - this.entries.length = 0; - - this._cacheMap.clear(); - - const stream = this.stream; - stream.pos = 0; - const buffer = stream.getBytes(), - length = buffer.length; - let position = stream.start; - const trailers = [], - xrefStms = []; - - while (position < length) { - let ch = buffer[position]; - - if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { - ++position; - continue; - } - - if (ch === PERCENT) { - do { - ++position; - - if (position >= length) { - break; - } - - ch = buffer[position]; - } while (ch !== LF && ch !== CR); - - continue; - } - - const token = readToken(buffer, position); - let m; - - if (token.startsWith("xref") && (token.length === 4 || /\s/.test(token[4]))) { - position += skipUntil(buffer, position, trailerBytes); - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else if (m = objRegExp.exec(token)) { - const num = m[1] | 0, - gen = m[2] | 0; - let contentLength, - startPos = position + token.length, - updateEntries = false; - - if (!this.entries[num]) { - updateEntries = true; - } else if (this.entries[num].gen === gen) { - try { - const parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream.makeSubStream(startPos)) - }); - parser.getObj(); - updateEntries = true; - } catch (ex) { - if (ex instanceof _core_utils.ParserEOFException) { - (0, _util.warn)(`indexObjects -- checking object (${token}): "${ex}".`); - } else { - updateEntries = true; - } - } - } - - if (updateEntries) { - this.entries[num] = { - offset: position - stream.start, - gen, - uncompressed: true - }; - } - - while (startPos < buffer.length) { - const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4; - contentLength = endPos - position; - const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos); - const tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos)); - - if (endobjRegExp.test(tokenStr)) { - break; - } else { - const objToken = nestedObjRegExp.exec(tokenStr); - - if (objToken && objToken[1]) { - (0, _util.warn)('indexObjects: Found new "obj" inside of another "obj", ' + 'caused by missing "endobj" -- trying to recover.'); - contentLength -= objToken[1].length; - break; - } - } - - startPos = endPos; - } - - const content = buffer.subarray(position, position + contentLength); - const xrefTagOffset = skipUntil(content, 0, xrefBytes); - - if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { - xrefStms.push(position - stream.start); - this.xrefstms[position - stream.start] = 1; - } - - position += contentLength; - } else if (token.startsWith("trailer") && (token.length === 7 || /\s/.test(token[7]))) { - trailers.push(position); - position += skipUntil(buffer, position, startxrefBytes); - } else { - position += token.length + 1; - } - } - - for (let i = 0, ii = xrefStms.length; i < ii; ++i) { - this.startXRefQueue.push(xrefStms[i]); - this.readXRef(true); - } - - let trailerDict; - - for (let i = 0, ii = trailers.length; i < ii; ++i) { - stream.pos = trailers[i]; - const parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true, - recoveryMode: true - }); - const obj = parser.getObj(); - - if (!(0, _primitives.isCmd)(obj, "trailer")) { - continue; - } - - const dict = parser.getObj(); - - if (!(dict instanceof _primitives.Dict)) { - continue; - } - - try { - 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) { - continue; - } - - if (dict.has("ID")) { - return dict; - } - - trailerDict = dict; - } - - if (trailerDict) { - return trailerDict; - } - - if (this.topDict) { - return this.topDict; - } - - throw new _util.InvalidPDFException("Invalid PDF structure."); - } - - readXRef(recoveryMode = false) { - const stream = this.stream; - const startXRefParsedCache = new Set(); - - try { - while (this.startXRefQueue.length) { - const startXRef = this.startXRefQueue[0]; - - if (startXRefParsedCache.has(startXRef)) { - (0, _util.warn)("readXRef - skipping XRef table since it was already parsed."); - this.startXRefQueue.shift(); - continue; - } - - startXRefParsedCache.add(startXRef); - stream.pos = startXRef + stream.start; - const parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true - }); - let obj = parser.getObj(); - let dict; - - if ((0, _primitives.isCmd)(obj, "xref")) { - dict = this.processXRefTable(parser); - - if (!this.topDict) { - this.topDict = dict; - } - - obj = dict.get("XRefStm"); - - if (Number.isInteger(obj)) { - const pos = obj; - - if (!(pos in this.xrefstms)) { - this.xrefstms[pos] = 1; - this.startXRefQueue.push(pos); - } - } - } else if (Number.isInteger(obj)) { - if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), "obj") || !((obj = parser.getObj()) instanceof _base_stream.BaseStream)) { - throw new _util.FormatError("Invalid XRef stream"); - } - - dict = this.processXRefStream(obj); - - if (!this.topDict) { - this.topDict = dict; - } - - if (!dict) { - throw new _util.FormatError("Failed to read XRef stream"); - } - } else { - throw new _util.FormatError("Invalid XRef stream header"); - } - - obj = dict.get("Prev"); - - if (Number.isInteger(obj)) { - this.startXRefQueue.push(obj); - } else if (obj instanceof _primitives.Ref) { - this.startXRefQueue.push(obj.num); - } - - this.startXRefQueue.shift(); - } - - return this.topDict; - } catch (e) { - if (e instanceof _core_utils.MissingDataException) { - throw e; - } - - (0, _util.info)("(while reading XRef): " + e); - this.startXRefQueue.shift(); - } - - if (recoveryMode) { - return undefined; - } - - throw new _core_utils.XRefParseException(); - } - - getEntry(i) { - const xrefEntry = this.entries[i]; - - if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { - return xrefEntry; - } - - return null; - } - - fetchIfRef(obj, suppressEncryption = false) { - if (obj instanceof _primitives.Ref) { - return this.fetch(obj, suppressEncryption); - } - - return obj; - } - - fetch(ref, suppressEncryption = false) { - if (!(ref instanceof _primitives.Ref)) { - throw new Error("ref object is not a reference"); - } - - const num = ref.num; - - const cacheEntry = this._cacheMap.get(num); - - if (cacheEntry !== undefined) { - if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) { - cacheEntry.objId = ref.toString(); - } - - return cacheEntry; - } - - let xrefEntry = this.getEntry(num); - - if (xrefEntry === null) { - this._cacheMap.set(num, xrefEntry); - - return xrefEntry; - } - - if (this._pendingRefs.has(ref)) { - this._pendingRefs.remove(ref); - - (0, _util.warn)(`Ignoring circular reference: ${ref}.`); - return _primitives.CIRCULAR_REF; - } - - this._pendingRefs.put(ref); - - try { - if (xrefEntry.uncompressed) { - xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption); - } else { - xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption); - } - - this._pendingRefs.remove(ref); - } catch (ex) { - this._pendingRefs.remove(ref); - - throw ex; - } - - if (xrefEntry instanceof _primitives.Dict) { - xrefEntry.objId = ref.toString(); - } else if (xrefEntry instanceof _base_stream.BaseStream) { - xrefEntry.dict.objId = ref.toString(); - } - - return xrefEntry; - } - - fetchUncompressed(ref, xrefEntry, suppressEncryption = false) { - const gen = ref.gen; - let num = ref.num; - - if (xrefEntry.gen !== gen) { - throw new _core_utils.XRefEntryException(`Inconsistent generation in XRef: ${ref}`); - } - - const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start); - const parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true - }); - const obj1 = parser.getObj(); - const obj2 = parser.getObj(); - const obj3 = parser.getObj(); - - if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) { - throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); - } - - if (obj3.cmd !== "obj") { - if (obj3.cmd.startsWith("obj")) { - num = parseInt(obj3.cmd.substring(3), 10); - - if (!Number.isNaN(num)) { - return num; - } - } - - throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); - } - - if (this.encrypt && !suppressEncryption) { - xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen)); - } else { - xrefEntry = parser.getObj(); - } - - if (!(xrefEntry instanceof _base_stream.BaseStream)) { - this._cacheMap.set(num, xrefEntry); - } - - return xrefEntry; - } - - fetchCompressed(ref, xrefEntry, suppressEncryption = false) { - const tableOffset = xrefEntry.offset; - const stream = this.fetch(_primitives.Ref.get(tableOffset, 0)); - - if (!(stream instanceof _base_stream.BaseStream)) { - throw new _util.FormatError("bad ObjStm stream"); - } - - const first = stream.dict.get("First"); - const n = stream.dict.get("N"); - - if (!Number.isInteger(first) || !Number.isInteger(n)) { - throw new _util.FormatError("invalid first and n parameters for ObjStm stream"); - } - - let parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream), - xref: this, - allowStreams: true - }); - const nums = new Array(n); - const offsets = new Array(n); - - for (let i = 0; i < n; ++i) { - const num = parser.getObj(); - - if (!Number.isInteger(num)) { - throw new _util.FormatError(`invalid object number in the ObjStm stream: ${num}`); - } - - const offset = parser.getObj(); - - if (!Number.isInteger(offset)) { - throw new _util.FormatError(`invalid object offset in the ObjStm stream: ${offset}`); - } - - nums[i] = num; - offsets[i] = offset; - } - - const start = (stream.start || 0) + first; - const entries = new Array(n); - - for (let i = 0; i < n; ++i) { - const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined; - - if (length < 0) { - throw new _util.FormatError("Invalid offset in the ObjStm stream."); - } - - parser = new _parser.Parser({ - lexer: new _parser.Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)), - xref: this, - allowStreams: true - }); - const obj = parser.getObj(); - entries[i] = obj; - - if (obj instanceof _base_stream.BaseStream) { - continue; - } - - const num = nums[i], - entry = this.entries[num]; - - if (entry && entry.offset === tableOffset && entry.gen === i) { - this._cacheMap.set(num, obj); - } - } - - xrefEntry = entries[xrefEntry.gen]; - - if (xrefEntry === undefined) { - throw new _core_utils.XRefEntryException(`Bad (compressed) XRef entry: ${ref}`); - } - - return xrefEntry; - } - - async fetchIfRefAsync(obj, suppressEncryption) { - if (obj instanceof _primitives.Ref) { - return this.fetchAsync(obj, suppressEncryption); - } - - return obj; - } - - async fetchAsync(ref, suppressEncryption) { - try { - return this.fetch(ref, suppressEncryption); - } catch (ex) { - if (!(ex instanceof _core_utils.MissingDataException)) { - throw ex; - } - - await this.pdfManager.requestRange(ex.begin, ex.end); - return this.fetchAsync(ref, suppressEncryption); - } - } - - getCatalogObj() { - return this.root; - } - -} - -exports.XRef = XRef; - -/***/ }), -/* 102 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MessageHandler = void 0; - -var _util = __w_pdfjs_require__(2); - -const CallbackKind = { - UNKNOWN: 0, - DATA: 1, - ERROR: 2 -}; -const StreamKind = { - UNKNOWN: 0, - CANCEL: 1, - CANCEL_COMPLETE: 2, - CLOSE: 3, - ENQUEUE: 4, - ERROR: 5, - PULL: 6, - PULL_COMPLETE: 7, - START_COMPLETE: 8 -}; - -function wrapReason(reason) { - if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { - (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); - } - - switch (reason.name) { - case "AbortException": - return new _util.AbortException(reason.message); - - case "MissingPDFException": - return new _util.MissingPDFException(reason.message); - - case "PasswordException": - return new _util.PasswordException(reason.message, reason.code); - - case "UnexpectedResponseException": - return new _util.UnexpectedResponseException(reason.message, reason.status); - - case "UnknownErrorException": - return new _util.UnknownErrorException(reason.message, reason.details); - - default: - return new _util.UnknownErrorException(reason.message, reason.toString()); - } -} - -class MessageHandler { - constructor(sourceName, targetName, comObj) { - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackId = 1; - this.streamId = 1; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - this.callbackCapabilities = Object.create(null); - this.actionHandler = Object.create(null); - - this._onComObjOnMessage = event => { - const data = event.data; - - if (data.targetName !== this.sourceName) { - return; - } - - if (data.stream) { - this._processStreamMessage(data); - - return; - } - - if (data.callback) { - const callbackId = data.callbackId; - const capability = this.callbackCapabilities[callbackId]; - - if (!capability) { - throw new Error(`Cannot resolve callback ${callbackId}`); - } - - delete this.callbackCapabilities[callbackId]; - - if (data.callback === CallbackKind.DATA) { - capability.resolve(data.data); - } else if (data.callback === CallbackKind.ERROR) { - capability.reject(wrapReason(data.reason)); - } else { - throw new Error("Unexpected callback case"); - } - - return; - } - - const action = this.actionHandler[data.action]; - - if (!action) { - throw new Error(`Unknown action from worker: ${data.action}`); - } - - if (data.callbackId) { - const cbSourceName = this.sourceName; - const cbTargetName = data.sourceName; - new Promise(function (resolve) { - resolve(action(data.data)); - }).then(function (result) { - comObj.postMessage({ - sourceName: cbSourceName, - targetName: cbTargetName, - callback: CallbackKind.DATA, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - comObj.postMessage({ - sourceName: cbSourceName, - targetName: cbTargetName, - callback: CallbackKind.ERROR, - callbackId: data.callbackId, - reason: wrapReason(reason) - }); - }); - return; - } - - if (data.streamId) { - this._createStreamSink(data); - - return; - } - - action(data.data); - }; - - comObj.addEventListener("message", this._onComObjOnMessage); - } - - on(actionName, handler) { - const ah = this.actionHandler; - - if (ah[actionName]) { - throw new Error(`There is already an actionName called "${actionName}"`); - } - - ah[actionName] = handler; - } - - send(actionName, data, transfers) { - this.comObj.postMessage({ - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data - }, transfers); - } - - sendWithPromise(actionName, data, transfers) { - const callbackId = this.callbackId++; - const capability = (0, _util.createPromiseCapability)(); - this.callbackCapabilities[callbackId] = capability; - - try { - this.comObj.postMessage({ - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - callbackId, - data - }, transfers); - } catch (ex) { - capability.reject(ex); - } - - return capability.promise; - } - - sendWithStream(actionName, data, queueingStrategy, transfers) { - const streamId = this.streamId++, - sourceName = this.sourceName, - targetName = this.targetName, - comObj = this.comObj; - return new ReadableStream({ - start: controller => { - const startCapability = (0, _util.createPromiseCapability)(); - this.streamControllers[streamId] = { - controller, - startCall: startCapability, - pullCall: null, - cancelCall: null, - isClosed: false - }; - comObj.postMessage({ - sourceName, - targetName, - action: actionName, - streamId, - data, - desiredSize: controller.desiredSize - }, transfers); - return startCapability.promise; - }, - pull: controller => { - const pullCapability = (0, _util.createPromiseCapability)(); - this.streamControllers[streamId].pullCall = pullCapability; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL, - streamId, - desiredSize: controller.desiredSize - }); - return pullCapability.promise; - }, - cancel: reason => { - (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); - const cancelCapability = (0, _util.createPromiseCapability)(); - this.streamControllers[streamId].cancelCall = cancelCapability; - this.streamControllers[streamId].isClosed = true; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CANCEL, - streamId, - reason: wrapReason(reason) - }); - return cancelCapability.promise; - } - }, queueingStrategy); - } - - _createStreamSink(data) { - const streamId = data.streamId, - sourceName = this.sourceName, - targetName = data.sourceName, - comObj = this.comObj; - const self = this, - action = this.actionHandler[data.action]; - const streamSink = { - enqueue(chunk, size = 1, transfers) { - if (this.isCancelled) { - return; - } - - const lastDesiredSize = this.desiredSize; - this.desiredSize -= size; - - if (lastDesiredSize > 0 && this.desiredSize <= 0) { - this.sinkCapability = (0, _util.createPromiseCapability)(); - this.ready = this.sinkCapability.promise; - } - - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.ENQUEUE, - streamId, - chunk - }, transfers); - }, - - close() { - if (this.isCancelled) { - return; - } - - this.isCancelled = true; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CLOSE, - streamId - }); - delete self.streamSinks[streamId]; - }, - - error(reason) { - (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); - - if (this.isCancelled) { - return; - } - - this.isCancelled = true; - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.ERROR, - streamId, - reason: wrapReason(reason) - }); - }, - - sinkCapability: (0, _util.createPromiseCapability)(), - onPull: null, - onCancel: null, - isCancelled: false, - desiredSize: data.desiredSize, - ready: null - }; - streamSink.sinkCapability.resolve(); - streamSink.ready = streamSink.sinkCapability.promise; - this.streamSinks[streamId] = streamSink; - new Promise(function (resolve) { - resolve(action(data.data, streamSink)); - }).then(function () { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.START_COMPLETE, - streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.START_COMPLETE, - streamId, - reason: wrapReason(reason) - }); - }); - } - - _processStreamMessage(data) { - const streamId = data.streamId, - sourceName = this.sourceName, - targetName = data.sourceName, - comObj = this.comObj; - const streamController = this.streamControllers[streamId], - streamSink = this.streamSinks[streamId]; - - switch (data.stream) { - case StreamKind.START_COMPLETE: - if (data.success) { - streamController.startCall.resolve(); - } else { - streamController.startCall.reject(wrapReason(data.reason)); - } - - break; - - case StreamKind.PULL_COMPLETE: - if (data.success) { - streamController.pullCall.resolve(); - } else { - streamController.pullCall.reject(wrapReason(data.reason)); - } - - break; - - case StreamKind.PULL: - if (!streamSink) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL_COMPLETE, - streamId, - success: true - }); - break; - } - - if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { - streamSink.sinkCapability.resolve(); - } - - streamSink.desiredSize = data.desiredSize; - new Promise(function (resolve) { - resolve(streamSink.onPull && streamSink.onPull()); - }).then(function () { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL_COMPLETE, - streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.PULL_COMPLETE, - streamId, - reason: wrapReason(reason) - }); - }); - break; - - case StreamKind.ENQUEUE: - (0, _util.assert)(streamController, "enqueue should have stream controller"); - - if (streamController.isClosed) { - break; - } - - streamController.controller.enqueue(data.chunk); - break; - - case StreamKind.CLOSE: - (0, _util.assert)(streamController, "close should have stream controller"); - - if (streamController.isClosed) { - break; - } - - streamController.isClosed = true; - streamController.controller.close(); - - this._deleteStreamController(streamController, streamId); - - break; - - case StreamKind.ERROR: - (0, _util.assert)(streamController, "error should have stream controller"); - streamController.controller.error(wrapReason(data.reason)); - - this._deleteStreamController(streamController, streamId); - - break; - - case StreamKind.CANCEL_COMPLETE: - if (data.success) { - streamController.cancelCall.resolve(); - } else { - streamController.cancelCall.reject(wrapReason(data.reason)); - } - - this._deleteStreamController(streamController, streamId); - - break; - - case StreamKind.CANCEL: - if (!streamSink) { - break; - } - - new Promise(function (resolve) { - resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); - }).then(function () { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CANCEL_COMPLETE, - streamId, - success: true - }); - }, function (reason) { - comObj.postMessage({ - sourceName, - targetName, - stream: StreamKind.CANCEL_COMPLETE, - streamId, - reason: wrapReason(reason) - }); - }); - streamSink.sinkCapability.reject(wrapReason(data.reason)); - streamSink.isCancelled = true; - delete this.streamSinks[streamId]; - break; - - default: - throw new Error("Unexpected stream case"); - } - } - - async _deleteStreamController(streamController, streamId) { - await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); - delete this.streamControllers[streamId]; - } - - destroy() { - this.comObj.removeEventListener("message", this._onComObjOnMessage); - } - -} - -exports.MessageHandler = MessageHandler; - -/***/ }), -/* 103 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFWorkerStream = void 0; - -var _util = __w_pdfjs_require__(2); - -class PDFWorkerStream { - constructor(msgHandler) { - this._msgHandler = msgHandler; - this._contentLength = null; - this._fullRequestReader = null; - this._rangeRequestReaders = []; - } - - getFullReader() { - (0, _util.assert)(!this._fullRequestReader, "PDFWorkerStream.getFullReader can only be called once."); - this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler); - return this._fullRequestReader; - } - - getRangeReader(begin, end) { - const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler); - - this._rangeRequestReaders.push(reader); - - return reader; - } - - cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - - for (const reader of this._rangeRequestReaders.slice(0)) { - reader.cancel(reason); - } - } - -} - -exports.PDFWorkerStream = PDFWorkerStream; - -class PDFWorkerStreamReader { - constructor(msgHandler) { - this._msgHandler = msgHandler; - this.onProgress = null; - this._contentLength = null; - this._isRangeSupported = false; - this._isStreamingSupported = false; - - const readableStream = this._msgHandler.sendWithStream("GetReader"); - - this._reader = readableStream.getReader(); - this._headersReady = this._msgHandler.sendWithPromise("ReaderHeadersReady").then(data => { - this._isStreamingSupported = data.isStreamingSupported; - this._isRangeSupported = data.isRangeSupported; - this._contentLength = data.contentLength; - }); - } - - get headersReady() { - return this._headersReady; - } - - get contentLength() { - return this._contentLength; - } - - get isStreamingSupported() { - return this._isStreamingSupported; - } - - get isRangeSupported() { - return this._isRangeSupported; - } - - async read() { - const { - value, - done - } = await this._reader.read(); - - if (done) { - return { - value: undefined, - done: true - }; - } - - return { - value: value.buffer, - done: false - }; - } - - cancel(reason) { - this._reader.cancel(reason); - } - -} - -class PDFWorkerStreamRangeReader { - constructor(begin, end, msgHandler) { - this._msgHandler = msgHandler; - this.onProgress = null; - - const readableStream = this._msgHandler.sendWithStream("GetRangeReader", { - begin, - end - }); - - this._reader = readableStream.getReader(); - } - - get isStreamingSupported() { - return false; - } - - async read() { - const { - value, - done - } = await this._reader.read(); - - if (done) { - return { - value: undefined, - done: true - }; - } - - return { - value: value.buffer, - done: false - }; - } - - cancel(reason) { - this._reader.cancel(reason); - } - -} - -/***/ }) -/******/ ]); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.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 }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. -(() => { -var exports = __webpack_exports__; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "WorkerMessageHandler", ({ - enumerable: true, - get: function () { - return _worker.WorkerMessageHandler; - } -})); - -var _worker = __w_pdfjs_require__(1); - -const pdfjsVersion = '2.14.305'; -const pdfjsBuild = 'eaaa8b4ad'; -})(); - -/******/ return __webpack_exports__; -/******/ })() -; -}); \ No newline at end of file diff --git a/resources/js/pdfjs/pdf.worker.min.js b/resources/js/pdfjs/pdf.worker.min.js deleted file mode 100644 index d0fe8a33a560..000000000000 --- a/resources/js/pdfjs/pdf.worker.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * JavaScript code in this page - * - * Copyright 2022 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(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf.worker",[],t):"object"==typeof exports?exports["pdfjs-dist/build/pdf.worker"]=t():e["pdfjs-dist/build/pdf.worker"]=e.pdfjsWorker=t()}(this,(()=>(()=>{"use strict";var e=[,(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.WorkerTask=t.WorkerMessageHandler=void 0;var r=a(2),n=a(5),i=a(6),s=a(67),o=a(73),c=a(4),l=a(102),h=a(103),u=a(8);class WorkerTask{constructor(e){this.name=e;this.terminated=!1;this._capability=(0,r.createPromiseCapability)()}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}t.WorkerTask=WorkerTask;class WorkerMessageHandler{static setup(e,t){let a=!1;e.on("test",(function wphSetupTest(t){if(!a){a=!0;e.send("test",t instanceof Uint8Array)}}));e.on("configure",(function wphConfigure(e){(0,r.setVerbosityLevel)(e.verbosity)}));e.on("GetDocRequest",(function wphSetupDoc(e){return WorkerMessageHandler.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let a,d=!1,f=null;const g=[],p=(0,r.getVerbosityLevel)(),m=e.apiVersion,b="2.14.305";if(m!==b)throw new Error(`The API version "${m}" does not match the Worker version "2.14.305".`);const y=[];for(const e in[])y.push(e);if(y.length)throw new Error("The `Array.prototype` contains unexpected enumerable properties: "+y.join(", ")+"; thus breaking e.g. `for...in` iteration of `Array`s.");if("undefined"==typeof ReadableStream){const e="The browser/environment lacks native support for critical functionality used by the PDF.js library (e.g. `ReadableStream`); ";if(c.isNodeJS)throw new Error(e+"please use a `legacy`-build instead.");throw new Error(e+"please update to a supported browser.")}const w=e.docId,S=e.docBaseUrl,x=e.docId+"_worker";let k=new l.MessageHandler(x,w,t);function ensureNotTerminated(){if(d)throw new Error("Worker was terminated")}function startWorkerTask(e){g.push(e)}function finishWorkerTask(e){e.finish();const t=g.indexOf(e);g.splice(t,1)}async function loadDocument(e){await a.ensureDoc("checkHeader");await a.ensureDoc("parseStartXRef");await a.ensureDoc("parse",[e]);await a.ensureDoc("checkFirstPage",[e]);await a.ensureDoc("checkLastPage",[e]);const t=await a.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaFonts");startWorkerTask(e);await Promise.all([a.loadXfaFonts(k,e).catch((e=>{})).then((()=>finishWorkerTask(e))),a.loadXfaImages()])}const[r,n]=await Promise.all([a.ensureDoc("numPages"),a.ensureDoc("fingerprints")]);return{numPages:r,fingerprints:n,htmlForXfa:t?await a.ensureDoc("htmlForXfa"):null}}function getPdfManager(e,t,a){const n=(0,r.createPromiseCapability)();let s;const o=e.source;if(o.data){try{s=new i.LocalPdfManager(w,o.data,o.password,k,t,a,S);n.resolve(s)}catch(e){n.reject(e)}return n.promise}let c,l=[];try{c=new h.PDFWorkerStream(k)}catch(e){n.reject(e);return n.promise}const u=c.getFullReader();u.headersReady.then((function(){if(!u.isRangeSupported)return;const e=o.disableAutoFetch||u.isStreamingSupported;s=new i.NetworkPdfManager(w,c,{msgHandler:k,password:o.password,length:u.contentLength,disableAutoFetch:e,rangeChunkSize:o.rangeChunkSize},t,a,S);for(let e=0;enull!==e)).reduce(((e,t)=>e.concat(t)),u);if(0===u.length)return t.bytes}const f=a instanceof n.Dict&&a.get("XFA")||null;let g=null,p=!1;if(Array.isArray(f)){for(let e=0,t=f.length;e{"string"==typeof a&&(e[t]=(0,r.stringToPDFString)(a))}));m={rootRef:c.trailer.getRaw("Root")||null,encryptRef:c.trailer.getRaw("Encrypt")||null,newRef:c.getNewRef(),infoRef:c.trailer.getRaw("Info")||null,info:e,fileIds:c.trailer.get("ID")||null,startXRef:l,filename:s}}c.resetNewRef();return(0,o.incrementalUpdate)({originalData:t.bytes,xrefInfo:m,newRefs:u,xref:c,hasXfa:!!f,xfaDatasetsRef:g,hasXfaDatasetsEntry:p,acroFormRef:i,acroForm:a,xfaData:d})}))}));k.on("GetOperatorList",(function wphSetupRenderPage(e,t){const n=e.pageIndex;a.getPage(n).then((function(a){const i=new WorkerTask(`GetOperatorList: page ${n}`);startWorkerTask(i);const s=p>=r.VerbosityLevel.INFOS?Date.now():0;a.getOperatorList({handler:k,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){finishWorkerTask(i);s&&(0,r.info)(`page=${n+1} - getOperatorList: time=${Date.now()-s}ms, len=${e.length}`);t.close()}),(function(e){finishWorkerTask(i);if(!i.terminated){k.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorOperatorList});t.error(e)}}))}))}));k.on("GetTextContent",(function wphExtractText(e,t){const n=e.pageIndex;a.getPage(n).then((function(a){const i=new WorkerTask("GetTextContent: page "+n);startWorkerTask(i);const s=p>=r.VerbosityLevel.INFOS?Date.now():0;a.extractTextContent({handler:k,task:i,sink:t,includeMarkedContent:e.includeMarkedContent,combineTextItems:e.combineTextItems}).then((function(){finishWorkerTask(i);s&&(0,r.info)(`page=${n+1} - getTextContent: time=`+(Date.now()-s)+"ms");t.close()}),(function(e){finishWorkerTask(i);i.terminated||t.error(e)}))}))}));k.on("GetStructTree",(function wphGetStructTree(e){return a.getPage(e.pageIndex).then((function(e){return a.ensure(e,"getStructTree")}))}));k.on("FontFallback",(function(e){return a.fontFallback(e.id,k)}));k.on("Cleanup",(function wphCleanup(e){return a.cleanup(!0)}));k.on("Terminate",(function wphTerminate(e){d=!0;const t=[];if(a){a.terminate(new r.AbortException("Worker was terminated."));const e=a.cleanup();t.push(e);a=null}else(0,s.clearGlobalCaches)();f&&f(new r.AbortException("Worker was terminated."));for(const e of g){t.push(e.finished);e.terminate()}return Promise.all(t).then((function(){k.destroy();k=null}))}));k.on("Ready",(function wphReady(t){!function setupDoc(e){function onSuccess(e){ensureNotTerminated();k.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof r.PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);k.sendWithPromise("PasswordRequest",e).then((function({password:e}){finishWorkerTask(t);a.updatePassword(e);pdfManagerReady()})).catch((function(){finishWorkerTask(t);k.send("DocException",e)}))}else e instanceof r.InvalidPDFException||e instanceof r.MissingPDFException||e instanceof r.UnexpectedResponseException||e instanceof r.UnknownErrorException?k.send("DocException",e):k.send("DocException",new r.UnknownErrorException(e.message,e.toString()))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,(function(e){ensureNotTerminated();if(e instanceof u.XRefParseException){a.requestLoadedStream();a.onLoadedStream().then((function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)}))}else onFailure(e)}))}ensureNotTerminated();getPdfManager(e,{maxImageSize:e.maxImageSize,disableFontFace:e.disableFontFace,ignoreErrors:e.ignoreErrors,isEvalSupported:e.isEvalSupported,fontExtraProperties:e.fontExtraProperties,useSystemFonts:e.useSystemFonts,cMapUrl:e.cMapUrl,standardFontDataUrl:e.standardFontDataUrl},e.enableXfa).then((function(e){if(d){e.terminate(new r.AbortException("Worker was terminated."));throw new Error("Worker was terminated")}a=e;a.onLoadedStream().then((function(e){k.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(pdfManagerReady,onFailure)}(e);e=null}));return x}static initializeFromPort(e){const t=new l.MessageHandler("worker","main",e);WorkerMessageHandler.setup(t,e);t.send("ready",null)}}t.WorkerMessageHandler=WorkerMessageHandler;"undefined"==typeof window&&!c.isNodeJS&&"undefined"!=typeof self&&function isMessagePort(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&WorkerMessageHandler.initializeFromPort(self)},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.VerbosityLevel=t.Util=t.UnknownErrorException=t.UnexpectedResponseException=t.UNSUPPORTED_FEATURES=t.TextRenderingMode=t.StreamType=t.RenderingIntentFlag=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FontType=t.FeatureTest=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.AnnotationType=t.AnnotationStateModelType=t.AnnotationReviewState=t.AnnotationReplyType=t.AnnotationMode=t.AnnotationMarkedState=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0;t.arrayByteLength=arrayByteLength;t.arraysToBytes=function arraysToBytes(e){const t=e.length;if(1===t&&e[0]instanceof Uint8Array)return e[0];let a=0;for(let r=0;rt});e.promise=new Promise((function(a,r){e.resolve=function(e){t=!0;a(e)};e.reject=function(e){t=!0;r(e)}}));return e};t.createValidAbsoluteUrl=function createValidAbsoluteUrl(e,t=null,a=null){if(!e)return null;try{if(a&&"string"==typeof e){if(a.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t&&t.length>=2&&(e=`http://${e}`)}if(a.tryConvertEncoding)try{e=stringToUTF8String(e)}catch(e){}}const r=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){if(!e)return!1;switch(e.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(r))return r}catch(e){}return null};t.escapeString=function escapeString(e){return e.replace(/([()\\\n\r])/g,(e=>"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))};t.getModificationDate=function getModificationDate(e=new Date){return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")};t.getVerbosityLevel=function getVerbosityLevel(){return n};t.info=function info(e){n>=r.INFOS&&console.log(`Info: ${e}`)};t.isArrayBuffer=function isArrayBuffer(e){return"object"==typeof e&&null!==e&&void 0!==e.byteLength};t.isArrayEqual=function isArrayEqual(e,t){if(e.length!==t.length)return!1;for(let a=0,r=e.length;a>24&255,e>>16&255,e>>8&255,255&e)};t.stringToBytes=stringToBytes;t.stringToPDFString=function stringToPDFString(e){if(e[0]>="ï"){let t;"þ"===e[0]&&"ÿ"===e[1]?t="utf-16be":"ÿ"===e[0]&&"þ"===e[1]?t="utf-16le":"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8");if(t)try{const a=new TextDecoder(t,{fatal:!0}),r=stringToBytes(e);return a.decode(r)}catch(e){warn(`stringToPDFString: "${e}".`)}}const t=[];for(let a=0,r=e.length;a>8&255),String.fromCharCode(255&r))}return t.join("")};t.stringToUTF8String=stringToUTF8String;t.unreachable=unreachable;t.utf8StringToString=function utf8StringToString(e){return unescape(encodeURIComponent(e))};t.warn=warn;a(3);t.IDENTITY_MATRIX=[1,0,0,1,0,0];t.FONT_IDENTITY_MATRIX=[.001,0,0,.001,0,0];t.RenderingIntentFlag={ANY:1,DISPLAY:2,PRINT:4,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,OPLIST:256};t.AnnotationMode={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3};t.PermissionFlag={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048};t.TextRenderingMode={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4};t.ImageKind={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3};t.AnnotationType={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26};t.AnnotationStateModelType={MARKED:"Marked",REVIEW:"Review"};t.AnnotationMarkedState={MARKED:"Marked",UNMARKED:"Unmarked"};t.AnnotationReviewState={ACCEPTED:"Accepted",REJECTED:"Rejected",CANCELLED:"Cancelled",COMPLETED:"Completed",NONE:"None"};t.AnnotationReplyType={GROUP:"Group",REPLY:"R"};t.AnnotationFlag={INVISIBLE:1,HIDDEN:2,PRINT:4,NOZOOM:8,NOROTATE:16,NOVIEW:32,READONLY:64,LOCKED:128,TOGGLENOVIEW:256,LOCKEDCONTENTS:512};t.AnnotationFieldFlag={READONLY:1,REQUIRED:2,NOEXPORT:4,MULTILINE:4096,PASSWORD:8192,NOTOGGLETOOFF:16384,RADIO:32768,PUSHBUTTON:65536,COMBO:131072,EDIT:262144,SORT:524288,FILESELECT:1048576,MULTISELECT:2097152,DONOTSPELLCHECK:4194304,DONOTSCROLL:8388608,COMB:16777216,RICHTEXT:33554432,RADIOSINUNISON:33554432,COMMITONSELCHANGE:67108864};t.AnnotationBorderStyleType={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5};t.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"};t.DocumentActionEventType={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"};t.PageActionEventType={O:"PageOpen",C:"PageClose"};t.StreamType={UNKNOWN:"UNKNOWN",FLATE:"FLATE",LZW:"LZW",DCT:"DCT",JPX:"JPX",JBIG:"JBIG",A85:"A85",AHX:"AHX",CCF:"CCF",RLX:"RLX"};t.FontType={UNKNOWN:"UNKNOWN",TYPE1:"TYPE1",TYPE1STANDARD:"TYPE1STANDARD",TYPE1C:"TYPE1C",CIDFONTTYPE0:"CIDFONTTYPE0",CIDFONTTYPE0C:"CIDFONTTYPE0C",TRUETYPE:"TRUETYPE",CIDFONTTYPE2:"CIDFONTTYPE2",TYPE3:"TYPE3",OPENTYPE:"OPENTYPE",TYPE0:"TYPE0",MMTYPE1:"MMTYPE1"};const r={ERRORS:0,WARNINGS:1,INFOS:5};t.VerbosityLevel=r;t.CMapCompressionType={NONE:0,BINARY:1,STREAM:2};t.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotations:78,endAnnotations:79,beginAnnotation:80,endAnnotation:81,paintJpegXObject:82,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91};t.UNSUPPORTED_FEATURES={unknown:"unknown",forms:"forms",javaScript:"javaScript",signatures:"signatures",smask:"smask",shadingPattern:"shadingPattern",font:"font",errorTilingPattern:"errorTilingPattern",errorExtGState:"errorExtGState",errorXObject:"errorXObject",errorFontLoadType3:"errorFontLoadType3",errorFontState:"errorFontState",errorFontMissing:"errorFontMissing",errorFontTranslate:"errorFontTranslate",errorColorSpace:"errorColorSpace",errorOperatorList:"errorOperatorList",errorFontToUnicode:"errorFontToUnicode",errorFontLoadNative:"errorFontLoadNative",errorFontBuildPath:"errorFontBuildPath",errorFontGetPath:"errorFontGetPath",errorMarkedContent:"errorMarkedContent",errorContentSubStream:"errorContentSubStream"};t.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let n=r.WARNINGS;function warn(e){n>=r.WARNINGS&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function shadow(e,t,a){Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!1});return a}const i=function BaseExceptionClosure(){function BaseException(e,t){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();t.BaseException=i;t.PasswordException=class PasswordException extends i{constructor(e,t){super(e,"PasswordException");this.code=t}};t.UnknownErrorException=class UnknownErrorException extends i{constructor(e,t){super(e,"UnknownErrorException");this.details=t}};t.InvalidPDFException=class InvalidPDFException extends i{constructor(e){super(e,"InvalidPDFException")}};t.MissingPDFException=class MissingPDFException extends i{constructor(e){super(e,"MissingPDFException")}};t.UnexpectedResponseException=class UnexpectedResponseException extends i{constructor(e,t){super(e,"UnexpectedResponseException");this.status=t}};t.FormatError=class FormatError extends i{constructor(e){super(e,"FormatError")}};t.AbortException=class AbortException extends i{constructor(e){super(e,"AbortException")}};function stringToBytes(e){"string"!=typeof e&&unreachable("Invalid argument for stringToBytes");const t=e.length,a=new Uint8Array(t);for(let r=0;re.toString(16).padStart(2,"0")));class Util{static makeHexColor(e,t,a){return`#${s[e]}${s[t]}${s[a]}`}static scaleMinMax(e,t){let a;if(e[0]){if(e[0]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[0];t[1]*=e[0];if(e[3]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[3];t[3]*=e[3]}else{a=t[0];t[0]=t[2];t[2]=a;a=t[1];t[1]=t[3];t[3]=a;if(e[1]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[1];t[3]*=e[1];if(e[2]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[2];t[1]*=e[2]}t[0]+=e[4];t[1]+=e[4];t[2]+=e[5];t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const a=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/a,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/a]}static getAxialAlignedBoundingBox(e,t){const a=Util.applyTransform(e,t),r=Util.applyTransform(e.slice(2,4),t),n=Util.applyTransform([e[0],e[3]],t),i=Util.applyTransform([e[2],e[1]],t);return[Math.min(a[0],r[0],n[0],i[0]),Math.min(a[1],r[1],n[1],i[1]),Math.max(a[0],r[0],n[0],i[0]),Math.max(a[1],r[1],n[1],i[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static apply3dTransform(e,t){return[e[0]*t[0]+e[1]*t[1]+e[2]*t[2],e[3]*t[0]+e[4]*t[1]+e[5]*t[2],e[6]*t[0]+e[7]*t[1]+e[8]*t[2]]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],a=e[0]*t[0]+e[1]*t[2],r=e[0]*t[1]+e[1]*t[3],n=e[2]*t[0]+e[3]*t[2],i=e[2]*t[1]+e[3]*t[3],s=(a+i)/2,o=Math.sqrt((a+i)**2-4*(a*i-n*r))/2,c=s+o||1,l=s-o||1;return[Math.sqrt(c),Math.sqrt(l)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){const a=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),r=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(a>r)return null;const n=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),i=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return n>i?null:[a,n,r,i]}static bezierBoundingBox(e,t,a,r,n,i,s,o){const c=[],l=[[],[]];let h,u,d,f,g,p,m,b;for(let l=0;l<2;++l){if(0===l){u=6*e-12*a+6*n;h=-3*e+9*a-9*n+3*s;d=3*a-3*e}else{u=6*t-12*r+6*i;h=-3*t+9*r-9*i+3*o;d=3*r-3*t}if(Math.abs(h)<1e-12){if(Math.abs(u)<1e-12)continue;f=-d/u;0{a(4)},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.isNodeJS=void 0;const a=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type);t.isNodeJS=a},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.RefSetCache=t.RefSet=t.Ref=t.Name=t.EOF=t.Dict=t.Cmd=t.CIRCULAR_REF=void 0;t.clearPrimitiveCaches=function clearPrimitiveCaches(){o._clearCache();s._clearCache();l._clearCache()};t.isCmd=function isCmd(e,t){return e instanceof o&&(void 0===t||e.cmd===t)};t.isDict=function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))};t.isName=isName;t.isRefsEqual=function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen};var r=a(2);const n=Symbol("CIRCULAR_REF");t.CIRCULAR_REF=n;const i=Symbol("EOF");t.EOF=i;const s=function NameClosure(){let e=Object.create(null);class Name{constructor(e){this.name=e}static get(t){const a=e[t];return a||(e[t]=new Name(t))}static _clearCache(){e=Object.create(null)}}return Name}();t.Name=s;const o=function CmdClosure(){let e=Object.create(null);class Cmd{constructor(e){this.cmd=e}static get(t){const a=e[t];return a||(e[t]=new Cmd(t))}static _clearCache(){e=Object.create(null)}}return Cmd}();t.Cmd=o;const c=function nonSerializableClosure(){return c};class Dict{constructor(e=null){this._map=Object.create(null);this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=c}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof l&&this.xref?this.xref.fetch(r,this.suppressEncryption):r}async getAsync(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof l&&this.xref?this.xref.fetchAsync(r,this.suppressEncryption):r}getArray(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}r instanceof l&&this.xref&&(r=this.xref.fetch(r,this.suppressEncryption));if(Array.isArray(r)){r=r.slice();for(let e=0,t=r.length;e{(0,r.unreachable)("Should not call `set` on the empty dictionary.")};return(0,r.shadow)(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:a=!1}){const r=new Dict(e),n=new Map;for(const e of t)if(e instanceof Dict)for(const[t,r]of Object.entries(e._map)){let e=n.get(t);if(void 0===e){e=[];n.set(t,e)}else if(!(a&&r instanceof Dict))continue;e.push(r)}for(const[t,a]of n){if(1===a.length||!(a[0]instanceof Dict)){r._map[t]=a[0];continue}const n=new Dict(e);for(const e of a)for(const[t,a]of Object.entries(e._map))void 0===n._map[t]&&(n._map[t]=a);n.size>0&&(r._map[t]=n)}n.clear();return r.size>0?r:Dict.empty}}t.Dict=Dict;const l=function RefClosure(){let e=Object.create(null);class Ref{constructor(e,t){this.num=e;this.gen=t}toString(){return 0===this.gen?`${this.num}R`:`${this.num}R${this.gen}`}static get(t,a){const r=0===a?`${t}R`:`${t}R${a}`,n=e[r];return n||(e[r]=new Ref(t,a))}static _clearCache(){e=Object.create(null)}}return Ref}();t.Ref=l;class RefSet{constructor(e=null){this._set=new Set(e&&e._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}t.RefSet=RefSet;class RefSetCache{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}}t.RefSetCache=RefSetCache;function isName(e,t){return e instanceof s&&(void 0===t||e.name===t)}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NetworkPdfManager=t.LocalPdfManager=void 0;var r=a(2),n=a(7),i=a(8),s=a(11),o=a(10);function parseDocBaseUrl(e){if(e){const t=(0,r.createValidAbsoluteUrl)(e);if(t)return t.href;(0,r.warn)(`Invalid absolute docBaseUrl: "${e}".`)}return null}class BasePdfManager{constructor(){this.constructor===BasePdfManager&&(0,r.unreachable)("Cannot initialize BasePdfManager.")}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){const e=this.pdfDocument.catalog;return(0,r.shadow)(this,"docBaseUrl",e.baseUrl||this._docBaseUrl)}onLoadedStream(){(0,r.unreachable)("Abstract method `onLoadedStream` called")}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,a){(0,r.unreachable)("Abstract method `ensure` called")}requestRange(e,t){(0,r.unreachable)("Abstract method `requestRange` called")}requestLoadedStream(){(0,r.unreachable)("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){(0,r.unreachable)("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e}terminate(e){(0,r.unreachable)("Abstract method `terminate` called")}}t.LocalPdfManager=class LocalPdfManager extends BasePdfManager{constructor(e,t,a,r,n,i,c){super();this._docId=e;this._password=a;this._docBaseUrl=parseDocBaseUrl(c);this.msgHandler=r;this.evaluatorOptions=n;this.enableXfa=i;const l=new o.Stream(t);this.pdfDocument=new s.PDFDocument(this,l);this._loadedStreamPromise=Promise.resolve(l)}async ensure(e,t,a){const r=e[t];return"function"==typeof r?r.apply(e,a):r}requestRange(e,t){return Promise.resolve()}requestLoadedStream(){}onLoadedStream(){return this._loadedStreamPromise}terminate(e){}};t.NetworkPdfManager=class NetworkPdfManager extends BasePdfManager{constructor(e,t,a,r,i,o){super();this._docId=e;this._password=a.password;this._docBaseUrl=parseDocBaseUrl(o);this.msgHandler=a.msgHandler;this.evaluatorOptions=r;this.enableXfa=i;this.streamManager=new n.ChunkedStreamManager(t,{msgHandler:a.msgHandler,length:a.length,disableAutoFetch:a.disableAutoFetch,rangeChunkSize:a.rangeChunkSize});this.pdfDocument=new s.PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,a){try{const r=e[t];return"function"==typeof r?r.apply(e,a):r}catch(r){if(!(r instanceof i.MissingDataException))throw r;await this.requestRange(r.begin,r.end);return this.ensure(e,t,a)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(){this.streamManager.requestAllChunks()}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}onLoadedStream(){return this.streamManager.onLoadedStream()}terminate(e){this.streamManager.abort(e)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ChunkedStreamManager=t.ChunkedStream=void 0;var r=a(2),n=a(8),i=a(10);class ChunkedStream extends i.Stream{constructor(e,t,a){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=a;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,a=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=a;ethis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new n.MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const a=Math.floor(e/this.chunkSize);if(a>this.numChunks)return;const r=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let i=a;i=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e){r>this.progressiveDataLength&&this.ensureRange(a,r);return t.subarray(a,r)}let n=a+e;n>r&&(n=r);n>this.progressiveDataLength&&this.ensureRange(a,n);this.pos=n;return t.subarray(a,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,a=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),a=Math.floor((this.end-1)/e)+1,r=[];for(let e=t;e{const readChunk=s=>{try{if(!s.done){const e=s.value;n.push(e);i+=(0,r.arrayByteLength)(e);a.isStreamingSupported&&this.onProgress({loaded:i});a.read().then(readChunk,t);return}const o=(0,r.arraysToBytes)(n);n=null;e(o)}catch(e){t(e)}};a.read().then(readChunk,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(){const e=this.stream.getMissingChunks();this._requestChunks(e);return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,a=new Set;this._chunksNeededByRequest.set(t,a);for(const t of e)this.stream.hasChunk(t)||a.add(t);if(0===a.size)return Promise.resolve();const n=(0,r.createPromiseCapability)();this._promisesByRequest.set(t,n);const i=[];for(const e of a){let a=this._requestsByChunk.get(e);if(!a){a=[];this._requestsByChunk.set(e,a);i.push(e)}a.push(t)}if(i.length>0){const e=this.groupChunks(i);for(const t of e){const e=t.beginChunk*this.chunkSize,a=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,a).catch(n.reject)}}return n.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const a=this.getBeginChunk(e),r=this.getEndChunk(t),n=[];for(let e=a;e=0&&r+1!==i){t.push({beginChunk:a,endChunk:r+1});a=i}n+1===e.length&&t.push({beginChunk:a,endChunk:i+1});r=i}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,a=void 0===e.begin,r=a?this.progressiveDataLength:e.begin,n=r+t.byteLength,i=Math.floor(r/this.chunkSize),s=n0||o.push(a)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0;this.pdfNetworkStream&&this.pdfNetworkStream.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XRefParseException=t.XRefEntryException=t.ParserEOFException=t.MissingDataException=t.DocStats=void 0;t.collectActions=function collectActions(e,t,a){const i=Object.create(null),s=getInheritableProperty({dict:t,key:"AA",stopWhenFound:!1});if(s)for(let t=s.length-1;t>=0;t--){const r=s[t];if(r instanceof n.Dict)for(const t of r.getKeys()){const s=a[t];if(!s)continue;const o=r.getRaw(t),c=new n.RefSet,l=[];_collectJS(o,e,l,c);l.length>0&&(i[s]=l)}}if(t.has("A")){const a=t.get("A"),r=new n.RefSet,s=[];_collectJS(a,e,s,r);s.length>0&&(i.Action=s)}return(0,r.objectSize)(i)>0?i:null};t.encodeToXmlString=function encodeToXmlString(e){const t=[];let a=0;for(let r=0,n=e.length;r55295&&(n<57344||n>65533)&&r++;a=r+1}}if(0===t.length)return e;a126||35===n||40===n||41===n||60===n||62===n||91===n||93===n||123===n||125===n||47===n||37===n){a{const a=e.match(t);return a?{name:a[1],pos:parseInt(a[2],10)}:{name:e,pos:0}}))};t.readInt8=function readInt8(e,t){return e[t]<<24>>24};t.readUint16=function readUint16(e,t){return e[t]<<8|e[t+1]};t.readUint32=function readUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0};t.recoverJsURL=function recoverJsURL(e){const t=new RegExp("^\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").split(".").join("\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec(e);if(t&&t[2]){const e=t[2];let a=!1;"true"===t[3]&&"app.launchURL"===t[1]&&(a=!0);return{url:e,newWindow:a}}return null};t.toRomanNumerals=function toRomanNumerals(e,t=!1){(0,r.assert)(Number.isInteger(e)&&e>0,"The number should be a positive integer.");const a=[];let n;for(;e>=1e3;){e-=1e3;a.push("M")}n=e/100|0;e%=100;a.push(s[n]);n=e/10|0;e%=10;a.push(s[10+n]);a.push(s[20+e]);const i=a.join("");return t?i.toLowerCase():i};t.validateCSSFont=function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:a,fontWeight:n,italicAngle:i}=e;if(/^".*"$/.test(a)){if(/[^\\]"/.test(a.slice(1,a.length-1))){(0,r.warn)(`XFA - FontFamily contains some unescaped ": ${a}.`);return!1}}else if(/^'.*'$/.test(a)){if(/[^\\]'/.test(a.slice(1,a.length-1))){(0,r.warn)(`XFA - FontFamily contains some unescaped ': ${a}.`);return!1}}else for(const e of a.split(/[ \t]+/))if(/^(\d|(-(\d|-)))/.test(e)||!/^[\w-\\]+$/.test(e)){(0,r.warn)(`XFA - FontFamily contains some invalid : ${a}.`);return!1}const s=n?n.toString():"";e.fontWeight=t.has(s)?s:"400";const o=parseFloat(i);e.italicAngle=isNaN(o)||o<-90||o>90?"14":i.toString();return!0};var r=a(2),n=a(5),i=a(9);class MissingDataException extends r.BaseException{constructor(e,t){super(`Missing data [${e}, ${t})`,"MissingDataException");this.begin=e;this.end=t}}t.MissingDataException=MissingDataException;class ParserEOFException extends r.BaseException{constructor(e){super(e,"ParserEOFException")}}t.ParserEOFException=ParserEOFException;class XRefEntryException extends r.BaseException{constructor(e){super(e,"XRefEntryException")}}t.XRefEntryException=XRefEntryException;class XRefParseException extends r.BaseException{constructor(e){super(e,"XRefParseException")}}t.XRefParseException=XRefParseException;t.DocStats=class DocStats{constructor(e){this._handler=e;this._streamTypes=new Set;this._fontTypes=new Set}_send(){const e=Object.create(null),t=Object.create(null);for(const t of this._streamTypes)e[t]=!0;for(const e of this._fontTypes)t[e]=!0;this._handler.send("DocStats",{streamTypes:e,fontTypes:t})}addStreamType(e){if(!this._streamTypes.has(e)){this._streamTypes.add(e);this._send()}}addFontType(e){if(!this._fontTypes.has(e)){this._fontTypes.add(e);this._send()}}};function getInheritableProperty({dict:e,key:t,getArray:a=!1,stopWhenFound:r=!0}){let i;const s=new n.RefSet;for(;e instanceof n.Dict&&(!e.objId||!s.has(e.objId));){e.objId&&s.put(e.objId);const n=a?e.getArray(t):e.get(t);if(void 0!==n){if(r)return n;i||(i=[]);i.push(n)}e=e.get("Parent")}return i}const s=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];function _collectJS(e,t,a,s){if(!e)return;let o=null;if(e instanceof n.Ref){if(s.has(e))return;o=e;s.put(o);e=t.fetch(e)}if(Array.isArray(e))for(const r of e)_collectJS(r,t,a,s);else if(e instanceof n.Dict){if((0,n.isName)(e.get("S"),"JavaScript")){const t=e.get("JS");let n;t instanceof i.BaseStream?n=t.getString():"string"==typeof t&&(n=t);n=n&&(0,r.stringToPDFString)(n);n&&a.push(n)}_collectJS(e.getRaw("Next"),t,a,s)}o&&s.remove(o)}const o={60:"<",62:">",38:"&",34:""",39:"'"}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.BaseStream=void 0;var r=a(2);class BaseStream{constructor(){this.constructor===BaseStream&&(0,r.unreachable)("Cannot initialize BaseStream.")}get length(){(0,r.unreachable)("Abstract getter `length` accessed")}get isEmpty(){(0,r.unreachable)("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return(0,r.shadow)(this,"isDataLoaded",!0)}getByte(){(0,r.unreachable)("Abstract method `getByte` called")}getBytes(e){(0,r.unreachable)("Abstract method `getBytes` called")}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e){const t=this.getBytes(e);this.pos-=t.length;return t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){(0,r.unreachable)("Abstract method `getByteRange` called")}getString(e){return(0,r.bytesToString)(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){(0,r.unreachable)("Abstract method `reset` called")}moveStart(){(0,r.unreachable)("Abstract method `moveStart` called")}makeSubStream(e,t,a=null){(0,r.unreachable)("Abstract method `makeSubStream` called")}getBaseStreams(){return null}}t.BaseStream=BaseStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StringStream=t.Stream=t.NullStream=void 0;var r=a(9),n=a(2);class Stream extends r.BaseStream{constructor(e,t,a,r){super();this.bytes=e instanceof Uint8Array?e:new Uint8Array(e);this.start=t||0;this.pos=this.start;this.end=t+a||this.bytes.length;this.dict=r}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e)return t.subarray(a,r);let n=a+e;n>r&&(n=r);this.pos=n;return t.subarray(a,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,a=null){return new Stream(this.bytes.buffer,e,t,a)}}t.Stream=Stream;t.StringStream=class StringStream extends Stream{constructor(e){super((0,n.stringToBytes)(e))}};t.NullStream=class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Page=t.PDFDocument=void 0;var r=a(2),n=a(8),i=a(5),s=a(12),o=a(22),c=a(9),l=a(74),h=a(65),u=a(67),d=a(100),f=a(27),g=a(10),p=a(72),m=a(62),b=a(25),y=a(29),w=a(71),S=a(76),x=a(101);const k=[0,0,612,792];class Page{constructor({pdfManager:e,xref:t,pageIndex:a,pageDict:r,ref:n,globalIdFactory:i,fontCache:s,builtInCMapCache:o,standardFontDataCache:c,globalImageCache:l,nonBlendModesSet:h,xfaFactory:u}){this.pdfManager=e;this.pageIndex=a;this.pageDict=r;this.xref=t;this.ref=n;this.fontCache=s;this.builtInCMapCache=o;this.standardFontDataCache=c;this.globalImageCache=l;this.nonBlendModesSet=h;this.evaluatorOptions=e.evaluatorOptions;this.resourcesPromise=null;this.xfaFactory=u;const d={obj:0};this._localIdFactory=class extends i{static createObjId(){return`p${a}_${++d.obj}`}static getPageObjId(){return`page${n.toString()}`}}}_getInheritableProperty(e,t=!1){const a=(0,n.getInheritableProperty)({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(a)?1!==a.length&&a[0]instanceof i.Dict?i.Dict.merge({xref:this.xref,dictArray:a}):a[0]:a}get content(){return this.pageDict.getArray("Contents")}get resources(){return(0,r.shadow)(this,"resources",this._getInheritableProperty("Resources")||i.Dict.empty)}_getBoundingBox(e){if(this.xfaData)return this.xfaData.bbox;const t=this._getInheritableProperty(e,!0);if(Array.isArray(t)&&4===t.length){if(t[2]-t[0]!=0&&t[3]-t[1]!=0)return t;(0,r.warn)(`Empty /${e} entry.`)}return null}get mediaBox(){return(0,r.shadow)(this,"mediaBox",this._getBoundingBox("MediaBox")||k)}get cropBox(){return(0,r.shadow)(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");("number"!=typeof e||e<=0)&&(e=1);return(0,r.shadow)(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;let a;if(e===t||(0,r.isArrayEqual)(e,t))a=t;else{const n=r.Util.intersect(e,t);n&&n[2]-n[0]!=0&&n[3]-n[1]!=0?a=n:(0,r.warn)("Empty /CropBox and /MediaBox intersection.")}return(0,r.shadow)(this,"view",a||t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return(0,r.shadow)(this,"rotate",e)}_onSubStreamError(e,t,a){if(!this.evaluatorOptions.ignoreErrors)throw t;e.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorContentSubStream});(0,r.warn)(`getContentStream - ignoring sub-stream (${a}): "${t}".`)}getContentStream(e){return this.pdfManager.ensure(this,"content").then((t=>t instanceof c.BaseStream?t:Array.isArray(t)?new y.StreamsSequenceStream(t,this._onSubStreamError.bind(this,e)):new g.NullStream))}get xfaData(){return(0,r.shadow)(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}save(e,t,a){const n=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const i=[];for(const s of e)s.mustBePrinted(a)&&i.push(s.save(n,t,a).catch((function(e){(0,r.warn)(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null})));return Promise.all(i)}))}loadResources(e){this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources"));return this.resourcesPromise.then((()=>new p.ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList({handler:e,sink:t,task:a,intent:n,cacheKey:i,annotationStorage:s=null}){const o=this.getContentStream(e),c=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),l=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions}),h=Promise.all([o,c]).then((([r])=>{const s=new m.OperatorList(n,t);e.send("StartRenderPage",{transparency:l.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:i});return l.getOperatorList({stream:r,task:a,resources:this.resources,operatorList:s}).then((function(){return s}))}));return Promise.all([h,this._parsedAnnotations]).then((function([e,t]){if(0===t.length||n&r.RenderingIntentFlag.ANNOTATIONS_DISABLE){e.flush(!0);return{length:e.totalLength}}const i=!!(n&r.RenderingIntentFlag.ANNOTATIONS_FORMS),o=!!(n&r.RenderingIntentFlag.ANY),c=!!(n&r.RenderingIntentFlag.DISPLAY),h=!!(n&r.RenderingIntentFlag.PRINT),u=[];for(const e of t)(o||c&&e.mustBeViewed(s)||h&&e.mustBePrinted(s))&&u.push(e.getOperatorList(l,a,n,i,s).catch((function(e){(0,r.warn)(`getOperatorList - ignoring annotation data during "${a.name}" task: "${e}".`);return null})));return Promise.all(u).then((function(t){e.addOp(r.OPS.beginAnnotations,[]);for(const a of t)e.addOpList(a);e.addOp(r.OPS.endAnnotations,[]);e.flush(!0);return{length:e.totalLength}}))}))}extractTextContent({handler:e,task:t,includeMarkedContent:a,sink:r,combineTextItems:n}){const i=this.getContentStream(e),s=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([i,s]).then((([i])=>new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions}).getTextContent({stream:i,task:t,resources:this.resources,includeMarkedContent:a,combineTextItems:n,sink:r,viewBox:this.view})))}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;return(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable}_parseStructTree(e){const t=new w.StructTreePage(e,this.pageDict);t.parse();return t}getAnnotationsData(e){return this._parsedAnnotations.then((function(t){const a=[];if(0===t.length)return a;const n=!!(e&r.RenderingIntentFlag.ANY),i=!!(e&r.RenderingIntentFlag.DISPLAY),s=!!(e&r.RenderingIntentFlag.PRINT);for(const e of t)(n||i&&e.viewable||s&&e.printable)&&a.push(e.data);return a}))}get annotations(){const e=this._getInheritableProperty("Annots");return(0,r.shadow)(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then((()=>{const e=[];for(const t of this.annotations)e.push(o.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!1).catch((function(e){(0,r.warn)(`_parsedAnnotations: "${e}".`);return null})));return Promise.all(e).then((function(e){return e.filter((e=>!!e))}))}));return(0,r.shadow)(this,"_parsedAnnotations",e)}get jsActions(){const e=(0,n.collectActions)(this.xref,this.pageDict,r.PageActionEventType);return(0,r.shadow)(this,"jsActions",e)}}t.Page=Page;const C=new Uint8Array([37,80,68,70,45]),v=new Uint8Array([115,116,97,114,116,120,114,101,102]),F=new Uint8Array([101,110,100,111,98,106]),O=/^[1-9]\.\d$/;function find(e,t,a=1024,r=!1){const n=t.length,i=e.peekBytes(a),s=i.length-n;if(s<=0)return!1;if(r){const a=n-1;let r=i.length-1;for(;r>=a;){let s=0;for(;s=n){e.pos+=r-a;return!0}r--}}else{let a=0;for(;a<=s;){let r=0;for(;r=n){e.pos+=a;return!0}a++}}return!1}t.PDFDocument=class PDFDocument{constructor(e,t){if(t.length<=0)throw new r.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=t;this.xref=new x.XRef(t,e);this._pagePromises=new Map;this._version=null;const a={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++a.font}static createObjId(){(0,r.unreachable)("Abstract method `createObjId` called.")}static getPageObjId(){(0,r.unreachable)("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new h.Catalog(this.pdfManager,this.xref);this.catalog.version&&(this._version=this.catalog.version)}get linearization(){let e=null;try{e=f.Linearization.create(this.stream)}catch(e){if(e instanceof n.MissingDataException)throw e;(0,r.info)(e)}return(0,r.shadow)(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();find(e,F)&&(t=e.pos+6-e.start)}else{const a=1024,r=v.length;let i=!1,s=e.end;for(;!i&&s>0;){s-=a-r;s<0&&(s=0);e.pos=s;i=find(e,v,a,!0)}if(i){e.skip(9);let a;do{a=e.getByte()}while((0,n.isWhiteSpace)(a));let r="";for(;a>=32&&a<=57;){r+=String.fromCharCode(a);a=e.getByte()}t=parseInt(r,10);isNaN(t)&&(t=0)}}return(0,r.shadow)(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,C))return;e.moveStart();let t,a="";for(;(t=e.getByte())>32&&!(a.length>=12);)a+=String.fromCharCode(t);this._version||(this._version=a.substring(5))}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages;return(0,r.shadow)(this,"numPages",e)}_hasOnlyDocumentSignatures(e,t=0){return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof i.Dict))return!1;if(e.has("Kids")){if(++t>10){(0,r.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this._hasOnlyDocumentSignatures(e.get("Kids"),t)}const a=(0,i.isName)(e.get("FT"),"Sig"),n=e.get("Rect"),s=Array.isArray(n)&&n.every((e=>0===e));return a&&s}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),a={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof c.BaseStream&&!t.isEmpty){a["xdp:xdp"]=t;return a}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,r=t.length;e{y.set(e,t)}));const w=[];for(const[e,a]of y){const s=a.get("FontDescriptor");if(!(s instanceof i.Dict))continue;let c=s.get("FontFamily");c=c.replace(/[ ]+(\d)/g,"$1");const l={fontFamily:c,fontWeight:s.get("FontWeight"),italicAngle:-s.get("ItalicAngle")};(0,n.validateCSSFont)(l)&&w.push(u.handleSetFont(o,[i.Name.get(e),1],null,d,t,g,null,l).catch((function(e){(0,r.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);const S=this.xfaFactory.setFonts(f);if(!S)return;h.ignoreErrors=!0;w.length=0;f.length=0;const x=new Set;for(const e of S)(0,s.getXfaFontName)(`${e}-Regular`)||x.add(e);x.size&&S.push("PdfJS-Fallback");for(const e of S)if(!x.has(e))for(const a of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const n=`${e}-${a.name}`,c=(0,s.getXfaFontDict)(n);w.push(u.handleSetFont(o,[i.Name.get(n),1],null,d,t,g,c,{fontFamily:e,fontWeight:a.fontWeight,italicAngle:a.italicAngle}).catch((function(e){(0,r.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);this.xfaFactory.appendFonts(f,x)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return(0,r.shadow)(this,"formInfo",e);try{const a=t.get("Fields"),r=Array.isArray(a)&&a.length>0;e.hasFields=r;const n=t.get("XFA");e.hasXfa=Array.isArray(n)&&n.length>0||n instanceof c.BaseStream&&!n.isEmpty;const i=!!(1&t.get("SigFlags")),s=i&&this._hasOnlyDocumentSignatures(a);e.hasAcroForm=r&&!s;e.hasSignatures=i}catch(e){if(e instanceof n.MissingDataException)throw e;(0,r.warn)(`Cannot fetch form information: "${e}".`)}return(0,r.shadow)(this,"formInfo",e)}get documentInfo(){let e=this._version;if("string"!=typeof e||!O.test(e)){(0,r.warn)(`Invalid PDF header version number: ${e}`);e=null}const t={PDFFormatVersion:e,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let a;try{a=this.xref.trailer.get("Info")}catch(e){if(e instanceof n.MissingDataException)throw e;(0,r.info)("The document information dictionary is invalid.")}if(!(a instanceof i.Dict))return(0,r.shadow)(this,"documentInfo",t);for(const e of a.getKeys()){const n=a.get(e);switch(e){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof n){t[e]=(0,r.stringToPDFString)(n);continue}break;case"Trapped":if(n instanceof i.Name){t[e]=n;continue}break;default:let a;switch(typeof n){case"string":a=(0,r.stringToPDFString)(n);break;case"number":case"boolean":a=n;break;default:n instanceof i.Name&&(a=n)}if(void 0===a){(0,r.warn)(`Bad value, for custom key "${e}", in Info: ${n}.`);continue}t.Custom||(t.Custom=Object.create(null));t.Custom[e]=a;continue}(0,r.warn)(`Bad value, for key "${e}", in Info: ${n}.`)}return(0,r.shadow)(this,"documentInfo",t)}get fingerprints(){function validate(e){return"string"==typeof e&&e.length>0&&"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"!==e}function hexString(e){const t=[];for(let a=0,r=e.length;anew Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:r,globalIdFactory:this._globalIdFactory,fontCache:a.fontCache,builtInCMapCache:a.builtInCMapCache,standardFontDataCache:a.standardFontDataCache,globalImageCache:a.globalImageCache,nonBlendModesSet:a.nonBlendModesSet,xfaFactory:n})));this._pagePromises.set(e,s);return s}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof n.XRefEntryException){this._pagePromises.delete(0);await this.cleanup();throw new n.XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:a}=this;t.setActualNumPages();let i;try{await Promise.all([a.ensureDoc("xfaFactory"),a.ensureDoc("linearization"),a.ensureCatalog("numPages")]);if(this.xfaFactory)return;i=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(i))throw new r.FormatError("Page count is not an integer.");if(i<=1)return;await this.getPage(i-1)}catch(s){this._pagePromises.delete(i-1);await this.cleanup();if(s instanceof n.XRefEntryException&&!e)throw new n.XRefParseException;(0,r.warn)(`checkLastPage - invalid /Pages tree /Count: ${i}.`);let o;try{o=await t.getAllPageDicts(e)}catch(a){if(a instanceof n.XRefEntryException&&!e)throw new n.XRefParseException;t.setActualNumPages(1);return}for(const[e,[r,n]]of o){let i;if(r instanceof Error){i=Promise.reject(r);i.catch((()=>{}))}else i=Promise.resolve(new Page({pdfManager:a,xref:this.xref,pageIndex:e,pageDict:r,ref:n,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this._pagePromises.set(e,i)}t.setActualNumPages(o.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):(0,u.clearGlobalCaches)()}_collectFieldObjects(e,t,a){const n=this.xref.fetchIfRef(t);if(n.has("T")){const t=(0,r.stringToPDFString)(n.get("T"));e=""===e?t:`${e}.${t}`}a.has(e)||a.set(e,[]);a.get(e).push(o.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!0).then((e=>e&&e.getFieldObject())).catch((function(e){(0,r.warn)(`_collectFieldObjects: "${e}".`);return null})));if(n.has("Kids")){const t=n.get("Kids");for(const r of t)this._collectFieldObjects(e,r,a)}}get fieldObjects(){if(!this.formInfo.hasFields)return(0,r.shadow)(this,"fieldObjects",Promise.resolve(null));const e=Object.create(null),t=new Map;for(const e of this.catalog.acroForm.get("Fields"))this._collectFieldObjects("",e,t);const a=[];for(const[r,n]of t)a.push(Promise.all(n).then((t=>{(t=t.filter((e=>!!e))).length>0&&(e[r]=t)})));return(0,r.shadow)(this,"fieldObjects",Promise.all(a).then((()=>e)))}get hasJSActions(){const e=this.pdfManager.ensureDoc("_parseHasJSActions");return(0,r.shadow)(this,"hasJSActions",e)}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(!e||!e.has("CO"))return(0,r.shadow)(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return(0,r.shadow)(this,"calculationOrderIds",null);const a=[];for(const e of t)e instanceof i.Ref&&a.push(e.toString());return 0===a.length?(0,r.shadow)(this,"calculationOrderIds",null):(0,r.shadow)(this,"calculationOrderIds",a)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getXfaFontDict=function getXfaFontDict(e){const t=function getXfaFontWidths(e){const t=getXfaFontName(e);if(!t)return null;const{baseWidths:a,baseMapping:r,factors:n}=t;let i;i=n?a.map(((e,t)=>e*n[t])):a;let s,o=-2;const c=[];for(const[e,t]of r.map(((e,t)=>[e,t])).sort((([e],[t])=>e-t)))if(-1!==e)if(e===o+1){s.push(i[t]);o+=1}else{o=e;s=[i[t]];c.push(e,s)}return c}(e),a=new n.Dict(null);a.set("BaseFont",n.Name.get(e));a.set("Type",n.Name.get("Font"));a.set("Subtype",n.Name.get("CIDFontType2"));a.set("Encoding",n.Name.get("Identity-H"));a.set("CIDToGIDMap",n.Name.get("Identity"));a.set("W",t);a.set("FirstChar",t[0]);a.set("LastChar",t[t.length-2]+t[t.length-1].length-1);const r=new n.Dict(null);a.set("FontDescriptor",r);const i=new n.Dict(null);i.set("Ordering","Identity");i.set("Registry","Adobe");i.set("Supplement",0);a.set("CIDSystemInfo",i);return a};t.getXfaFontName=getXfaFontName;var r=a(13),n=a(5),i=a(14),s=a(15),o=a(16),c=a(17),l=a(8),h=a(18);const u=(0,l.getLookupTableFactory)((function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:o.MyriadProRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:o.MyriadProRegularMetrics};e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:o.MyriadProBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:o.MyriadProBoldMetrics};e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:o.MyriadProItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:o.MyriadProItalicMetrics};e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:o.MyriadProBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:o.MyriadProBoldItalicMetrics};e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping};e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping};e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping};e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping};e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:r.CalibriRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:r.CalibriRegularMetrics};e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:r.CalibriBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:r.CalibriBoldMetrics};e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:r.CalibriItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:r.CalibriItalicMetrics};e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:r.CalibriBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:r.CalibriBoldItalicMetrics};e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:c.SegoeuiRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:c.SegoeuiRegularMetrics};e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:c.SegoeuiBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:c.SegoeuiBoldMetrics};e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:c.SegoeuiItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:c.SegoeuiItalicMetrics};e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:c.SegoeuiBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:c.SegoeuiBoldItalicMetrics};e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:i.HelveticaRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:i.HelveticaRegularMetrics};e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:i.HelveticaBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:i.HelveticaBoldMetrics};e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:i.HelveticaItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:i.HelveticaItalicMetrics};e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:i.HelveticaBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:i.HelveticaBoldItalicMetrics}}));function getXfaFontName(e){const t=(0,h.normalizeFontName)(e);return u()[t]}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CalibriRegularMetrics=t.CalibriRegularFactors=t.CalibriItalicMetrics=t.CalibriItalicFactors=t.CalibriBoldMetrics=t.CalibriBoldItalicMetrics=t.CalibriBoldItalicFactors=t.CalibriBoldFactors=void 0;t.CalibriBoldFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.54657,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.73293,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.9121,.86943,.79795,.88198,.77958,.70864,.81055,.90399,.88653,.96017,.82577,.77892,.78257,.97507,1.54657,.97507,.85284,.89552,.90176,.88762,.8785,.75241,.8785,.90518,.95015,.77618,.8785,.88401,.91916,.86304,.88401,.91488,.8785,.8801,.8785,.8785,.91343,.7173,1.04106,.8785,.85075,.95794,.82616,.85162,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.12401,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.73293,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.9121,.86943,.86943,.86943,.86943,.86943,.85284,.87508,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.88762,.88762,.88762,.88762,.88762,.88762,.8715,.75241,.90518,.90518,.90518,.90518,.88401,.88401,.88401,.88401,.8785,.8785,.8801,.8801,.8801,.8801,.8801,.90747,.89049,.8785,.8785,.8785,.8785,.85162,.8785,.85162,.83908,.88762,.83908,.88762,.83908,.88762,.73293,.75241,.73293,.75241,.73293,.75241,.73293,.75241,.87289,.83016,.88506,.93125,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.81921,.77618,.81921,.77618,.81921,.77618,1,1,.87356,.8785,.91075,.89608,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76229,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.79468,.91926,.88175,.70823,.94903,.9121,.8785,1,1,.9121,.8785,.87802,.88656,.8785,.86943,.8801,.86943,.8801,.86943,.8801,.87402,.89291,.77958,.91343,1,1,.77958,.91343,.70864,.7173,.70864,.7173,.70864,.7173,.70864,.7173,1,1,.81055,.75841,.81055,1.06452,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.96017,.95794,.77892,.85162,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.88762,.77539,.8715,.87508,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70674,.98387,.94721,1.33431,1.45894,.95161,1.06303,.83908,.80352,.57184,.6965,.56289,.82001,.56029,.81235,1.02988,.83908,.7762,.68156,.80367,.73133,.78257,.87356,.86943,.95958,.75727,.89019,1.04924,.9121,.7648,.86943,.87356,.79795,.78275,.81055,.77892,.9762,.82577,.99819,.84896,.95958,.77892,.96108,1.01407,.89049,1.02988,.94211,.96108,.8936,.84021,.87842,.96399,.79109,.89049,1.00813,1.02988,.86077,.87445,.92099,.84723,.86513,.8801,.75638,.85714,.78216,.79586,.87965,.94211,.97747,.78287,.97926,.84971,1.02988,.94211,.8801,.94211,.84971,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90264,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.90518,1,1,1,1,1,1,1,1,1,1,1,1,.90548,1,1,1,1,1,1,.96017,.95794,.96017,.95794,.96017,.95794,.77892,.85162,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.92794,.87012,.87012,.87012,.89552,.89552,1.42259,.71143,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.93835,.83406,.91133,.84107,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90527,1.81055,.90527,1.81055,1.31006,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriBoldMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriBoldItalicFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.56239,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.71805,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.90872,.85938,.79795,.87068,.77958,.69766,.81055,.90399,.88653,.96068,.82577,.77892,.78257,.97507,1.529,.97507,.85284,.89552,.90176,.94908,.86411,.74012,.86411,.88323,.95015,.86411,.86331,.88401,.91916,.86304,.88401,.9039,.86331,.86331,.86411,.86411,.90464,.70852,1.04106,.86331,.84372,.95794,.82616,.84548,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.19129,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.71805,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.90872,.85938,.85938,.85938,.85938,.85938,.85284,.87068,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.94908,.94908,.94908,.94908,.94908,.94908,.85887,.74012,.88323,.88323,.88323,.88323,.88401,.88401,.88401,.88401,.8785,.86331,.86331,.86331,.86331,.86331,.86331,.90747,.89049,.86331,.86331,.86331,.86331,.84548,.86411,.84548,.83908,.94908,.83908,.94908,.83908,.94908,.71805,.74012,.71805,.74012,.71805,.74012,.71805,.74012,.87289,.79538,.88506,.92726,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.81921,.86411,.81921,.86411,.81921,.86411,1,1,.87356,.86331,.91075,.8777,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76467,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.77312,.91926,.88175,.70823,.94903,.90872,.86331,1,1,.90872,.86331,.86906,.88116,.86331,.85938,.86331,.85938,.86331,.85938,.86331,.87402,.86549,.77958,.90464,1,1,.77958,.90464,.69766,.70852,.69766,.70852,.69766,.70852,.69766,.70852,1,1,.81055,.75841,.81055,1.06452,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.96068,.95794,.77892,.84548,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.94908,.77539,.85887,.87068,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70088,.98387,.94721,1.33431,1.45894,.95161,1.48387,.83908,.80352,.57118,.6965,.56347,.79179,.55853,.80346,1.02988,.83908,.7762,.67174,.86036,.73133,.78257,.87356,.86441,.95958,.75727,.89019,1.04924,.90872,.74889,.85938,.87891,.79795,.7957,.81055,.77892,.97447,.82577,.97466,.87179,.95958,.77892,.94252,.95612,.8753,1.02988,.92733,.94252,.87411,.84021,.8728,.95612,.74081,.8753,1.02189,1.02988,.84814,.87445,.91822,.84723,.85668,.86331,.81344,.87581,.76422,.82046,.96057,.92733,.99375,.78022,.95452,.86015,1.02988,.92733,.86331,.92733,.86015,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90631,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.88323,1,1,1,1,1,1,1,1,1,1,1,1,.85174,1,1,1,1,1,1,.96068,.95794,.96068,.95794,.96068,.95794,.77892,.84548,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.89807,.87012,.87012,.87012,.89552,.89552,1.42259,.71094,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.92972,.83406,.91133,.83326,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90616,1.81055,.90527,1.81055,1.3107,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriBoldItalicMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriItalicFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39543,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.72346,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89249,.84118,.77452,.85374,.75186,.67789,.79776,.88844,.85066,.94309,.77818,.7306,.76659,1.10369,1.38313,1.10369,1.06139,.89552,.8739,.9245,.9245,.83203,.9245,.85865,1.09842,.9245,.9245,1.03297,1.07692,.90918,1.03297,.94959,.9245,.92274,.9245,.9245,1.02933,.77832,1.20562,.9245,.8916,.98986,.86621,.89453,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.16359,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.72346,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89249,.84118,.84118,.84118,.84118,.84118,.85284,.84557,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.9245,.9245,.9245,.9245,.9245,.9245,.84843,.83203,.85865,.85865,.85865,.85865,.82601,.82601,.82601,.82601,.94469,.9245,.92274,.92274,.92274,.92274,.92274,.90747,.86651,.9245,.9245,.9245,.9245,.89453,.9245,.89453,.8675,.9245,.8675,.9245,.8675,.9245,.72346,.83203,.72346,.83203,.72346,.83203,.72346,.83203,.85193,.8875,.86477,.99034,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.81105,.9245,.81105,.9245,.81105,.9245,1,1,.86275,.9245,.90872,.93591,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77896,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.9375,.98156,.93407,.77261,1.11429,.89249,.9245,1,1,.89249,.9245,.92534,.86698,.9245,.84118,.92274,.84118,.92274,.84118,.92274,.8667,.86291,.75186,1.02933,1,1,.75186,1.02933,.67789,.77832,.67789,.77832,.67789,.77832,.67789,.77832,1,1,.79776,.97655,.79776,1.23023,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.94309,.98986,.7306,.89453,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.9245,.76318,.84843,.84557,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67009,.96334,.93695,1.35191,1.40909,.95161,1.48387,.8675,.90861,.6192,.7363,.64824,.82411,.56321,.85696,1.23516,.8675,.81552,.7286,.84134,.73206,.76659,.86275,.84369,.90685,.77892,.85871,1.02638,.89249,.75828,.84118,.85984,.77452,.76466,.79776,.7306,.90782,.77818,.903,.87291,.90685,.7306,.99058,1.03667,.94635,1.23516,.9849,.99058,.92393,.8916,.942,1.03667,.75026,.94635,1.0297,1.23516,.90918,.94048,.98217,.89746,.84153,.92274,.82507,.88832,.84438,.88178,1.03525,.9849,1.00225,.78086,.97248,.89404,1.23516,.9849,.92274,.9849,.89404,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.89693,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.85865,1,1,1,1,1,1,1,1,1,1,1,1,.90933,1,1,1,1,1,1,.94309,.98986,.94309,.98986,.94309,.98986,.7306,.89453,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.68994,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.97858,.82616,.91133,.83437,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90572,1.81055,.90749,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85284,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriItalicMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriRegularFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39016,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.73834,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89385,.85122,.77452,.86503,.75186,.68887,.79776,.88844,.85066,.94258,.77818,.7306,.76659,1.10369,1.39016,1.10369,1.06139,.89552,.8739,.86128,.94469,.8457,.94469,.89464,1.09842,.84636,.94469,1.03297,1.07692,.90918,1.03297,.95897,.94469,.9482,.94469,.94469,1.04692,.78223,1.20562,.94469,.90332,.98986,.86621,.90527,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.08707,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.73834,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89385,.85122,.85122,.85122,.85122,.85122,.85284,.85311,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.86128,.86128,.86128,.86128,.86128,.86128,.8693,.8457,.89464,.89464,.89464,.89464,.82601,.82601,.82601,.82601,.94469,.94469,.9482,.9482,.9482,.9482,.9482,.90747,.86651,.94469,.94469,.94469,.94469,.90527,.94469,.90527,.8675,.86128,.8675,.86128,.8675,.86128,.73834,.8457,.73834,.8457,.73834,.8457,.73834,.8457,.85193,.92454,.86477,.9921,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.81105,.84636,.81105,.84636,.81105,.84636,1,1,.86275,.94469,.90872,.95786,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77741,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.90452,.98156,1.11842,.77261,1.11429,.89385,.94469,1,1,.89385,.94469,.95877,.86901,.94469,.85122,.9482,.85122,.9482,.85122,.9482,.8667,.90016,.75186,1.04692,1,1,.75186,1.04692,.68887,.78223,.68887,.78223,.68887,.78223,.68887,.78223,1,1,.79776,.92188,.79776,1.23023,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.94258,.98986,.7306,.90527,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.86128,.76318,.8693,.85311,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67742,.96334,.93695,1.35191,1.40909,.95161,1.48387,.86686,.90861,.62267,.74359,.65649,.85498,.56963,.88254,1.23516,.8675,.81552,.75443,.84503,.73206,.76659,.86275,.85122,.90685,.77892,.85746,1.02638,.89385,.75657,.85122,.86275,.77452,.74171,.79776,.7306,.95165,.77818,.89772,.88831,.90685,.7306,.98142,1.02191,.96576,1.23516,.99018,.98142,.9236,.89258,.94035,1.02191,.78848,.96576,.9561,1.23516,.90918,.92578,.95424,.89746,.83969,.9482,.80113,.89442,.85208,.86155,.98022,.99018,1.00452,.81209,.99247,.89181,1.23516,.99018,.9482,.99018,.89181,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.88844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89464,1,1,1,1,1,1,1,1,1,1,1,1,.96766,1,1,1,1,1,1,.94258,.98986,.94258,.98986,.94258,.98986,.7306,.90527,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.69043,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.99331,.82616,.91133,.84286,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90527,1.81055,.90527,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1.07185,.99413,.96334,1.08065,1,1,1,1,1,1,1,1,1,1,1];t.CalibriRegularMetrics={lineHeight:1.2207,lineGap:.2207}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.HelveticaRegularMetrics=t.HelveticaRegularFactors=t.HelveticaItalicMetrics=t.HelveticaItalicFactors=t.HelveticaBoldMetrics=t.HelveticaBoldItalicMetrics=t.HelveticaBoldItalicFactors=t.HelveticaBoldFactors=void 0;t.HelveticaBoldFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.03374,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00042,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.03828,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00034,.99977,1,.99997,1.00026,1.00078,1.00036,.99973,1.00013,1.0006,.99977,.99977,.99988,.85148,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,1.00069,1.00022,.99977,1.00001,.99984,1.00026,1.00001,1.00024,1.00001,.9999,1,1.0006,1.00001,1.00041,.99962,1.00026,1.0006,.99995,1.00041,.99942,.99973,.99927,1.00082,.99902,1.00026,1.00087,1.0006,1.00069,.99973,.99867,.99973,.9993,1.00026,1.00049,1.00056,1,.99988,.99935,.99995,.99954,1.00055,.99945,1.00032,1.0006,.99995,1.00026,.99995,1.00032,1.00001,1.00008,.99971,1.00019,.9994,1.00001,1.0006,1.00044,.99973,1.00023,1.00047,1,.99942,.99561,.99989,1.00035,.99977,1.00035,.99977,1.00019,.99944,1.00001,1.00021,.99926,1.00035,1.00035,.99942,1.00048,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.99989,1.00057,1.00001,.99936,1.00052,1.00012,.99996,1.00043,1,1.00035,.9994,.99976,1.00035,.99973,1.00052,1.00041,1.00119,1.00037,.99973,1.00002,.99986,1.00041,1.00041,.99902,.9996,1.00034,.99999,1.00026,.99999,1.00026,.99973,1.00052,.99973,1,.99973,1.00041,1.00075,.9994,1.0003,.99999,1,1.00041,.99955,1,.99915,.99973,.99973,1.00026,1.00119,.99955,.99973,1.0006,.99911,1.0006,1.00026,.99972,1.00026,.99902,1.00041,.99973,.99999,1,1,1.00038,1.0005,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,1.00047,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaBoldMetrics={lineHeight:1.2,lineGap:.2};t.HelveticaBoldItalicFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.0044,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99971,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.01011,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99977,1,1,1.00026,.99969,.99972,.99981,.9998,1.0006,.99977,.99977,1.00022,.91155,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,.99966,1.00022,1.00032,1.00001,.99944,1.00026,1.00001,.99968,1.00001,1.00047,1,1.0006,1.00001,.99981,1.00101,1.00026,1.0006,.99948,.99981,1.00064,.99973,.99942,1.00101,1.00061,1.00026,1.00069,1.0006,1.00014,.99973,1.01322,.99973,1.00065,1.00026,1.00012,.99923,1,1.00064,1.00076,.99948,1.00055,1.00063,1.00007,.99943,1.0006,.99948,1.00026,.99948,.99943,1.00001,1.00001,1.00029,1.00038,1.00035,1.00001,1.0006,1.0006,.99973,.99978,1.00001,1.00057,.99989,.99967,.99964,.99967,.99977,.99999,.99977,1.00038,.99977,1.00001,.99973,1.00066,.99967,.99967,1.00041,.99998,.99999,.99977,1.00022,.99967,1.00001,.99977,1.00026,.99964,1.00031,1.00001,.99999,.99999,1,1.00023,1,1,.99999,1.00035,1.00001,.99999,.99973,.99977,.99999,1.00058,.99973,.99973,.99955,.9995,1.00026,1.00026,1.00032,.99989,1.00034,.99999,1.00026,1.00026,1.00026,.99973,.45998,.99973,1.00026,.99973,1.00001,.99999,.99982,.99994,.99996,1,1.00042,1.00044,1.00029,1.00023,.99973,.99973,1.00026,.99949,1.00002,.99973,1.0006,1.0006,1.0006,.99975,1.00026,1.00026,1.00032,.98685,.99973,1.00026,1,1,.99966,1.00044,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1,.99973,.99971,.99978,1,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00098,1,1,1,1.00049,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaBoldItalicMetrics={lineHeight:1.35,lineGap:.2};t.HelveticaItalicFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.0288,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,.99946,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.06311,.99973,1.00024,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,1.00041,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.89547,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00001,1,1.00054,.99977,1.00084,1.00007,.99973,1.00013,.99924,1.00001,1.00001,.99945,.91221,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00001,.99999,.99977,.99933,1.00022,1.00054,1.00001,1.00065,1.00026,1.00001,1.0001,1.00001,1.00052,1,1.0006,1.00001,.99945,.99897,.99968,.99924,1.00036,.99945,.99949,1,1.0006,.99897,.99918,.99968,.99911,.99924,1,.99962,1.01487,1,1.0005,.99973,1.00012,1.00043,1,.99995,.99994,1.00036,.99947,1.00019,1.00063,1.00025,.99924,1.00036,.99973,1.00036,1.00025,1.00001,1.00001,1.00027,1.0001,1.00068,1.00001,1.0006,1.0006,1,1.00008,.99957,.99972,.9994,.99954,.99975,1.00051,1.00001,1.00019,1.00001,1.0001,.99986,1.00001,1.00001,1.00038,.99954,.99954,.9994,1.00066,.99999,.99977,1.00022,1.00054,1.00001,.99977,1.00026,.99975,1.0001,1.00001,.99993,.9995,.99955,1.00016,.99978,.99974,1.00019,1.00022,.99955,1.00053,.99973,1.00089,1.00005,.99967,1.00048,.99973,1.00002,1.00034,.99973,.99973,.99964,1.00006,1.00066,.99947,.99973,.98894,.99973,1,.44898,1,.99946,1,1.00039,1.00082,.99991,.99991,.99985,1.00022,1.00023,1.00061,1.00006,.99966,.99973,.99973,.99973,1.00019,1.0008,1,.99924,.99924,.99924,.99983,1.00044,.99973,.99964,.98332,1,.99973,1,1,.99962,.99895,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,1.00423,.99925,.99999,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00049,1,1.00245,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,1.00003,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaItalicMetrics={lineHeight:1.35,lineGap:.2};t.HelveticaRegularFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.04596,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,1.00019,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.02572,.99973,1.00005,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,.99999,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.84533,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99928,1,.99977,1.00013,1.00055,.99947,.99945,.99941,.99924,1.00001,1.00001,1.0004,.91621,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00005,.99999,.99977,1.00015,1.00022,.99977,1.00001,.99973,1.00026,1.00001,1.00019,1.00001,.99946,1,1.0006,1.00001,.99978,1.00045,.99973,.99924,1.00023,.99978,.99966,1,1.00065,1.00045,1.00019,.99973,.99973,.99924,1,1,.96499,1,1.00055,.99973,1.00008,1.00027,1,.9997,.99995,1.00023,.99933,1.00019,1.00015,1.00031,.99924,1.00023,.99973,1.00023,1.00031,1.00001,.99928,1.00029,1.00092,1.00035,1.00001,1.0006,1.0006,1,.99988,.99975,1,1.00082,.99561,.9996,1.00035,1.00001,.99962,1.00001,1.00092,.99964,1.00001,.99963,.99999,1.00035,1.00035,1.00082,.99962,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.9996,.99967,1.00001,1.00034,1.00074,1.00054,1.00053,1.00063,.99971,.99962,1.00035,.99975,.99977,.99973,1.00043,.99953,1.0007,.99915,.99973,1.00008,.99892,1.00073,1.00073,1.00114,.99915,1.00073,.99955,.99973,1.00092,.99973,1,.99998,1,1.0003,1,1.00043,1.00001,.99969,1.0003,1,1.00035,1.00001,.9995,1,1.00092,.99973,.99973,.99973,1.0007,.9995,1,.99924,1.0006,.99924,.99972,1.00062,.99973,1.00114,1.00073,1,.99955,1,1,1.00047,.99968,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,.99925,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LiberationSansRegularWidths=t.LiberationSansRegularMapping=t.LiberationSansItalicWidths=t.LiberationSansItalicMapping=t.LiberationSansBoldWidths=t.LiberationSansBoldMapping=t.LiberationSansBoldItalicWidths=t.LiberationSansBoldItalicMapping=void 0;t.LiberationSansBoldWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,719,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,785,556,556,278,722,556,556,611,278,611,278,611,385,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,465,722,333,853,906,474,825,927,838,278,722,722,601,719,667,611,722,778,278,722,667,833,722,644,778,722,667,600,611,667,821,667,809,802,278,667,615,451,611,278,582,615,610,556,606,475,460,611,541,278,558,556,612,556,445,611,766,619,520,684,446,582,715,576,753,845,278,582,611,582,845,667,669,885,567,711,667,278,276,556,1094,1062,875,610,722,622,719,722,719,722,567,712,667,904,626,719,719,610,702,833,722,778,719,667,722,611,622,854,667,730,703,1005,1019,870,979,719,711,1031,719,556,618,615,417,635,556,709,497,615,615,500,635,740,604,611,604,611,556,490,556,875,556,615,581,833,844,729,854,615,552,854,583,556,556,611,417,552,556,278,281,278,969,906,611,500,615,556,604,778,611,487,447,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1094,556,885,489,1115,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333];t.LiberationSansBoldMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansBoldItalicWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,740,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,782,556,556,278,722,556,556,611,278,611,278,611,396,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,333,722,333,854,906,473,844,930,847,278,722,722,610,671,667,611,722,778,278,722,667,833,722,657,778,718,667,590,611,667,822,667,829,781,278,667,620,479,611,278,591,620,621,556,610,479,492,611,558,278,566,556,603,556,450,611,712,605,532,664,409,591,704,578,773,834,278,591,611,591,834,667,667,886,614,719,667,278,278,556,1094,1042,854,622,719,677,719,722,708,722,614,722,667,927,643,719,719,615,687,833,722,778,719,667,722,611,677,781,667,729,708,979,989,854,1e3,708,719,1042,729,556,619,604,534,618,556,736,510,611,611,507,622,740,604,611,611,611,556,889,556,885,556,646,583,889,935,707,854,594,552,865,589,556,556,611,469,563,556,278,278,278,969,906,611,507,619,556,611,778,611,575,467,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1104,556,885,516,1146,1e3,768,600,834,834,834,834,999,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333];t.LiberationSansBoldItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansItalicWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,625,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,733,444,500,222,667,500,500,556,222,556,222,556,281,556,400,556,222,722,556,722,556,722,556,615,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,354,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,789,846,389,794,865,775,222,667,667,570,671,667,611,722,778,278,667,667,833,722,648,778,725,667,600,611,667,837,667,831,761,278,667,570,439,555,222,550,570,571,500,556,439,463,555,542,222,500,492,548,500,447,556,670,573,486,603,374,550,652,546,728,779,222,550,556,550,779,667,667,843,544,708,667,278,278,500,1066,982,844,589,715,639,724,667,651,667,544,704,667,917,614,715,715,589,686,833,722,778,725,667,722,611,639,795,667,727,673,920,923,805,886,651,694,1022,682,556,562,522,493,553,556,688,465,556,556,472,564,686,550,556,556,556,500,833,500,835,500,572,518,830,851,621,736,526,492,752,534,556,556,556,378,496,500,222,222,222,910,828,556,472,565,500,556,778,556,492,339,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1083,1e3,768,600,834,834,834,834,1e3,500,998,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,584,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285];t.LiberationSansItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansRegularWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,615,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,735,444,500,222,667,500,500,556,222,556,222,556,292,556,334,556,222,722,556,722,556,722,556,604,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,375,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,784,838,384,774,855,752,222,667,667,551,668,667,611,722,778,278,667,668,833,722,650,778,722,667,618,611,667,798,667,835,748,278,667,578,446,556,222,547,578,575,500,557,446,441,556,556,222,500,500,576,500,448,556,690,569,482,617,395,547,648,525,713,781,222,547,556,547,781,667,667,865,542,719,667,278,278,500,1057,1010,854,583,722,635,719,667,656,667,542,677,667,923,604,719,719,583,656,833,722,778,719,667,722,611,635,760,667,740,667,917,938,792,885,656,719,1010,722,556,573,531,365,583,556,669,458,559,559,438,583,688,552,556,542,556,500,458,500,823,500,573,521,802,823,625,719,521,510,750,542,556,556,556,365,510,500,222,278,222,906,812,556,438,559,500,552,778,556,489,411,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1073,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285];t.LiberationSansRegularMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MyriadProRegularMetrics=t.MyriadProRegularFactors=t.MyriadProItalicMetrics=t.MyriadProItalicFactors=t.MyriadProBoldMetrics=t.MyriadProBoldItalicMetrics=t.MyriadProBoldItalicFactors=t.MyriadProBoldFactors=void 0;t.MyriadProBoldFactors=[1.36898,1,1,.72706,.80479,.83734,.98894,.99793,.9897,.93884,.86209,.94292,.94292,1.16661,1.02058,.93582,.96694,.93582,1.19137,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.78076,.78076,1.02058,1.02058,1.02058,.72851,.78966,.90838,.83637,.82391,.96376,.80061,.86275,.8768,.95407,1.0258,.73901,.85022,.83655,1.0156,.95546,.92179,.87107,.92179,.82114,.8096,.89713,.94438,.95353,.94083,.91905,.90406,.9446,.94292,1.18777,.94292,1.02058,.89903,.90088,.94938,.97898,.81093,.97571,.94938,1.024,.9577,.95933,.98621,1.0474,.97455,.98981,.9672,.95933,.9446,.97898,.97407,.97646,.78036,1.10208,.95442,.95298,.97579,.9332,.94039,.938,.80687,1.01149,.80687,1.02058,.80479,.99793,.99793,.99793,.99793,1.01149,1.00872,.90088,.91882,1.0213,.8361,1.02058,.62295,.54324,.89022,1.08595,1,1,.90088,1,.97455,.93582,.90088,1,1.05686,.8361,.99642,.99642,.99642,.72851,.90838,.90838,.90838,.90838,.90838,.90838,.868,.82391,.80061,.80061,.80061,.80061,1.0258,1.0258,1.0258,1.0258,.97484,.95546,.92179,.92179,.92179,.92179,.92179,1.02058,.92179,.94438,.94438,.94438,.94438,.90406,.86958,.98225,.94938,.94938,.94938,.94938,.94938,.94938,.9031,.81093,.94938,.94938,.94938,.94938,.98621,.98621,.98621,.98621,.93969,.95933,.9446,.9446,.9446,.9446,.9446,1.08595,.9446,.95442,.95442,.95442,.95442,.94039,.97898,.94039,.90838,.94938,.90838,.94938,.90838,.94938,.82391,.81093,.82391,.81093,.82391,.81093,.82391,.81093,.96376,.84313,.97484,.97571,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.8768,.9577,.8768,.9577,.8768,.9577,1,1,.95407,.95933,.97069,.95933,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,.887,1.01591,.73901,1.0474,1,1,.97455,.83655,.98981,1,1,.83655,.73977,.83655,.73903,.84638,1.033,.95546,.95933,1,1,.95546,.95933,.8271,.95417,.95933,.92179,.9446,.92179,.9446,.92179,.9446,.936,.91964,.82114,.97646,1,1,.82114,.97646,.8096,.78036,.8096,.78036,1,1,.8096,.78036,1,1,.89713,.77452,.89713,1.10208,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94083,.97579,.90406,.94039,.90406,.9446,.938,.9446,.938,.9446,.938,1,.99793,.90838,.94938,.868,.9031,.92179,.9446,1,1,.89713,1.10208,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90989,.9358,.91945,.83181,.75261,.87992,.82976,.96034,.83689,.97268,1.0078,.90838,.83637,.8019,.90157,.80061,.9446,.95407,.92436,1.0258,.85022,.97153,1.0156,.95546,.89192,.92179,.92361,.87107,.96318,.89713,.93704,.95638,.91905,.91709,.92796,1.0258,.93704,.94836,1.0373,.95933,1.0078,.95871,.94836,.96174,.92601,.9498,.98607,.95776,.95933,1.05453,1.0078,.98275,.9314,.95617,.91701,1.05993,.9446,.78367,.9553,1,.86832,1.0128,.95871,.99394,.87548,.96361,.86774,1.0078,.95871,.9446,.95871,.86774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94083,.97579,.94083,.97579,.94083,.97579,.90406,.94039,.96694,1,.89903,1,1,1,.93582,.93582,.93582,1,.908,.908,.918,.94219,.94219,.96544,1,1.285,1,1,.81079,.81079,1,1,.74854,1,1,1,1,.99793,1,1,1,.65,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.17173,1,.80535,.76169,1.02058,1.0732,1.05486,1,1,1.30692,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.16161,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProBoldMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProBoldItalicFactors=[1.36898,1,1,.66227,.80779,.81625,.97276,.97276,.97733,.92222,.83266,.94292,.94292,1.16148,1.02058,.93582,.96694,.93582,1.17337,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.78076,.78076,1.02058,1.02058,1.02058,.71541,.76813,.85576,.80591,.80729,.94299,.77512,.83655,.86523,.92222,.98621,.71743,.81698,.79726,.98558,.92222,.90637,.83809,.90637,.80729,.76463,.86275,.90699,.91605,.9154,.85308,.85458,.90531,.94292,1.21296,.94292,1.02058,.89903,1.18616,.99613,.91677,.78216,.91677,.90083,.98796,.9135,.92168,.95381,.98981,.95298,.95381,.93459,.92168,.91513,.92004,.91677,.95077,.748,1.04502,.91677,.92061,.94236,.89544,.89364,.9,.80687,.8578,.80687,1.02058,.80779,.97276,.97276,.97276,.97276,.8578,.99973,1.18616,.91339,1.08074,.82891,1.02058,.55509,.71526,.89022,1.08595,1,1,1.18616,1,.96736,.93582,1.18616,1,1.04864,.82711,.99043,.99043,.99043,.71541,.85576,.85576,.85576,.85576,.85576,.85576,.845,.80729,.77512,.77512,.77512,.77512,.98621,.98621,.98621,.98621,.95961,.92222,.90637,.90637,.90637,.90637,.90637,1.02058,.90251,.90699,.90699,.90699,.90699,.85458,.83659,.94951,.99613,.99613,.99613,.99613,.99613,.99613,.85811,.78216,.90083,.90083,.90083,.90083,.95381,.95381,.95381,.95381,.9135,.92168,.91513,.91513,.91513,.91513,.91513,1.08595,.91677,.91677,.91677,.91677,.91677,.89364,.92332,.89364,.85576,.99613,.85576,.99613,.85576,.99613,.80729,.78216,.80729,.78216,.80729,.78216,.80729,.78216,.94299,.76783,.95961,.91677,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.86523,.9135,.86523,.9135,.86523,.9135,1,1,.92222,.92168,.92222,.92168,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.86036,.97096,.71743,.98981,1,1,.95298,.79726,.95381,1,1,.79726,.6894,.79726,.74321,.81691,1.0006,.92222,.92168,1,1,.92222,.92168,.79464,.92098,.92168,.90637,.91513,.90637,.91513,.90637,.91513,.909,.87514,.80729,.95077,1,1,.80729,.95077,.76463,.748,.76463,.748,1,1,.76463,.748,1,1,.86275,.72651,.86275,1.04502,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.9154,.94236,.85458,.89364,.85458,.90531,.9,.90531,.9,.90531,.9,1,.97276,.85576,.99613,.845,.85811,.90251,.91677,1,1,.86275,1.04502,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.00899,1.30628,.85576,.80178,.66862,.7927,.69323,.88127,.72459,.89711,.95381,.85576,.80591,.7805,.94729,.77512,.90531,.92222,.90637,.98621,.81698,.92655,.98558,.92222,.85359,.90637,.90976,.83809,.94523,.86275,.83509,.93157,.85308,.83392,.92346,.98621,.83509,.92886,.91324,.92168,.95381,.90646,.92886,.90557,.86847,.90276,.91324,.86842,.92168,.99531,.95381,.9224,.85408,.92699,.86847,1.0051,.91513,.80487,.93481,1,.88159,1.05214,.90646,.97355,.81539,.89398,.85923,.95381,.90646,.91513,.90646,.85923,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9154,.94236,.9154,.94236,.9154,.94236,.85458,.89364,.96694,1,.89903,1,1,1,.91782,.91782,.91782,1,.896,.896,.896,.9332,.9332,.95973,1,1.26,1,1,.80479,.80178,1,1,.85633,1,1,1,1,.97276,1,1,1,.698,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.14542,1,.79199,.78694,1.02058,1.03493,1.05486,1,1,1.23026,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.20006,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProBoldItalicMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProItalicFactors=[1.36898,1,1,.65507,.84943,.85639,.88465,.88465,.86936,.88307,.86948,.85283,.85283,1.06383,1.02058,.75945,.9219,.75945,1.17337,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.75945,.75945,1.02058,1.02058,1.02058,.69046,.70926,.85158,.77812,.76852,.89591,.70466,.76125,.80094,.86822,.83864,.728,.77212,.79475,.93637,.87514,.8588,.76013,.8588,.72421,.69866,.77598,.85991,.80811,.87832,.78112,.77512,.8562,1.0222,1.18417,1.0222,1.27014,.89903,1.15012,.93859,.94399,.846,.94399,.81453,1.0186,.94219,.96017,1.03075,1.02175,.912,1.03075,.96998,.96017,.93859,.94399,.94399,.95493,.746,1.12658,.94578,.91,.979,.882,.882,.83,.85034,.83537,.85034,1.02058,.70869,.88465,.88465,.88465,.88465,.83537,.90083,1.15012,.9161,.94565,.73541,1.02058,.53609,.69353,.79519,1.08595,1,1,1.15012,1,.91974,.75945,1.15012,1,.9446,.73361,.9005,.9005,.9005,.62864,.85158,.85158,.85158,.85158,.85158,.85158,.773,.76852,.70466,.70466,.70466,.70466,.83864,.83864,.83864,.83864,.90561,.87514,.8588,.8588,.8588,.8588,.8588,1.02058,.85751,.85991,.85991,.85991,.85991,.77512,.76013,.88075,.93859,.93859,.93859,.93859,.93859,.93859,.8075,.846,.81453,.81453,.81453,.81453,.82424,.82424,.82424,.82424,.9278,.96017,.93859,.93859,.93859,.93859,.93859,1.08595,.8562,.94578,.94578,.94578,.94578,.882,.94578,.882,.85158,.93859,.85158,.93859,.85158,.93859,.76852,.846,.76852,.846,.76852,.846,.76852,.846,.89591,.8544,.90561,.94399,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.80094,.94219,.80094,.94219,.80094,.94219,1,1,.86822,.96017,.86822,.96017,.83864,.82424,.83864,.82424,.83864,.82424,.83864,1.03075,.83864,.82424,.81402,1.02738,.728,1.02175,1,1,.912,.79475,1.03075,1,1,.79475,.83911,.79475,.66266,.80553,1.06676,.87514,.96017,1,1,.87514,.96017,.86865,.87396,.96017,.8588,.93859,.8588,.93859,.8588,.93859,.867,.84759,.72421,.95493,1,1,.72421,.95493,.69866,.746,.69866,.746,1,1,.69866,.746,1,1,.77598,.88417,.77598,1.12658,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.87832,.979,.77512,.882,.77512,.8562,.83,.8562,.83,.8562,.83,1,.88465,.85158,.93859,.773,.8075,.85751,.8562,1,1,.77598,1.12658,1.15012,1.15012,1.15012,1.15012,1.15012,1.15313,1.15012,1.15012,1.15012,1.08106,1.03901,.85158,.77025,.62264,.7646,.65351,.86026,.69461,.89947,1.03075,.85158,.77812,.76449,.88836,.70466,.8562,.86822,.8588,.83864,.77212,.85308,.93637,.87514,.82352,.8588,.85701,.76013,.89058,.77598,.8156,.82565,.78112,.77899,.89386,.83864,.8156,.9486,.92388,.96186,1.03075,.91123,.9486,.93298,.878,.93942,.92388,.84596,.96186,.95119,1.03075,.922,.88787,.95829,.88,.93559,.93859,.78815,.93758,1,.89217,1.03737,.91123,.93969,.77487,.85769,.86799,1.03075,.91123,.93859,.91123,.86799,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87832,.979,.87832,.979,.87832,.979,.77512,.882,.9219,1,.89903,1,1,1,.87321,.87321,.87321,1,1.027,1.027,1.027,.86847,.86847,.79121,1,1.124,1,1,.73572,.73572,1,1,.85034,1,1,1,1,.88465,1,1,1,.669,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.04828,1,.74948,.75187,1.02058,.98391,1.02119,1,1,1.06233,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05233,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProItalicMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProRegularFactors=[1.36898,1,1,.76305,.82784,.94935,.89364,.92241,.89073,.90706,.98472,.85283,.85283,1.0664,1.02058,.74505,.9219,.74505,1.23456,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.74505,.74505,1.02058,1.02058,1.02058,.73002,.72601,.91755,.8126,.80314,.92222,.73764,.79726,.83051,.90284,.86023,.74,.8126,.84869,.96518,.91115,.8858,.79761,.8858,.74498,.73914,.81363,.89591,.83659,.89633,.85608,.8111,.90531,1.0222,1.22736,1.0222,1.27014,.89903,.90088,.86667,1.0231,.896,1.01411,.90083,1.05099,1.00512,.99793,1.05326,1.09377,.938,1.06226,1.00119,.99793,.98714,1.0231,1.01231,.98196,.792,1.19137,.99074,.962,1.01915,.926,.942,.856,.85034,.92006,.85034,1.02058,.69067,.92241,.92241,.92241,.92241,.92006,.9332,.90088,.91882,.93484,.75339,1.02058,.56866,.54324,.79519,1.08595,1,1,.90088,1,.95325,.74505,.90088,1,.97198,.75339,.91009,.91009,.91009,.66466,.91755,.91755,.91755,.91755,.91755,.91755,.788,.80314,.73764,.73764,.73764,.73764,.86023,.86023,.86023,.86023,.92915,.91115,.8858,.8858,.8858,.8858,.8858,1.02058,.8858,.89591,.89591,.89591,.89591,.8111,.79611,.89713,.86667,.86667,.86667,.86667,.86667,.86667,.86936,.896,.90083,.90083,.90083,.90083,.84224,.84224,.84224,.84224,.97276,.99793,.98714,.98714,.98714,.98714,.98714,1.08595,.89876,.99074,.99074,.99074,.99074,.942,1.0231,.942,.91755,.86667,.91755,.86667,.91755,.86667,.80314,.896,.80314,.896,.80314,.896,.80314,.896,.92222,.93372,.92915,1.01411,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.83051,1.00512,.83051,1.00512,.83051,1.00512,1,1,.90284,.99793,.90976,.99793,.86023,.84224,.86023,.84224,.86023,.84224,.86023,1.05326,.86023,.84224,.82873,1.07469,.74,1.09377,1,1,.938,.84869,1.06226,1,1,.84869,.83704,.84869,.81441,.85588,1.08927,.91115,.99793,1,1,.91115,.99793,.91887,.90991,.99793,.8858,.98714,.8858,.98714,.8858,.98714,.894,.91434,.74498,.98196,1,1,.74498,.98196,.73914,.792,.73914,.792,1,1,.73914,.792,1,1,.81363,.904,.81363,1.19137,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89633,1.01915,.8111,.942,.8111,.90531,.856,.90531,.856,.90531,.856,1,.92241,.91755,.86667,.788,.86936,.8858,.89876,1,1,.81363,1.19137,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90388,1.03901,.92138,.78105,.7154,.86169,.80513,.94007,.82528,.98612,1.06226,.91755,.8126,.81884,.92819,.73764,.90531,.90284,.8858,.86023,.8126,.91172,.96518,.91115,.83089,.8858,.87791,.79761,.89297,.81363,.88157,.89992,.85608,.81992,.94307,.86023,.88157,.95308,.98699,.99793,1.06226,.95817,.95308,.97358,.928,.98088,.98699,.92761,.99793,.96017,1.06226,.986,.944,.95978,.938,.96705,.98714,.80442,.98972,1,.89762,1.04552,.95817,.99007,.87064,.91879,.88888,1.06226,.95817,.98714,.95817,.88888,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89633,1.01915,.89633,1.01915,.89633,1.01915,.8111,.942,.9219,1,.89903,1,1,1,.93173,.93173,.93173,1,1.06304,1.06304,1.06904,.89903,.89903,.80549,1,1.156,1,1,.76575,.76575,1,1,.72458,1,1,1,1,.92241,1,1,1,.619,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.07257,1,.74705,.71119,1.02058,1.024,1.02119,1,1,1.1536,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05638,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SegoeuiRegularMetrics=t.SegoeuiRegularFactors=t.SegoeuiItalicMetrics=t.SegoeuiItalicFactors=t.SegoeuiBoldMetrics=t.SegoeuiBoldItalicMetrics=t.SegoeuiBoldItalicFactors=t.SegoeuiBoldFactors=void 0;t.SegoeuiBoldFactors=[1.76738,1,1,.99297,.9824,1.04016,1.06497,1.03424,.97529,1.17647,1.23203,1.1085,1.1085,1.16939,1.2107,.9754,1.21408,.9754,1.59578,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,.81378,.81378,1.2107,1.2107,1.2107,.71703,.97847,.97363,.88776,.8641,1.02096,.79795,.85132,.914,1.06085,1.1406,.8007,.89858,.83693,1.14889,1.09398,.97489,.92094,.97489,.90399,.84041,.95923,1.00135,1,1.06467,.98243,.90996,.99361,1.1085,1.56942,1.1085,1.2107,.74627,.94282,.96752,1.01519,.86304,1.01359,.97278,1.15103,1.01359,.98561,1.02285,1.02285,1.00527,1.02285,1.0302,.99041,1.0008,1.01519,1.01359,1.02258,.79104,1.16862,.99041,.97454,1.02511,.99298,.96752,.95801,.94856,1.16579,.94856,1.2107,.9824,1.03424,1.03424,1,1.03424,1.16579,.8727,1.3871,1.18622,1.10818,1.04478,1.2107,1.18622,.75155,.94994,1.28826,1.21408,1.21408,.91056,1,.91572,.9754,.64663,1.18328,1.24866,1.04478,1.14169,1.15749,1.17389,.71703,.97363,.97363,.97363,.97363,.97363,.97363,.93506,.8641,.79795,.79795,.79795,.79795,1.1406,1.1406,1.1406,1.1406,1.02096,1.09398,.97426,.97426,.97426,.97426,.97426,1.2107,.97489,1.00135,1.00135,1.00135,1.00135,.90996,.92094,1.02798,.96752,.96752,.96752,.96752,.96752,.96752,.93136,.86304,.97278,.97278,.97278,.97278,1.02285,1.02285,1.02285,1.02285,.97122,.99041,1,1,1,1,1,1.28826,1.0008,.99041,.99041,.99041,.99041,.96752,1.01519,.96752,.97363,.96752,.97363,.96752,.97363,.96752,.8641,.86304,.8641,.86304,.8641,.86304,.8641,.86304,1.02096,1.03057,1.02096,1.03517,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.914,1.01359,.914,1.01359,.914,1.01359,1,1,1.06085,.98561,1.06085,1.00879,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,.97138,1.08692,.8007,1.02285,1,1,1.00527,.83693,1.02285,1,1,.83693,.9455,.83693,.90418,.83693,1.13005,1.09398,.99041,1,1,1.09398,.99041,.96692,1.09251,.99041,.97489,1.0008,.97489,1.0008,.97489,1.0008,.93994,.97931,.90399,1.02258,1,1,.90399,1.02258,.84041,.79104,.84041,.79104,.84041,.79104,.84041,.79104,1,1,.95923,1.07034,.95923,1.16862,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.06467,1.02511,.90996,.96752,.90996,.99361,.95801,.99361,.95801,.99361,.95801,1.07733,1.03424,.97363,.96752,.93506,.93136,.97489,1.0008,1,1,.95923,1.16862,1.15103,1.15103,1.01173,1.03959,.75953,.81378,.79912,1.15103,1.21994,.95161,.87815,1.01149,.81525,.7676,.98167,1.01134,1.02546,.84097,1.03089,1.18102,.97363,.88776,.85134,.97826,.79795,.99361,1.06085,.97489,1.1406,.89858,1.0388,1.14889,1.09398,.86039,.97489,1.0595,.92094,.94793,.95923,.90996,.99346,.98243,1.02112,.95493,1.1406,.90996,1.03574,1.02597,1.0008,1.18102,1.06628,1.03574,1.0192,1.01932,1.00886,.97531,1.0106,1.0008,1.13189,1.18102,1.02277,.98683,1.0016,.99561,1.07237,1.0008,.90434,.99921,.93803,.8965,1.23085,1.06628,1.04983,.96268,1.0499,.98439,1.18102,1.06628,1.0008,1.06628,.98439,.79795,1,1,1,1,1,1,1,1,1,1,1,1,1.09466,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.97278,1,1,1,1,1,1,1,1,1,1,1,1,1.02065,1,1,1,1,1,1,1.06467,1.02511,1.06467,1.02511,1.06467,1.02511,.90996,.96752,1,1.21408,.89903,1,1,.75155,1.04394,1.04394,1.04394,1.04394,.98633,.98633,.98633,.73047,.73047,1.20642,.91211,1.25635,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.12454,.93503,1.03424,1.19687,1.03424,1,1,1,.771,1,1,1.15749,1.15749,1.15749,1.10948,.86279,.94434,.86279,.94434,.86182,1,1,1.16897,1,.96085,.90137,1.2107,1.18416,1.13973,.69825,.9716,2.10339,1.29004,1.29004,1.21172,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18874,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.09193,1.09193,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiBoldMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiBoldItalicFactors=[1.76738,1,1,.98946,1.03959,1.04016,1.02809,1.036,.97639,1.10953,1.23203,1.11144,1.11144,1.16939,1.21237,.9754,1.21261,.9754,1.59754,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,.81378,.81378,1.21237,1.21237,1.21237,.73541,.97847,.97363,.89723,.87897,1.0426,.79429,.85292,.91149,1.05815,1.1406,.79631,.90128,.83853,1.04396,1.10615,.97552,.94436,.97552,.88641,.80527,.96083,1.00135,1,1.06777,.9817,.91142,.99361,1.11144,1.57293,1.11144,1.21237,.74627,1.31818,1.06585,.97042,.83055,.97042,.93503,1.1261,.97042,.97922,1.14236,.94552,1.01054,1.14236,1.02471,.97922,.94165,.97042,.97042,1.0276,.78929,1.1261,.97922,.95874,1.02197,.98507,.96752,.97168,.95107,1.16579,.95107,1.21237,1.03959,1.036,1.036,1,1.036,1.16579,.87357,1.31818,1.18754,1.26781,1.05356,1.21237,1.18622,.79487,.94994,1.29004,1.24047,1.24047,1.31818,1,.91484,.9754,1.31818,1.1349,1.24866,1.05356,1.13934,1.15574,1.17389,.73541,.97363,.97363,.97363,.97363,.97363,.97363,.94385,.87897,.79429,.79429,.79429,.79429,1.1406,1.1406,1.1406,1.1406,1.0426,1.10615,.97552,.97552,.97552,.97552,.97552,1.21237,.97552,1.00135,1.00135,1.00135,1.00135,.91142,.94436,.98721,1.06585,1.06585,1.06585,1.06585,1.06585,1.06585,.96705,.83055,.93503,.93503,.93503,.93503,1.14236,1.14236,1.14236,1.14236,.93125,.97922,.94165,.94165,.94165,.94165,.94165,1.29004,.94165,.97922,.97922,.97922,.97922,.96752,.97042,.96752,.97363,1.06585,.97363,1.06585,.97363,1.06585,.87897,.83055,.87897,.83055,.87897,.83055,.87897,.83055,1.0426,1.0033,1.0426,.97042,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.91149,.97042,.91149,.97042,.91149,.97042,1,1,1.05815,.97922,1.05815,.97922,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,.97441,1.04302,.79631,1.01582,1,1,1.01054,.83853,1.14236,1,1,.83853,1.09125,.83853,.90418,.83853,1.19508,1.10615,.97922,1,1,1.10615,.97922,1.01034,1.10466,.97922,.97552,.94165,.97552,.94165,.97552,.94165,.91602,.91981,.88641,1.0276,1,1,.88641,1.0276,.80527,.78929,.80527,.78929,.80527,.78929,.80527,.78929,1,1,.96083,1.05403,.95923,1.16862,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.06777,1.02197,.91142,.96752,.91142,.99361,.97168,.99361,.97168,.99361,.97168,1.23199,1.036,.97363,1.06585,.94385,.96705,.97552,.94165,1,1,.96083,1.1261,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,.95161,1.27126,1.00811,.83284,.77702,.99137,.95253,1.0347,.86142,1.07205,1.14236,.97363,.89723,.86869,1.09818,.79429,.99361,1.05815,.97552,1.1406,.90128,1.06662,1.04396,1.10615,.84918,.97552,1.04694,.94436,.98015,.96083,.91142,1.00356,.9817,1.01945,.98999,1.1406,.91142,1.04961,.9898,1.00639,1.14236,1.07514,1.04961,.99607,1.02897,1.008,.9898,.95134,1.00639,1.11121,1.14236,1.00518,.97981,1.02186,1,1.08578,.94165,.99314,.98387,.93028,.93377,1.35125,1.07514,1.10687,.93491,1.04232,1.00351,1.14236,1.07514,.94165,1.07514,1.00351,.79429,1,1,1,1,1,1,1,1,1,1,1,1,1.09097,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.93503,1,1,1,1,1,1,1,1,1,1,1,1,.96609,1,1,1,1,1,1,1.06777,1.02197,1.06777,1.02197,1.06777,1.02197,.91142,.96752,1,1.21261,.89903,1,1,.75155,1.04745,1.04745,1.04745,1.04394,.98633,.98633,.98633,.72959,.72959,1.20502,.91406,1.26514,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.09125,.93327,1.03336,1.16541,1.036,1,1,1,.771,1,1,1.15574,1.15574,1.15574,1.15574,.86364,.94434,.86279,.94434,.86224,1,1,1.16798,1,.96085,.90068,1.21237,1.18416,1.13904,.69825,.9716,2.10339,1.29004,1.29004,1.21339,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18775,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.13269,1.13269,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiBoldItalicMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiItalicFactors=[1.76738,1,1,.98946,1.14763,1.05365,1.06234,.96927,.92586,1.15373,1.18414,.91349,.91349,1.07403,1.17308,.78383,1.20088,.78383,1.42531,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78383,.78383,1.17308,1.17308,1.17308,.77349,.94565,.94729,.85944,.88506,.9858,.74817,.80016,.88449,.98039,.95782,.69238,.89898,.83231,.98183,1.03989,.96924,.86237,.96924,.80595,.74524,.86091,.95402,.94143,.98448,.8858,.83089,.93285,1.0949,1.39016,1.0949,1.45994,.74627,1.04839,.97454,.97454,.87207,.97454,.87533,1.06151,.97454,1.00176,1.16484,1.08132,.98047,1.16484,1.02989,1.01054,.96225,.97454,.97454,1.06598,.79004,1.16344,1.00351,.94629,.9973,.91016,.96777,.9043,.91082,.92481,.91082,1.17308,.95748,.96927,.96927,1,.96927,.92481,.80597,1.04839,1.23393,1.1781,.9245,1.17308,1.20808,.63218,.94261,1.24822,1.09971,1.09971,1.04839,1,.85273,.78032,1.04839,1.09971,1.22326,.9245,1.09836,1.13525,1.15222,.70424,.94729,.94729,.94729,.94729,.94729,.94729,.85498,.88506,.74817,.74817,.74817,.74817,.95782,.95782,.95782,.95782,.9858,1.03989,.96924,.96924,.96924,.96924,.96924,1.17308,.96924,.95402,.95402,.95402,.95402,.83089,.86237,.88409,.97454,.97454,.97454,.97454,.97454,.97454,.92916,.87207,.87533,.87533,.87533,.87533,.93146,.93146,.93146,.93146,.93854,1.01054,.96225,.96225,.96225,.96225,.96225,1.24822,.8761,1.00351,1.00351,1.00351,1.00351,.96777,.97454,.96777,.94729,.97454,.94729,.97454,.94729,.97454,.88506,.87207,.88506,.87207,.88506,.87207,.88506,.87207,.9858,.95391,.9858,.97454,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.88449,.97454,.88449,.97454,.88449,.97454,1,1,.98039,1.00176,.98039,1.00176,.95782,.93146,.95782,.93146,.95782,.93146,.95782,1.16484,.95782,.93146,.84421,1.12761,.69238,1.08132,1,1,.98047,.83231,1.16484,1,1,.84723,1.04861,.84723,.78755,.83231,1.23736,1.03989,1.01054,1,1,1.03989,1.01054,.9857,1.03849,1.01054,.96924,.96225,.96924,.96225,.96924,.96225,.92383,.90171,.80595,1.06598,1,1,.80595,1.06598,.74524,.79004,.74524,.79004,.74524,.79004,.74524,.79004,1,1,.86091,1.02759,.85771,1.16344,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.98448,.9973,.83089,.96777,.83089,.93285,.9043,.93285,.9043,.93285,.9043,1.31868,.96927,.94729,.97454,.85498,.92916,.96924,.8761,1,1,.86091,1.16344,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,.81965,.81965,.94729,.78032,.71022,.90883,.84171,.99877,.77596,1.05734,1.2,.94729,.85944,.82791,.9607,.74817,.93285,.98039,.96924,.95782,.89898,.98316,.98183,1.03989,.78614,.96924,.97642,.86237,.86075,.86091,.83089,.90082,.8858,.97296,1.01284,.95782,.83089,1.0976,1.04,1.03342,1.2,1.0675,1.0976,.98205,1.03809,1.05097,1.04,.95364,1.03342,1.05401,1.2,1.02148,1.0119,1.04724,1.0127,1.02732,.96225,.8965,.97783,.93574,.94818,1.30679,1.0675,1.11826,.99821,1.0557,1.0326,1.2,1.0675,.96225,1.0675,1.0326,.74817,1,1,1,1,1,1,1,1,1,1,1,1,1.03754,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87533,1,1,1,1,1,1,1,1,1,1,1,1,.98705,1,1,1,1,1,1,.98448,.9973,.98448,.9973,.98448,.9973,.83089,.96777,1,1.20088,.89903,1,1,.75155,.94945,.94945,.94945,.94945,1.12317,1.12317,1.12317,.67603,.67603,1.15621,.73584,1.21191,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87709,.96927,1.01473,.96927,1,1,1,.77295,1,1,1.09836,1.09836,1.09836,1.01522,.86321,.94434,.8649,.94434,.86182,1,1,1.083,1,.91578,.86438,1.17308,1.18416,1.14589,.69825,.97622,1.96791,1.24822,1.24822,1.17308,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.17984,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10742,1.10742,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiItalicMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiRegularFactors=[1.76738,1,1,.98594,1.02285,1.10454,1.06234,.96927,.92037,1.19985,1.2046,.90616,.90616,1.07152,1.1714,.78032,1.20088,.78032,1.40246,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78032,.78032,1.1714,1.1714,1.1714,.80597,.94084,.96706,.85944,.85734,.97093,.75842,.79936,.88198,.9831,.95782,.71387,.86969,.84636,1.07796,1.03584,.96924,.83968,.96924,.82826,.79649,.85771,.95132,.93119,.98965,.88433,.8287,.93365,1.08612,1.3638,1.08612,1.45786,.74627,.80499,.91484,1.05707,.92383,1.05882,.9403,1.12654,1.05882,1.01756,1.09011,1.09011,.99414,1.09011,1.034,1.01756,1.05356,1.05707,1.05882,1.04399,.84863,1.21968,1.01756,.95801,1.00068,.91797,.96777,.9043,.90351,.92105,.90351,1.1714,.85337,.96927,.96927,.99912,.96927,.92105,.80597,1.2434,1.20808,1.05937,.90957,1.1714,1.20808,.75155,.94261,1.24644,1.09971,1.09971,.84751,1,.85273,.78032,.61584,1.05425,1.17914,.90957,1.08665,1.11593,1.14169,.73381,.96706,.96706,.96706,.96706,.96706,.96706,.86035,.85734,.75842,.75842,.75842,.75842,.95782,.95782,.95782,.95782,.97093,1.03584,.96924,.96924,.96924,.96924,.96924,1.1714,.96924,.95132,.95132,.95132,.95132,.8287,.83968,.89049,.91484,.91484,.91484,.91484,.91484,.91484,.93575,.92383,.9403,.9403,.9403,.9403,.8717,.8717,.8717,.8717,1.00527,1.01756,1.05356,1.05356,1.05356,1.05356,1.05356,1.24644,.95923,1.01756,1.01756,1.01756,1.01756,.96777,1.05707,.96777,.96706,.91484,.96706,.91484,.96706,.91484,.85734,.92383,.85734,.92383,.85734,.92383,.85734,.92383,.97093,1.0969,.97093,1.05882,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.88198,1.05882,.88198,1.05882,.88198,1.05882,1,1,.9831,1.01756,.9831,1.01756,.95782,.8717,.95782,.8717,.95782,.8717,.95782,1.09011,.95782,.8717,.84784,1.11551,.71387,1.09011,1,1,.99414,.84636,1.09011,1,1,.84636,1.0536,.84636,.94298,.84636,1.23297,1.03584,1.01756,1,1,1.03584,1.01756,1.00323,1.03444,1.01756,.96924,1.05356,.96924,1.05356,.96924,1.05356,.93066,.98293,.82826,1.04399,1,1,.82826,1.04399,.79649,.84863,.79649,.84863,.79649,.84863,.79649,.84863,1,1,.85771,1.17318,.85771,1.21968,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.98965,1.00068,.8287,.96777,.8287,.93365,.9043,.93365,.9043,.93365,.9043,1.08571,.96927,.96706,.91484,.86035,.93575,.96924,.95923,1,1,.85771,1.21968,1.11437,1.11437,.93109,.91202,.60411,.84164,.55572,1.01173,.97361,.81818,.81818,.96635,.78032,.72727,.92366,.98601,1.03405,.77968,1.09799,1.2,.96706,.85944,.85638,.96491,.75842,.93365,.9831,.96924,.95782,.86969,.94152,1.07796,1.03584,.78437,.96924,.98715,.83968,.83491,.85771,.8287,.94492,.88433,.9287,1.0098,.95782,.8287,1.0625,.98248,1.03424,1.2,1.01071,1.0625,.95246,1.03809,1.04912,.98248,1.00221,1.03424,1.05443,1.2,1.04785,.99609,1.00169,1.05176,.99346,1.05356,.9087,1.03004,.95542,.93117,1.23362,1.01071,1.07831,1.02512,1.05205,1.03502,1.2,1.01071,1.05356,1.01071,1.03502,.75842,1,1,1,1,1,1,1,1,1,1,1,1,1.03719,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9403,1,1,1,1,1,1,1,1,1,1,1,1,1.04021,1,1,1,1,1,1,.98965,1.00068,.98965,1.00068,.98965,1.00068,.8287,.96777,1,1.20088,.89903,1,1,.75155,1.03077,1.03077,1.03077,1.03077,1.13196,1.13196,1.13196,.67428,.67428,1.16039,.73291,1.20996,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87796,.96927,1.01518,.96927,1,1,1,.77295,1,1,1.10539,1.10539,1.11358,1.06967,.86279,.94434,.86279,.94434,.86182,1,1,1.083,1,.91578,.86507,1.1714,1.18416,1.14589,.69825,.97622,1.9697,1.24822,1.24822,1.17238,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18083,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10938,1.10938,1,1,1,1.05425,1.09971,1.09971,1.09971,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiRegularMetrics={lineHeight:1.33008,lineGap:0}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SEAC_ANALYSIS_ENABLED=t.MacStandardGlyphOrdering=t.FontFlags=void 0;t.getFontType=function getFontType(e,t,a=!1){switch(e){case"Type1":return a?r.FontType.TYPE1STANDARD:"Type1C"===t?r.FontType.TYPE1C:r.FontType.TYPE1;case"CIDFontType0":return"CIDFontType0C"===t?r.FontType.CIDFONTTYPE0C:r.FontType.CIDFONTTYPE0;case"OpenType":return r.FontType.OPENTYPE;case"TrueType":return r.FontType.TRUETYPE;case"CIDFontType2":return r.FontType.CIDFONTTYPE2;case"MMType1":return r.FontType.MMTYPE1;case"Type0":return r.FontType.TYPE0;default:return r.FontType.UNKNOWN}};t.normalizeFontName=function normalizeFontName(e){return e.replace(/[,_]/g,"-").replace(/\s/g,"")};t.recoverGlyphName=recoverGlyphName;t.type1FontGlyphMapping=function type1FontGlyphMapping(e,t,a){const r=Object.create(null);let s,c,l;const h=!!(e.flags&o.Symbolic);if(e.isInternalFont){l=t;for(c=0;c=0?s:0}}else if(e.baseEncodingName){l=(0,n.getEncoding)(e.baseEncodingName);for(c=0;c=0?s:0}}else if(h)for(c in t)r[c]=t[c];else{l=n.StandardEncoding;for(c=0;c=0?s:0}}const u=e.differences;let d;if(u)for(c in u){const e=u[c];s=a.indexOf(e);if(-1===s){d||(d=(0,i.getGlyphsUnicode)());const t=recoverGlyphName(e,d);t!==e&&(s=a.indexOf(t))}r[c]=s>=0?s:0}return r};var r=a(2),n=a(19),i=a(20),s=a(21);t.SEAC_ANALYSIS_ENABLED=!0;const o={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144};t.FontFlags=o;t.MacStandardGlyphOrdering=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","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","grave","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","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const a=(0,s.getUnicodeForGlyph)(e,t);if(-1!==a)for(const e in t)if(t[e]===a)return e;(0,r.info)("Unable to recover a standard glyph name for: "+e);return e}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ZapfDingbatsEncoding=t.WinAnsiEncoding=t.SymbolSetEncoding=t.StandardEncoding=t.MacRomanEncoding=t.ExpertEncoding=void 0;t.getEncoding=function getEncoding(e){switch(e){case"WinAnsiEncoding":return s;case"StandardEncoding":return i;case"MacRomanEncoding":return n;case"SymbolSetEncoding":return o;case"ZapfDingbatsEncoding":return c;case"ExpertEncoding":return a;case"MacExpertEncoding":return r;default:return null}};const a=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"];t.ExpertEncoding=a;const r=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],n=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","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","grave","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","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"];t.MacRomanEncoding=n;const i=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""];t.StandardEncoding=i;const s=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","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","grave","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","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"];t.WinAnsiEncoding=s;const o=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""];t.SymbolSetEncoding=o;const c=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];t.ZapfDingbatsEncoding=c},(e,t,a)=>{a.r(t);a.d(t,{getDingbatsGlyphsUnicode:()=>i,getGlyphsUnicode:()=>n});var r=a(8);const n=(0,r.getArrayLookupTableFactory)((function(){return["A",65,"AE",198,"AEacute",508,"AEmacron",482,"AEsmall",63462,"Aacute",193,"Aacutesmall",63457,"Abreve",258,"Abreveacute",7854,"Abrevecyrillic",1232,"Abrevedotbelow",7862,"Abrevegrave",7856,"Abrevehookabove",7858,"Abrevetilde",7860,"Acaron",461,"Acircle",9398,"Acircumflex",194,"Acircumflexacute",7844,"Acircumflexdotbelow",7852,"Acircumflexgrave",7846,"Acircumflexhookabove",7848,"Acircumflexsmall",63458,"Acircumflextilde",7850,"Acute",63177,"Acutesmall",63412,"Acyrillic",1040,"Adblgrave",512,"Adieresis",196,"Adieresiscyrillic",1234,"Adieresismacron",478,"Adieresissmall",63460,"Adotbelow",7840,"Adotmacron",480,"Agrave",192,"Agravesmall",63456,"Ahookabove",7842,"Aiecyrillic",1236,"Ainvertedbreve",514,"Alpha",913,"Alphatonos",902,"Amacron",256,"Amonospace",65313,"Aogonek",260,"Aring",197,"Aringacute",506,"Aringbelow",7680,"Aringsmall",63461,"Asmall",63329,"Atilde",195,"Atildesmall",63459,"Aybarmenian",1329,"B",66,"Bcircle",9399,"Bdotaccent",7682,"Bdotbelow",7684,"Becyrillic",1041,"Benarmenian",1330,"Beta",914,"Bhook",385,"Blinebelow",7686,"Bmonospace",65314,"Brevesmall",63220,"Bsmall",63330,"Btopbar",386,"C",67,"Caarmenian",1342,"Cacute",262,"Caron",63178,"Caronsmall",63221,"Ccaron",268,"Ccedilla",199,"Ccedillaacute",7688,"Ccedillasmall",63463,"Ccircle",9400,"Ccircumflex",264,"Cdot",266,"Cdotaccent",266,"Cedillasmall",63416,"Chaarmenian",1353,"Cheabkhasiancyrillic",1212,"Checyrillic",1063,"Chedescenderabkhasiancyrillic",1214,"Chedescendercyrillic",1206,"Chedieresiscyrillic",1268,"Cheharmenian",1347,"Chekhakassiancyrillic",1227,"Cheverticalstrokecyrillic",1208,"Chi",935,"Chook",391,"Circumflexsmall",63222,"Cmonospace",65315,"Coarmenian",1361,"Csmall",63331,"D",68,"DZ",497,"DZcaron",452,"Daarmenian",1332,"Dafrican",393,"Dcaron",270,"Dcedilla",7696,"Dcircle",9401,"Dcircumflexbelow",7698,"Dcroat",272,"Ddotaccent",7690,"Ddotbelow",7692,"Decyrillic",1044,"Deicoptic",1006,"Delta",8710,"Deltagreek",916,"Dhook",394,"Dieresis",63179,"DieresisAcute",63180,"DieresisGrave",63181,"Dieresissmall",63400,"Digammagreek",988,"Djecyrillic",1026,"Dlinebelow",7694,"Dmonospace",65316,"Dotaccentsmall",63223,"Dslash",272,"Dsmall",63332,"Dtopbar",395,"Dz",498,"Dzcaron",453,"Dzeabkhasiancyrillic",1248,"Dzecyrillic",1029,"Dzhecyrillic",1039,"E",69,"Eacute",201,"Eacutesmall",63465,"Ebreve",276,"Ecaron",282,"Ecedillabreve",7708,"Echarmenian",1333,"Ecircle",9402,"Ecircumflex",202,"Ecircumflexacute",7870,"Ecircumflexbelow",7704,"Ecircumflexdotbelow",7878,"Ecircumflexgrave",7872,"Ecircumflexhookabove",7874,"Ecircumflexsmall",63466,"Ecircumflextilde",7876,"Ecyrillic",1028,"Edblgrave",516,"Edieresis",203,"Edieresissmall",63467,"Edot",278,"Edotaccent",278,"Edotbelow",7864,"Efcyrillic",1060,"Egrave",200,"Egravesmall",63464,"Eharmenian",1335,"Ehookabove",7866,"Eightroman",8551,"Einvertedbreve",518,"Eiotifiedcyrillic",1124,"Elcyrillic",1051,"Elevenroman",8554,"Emacron",274,"Emacronacute",7702,"Emacrongrave",7700,"Emcyrillic",1052,"Emonospace",65317,"Encyrillic",1053,"Endescendercyrillic",1186,"Eng",330,"Enghecyrillic",1188,"Enhookcyrillic",1223,"Eogonek",280,"Eopen",400,"Epsilon",917,"Epsilontonos",904,"Ercyrillic",1056,"Ereversed",398,"Ereversedcyrillic",1069,"Escyrillic",1057,"Esdescendercyrillic",1194,"Esh",425,"Esmall",63333,"Eta",919,"Etarmenian",1336,"Etatonos",905,"Eth",208,"Ethsmall",63472,"Etilde",7868,"Etildebelow",7706,"Euro",8364,"Ezh",439,"Ezhcaron",494,"Ezhreversed",440,"F",70,"Fcircle",9403,"Fdotaccent",7710,"Feharmenian",1366,"Feicoptic",996,"Fhook",401,"Fitacyrillic",1138,"Fiveroman",8548,"Fmonospace",65318,"Fourroman",8547,"Fsmall",63334,"G",71,"GBsquare",13191,"Gacute",500,"Gamma",915,"Gammaafrican",404,"Gangiacoptic",1002,"Gbreve",286,"Gcaron",486,"Gcedilla",290,"Gcircle",9404,"Gcircumflex",284,"Gcommaaccent",290,"Gdot",288,"Gdotaccent",288,"Gecyrillic",1043,"Ghadarmenian",1346,"Ghemiddlehookcyrillic",1172,"Ghestrokecyrillic",1170,"Gheupturncyrillic",1168,"Ghook",403,"Gimarmenian",1331,"Gjecyrillic",1027,"Gmacron",7712,"Gmonospace",65319,"Grave",63182,"Gravesmall",63328,"Gsmall",63335,"Gsmallhook",667,"Gstroke",484,"H",72,"H18533",9679,"H18543",9642,"H18551",9643,"H22073",9633,"HPsquare",13259,"Haabkhasiancyrillic",1192,"Hadescendercyrillic",1202,"Hardsigncyrillic",1066,"Hbar",294,"Hbrevebelow",7722,"Hcedilla",7720,"Hcircle",9405,"Hcircumflex",292,"Hdieresis",7718,"Hdotaccent",7714,"Hdotbelow",7716,"Hmonospace",65320,"Hoarmenian",1344,"Horicoptic",1e3,"Hsmall",63336,"Hungarumlaut",63183,"Hungarumlautsmall",63224,"Hzsquare",13200,"I",73,"IAcyrillic",1071,"IJ",306,"IUcyrillic",1070,"Iacute",205,"Iacutesmall",63469,"Ibreve",300,"Icaron",463,"Icircle",9406,"Icircumflex",206,"Icircumflexsmall",63470,"Icyrillic",1030,"Idblgrave",520,"Idieresis",207,"Idieresisacute",7726,"Idieresiscyrillic",1252,"Idieresissmall",63471,"Idot",304,"Idotaccent",304,"Idotbelow",7882,"Iebrevecyrillic",1238,"Iecyrillic",1045,"Ifraktur",8465,"Igrave",204,"Igravesmall",63468,"Ihookabove",7880,"Iicyrillic",1048,"Iinvertedbreve",522,"Iishortcyrillic",1049,"Imacron",298,"Imacroncyrillic",1250,"Imonospace",65321,"Iniarmenian",1339,"Iocyrillic",1025,"Iogonek",302,"Iota",921,"Iotaafrican",406,"Iotadieresis",938,"Iotatonos",906,"Ismall",63337,"Istroke",407,"Itilde",296,"Itildebelow",7724,"Izhitsacyrillic",1140,"Izhitsadblgravecyrillic",1142,"J",74,"Jaarmenian",1345,"Jcircle",9407,"Jcircumflex",308,"Jecyrillic",1032,"Jheharmenian",1355,"Jmonospace",65322,"Jsmall",63338,"K",75,"KBsquare",13189,"KKsquare",13261,"Kabashkircyrillic",1184,"Kacute",7728,"Kacyrillic",1050,"Kadescendercyrillic",1178,"Kahookcyrillic",1219,"Kappa",922,"Kastrokecyrillic",1182,"Kaverticalstrokecyrillic",1180,"Kcaron",488,"Kcedilla",310,"Kcircle",9408,"Kcommaaccent",310,"Kdotbelow",7730,"Keharmenian",1364,"Kenarmenian",1343,"Khacyrillic",1061,"Kheicoptic",998,"Khook",408,"Kjecyrillic",1036,"Klinebelow",7732,"Kmonospace",65323,"Koppacyrillic",1152,"Koppagreek",990,"Ksicyrillic",1134,"Ksmall",63339,"L",76,"LJ",455,"LL",63167,"Lacute",313,"Lambda",923,"Lcaron",317,"Lcedilla",315,"Lcircle",9409,"Lcircumflexbelow",7740,"Lcommaaccent",315,"Ldot",319,"Ldotaccent",319,"Ldotbelow",7734,"Ldotbelowmacron",7736,"Liwnarmenian",1340,"Lj",456,"Ljecyrillic",1033,"Llinebelow",7738,"Lmonospace",65324,"Lslash",321,"Lslashsmall",63225,"Lsmall",63340,"M",77,"MBsquare",13190,"Macron",63184,"Macronsmall",63407,"Macute",7742,"Mcircle",9410,"Mdotaccent",7744,"Mdotbelow",7746,"Menarmenian",1348,"Mmonospace",65325,"Msmall",63341,"Mturned",412,"Mu",924,"N",78,"NJ",458,"Nacute",323,"Ncaron",327,"Ncedilla",325,"Ncircle",9411,"Ncircumflexbelow",7754,"Ncommaaccent",325,"Ndotaccent",7748,"Ndotbelow",7750,"Nhookleft",413,"Nineroman",8552,"Nj",459,"Njecyrillic",1034,"Nlinebelow",7752,"Nmonospace",65326,"Nowarmenian",1350,"Nsmall",63342,"Ntilde",209,"Ntildesmall",63473,"Nu",925,"O",79,"OE",338,"OEsmall",63226,"Oacute",211,"Oacutesmall",63475,"Obarredcyrillic",1256,"Obarreddieresiscyrillic",1258,"Obreve",334,"Ocaron",465,"Ocenteredtilde",415,"Ocircle",9412,"Ocircumflex",212,"Ocircumflexacute",7888,"Ocircumflexdotbelow",7896,"Ocircumflexgrave",7890,"Ocircumflexhookabove",7892,"Ocircumflexsmall",63476,"Ocircumflextilde",7894,"Ocyrillic",1054,"Odblacute",336,"Odblgrave",524,"Odieresis",214,"Odieresiscyrillic",1254,"Odieresissmall",63478,"Odotbelow",7884,"Ogoneksmall",63227,"Ograve",210,"Ogravesmall",63474,"Oharmenian",1365,"Ohm",8486,"Ohookabove",7886,"Ohorn",416,"Ohornacute",7898,"Ohorndotbelow",7906,"Ohorngrave",7900,"Ohornhookabove",7902,"Ohorntilde",7904,"Ohungarumlaut",336,"Oi",418,"Oinvertedbreve",526,"Omacron",332,"Omacronacute",7762,"Omacrongrave",7760,"Omega",8486,"Omegacyrillic",1120,"Omegagreek",937,"Omegaroundcyrillic",1146,"Omegatitlocyrillic",1148,"Omegatonos",911,"Omicron",927,"Omicrontonos",908,"Omonospace",65327,"Oneroman",8544,"Oogonek",490,"Oogonekmacron",492,"Oopen",390,"Oslash",216,"Oslashacute",510,"Oslashsmall",63480,"Osmall",63343,"Ostrokeacute",510,"Otcyrillic",1150,"Otilde",213,"Otildeacute",7756,"Otildedieresis",7758,"Otildesmall",63477,"P",80,"Pacute",7764,"Pcircle",9413,"Pdotaccent",7766,"Pecyrillic",1055,"Peharmenian",1354,"Pemiddlehookcyrillic",1190,"Phi",934,"Phook",420,"Pi",928,"Piwrarmenian",1363,"Pmonospace",65328,"Psi",936,"Psicyrillic",1136,"Psmall",63344,"Q",81,"Qcircle",9414,"Qmonospace",65329,"Qsmall",63345,"R",82,"Raarmenian",1356,"Racute",340,"Rcaron",344,"Rcedilla",342,"Rcircle",9415,"Rcommaaccent",342,"Rdblgrave",528,"Rdotaccent",7768,"Rdotbelow",7770,"Rdotbelowmacron",7772,"Reharmenian",1360,"Rfraktur",8476,"Rho",929,"Ringsmall",63228,"Rinvertedbreve",530,"Rlinebelow",7774,"Rmonospace",65330,"Rsmall",63346,"Rsmallinverted",641,"Rsmallinvertedsuperior",694,"S",83,"SF010000",9484,"SF020000",9492,"SF030000",9488,"SF040000",9496,"SF050000",9532,"SF060000",9516,"SF070000",9524,"SF080000",9500,"SF090000",9508,"SF100000",9472,"SF110000",9474,"SF190000",9569,"SF200000",9570,"SF210000",9558,"SF220000",9557,"SF230000",9571,"SF240000",9553,"SF250000",9559,"SF260000",9565,"SF270000",9564,"SF280000",9563,"SF360000",9566,"SF370000",9567,"SF380000",9562,"SF390000",9556,"SF400000",9577,"SF410000",9574,"SF420000",9568,"SF430000",9552,"SF440000",9580,"SF450000",9575,"SF460000",9576,"SF470000",9572,"SF480000",9573,"SF490000",9561,"SF500000",9560,"SF510000",9554,"SF520000",9555,"SF530000",9579,"SF540000",9578,"Sacute",346,"Sacutedotaccent",7780,"Sampigreek",992,"Scaron",352,"Scarondotaccent",7782,"Scaronsmall",63229,"Scedilla",350,"Schwa",399,"Schwacyrillic",1240,"Schwadieresiscyrillic",1242,"Scircle",9416,"Scircumflex",348,"Scommaaccent",536,"Sdotaccent",7776,"Sdotbelow",7778,"Sdotbelowdotaccent",7784,"Seharmenian",1357,"Sevenroman",8550,"Shaarmenian",1351,"Shacyrillic",1064,"Shchacyrillic",1065,"Sheicoptic",994,"Shhacyrillic",1210,"Shimacoptic",1004,"Sigma",931,"Sixroman",8549,"Smonospace",65331,"Softsigncyrillic",1068,"Ssmall",63347,"Stigmagreek",986,"T",84,"Tau",932,"Tbar",358,"Tcaron",356,"Tcedilla",354,"Tcircle",9417,"Tcircumflexbelow",7792,"Tcommaaccent",354,"Tdotaccent",7786,"Tdotbelow",7788,"Tecyrillic",1058,"Tedescendercyrillic",1196,"Tenroman",8553,"Tetsecyrillic",1204,"Theta",920,"Thook",428,"Thorn",222,"Thornsmall",63486,"Threeroman",8546,"Tildesmall",63230,"Tiwnarmenian",1359,"Tlinebelow",7790,"Tmonospace",65332,"Toarmenian",1337,"Tonefive",444,"Tonesix",388,"Tonetwo",423,"Tretroflexhook",430,"Tsecyrillic",1062,"Tshecyrillic",1035,"Tsmall",63348,"Twelveroman",8555,"Tworoman",8545,"U",85,"Uacute",218,"Uacutesmall",63482,"Ubreve",364,"Ucaron",467,"Ucircle",9418,"Ucircumflex",219,"Ucircumflexbelow",7798,"Ucircumflexsmall",63483,"Ucyrillic",1059,"Udblacute",368,"Udblgrave",532,"Udieresis",220,"Udieresisacute",471,"Udieresisbelow",7794,"Udieresiscaron",473,"Udieresiscyrillic",1264,"Udieresisgrave",475,"Udieresismacron",469,"Udieresissmall",63484,"Udotbelow",7908,"Ugrave",217,"Ugravesmall",63481,"Uhookabove",7910,"Uhorn",431,"Uhornacute",7912,"Uhorndotbelow",7920,"Uhorngrave",7914,"Uhornhookabove",7916,"Uhorntilde",7918,"Uhungarumlaut",368,"Uhungarumlautcyrillic",1266,"Uinvertedbreve",534,"Ukcyrillic",1144,"Umacron",362,"Umacroncyrillic",1262,"Umacrondieresis",7802,"Umonospace",65333,"Uogonek",370,"Upsilon",933,"Upsilon1",978,"Upsilonacutehooksymbolgreek",979,"Upsilonafrican",433,"Upsilondieresis",939,"Upsilondieresishooksymbolgreek",980,"Upsilonhooksymbol",978,"Upsilontonos",910,"Uring",366,"Ushortcyrillic",1038,"Usmall",63349,"Ustraightcyrillic",1198,"Ustraightstrokecyrillic",1200,"Utilde",360,"Utildeacute",7800,"Utildebelow",7796,"V",86,"Vcircle",9419,"Vdotbelow",7806,"Vecyrillic",1042,"Vewarmenian",1358,"Vhook",434,"Vmonospace",65334,"Voarmenian",1352,"Vsmall",63350,"Vtilde",7804,"W",87,"Wacute",7810,"Wcircle",9420,"Wcircumflex",372,"Wdieresis",7812,"Wdotaccent",7814,"Wdotbelow",7816,"Wgrave",7808,"Wmonospace",65335,"Wsmall",63351,"X",88,"Xcircle",9421,"Xdieresis",7820,"Xdotaccent",7818,"Xeharmenian",1341,"Xi",926,"Xmonospace",65336,"Xsmall",63352,"Y",89,"Yacute",221,"Yacutesmall",63485,"Yatcyrillic",1122,"Ycircle",9422,"Ycircumflex",374,"Ydieresis",376,"Ydieresissmall",63487,"Ydotaccent",7822,"Ydotbelow",7924,"Yericyrillic",1067,"Yerudieresiscyrillic",1272,"Ygrave",7922,"Yhook",435,"Yhookabove",7926,"Yiarmenian",1349,"Yicyrillic",1031,"Yiwnarmenian",1362,"Ymonospace",65337,"Ysmall",63353,"Ytilde",7928,"Yusbigcyrillic",1130,"Yusbigiotifiedcyrillic",1132,"Yuslittlecyrillic",1126,"Yuslittleiotifiedcyrillic",1128,"Z",90,"Zaarmenian",1334,"Zacute",377,"Zcaron",381,"Zcaronsmall",63231,"Zcircle",9423,"Zcircumflex",7824,"Zdot",379,"Zdotaccent",379,"Zdotbelow",7826,"Zecyrillic",1047,"Zedescendercyrillic",1176,"Zedieresiscyrillic",1246,"Zeta",918,"Zhearmenian",1338,"Zhebrevecyrillic",1217,"Zhecyrillic",1046,"Zhedescendercyrillic",1174,"Zhedieresiscyrillic",1244,"Zlinebelow",7828,"Zmonospace",65338,"Zsmall",63354,"Zstroke",437,"a",97,"aabengali",2438,"aacute",225,"aadeva",2310,"aagujarati",2694,"aagurmukhi",2566,"aamatragurmukhi",2622,"aarusquare",13059,"aavowelsignbengali",2494,"aavowelsigndeva",2366,"aavowelsigngujarati",2750,"abbreviationmarkarmenian",1375,"abbreviationsigndeva",2416,"abengali",2437,"abopomofo",12570,"abreve",259,"abreveacute",7855,"abrevecyrillic",1233,"abrevedotbelow",7863,"abrevegrave",7857,"abrevehookabove",7859,"abrevetilde",7861,"acaron",462,"acircle",9424,"acircumflex",226,"acircumflexacute",7845,"acircumflexdotbelow",7853,"acircumflexgrave",7847,"acircumflexhookabove",7849,"acircumflextilde",7851,"acute",180,"acutebelowcmb",791,"acutecmb",769,"acutecomb",769,"acutedeva",2388,"acutelowmod",719,"acutetonecmb",833,"acyrillic",1072,"adblgrave",513,"addakgurmukhi",2673,"adeva",2309,"adieresis",228,"adieresiscyrillic",1235,"adieresismacron",479,"adotbelow",7841,"adotmacron",481,"ae",230,"aeacute",509,"aekorean",12624,"aemacron",483,"afii00208",8213,"afii08941",8356,"afii10017",1040,"afii10018",1041,"afii10019",1042,"afii10020",1043,"afii10021",1044,"afii10022",1045,"afii10023",1025,"afii10024",1046,"afii10025",1047,"afii10026",1048,"afii10027",1049,"afii10028",1050,"afii10029",1051,"afii10030",1052,"afii10031",1053,"afii10032",1054,"afii10033",1055,"afii10034",1056,"afii10035",1057,"afii10036",1058,"afii10037",1059,"afii10038",1060,"afii10039",1061,"afii10040",1062,"afii10041",1063,"afii10042",1064,"afii10043",1065,"afii10044",1066,"afii10045",1067,"afii10046",1068,"afii10047",1069,"afii10048",1070,"afii10049",1071,"afii10050",1168,"afii10051",1026,"afii10052",1027,"afii10053",1028,"afii10054",1029,"afii10055",1030,"afii10056",1031,"afii10057",1032,"afii10058",1033,"afii10059",1034,"afii10060",1035,"afii10061",1036,"afii10062",1038,"afii10063",63172,"afii10064",63173,"afii10065",1072,"afii10066",1073,"afii10067",1074,"afii10068",1075,"afii10069",1076,"afii10070",1077,"afii10071",1105,"afii10072",1078,"afii10073",1079,"afii10074",1080,"afii10075",1081,"afii10076",1082,"afii10077",1083,"afii10078",1084,"afii10079",1085,"afii10080",1086,"afii10081",1087,"afii10082",1088,"afii10083",1089,"afii10084",1090,"afii10085",1091,"afii10086",1092,"afii10087",1093,"afii10088",1094,"afii10089",1095,"afii10090",1096,"afii10091",1097,"afii10092",1098,"afii10093",1099,"afii10094",1100,"afii10095",1101,"afii10096",1102,"afii10097",1103,"afii10098",1169,"afii10099",1106,"afii10100",1107,"afii10101",1108,"afii10102",1109,"afii10103",1110,"afii10104",1111,"afii10105",1112,"afii10106",1113,"afii10107",1114,"afii10108",1115,"afii10109",1116,"afii10110",1118,"afii10145",1039,"afii10146",1122,"afii10147",1138,"afii10148",1140,"afii10192",63174,"afii10193",1119,"afii10194",1123,"afii10195",1139,"afii10196",1141,"afii10831",63175,"afii10832",63176,"afii10846",1241,"afii299",8206,"afii300",8207,"afii301",8205,"afii57381",1642,"afii57388",1548,"afii57392",1632,"afii57393",1633,"afii57394",1634,"afii57395",1635,"afii57396",1636,"afii57397",1637,"afii57398",1638,"afii57399",1639,"afii57400",1640,"afii57401",1641,"afii57403",1563,"afii57407",1567,"afii57409",1569,"afii57410",1570,"afii57411",1571,"afii57412",1572,"afii57413",1573,"afii57414",1574,"afii57415",1575,"afii57416",1576,"afii57417",1577,"afii57418",1578,"afii57419",1579,"afii57420",1580,"afii57421",1581,"afii57422",1582,"afii57423",1583,"afii57424",1584,"afii57425",1585,"afii57426",1586,"afii57427",1587,"afii57428",1588,"afii57429",1589,"afii57430",1590,"afii57431",1591,"afii57432",1592,"afii57433",1593,"afii57434",1594,"afii57440",1600,"afii57441",1601,"afii57442",1602,"afii57443",1603,"afii57444",1604,"afii57445",1605,"afii57446",1606,"afii57448",1608,"afii57449",1609,"afii57450",1610,"afii57451",1611,"afii57452",1612,"afii57453",1613,"afii57454",1614,"afii57455",1615,"afii57456",1616,"afii57457",1617,"afii57458",1618,"afii57470",1607,"afii57505",1700,"afii57506",1662,"afii57507",1670,"afii57508",1688,"afii57509",1711,"afii57511",1657,"afii57512",1672,"afii57513",1681,"afii57514",1722,"afii57519",1746,"afii57534",1749,"afii57636",8362,"afii57645",1470,"afii57658",1475,"afii57664",1488,"afii57665",1489,"afii57666",1490,"afii57667",1491,"afii57668",1492,"afii57669",1493,"afii57670",1494,"afii57671",1495,"afii57672",1496,"afii57673",1497,"afii57674",1498,"afii57675",1499,"afii57676",1500,"afii57677",1501,"afii57678",1502,"afii57679",1503,"afii57680",1504,"afii57681",1505,"afii57682",1506,"afii57683",1507,"afii57684",1508,"afii57685",1509,"afii57686",1510,"afii57687",1511,"afii57688",1512,"afii57689",1513,"afii57690",1514,"afii57694",64298,"afii57695",64299,"afii57700",64331,"afii57705",64287,"afii57716",1520,"afii57717",1521,"afii57718",1522,"afii57723",64309,"afii57793",1460,"afii57794",1461,"afii57795",1462,"afii57796",1467,"afii57797",1464,"afii57798",1463,"afii57799",1456,"afii57800",1458,"afii57801",1457,"afii57802",1459,"afii57803",1474,"afii57804",1473,"afii57806",1465,"afii57807",1468,"afii57839",1469,"afii57841",1471,"afii57842",1472,"afii57929",700,"afii61248",8453,"afii61289",8467,"afii61352",8470,"afii61573",8236,"afii61574",8237,"afii61575",8238,"afii61664",8204,"afii63167",1645,"afii64937",701,"agrave",224,"agujarati",2693,"agurmukhi",2565,"ahiragana",12354,"ahookabove",7843,"aibengali",2448,"aibopomofo",12574,"aideva",2320,"aiecyrillic",1237,"aigujarati",2704,"aigurmukhi",2576,"aimatragurmukhi",2632,"ainarabic",1593,"ainfinalarabic",65226,"aininitialarabic",65227,"ainmedialarabic",65228,"ainvertedbreve",515,"aivowelsignbengali",2504,"aivowelsigndeva",2376,"aivowelsigngujarati",2760,"akatakana",12450,"akatakanahalfwidth",65393,"akorean",12623,"alef",1488,"alefarabic",1575,"alefdageshhebrew",64304,"aleffinalarabic",65166,"alefhamzaabovearabic",1571,"alefhamzaabovefinalarabic",65156,"alefhamzabelowarabic",1573,"alefhamzabelowfinalarabic",65160,"alefhebrew",1488,"aleflamedhebrew",64335,"alefmaddaabovearabic",1570,"alefmaddaabovefinalarabic",65154,"alefmaksuraarabic",1609,"alefmaksurafinalarabic",65264,"alefmaksurainitialarabic",65267,"alefmaksuramedialarabic",65268,"alefpatahhebrew",64302,"alefqamatshebrew",64303,"aleph",8501,"allequal",8780,"alpha",945,"alphatonos",940,"amacron",257,"amonospace",65345,"ampersand",38,"ampersandmonospace",65286,"ampersandsmall",63270,"amsquare",13250,"anbopomofo",12578,"angbopomofo",12580,"angbracketleft",12296,"angbracketright",12297,"angkhankhuthai",3674,"angle",8736,"anglebracketleft",12296,"anglebracketleftvertical",65087,"anglebracketright",12297,"anglebracketrightvertical",65088,"angleleft",9001,"angleright",9002,"angstrom",8491,"anoteleia",903,"anudattadeva",2386,"anusvarabengali",2434,"anusvaradeva",2306,"anusvaragujarati",2690,"aogonek",261,"apaatosquare",13056,"aparen",9372,"apostrophearmenian",1370,"apostrophemod",700,"apple",63743,"approaches",8784,"approxequal",8776,"approxequalorimage",8786,"approximatelyequal",8773,"araeaekorean",12686,"araeakorean",12685,"arc",8978,"arighthalfring",7834,"aring",229,"aringacute",507,"aringbelow",7681,"arrowboth",8596,"arrowdashdown",8675,"arrowdashleft",8672,"arrowdashright",8674,"arrowdashup",8673,"arrowdblboth",8660,"arrowdbldown",8659,"arrowdblleft",8656,"arrowdblright",8658,"arrowdblup",8657,"arrowdown",8595,"arrowdownleft",8601,"arrowdownright",8600,"arrowdownwhite",8681,"arrowheaddownmod",709,"arrowheadleftmod",706,"arrowheadrightmod",707,"arrowheadupmod",708,"arrowhorizex",63719,"arrowleft",8592,"arrowleftdbl",8656,"arrowleftdblstroke",8653,"arrowleftoverright",8646,"arrowleftwhite",8678,"arrowright",8594,"arrowrightdblstroke",8655,"arrowrightheavy",10142,"arrowrightoverleft",8644,"arrowrightwhite",8680,"arrowtableft",8676,"arrowtabright",8677,"arrowup",8593,"arrowupdn",8597,"arrowupdnbse",8616,"arrowupdownbase",8616,"arrowupleft",8598,"arrowupleftofdown",8645,"arrowupright",8599,"arrowupwhite",8679,"arrowvertex",63718,"asciicircum",94,"asciicircummonospace",65342,"asciitilde",126,"asciitildemonospace",65374,"ascript",593,"ascriptturned",594,"asmallhiragana",12353,"asmallkatakana",12449,"asmallkatakanahalfwidth",65383,"asterisk",42,"asteriskaltonearabic",1645,"asteriskarabic",1645,"asteriskmath",8727,"asteriskmonospace",65290,"asterisksmall",65121,"asterism",8258,"asuperior",63209,"asymptoticallyequal",8771,"at",64,"atilde",227,"atmonospace",65312,"atsmall",65131,"aturned",592,"aubengali",2452,"aubopomofo",12576,"audeva",2324,"augujarati",2708,"augurmukhi",2580,"aulengthmarkbengali",2519,"aumatragurmukhi",2636,"auvowelsignbengali",2508,"auvowelsigndeva",2380,"auvowelsigngujarati",2764,"avagrahadeva",2365,"aybarmenian",1377,"ayin",1506,"ayinaltonehebrew",64288,"ayinhebrew",1506,"b",98,"babengali",2476,"backslash",92,"backslashmonospace",65340,"badeva",2348,"bagujarati",2732,"bagurmukhi",2604,"bahiragana",12400,"bahtthai",3647,"bakatakana",12496,"bar",124,"barmonospace",65372,"bbopomofo",12549,"bcircle",9425,"bdotaccent",7683,"bdotbelow",7685,"beamedsixteenthnotes",9836,"because",8757,"becyrillic",1073,"beharabic",1576,"behfinalarabic",65168,"behinitialarabic",65169,"behiragana",12409,"behmedialarabic",65170,"behmeeminitialarabic",64671,"behmeemisolatedarabic",64520,"behnoonfinalarabic",64621,"bekatakana",12505,"benarmenian",1378,"bet",1489,"beta",946,"betasymbolgreek",976,"betdagesh",64305,"betdageshhebrew",64305,"bethebrew",1489,"betrafehebrew",64332,"bhabengali",2477,"bhadeva",2349,"bhagujarati",2733,"bhagurmukhi",2605,"bhook",595,"bihiragana",12403,"bikatakana",12499,"bilabialclick",664,"bindigurmukhi",2562,"birusquare",13105,"blackcircle",9679,"blackdiamond",9670,"blackdownpointingtriangle",9660,"blackleftpointingpointer",9668,"blackleftpointingtriangle",9664,"blacklenticularbracketleft",12304,"blacklenticularbracketleftvertical",65083,"blacklenticularbracketright",12305,"blacklenticularbracketrightvertical",65084,"blacklowerlefttriangle",9699,"blacklowerrighttriangle",9698,"blackrectangle",9644,"blackrightpointingpointer",9658,"blackrightpointingtriangle",9654,"blacksmallsquare",9642,"blacksmilingface",9787,"blacksquare",9632,"blackstar",9733,"blackupperlefttriangle",9700,"blackupperrighttriangle",9701,"blackuppointingsmalltriangle",9652,"blackuppointingtriangle",9650,"blank",9251,"blinebelow",7687,"block",9608,"bmonospace",65346,"bobaimaithai",3610,"bohiragana",12412,"bokatakana",12508,"bparen",9373,"bqsquare",13251,"braceex",63732,"braceleft",123,"braceleftbt",63731,"braceleftmid",63730,"braceleftmonospace",65371,"braceleftsmall",65115,"bracelefttp",63729,"braceleftvertical",65079,"braceright",125,"bracerightbt",63742,"bracerightmid",63741,"bracerightmonospace",65373,"bracerightsmall",65116,"bracerighttp",63740,"bracerightvertical",65080,"bracketleft",91,"bracketleftbt",63728,"bracketleftex",63727,"bracketleftmonospace",65339,"bracketlefttp",63726,"bracketright",93,"bracketrightbt",63739,"bracketrightex",63738,"bracketrightmonospace",65341,"bracketrighttp",63737,"breve",728,"brevebelowcmb",814,"brevecmb",774,"breveinvertedbelowcmb",815,"breveinvertedcmb",785,"breveinverteddoublecmb",865,"bridgebelowcmb",810,"bridgeinvertedbelowcmb",826,"brokenbar",166,"bstroke",384,"bsuperior",63210,"btopbar",387,"buhiragana",12406,"bukatakana",12502,"bullet",8226,"bulletinverse",9688,"bulletoperator",8729,"bullseye",9678,"c",99,"caarmenian",1390,"cabengali",2458,"cacute",263,"cadeva",2330,"cagujarati",2714,"cagurmukhi",2586,"calsquare",13192,"candrabindubengali",2433,"candrabinducmb",784,"candrabindudeva",2305,"candrabindugujarati",2689,"capslock",8682,"careof",8453,"caron",711,"caronbelowcmb",812,"caroncmb",780,"carriagereturn",8629,"cbopomofo",12568,"ccaron",269,"ccedilla",231,"ccedillaacute",7689,"ccircle",9426,"ccircumflex",265,"ccurl",597,"cdot",267,"cdotaccent",267,"cdsquare",13253,"cedilla",184,"cedillacmb",807,"cent",162,"centigrade",8451,"centinferior",63199,"centmonospace",65504,"centoldstyle",63394,"centsuperior",63200,"chaarmenian",1401,"chabengali",2459,"chadeva",2331,"chagujarati",2715,"chagurmukhi",2587,"chbopomofo",12564,"cheabkhasiancyrillic",1213,"checkmark",10003,"checyrillic",1095,"chedescenderabkhasiancyrillic",1215,"chedescendercyrillic",1207,"chedieresiscyrillic",1269,"cheharmenian",1395,"chekhakassiancyrillic",1228,"cheverticalstrokecyrillic",1209,"chi",967,"chieuchacirclekorean",12919,"chieuchaparenkorean",12823,"chieuchcirclekorean",12905,"chieuchkorean",12618,"chieuchparenkorean",12809,"chochangthai",3594,"chochanthai",3592,"chochingthai",3593,"chochoethai",3596,"chook",392,"cieucacirclekorean",12918,"cieucaparenkorean",12822,"cieuccirclekorean",12904,"cieuckorean",12616,"cieucparenkorean",12808,"cieucuparenkorean",12828,"circle",9675,"circlecopyrt",169,"circlemultiply",8855,"circleot",8857,"circleplus",8853,"circlepostalmark",12342,"circlewithlefthalfblack",9680,"circlewithrighthalfblack",9681,"circumflex",710,"circumflexbelowcmb",813,"circumflexcmb",770,"clear",8999,"clickalveolar",450,"clickdental",448,"clicklateral",449,"clickretroflex",451,"club",9827,"clubsuitblack",9827,"clubsuitwhite",9831,"cmcubedsquare",13220,"cmonospace",65347,"cmsquaredsquare",13216,"coarmenian",1409,"colon",58,"colonmonetary",8353,"colonmonospace",65306,"colonsign",8353,"colonsmall",65109,"colontriangularhalfmod",721,"colontriangularmod",720,"comma",44,"commaabovecmb",787,"commaaboverightcmb",789,"commaaccent",63171,"commaarabic",1548,"commaarmenian",1373,"commainferior",63201,"commamonospace",65292,"commareversedabovecmb",788,"commareversedmod",701,"commasmall",65104,"commasuperior",63202,"commaturnedabovecmb",786,"commaturnedmod",699,"compass",9788,"congruent",8773,"contourintegral",8750,"control",8963,"controlACK",6,"controlBEL",7,"controlBS",8,"controlCAN",24,"controlCR",13,"controlDC1",17,"controlDC2",18,"controlDC3",19,"controlDC4",20,"controlDEL",127,"controlDLE",16,"controlEM",25,"controlENQ",5,"controlEOT",4,"controlESC",27,"controlETB",23,"controlETX",3,"controlFF",12,"controlFS",28,"controlGS",29,"controlHT",9,"controlLF",10,"controlNAK",21,"controlNULL",0,"controlRS",30,"controlSI",15,"controlSO",14,"controlSOT",2,"controlSTX",1,"controlSUB",26,"controlSYN",22,"controlUS",31,"controlVT",11,"copyright",169,"copyrightsans",63721,"copyrightserif",63193,"cornerbracketleft",12300,"cornerbracketlefthalfwidth",65378,"cornerbracketleftvertical",65089,"cornerbracketright",12301,"cornerbracketrighthalfwidth",65379,"cornerbracketrightvertical",65090,"corporationsquare",13183,"cosquare",13255,"coverkgsquare",13254,"cparen",9374,"cruzeiro",8354,"cstretched",663,"curlyand",8911,"curlyor",8910,"currency",164,"cyrBreve",63185,"cyrFlex",63186,"cyrbreve",63188,"cyrflex",63189,"d",100,"daarmenian",1380,"dabengali",2470,"dadarabic",1590,"dadeva",2342,"dadfinalarabic",65214,"dadinitialarabic",65215,"dadmedialarabic",65216,"dagesh",1468,"dageshhebrew",1468,"dagger",8224,"daggerdbl",8225,"dagujarati",2726,"dagurmukhi",2598,"dahiragana",12384,"dakatakana",12480,"dalarabic",1583,"dalet",1491,"daletdagesh",64307,"daletdageshhebrew",64307,"dalethebrew",1491,"dalfinalarabic",65194,"dammaarabic",1615,"dammalowarabic",1615,"dammatanaltonearabic",1612,"dammatanarabic",1612,"danda",2404,"dargahebrew",1447,"dargalefthebrew",1447,"dasiapneumatacyrilliccmb",1157,"dblGrave",63187,"dblanglebracketleft",12298,"dblanglebracketleftvertical",65085,"dblanglebracketright",12299,"dblanglebracketrightvertical",65086,"dblarchinvertedbelowcmb",811,"dblarrowleft",8660,"dblarrowright",8658,"dbldanda",2405,"dblgrave",63190,"dblgravecmb",783,"dblintegral",8748,"dbllowline",8215,"dbllowlinecmb",819,"dbloverlinecmb",831,"dblprimemod",698,"dblverticalbar",8214,"dblverticallineabovecmb",782,"dbopomofo",12553,"dbsquare",13256,"dcaron",271,"dcedilla",7697,"dcircle",9427,"dcircumflexbelow",7699,"dcroat",273,"ddabengali",2465,"ddadeva",2337,"ddagujarati",2721,"ddagurmukhi",2593,"ddalarabic",1672,"ddalfinalarabic",64393,"dddhadeva",2396,"ddhabengali",2466,"ddhadeva",2338,"ddhagujarati",2722,"ddhagurmukhi",2594,"ddotaccent",7691,"ddotbelow",7693,"decimalseparatorarabic",1643,"decimalseparatorpersian",1643,"decyrillic",1076,"degree",176,"dehihebrew",1453,"dehiragana",12391,"deicoptic",1007,"dekatakana",12487,"deleteleft",9003,"deleteright",8998,"delta",948,"deltaturned",397,"denominatorminusonenumeratorbengali",2552,"dezh",676,"dhabengali",2471,"dhadeva",2343,"dhagujarati",2727,"dhagurmukhi",2599,"dhook",599,"dialytikatonos",901,"dialytikatonoscmb",836,"diamond",9830,"diamondsuitwhite",9826,"dieresis",168,"dieresisacute",63191,"dieresisbelowcmb",804,"dieresiscmb",776,"dieresisgrave",63192,"dieresistonos",901,"dihiragana",12386,"dikatakana",12482,"dittomark",12291,"divide",247,"divides",8739,"divisionslash",8725,"djecyrillic",1106,"dkshade",9619,"dlinebelow",7695,"dlsquare",13207,"dmacron",273,"dmonospace",65348,"dnblock",9604,"dochadathai",3598,"dodekthai",3604,"dohiragana",12393,"dokatakana",12489,"dollar",36,"dollarinferior",63203,"dollarmonospace",65284,"dollaroldstyle",63268,"dollarsmall",65129,"dollarsuperior",63204,"dong",8363,"dorusquare",13094,"dotaccent",729,"dotaccentcmb",775,"dotbelowcmb",803,"dotbelowcomb",803,"dotkatakana",12539,"dotlessi",305,"dotlessj",63166,"dotlessjstrokehook",644,"dotmath",8901,"dottedcircle",9676,"doubleyodpatah",64287,"doubleyodpatahhebrew",64287,"downtackbelowcmb",798,"downtackmod",725,"dparen",9375,"dsuperior",63211,"dtail",598,"dtopbar",396,"duhiragana",12389,"dukatakana",12485,"dz",499,"dzaltone",675,"dzcaron",454,"dzcurl",677,"dzeabkhasiancyrillic",1249,"dzecyrillic",1109,"dzhecyrillic",1119,"e",101,"eacute",233,"earth",9793,"ebengali",2447,"ebopomofo",12572,"ebreve",277,"ecandradeva",2317,"ecandragujarati",2701,"ecandravowelsigndeva",2373,"ecandravowelsigngujarati",2757,"ecaron",283,"ecedillabreve",7709,"echarmenian",1381,"echyiwnarmenian",1415,"ecircle",9428,"ecircumflex",234,"ecircumflexacute",7871,"ecircumflexbelow",7705,"ecircumflexdotbelow",7879,"ecircumflexgrave",7873,"ecircumflexhookabove",7875,"ecircumflextilde",7877,"ecyrillic",1108,"edblgrave",517,"edeva",2319,"edieresis",235,"edot",279,"edotaccent",279,"edotbelow",7865,"eegurmukhi",2575,"eematragurmukhi",2631,"efcyrillic",1092,"egrave",232,"egujarati",2703,"eharmenian",1383,"ehbopomofo",12573,"ehiragana",12360,"ehookabove",7867,"eibopomofo",12575,"eight",56,"eightarabic",1640,"eightbengali",2542,"eightcircle",9319,"eightcircleinversesansserif",10129,"eightdeva",2414,"eighteencircle",9329,"eighteenparen",9349,"eighteenperiod",9369,"eightgujarati",2798,"eightgurmukhi",2670,"eighthackarabic",1640,"eighthangzhou",12328,"eighthnotebeamed",9835,"eightideographicparen",12839,"eightinferior",8328,"eightmonospace",65304,"eightoldstyle",63288,"eightparen",9339,"eightperiod",9359,"eightpersian",1784,"eightroman",8567,"eightsuperior",8312,"eightthai",3672,"einvertedbreve",519,"eiotifiedcyrillic",1125,"ekatakana",12456,"ekatakanahalfwidth",65396,"ekonkargurmukhi",2676,"ekorean",12628,"elcyrillic",1083,"element",8712,"elevencircle",9322,"elevenparen",9342,"elevenperiod",9362,"elevenroman",8570,"ellipsis",8230,"ellipsisvertical",8942,"emacron",275,"emacronacute",7703,"emacrongrave",7701,"emcyrillic",1084,"emdash",8212,"emdashvertical",65073,"emonospace",65349,"emphasismarkarmenian",1371,"emptyset",8709,"enbopomofo",12579,"encyrillic",1085,"endash",8211,"endashvertical",65074,"endescendercyrillic",1187,"eng",331,"engbopomofo",12581,"enghecyrillic",1189,"enhookcyrillic",1224,"enspace",8194,"eogonek",281,"eokorean",12627,"eopen",603,"eopenclosed",666,"eopenreversed",604,"eopenreversedclosed",606,"eopenreversedhook",605,"eparen",9376,"epsilon",949,"epsilontonos",941,"equal",61,"equalmonospace",65309,"equalsmall",65126,"equalsuperior",8316,"equivalence",8801,"erbopomofo",12582,"ercyrillic",1088,"ereversed",600,"ereversedcyrillic",1101,"escyrillic",1089,"esdescendercyrillic",1195,"esh",643,"eshcurl",646,"eshortdeva",2318,"eshortvowelsigndeva",2374,"eshreversedloop",426,"eshsquatreversed",645,"esmallhiragana",12359,"esmallkatakana",12455,"esmallkatakanahalfwidth",65386,"estimated",8494,"esuperior",63212,"eta",951,"etarmenian",1384,"etatonos",942,"eth",240,"etilde",7869,"etildebelow",7707,"etnahtafoukhhebrew",1425,"etnahtafoukhlefthebrew",1425,"etnahtahebrew",1425,"etnahtalefthebrew",1425,"eturned",477,"eukorean",12641,"euro",8364,"evowelsignbengali",2503,"evowelsigndeva",2375,"evowelsigngujarati",2759,"exclam",33,"exclamarmenian",1372,"exclamdbl",8252,"exclamdown",161,"exclamdownsmall",63393,"exclammonospace",65281,"exclamsmall",63265,"existential",8707,"ezh",658,"ezhcaron",495,"ezhcurl",659,"ezhreversed",441,"ezhtail",442,"f",102,"fadeva",2398,"fagurmukhi",2654,"fahrenheit",8457,"fathaarabic",1614,"fathalowarabic",1614,"fathatanarabic",1611,"fbopomofo",12552,"fcircle",9429,"fdotaccent",7711,"feharabic",1601,"feharmenian",1414,"fehfinalarabic",65234,"fehinitialarabic",65235,"fehmedialarabic",65236,"feicoptic",997,"female",9792,"ff",64256,"f_f",64256,"ffi",64259,"ffl",64260,"fi",64257,"fifteencircle",9326,"fifteenparen",9346,"fifteenperiod",9366,"figuredash",8210,"filledbox",9632,"filledrect",9644,"finalkaf",1498,"finalkafdagesh",64314,"finalkafdageshhebrew",64314,"finalkafhebrew",1498,"finalmem",1501,"finalmemhebrew",1501,"finalnun",1503,"finalnunhebrew",1503,"finalpe",1507,"finalpehebrew",1507,"finaltsadi",1509,"finaltsadihebrew",1509,"firsttonechinese",713,"fisheye",9673,"fitacyrillic",1139,"five",53,"fivearabic",1637,"fivebengali",2539,"fivecircle",9316,"fivecircleinversesansserif",10126,"fivedeva",2411,"fiveeighths",8541,"fivegujarati",2795,"fivegurmukhi",2667,"fivehackarabic",1637,"fivehangzhou",12325,"fiveideographicparen",12836,"fiveinferior",8325,"fivemonospace",65301,"fiveoldstyle",63285,"fiveparen",9336,"fiveperiod",9356,"fivepersian",1781,"fiveroman",8564,"fivesuperior",8309,"fivethai",3669,"fl",64258,"florin",402,"fmonospace",65350,"fmsquare",13209,"fofanthai",3615,"fofathai",3613,"fongmanthai",3663,"forall",8704,"four",52,"fourarabic",1636,"fourbengali",2538,"fourcircle",9315,"fourcircleinversesansserif",10125,"fourdeva",2410,"fourgujarati",2794,"fourgurmukhi",2666,"fourhackarabic",1636,"fourhangzhou",12324,"fourideographicparen",12835,"fourinferior",8324,"fourmonospace",65300,"fournumeratorbengali",2551,"fouroldstyle",63284,"fourparen",9335,"fourperiod",9355,"fourpersian",1780,"fourroman",8563,"foursuperior",8308,"fourteencircle",9325,"fourteenparen",9345,"fourteenperiod",9365,"fourthai",3668,"fourthtonechinese",715,"fparen",9377,"fraction",8260,"franc",8355,"g",103,"gabengali",2455,"gacute",501,"gadeva",2327,"gafarabic",1711,"gaffinalarabic",64403,"gafinitialarabic",64404,"gafmedialarabic",64405,"gagujarati",2711,"gagurmukhi",2583,"gahiragana",12364,"gakatakana",12460,"gamma",947,"gammalatinsmall",611,"gammasuperior",736,"gangiacoptic",1003,"gbopomofo",12557,"gbreve",287,"gcaron",487,"gcedilla",291,"gcircle",9430,"gcircumflex",285,"gcommaaccent",291,"gdot",289,"gdotaccent",289,"gecyrillic",1075,"gehiragana",12370,"gekatakana",12466,"geometricallyequal",8785,"gereshaccenthebrew",1436,"gereshhebrew",1523,"gereshmuqdamhebrew",1437,"germandbls",223,"gershayimaccenthebrew",1438,"gershayimhebrew",1524,"getamark",12307,"ghabengali",2456,"ghadarmenian",1394,"ghadeva",2328,"ghagujarati",2712,"ghagurmukhi",2584,"ghainarabic",1594,"ghainfinalarabic",65230,"ghaininitialarabic",65231,"ghainmedialarabic",65232,"ghemiddlehookcyrillic",1173,"ghestrokecyrillic",1171,"gheupturncyrillic",1169,"ghhadeva",2394,"ghhagurmukhi",2650,"ghook",608,"ghzsquare",13203,"gihiragana",12366,"gikatakana",12462,"gimarmenian",1379,"gimel",1490,"gimeldagesh",64306,"gimeldageshhebrew",64306,"gimelhebrew",1490,"gjecyrillic",1107,"glottalinvertedstroke",446,"glottalstop",660,"glottalstopinverted",662,"glottalstopmod",704,"glottalstopreversed",661,"glottalstopreversedmod",705,"glottalstopreversedsuperior",740,"glottalstopstroke",673,"glottalstopstrokereversed",674,"gmacron",7713,"gmonospace",65351,"gohiragana",12372,"gokatakana",12468,"gparen",9378,"gpasquare",13228,"gradient",8711,"grave",96,"gravebelowcmb",790,"gravecmb",768,"gravecomb",768,"gravedeva",2387,"gravelowmod",718,"gravemonospace",65344,"gravetonecmb",832,"greater",62,"greaterequal",8805,"greaterequalorless",8923,"greatermonospace",65310,"greaterorequivalent",8819,"greaterorless",8823,"greateroverequal",8807,"greatersmall",65125,"gscript",609,"gstroke",485,"guhiragana",12368,"guillemotleft",171,"guillemotright",187,"guilsinglleft",8249,"guilsinglright",8250,"gukatakana",12464,"guramusquare",13080,"gysquare",13257,"h",104,"haabkhasiancyrillic",1193,"haaltonearabic",1729,"habengali",2489,"hadescendercyrillic",1203,"hadeva",2361,"hagujarati",2745,"hagurmukhi",2617,"haharabic",1581,"hahfinalarabic",65186,"hahinitialarabic",65187,"hahiragana",12399,"hahmedialarabic",65188,"haitusquare",13098,"hakatakana",12495,"hakatakanahalfwidth",65418,"halantgurmukhi",2637,"hamzaarabic",1569,"hamzalowarabic",1569,"hangulfiller",12644,"hardsigncyrillic",1098,"harpoonleftbarbup",8636,"harpoonrightbarbup",8640,"hasquare",13258,"hatafpatah",1458,"hatafpatah16",1458,"hatafpatah23",1458,"hatafpatah2f",1458,"hatafpatahhebrew",1458,"hatafpatahnarrowhebrew",1458,"hatafpatahquarterhebrew",1458,"hatafpatahwidehebrew",1458,"hatafqamats",1459,"hatafqamats1b",1459,"hatafqamats28",1459,"hatafqamats34",1459,"hatafqamatshebrew",1459,"hatafqamatsnarrowhebrew",1459,"hatafqamatsquarterhebrew",1459,"hatafqamatswidehebrew",1459,"hatafsegol",1457,"hatafsegol17",1457,"hatafsegol24",1457,"hatafsegol30",1457,"hatafsegolhebrew",1457,"hatafsegolnarrowhebrew",1457,"hatafsegolquarterhebrew",1457,"hatafsegolwidehebrew",1457,"hbar",295,"hbopomofo",12559,"hbrevebelow",7723,"hcedilla",7721,"hcircle",9431,"hcircumflex",293,"hdieresis",7719,"hdotaccent",7715,"hdotbelow",7717,"he",1492,"heart",9829,"heartsuitblack",9829,"heartsuitwhite",9825,"hedagesh",64308,"hedageshhebrew",64308,"hehaltonearabic",1729,"heharabic",1607,"hehebrew",1492,"hehfinalaltonearabic",64423,"hehfinalalttwoarabic",65258,"hehfinalarabic",65258,"hehhamzaabovefinalarabic",64421,"hehhamzaaboveisolatedarabic",64420,"hehinitialaltonearabic",64424,"hehinitialarabic",65259,"hehiragana",12408,"hehmedialaltonearabic",64425,"hehmedialarabic",65260,"heiseierasquare",13179,"hekatakana",12504,"hekatakanahalfwidth",65421,"hekutaarusquare",13110,"henghook",615,"herutusquare",13113,"het",1495,"hethebrew",1495,"hhook",614,"hhooksuperior",689,"hieuhacirclekorean",12923,"hieuhaparenkorean",12827,"hieuhcirclekorean",12909,"hieuhkorean",12622,"hieuhparenkorean",12813,"hihiragana",12402,"hikatakana",12498,"hikatakanahalfwidth",65419,"hiriq",1460,"hiriq14",1460,"hiriq21",1460,"hiriq2d",1460,"hiriqhebrew",1460,"hiriqnarrowhebrew",1460,"hiriqquarterhebrew",1460,"hiriqwidehebrew",1460,"hlinebelow",7830,"hmonospace",65352,"hoarmenian",1392,"hohipthai",3627,"hohiragana",12411,"hokatakana",12507,"hokatakanahalfwidth",65422,"holam",1465,"holam19",1465,"holam26",1465,"holam32",1465,"holamhebrew",1465,"holamnarrowhebrew",1465,"holamquarterhebrew",1465,"holamwidehebrew",1465,"honokhukthai",3630,"hookabovecomb",777,"hookcmb",777,"hookpalatalizedbelowcmb",801,"hookretroflexbelowcmb",802,"hoonsquare",13122,"horicoptic",1001,"horizontalbar",8213,"horncmb",795,"hotsprings",9832,"house",8962,"hparen",9379,"hsuperior",688,"hturned",613,"huhiragana",12405,"huiitosquare",13107,"hukatakana",12501,"hukatakanahalfwidth",65420,"hungarumlaut",733,"hungarumlautcmb",779,"hv",405,"hyphen",45,"hypheninferior",63205,"hyphenmonospace",65293,"hyphensmall",65123,"hyphensuperior",63206,"hyphentwo",8208,"i",105,"iacute",237,"iacyrillic",1103,"ibengali",2439,"ibopomofo",12583,"ibreve",301,"icaron",464,"icircle",9432,"icircumflex",238,"icyrillic",1110,"idblgrave",521,"ideographearthcircle",12943,"ideographfirecircle",12939,"ideographicallianceparen",12863,"ideographiccallparen",12858,"ideographiccentrecircle",12965,"ideographicclose",12294,"ideographiccomma",12289,"ideographiccommaleft",65380,"ideographiccongratulationparen",12855,"ideographiccorrectcircle",12963,"ideographicearthparen",12847,"ideographicenterpriseparen",12861,"ideographicexcellentcircle",12957,"ideographicfestivalparen",12864,"ideographicfinancialcircle",12950,"ideographicfinancialparen",12854,"ideographicfireparen",12843,"ideographichaveparen",12850,"ideographichighcircle",12964,"ideographiciterationmark",12293,"ideographiclaborcircle",12952,"ideographiclaborparen",12856,"ideographicleftcircle",12967,"ideographiclowcircle",12966,"ideographicmedicinecircle",12969,"ideographicmetalparen",12846,"ideographicmoonparen",12842,"ideographicnameparen",12852,"ideographicperiod",12290,"ideographicprintcircle",12958,"ideographicreachparen",12867,"ideographicrepresentparen",12857,"ideographicresourceparen",12862,"ideographicrightcircle",12968,"ideographicsecretcircle",12953,"ideographicselfparen",12866,"ideographicsocietyparen",12851,"ideographicspace",12288,"ideographicspecialparen",12853,"ideographicstockparen",12849,"ideographicstudyparen",12859,"ideographicsunparen",12848,"ideographicsuperviseparen",12860,"ideographicwaterparen",12844,"ideographicwoodparen",12845,"ideographiczero",12295,"ideographmetalcircle",12942,"ideographmooncircle",12938,"ideographnamecircle",12948,"ideographsuncircle",12944,"ideographwatercircle",12940,"ideographwoodcircle",12941,"ideva",2311,"idieresis",239,"idieresisacute",7727,"idieresiscyrillic",1253,"idotbelow",7883,"iebrevecyrillic",1239,"iecyrillic",1077,"ieungacirclekorean",12917,"ieungaparenkorean",12821,"ieungcirclekorean",12903,"ieungkorean",12615,"ieungparenkorean",12807,"igrave",236,"igujarati",2695,"igurmukhi",2567,"ihiragana",12356,"ihookabove",7881,"iibengali",2440,"iicyrillic",1080,"iideva",2312,"iigujarati",2696,"iigurmukhi",2568,"iimatragurmukhi",2624,"iinvertedbreve",523,"iishortcyrillic",1081,"iivowelsignbengali",2496,"iivowelsigndeva",2368,"iivowelsigngujarati",2752,"ij",307,"ikatakana",12452,"ikatakanahalfwidth",65394,"ikorean",12643,"ilde",732,"iluyhebrew",1452,"imacron",299,"imacroncyrillic",1251,"imageorapproximatelyequal",8787,"imatragurmukhi",2623,"imonospace",65353,"increment",8710,"infinity",8734,"iniarmenian",1387,"integral",8747,"integralbottom",8993,"integralbt",8993,"integralex",63733,"integraltop",8992,"integraltp",8992,"intersection",8745,"intisquare",13061,"invbullet",9688,"invcircle",9689,"invsmileface",9787,"iocyrillic",1105,"iogonek",303,"iota",953,"iotadieresis",970,"iotadieresistonos",912,"iotalatin",617,"iotatonos",943,"iparen",9380,"irigurmukhi",2674,"ismallhiragana",12355,"ismallkatakana",12451,"ismallkatakanahalfwidth",65384,"issharbengali",2554,"istroke",616,"isuperior",63213,"iterationhiragana",12445,"iterationkatakana",12541,"itilde",297,"itildebelow",7725,"iubopomofo",12585,"iucyrillic",1102,"ivowelsignbengali",2495,"ivowelsigndeva",2367,"ivowelsigngujarati",2751,"izhitsacyrillic",1141,"izhitsadblgravecyrillic",1143,"j",106,"jaarmenian",1393,"jabengali",2460,"jadeva",2332,"jagujarati",2716,"jagurmukhi",2588,"jbopomofo",12560,"jcaron",496,"jcircle",9433,"jcircumflex",309,"jcrossedtail",669,"jdotlessstroke",607,"jecyrillic",1112,"jeemarabic",1580,"jeemfinalarabic",65182,"jeeminitialarabic",65183,"jeemmedialarabic",65184,"jeharabic",1688,"jehfinalarabic",64395,"jhabengali",2461,"jhadeva",2333,"jhagujarati",2717,"jhagurmukhi",2589,"jheharmenian",1403,"jis",12292,"jmonospace",65354,"jparen",9381,"jsuperior",690,"k",107,"kabashkircyrillic",1185,"kabengali",2453,"kacute",7729,"kacyrillic",1082,"kadescendercyrillic",1179,"kadeva",2325,"kaf",1499,"kafarabic",1603,"kafdagesh",64315,"kafdageshhebrew",64315,"kaffinalarabic",65242,"kafhebrew",1499,"kafinitialarabic",65243,"kafmedialarabic",65244,"kafrafehebrew",64333,"kagujarati",2709,"kagurmukhi",2581,"kahiragana",12363,"kahookcyrillic",1220,"kakatakana",12459,"kakatakanahalfwidth",65398,"kappa",954,"kappasymbolgreek",1008,"kapyeounmieumkorean",12657,"kapyeounphieuphkorean",12676,"kapyeounpieupkorean",12664,"kapyeounssangpieupkorean",12665,"karoriisquare",13069,"kashidaautoarabic",1600,"kashidaautonosidebearingarabic",1600,"kasmallkatakana",12533,"kasquare",13188,"kasraarabic",1616,"kasratanarabic",1613,"kastrokecyrillic",1183,"katahiraprolongmarkhalfwidth",65392,"kaverticalstrokecyrillic",1181,"kbopomofo",12558,"kcalsquare",13193,"kcaron",489,"kcedilla",311,"kcircle",9434,"kcommaaccent",311,"kdotbelow",7731,"keharmenian",1412,"kehiragana",12369,"kekatakana",12465,"kekatakanahalfwidth",65401,"kenarmenian",1391,"kesmallkatakana",12534,"kgreenlandic",312,"khabengali",2454,"khacyrillic",1093,"khadeva",2326,"khagujarati",2710,"khagurmukhi",2582,"khaharabic",1582,"khahfinalarabic",65190,"khahinitialarabic",65191,"khahmedialarabic",65192,"kheicoptic",999,"khhadeva",2393,"khhagurmukhi",2649,"khieukhacirclekorean",12920,"khieukhaparenkorean",12824,"khieukhcirclekorean",12906,"khieukhkorean",12619,"khieukhparenkorean",12810,"khokhaithai",3586,"khokhonthai",3589,"khokhuatthai",3587,"khokhwaithai",3588,"khomutthai",3675,"khook",409,"khorakhangthai",3590,"khzsquare",13201,"kihiragana",12365,"kikatakana",12461,"kikatakanahalfwidth",65399,"kiroguramusquare",13077,"kiromeetorusquare",13078,"kirosquare",13076,"kiyeokacirclekorean",12910,"kiyeokaparenkorean",12814,"kiyeokcirclekorean",12896,"kiyeokkorean",12593,"kiyeokparenkorean",12800,"kiyeoksioskorean",12595,"kjecyrillic",1116,"klinebelow",7733,"klsquare",13208,"kmcubedsquare",13222,"kmonospace",65355,"kmsquaredsquare",13218,"kohiragana",12371,"kohmsquare",13248,"kokaithai",3585,"kokatakana",12467,"kokatakanahalfwidth",65402,"kooposquare",13086,"koppacyrillic",1153,"koreanstandardsymbol",12927,"koroniscmb",835,"kparen",9382,"kpasquare",13226,"ksicyrillic",1135,"ktsquare",13263,"kturned",670,"kuhiragana",12367,"kukatakana",12463,"kukatakanahalfwidth",65400,"kvsquare",13240,"kwsquare",13246,"l",108,"labengali",2482,"lacute",314,"ladeva",2354,"lagujarati",2738,"lagurmukhi",2610,"lakkhangyaothai",3653,"lamaleffinalarabic",65276,"lamalefhamzaabovefinalarabic",65272,"lamalefhamzaaboveisolatedarabic",65271,"lamalefhamzabelowfinalarabic",65274,"lamalefhamzabelowisolatedarabic",65273,"lamalefisolatedarabic",65275,"lamalefmaddaabovefinalarabic",65270,"lamalefmaddaaboveisolatedarabic",65269,"lamarabic",1604,"lambda",955,"lambdastroke",411,"lamed",1500,"lameddagesh",64316,"lameddageshhebrew",64316,"lamedhebrew",1500,"lamfinalarabic",65246,"lamhahinitialarabic",64714,"laminitialarabic",65247,"lamjeeminitialarabic",64713,"lamkhahinitialarabic",64715,"lamlamhehisolatedarabic",65010,"lammedialarabic",65248,"lammeemhahinitialarabic",64904,"lammeeminitialarabic",64716,"largecircle",9711,"lbar",410,"lbelt",620,"lbopomofo",12556,"lcaron",318,"lcedilla",316,"lcircle",9435,"lcircumflexbelow",7741,"lcommaaccent",316,"ldot",320,"ldotaccent",320,"ldotbelow",7735,"ldotbelowmacron",7737,"leftangleabovecmb",794,"lefttackbelowcmb",792,"less",60,"lessequal",8804,"lessequalorgreater",8922,"lessmonospace",65308,"lessorequivalent",8818,"lessorgreater",8822,"lessoverequal",8806,"lesssmall",65124,"lezh",622,"lfblock",9612,"lhookretroflex",621,"lira",8356,"liwnarmenian",1388,"lj",457,"ljecyrillic",1113,"ll",63168,"lladeva",2355,"llagujarati",2739,"llinebelow",7739,"llladeva",2356,"llvocalicbengali",2529,"llvocalicdeva",2401,"llvocalicvowelsignbengali",2531,"llvocalicvowelsigndeva",2403,"lmiddletilde",619,"lmonospace",65356,"lmsquare",13264,"lochulathai",3628,"logicaland",8743,"logicalnot",172,"logicalnotreversed",8976,"logicalor",8744,"lolingthai",3621,"longs",383,"lowlinecenterline",65102,"lowlinecmb",818,"lowlinedashed",65101,"lozenge",9674,"lparen",9383,"lslash",322,"lsquare",8467,"lsuperior",63214,"ltshade",9617,"luthai",3622,"lvocalicbengali",2444,"lvocalicdeva",2316,"lvocalicvowelsignbengali",2530,"lvocalicvowelsigndeva",2402,"lxsquare",13267,"m",109,"mabengali",2478,"macron",175,"macronbelowcmb",817,"macroncmb",772,"macronlowmod",717,"macronmonospace",65507,"macute",7743,"madeva",2350,"magujarati",2734,"magurmukhi",2606,"mahapakhhebrew",1444,"mahapakhlefthebrew",1444,"mahiragana",12414,"maichattawalowleftthai",63637,"maichattawalowrightthai",63636,"maichattawathai",3659,"maichattawaupperleftthai",63635,"maieklowleftthai",63628,"maieklowrightthai",63627,"maiekthai",3656,"maiekupperleftthai",63626,"maihanakatleftthai",63620,"maihanakatthai",3633,"maitaikhuleftthai",63625,"maitaikhuthai",3655,"maitholowleftthai",63631,"maitholowrightthai",63630,"maithothai",3657,"maithoupperleftthai",63629,"maitrilowleftthai",63634,"maitrilowrightthai",63633,"maitrithai",3658,"maitriupperleftthai",63632,"maiyamokthai",3654,"makatakana",12510,"makatakanahalfwidth",65423,"male",9794,"mansyonsquare",13127,"maqafhebrew",1470,"mars",9794,"masoracirclehebrew",1455,"masquare",13187,"mbopomofo",12551,"mbsquare",13268,"mcircle",9436,"mcubedsquare",13221,"mdotaccent",7745,"mdotbelow",7747,"meemarabic",1605,"meemfinalarabic",65250,"meeminitialarabic",65251,"meemmedialarabic",65252,"meemmeeminitialarabic",64721,"meemmeemisolatedarabic",64584,"meetorusquare",13133,"mehiragana",12417,"meizierasquare",13182,"mekatakana",12513,"mekatakanahalfwidth",65426,"mem",1502,"memdagesh",64318,"memdageshhebrew",64318,"memhebrew",1502,"menarmenian",1396,"merkhahebrew",1445,"merkhakefulahebrew",1446,"merkhakefulalefthebrew",1446,"merkhalefthebrew",1445,"mhook",625,"mhzsquare",13202,"middledotkatakanahalfwidth",65381,"middot",183,"mieumacirclekorean",12914,"mieumaparenkorean",12818,"mieumcirclekorean",12900,"mieumkorean",12609,"mieumpansioskorean",12656,"mieumparenkorean",12804,"mieumpieupkorean",12654,"mieumsioskorean",12655,"mihiragana",12415,"mikatakana",12511,"mikatakanahalfwidth",65424,"minus",8722,"minusbelowcmb",800,"minuscircle",8854,"minusmod",727,"minusplus",8723,"minute",8242,"miribaarusquare",13130,"mirisquare",13129,"mlonglegturned",624,"mlsquare",13206,"mmcubedsquare",13219,"mmonospace",65357,"mmsquaredsquare",13215,"mohiragana",12418,"mohmsquare",13249,"mokatakana",12514,"mokatakanahalfwidth",65427,"molsquare",13270,"momathai",3617,"moverssquare",13223,"moverssquaredsquare",13224,"mparen",9384,"mpasquare",13227,"mssquare",13235,"msuperior",63215,"mturned",623,"mu",181,"mu1",181,"muasquare",13186,"muchgreater",8811,"muchless",8810,"mufsquare",13196,"mugreek",956,"mugsquare",13197,"muhiragana",12416,"mukatakana",12512,"mukatakanahalfwidth",65425,"mulsquare",13205,"multiply",215,"mumsquare",13211,"munahhebrew",1443,"munahlefthebrew",1443,"musicalnote",9834,"musicalnotedbl",9835,"musicflatsign",9837,"musicsharpsign",9839,"mussquare",13234,"muvsquare",13238,"muwsquare",13244,"mvmegasquare",13241,"mvsquare",13239,"mwmegasquare",13247,"mwsquare",13245,"n",110,"nabengali",2472,"nabla",8711,"nacute",324,"nadeva",2344,"nagujarati",2728,"nagurmukhi",2600,"nahiragana",12394,"nakatakana",12490,"nakatakanahalfwidth",65413,"napostrophe",329,"nasquare",13185,"nbopomofo",12555,"nbspace",160,"ncaron",328,"ncedilla",326,"ncircle",9437,"ncircumflexbelow",7755,"ncommaaccent",326,"ndotaccent",7749,"ndotbelow",7751,"nehiragana",12397,"nekatakana",12493,"nekatakanahalfwidth",65416,"newsheqelsign",8362,"nfsquare",13195,"ngabengali",2457,"ngadeva",2329,"ngagujarati",2713,"ngagurmukhi",2585,"ngonguthai",3591,"nhiragana",12435,"nhookleft",626,"nhookretroflex",627,"nieunacirclekorean",12911,"nieunaparenkorean",12815,"nieuncieuckorean",12597,"nieuncirclekorean",12897,"nieunhieuhkorean",12598,"nieunkorean",12596,"nieunpansioskorean",12648,"nieunparenkorean",12801,"nieunsioskorean",12647,"nieuntikeutkorean",12646,"nihiragana",12395,"nikatakana",12491,"nikatakanahalfwidth",65414,"nikhahitleftthai",63641,"nikhahitthai",3661,"nine",57,"ninearabic",1641,"ninebengali",2543,"ninecircle",9320,"ninecircleinversesansserif",10130,"ninedeva",2415,"ninegujarati",2799,"ninegurmukhi",2671,"ninehackarabic",1641,"ninehangzhou",12329,"nineideographicparen",12840,"nineinferior",8329,"ninemonospace",65305,"nineoldstyle",63289,"nineparen",9340,"nineperiod",9360,"ninepersian",1785,"nineroman",8568,"ninesuperior",8313,"nineteencircle",9330,"nineteenparen",9350,"nineteenperiod",9370,"ninethai",3673,"nj",460,"njecyrillic",1114,"nkatakana",12531,"nkatakanahalfwidth",65437,"nlegrightlong",414,"nlinebelow",7753,"nmonospace",65358,"nmsquare",13210,"nnabengali",2467,"nnadeva",2339,"nnagujarati",2723,"nnagurmukhi",2595,"nnnadeva",2345,"nohiragana",12398,"nokatakana",12494,"nokatakanahalfwidth",65417,"nonbreakingspace",160,"nonenthai",3603,"nonuthai",3609,"noonarabic",1606,"noonfinalarabic",65254,"noonghunnaarabic",1722,"noonghunnafinalarabic",64415,"nooninitialarabic",65255,"noonjeeminitialarabic",64722,"noonjeemisolatedarabic",64587,"noonmedialarabic",65256,"noonmeeminitialarabic",64725,"noonmeemisolatedarabic",64590,"noonnoonfinalarabic",64653,"notcontains",8716,"notelement",8713,"notelementof",8713,"notequal",8800,"notgreater",8815,"notgreaternorequal",8817,"notgreaternorless",8825,"notidentical",8802,"notless",8814,"notlessnorequal",8816,"notparallel",8742,"notprecedes",8832,"notsubset",8836,"notsucceeds",8833,"notsuperset",8837,"nowarmenian",1398,"nparen",9385,"nssquare",13233,"nsuperior",8319,"ntilde",241,"nu",957,"nuhiragana",12396,"nukatakana",12492,"nukatakanahalfwidth",65415,"nuktabengali",2492,"nuktadeva",2364,"nuktagujarati",2748,"nuktagurmukhi",2620,"numbersign",35,"numbersignmonospace",65283,"numbersignsmall",65119,"numeralsigngreek",884,"numeralsignlowergreek",885,"numero",8470,"nun",1504,"nundagesh",64320,"nundageshhebrew",64320,"nunhebrew",1504,"nvsquare",13237,"nwsquare",13243,"nyabengali",2462,"nyadeva",2334,"nyagujarati",2718,"nyagurmukhi",2590,"o",111,"oacute",243,"oangthai",3629,"obarred",629,"obarredcyrillic",1257,"obarreddieresiscyrillic",1259,"obengali",2451,"obopomofo",12571,"obreve",335,"ocandradeva",2321,"ocandragujarati",2705,"ocandravowelsigndeva",2377,"ocandravowelsigngujarati",2761,"ocaron",466,"ocircle",9438,"ocircumflex",244,"ocircumflexacute",7889,"ocircumflexdotbelow",7897,"ocircumflexgrave",7891,"ocircumflexhookabove",7893,"ocircumflextilde",7895,"ocyrillic",1086,"odblacute",337,"odblgrave",525,"odeva",2323,"odieresis",246,"odieresiscyrillic",1255,"odotbelow",7885,"oe",339,"oekorean",12634,"ogonek",731,"ogonekcmb",808,"ograve",242,"ogujarati",2707,"oharmenian",1413,"ohiragana",12362,"ohookabove",7887,"ohorn",417,"ohornacute",7899,"ohorndotbelow",7907,"ohorngrave",7901,"ohornhookabove",7903,"ohorntilde",7905,"ohungarumlaut",337,"oi",419,"oinvertedbreve",527,"okatakana",12458,"okatakanahalfwidth",65397,"okorean",12631,"olehebrew",1451,"omacron",333,"omacronacute",7763,"omacrongrave",7761,"omdeva",2384,"omega",969,"omega1",982,"omegacyrillic",1121,"omegalatinclosed",631,"omegaroundcyrillic",1147,"omegatitlocyrillic",1149,"omegatonos",974,"omgujarati",2768,"omicron",959,"omicrontonos",972,"omonospace",65359,"one",49,"onearabic",1633,"onebengali",2535,"onecircle",9312,"onecircleinversesansserif",10122,"onedeva",2407,"onedotenleader",8228,"oneeighth",8539,"onefitted",63196,"onegujarati",2791,"onegurmukhi",2663,"onehackarabic",1633,"onehalf",189,"onehangzhou",12321,"oneideographicparen",12832,"oneinferior",8321,"onemonospace",65297,"onenumeratorbengali",2548,"oneoldstyle",63281,"oneparen",9332,"oneperiod",9352,"onepersian",1777,"onequarter",188,"oneroman",8560,"onesuperior",185,"onethai",3665,"onethird",8531,"oogonek",491,"oogonekmacron",493,"oogurmukhi",2579,"oomatragurmukhi",2635,"oopen",596,"oparen",9386,"openbullet",9702,"option",8997,"ordfeminine",170,"ordmasculine",186,"orthogonal",8735,"oshortdeva",2322,"oshortvowelsigndeva",2378,"oslash",248,"oslashacute",511,"osmallhiragana",12361,"osmallkatakana",12457,"osmallkatakanahalfwidth",65387,"ostrokeacute",511,"osuperior",63216,"otcyrillic",1151,"otilde",245,"otildeacute",7757,"otildedieresis",7759,"oubopomofo",12577,"overline",8254,"overlinecenterline",65098,"overlinecmb",773,"overlinedashed",65097,"overlinedblwavy",65100,"overlinewavy",65099,"overscore",175,"ovowelsignbengali",2507,"ovowelsigndeva",2379,"ovowelsigngujarati",2763,"p",112,"paampssquare",13184,"paasentosquare",13099,"pabengali",2474,"pacute",7765,"padeva",2346,"pagedown",8671,"pageup",8670,"pagujarati",2730,"pagurmukhi",2602,"pahiragana",12401,"paiyannoithai",3631,"pakatakana",12497,"palatalizationcyrilliccmb",1156,"palochkacyrillic",1216,"pansioskorean",12671,"paragraph",182,"parallel",8741,"parenleft",40,"parenleftaltonearabic",64830,"parenleftbt",63725,"parenleftex",63724,"parenleftinferior",8333,"parenleftmonospace",65288,"parenleftsmall",65113,"parenleftsuperior",8317,"parenlefttp",63723,"parenleftvertical",65077,"parenright",41,"parenrightaltonearabic",64831,"parenrightbt",63736,"parenrightex",63735,"parenrightinferior",8334,"parenrightmonospace",65289,"parenrightsmall",65114,"parenrightsuperior",8318,"parenrighttp",63734,"parenrightvertical",65078,"partialdiff",8706,"paseqhebrew",1472,"pashtahebrew",1433,"pasquare",13225,"patah",1463,"patah11",1463,"patah1d",1463,"patah2a",1463,"patahhebrew",1463,"patahnarrowhebrew",1463,"patahquarterhebrew",1463,"patahwidehebrew",1463,"pazerhebrew",1441,"pbopomofo",12550,"pcircle",9439,"pdotaccent",7767,"pe",1508,"pecyrillic",1087,"pedagesh",64324,"pedageshhebrew",64324,"peezisquare",13115,"pefinaldageshhebrew",64323,"peharabic",1662,"peharmenian",1402,"pehebrew",1508,"pehfinalarabic",64343,"pehinitialarabic",64344,"pehiragana",12410,"pehmedialarabic",64345,"pekatakana",12506,"pemiddlehookcyrillic",1191,"perafehebrew",64334,"percent",37,"percentarabic",1642,"percentmonospace",65285,"percentsmall",65130,"period",46,"periodarmenian",1417,"periodcentered",183,"periodhalfwidth",65377,"periodinferior",63207,"periodmonospace",65294,"periodsmall",65106,"periodsuperior",63208,"perispomenigreekcmb",834,"perpendicular",8869,"perthousand",8240,"peseta",8359,"pfsquare",13194,"phabengali",2475,"phadeva",2347,"phagujarati",2731,"phagurmukhi",2603,"phi",966,"phi1",981,"phieuphacirclekorean",12922,"phieuphaparenkorean",12826,"phieuphcirclekorean",12908,"phieuphkorean",12621,"phieuphparenkorean",12812,"philatin",632,"phinthuthai",3642,"phisymbolgreek",981,"phook",421,"phophanthai",3614,"phophungthai",3612,"phosamphaothai",3616,"pi",960,"pieupacirclekorean",12915,"pieupaparenkorean",12819,"pieupcieuckorean",12662,"pieupcirclekorean",12901,"pieupkiyeokkorean",12658,"pieupkorean",12610,"pieupparenkorean",12805,"pieupsioskiyeokkorean",12660,"pieupsioskorean",12612,"pieupsiostikeutkorean",12661,"pieupthieuthkorean",12663,"pieuptikeutkorean",12659,"pihiragana",12404,"pikatakana",12500,"pisymbolgreek",982,"piwrarmenian",1411,"plus",43,"plusbelowcmb",799,"pluscircle",8853,"plusminus",177,"plusmod",726,"plusmonospace",65291,"plussmall",65122,"plussuperior",8314,"pmonospace",65360,"pmsquare",13272,"pohiragana",12413,"pointingindexdownwhite",9759,"pointingindexleftwhite",9756,"pointingindexrightwhite",9758,"pointingindexupwhite",9757,"pokatakana",12509,"poplathai",3611,"postalmark",12306,"postalmarkface",12320,"pparen",9387,"precedes",8826,"prescription",8478,"primemod",697,"primereversed",8245,"product",8719,"projective",8965,"prolongedkana",12540,"propellor",8984,"propersubset",8834,"propersuperset",8835,"proportion",8759,"proportional",8733,"psi",968,"psicyrillic",1137,"psilipneumatacyrilliccmb",1158,"pssquare",13232,"puhiragana",12407,"pukatakana",12503,"pvsquare",13236,"pwsquare",13242,"q",113,"qadeva",2392,"qadmahebrew",1448,"qafarabic",1602,"qaffinalarabic",65238,"qafinitialarabic",65239,"qafmedialarabic",65240,"qamats",1464,"qamats10",1464,"qamats1a",1464,"qamats1c",1464,"qamats27",1464,"qamats29",1464,"qamats33",1464,"qamatsde",1464,"qamatshebrew",1464,"qamatsnarrowhebrew",1464,"qamatsqatanhebrew",1464,"qamatsqatannarrowhebrew",1464,"qamatsqatanquarterhebrew",1464,"qamatsqatanwidehebrew",1464,"qamatsquarterhebrew",1464,"qamatswidehebrew",1464,"qarneyparahebrew",1439,"qbopomofo",12561,"qcircle",9440,"qhook",672,"qmonospace",65361,"qof",1511,"qofdagesh",64327,"qofdageshhebrew",64327,"qofhebrew",1511,"qparen",9388,"quarternote",9833,"qubuts",1467,"qubuts18",1467,"qubuts25",1467,"qubuts31",1467,"qubutshebrew",1467,"qubutsnarrowhebrew",1467,"qubutsquarterhebrew",1467,"qubutswidehebrew",1467,"question",63,"questionarabic",1567,"questionarmenian",1374,"questiondown",191,"questiondownsmall",63423,"questiongreek",894,"questionmonospace",65311,"questionsmall",63295,"quotedbl",34,"quotedblbase",8222,"quotedblleft",8220,"quotedblmonospace",65282,"quotedblprime",12318,"quotedblprimereversed",12317,"quotedblright",8221,"quoteleft",8216,"quoteleftreversed",8219,"quotereversed",8219,"quoteright",8217,"quoterightn",329,"quotesinglbase",8218,"quotesingle",39,"quotesinglemonospace",65287,"r",114,"raarmenian",1404,"rabengali",2480,"racute",341,"radeva",2352,"radical",8730,"radicalex",63717,"radoverssquare",13230,"radoverssquaredsquare",13231,"radsquare",13229,"rafe",1471,"rafehebrew",1471,"ragujarati",2736,"ragurmukhi",2608,"rahiragana",12425,"rakatakana",12521,"rakatakanahalfwidth",65431,"ralowerdiagonalbengali",2545,"ramiddlediagonalbengali",2544,"ramshorn",612,"ratio",8758,"rbopomofo",12566,"rcaron",345,"rcedilla",343,"rcircle",9441,"rcommaaccent",343,"rdblgrave",529,"rdotaccent",7769,"rdotbelow",7771,"rdotbelowmacron",7773,"referencemark",8251,"reflexsubset",8838,"reflexsuperset",8839,"registered",174,"registersans",63720,"registerserif",63194,"reharabic",1585,"reharmenian",1408,"rehfinalarabic",65198,"rehiragana",12428,"rekatakana",12524,"rekatakanahalfwidth",65434,"resh",1512,"reshdageshhebrew",64328,"reshhebrew",1512,"reversedtilde",8765,"reviahebrew",1431,"reviamugrashhebrew",1431,"revlogicalnot",8976,"rfishhook",638,"rfishhookreversed",639,"rhabengali",2525,"rhadeva",2397,"rho",961,"rhook",637,"rhookturned",635,"rhookturnedsuperior",693,"rhosymbolgreek",1009,"rhotichookmod",734,"rieulacirclekorean",12913,"rieulaparenkorean",12817,"rieulcirclekorean",12899,"rieulhieuhkorean",12608,"rieulkiyeokkorean",12602,"rieulkiyeoksioskorean",12649,"rieulkorean",12601,"rieulmieumkorean",12603,"rieulpansioskorean",12652,"rieulparenkorean",12803,"rieulphieuphkorean",12607,"rieulpieupkorean",12604,"rieulpieupsioskorean",12651,"rieulsioskorean",12605,"rieulthieuthkorean",12606,"rieultikeutkorean",12650,"rieulyeorinhieuhkorean",12653,"rightangle",8735,"righttackbelowcmb",793,"righttriangle",8895,"rihiragana",12426,"rikatakana",12522,"rikatakanahalfwidth",65432,"ring",730,"ringbelowcmb",805,"ringcmb",778,"ringhalfleft",703,"ringhalfleftarmenian",1369,"ringhalfleftbelowcmb",796,"ringhalfleftcentered",723,"ringhalfright",702,"ringhalfrightbelowcmb",825,"ringhalfrightcentered",722,"rinvertedbreve",531,"rittorusquare",13137,"rlinebelow",7775,"rlongleg",636,"rlonglegturned",634,"rmonospace",65362,"rohiragana",12429,"rokatakana",12525,"rokatakanahalfwidth",65435,"roruathai",3619,"rparen",9389,"rrabengali",2524,"rradeva",2353,"rragurmukhi",2652,"rreharabic",1681,"rrehfinalarabic",64397,"rrvocalicbengali",2528,"rrvocalicdeva",2400,"rrvocalicgujarati",2784,"rrvocalicvowelsignbengali",2500,"rrvocalicvowelsigndeva",2372,"rrvocalicvowelsigngujarati",2756,"rsuperior",63217,"rtblock",9616,"rturned",633,"rturnedsuperior",692,"ruhiragana",12427,"rukatakana",12523,"rukatakanahalfwidth",65433,"rupeemarkbengali",2546,"rupeesignbengali",2547,"rupiah",63197,"ruthai",3620,"rvocalicbengali",2443,"rvocalicdeva",2315,"rvocalicgujarati",2699,"rvocalicvowelsignbengali",2499,"rvocalicvowelsigndeva",2371,"rvocalicvowelsigngujarati",2755,"s",115,"sabengali",2488,"sacute",347,"sacutedotaccent",7781,"sadarabic",1589,"sadeva",2360,"sadfinalarabic",65210,"sadinitialarabic",65211,"sadmedialarabic",65212,"sagujarati",2744,"sagurmukhi",2616,"sahiragana",12373,"sakatakana",12469,"sakatakanahalfwidth",65403,"sallallahoualayhewasallamarabic",65018,"samekh",1505,"samekhdagesh",64321,"samekhdageshhebrew",64321,"samekhhebrew",1505,"saraaathai",3634,"saraaethai",3649,"saraaimaimalaithai",3652,"saraaimaimuanthai",3651,"saraamthai",3635,"saraathai",3632,"saraethai",3648,"saraiileftthai",63622,"saraiithai",3637,"saraileftthai",63621,"saraithai",3636,"saraothai",3650,"saraueeleftthai",63624,"saraueethai",3639,"saraueleftthai",63623,"sarauethai",3638,"sarauthai",3640,"sarauuthai",3641,"sbopomofo",12569,"scaron",353,"scarondotaccent",7783,"scedilla",351,"schwa",601,"schwacyrillic",1241,"schwadieresiscyrillic",1243,"schwahook",602,"scircle",9442,"scircumflex",349,"scommaaccent",537,"sdotaccent",7777,"sdotbelow",7779,"sdotbelowdotaccent",7785,"seagullbelowcmb",828,"second",8243,"secondtonechinese",714,"section",167,"seenarabic",1587,"seenfinalarabic",65202,"seeninitialarabic",65203,"seenmedialarabic",65204,"segol",1462,"segol13",1462,"segol1f",1462,"segol2c",1462,"segolhebrew",1462,"segolnarrowhebrew",1462,"segolquarterhebrew",1462,"segoltahebrew",1426,"segolwidehebrew",1462,"seharmenian",1405,"sehiragana",12379,"sekatakana",12475,"sekatakanahalfwidth",65406,"semicolon",59,"semicolonarabic",1563,"semicolonmonospace",65307,"semicolonsmall",65108,"semivoicedmarkkana",12444,"semivoicedmarkkanahalfwidth",65439,"sentisquare",13090,"sentosquare",13091,"seven",55,"sevenarabic",1639,"sevenbengali",2541,"sevencircle",9318,"sevencircleinversesansserif",10128,"sevendeva",2413,"seveneighths",8542,"sevengujarati",2797,"sevengurmukhi",2669,"sevenhackarabic",1639,"sevenhangzhou",12327,"sevenideographicparen",12838,"seveninferior",8327,"sevenmonospace",65303,"sevenoldstyle",63287,"sevenparen",9338,"sevenperiod",9358,"sevenpersian",1783,"sevenroman",8566,"sevensuperior",8311,"seventeencircle",9328,"seventeenparen",9348,"seventeenperiod",9368,"seventhai",3671,"sfthyphen",173,"shaarmenian",1399,"shabengali",2486,"shacyrillic",1096,"shaddaarabic",1617,"shaddadammaarabic",64609,"shaddadammatanarabic",64606,"shaddafathaarabic",64608,"shaddakasraarabic",64610,"shaddakasratanarabic",64607,"shade",9618,"shadedark",9619,"shadelight",9617,"shademedium",9618,"shadeva",2358,"shagujarati",2742,"shagurmukhi",2614,"shalshelethebrew",1427,"shbopomofo",12565,"shchacyrillic",1097,"sheenarabic",1588,"sheenfinalarabic",65206,"sheeninitialarabic",65207,"sheenmedialarabic",65208,"sheicoptic",995,"sheqel",8362,"sheqelhebrew",8362,"sheva",1456,"sheva115",1456,"sheva15",1456,"sheva22",1456,"sheva2e",1456,"shevahebrew",1456,"shevanarrowhebrew",1456,"shevaquarterhebrew",1456,"shevawidehebrew",1456,"shhacyrillic",1211,"shimacoptic",1005,"shin",1513,"shindagesh",64329,"shindageshhebrew",64329,"shindageshshindot",64300,"shindageshshindothebrew",64300,"shindageshsindot",64301,"shindageshsindothebrew",64301,"shindothebrew",1473,"shinhebrew",1513,"shinshindot",64298,"shinshindothebrew",64298,"shinsindot",64299,"shinsindothebrew",64299,"shook",642,"sigma",963,"sigma1",962,"sigmafinal",962,"sigmalunatesymbolgreek",1010,"sihiragana",12375,"sikatakana",12471,"sikatakanahalfwidth",65404,"siluqhebrew",1469,"siluqlefthebrew",1469,"similar",8764,"sindothebrew",1474,"siosacirclekorean",12916,"siosaparenkorean",12820,"sioscieuckorean",12670,"sioscirclekorean",12902,"sioskiyeokkorean",12666,"sioskorean",12613,"siosnieunkorean",12667,"siosparenkorean",12806,"siospieupkorean",12669,"siostikeutkorean",12668,"six",54,"sixarabic",1638,"sixbengali",2540,"sixcircle",9317,"sixcircleinversesansserif",10127,"sixdeva",2412,"sixgujarati",2796,"sixgurmukhi",2668,"sixhackarabic",1638,"sixhangzhou",12326,"sixideographicparen",12837,"sixinferior",8326,"sixmonospace",65302,"sixoldstyle",63286,"sixparen",9337,"sixperiod",9357,"sixpersian",1782,"sixroman",8565,"sixsuperior",8310,"sixteencircle",9327,"sixteencurrencydenominatorbengali",2553,"sixteenparen",9347,"sixteenperiod",9367,"sixthai",3670,"slash",47,"slashmonospace",65295,"slong",383,"slongdotaccent",7835,"smileface",9786,"smonospace",65363,"sofpasuqhebrew",1475,"softhyphen",173,"softsigncyrillic",1100,"sohiragana",12381,"sokatakana",12477,"sokatakanahalfwidth",65407,"soliduslongoverlaycmb",824,"solidusshortoverlaycmb",823,"sorusithai",3625,"sosalathai",3624,"sosothai",3595,"sosuathai",3626,"space",32,"spacehackarabic",32,"spade",9824,"spadesuitblack",9824,"spadesuitwhite",9828,"sparen",9390,"squarebelowcmb",827,"squarecc",13252,"squarecm",13213,"squarediagonalcrosshatchfill",9641,"squarehorizontalfill",9636,"squarekg",13199,"squarekm",13214,"squarekmcapital",13262,"squareln",13265,"squarelog",13266,"squaremg",13198,"squaremil",13269,"squaremm",13212,"squaremsquared",13217,"squareorthogonalcrosshatchfill",9638,"squareupperlefttolowerrightfill",9639,"squareupperrighttolowerleftfill",9640,"squareverticalfill",9637,"squarewhitewithsmallblack",9635,"srsquare",13275,"ssabengali",2487,"ssadeva",2359,"ssagujarati",2743,"ssangcieuckorean",12617,"ssanghieuhkorean",12677,"ssangieungkorean",12672,"ssangkiyeokkorean",12594,"ssangnieunkorean",12645,"ssangpieupkorean",12611,"ssangsioskorean",12614,"ssangtikeutkorean",12600,"ssuperior",63218,"sterling",163,"sterlingmonospace",65505,"strokelongoverlaycmb",822,"strokeshortoverlaycmb",821,"subset",8834,"subsetnotequal",8842,"subsetorequal",8838,"succeeds",8827,"suchthat",8715,"suhiragana",12377,"sukatakana",12473,"sukatakanahalfwidth",65405,"sukunarabic",1618,"summation",8721,"sun",9788,"superset",8835,"supersetnotequal",8843,"supersetorequal",8839,"svsquare",13276,"syouwaerasquare",13180,"t",116,"tabengali",2468,"tackdown",8868,"tackleft",8867,"tadeva",2340,"tagujarati",2724,"tagurmukhi",2596,"taharabic",1591,"tahfinalarabic",65218,"tahinitialarabic",65219,"tahiragana",12383,"tahmedialarabic",65220,"taisyouerasquare",13181,"takatakana",12479,"takatakanahalfwidth",65408,"tatweelarabic",1600,"tau",964,"tav",1514,"tavdages",64330,"tavdagesh",64330,"tavdageshhebrew",64330,"tavhebrew",1514,"tbar",359,"tbopomofo",12554,"tcaron",357,"tccurl",680,"tcedilla",355,"tcheharabic",1670,"tchehfinalarabic",64379,"tchehinitialarabic",64380,"tchehmedialarabic",64381,"tcircle",9443,"tcircumflexbelow",7793,"tcommaaccent",355,"tdieresis",7831,"tdotaccent",7787,"tdotbelow",7789,"tecyrillic",1090,"tedescendercyrillic",1197,"teharabic",1578,"tehfinalarabic",65174,"tehhahinitialarabic",64674,"tehhahisolatedarabic",64524,"tehinitialarabic",65175,"tehiragana",12390,"tehjeeminitialarabic",64673,"tehjeemisolatedarabic",64523,"tehmarbutaarabic",1577,"tehmarbutafinalarabic",65172,"tehmedialarabic",65176,"tehmeeminitialarabic",64676,"tehmeemisolatedarabic",64526,"tehnoonfinalarabic",64627,"tekatakana",12486,"tekatakanahalfwidth",65411,"telephone",8481,"telephoneblack",9742,"telishagedolahebrew",1440,"telishaqetanahebrew",1449,"tencircle",9321,"tenideographicparen",12841,"tenparen",9341,"tenperiod",9361,"tenroman",8569,"tesh",679,"tet",1496,"tetdagesh",64312,"tetdageshhebrew",64312,"tethebrew",1496,"tetsecyrillic",1205,"tevirhebrew",1435,"tevirlefthebrew",1435,"thabengali",2469,"thadeva",2341,"thagujarati",2725,"thagurmukhi",2597,"thalarabic",1584,"thalfinalarabic",65196,"thanthakhatlowleftthai",63640,"thanthakhatlowrightthai",63639,"thanthakhatthai",3660,"thanthakhatupperleftthai",63638,"theharabic",1579,"thehfinalarabic",65178,"thehinitialarabic",65179,"thehmedialarabic",65180,"thereexists",8707,"therefore",8756,"theta",952,"theta1",977,"thetasymbolgreek",977,"thieuthacirclekorean",12921,"thieuthaparenkorean",12825,"thieuthcirclekorean",12907,"thieuthkorean",12620,"thieuthparenkorean",12811,"thirteencircle",9324,"thirteenparen",9344,"thirteenperiod",9364,"thonangmonthothai",3601,"thook",429,"thophuthaothai",3602,"thorn",254,"thothahanthai",3607,"thothanthai",3600,"thothongthai",3608,"thothungthai",3606,"thousandcyrillic",1154,"thousandsseparatorarabic",1644,"thousandsseparatorpersian",1644,"three",51,"threearabic",1635,"threebengali",2537,"threecircle",9314,"threecircleinversesansserif",10124,"threedeva",2409,"threeeighths",8540,"threegujarati",2793,"threegurmukhi",2665,"threehackarabic",1635,"threehangzhou",12323,"threeideographicparen",12834,"threeinferior",8323,"threemonospace",65299,"threenumeratorbengali",2550,"threeoldstyle",63283,"threeparen",9334,"threeperiod",9354,"threepersian",1779,"threequarters",190,"threequartersemdash",63198,"threeroman",8562,"threesuperior",179,"threethai",3667,"thzsquare",13204,"tihiragana",12385,"tikatakana",12481,"tikatakanahalfwidth",65409,"tikeutacirclekorean",12912,"tikeutaparenkorean",12816,"tikeutcirclekorean",12898,"tikeutkorean",12599,"tikeutparenkorean",12802,"tilde",732,"tildebelowcmb",816,"tildecmb",771,"tildecomb",771,"tildedoublecmb",864,"tildeoperator",8764,"tildeoverlaycmb",820,"tildeverticalcmb",830,"timescircle",8855,"tipehahebrew",1430,"tipehalefthebrew",1430,"tippigurmukhi",2672,"titlocyrilliccmb",1155,"tiwnarmenian",1407,"tlinebelow",7791,"tmonospace",65364,"toarmenian",1385,"tohiragana",12392,"tokatakana",12488,"tokatakanahalfwidth",65412,"tonebarextrahighmod",741,"tonebarextralowmod",745,"tonebarhighmod",742,"tonebarlowmod",744,"tonebarmidmod",743,"tonefive",445,"tonesix",389,"tonetwo",424,"tonos",900,"tonsquare",13095,"topatakthai",3599,"tortoiseshellbracketleft",12308,"tortoiseshellbracketleftsmall",65117,"tortoiseshellbracketleftvertical",65081,"tortoiseshellbracketright",12309,"tortoiseshellbracketrightsmall",65118,"tortoiseshellbracketrightvertical",65082,"totaothai",3605,"tpalatalhook",427,"tparen",9391,"trademark",8482,"trademarksans",63722,"trademarkserif",63195,"tretroflexhook",648,"triagdn",9660,"triaglf",9668,"triagrt",9658,"triagup",9650,"ts",678,"tsadi",1510,"tsadidagesh",64326,"tsadidageshhebrew",64326,"tsadihebrew",1510,"tsecyrillic",1094,"tsere",1461,"tsere12",1461,"tsere1e",1461,"tsere2b",1461,"tserehebrew",1461,"tserenarrowhebrew",1461,"tserequarterhebrew",1461,"tserewidehebrew",1461,"tshecyrillic",1115,"tsuperior",63219,"ttabengali",2463,"ttadeva",2335,"ttagujarati",2719,"ttagurmukhi",2591,"tteharabic",1657,"ttehfinalarabic",64359,"ttehinitialarabic",64360,"ttehmedialarabic",64361,"tthabengali",2464,"tthadeva",2336,"tthagujarati",2720,"tthagurmukhi",2592,"tturned",647,"tuhiragana",12388,"tukatakana",12484,"tukatakanahalfwidth",65410,"tusmallhiragana",12387,"tusmallkatakana",12483,"tusmallkatakanahalfwidth",65391,"twelvecircle",9323,"twelveparen",9343,"twelveperiod",9363,"twelveroman",8571,"twentycircle",9331,"twentyhangzhou",21316,"twentyparen",9351,"twentyperiod",9371,"two",50,"twoarabic",1634,"twobengali",2536,"twocircle",9313,"twocircleinversesansserif",10123,"twodeva",2408,"twodotenleader",8229,"twodotleader",8229,"twodotleadervertical",65072,"twogujarati",2792,"twogurmukhi",2664,"twohackarabic",1634,"twohangzhou",12322,"twoideographicparen",12833,"twoinferior",8322,"twomonospace",65298,"twonumeratorbengali",2549,"twooldstyle",63282,"twoparen",9333,"twoperiod",9353,"twopersian",1778,"tworoman",8561,"twostroke",443,"twosuperior",178,"twothai",3666,"twothirds",8532,"u",117,"uacute",250,"ubar",649,"ubengali",2441,"ubopomofo",12584,"ubreve",365,"ucaron",468,"ucircle",9444,"ucircumflex",251,"ucircumflexbelow",7799,"ucyrillic",1091,"udattadeva",2385,"udblacute",369,"udblgrave",533,"udeva",2313,"udieresis",252,"udieresisacute",472,"udieresisbelow",7795,"udieresiscaron",474,"udieresiscyrillic",1265,"udieresisgrave",476,"udieresismacron",470,"udotbelow",7909,"ugrave",249,"ugujarati",2697,"ugurmukhi",2569,"uhiragana",12358,"uhookabove",7911,"uhorn",432,"uhornacute",7913,"uhorndotbelow",7921,"uhorngrave",7915,"uhornhookabove",7917,"uhorntilde",7919,"uhungarumlaut",369,"uhungarumlautcyrillic",1267,"uinvertedbreve",535,"ukatakana",12454,"ukatakanahalfwidth",65395,"ukcyrillic",1145,"ukorean",12636,"umacron",363,"umacroncyrillic",1263,"umacrondieresis",7803,"umatragurmukhi",2625,"umonospace",65365,"underscore",95,"underscoredbl",8215,"underscoremonospace",65343,"underscorevertical",65075,"underscorewavy",65103,"union",8746,"universal",8704,"uogonek",371,"uparen",9392,"upblock",9600,"upperdothebrew",1476,"upsilon",965,"upsilondieresis",971,"upsilondieresistonos",944,"upsilonlatin",650,"upsilontonos",973,"uptackbelowcmb",797,"uptackmod",724,"uragurmukhi",2675,"uring",367,"ushortcyrillic",1118,"usmallhiragana",12357,"usmallkatakana",12453,"usmallkatakanahalfwidth",65385,"ustraightcyrillic",1199,"ustraightstrokecyrillic",1201,"utilde",361,"utildeacute",7801,"utildebelow",7797,"uubengali",2442,"uudeva",2314,"uugujarati",2698,"uugurmukhi",2570,"uumatragurmukhi",2626,"uuvowelsignbengali",2498,"uuvowelsigndeva",2370,"uuvowelsigngujarati",2754,"uvowelsignbengali",2497,"uvowelsigndeva",2369,"uvowelsigngujarati",2753,"v",118,"vadeva",2357,"vagujarati",2741,"vagurmukhi",2613,"vakatakana",12535,"vav",1493,"vavdagesh",64309,"vavdagesh65",64309,"vavdageshhebrew",64309,"vavhebrew",1493,"vavholam",64331,"vavholamhebrew",64331,"vavvavhebrew",1520,"vavyodhebrew",1521,"vcircle",9445,"vdotbelow",7807,"vecyrillic",1074,"veharabic",1700,"vehfinalarabic",64363,"vehinitialarabic",64364,"vehmedialarabic",64365,"vekatakana",12537,"venus",9792,"verticalbar",124,"verticallineabovecmb",781,"verticallinebelowcmb",809,"verticallinelowmod",716,"verticallinemod",712,"vewarmenian",1406,"vhook",651,"vikatakana",12536,"viramabengali",2509,"viramadeva",2381,"viramagujarati",2765,"visargabengali",2435,"visargadeva",2307,"visargagujarati",2691,"vmonospace",65366,"voarmenian",1400,"voicediterationhiragana",12446,"voicediterationkatakana",12542,"voicedmarkkana",12443,"voicedmarkkanahalfwidth",65438,"vokatakana",12538,"vparen",9393,"vtilde",7805,"vturned",652,"vuhiragana",12436,"vukatakana",12532,"w",119,"wacute",7811,"waekorean",12633,"wahiragana",12431,"wakatakana",12527,"wakatakanahalfwidth",65436,"wakorean",12632,"wasmallhiragana",12430,"wasmallkatakana",12526,"wattosquare",13143,"wavedash",12316,"wavyunderscorevertical",65076,"wawarabic",1608,"wawfinalarabic",65262,"wawhamzaabovearabic",1572,"wawhamzaabovefinalarabic",65158,"wbsquare",13277,"wcircle",9446,"wcircumflex",373,"wdieresis",7813,"wdotaccent",7815,"wdotbelow",7817,"wehiragana",12433,"weierstrass",8472,"wekatakana",12529,"wekorean",12638,"weokorean",12637,"wgrave",7809,"whitebullet",9702,"whitecircle",9675,"whitecircleinverse",9689,"whitecornerbracketleft",12302,"whitecornerbracketleftvertical",65091,"whitecornerbracketright",12303,"whitecornerbracketrightvertical",65092,"whitediamond",9671,"whitediamondcontainingblacksmalldiamond",9672,"whitedownpointingsmalltriangle",9663,"whitedownpointingtriangle",9661,"whiteleftpointingsmalltriangle",9667,"whiteleftpointingtriangle",9665,"whitelenticularbracketleft",12310,"whitelenticularbracketright",12311,"whiterightpointingsmalltriangle",9657,"whiterightpointingtriangle",9655,"whitesmallsquare",9643,"whitesmilingface",9786,"whitesquare",9633,"whitestar",9734,"whitetelephone",9743,"whitetortoiseshellbracketleft",12312,"whitetortoiseshellbracketright",12313,"whiteuppointingsmalltriangle",9653,"whiteuppointingtriangle",9651,"wihiragana",12432,"wikatakana",12528,"wikorean",12639,"wmonospace",65367,"wohiragana",12434,"wokatakana",12530,"wokatakanahalfwidth",65382,"won",8361,"wonmonospace",65510,"wowaenthai",3623,"wparen",9394,"wring",7832,"wsuperior",695,"wturned",653,"wynn",447,"x",120,"xabovecmb",829,"xbopomofo",12562,"xcircle",9447,"xdieresis",7821,"xdotaccent",7819,"xeharmenian",1389,"xi",958,"xmonospace",65368,"xparen",9395,"xsuperior",739,"y",121,"yaadosquare",13134,"yabengali",2479,"yacute",253,"yadeva",2351,"yaekorean",12626,"yagujarati",2735,"yagurmukhi",2607,"yahiragana",12420,"yakatakana",12516,"yakatakanahalfwidth",65428,"yakorean",12625,"yamakkanthai",3662,"yasmallhiragana",12419,"yasmallkatakana",12515,"yasmallkatakanahalfwidth",65388,"yatcyrillic",1123,"ycircle",9448,"ycircumflex",375,"ydieresis",255,"ydotaccent",7823,"ydotbelow",7925,"yeharabic",1610,"yehbarreearabic",1746,"yehbarreefinalarabic",64431,"yehfinalarabic",65266,"yehhamzaabovearabic",1574,"yehhamzaabovefinalarabic",65162,"yehhamzaaboveinitialarabic",65163,"yehhamzaabovemedialarabic",65164,"yehinitialarabic",65267,"yehmedialarabic",65268,"yehmeeminitialarabic",64733,"yehmeemisolatedarabic",64600,"yehnoonfinalarabic",64660,"yehthreedotsbelowarabic",1745,"yekorean",12630,"yen",165,"yenmonospace",65509,"yeokorean",12629,"yeorinhieuhkorean",12678,"yerahbenyomohebrew",1450,"yerahbenyomolefthebrew",1450,"yericyrillic",1099,"yerudieresiscyrillic",1273,"yesieungkorean",12673,"yesieungpansioskorean",12675,"yesieungsioskorean",12674,"yetivhebrew",1434,"ygrave",7923,"yhook",436,"yhookabove",7927,"yiarmenian",1397,"yicyrillic",1111,"yikorean",12642,"yinyang",9775,"yiwnarmenian",1410,"ymonospace",65369,"yod",1497,"yoddagesh",64313,"yoddageshhebrew",64313,"yodhebrew",1497,"yodyodhebrew",1522,"yodyodpatahhebrew",64287,"yohiragana",12424,"yoikorean",12681,"yokatakana",12520,"yokatakanahalfwidth",65430,"yokorean",12635,"yosmallhiragana",12423,"yosmallkatakana",12519,"yosmallkatakanahalfwidth",65390,"yotgreek",1011,"yoyaekorean",12680,"yoyakorean",12679,"yoyakthai",3618,"yoyingthai",3597,"yparen",9396,"ypogegrammeni",890,"ypogegrammenigreekcmb",837,"yr",422,"yring",7833,"ysuperior",696,"ytilde",7929,"yturned",654,"yuhiragana",12422,"yuikorean",12684,"yukatakana",12518,"yukatakanahalfwidth",65429,"yukorean",12640,"yusbigcyrillic",1131,"yusbigiotifiedcyrillic",1133,"yuslittlecyrillic",1127,"yuslittleiotifiedcyrillic",1129,"yusmallhiragana",12421,"yusmallkatakana",12517,"yusmallkatakanahalfwidth",65389,"yuyekorean",12683,"yuyeokorean",12682,"yyabengali",2527,"yyadeva",2399,"z",122,"zaarmenian",1382,"zacute",378,"zadeva",2395,"zagurmukhi",2651,"zaharabic",1592,"zahfinalarabic",65222,"zahinitialarabic",65223,"zahiragana",12374,"zahmedialarabic",65224,"zainarabic",1586,"zainfinalarabic",65200,"zakatakana",12470,"zaqefgadolhebrew",1429,"zaqefqatanhebrew",1428,"zarqahebrew",1432,"zayin",1494,"zayindagesh",64310,"zayindageshhebrew",64310,"zayinhebrew",1494,"zbopomofo",12567,"zcaron",382,"zcircle",9449,"zcircumflex",7825,"zcurl",657,"zdot",380,"zdotaccent",380,"zdotbelow",7827,"zecyrillic",1079,"zedescendercyrillic",1177,"zedieresiscyrillic",1247,"zehiragana",12380,"zekatakana",12476,"zero",48,"zeroarabic",1632,"zerobengali",2534,"zerodeva",2406,"zerogujarati",2790,"zerogurmukhi",2662,"zerohackarabic",1632,"zeroinferior",8320,"zeromonospace",65296,"zerooldstyle",63280,"zeropersian",1776,"zerosuperior",8304,"zerothai",3664,"zerowidthjoiner",65279,"zerowidthnonjoiner",8204,"zerowidthspace",8203,"zeta",950,"zhbopomofo",12563,"zhearmenian",1386,"zhebrevecyrillic",1218,"zhecyrillic",1078,"zhedescendercyrillic",1175,"zhedieresiscyrillic",1245,"zihiragana",12376,"zikatakana",12472,"zinorhebrew",1454,"zlinebelow",7829,"zmonospace",65370,"zohiragana",12382,"zokatakana",12478,"zparen",9397,"zretroflexhook",656,"zstroke",438,"zuhiragana",12378,"zukatakana",12474,".notdef",0,"angbracketleftbig",9001,"angbracketleftBig",9001,"angbracketleftbigg",9001,"angbracketleftBigg",9001,"angbracketrightBig",9002,"angbracketrightbig",9002,"angbracketrightBigg",9002,"angbracketrightbigg",9002,"arrowhookleft",8618,"arrowhookright",8617,"arrowlefttophalf",8636,"arrowleftbothalf",8637,"arrownortheast",8599,"arrownorthwest",8598,"arrowrighttophalf",8640,"arrowrightbothalf",8641,"arrowsoutheast",8600,"arrowsouthwest",8601,"backslashbig",8726,"backslashBig",8726,"backslashBigg",8726,"backslashbigg",8726,"bardbl",8214,"bracehtipdownleft",65079,"bracehtipdownright",65079,"bracehtipupleft",65080,"bracehtipupright",65080,"braceleftBig",123,"braceleftbig",123,"braceleftbigg",123,"braceleftBigg",123,"bracerightBig",125,"bracerightbig",125,"bracerightbigg",125,"bracerightBigg",125,"bracketleftbig",91,"bracketleftBig",91,"bracketleftbigg",91,"bracketleftBigg",91,"bracketrightBig",93,"bracketrightbig",93,"bracketrightbigg",93,"bracketrightBigg",93,"ceilingleftbig",8968,"ceilingleftBig",8968,"ceilingleftBigg",8968,"ceilingleftbigg",8968,"ceilingrightbig",8969,"ceilingrightBig",8969,"ceilingrightbigg",8969,"ceilingrightBigg",8969,"circledotdisplay",8857,"circledottext",8857,"circlemultiplydisplay",8855,"circlemultiplytext",8855,"circleplusdisplay",8853,"circleplustext",8853,"contintegraldisplay",8750,"contintegraltext",8750,"coproductdisplay",8720,"coproducttext",8720,"floorleftBig",8970,"floorleftbig",8970,"floorleftbigg",8970,"floorleftBigg",8970,"floorrightbig",8971,"floorrightBig",8971,"floorrightBigg",8971,"floorrightbigg",8971,"hatwide",770,"hatwider",770,"hatwidest",770,"intercal",7488,"integraldisplay",8747,"integraltext",8747,"intersectiondisplay",8898,"intersectiontext",8898,"logicalanddisplay",8743,"logicalandtext",8743,"logicalordisplay",8744,"logicalortext",8744,"parenleftBig",40,"parenleftbig",40,"parenleftBigg",40,"parenleftbigg",40,"parenrightBig",41,"parenrightbig",41,"parenrightBigg",41,"parenrightbigg",41,"prime",8242,"productdisplay",8719,"producttext",8719,"radicalbig",8730,"radicalBig",8730,"radicalBigg",8730,"radicalbigg",8730,"radicalbt",8730,"radicaltp",8730,"radicalvertex",8730,"slashbig",47,"slashBig",47,"slashBigg",47,"slashbigg",47,"summationdisplay",8721,"summationtext",8721,"tildewide",732,"tildewider",732,"tildewidest",732,"uniondisplay",8899,"unionmultidisplay",8846,"unionmultitext",8846,"unionsqdisplay",8852,"unionsqtext",8852,"uniontext",8899,"vextenddouble",8741,"vextendsingle",8739]})),i=(0,r.getArrayLookupTableFactory)((function(){return["space",32,"a1",9985,"a2",9986,"a202",9987,"a3",9988,"a4",9742,"a5",9990,"a119",9991,"a118",9992,"a117",9993,"a11",9755,"a12",9758,"a13",9996,"a14",9997,"a15",9998,"a16",9999,"a105",1e4,"a17",10001,"a18",10002,"a19",10003,"a20",10004,"a21",10005,"a22",10006,"a23",10007,"a24",10008,"a25",10009,"a26",10010,"a27",10011,"a28",10012,"a6",10013,"a7",10014,"a8",10015,"a9",10016,"a10",10017,"a29",10018,"a30",10019,"a31",10020,"a32",10021,"a33",10022,"a34",10023,"a35",9733,"a36",10025,"a37",10026,"a38",10027,"a39",10028,"a40",10029,"a41",10030,"a42",10031,"a43",10032,"a44",10033,"a45",10034,"a46",10035,"a47",10036,"a48",10037,"a49",10038,"a50",10039,"a51",10040,"a52",10041,"a53",10042,"a54",10043,"a55",10044,"a56",10045,"a57",10046,"a58",10047,"a59",10048,"a60",10049,"a61",10050,"a62",10051,"a63",10052,"a64",10053,"a65",10054,"a66",10055,"a67",10056,"a68",10057,"a69",10058,"a70",10059,"a71",9679,"a72",10061,"a73",9632,"a74",10063,"a203",10064,"a75",10065,"a204",10066,"a76",9650,"a77",9660,"a78",9670,"a79",10070,"a81",9687,"a82",10072,"a83",10073,"a84",10074,"a97",10075,"a98",10076,"a99",10077,"a100",10078,"a101",10081,"a102",10082,"a103",10083,"a104",10084,"a106",10085,"a107",10086,"a108",10087,"a112",9827,"a111",9830,"a110",9829,"a109",9824,"a120",9312,"a121",9313,"a122",9314,"a123",9315,"a124",9316,"a125",9317,"a126",9318,"a127",9319,"a128",9320,"a129",9321,"a130",10102,"a131",10103,"a132",10104,"a133",10105,"a134",10106,"a135",10107,"a136",10108,"a137",10109,"a138",10110,"a139",10111,"a140",10112,"a141",10113,"a142",10114,"a143",10115,"a144",10116,"a145",10117,"a146",10118,"a147",10119,"a148",10120,"a149",10121,"a150",10122,"a151",10123,"a152",10124,"a153",10125,"a154",10126,"a155",10127,"a156",10128,"a157",10129,"a158",10130,"a159",10131,"a160",10132,"a161",8594,"a163",8596,"a164",8597,"a196",10136,"a165",10137,"a192",10138,"a166",10139,"a167",10140,"a168",10141,"a169",10142,"a170",10143,"a171",10144,"a172",10145,"a173",10146,"a162",10147,"a174",10148,"a175",10149,"a176",10150,"a177",10151,"a178",10152,"a179",10153,"a193",10154,"a180",10155,"a199",10156,"a181",10157,"a200",10158,"a182",10159,"a201",10161,"a183",10162,"a184",10163,"a197",10164,"a185",10165,"a194",10166,"a198",10167,"a186",10168,"a195",10169,"a187",10170,"a188",10171,"a189",10172,"a190",10173,"a191",10174,"a89",10088,"a90",10089,"a93",10090,"a94",10091,"a91",10092,"a92",10093,"a205",10094,"a85",10095,"a206",10096,"a86",10097,"a87",10098,"a88",10099,"a95",10100,"a96",10101,".notdef",0]}))},(e,t,a)=>{a.r(t);a.d(t,{clearUnicodeCaches:()=>clearUnicodeCaches,getCharUnicodeCategory:()=>getCharUnicodeCategory,getNormalizedUnicodes:()=>s,getUnicodeForGlyph:()=>getUnicodeForGlyph,getUnicodeRangeFor:()=>getUnicodeRangeFor,mapSpecialUnicodeValues:()=>mapSpecialUnicodeValues,reverseIfRtl:()=>reverseIfRtl});var r=a(8);const n=(0,r.getLookupTableFactory)((function(e){e[63721]=169;e[63193]=169;e[63720]=174;e[63194]=174;e[63722]=8482;e[63195]=8482;e[63729]=9127;e[63730]=9128;e[63731]=9129;e[63740]=9131;e[63741]=9132;e[63742]=9133;e[63726]=9121;e[63727]=9122;e[63728]=9123;e[63737]=9124;e[63738]=9125;e[63739]=9126;e[63723]=9115;e[63724]=9116;e[63725]=9117;e[63734]=9118;e[63735]=9119;e[63736]=9120}));function mapSpecialUnicodeValues(e){return e>=65520&&e<=65535?0:e>=62976&&e<=63743?n()[e]||e:173===e?45:e}function getUnicodeForGlyph(e,t){let a=t[e];if(void 0!==a)return a;if(!e)return-1;if("u"===e[0]){const t=e.length;let r;if(7===t&&"n"===e[1]&&"i"===e[2])r=e.substring(3);else{if(!(t>=5&&t<=7))return-1;r=e.substring(1)}if(r===r.toUpperCase()){a=parseInt(r,16);if(a>=0)return a}}return-1}const i=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];function getUnicodeRangeFor(e){for(let t=0,a=i.length;t=a.begin&&e=t.begin&&e=t.begin&&e=0;r--)a.push(e[r]);return a.join("")}const o=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),c=new Map;function getCharUnicodeCategory(e){const t=c.get(e);if(t)return t;const a=e.match(o),r={isWhitespace:!(!a||!a[1]),isZeroWidthDiacritic:!(!a||!a[2]),isInvisibleFormatMark:!(!a||!a[3])};c.set(e,r);return r}function clearUnicodeCaches(){c.clear()}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MarkupAnnotation=t.AnnotationFactory=t.AnnotationBorderStyle=t.Annotation=void 0;t.getQuadPoints=getQuadPoints;var r=a(2),n=a(8),i=a(23),s=a(5),o=a(9),c=a(60),l=a(65),h=a(24),u=a(68),d=a(72),f=a(62),g=a(10),p=a(73),m=a(76);const b=1.35;t.AnnotationFactory=class AnnotationFactory{static create(e,t,a,r,n){return Promise.all([a.ensureCatalog("acroForm"),a.ensureCatalog("baseUrl"),a.ensureDoc("xfaDatasets"),n?this._getPageIndex(e,t,a):-1]).then((([i,s,o,c])=>a.ensure(this,"_create",[e,t,a,r,i,o,n,c])))}static _create(e,t,a,i,o,c,l,h=-1){const u=e.fetchIfRef(t);if(!(u instanceof s.Dict))return;const d=t instanceof s.Ref?t.toString():`annot_${i.createObjId()}`;let f=u.get("Subtype");f=f instanceof s.Name?f.name:null;const g={xref:e,ref:t,dict:u,subtype:f,id:d,pdfManager:a,acroForm:o instanceof s.Dict?o:s.Dict.empty,xfaDatasets:c,collectFields:l,pageIndex:h};switch(f){case"Link":return new LinkAnnotation(g);case"Text":return new TextAnnotation(g);case"Widget":let e=(0,n.getInheritableProperty)({dict:u,key:"FT"});e=e instanceof s.Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(g);case"Btn":return new ButtonWidgetAnnotation(g);case"Ch":return new ChoiceWidgetAnnotation(g);case"Sig":return new SignatureWidgetAnnotation(g)}(0,r.warn)(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(g);case"Popup":return new PopupAnnotation(g);case"FreeText":return new FreeTextAnnotation(g);case"Line":return new LineAnnotation(g);case"Square":return new SquareAnnotation(g);case"Circle":return new CircleAnnotation(g);case"PolyLine":return new PolylineAnnotation(g);case"Polygon":return new PolygonAnnotation(g);case"Caret":return new CaretAnnotation(g);case"Ink":return new InkAnnotation(g);case"Highlight":return new HighlightAnnotation(g);case"Underline":return new UnderlineAnnotation(g);case"Squiggly":return new SquigglyAnnotation(g);case"StrikeOut":return new StrikeOutAnnotation(g);case"Stamp":return new StampAnnotation(g);case"FileAttachment":return new FileAttachmentAnnotation(g);default:l||(f?(0,r.warn)(`Unimplemented annotation type "${f}", falling back to base annotation.`):(0,r.warn)("Annotation is missing the required /Subtype."));return new Annotation(g)}}static async _getPageIndex(e,t,a){try{const r=await e.fetchIfRefAsync(t);if(!(r instanceof s.Dict))return-1;const n=r.getRaw("P");if(!(n instanceof s.Ref))return-1;return await a.ensureCatalog("getPageIndex",[n])}catch(e){(0,r.warn)(`_getPageIndex: "${e}".`);return-1}}};function getRgbColor(e,t=new Uint8ClampedArray(3)){if(!Array.isArray(e))return t;const a=t||new Uint8ClampedArray(3);switch(e.length){case 0:return null;case 1:h.ColorSpace.singletons.gray.getRgbItem(e,0,a,0);return a;case 3:h.ColorSpace.singletons.rgb.getRgbItem(e,0,a,0);return a;case 4:h.ColorSpace.singletons.cmyk.getRgbItem(e,0,a,0);return a;default:return t}}function getQuadPoints(e,t){if(!e.has("QuadPoints"))return null;const a=e.getArray("QuadPoints");if(!Array.isArray(a)||0===a.length||a.length%8>0)return null;const r=[];for(let e=0,n=a.length/8;et[2]||st[3]))return null;r[e].push({x:i,y:s})}}return r.map((e=>{const[t,a,r,n]=e.reduce((([e,t,a,r],n)=>[Math.min(e,n.x),Math.max(t,n.x),Math.min(a,n.y),Math.max(r,n.y)]),[Number.MAX_VALUE,Number.MIN_VALUE,Number.MAX_VALUE,Number.MIN_VALUE]);return[{x:t,y:n},{x:a,y:n},{x:t,y:r},{x:a,y:r}]}))}function getTransformMatrix(e,t,a){const[n,i,s,o]=r.Util.getAxialAlignedBoundingBox(t,a);if(n===s||i===o)return[1,0,0,1,e[0],e[1]];const c=(e[2]-e[0])/(s-n),l=(e[3]-e[1])/(o-i);return[c,0,0,l,e[0]-n*c,e[1]-i*l]}class Annotation{constructor(e){const t=e.dict;this.setTitle(t.get("T"));this.setContents(t.get("Contents"));this.setModificationDate(t.get("M"));this.setFlags(t.get("F"));this.setRectangle(t.getArray("Rect"));this.setColor(t.getArray("C"));this.setBorderStyle(t);this.setAppearance(t);this.setBorderAndBackgroundColors(t.get("MK"));this._streams=[];this.appearance&&this._streams.push(this.appearance);this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,contentsObj:this._contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1};if(e.collectFields){const a=t.get("Kids");if(Array.isArray(a)){const e=[];for(const t of a)t instanceof s.Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=(0,n.collectActions)(e.xref,t,r.AnnotationActionEventType);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}this._fallbackFontDict=null}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)&&!this._hasFlag(e,r.AnnotationFlag.NOVIEW)}_isPrintable(e){return this._hasFlag(e,r.AnnotationFlag.PRINT)&&!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)}mustBeViewed(e){const t=e&&e.get(this.data.id);return t&&void 0!==t.hidden?!t.hidden:this.viewable&&!this._hasFlag(this.flags,r.AnnotationFlag.HIDDEN)}mustBePrinted(e){const t=e&&e.get(this.data.id);return t&&void 0!==t.print?t.print:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}_parseStringHelper(e){const t="string"==typeof e?(0,r.stringToPDFString)(e):"";return{str:t,dir:t&&"rtl"===(0,c.bidi)(t).dir?"rtl":"ltr"}}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){Array.isArray(e)&&4===e.length?this.rectangle=r.Util.normalizeRect(e):this.rectangle=[0,0,0,0]}setColor(e){this.color=getRgbColor(e)}setLineEndings(e){this.lineEndings=["None","None"];if(Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const a=e[t];if(a instanceof s.Name)switch(a.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=a.name;continue}(0,r.warn)(`Ignoring invalid lineEnding: ${a}`)}}setBorderAndBackgroundColors(e){if(e instanceof s.Dict){this.borderColor=getRgbColor(e.getArray("BC"),null);this.backgroundColor=getRgbColor(e.getArray("BG"),null)}else this.borderColor=this.backgroundColor=null}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if(e instanceof s.Dict)if(e.has("BS")){const t=e.get("BS"),a=t.get("Type");if(!a||(0,s.isName)(a,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t)&&t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3],!0)}}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof s.Dict))return;const a=t.get("N");if(a instanceof o.BaseStream){this.appearance=a;return}if(!(a instanceof s.Dict))return;const r=e.get("AS");r instanceof s.Name&&a.has(r.name)&&(this.appearance=a.get(r.name))}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(!t)return;return new d.ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}getOperatorList(e,t,a,n,i){const o=this.data;let c=this.appearance;const l=o.hasOwnCanvas&&a&r.RenderingIntentFlag.DISPLAY;if(!c){if(!l)return Promise.resolve(new f.OperatorList);c=new g.StringStream("");c.dict=new s.Dict}const h=c.dict,u=this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],c),d=h.getArray("BBox")||[0,0,1,1],p=h.getArray("Matrix")||[1,0,0,1,0,0],m=getTransformMatrix(o.rect,d,p);return u.then((a=>{const n=new f.OperatorList;n.addOp(r.OPS.beginAnnotation,[o.id,o.rect,m,p,l]);return e.getOperatorList({stream:c,task:t,resources:a,operatorList:n,fallbackFontDict:this._fallbackFontDict}).then((()=>{n.addOp(r.OPS.endAnnotation,[]);this.reset();return n}))}))}async save(e,t,a){return null}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent")){(0,r.warn)("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return(0,r.stringToPDFString)(e.get("T"));const t=[];e.has("T")&&t.unshift((0,r.stringToPDFString)(e.get("T")));let a=e;const n=new s.RefSet;e.objId&&n.put(e.objId);for(;a.has("Parent");){a=a.get("Parent");if(!(a instanceof s.Dict)||a.objId&&n.has(a.objId))break;a.objId&&n.put(a.objId);a.has("T")&&t.unshift((0,r.stringToPDFString)(a.get("T")))}return t.join(".")}}t.Annotation=Annotation;class AnnotationBorderStyle{constructor(){this.width=1;this.style=r.AnnotationBorderStyleType.SOLID;this.dashArray=[3];this.horizontalCornerRadius=0;this.verticalCornerRadius=0}setWidth(e,t=[0,0,0,0]){if(e instanceof s.Name)this.width=0;else if("number"==typeof e){if(e>0){const a=(t[2]-t[0])/2,n=(t[3]-t[1])/2;if(a>0&&n>0&&(e>a||e>n)){(0,r.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof s.Name)switch(e.name){case"S":this.style=r.AnnotationBorderStyleType.SOLID;break;case"D":this.style=r.AnnotationBorderStyleType.DASHED;break;case"B":this.style=r.AnnotationBorderStyleType.BEVELED;break;case"I":this.style=r.AnnotationBorderStyleType.INSET;break;case"U":this.style=r.AnnotationBorderStyleType.UNDERLINE}}setDashArray(e,t=!1){if(Array.isArray(e)&&e.length>0){let a=!0,r=!0;for(const t of e){if(!(+t>=0)){a=!1;break}t>0&&(r=!1)}if(a&&!r){this.dashArray=e;t&&this.setStyle(s.Name.get("D"))}else this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}t.AnnotationBorderStyle=AnnotationBorderStyle;class MarkupAnnotation extends Annotation{constructor(e){super(e);const t=e.dict;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof s.Ref?e.toString():null;const a=t.get("RT");this.data.replyType=a instanceof s.Name?a.name:r.AnnotationReplyType.REPLY}if(this.data.replyType===r.AnnotationReplyType.GROUP){const e=t.get("IRT");this.setTitle(e.get("T"));this.data.titleObj=this._title;this.setContents(e.get("Contents"));this.data.contentsObj=this._contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;this.data.hasPopup=e.has("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.titleObj=this._title;this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;this.data.hasPopup=t.has("Popup");t.has("C")||(this.data.color=null)}t.has("RC")&&(this.data.richText=m.XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance({xref:e,extra:t,strokeColor:a,fillColor:r,blendMode:n,strokeAlpha:i,fillAlpha:o,pointsCallback:c}){let l=Number.MAX_VALUE,h=Number.MAX_VALUE,u=Number.MIN_VALUE,d=Number.MIN_VALUE;const f=["q"];t&&f.push(t);a&&f.push(`${a[0]} ${a[1]} ${a[2]} RG`);r&&f.push(`${r[0]} ${r[1]} ${r[2]} rg`);let p=this.data.quadPoints;p||(p=[[{x:this.rectangle[0],y:this.rectangle[3]},{x:this.rectangle[2],y:this.rectangle[3]},{x:this.rectangle[0],y:this.rectangle[1]},{x:this.rectangle[2],y:this.rectangle[1]}]]);for(const e of p){const[t,a,r,n]=c(f,e);l=Math.min(l,t);u=Math.max(u,a);h=Math.min(h,r);d=Math.max(d,n)}f.push("Q");const m=new s.Dict(e),b=new s.Dict(e);b.set("Subtype",s.Name.get("Form"));const y=new g.StringStream(f.join(" "));y.dict=b;m.set("Fm0",y);const w=new s.Dict(e);n&&w.set("BM",s.Name.get(n));"number"==typeof i&&w.set("CA",i);"number"==typeof o&&w.set("ca",o);const S=new s.Dict(e);S.set("GS0",w);const x=new s.Dict(e);x.set("ExtGState",S);x.set("XObject",m);const k=new s.Dict(e);k.set("Resources",x);const C=this.data.rect=[l,h,u,d];k.set("BBox",C);this.appearance=new g.StringStream("/GS0 gs /Fm0 Do");this.appearance.dict=k;this._streams.push(this.appearance,y)}}t.MarkupAnnotation=MarkupAnnotation;class WidgetAnnotation extends Annotation{constructor(e){super(e);const t=e.dict,a=this.data;this.ref=e.ref;a.annotationType=r.AnnotationType.WIDGET;void 0===a.fieldName&&(a.fieldName=this._constructFieldName(t));void 0===a.actions&&(a.actions=(0,n.collectActions)(e.xref,t,r.AnnotationActionEventType));let o=(0,n.getInheritableProperty)({dict:t,key:"V",getArray:!0});a.fieldValue=this._decodeFormValue(o);const c=(0,n.getInheritableProperty)({dict:t,key:"DV",getArray:!0});a.defaultFieldValue=this._decodeFormValue(c);if(void 0===o&&e.xfaDatasets){const t=this._title.str;if(t){this._hasValueFromXFA=!0;a.fieldValue=o=e.xfaDatasets.getValue(t)}}void 0===o&&null!==a.defaultFieldValue&&(a.fieldValue=a.defaultFieldValue);a.alternativeText=(0,r.stringToPDFString)(t.get("TU")||"");const l=(0,n.getInheritableProperty)({dict:t,key:"DA"})||e.acroForm.get("DA");this._defaultAppearance="string"==typeof l?l:"";a.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance);const h=(0,n.getInheritableProperty)({dict:t,key:"FT"});a.fieldType=h instanceof s.Name?h.name:null;const u=(0,n.getInheritableProperty)({dict:t,key:"DR"}),d=e.acroForm.get("DR"),f=this.appearance&&this.appearance.dict.get("Resources");this._fieldResources={localResources:u,acroFormResources:d,appearanceResources:f,mergedResources:s.Dict.merge({xref:e.xref,dictArray:[u,f,d],mergeSubDicts:!0})};a.fieldFlags=(0,n.getInheritableProperty)({dict:t,key:"Ff"});(!Number.isInteger(a.fieldFlags)||a.fieldFlags<0)&&(a.fieldFlags=0);a.readOnly=this.hasFieldFlag(r.AnnotationFieldFlag.READONLY);a.hidden=this._hasFlag(a.annotationFlags,r.AnnotationFlag.HIDDEN)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>(0,r.stringToPDFString)(e))):e instanceof s.Name?(0,r.stringToPDFString)(e.name):"string"==typeof e?(0,r.stringToPDFString)(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}getOperatorList(e,t,a,n,i){return!n||this instanceof SignatureWidgetAnnotation?this._hasText?this._getAppearance(e,t,i).then((s=>{if(this.appearance&&null===s)return super.getOperatorList(e,t,a,n,i);const o=new f.OperatorList;if(!this._defaultAppearance||null===s)return o;const c=[1,0,0,1,0,0],l=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],h=getTransformMatrix(this.data.rect,l,c);o.addOp(r.OPS.beginAnnotation,[this.data.id,this.data.rect,h,c]);const u=new g.StringStream(s);return e.getOperatorList({stream:u,task:t,resources:this._fieldResources.mergedResources,operatorList:o}).then((function(){o.addOp(r.OPS.endAnnotation,[]);return o}))})):super.getOperatorList(e,t,a,n,i):Promise.resolve(new f.OperatorList)}async save(e,t,a){const n=a?a.get(this.data.id):void 0;let i=n&&n.value;if(i===this.data.fieldValue||void 0===i){if(!this._hasValueFromXFA)return null;i=i||this.data.fieldValue}if(!this._hasValueFromXFA&&Array.isArray(i)&&Array.isArray(this.data.fieldValue)&&i.length===this.data.fieldValue.length&&i.every(((e,t)=>e===this.data.fieldValue[t])))return null;let o=await this._getAppearance(e,t,a);if(null===o)return null;const{xref:c}=e,l=c.fetchIfRef(this.ref);if(!(l instanceof s.Dict))return null;const h=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],u={path:(0,r.stringToPDFString)(l.get("T")||""),value:i},d=c.getNewRef(),f=new s.Dict(c);f.set("N",d);const g=c.encrypt;let m=null,b=null;if(g){m=g.createCipherTransform(this.ref.num,this.ref.gen);b=g.createCipherTransform(d.num,d.gen);o=b.encryptString(o)}const encoder=e=>(0,r.isAscii)(e)?e:(0,r.stringToUTF16BEString)(e);l.set("V",Array.isArray(i)?i.map(encoder):encoder(i));l.set("AP",f);l.set("M",`D:${(0,r.getModificationDate)()}`);const y=new s.Dict(c);y.set("Length",o.length);y.set("Subtype",s.Name.get("Form"));y.set("Resources",this._getSaveFieldResources(c));y.set("BBox",h);const w=[`${this.ref.num} ${this.ref.gen} obj\n`];(0,p.writeDict)(l,w,m);w.push("\nendobj\n");const S=[`${d.num} ${d.gen} obj\n`];(0,p.writeDict)(y,S,b);S.push(" stream\n",o,"\nendstream\nendobj\n");return[{ref:this.ref,data:w.join(""),xfa:u},{ref:d,data:S.join(""),xfa:null}]}async _getAppearance(e,t,a){if(this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD))return null;const n=a?a.get(this.data.id):void 0;let s=n&&(n.formattedValue||n.value);if(void 0===s){if(!this._hasValueFromXFA||this.appearance)return null;s=this.data.fieldValue;if(!s)return""}(0,r.assert)("string"==typeof s,"Expected `value` to be a string.");s=s.trim();if(""===s)return"";let o=-1;this.data.multiLine&&(o=s.split(/\r\n|\r|\n/).length);const c=this.data.rect[3]-this.data.rect[1],l=this.data.rect[2]-this.data.rect[0];this._defaultAppearance||(this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance="/Helvetica 0 Tf 0 g"));const h=await this._getFontData(e,t),[u,d]=this._computeFontSize(c-2,l-4,s,h,o);let f=h.descent;isNaN(f)&&(f=0);const g=2+Math.abs(f)*d,p=this.data.textAlignment;if(this.data.multiLine)return this._getMultilineAppearance(u,s,h,d,l,c,p,2,g);const m=h.encodeString(s).join("");if(this.data.comb)return this._getCombAppearance(u,h,m,l,2,g);if(0===p||p>2)return"/Tx BMC q BT "+u+` 1 0 0 1 2 ${g} Tm (${(0,r.escapeString)(m)}) Tj ET Q EMC`;return"/Tx BMC q BT "+u+` 1 0 0 1 0 0 Tm ${this._renderText(m,h,d,l,p,2,g)} ET Q EMC`}async _getFontData(e,t){const a=new f.OperatorList,r={font:null,clone(){return this}},{fontName:n,fontSize:i}=this.data.defaultAppearanceData;await e.handleSetFont(this._fieldResources.mergedResources,[n&&s.Name.get(n),i],null,a,t,r,null);return r.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,a,r,n){let{fontSize:s}=this.data.defaultAppearanceData;if(!s){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===n){const n=this._getTextWidth(a,r);s=roundWithTwoDigits(Math.min(e/b,t/n))}else{const i=a.split(/\r\n?|\n/),o=[];for(const e of i){const t=r.encodeString(e).join(""),a=r.charsToGlyphs(t),n=r.getCharPositions(t);o.push({line:t,glyphs:a,positions:n})}const isTooBig=a=>{let n=0;for(const i of o){n+=this._splitLine(null,r,a,t,i).length*a;if(n>e)return!0}return!1};s=12;let c=s*b,l=Math.round(e/c);l=Math.max(l,n);for(;;){c=e/l;s=roundWithTwoDigits(c/b);if(!isTooBig(s))break;l++}}const{fontName:o,fontColor:c}=this.data.defaultAppearanceData;this._defaultAppearance=(0,i.createDefaultAppearance)({fontSize:s,fontName:o,fontColor:c})}return[this._defaultAppearance,s]}_renderText(e,t,a,n,i,s,o){let c;if(1===i){c=(n-this._getTextWidth(e,t)*a)/2}else if(2===i){c=n-this._getTextWidth(e,t)*a-s}else c=s;c=c.toFixed(2);return`${c} ${o=o.toFixed(2)} Td (${(0,r.escapeString)(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:a,acroFormResources:r}=this._fieldResources,n=this.data.defaultAppearanceData&&this.data.defaultAppearanceData.fontName;if(!n)return t||s.Dict.empty;for(const e of[t,a])if(e instanceof s.Dict){const t=e.get("Font");if(t instanceof s.Dict&&t.has(n))return e}if(r instanceof s.Dict){const a=r.get("Font");if(a instanceof s.Dict&&a.has(n)){const r=new s.Dict(e);r.set(n,a.getRaw(n));const i=new s.Dict(e);i.set("Font",r);return s.Dict.merge({xref:e,dictArray:[i,t],mergeSubDicts:!0})}}return t||s.Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this._hasText=!0;const t=e.dict;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let a=(0,n.getInheritableProperty)({dict:t,key:"Q"});(!Number.isInteger(a)||a<0||a>2)&&(a=null);this.data.textAlignment=a;let i=(0,n.getInheritableProperty)({dict:t,key:"MaxLen"});(!Number.isInteger(i)||i<0)&&(i=null);this.data.maxLen=i;this.data.multiLine=this.hasFieldFlag(r.AnnotationFieldFlag.MULTILINE);this.data.comb=this.hasFieldFlag(r.AnnotationFieldFlag.COMB)&&!this.hasFieldFlag(r.AnnotationFieldFlag.MULTILINE)&&!this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD)&&!this.hasFieldFlag(r.AnnotationFieldFlag.FILESELECT)&&null!==this.data.maxLen}_getCombAppearance(e,t,a,n,i,s){const o=(n/this.data.maxLen).toFixed(2),c=[],l=t.getCharPositions(a);for(const[e,t]of l)c.push(`(${(0,r.escapeString)(a.substring(e,t))}) Tj`);return"/Tx BMC q BT "+e+` 1 0 0 1 ${i} ${s} Tm ${c.join(` ${o} 0 Td `)} ET Q EMC`}_getMultilineAppearance(e,t,a,r,n,i,s,o,c){const l=t.split(/\r\n?|\n/),h=[],u=n-2*o;for(const e of l){const t=this._splitLine(e,a,r,u);for(const e of t){const t=0===h.length?o:0;h.push(this._renderText(e,a,r,n,s,t,-r))}}return"/Tx BMC q BT "+e+` 1 0 0 1 0 ${i} Tm ${h.join("\n")} ET Q EMC`}_splitLine(e,t,a,r,n={}){e=n.line||t.encodeString(e).join("");const i=n.glyphs||t.charsToGlyphs(e);if(i.length<=1)return[e];const s=n.positions||t.getCharPositions(e),o=a/1e3,c=[];let l=-1,h=-1,u=-1,d=0,f=0;for(let t=0,a=i.length;tr){c.push(e.substring(d,a));d=a;f=p;l=-1;u=-1}else{f+=p;l=a;h=n;u=t}else if(f+p>r)if(-1!==l){c.push(e.substring(d,h));d=h;t=u+1;l=-1;f=0}else{c.push(e.substring(d,a));d=a;f=p}else f+=p}d"Off"!==e));i.length=0;i.push("Off",e)}i.includes(this.data.fieldValue)||(this.data.fieldValue="Off");this.data.exportValue=i[1];this.checkedAppearance=a.get(this.data.exportValue)||null;this.uncheckedAppearance=a.get("Off")||null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict}_processRadioButton(e){this.data.fieldValue=this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof s.Dict){this.parent=e.dict.getRaw("Parent");const a=t.get("V");a instanceof s.Name&&(this.data.fieldValue=this._decodeFormValue(a))}const a=e.dict.get("AP");if(!(a instanceof s.Dict))return;const r=a.get("N");if(r instanceof s.Dict){for(const e of r.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}this.checkedAppearance=r.get(this.data.buttonValue)||null;this.uncheckedAppearance=r.get("Off")||null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict}}_processPushButton(e){if(e.dict.has("A")||e.dict.has("AA")||this.data.alternativeText){this.data.isTooltipOnly=!e.dict.has("A")&&!e.dict.has("AA");l.Catalog.parseDestDictionary({destDict:e.dict,resultObj:this.data,docBaseUrl:e.pdfManager.docBaseUrl})}else(0,r.warn)("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";if(this.data.checkBox){t="checkbox";e=this.data.exportValue}else if(this.data.radioButton){t="radiobutton";e=this.data.buttonValue}return{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:t}}get fallbackFontDict(){const e=new s.Dict;e.set("BaseFont",s.Name.get("ZapfDingbats"));e.set("Type",s.Name.get("FallbackType"));e.set("Subtype",s.Name.get("FallbackType"));e.set("Encoding",s.Name.get("ZapfDingbatsEncoding"));return(0,r.shadow)(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.data.options=[];const t=(0,n.getInheritableProperty)({dict:e.dict,key:"Opt"});if(Array.isArray(t)){const a=e.xref;for(let e=0,r=t.length;e0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,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,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:e}}async _getAppearance(e,t,a){if(this.data.combo)return super._getAppearance(e,t,a);if(!a)return null;const r=a.get(this.data.id);let n=r&&r.value;if(void 0===n)return null;Array.isArray(n)||(n=[n]);const s=this.data.rect[3]-this.data.rect[1],o=this.data.rect[2]-this.data.rect[0],c=this.data.options.length,l=[];for(let e=0;ea){a=r;t=e}}[u,d]=this._computeFontSize(e,o-4,t,h,-1)}const f=d*b,g=(f-d)/2,p=Math.floor(s/f);let m;if(1===l.length){const e=l[0];m=e-e%p}else m=l.length?l[0]:0;const y=Math.min(m+p+1,c),w=["/Tx BMC q",`1 1 ${o} ${s} re W n`];if(l.length){w.push("0.600006 0.756866 0.854904 rg");for(const e of l)m<=e&&ee/255)):[0,0,0],i=t.get("CA");let s=null,o=t.getArray("IC");if(o){o=getRgbColor(o,null);s=o?Array.from(o).map((e=>e/255)):null}const c=s?i:null,l=this.borderStyle.width||1,h=2*l,u=[this.data.lineCoordinates[0]-h,this.data.lineCoordinates[1]-h,this.data.lineCoordinates[2]+h,this.data.lineCoordinates[3]+h];r.Util.intersect(this.rectangle,u)||(this.rectangle=u);this._setDefaultAppearance({xref:e.xref,extra:`${l} w`,strokeColor:n,fillColor:s,strokeAlpha:i,fillAlpha:c,pointsCallback:(e,t)=>{e.push(`${a[0]} ${a[1]} m`,`${a[2]} ${a[3]} l`,"S");return[t[0].x-l,t[1].x+l,t[3].y-l,t[1].y+l]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=r.AnnotationType.SQUARE;if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],a=e.dict.get("CA");let r=null,n=e.dict.getArray("IC");if(n){n=getRgbColor(n,null);r=n?Array.from(n).map((e=>e/255)):null}const i=r?a:null;if(0===this.borderStyle.width&&!r)return;this._setDefaultAppearance({xref:e.xref,extra:`${this.borderStyle.width} w`,strokeColor:t,fillColor:r,strokeAlpha:a,fillAlpha:i,pointsCallback:(e,t)=>{const a=t[2].x+this.borderStyle.width/2,n=t[2].y+this.borderStyle.width/2,i=t[3].x-t[2].x-this.borderStyle.width,s=t[1].y-t[3].y-this.borderStyle.width;e.push(`${a} ${n} ${i} ${s} re`);r?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=r.AnnotationType.CIRCLE;if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],a=e.dict.get("CA");let r=null,n=e.dict.getArray("IC");if(n){n=getRgbColor(n,null);r=n?Array.from(n).map((e=>e/255)):null}const i=r?a:null;if(0===this.borderStyle.width&&!r)return;const s=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:e.xref,extra:`${this.borderStyle.width} w`,strokeColor:t,fillColor:r,strokeAlpha:a,fillAlpha:i,pointsCallback:(e,t)=>{const a=t[0].x+this.borderStyle.width/2,n=t[0].y-this.borderStyle.width/2,i=t[3].x-this.borderStyle.width/2,o=t[3].y+this.borderStyle.width/2,c=a+(i-a)/2,l=n+(o-n)/2,h=(i-a)/2*s,u=(o-n)/2*s;e.push(`${c} ${o} m`,`${c+h} ${o} ${i} ${l+u} ${i} ${l} c`,`${i} ${l-u} ${c+h} ${n} ${c} ${n} c`,`${c-h} ${n} ${a} ${l-u} ${a} ${l} c`,`${a} ${l+u} ${c-h} ${o} ${c} ${o} c`,"h");r?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t}=e;this.data.annotationType=r.AnnotationType.POLYLINE;this.data.vertices=[];if(!(this instanceof PolygonAnnotation)){this.setLineEndings(t.getArray("LE"));this.data.lineEndings=this.lineEndings}const a=t.getArray("Vertices");if(Array.isArray(a)){for(let e=0,t=a.length;ee/255)):[0,0,0],n=t.get("CA"),i=this.borderStyle.width||1,s=2*i,o=[1/0,1/0,-1/0,-1/0];for(const e of this.data.vertices){o[0]=Math.min(o[0],e.x-s);o[1]=Math.min(o[1],e.y-s);o[2]=Math.max(o[2],e.x+s);o[3]=Math.max(o[3],e.y+s)}r.Util.intersect(this.rectangle,o)||(this.rectangle=o);this._setDefaultAppearance({xref:e.xref,extra:`${i} w`,strokeColor:a,strokeAlpha:n,pointsCallback:(e,t)=>{const a=this.data.vertices;for(let t=0,r=a.length;te/255)):[0,0,0],a=e.dict.get("CA"),n=this.borderStyle.width||1,i=2*n,s=[1/0,1/0,-1/0,-1/0];for(const e of this.data.inkLists)for(const t of e){s[0]=Math.min(s[0],t.x-i);s[1]=Math.min(s[1],t.y-i);s[2]=Math.max(s[2],t.x+i);s[3]=Math.max(s[3],t.y+i)}r.Util.intersect(this.rectangle,s)||(this.rectangle=s);this._setDefaultAppearance({xref:e.xref,extra:`${n} w`,strokeColor:t,strokeAlpha:a,pointsCallback:(e,t)=>{for(const t of this.data.inkLists){for(let a=0,r=t.length;ae/255)):[1,1,0],a=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,fillColor:t,blendMode:"Multiply",fillAlpha:a,pointsCallback:(e,t)=>{e.push(`${t[0].x} ${t[0].y} m`,`${t[1].x} ${t[1].y} l`,`${t[3].x} ${t[3].y} l`,`${t[2].x} ${t[2].y} l`,"f");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.hasPopup=!1}}class UnderlineAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=r.AnnotationType.UNDERLINE;if(this.data.quadPoints=getQuadPoints(e.dict,null)){if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],a=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,extra:"[] 0 d 1 w",strokeColor:t,strokeAlpha:a,pointsCallback:(e,t)=>{e.push(`${t[2].x} ${t[2].y} m`,`${t[3].x} ${t[3].y} l`,"S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.hasPopup=!1}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=r.AnnotationType.SQUIGGLY;if(this.data.quadPoints=getQuadPoints(e.dict,null)){if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],a=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,extra:"[] 0 d 1 w",strokeColor:t,strokeAlpha:a,pointsCallback:(e,t)=>{const a=(t[0].y-t[2].y)/6;let r=a,n=t[2].x;const i=t[2].y,s=t[3].x;e.push(`${n} ${i+r} m`);do{n+=2;r=0===r?a:0;e.push(`${n} ${i+r} l`)}while(ne/255)):[0,0,0],a=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,extra:"[] 0 d 1 w",strokeColor:t,strokeAlpha:a,pointsCallback:(e,t)=>{e.push((t[0].x+t[2].x)/2+" "+(t[0].y+t[2].y)/2+" m",(t[1].x+t[3].x)/2+" "+(t[1].y+t[3].y)/2+" l","S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.hasPopup=!1}}class StampAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=r.AnnotationType.STAMP}}class FileAttachmentAnnotation extends MarkupAnnotation{constructor(e){super(e);const t=new u.FileSpec(e.dict.get("FS"),e.xref);this.data.annotationType=r.AnnotationType.FILEATTACHMENT;this.data.file=t.serializable}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.createDefaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:a}){let r;r=a.every((e=>0===e))?"0 g":Array.from(a).map((e=>(e/255).toFixed(2))).join(" ")+" rg";return`/${(0,i.escapePDFName)(t)} ${e} Tf ${r}`};t.parseDefaultAppearance=function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()};var r=a(2),n=a(24),i=a(8),s=a(25),o=a(5),c=a(10);class DefaultAppearanceEvaluator extends s.EvaluatorPreprocessor{constructor(e){super(new c.StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:a,args:i}=e;switch(0|a){case r.OPS.setFont:const[e,a]=i;e instanceof o.Name&&(t.fontName=e.name);"number"==typeof a&&a>0&&(t.fontSize=a);break;case r.OPS.setFillRGBColor:n.ColorSpace.singletons.rgb.getRgbItem(i,0,t.fontColor,0);break;case r.OPS.setFillGray:n.ColorSpace.singletons.gray.getRgbItem(i,0,t.fontColor,0);break;case r.OPS.setFillColorSpace:n.ColorSpace.singletons.cmyk.getRgbItem(i,0,t.fontColor,0)}}}catch(e){(0,r.warn)(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ColorSpace=void 0;var r=a(2),n=a(5),i=a(9),s=a(8);class ColorSpace{constructor(e,t){this.constructor===ColorSpace&&(0,r.unreachable)("Cannot initialize ColorSpace.");this.name=e;this.numComps=t}getRgb(e,t){const a=new Uint8ClampedArray(3);this.getRgbItem(e,t,a,0);return a}getRgbItem(e,t,a,n){(0,r.unreachable)("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,a,n,i,s,o){(0,r.unreachable)("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){(0,r.unreachable)("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return ColorSpace.isDefaultDecode(e,this.numComps)}fillRgb(e,t,a,r,n,i,s,o,c){const l=t*a;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e=.99554525?1:adjustToRange(0,1,1.055*e**(1/2.4)-.055)}function adjustToRange(e,t,a){return Math.max(e,Math.min(t,a))}function decodeL(e){return e<0?-decodeL(-e):e>8?((e+16)/116)**3:.0011070564598794539*e}function convertToRgb(r,c,l,h,u,d){const f=adjustToRange(0,1,c[l]*d),g=adjustToRange(0,1,c[l+1]*d),p=adjustToRange(0,1,c[l+2]*d),m=1===f?1:f**r.GR,b=1===g?1:g**r.GG,y=1===p?1:p**r.GB,w=r.MXA*m+r.MXB*b+r.MXC*y,S=r.MYA*m+r.MYB*b+r.MYC*y,x=r.MZA*m+r.MZB*b+r.MZC*y,k=s;k[0]=w;k[1]=S;k[2]=x;const C=o;!function normalizeWhitePointToFlat(a,r,n){if(1===a[0]&&1===a[2]){n[0]=r[0];n[1]=r[1];n[2]=r[2];return}const s=n;matrixProduct(e,r,s);const o=i;!function convertToFlat(e,t,a){a[0]=1*t[0]/e[0];a[1]=1*t[1]/e[1];a[2]=1*t[2]/e[2]}(a,s,o);matrixProduct(t,o,n)}(r.whitePoint,k,C);const v=s;!function compensateBlackPoint(e,t,a){if(0===e[0]&&0===e[1]&&0===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=decodeL(0),n=(1-r)/(1-decodeL(e[0])),i=1-n,s=(1-r)/(1-decodeL(e[1])),o=1-s,c=(1-r)/(1-decodeL(e[2])),l=1-c;a[0]=t[0]*n+i;a[1]=t[1]*s+o;a[2]=t[2]*c+l}(r.blackPoint,C,v);const F=o;!function normalizeWhitePointToD65(a,r,n){const s=n;matrixProduct(e,r,s);const o=i;!function convertToD65(e,t,a){a[0]=.95047*t[0]/e[0];a[1]=1*t[1]/e[1];a[2]=1.08883*t[2]/e[2]}(a,s,o);matrixProduct(t,o,n)}(n,v,F);const O=s;matrixProduct(a,F,O);h[u]=255*sRGBTransferFunction(O[0]);h[u+1]=255*sRGBTransferFunction(O[1]);h[u+2]=255*sRGBTransferFunction(O[2])}return class CalRGBCS extends ColorSpace{constructor(e,t,a,n){super("CalRGB",3);if(!e)throw new r.FormatError("WhitePoint missing - required for color space CalRGB");t=t||new Float32Array(3);a=a||new Float32Array([1,1,1]);n=n||new Float32Array([1,0,0,0,1,0,0,0,1]);const i=e[0],s=e[1],o=e[2];this.whitePoint=e;const c=t[0],l=t[1],h=t[2];this.blackPoint=t;this.GR=a[0];this.GG=a[1];this.GB=a[2];this.MXA=n[0];this.MYA=n[1];this.MZA=n[2];this.MXB=n[3];this.MYB=n[4];this.MZB=n[5];this.MXC=n[6];this.MYC=n[7];this.MZC=n[8];if(i<0||o<0||1!==s)throw new r.FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);if(c<0||l<0||h<0){(0,r.info)(`Invalid BlackPoint for ${this.name} [${c}, ${l}, ${h}], falling back to default.`);this.blackPoint=new Float32Array(3)}if(this.GR<0||this.GG<0||this.GB<0){(0,r.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ${this.name}, falling back to default.`);this.GR=this.GG=this.GB=1}}getRgbItem(e,t,a,r){convertToRgb(this,e,t,a,r,1)}getRgbBuffer(e,t,a,r,n,i,s){const o=1/((1<=6/29?e**3:108/841*(e-4/29);return t}function decode(e,t,a,r){return a+e*(r-a)/t}function convertToRgb(e,t,a,r,n,i){let s=t[a],o=t[a+1],c=t[a+2];if(!1!==r){s=decode(s,r,0,100);o=decode(o,r,e.amin,e.amax);c=decode(c,r,e.bmin,e.bmax)}o>e.amax?o=e.amax:oe.bmax?c=e.bmax:cthis.amax||this.bmin>this.bmax){(0,r.info)("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}getRgbItem(e,t,a,r){convertToRgb(this,e,t,!1,a,r)}getRgbBuffer(e,t,a,r,n,i,s){const o=(1<{Object.defineProperty(t,"__esModule",{value:!0});t.PartialEvaluator=t.EvaluatorPreprocessor=void 0;var r=a(2),n=a(26),i=a(5),s=a(44),o=a(18),c=a(19),l=a(47),h=a(21),u=a(56),d=a(12),f=a(48),g=a(57),p=a(27),m=a(59),b=a(10),y=a(9),w=a(60),S=a(24),x=a(29),k=a(20),C=a(8),v=a(51),F=a(61),O=a(62),T=a(63);const M=Object.freeze({maxImageSize:-1,disableFontFace:!1,ignoreErrors:!1,isEvalSupported:!0,fontExtraProperties:!1,useSystemFonts:!0,cMapUrl:null,standardFontDataUrl:null}),E=1,D=2,N=Promise.resolve();function normalizeBlendMode(e,t=!1){if(Array.isArray(e)){for(let t=0,a=e.length;t0&&e.args[0].count++}class TimeSlotManager{static get TIME_SLOT_DURATION_MS(){return(0,r.shadow)(this,"TIME_SLOT_DURATION_MS",20)}static get CHECK_TIME_EVERY(){return(0,r.shadow)(this,"CHECK_TIME_EVERY",100)}constructor(){this.reset()}check(){if(++this.checkedd){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors){(0,r.warn)(e);return}throw new Error(e)}let f;c.has("OC")&&(f=await this.parseMarkedContentProps(c.get("OC"),e));let g,p;if(c.get("IM","ImageMask")||!1){const e=c.get("I","Interpolate"),a=h+7>>3,o=t.getBytes(a*u),d=c.getArray("D","Decode");if(this.parsingType3Font){g=T.PDFImage.createRawMask({imgArray:o,width:h,height:u,imageIsFromDecodeStream:t instanceof x.DecodeStream,inverseDecode:!!d&&d[0]>0,interpolate:e});g.cached=!!i;p=[g];n.addImageOps(r.OPS.paintImageMaskXObject,p,f);i&&s.set(i,l,{fn:r.OPS.paintImageMaskXObject,args:p,optionalContent:f});return}g=T.PDFImage.createMask({imgArray:o,width:h,height:u,imageIsFromDecodeStream:t instanceof x.DecodeStream,inverseDecode:!!d&&d[0]>0,interpolate:e});if(g.isSingleOpaquePixel){n.addImageOps(r.OPS.paintSolidColorImageMask,[],f);i&&s.set(i,l,{fn:r.OPS.paintSolidColorImageMask,args:[],optionalContent:f});return}const m=`mask_${this.idFactory.createObjId()}`;n.addDependency(m);this._sendImgData(m,g);p=[{data:m,width:g.width,height:g.height,interpolate:g.interpolate,count:1}];n.addImageOps(r.OPS.paintImageMaskXObject,p,f);i&&s.set(i,l,{fn:r.OPS.paintImageMaskXObject,args:p,optionalContent:f});return}const m=c.get("SM","SMask")||!1,b=c.get("Mask")||!1;if(a&&!m&&!b&&h+u<200){const i=new T.PDFImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o});g=i.createImageData(!0);n.addImageOps(r.OPS.paintInlineImageXObject,[g],f);return}let y=`img_${this.idFactory.createObjId()}`,w=!1;if(this.parsingType3Font)y=`${this.idFactory.getDocId()}_type3_${y}`;else if(l){w=this.globalImageCache.shouldCache(l,this.pageIndex);w&&(y=`${this.idFactory.getDocId()}_${y}`)}n.addDependency(y);p=[y,h,u];T.PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o}).then((e=>{g=e.createImageData(!1);i&&l&&w&&this.globalImageCache.addByteSize(l,g.data.length);return this._sendImgData(y,g,w)})).catch((e=>{(0,r.warn)(`Unable to decode image "${y}": "${e}".`);return this._sendImgData(y,null,w)}));n.addImageOps(r.OPS.paintImageXObject,p,f);if(i){s.set(i,l,{fn:r.OPS.paintImageXObject,args:p,optionalContent:f});if(l){(0,r.assert)(!a,"Cannot cache an inline image globally.");this.globalImageCache.addPageIndex(l,this.pageIndex);w&&this.globalImageCache.setData(l,{objId:y,fn:r.OPS.paintImageXObject,args:p,optionalContent:f,byteSize:0})}}}handleSMask(e,t,a,r,n,i){const s=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if((0,g.isPDFFunction)(c)){const e=this._pdfFunctionFactory.create(c),t=new Uint8Array(256),a=new Float32Array(1);for(let r=0;r<256;r++){a[0]=r/255;e(a,0,a,0);t[r]=255*a[0]|0}o.transferMap=t}return this.buildFormXObject(t,s,o,a,r,n.state.clone(),i)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!(0,g.isPDFFunction)(e))return null;t=[e]}const a=[];let r=0,n=0;for(const e of t){const t=this.xref.fetchIfRef(e);r++;if((0,i.isName)(t,"Identity")){a.push(null);continue}if(!(0,g.isPDFFunction)(t))return null;const s=this._pdfFunctionFactory.create(t),o=new Uint8Array(256),c=new Float32Array(1);for(let e=0;e<256;e++){c[0]=e/255;s(c,0,c,0);o[e]=255*c[0]|0}a.push(o);n++}return 1!==r&&4!==r||0===n?null:a}handleTilingType(e,t,a,n,s,o,c,l){const h=new O.OperatorList,d=i.Dict.merge({xref:this.xref,dictArray:[s.get("Resources"),a]});return this.getOperatorList({stream:n,task:c,resources:d,operatorList:h}).then((function(){const a=h.getIR(),r=(0,u.getTilingPatternIR)(a,s,t);o.addDependencies(h.dependencies);o.addOp(e,r);s.objId&&l.set(null,s.objId,{operatorListIR:a,dict:s})})).catch((e=>{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorTilingPattern});(0,r.warn)(`handleTilingType - ignoring pattern: "${e}".`)}}))}handleSetFont(e,t,a,n,o,c,l=null,h=null){const u=t&&t[0]instanceof i.Name?t[0].name:null;return this.loadFont(u,a,e,l,h).then((t=>t.font.isType3Font?t.loadType3Data(this,e,o).then((function(){n.addDependencies(t.type3Dependencies);return t})).catch((e=>{this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorFontLoadType3});return new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Type3 font load error: ${e}`),dict:t.font,evaluatorOptions:this.options})})):t)).then((e=>{c.font=e.font;e.send(this.handler);return e.loadedName}))}handleText(e,t){const a=t.font,n=a.charsToGlyphs(e);if(a.data){(!!(t.textRenderingMode&r.TextRenderingMode.ADD_TO_PATH_FLAG)||"Pattern"===t.fillColorSpace.name||a.disableFontFace||this.options.disableFontFace)&&PartialEvaluator.buildFontPaths(a,n,this.handler,this.options)}return n}ensureStateFont(e){if(e.font)return;const t=new r.FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorFontState});(0,r.warn)(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:a,cacheKey:n,task:s,stateManager:o,localGStateCache:c,localColorSpaceCache:l}){const h=t.objId;let u=!0;const d=[],f=t.getKeys();let g=Promise.resolve();for(let n=0,c=f.length;nthis.handleSetFont(e,null,h[0],a,s,o.state).then((function(e){a.addDependency(e);d.push([c,[e,h[1]]])}))));break;case"BM":d.push([c,normalizeBlendMode(h)]);break;case"SMask":if((0,i.isName)(h,"None")){d.push([c,!1]);break}if(h instanceof i.Dict){u=!1;g=g.then((()=>this.handleSMask(h,e,a,s,o,l)));d.push([c,!0])}else(0,r.warn)("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(h);d.push([c,t]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":(0,r.info)("graphic state operator "+c);break;default:(0,r.info)("Unknown graphic state operator "+c)}}return g.then((function(){d.length>0&&a.addOp(r.OPS.setGState,[d]);u&&c.set(n,h,d)}))}loadFont(e,t,a,n=null,c=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Font "${e}" is not available.`),dict:t,evaluatorOptions:this.options}),l=this.xref;let h;if(t){if(!(t instanceof i.Ref))throw new r.FormatError('The "font" object should be a reference.');h=t}else{const t=a.get("Font");t&&(h=t.getRaw(e))}if(!h){const a=`Font "${e||t&&t.toString()}" is not available`;if(!this.options.ignoreErrors&&!this.parsingType3Font){(0,r.warn)(`${a}.`);return errorFont()}this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorFontMissing});(0,r.warn)(`${a} -- attempting to fallback to a default font.`);h=n||PartialEvaluator.fallbackFontDict}if(this.parsingType3Font&&this.type3FontRefs.has(h))return errorFont();if(this.fontCache.has(h))return this.fontCache.get(h);if(!((t=l.fetchIfRef(h))instanceof i.Dict))return errorFont();if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const u=(0,r.createPromiseCapability)();let d;try{d=this.preEvaluateFont(t);d.cssFontInfo=c}catch(e){(0,r.warn)(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:f,hash:g}=d,p=h instanceof i.Ref;let m;p&&(m=`f${h.toString()}`);if(g&&f instanceof i.Dict){f.fontAliases||(f.fontAliases=Object.create(null));const e=f.fontAliases;if(e[g]){const t=e[g].aliasRef;if(p&&t&&this.fontCache.has(t)){this.fontCache.putAlias(h,t);return this.fontCache.get(h)}}else e[g]={fontID:this.idFactory.createFontId()};p&&(e[g].aliasRef=h);m=e[g].fontID}if(p)this.fontCache.put(h,u.promise);else{m||(m=this.idFactory.createFontId());t.cacheKey=`cacheKey_${m}`;this.fontCache.put(t.cacheKey,u.promise)}(0,r.assert)(m&&m.startsWith("f"),'The "fontID" must be (correctly) defined.');t.loadedName=`${this.idFactory.getDocId()}_${m}`;this.translateFont(d).then((e=>{void 0!==e.fontType&&l.stats.addFontType(e.fontType);u.resolve(new TranslatedFont({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorFontTranslate});(0,r.warn)(`loadFont - translateFont failed: "${e}".`);try{const e=f&&f.get("FontFile3"),t=e&&e.get("Subtype"),a=(0,o.getFontType)(d.type,t&&t.name);void 0!==a&&l.stats.addFontType(a)}catch(e){}u.resolve(new TranslatedFont({loadedName:t.loadedName,font:new s.ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))}));return u.promise}buildPath(e,t,a,n=!1){const i=e.length-1;a||(a=[]);let s;if(i<0||e.fnArray[i]!==r.OPS.constructPath){if(n){(0,r.warn)(`Encountered path operator "${t}" inside of a text object.`);e.addOp(r.OPS.save,null)}s=[1/0,-1/0,1/0,-1/0];e.addOp(r.OPS.constructPath,[[t],a,s]);n&&e.addOp(r.OPS.restore,null)}else{const r=e.argsArray[i];r[0].push(t);Array.prototype.push.apply(r[1],a);s=r[2]}switch(t){case r.OPS.rectangle:s[0]=Math.min(s[0],a[0],a[0]+a[2]);s[1]=Math.max(s[1],a[0],a[0]+a[2]);s[2]=Math.min(s[2],a[1],a[1]+a[3]);s[3]=Math.max(s[3],a[1],a[1]+a[3]);break;case r.OPS.moveTo:case r.OPS.lineTo:s[0]=Math.min(s[0],a[0]);s[1]=Math.max(s[1],a[0]);s[2]=Math.min(s[2],a[1]);s[3]=Math.max(s[3],a[1])}}parseColorSpace({cs:e,resources:t,localColorSpaceCache:a}){return S.ColorSpace.parseAsync({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:a}).catch((e=>{if(e instanceof r.AbortException)return null;if(this.options.ignoreErrors){this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorColorSpace});(0,r.warn)(`parseColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}))}parseShading({shading:e,resources:t,localColorSpaceCache:a,localShadingPatternCache:r}){let n=r.get(e);if(!n){const i=u.Pattern.parseShading(e,this.xref,t,this.handler,this._pdfFunctionFactory,a).getIR();n=`pattern_${this.idFactory.createObjId()}`;r.set(e,n);this.handler.send("obj",[n,this.pageIndex,"Pattern",i])}return n}handleColorN(e,t,a,n,s,o,c,l,h,d){const f=a.pop();if(f instanceof i.Name){const g=s.getRaw(f.name),p=g instanceof i.Ref&&h.getByRef(g);if(p)try{const r=n.base?n.base.getRgb(a,0):null,i=(0,u.getTilingPatternIR)(p.operatorListIR,p.dict,r);e.addOp(t,i);return}catch(e){}const m=this.xref.fetchIfRef(g);if(m){const i=m instanceof y.BaseStream?m.dict:m,s=i.get("PatternType");if(s===E){const r=n.base?n.base.getRgb(a,0):null;return this.handleTilingType(t,r,o,m,i,e,c,h)}if(s===D){const a=i.get("Shading"),r=i.getArray("Matrix"),n=this.parseShading({shading:a,resources:o,localColorSpaceCache:l,localShadingPatternCache:d});e.addOp(t,["Shading",n,r]);return}throw new r.FormatError(`Unknown PatternType: ${s}`)}}throw new r.FormatError(`Unknown PatternName: ${f}`)}_parseVisibilityExpression(e,t,a){if(++t>10){(0,r.warn)("Visibility expression is too deeply nested");return}const n=e.length,s=this.xref.fetchIfRef(e[0]);if(!(n<2)&&s instanceof i.Name){switch(s.name){case"And":case"Or":case"Not":a.push(s.name);break;default:(0,r.warn)(`Invalid operator ${s.name} in visibility expression`);return}for(let r=1;r0)return{type:"OCMD",expression:t}}const t=a.get("OCGs");if(Array.isArray(t)||t instanceof i.Dict){const e=[];if(Array.isArray(t))for(const a of t)e.push(a.toString());else e.push(t.objId);return{type:n,ids:e,policy:a.get("P")instanceof i.Name?a.get("P").name:null,expression:null}}if(t instanceof i.Ref)return{type:n,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:a,operatorList:n,initialState:s=null,fallbackFontDict:o=null}){a=a||i.Dict.empty;s=s||new EvalState;if(!n)throw new Error('getOperatorList: missing "operatorList" parameter');const c=this,l=this.xref;let h=!1;const u=new m.LocalImageCache,d=new m.LocalColorSpaceCache,f=new m.LocalGStateCache,g=new m.LocalTilingPatternCache,p=new Map,b=a.get("XObject")||i.Dict.empty,w=a.get("Pattern")||i.Dict.empty,x=new StateManager(s),k=new EvaluatorPreprocessor(e,l,x),C=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=k.savedStatesDepth;e0&&n.addOp(r.OPS.setGState,[t]);e=null;continue}}next(new Promise((function(e,s){if(!E)throw new r.FormatError("GState must be referred to by name.");const o=a.get("ExtGState");if(!(o instanceof i.Dict))throw new r.FormatError("ExtGState should be a dictionary.");const l=o.get(M);if(!(l instanceof i.Dict))throw new r.FormatError("GState should be a dictionary.");c.setGState({resources:a,gState:l,operatorList:n,cacheKey:M,task:t,stateManager:x,localGStateCache:f,localColorSpaceCache:d}).then(e,s)})).catch((function(e){if(!(e instanceof r.AbortException)){if(!c.options.ignoreErrors)throw e;c.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorExtGState});(0,r.warn)(`getOperatorList - ignoring ExtGState: "${e}".`)}})));return;case r.OPS.moveTo:case r.OPS.lineTo:case r.OPS.curveTo:case r.OPS.curveTo2:case r.OPS.curveTo3:case r.OPS.closePath:case r.OPS.rectangle:c.buildPath(n,s,e,h);continue;case r.OPS.markPoint:case r.OPS.markPointProps:case r.OPS.beginCompat:case r.OPS.endCompat:continue;case r.OPS.beginMarkedContentProps:if(!(e[0]instanceof i.Name)){(0,r.warn)(`Expected name for beginMarkedContentProps arg0=${e[0]}`);continue}if("OC"===e[0].name){next(c.parseMarkedContentProps(e[1],a).then((e=>{n.addOp(r.OPS.beginMarkedContentProps,["OC",e])})).catch((e=>{if(!(e instanceof r.AbortException)){if(!c.options.ignoreErrors)throw e;c.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorMarkedContent});(0,r.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`)}})));return}e=[e[0].name,e[1]instanceof i.Dict?e[1].get("MCID"):null];break;case r.OPS.beginMarkedContent:case r.OPS.endMarkedContent:default:if(null!==e){for(F=0,O=e.length;F{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorOperatorList});(0,r.warn)(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}}))}getTextContent({stream:e,task:t,resources:a,stateManager:n=null,combineTextItems:s=!1,includeMarkedContent:o=!1,sink:c,seenStyles:l=new Set,viewBox:u}){a=a||i.Dict.empty;n=n||new StateManager(new TextState);const d=(0,h.getNormalizedUnicodes)(),f={items:[],styles:Object.create(null)},g={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},p=[" "," "];let b=0;function saveLastChar(e){const t=(b+1)%2,a=" "!==p[b]&&" "===p[t];p[b]=e;b=t;return a}function resetLastChars(){p[0]=p[1]=" ";b=0}const S=this,x=this.xref,k=[];let C=null;const v=new m.LocalImageCache,F=new m.LocalGStateCache,O=new EvaluatorPreprocessor(e,x,n);let T;function getCurrentTextTransform(){const e=T.font,t=[T.fontSize*T.textHScale,0,0,T.fontSize,0,T.textRise];if(e.isType3Font&&(T.fontSize<=1||e.isCharBBox)&&!(0,r.isArrayEqual)(T.fontMatrix,r.FONT_IDENTITY_MATRIX)){const a=e.bbox[3]-e.bbox[1];a>0&&(t[3]*=a*T.fontMatrix[3])}return r.Util.transform(T.ctm,r.Util.transform(T.textMatrix,t))}function ensureTextContentItem(){if(g.initialized)return g;const e=T.font,t=e.loadedName;if(!l.has(t)){l.add(t);f.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical}}g.fontName=t;const a=g.transform=getCurrentTextTransform();if(e.vertical){g.width=g.totalWidth=Math.hypot(a[0],a[1]);g.height=g.totalHeight=0;g.vertical=!0}else{g.width=g.totalWidth=0;g.height=g.totalHeight=Math.hypot(a[2],a[3]);g.vertical=!1}const r=Math.hypot(T.textLineMatrix[0],T.textLineMatrix[1]),n=Math.hypot(T.ctm[0],T.ctm[1]);g.textAdvanceScale=n*r;g.trackingSpaceMin=.1*T.fontSize;g.notASpace=.03*T.fontSize;g.negativeSpaceMax=-.2*T.fontSize;g.spaceInFlowMin=.1*T.fontSize;g.spaceInFlowMax=.6*T.fontSize;g.hasEOL=!1;g.initialized=!0;return g}function updateAdvanceScale(){if(!g.initialized)return;const e=Math.hypot(T.textLineMatrix[0],T.textLineMatrix[1]),t=Math.hypot(T.ctm[0],T.ctm[1])*e;if(t!==g.textAdvanceScale){if(g.vertical){g.totalHeight+=g.height*g.textAdvanceScale;g.height=0}else{g.totalWidth+=g.width*g.textAdvanceScale;g.width=0}g.textAdvanceScale=t}}function handleSetFont(e,n){return S.loadFont(e,n,a).then((function(e){return e.font.isType3Font?e.loadType3Data(S,a,t).catch((function(){})).then((function(){return e})):e})).then((function(e){T.font=e.font;T.fontMatrix=e.font.fontMatrix||r.FONT_IDENTITY_MATRIX}))}function applyInverseRotation(e,t,a){const r=Math.hypot(a[0],a[1]);return[(a[0]*e+a[1]*t)/r,(a[2]*e+a[3]*t)/r]}function compareWithLastPosition(){const e=getCurrentTextTransform();let t=e[4],a=e[5];const r=t-u[0],n=a-u[1];if(r<0||r>u[2]||n<0||n>u[3])return!1;if(!s||!T.font||!g.prevTransform)return!0;let i=g.prevTransform[4],o=g.prevTransform[5];if(i===t&&o===a)return!0;let c=-1;e[0]&&0===e[1]&&0===e[2]?c=e[0]>0?0:180:e[1]&&0===e[0]&&0===e[3]&&(c=e[1]>0?90:270);switch(c){case 0:break;case 90:[t,a]=[a,t];[i,o]=[o,i];break;case 180:[t,a,i,o]=[-t,-a,-i,-o];break;case 270:[t,a]=[-a,-t];[i,o]=[-o,-i];break;default:[t,a]=applyInverseRotation(t,a,e);[i,o]=applyInverseRotation(i,o,g.prevTransform)}if(T.font.vertical){const e=(o-a)/g.textAdvanceScale,r=t-i,n=Math.sign(g.height);if(e.5*g.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(r)>g.width){appendEOL();return!0}e<=n*g.notASpace&&resetLastChars();if(e<=n*g.trackingSpaceMin)g.height+=e;else if(!addFakeSpaces(e,g.prevTransform,n))if(0===g.str.length){resetLastChars();f.items.push({str:" ",dir:"ltr",width:0,height:Math.abs(e),transform:g.prevTransform,fontName:g.fontName,hasEOL:!1})}else g.height+=e;return!0}const l=(t-i)/g.textAdvanceScale,h=a-o,d=Math.sign(g.width);if(l.5*g.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(h)>g.height){appendEOL();return!0}l<=d*g.notASpace&&resetLastChars();if(l<=d*g.trackingSpaceMin)g.width+=l;else if(!addFakeSpaces(l,g.prevTransform,d))if(0===g.str.length){resetLastChars();f.items.push({str:" ",dir:"ltr",width:Math.abs(l),height:0,transform:g.prevTransform,fontName:g.fontName,hasEOL:!1})}else g.width+=l;return!0}function buildTextContentItem({chars:e,extraSpacing:t}){const a=T.font;if(!e){const e=T.charSpacing+t;e&&(a.vertical?T.translateTextMatrix(0,-e):T.translateTextMatrix(e*T.textHScale,0));return}const r=a.charsToGlyphs(e),n=T.fontMatrix[0]*T.fontSize;for(let e=0,i=r.length;e0){const e=k.join("");k.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case r.OPS.showText:if(!n.state.font){S.ensureStateFont(n.state);continue}buildTextContentItem({chars:p[0],extraSpacing:0});break;case r.OPS.nextLineShowText:if(!n.state.font){S.ensureStateFont(n.state);continue}T.carriageReturn();buildTextContentItem({chars:p[0],extraSpacing:0});break;case r.OPS.nextLineSetSpacingShowText:if(!n.state.font){S.ensureStateFont(n.state);continue}T.wordSpacing=p[0];T.charSpacing=p[1];T.carriageReturn();buildTextContentItem({chars:p[2],extraSpacing:0});break;case r.OPS.paintXObject:flushTextContentItem();C||(C=a.get("XObject")||i.Dict.empty);var w=p[0]instanceof i.Name,E=p[0].name;if(w&&v.getByName(E))break;next(new Promise((function(e,h){if(!w)throw new r.FormatError("XObject must be referred to by name.");let d=C.getRaw(E);if(d instanceof i.Ref){if(v.getByRef(d)){e();return}if(S.globalImageCache.getData(d,S.pageIndex)){e();return}d=x.fetch(d)}if(!(d instanceof y.BaseStream))throw new r.FormatError("XObject should be a stream");const f=d.dict.get("Subtype");if(!(f instanceof i.Name))throw new r.FormatError("XObject should have a Name subtype");if("Form"!==f.name){v.set(E,d.dict.objId,!0);e();return}const g=n.state.clone(),p=new StateManager(g),m=d.dict.getArray("Matrix");Array.isArray(m)&&6===m.length&&p.transform(m);enqueueChunk();const b={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;c.enqueue(e,t)},get desiredSize(){return c.desiredSize},get ready(){return c.ready}};S.getTextContent({stream:d,task:t,resources:d.dict.get("Resources")||a,stateManager:p,combineTextItems:s,includeMarkedContent:o,sink:b,seenStyles:l,viewBox:u}).then((function(){b.enqueueInvoked||v.set(E,d.dict.objId,!0);e()}),h)})).catch((function(e){if(!(e instanceof r.AbortException)){if(!S.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring XObject: "${e}".`)}})));return;case r.OPS.setGState:w=p[0]instanceof i.Name;E=p[0].name;if(w&&F.getByName(E))break;next(new Promise((function(e,t){if(!w)throw new r.FormatError("GState must be referred to by name.");const n=a.get("ExtGState");if(!(n instanceof i.Dict))throw new r.FormatError("ExtGState should be a dictionary.");const s=n.get(E);if(!(s instanceof i.Dict))throw new r.FormatError("GState should be a dictionary.");const o=s.get("Font");if(o){flushTextContentItem();T.fontName=null;T.fontSize=o[1];handleSetFont(null,o[0]).then(e,t)}else{F.set(E,s.objId,!0);e()}})).catch((function(e){if(!(e instanceof r.AbortException)){if(!S.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring ExtGState: "${e}".`)}})));return;case r.OPS.beginMarkedContent:o&&f.items.push({type:"beginMarkedContent",tag:p[0]instanceof i.Name?p[0].name:null});break;case r.OPS.beginMarkedContentProps:if(o){flushTextContentItem();let e=null;p[1]instanceof i.Dict&&(e=p[1].get("MCID"));f.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${S.idFactory.getPageObjId()}_mcid${e}`:null,tag:p[0]instanceof i.Name?p[0].name:null})}break;case r.OPS.endMarkedContent:if(o){flushTextContentItem();f.items.push({type:"endMarkedContent"})}}if(f.items.length>=c.desiredSize){g=!0;break}}if(g)next(N);else{flushTextContentItem();enqueueChunk();e()}})).catch((e=>{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}}))}extractDataStructures(e,t,a){const n=this.xref;let s;const l=this.readToUnicode(a.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(a.composite){const t=e.get("CIDSystemInfo");t instanceof i.Dict&&(a.cidSystemInfo={registry:(0,r.stringToPDFString)(t.get("Registry")),ordering:(0,r.stringToPDFString)(t.get("Ordering")),supplement:t.get("Supplement")});const n=e.get("CIDToGIDMap");n instanceof y.BaseStream&&(s=n.getBytes())}const h=[];let u,d=null;if(e.has("Encoding")){u=e.get("Encoding");if(u instanceof i.Dict){d=u.get("BaseEncoding");d=d instanceof i.Name?d.name:null;if(u.has("Differences")){const e=u.get("Differences");let t=0;for(let a=0,s=e.length;a0;a.dict=e;return l.then((e=>{a.toUnicode=e;return this.buildToUnicode(a)})).then((e=>{a.toUnicode=e;s&&(a.cidToGidMap=this.readCidToGidMap(s,e));return a}))}_simpleFontToUnicode(e,t=!1){(0,r.assert)(!e.composite,"Must be a simple font.");const a=[],n=e.defaultEncoding.slice(),i=e.baseEncodingName,s=e.differences;for(const e in s){const t=s[e];".notdef"!==t&&(n[e]=t)}const o=(0,k.getGlyphsUnicode)();for(const r in n){let s=n[r];if(""!==s)if(void 0!==o[s])a[r]=String.fromCharCode(o[s]);else{let n=0;switch(s[0]){case"G":3===s.length&&(n=parseInt(s.substring(1),16));break;case"g":5===s.length&&(n=parseInt(s.substring(1),16));break;case"C":case"c":if(s.length>=3&&s.length<=4){const a=s.substring(1);if(t){n=parseInt(a,16);break}n=+a;if(Number.isNaN(n)&&Number.isInteger(parseInt(a,16)))return this._simpleFontToUnicode(e,!0)}break;default:const a=(0,h.getUnicodeForGlyph)(s,o);-1!==a&&(n=a)}if(n>0&&n<=1114111&&Number.isInteger(n)){if(i&&n===+r){const e=(0,c.getEncoding)(i);if(e&&(s=e[r])){a[r]=String.fromCharCode(o[s]);continue}}a[r]=String.fromCodePoint(n)}}}return a}async buildToUnicode(e){e.hasIncludedToUnicodeMap=!!e.toUnicode&&e.toUnicode.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new f.ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof n.IdentityCMap)||"Adobe"===e.cidSystemInfo.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:a}=e.cidSystemInfo,s=i.Name.get(`${t}-${a}-UCS2`),o=await n.CMapFactory.create({encoding:s,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),c=[];e.cMap.forEach((function(e,t){if(t>65535)throw new r.FormatError("Max size of CID is 65,535");const a=o.lookup(t);a&&(c[e]=String.fromCharCode((a.charCodeAt(0)<<8)+a.charCodeAt(1)))}));return new f.ToUnicodeMap(c)}return new f.IdentityToUnicodeMap(e.firstChar,e.lastChar)}readToUnicode(e){return e?e instanceof i.Name?n.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}).then((function(e){return e instanceof n.IdentityCMap?new f.IdentityToUnicodeMap(0,65535):new f.ToUnicodeMap(e.getMap())})):e instanceof y.BaseStream?n.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}).then((function(e){if(e instanceof n.IdentityCMap)return new f.IdentityToUnicodeMap(0,65535);const t=new Array(e.length);e.forEach((function(e,a){if("number"==typeof a){t[e]=String.fromCodePoint(a);return}const r=[];for(let e=0;e{if(e instanceof r.AbortException)return null;if(this.options.ignoreErrors){this.handler.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorFontToUnicode});(0,r.warn)(`readToUnicode - ignoring ToUnicode data: "${e}".`);return null}throw e})):Promise.resolve(null):Promise.resolve(null)}readCidToGidMap(e,t){const a=[];for(let r=0,n=e.length;r>1;(0!==n||t.has(i))&&(a[i]=n)}return a}extractWidths(e,t,a){const r=this.xref;let n=[],s=0;const c=[];let l,h,u,d,f,g,p,m;if(a.composite){s=e.has("DW")?e.get("DW"):1e3;m=e.get("W");if(m)for(h=0,u=m.length;h{if(p){const e=[];let a=u;for(let t=0,r=p.length;t{this.extractWidths(t,e,a);return new s.Font(v.name,w,a)}))}static buildFontPaths(e,t,a,n){function buildPath(t){const i=`${e.loadedName}_path_${t}`;try{if(e.renderer.hasBuiltPath(t))return;a.send("commonobj",[i,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(n.ignoreErrors){a.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.errorFontBuildPath});(0,r.warn)(`buildFontPaths - ignoring ${i} glyph: "${e}".`);return}throw e}}for(const e of t){buildPath(e.fontChar);const t=e.accent;t&&t.fontChar&&buildPath(t.fontChar)}}static get fallbackFontDict(){const e=new i.Dict;e.set("BaseFont",i.Name.get("PDFJS-FallbackFont"));e.set("Type",i.Name.get("FallbackType"));e.set("Subtype",i.Name.get("FallbackType"));e.set("Encoding",i.Name.get("WinAnsiEncoding"));return(0,r.shadow)(this,"fallbackFontDict",e)}}t.PartialEvaluator=PartialEvaluator;class TranslatedFont{constructor({loadedName:e,font:t,dict:a,evaluatorOptions:r}){this.loadedName=e;this.font=t;this.dict=a;this._evaluatorOptions=r||M;this.type3Loaded=null;this.type3Dependencies=t.isType3Font?new Set:null;this.sent=!1}send(e){if(!this.sent){this.sent=!0;e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)])}}fallback(e){if(this.font.data){this.font.disableFontFace=!0;PartialEvaluator.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions)}}loadType3Data(e,t,a){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const n=e.clone({ignoreErrors:!1});n.parsingType3Font=!0;const s=new i.RefSet(e.type3FontRefs);this.dict.objId&&!s.has(this.dict.objId)&&s.put(this.dict.objId);n.type3FontRefs=s;const o=this.font,c=this.type3Dependencies;let l=Promise.resolve();const h=this.dict.get("CharProcs"),u=this.dict.get("Resources")||t,d=Object.create(null),f=!o.bbox||(0,r.isArrayEqual)(o.bbox,[0,0,0,0]);for(const e of h.getKeys())l=l.then((()=>{const t=h.get(e),i=new O.OperatorList;return n.getOperatorList({stream:t,task:a,resources:u,operatorList:i}).then((()=>{i.fnArray[0]===r.OPS.setCharWidthAndBounds&&this._removeType3ColorOperators(i,f);d[e]=i.getIR();for(const e of i.dependencies)c.add(e)})).catch((function(t){(0,r.warn)(`Type3 font resource "${e}" is not available.`);const a=new O.OperatorList;d[e]=a.getIR()}))}));this.type3Loaded=l.then((()=>{o.charProcOperatorList=d;if(this._bbox){o.isCharBBox=!0;o.bbox=this._bbox}}));return this.type3Loaded}_removeType3ColorOperators(e,t=!1){if(t){this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]);const t=r.Util.normalizeRect(e.argsArray[0].slice(2));this._bbox[0]=Math.min(this._bbox[0],t[0]);this._bbox[1]=Math.min(this._bbox[1],t[1]);this._bbox[2]=Math.max(this._bbox[2],t[2]);this._bbox[3]=Math.max(this._bbox[3],t[3])}let a=1,n=e.length;for(;ao&&(0,r.info)(`Command ${n}: expected [0, ${o}] args, but received ${c} args.`);else{if(c!==o){const e=this.nonProcessedArgs;for(;c>o;){e.push(t.shift());c--}for(;c=r.OPS.moveTo&&s<=r.OPS.endPath&&++this._numInvalidPathOPS>EvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new r.FormatError(`Invalid ${e}`);(0,r.warn)(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(s,t);e.fn=s;e.args=t;return!0}if(a===i.EOF)return!1;if(null!==a){null===t&&(t=[]);t.push(a);if(t.length>33)throw new r.FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case r.OPS.save:this.stateManager.save();break;case r.OPS.restore:this.stateManager.restore();break;case r.OPS.transform:this.stateManager.transform(t)}}}t.EvaluatorPreprocessor=EvaluatorPreprocessor},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.IdentityCMap=t.CMapFactory=t.CMap=void 0;var r=a(2),n=a(5),i=a(9),s=a(27),o=a(8),c=a(10);const l=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],h=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,a){this.codespaceRanges[e-1].push(t,a);this.numCodespaceRanges++}mapCidRange(e,t,a){if(t-e>h)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=a++}mapBfRange(e,t,a){if(t-e>h)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const r=a.length-1;for(;e<=t;){this._map[e++]=a;const t=a.charCodeAt(r)+1;t>255?a=a.substring(0,r-1)+String.fromCharCode(a.charCodeAt(r-1)+1)+"\0":a=a.substring(0,r)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,a){if(t-e>h)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const r=a.length;let n=0;for(;e<=t&&n>>0;const s=n[i];for(let e=0,t=s.length;e=t&&r<=n){a.charcode=r;a.length=i+1;return}}}a.charcode=0;a.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let a=0,r=t.length;a=n&&e<=i)return a+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}t.CMap=CMap;class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,a){(0,r.unreachable)("should not call mapCidRange")}mapBfRange(e,t,a){(0,r.unreachable)("should not call mapBfRange")}mapBfRangeToArray(e,t,a){(0,r.unreachable)("should not call mapBfRangeToArray")}mapOne(e,t){(0,r.unreachable)("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){(0,r.unreachable)("should not access .isIdentityCMap")}}t.IdentityCMap=IdentityCMap;const u=function BinaryCMapReaderClosure(){function hexToInt(e,t){let a=0;for(let r=0;r<=t;r++)a=a<<8|e[r];return a>>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode.apply(null,e.subarray(0,t+1))}function addHex(e,t,a){let r=0;for(let n=a;n>=0;n--){r+=e[n]+t[n];e[n]=255&r;r>>=8}}function incHex(e,t){let a=1;for(let r=t;r>=0&&a>0;r--){a+=e[r];e[r]=255&a;a>>=8}}const e=16;class BinaryCMapStream{constructor(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const a=this.readByte();if(a<0)throw new r.FormatError("unexpected EOF in bcmap");e=!(128&a);t=t<<7|127&a}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1));this.pos+=t+1}readHexNumber(e,t){let a;const n=this.tmpBuf;let i=0;do{const e=this.readByte();if(e<0)throw new r.FormatError("unexpected EOF in bcmap");a=!(128&e);n[i++]=127&e}while(!a);let s=t,o=0,c=0;for(;s>=0;){for(;c<8&&n.length>0;){o|=n[--i]<>=8;c-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const a=1&e[t]?255:0;let r=0;for(let n=0;n<=t;n++){r=(1&r)<<8|e[n];e[n]=r>>1^a}}readString(){const e=this.readNumber();let t="";for(let a=0;a=0;){const t=f>>5;if(7===t){switch(31&f){case 0:n.readString();break;case 1:s=n.readString()}continue}const r=!!(16&f),i=15&f;if(i+1>e)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const g=1,p=n.readNumber();switch(t){case 0:n.readHex(o,i);n.readHexNumber(c,i);addHex(c,o,i);a.addCodespaceRange(i+1,hexToInt(o,i),hexToInt(c,i));for(let e=1;e>>0}function expectString(e){if("string"!=typeof e)throw new r.FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new r.FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endbfchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=a;e.mapOne(r,i)}}function parseBfRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endbfrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();if(Number.isInteger(a)||"string"==typeof a){const t=Number.isInteger(a)?String.fromCharCode(a):a;e.mapBfRange(r,i,t)}else{if(!(0,n.isCmd)(a,"["))break;{a=t.getObj();const s=[];for(;!(0,n.isCmd)(a,"]")&&a!==n.EOF;){s.push(a);a=t.getObj()}e.mapBfRangeToArray(r,i,s)}}}throw new r.FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcidchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectInt(a);const i=a;e.mapOne(r,i)}}function parseCidRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcidrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();expectInt(a);const s=a;e.mapCidRange(r,i,s)}}function parseCodespaceRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcodespacerange"))return;if("string"!=typeof a)break;const r=strToInt(a);a=t.getObj();if("string"!=typeof a)break;const i=strToInt(a);e.addCodespaceRange(a.length,r,i)}throw new r.FormatError("Invalid codespace range.")}function parseWMode(e,t){const a=t.getObj();Number.isInteger(a)&&(e.vertical=!!a)}function parseCMapName(e,t){const a=t.getObj();a instanceof n.Name&&(e.name=a.name)}async function parseCMap(e,t,a,i){let s,c;e:for(;;)try{const a=t.getObj();if(a===n.EOF)break;if(a instanceof n.Name){"WMode"===a.name?parseWMode(e,t):"CMapName"===a.name&&parseCMapName(e,t);s=a}else if(a instanceof n.Cmd)switch(a.cmd){case"endcmap":break e;case"usecmap":s instanceof n.Name&&(c=s.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof o.MissingDataException)throw e;(0,r.warn)("Invalid cMap data: "+e);continue}!i&&c&&(i=c);return i?extendCMap(e,a,i):e}async function extendCMap(e,t,a){e.useCMap=await createBuiltInCMap(a,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let a=0;aextendCMap(i,t,e)));if(n===r.CMapCompressionType.NONE){const e=new s.Lexer(new c.Stream(a));return parseCMap(i,e,t,null)}throw new Error("TODO: Only BINARY/NONE CMap compression is currently supported.")}return{async create(e){const t=e.encoding,a=e.fetchBuiltInCMap,r=e.useCMap;if(t instanceof n.Name)return createBuiltInCMap(t.name,a);if(t instanceof i.BaseStream){const e=await parseCMap(new CMap,new s.Lexer(t),a,r);return e.isIdentityCMap?createBuiltInCMap(e.name,a):e}throw new Error("Encoding required.")}}}();t.CMapFactory=d},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Parser=t.Linearization=t.Lexer=void 0;var r=a(2),n=a(5),i=a(8),s=a(28),o=a(30),c=a(31),l=a(33),h=a(34),u=a(37),d=a(39),f=a(41),g=a(10),p=a(42),m=a(43);function computeAdler32(e){const t=e.length;let a=1,r=0;for(let n=0;n>")&&this.buf1!==n.EOF;){if(!(this.buf1 instanceof n.Name)){(0,r.info)("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if(this.buf1===n.EOF)break;s.set(t,this.getObj(e))}if(this.buf1===n.EOF){if(this.recoveryMode)return s;throw new i.ParserEOFException("End of file inside dictionary.")}if((0,n.isCmd)(this.buf2,"stream"))return this.allowStreams?this.makeStream(s,e):s;this.shift();return s;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&(0,n.isCmd)(this.buf2,"R")){const e=n.Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const t=this.lexer,a=e.pos;let s,o,c=0;for(;-1!==(s=e.getByte());)if(0===c)c=69===s?1:0;else if(1===c)c=73===s?2:0;else{(0,r.assert)(2===c,"findDefaultInlineStreamEnd - invalid state.");if(32===s||10===s||13===s){o=e.pos;const a=e.peekBytes(10);for(let e=0,t=a.length;e127))){c=0;break}}if(2!==c)continue;if(t.knownCommands){const e=t.peekObj();e instanceof n.Cmd&&!t.knownCommands[e.cmd]&&(c=0)}else(0,r.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");if(2===c)break}else c=0}if(-1===s){(0,r.warn)("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(o){(0,r.warn)('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-o))}}let l=4;e.skip(-l);s=e.peekByte();e.skip(l);(0,i.isWhiteSpace)(s)||l--;return e.pos-l-a}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let a,n,i=!1;for(;-1!==(a=e.getByte());)if(255===a){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:i=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:n=e.getUint16();n>2?e.skip(n-2):e.skip(-2)}if(i)break}const s=e.pos-t;if(-1===a){(0,r.warn)("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-s);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return s}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte());)if(126===a){const t=e.pos;a=e.peekByte();for(;(0,i.isWhiteSpace)(a);){e.skip();a=e.peekByte()}if(62===a){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const n=e.pos-t;if(-1===a){(0,r.warn)("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte())&&62!==a;);const n=e.pos-t;if(-1===a){(0,r.warn)("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}inlineStreamSkipEI(e){let t,a=0;for(;-1!==(t=e.getByte());)if(0===a)a=69===t?1:0;else if(1===a)a=73===t?2:0;else if(2===a)break}makeInlineImage(e){const t=this.lexer,a=t.stream,i=new n.Dict(this.xref);let s;for(;!(0,n.isCmd)(this.buf1,"ID")&&this.buf1!==n.EOF;){if(!(this.buf1 instanceof n.Name))throw new r.FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if(this.buf1===n.EOF)break;i.set(t,this.getObj(e))}-1!==t.beginInlineImagePos&&(s=a.pos-t.beginInlineImagePos);const o=i.get("F","Filter");let c;if(o instanceof n.Name)c=o.name;else if(Array.isArray(o)){const e=this.xref.fetchIfRef(o[0]);e instanceof n.Name&&(c=e.name)}const l=a.pos;let h;switch(c){case"DCT":case"DCTDecode":h=this.findDCTDecodeInlineStreamEnd(a);break;case"A85":case"ASCII85Decode":h=this.findASCII85DecodeInlineStreamEnd(a);break;case"AHx":case"ASCIIHexDecode":h=this.findASCIIHexDecodeInlineStreamEnd(a);break;default:h=this.findDefaultInlineStreamEnd(a)}let u,d=a.makeSubStream(l,h,i);if(h<1e3&&s<5552){const e=d.getBytes();d.reset();const r=a.pos;a.pos=t.beginInlineImagePos;const i=a.getBytes(s);a.pos=r;u=computeAdler32(e)+"_"+computeAdler32(i);const o=this.imageCache[u];if(void 0!==o){this.buf2=n.Cmd.get("EI");this.shift();o.reset();return o}}e&&(d=e.createStream(d,h));d=this.filter(d,i,h);d.dict=i;if(void 0!==u){d.cacheKey=`inline_${h}_${u}`;this.imageCache[u]=d}this.buf2=n.Cmd.get("EI");this.shift();return d}_findStreamLength(e,t){const{stream:a}=this.lexer;a.pos=e;const r=t.length;for(;a.pos=r){a.pos+=s;return a.pos-e}s++}a.pos+=i}return-1}makeStream(e,t){const a=this.lexer;let s=a.stream;a.skipToNextLine();const o=s.pos-1;let c=e.get("Length");if(!Number.isInteger(c)){(0,r.info)(`Bad length "${c&&c.toString()}" in stream.`);c=0}s.pos=o+c;a.nextChar();if(this.tryShift()&&(0,n.isCmd)(this.buf2,"endstream"))this.shift();else{const e=new Uint8Array([101,110,100,115,116,114,101,97,109]);let t=this._findStreamLength(o,e);if(t<0){const a=1;for(let n=1;n<=a;n++){const a=e.length-n,c=e.slice(0,a),l=this._findStreamLength(o,c);if(l>=0){const e=s.peekBytes(a+1)[a];if(!(0,i.isWhiteSpace)(e))break;(0,r.info)(`Found "${(0,r.bytesToString)(c)}" when searching for endstream command.`);t=l;break}}if(t<0)throw new r.FormatError("Missing endstream command.")}c=t;a.nextChar();this.shift();this.shift()}this.shift();s=s.makeSubStream(o,c,e);t&&(s=t.createStream(s,c));s=this.filter(s,e,c);s.dict=e;return s}filter(e,t,a){let i=t.get("F","Filter"),s=t.get("DP","DecodeParms");if(i instanceof n.Name){Array.isArray(s)&&(0,r.warn)("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,i.name,a,s)}let o=a;if(Array.isArray(i)){const t=i,a=s;for(let c=0,l=t.length;c=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,a=0,n=0;if(45===e){n=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else if(43===e){n=1;e=this.nextChar()}if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){a=10;e=this.nextChar()}if(e<48||e>57){if((0,i.isWhiteSpace)(e)||-1===e){if(10===a&&0===n){(0,r.warn)("Lexer.getNumber - treating a single decimal point as zero.");return 0}if(0===a&&-1===n){(0,r.warn)("Lexer.getNumber - treating a single minus sign as zero.");return 0}}throw new r.FormatError(`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`)}n=n||1;let s=e-48,o=0,c=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const r=e-48;if(t)o=10*o+r;else{0!==a&&(a*=10);s=10*s+r}}else if(46===e){if(0!==a)break;a=1}else if(45===e)(0,r.warn)("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;e=this.peekChar();if(43===e||45===e){c=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==a&&(s/=a);t&&(s*=10**(c*o));return n*s}getString(){let e=1,t=!1;const a=this.strBuf;a.length=0;let n=this.nextChar();for(;;){let i=!1;switch(0|n){case-1:(0,r.warn)("Unterminated string");t=!0;break;case 40:++e;a.push("(");break;case 41:if(0==--e){this.nextChar();t=!0}else a.push(")");break;case 92:n=this.nextChar();switch(n){case-1:(0,r.warn)("Unterminated string");t=!0;break;case 110:a.push("\n");break;case 114:a.push("\r");break;case 116:a.push("\t");break;case 98:a.push("\b");break;case 102:a.push("\f");break;case 92:case 40:case 41:a.push(String.fromCharCode(n));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&n;n=this.nextChar();i=!0;if(n>=48&&n<=55){e=(e<<3)+(15&n);n=this.nextChar();if(n>=48&&n<=55){i=!1;e=(e<<3)+(15&n)}}a.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:a.push(String.fromCharCode(n))}break;default:a.push(String.fromCharCode(n))}if(t)break;i||(n=this.nextChar())}return a.join("")}getName(){let e,t;const a=this.strBuf;a.length=0;for(;(e=this.nextChar())>=0&&!b[e];)if(35===e){e=this.nextChar();if(b[e]){(0,r.warn)("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");a.push("#");break}const n=toHexDigit(e);if(-1!==n){t=e;e=this.nextChar();const i=toHexDigit(e);if(-1===i){(0,r.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);a.push("#",String.fromCharCode(t));if(b[e])break;a.push(String.fromCharCode(e));continue}a.push(String.fromCharCode(n<<4|i))}else a.push("#",String.fromCharCode(e))}else a.push(String.fromCharCode(e));a.length>127&&(0,r.warn)(`Name token is longer than allowed by the spec: ${a.length}`);return n.Name.get(a.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||(0,r.warn)(`getHexString - ignoring invalid character: ${e}`):(0,r.warn)("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t,a,n=this.currentChar,i=!0;this._hexStringNumWarn=0;for(;;){if(n<0){(0,r.warn)("Unterminated hex string");break}if(62===n){this.nextChar();break}if(1!==b[n]){if(i){t=toHexDigit(n);if(-1===t){this._hexStringWarn(n);n=this.nextChar();continue}}else{a=toHexDigit(n);if(-1===a){this._hexStringWarn(n);n=this.nextChar();continue}e.push(String.fromCharCode(t<<4|a))}i=!i;n=this.nextChar()}else n=this.nextChar()}return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return n.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==b[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return n.Cmd.get("[");case 93:this.nextChar();return n.Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return n.Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return n.Cmd.get(">>")}return n.Cmd.get(">");case 123:this.nextChar();return n.Cmd.get("{");case 125:this.nextChar();return n.Cmd.get("}");case 41:this.nextChar();throw new r.FormatError(`Illegal character: ${t}`)}let a=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return n.Cmd.get(a)}}const i=this.knownCommands;let s=i&&void 0!==i[a];for(;(t=this.nextChar())>=0&&!b[t];){const e=a+String.fromCharCode(t);if(s&&void 0===i[e])break;if(128===a.length)throw new r.FormatError(`Command token too long: ${a.length}`);a=e;s=i&&void 0!==i[a]}if("true"===a)return!0;if("false"===a)return!1;if("null"===a)return null;"BI"===a&&(this.beginInlineImagePos=this.stream.pos);return n.Cmd.get(a)}peekObj(){const e=this.stream.pos,t=this.currentChar,a=this.beginInlineImagePos;let n;try{n=this.getObj()}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.warn)(`peekObj: ${e}`)}this.stream.pos=e;this.currentChar=t;this.beginInlineImagePos=a;return n}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}t.Lexer=Lexer;t.Linearization=class Linearization{static create(e){function getInt(e,t,a=!1){const r=e.get(t);if(Number.isInteger(r)&&(a?r>=0:r>0))return r;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),a=t.getObj(),r=t.getObj(),i=t.getObj(),s=t.getObj();let o,c;if(!(Number.isInteger(a)&&Number.isInteger(r)&&(0,n.isCmd)(i,"obj")&&s instanceof n.Dict&&"number"==typeof(o=s.get("Linearized"))&&o>0))return null;if((c=getInt(s,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:c,hints:function getHints(e){const t=e.get("H");let a;if(Array.isArray(t)&&(2===(a=t.length)||4===a)){for(let e=0;e0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(s),objectNumberFirst:getInt(s,"O"),endFirst:getInt(s,"E"),numPages:getInt(s,"N"),mainXRefEntriesOffset:getInt(s,"T"),pageFirst:s.has("P")?getInt(s,"P",!0):0}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Ascii85Stream=void 0;var r=a(29),n=a(8);class Ascii85Stream extends r.DecodeStream{constructor(e,t){t&&(t*=.8);super(t);this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;(0,n.isWhiteSpace)(t);)t=e.getByte();if(-1===t||126===t){this.eof=!0;return}const a=this.bufferLength;let r,i;if(122===t){r=this.ensureBuffer(a+4);for(i=0;i<4;++i)r[a+i]=0;this.bufferLength+=4}else{const s=this.input;s[0]=t;for(i=1;i<5;++i){t=e.getByte();for(;(0,n.isWhiteSpace)(t);)t=e.getByte();s[i]=t;if(-1===t||126===t)break}r=this.ensureBuffer(a+i-1);this.bufferLength+=i-1;if(i<5){for(;i<5;++i)s[i]=117;this.eof=!0}let o=0;for(i=0;i<5;++i)o=85*o+(s[i]-33);for(i=3;i>=0;--i){r[a+i]=255&o;o>>=8}}}}t.Ascii85Stream=Ascii85Stream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StreamsSequenceStream=t.DecodeStream=void 0;var r=a(9),n=a(10);const i=new Uint8Array(0);class DecodeStream extends r.BaseStream{constructor(e){super();this._rawMinBufferLength=e||0;this.pos=0;this.bufferLength=0;this.eof=!1;this.buffer=i;this.minBufferLength=512;if(e)for(;this.minBufferLengthr&&(a=r)}else{for(;!this.eof;)this.readBlock();a=this.bufferLength}this.pos=a;return this.buffer.subarray(t,a)}reset(){this.pos=0}makeSubStream(e,t,a=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const a=e+t;for(;this.bufferLength<=a&&!this.eof;)this.readBlock()}return new n.Stream(this.buffer,e,t,a)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}t.DecodeStream=DecodeStream;t.StreamsSequenceStream=class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){let a=0;for(const t of e)a+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(a);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let a;try{a=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict&&t.dict.objId);return}throw e}const r=this.bufferLength,n=r+a.length;this.ensureBuffer(n).set(a,r);this.bufferLength=n}getBaseStreams(){const e=[];for(const t of this.streams){const a=t.getBaseStreams();a&&e.push(...a)}return e.length>0?e:null}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.AsciiHexStream=void 0;var r=a(29);class AsciiHexStream extends r.DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.str=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,a=this.ensureBuffer(this.bufferLength+t);let r=this.bufferLength,n=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(n<0)n=e;else{a[r++]=n<<4|e;n=-1}}if(n>=0&&this.eof){a[r++]=n<<4;n=-1}this.firstDigit=n;this.bufferLength=r}}t.AsciiHexStream=AsciiHexStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxStream=void 0;var r=a(32),n=a(29),i=a(5);class CCITTFaxStream extends n.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;a instanceof i.Dict||(a=i.Dict.empty);const n={next:()=>e.getByte()};this.ccittFaxDecoder=new r.CCITTFaxDecoder(n,{K:a.get("K"),EndOfLine:a.get("EndOfLine"),EncodedByteAlign:a.get("EncodedByteAlign"),Columns:a.get("Columns"),Rows:a.get("Rows"),EndOfBlock:a.get("EndOfBlock"),BlackIs1:a.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e){this.eof=!0;return}this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=e}}}t.CCITTFaxStream=CCITTFaxStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxDecoder=void 0;var r=a(2);const n=-1,i=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],s=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],o=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],c=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],l=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],h=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];t.CCITTFaxDecoder=class CCITTFaxDecoder{constructor(e,t={}){if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=e;this.eof=!1;this.encoding=t.K||0;this.eoline=t.EndOfLine||!1;this.byteAlign=t.EncodedByteAlign||!1;this.columns=t.Columns||1728;this.rows=t.Rows||0;let a,r=t.EndOfBlock;null==r&&(r=!0);this.eoblock=r;this.black=t.BlackIs1||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.codingPos=0;this.row=0;this.nextLine2D=this.encoding<0;this.inputBits=0;this.inputBuf=0;this.outputBits=0;this.rowsDone=!1;for(;0===(a=this._lookBits(12));)this._eatBits(1);1===a&&this._eatBits(12);if(this.encoding>0){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,a=this.columns;let i,s,o,c,l;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let o,l,h;if(this.nextLine2D){for(c=0;t[c]=64);do{l+=h=this._getWhiteCode()}while(h>=64)}else{do{o+=h=this._getWhiteCode()}while(h>=64);do{l+=h=this._getBlackCode()}while(h>=64)}this._addPixels(t[this.codingPos]+o,s);t[this.codingPos]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]=64);else do{o+=h=this._getWhiteCode()}while(h>=64);this._addPixels(t[this.codingPos]+o,s);s^=1}}let u=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){o=this._lookBits(12);if(this.eoline)for(;o!==n&&1!==o;){this._eatBits(1);o=this._lookBits(12)}else for(;0===o;){this._eatBits(1);o=this._lookBits(12)}if(1===o){this._eatBits(12);u=!0}else o===n&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}if(this.eoblock&&u&&this.byteAlign){o=this._lookBits(12);if(1===o){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(c=0;c<4;++c){o=this._lookBits(12);1!==o&&(0,r.info)("bad rtc code: "+o);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){o=this._lookBits(13);if(o===n){this.eof=!0;return-1}if(o>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&o)}}t[0]>0?this.outputBits=t[this.codingPos=0]:this.outputBits=t[this.codingPos=1];this.row++}if(this.outputBits>=8){l=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]o){l<<=o;1&this.codingPos||(l|=255>>8-o);this.outputBits-=o;o=0}else{l<<=this.outputBits;1&this.codingPos||(l|=255>>8-this.outputBits);o-=this.outputBits;this.outputBits=0;if(t[this.codingPos]0){l<<=o;o=0}}}while(o)}this.black&&(l^=255);return l}_addPixels(e,t){const a=this.codingLine;let n=this.codingPos;if(e>a[n]){if(e>this.columns){(0,r.info)("row is wrong length");this.err=!0;e=this.columns}1&n^t&&++n;a[n]=e}this.codingPos=n}_addPixelsNeg(e,t){const a=this.codingLine;let n=this.codingPos;if(e>a[n]){if(e>this.columns){(0,r.info)("row is wrong length");this.err=!0;e=this.columns}1&n^t&&++n;a[n]=e}else if(e0&&e=i){const t=a[e-i];if(t[0]===r){this._eatBits(r);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=i[t];if(e&&e[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,i);if(e[0]&&e[2])return e[1]}(0,r.info)("Bad two dim code");return n}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===n)return 1;e=t>>5==0?s[t]:o[t>>3];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,o);if(e[0])return e[1];e=this._findTableCode(11,12,s);if(e[0])return e[1]}(0,r.info)("bad white code");this._eatBits(1);return 1}_getBlackCode(){let e,t;if(this.eoblock){e=this._lookBits(13);if(e===n)return 1;t=e>>7==0?c[e]:e>>9==0&&e>>7!=0?l[(e>>1)-64]:h[e>>7];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,h);if(e[0])return e[1];e=this._findTableCode(7,12,l,64);if(e[0])return e[1];e=this._findTableCode(10,13,c);if(e[0])return e[1]}(0,r.info)("bad black code");this._eatBits(1);return 1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t;this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FlateStream=void 0;var r=a(29),n=a(2);const i=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),o=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),c=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],l=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends r.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict;const a=e.getByte(),r=e.getByte();if(-1===a||-1===r)throw new n.FormatError(`Invalid header in flate stream: ${a}, ${r}`);if(8!=(15&a))throw new n.FormatError(`Unknown compression method in flate stream: ${a}, ${r}`);if(((a<<8)+r)%31!=0)throw new n.FormatError(`Bad FCHECK in flate stream: ${a}, ${r}`);if(32&r)throw new n.FormatError(`FDICT bit set in flate stream: ${a}, ${r}`);this.codeSize=0;this.codeBuf=0}getBits(e){const t=this.str;let a,r=this.codeSize,i=this.codeBuf;for(;r>e;this.codeSize=r-=e;return a}getCode(e){const t=this.str,a=e[0],r=e[1];let i,s=this.codeSize,o=this.codeBuf;for(;s>16,h=65535&c;if(l<1||s>l;this.codeSize=s-l;return h}generateHuffmanTable(e){const t=e.length;let a,r=0;for(a=0;ar&&(r=e[a]);const n=1<>=1}for(a=e;a>=1;if(0===u){let t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");let r=t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");r|=t<<8;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");let i=t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");i|=t<<8;if(i!==(65535&~r)&&(0!==r||0!==i))throw new n.FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const s=this.bufferLength,o=s+r;e=this.ensureBuffer(o);this.bufferLength=o;if(0===r)-1===a.peekByte()&&(this.eof=!0);else{const t=a.getBytes(r);e.set(t,s);t.length0;)u[o++]=g}r=this.generateHuffmanTable(u.subarray(0,e));h=this.generateHuffmanTable(u.subarray(e,l))}}e=this.buffer;let d=e?e.length:0,f=this.bufferLength;for(;;){let a=this.getCode(r);if(a<256){if(f+1>=d){e=this.ensureBuffer(f+1);d=e.length}e[f++]=a;continue}if(256===a){this.bufferLength=f;return}a-=257;a=s[a];let n=a>>16;n>0&&(n=this.getBits(n));t=(65535&a)+n;a=this.getCode(h);a=o[a];n=a>>16;n>0&&(n=this.getBits(n));const i=(65535&a)+n;if(f+t>=d){e=this.ensureBuffer(f+t);d=e.length}for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Stream=void 0;var r=a(9),n=a(29),i=a(5),s=a(35),o=a(2);class Jbig2Stream extends n.DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,o.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new s.Jbig2Image,t=[];if(this.params instanceof i.Dict){const e=this.params.get("JBIG2Globals");if(e instanceof r.BaseStream){const a=e.getBytes();t.push({data:a,start:0,end:a.length})}}t.push({data:this.bytes,start:0,end:this.bytes.length});const a=e.parseChunks(t),n=a.length;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Image=void 0;var r=a(2),n=a(8),i=a(36),s=a(32);class Jbig2Error extends r.BaseException{constructor(e){super(`JBIG2 error: ${e}`,"Jbig2Error")}}class ContextCache{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class DecodingContext{constructor(e,t,a){this.data=e;this.start=t;this.end=a}get decoder(){const e=new i.ArithmeticDecoder(this.data,this.start,this.end);return(0,r.shadow)(this,"decoder",e)}get contextCache(){const e=new ContextCache;return(0,r.shadow)(this,"contextCache",e)}}function decodeInteger(e,t,a){const r=e.getContexts(t);let n=1;function readBits(e){let t=0;for(let i=0;i>>0}const i=readBits(1),s=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);return 0===i?s:s>0?-s:null}function decodeIAID(e,t,a){const r=e.getContexts("IAID");let n=1;for(let e=0;e=O&&j=T){q=q<<1&y;for(b=0;b=0&&_=0){U=N[$][_];U&&(q|=U<=e?l<<=1:l=l<<1|C[o][c]}for(p=0;p=x||c<0||c>=S?l<<=1:l=l<<1|r[o][c]}const h=v.readBit(F,l);t[s]=h}}return C}function decodeTextRegion(e,t,a,r,n,i,s,o,c,l,h,u,d,f,g,p,m,b,y){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const w=[];let S,x;for(S=0;S1&&(n=e?y.readBits(b):decodeInteger(C,"IAIT",k));const i=s*v+n,F=e?f.symbolIDTable.decode(y):decodeIAID(C,k,c),O=t&&(e?y.readBit():decodeInteger(C,"IARI",k));let T=o[F],M=T[0].length,E=T.length;if(O){const e=decodeInteger(C,"IARDW",k),t=decodeInteger(C,"IARDH",k),a=decodeInteger(C,"IARDX",k),r=decodeInteger(C,"IARDY",k);M+=e;E+=t;T=decodeRefinement(M,E,g,T,(e>>1)+a,(t>>1)+r,!1,p,m)}const D=i-(1&u?0:E-1),N=r-(2&u?M-1:0);let L,R,j;if(l){for(L=0;L>5&7;const h=[31&c];let u=t+6;if(7===c){l=536870911&(0,n.readUint32)(e,u-1);u+=3;let t=l+7>>3;h[0]=e[u++];for(;--t>0;)h.push(e[u++])}else if(5===c||6===c)throw new Jbig2Error("invalid referred-to flags");a.retainBits=h;let f=4;a.number<=256?f=1:a.number<=65536&&(f=2);const g=[];let p,m;for(p=0;p>>24&255;i[3]=t.height>>16&255;i[4]=t.height>>8&255;i[5]=255&t.height;for(p=u,m=e.length;p>2&3;e.huffmanDWSelector=t>>4&3;e.bitmapSizeSelector=t>>6&1;e.aggregationInstancesSelector=t>>7&1;e.bitmapCodingContextUsed=!!(256&t);e.bitmapCodingContextRetained=!!(512&t);e.template=t>>10&3;e.refinementTemplate=t>>12&1;h+=2;if(!e.huffman){l=0===e.template?4:1;o=[];for(c=0;c>2&3;u.stripSize=1<>4&3;u.transposed=!!(64&f);u.combinationOperator=f>>7&3;u.defaultPixelValue=f>>9&1;u.dsOffset=f<<17>>27;u.refinementTemplate=f>>15&1;if(u.huffman){const e=(0,n.readUint16)(r,h);h+=2;u.huffmanFS=3&e;u.huffmanDS=e>>2&3;u.huffmanDT=e>>4&3;u.huffmanRefinementDW=e>>6&3;u.huffmanRefinementDH=e>>8&3;u.huffmanRefinementDX=e>>10&3;u.huffmanRefinementDY=e>>12&3;u.huffmanRefinementSizeSelector=!!(16384&e)}if(u.refinement&&!u.refinementTemplate){o=[];for(c=0;c<2;c++){o.push({x:(0,n.readInt8)(r,h),y:(0,n.readInt8)(r,h+1)});h+=2}u.refinementAt=o}u.numberOfSymbolInstances=(0,n.readUint32)(r,h);h+=4;s=[u,a.referredTo,r,h,i];break;case 16:const g={},p=r[h++];g.mmr=!!(1&p);g.template=p>>1&3;g.patternWidth=r[h++];g.patternHeight=r[h++];g.maxPatternIndex=(0,n.readUint32)(r,h);h+=4;s=[g,a.number,r,h,i];break;case 22:case 23:const m={};m.info=readRegionSegmentInformation(r,h);h+=d;const b=r[h++];m.mmr=!!(1&b);m.template=b>>1&3;m.enableSkip=!!(8&b);m.combinationOperator=b>>4&7;m.defaultPixelValue=b>>7&1;m.gridWidth=(0,n.readUint32)(r,h);h+=4;m.gridHeight=(0,n.readUint32)(r,h);h+=4;m.gridOffsetX=4294967295&(0,n.readUint32)(r,h);h+=4;m.gridOffsetY=4294967295&(0,n.readUint32)(r,h);h+=4;m.gridVectorX=(0,n.readUint16)(r,h);h+=2;m.gridVectorY=(0,n.readUint16)(r,h);h+=2;s=[m,a.referredTo,r,h,i];break;case 38:case 39:const y={};y.info=readRegionSegmentInformation(r,h);h+=d;const w=r[h++];y.mmr=!!(1&w);y.template=w>>1&3;y.prediction=!!(8&w);if(!y.mmr){l=0===y.template?4:1;o=[];for(c=0;c>2&1;S.combinationOperator=x>>3&3;S.requiresBuffer=!!(32&x);S.combinationOperatorOverride=!!(64&x);s=[S];break;case 49:case 50:case 51:case 62:break;case 53:s=[a.number,r,h,i];break;default:throw new Jbig2Error(`segment type ${a.typeName}(${a.type}) is not implemented`)}const u="on"+a.typeName;u in t&&t[u].apply(t,s)}function processSegments(e,t){for(let a=0,r=e.length;a>3,a=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&a.fill(255);this.buffer=a}drawBitmap(e,t){const a=this.currentPageInfo,r=e.width,n=e.height,i=a.width+7>>3,s=a.combinationOperatorOverride?e.combinationOperator:a.combinationOperator,o=this.buffer,c=128>>(7&e.x);let l,h,u,d,f=e.y*i+(e.x>>3);switch(s){case 0:for(l=0;l>=1;if(!u){u=128;d++}}f+=i}break;case 2:for(l=0;l>=1;if(!u){u=128;d++}}f+=i}break;default:throw new Jbig2Error(`operator ${s} is not supported`)}}onImmediateGenericRegion(e,t,a,r){const n=e.info,i=new DecodingContext(t,a,r),s=decodeBitmap(e.mmr,n.width,n.height,e.template,e.prediction,null,e.at,i);this.drawBitmap(n,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion.apply(this,arguments)}onSymbolDictionary(e,t,a,r,i,s){let o,c;if(e.huffman){o=function getSymbolDictionaryHuffmanTables(e,t,a){let r,n,i,s,o=0;switch(e.huffmanDHSelector){case 0:case 1:r=getStandardTable(e.huffmanDHSelector+4);break;case 3:r=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:n=getStandardTable(e.huffmanDWSelector+2);break;case 3:n=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){i=getCustomHuffmanTable(o,t,a);o++}else i=getStandardTable(1);s=e.aggregationInstancesSelector?getCustomHuffmanTable(o,t,a):getStandardTable(1);return{tableDeltaHeight:r,tableDeltaWidth:n,tableBitmapSize:i,tableAggregateInstances:s}}(e,a,this.customTables);c=new Reader(r,i,s)}let l=this.symbols;l||(this.symbols=l={});let h=[];for(let e=0,t=a.length;e1)y=decodeTextRegion(e,t,r,g,0,n,1,a.concat(f),p,0,0,1,0,s,l,h,u,0,d);else{const e=decodeIAID(b,m,p),t=decodeInteger(b,"IARDX",m),n=decodeInteger(b,"IARDY",m);y=decodeRefinement(r,g,l,e=32){let a,r,s;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");r=n.readBits(2)+3;a=i[e-1].prefixLength;break;case 33:r=n.readBits(3)+3;a=0;break;case 34:r=n.readBits(7)+11;a=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(s=0;s=0;b--){M=e?decodeMMRBitmap(T,l,h,!0):decodeBitmap(!1,l,h,a,!1,null,F,p);O[b]=M}for(E=0;E=0;y--){N^=O[y][E][D];L|=N<>8;$=d+E*f-D*g>>8;if(j>=0&&j+k<=r&&$>=0&&$+C<=i)for(b=0;b=i)){U=m[t];_=R[b];for(y=0;y=0&&e>1&7),l=1+(r>>4&7),h=[];let u,d,f=i;do{u=o.readBits(c);d=o.readBits(l);h.push(new HuffmanLine([f,u,d,0]));f+=1<>t&1;if(t<=0)this.children[a]=new HuffmanTreeNode(e);else{let r=this.children[a];r||(this.children[a]=r=new HuffmanTreeNode(null));r.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new Jbig2Error("invalid Huffman data");return t.decodeNode(e)}}class HuffmanTable{constructor(e,t){t||this.assignPrefixCodes(e);this.rootNode=new HuffmanTreeNode(null);for(let t=0,a=e.length;t0&&this.rootNode.buildTree(a,a.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let a=0;for(let r=0;r=this.end)throw new Jbig2Error("end of data while reading bit");this.currentByte=this.data[this.position++];this.shift=7}const e=this.currentByte>>this.shift&1;this.shift--;return e}readBits(e){let t,a=0;for(t=e-1;t>=0;t--)a|=this.readBit()<=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,a){let r=0;for(let n=0,i=t.length;n>a&1;a--}}if(r&&!l){const e=5;for(let t=0;t>=1}}return{imgData:u,width:c,height:l}}(e);this.width=a;this.height=r;return t}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ArithmeticDecoder=void 0;const a=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];t.ArithmeticDecoder=class ArithmeticDecoder{constructor(e,t,a){this.data=e;this.bp=t;this.dataEnd=a;this.chigh=e[t];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}byteIn(){const e=this.data;let t=this.bp;if(255===e[t])if(e[t+1]>143){this.clow+=65280;this.ct=8}else{t++;this.clow+=e[t]<<9;this.ct=7;this.bp=t}else{t++;this.clow+=t65535){this.chigh+=this.clow>>16;this.clow&=65535}}readBit(e,t){let r=e[t]>>1,n=1&e[t];const i=a[r],s=i.qe;let o,c=this.a-s;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while(0==(32768&c));this.a=c;e[t]=r<<1|n;return o}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.JpegStream=void 0;var r=a(29),n=a(5),i=a(38),s=a(2);class JpegStream extends r.DecodeStream{constructor(e,t,a){let r;for(;-1!==(r=e.getByte());)if(255===r){e.skip(-1);break}super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,s.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e={decodeTransform:void 0,colorTransform:void 0},t=this.dict.getArray("D","Decode");if(this.forceRGB&&Array.isArray(t)){const a=this.dict.get("BPC","BitsPerComponent")||8,r=t.length,n=new Int32Array(r);let i=!1;const s=(1<{Object.defineProperty(t,"__esModule",{value:!0});t.JpegImage=void 0;var r=a(2),n=a(8);class JpegError extends r.BaseException{constructor(e){super(`JPEG error: ${e}`,"JpegError")}}class DNLMarkerError extends r.BaseException{constructor(e,t){super(e,"DNLMarkerError");this.scanLines=t}}class EOIMarkerError extends r.BaseException{constructor(e){super(e,"EOIMarkerError")}}const i=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),s=4017,o=799,c=3406,l=2276,h=1567,u=3784,d=5793,f=2896;function buildHuffmanTable(e,t){let a,r,n=0,i=16;for(;i>0&&!e[i-1];)i--;const s=[{children:[],index:0}];let o,c=s[0];for(a=0;a0;)c=s.pop();c.index++;s.push(c);for(;s.length<=a;){s.push(o={children:[],index:0});c.children[c.index]=o.children;c=o}n++}if(a+10){b--;return m>>b&1}m=e[t++];if(255===m){const r=e[t++];if(r){if(220===r&&d){t+=2;const r=(0,n.readUint16)(e,t);t+=2;if(r>0&&r!==a.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",r)}else if(217===r){if(d){const e=x*(8===a.precision?8:0);if(e>0&&Math.round(a.scanLines/e)>=10)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(m<<8|r).toString(16)}`)}}b=7;return m>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<0){y--;return}let a=c;const r=l;for(;a<=r;){const r=decodeHuffman(e.huffmanTableAC),n=15&r,s=r>>4;if(0===n){if(s<15){y=receive(s)+(1<>4;if(0===n)if(o<15){y=receive(o)+(1<>4;if(0===r){if(s<15)break;n+=16;continue}n+=s;const o=i[n];e.blockData[t+o]=receiveAndExtend(r);n++}};let E,D,N,L,R=0;D=1===k?s[0].blocksPerLine*s[0].blocksPerColumn:f*a.mcusPerColumn;for(;R<=D;){const a=o?Math.min(D-R,o):D;if(a>0){for(v=0;v0?"unexpected":"excessive";(0,r.warn)(`decodeScan - ${e} MCU data, current marker is: ${E.invalid}`);t=E.offset}if(!(E.marker>=65488&&E.marker<=65495))break;t+=2}return t-p}function quantizeAndInverse(e,t,a){const r=e.quantizationTable,n=e.blockData;let i,g,p,m,b,y,w,S,x,k,C,v,F,O,T,M,E;if(!r)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){x=n[t+e];k=n[t+e+1];C=n[t+e+2];v=n[t+e+3];F=n[t+e+4];O=n[t+e+5];T=n[t+e+6];M=n[t+e+7];x*=r[e];if(0!=(k|C|v|F|O|T|M)){k*=r[e+1];C*=r[e+2];v*=r[e+3];F*=r[e+4];O*=r[e+5];T*=r[e+6];M*=r[e+7];i=d*x+128>>8;g=d*F+128>>8;p=C;m=T;b=f*(k-M)+128>>8;S=f*(k+M)+128>>8;y=v<<4;w=O<<4;i=i+g+1>>1;g=i-g;E=p*u+m*h+128>>8;p=p*h-m*u+128>>8;m=E;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;i=i+m+1>>1;m=i-m;g=g+p+1>>1;p=g-p;E=b*l+S*c+2048>>12;b=b*c-S*l+2048>>12;S=E;E=y*o+w*s+2048>>12;y=y*s-w*o+2048>>12;w=E;a[e]=i+S;a[e+7]=i-S;a[e+1]=g+w;a[e+6]=g-w;a[e+2]=p+y;a[e+5]=p-y;a[e+3]=m+b;a[e+4]=m-b}else{E=d*x+512>>10;a[e]=E;a[e+1]=E;a[e+2]=E;a[e+3]=E;a[e+4]=E;a[e+5]=E;a[e+6]=E;a[e+7]=E}}for(let e=0;e<8;++e){x=a[e];k=a[e+8];C=a[e+16];v=a[e+24];F=a[e+32];O=a[e+40];T=a[e+48];M=a[e+56];if(0!=(k|C|v|F|O|T|M)){i=d*x+2048>>12;g=d*F+2048>>12;p=C;m=T;b=f*(k-M)+2048>>12;S=f*(k+M)+2048>>12;y=v;w=O;i=4112+(i+g+1>>1);g=i-g;E=p*u+m*h+2048>>12;p=p*h-m*u+2048>>12;m=E;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;i=i+m+1>>1;m=i-m;g=g+p+1>>1;p=g-p;E=b*l+S*c+2048>>12;b=b*c-S*l+2048>>12;S=E;E=y*o+w*s+2048>>12;y=y*s-w*o+2048>>12;w=E;x=i+S;M=i-S;k=g+w;T=g-w;C=p+y;O=p-y;v=m+b;F=m-b;x<16?x=0:x>=4080?x=255:x>>=4;k<16?k=0:k>=4080?k=255:k>>=4;C<16?C=0:C>=4080?C=255:C>>=4;v<16?v=0:v>=4080?v=255:v>>=4;F<16?F=0:F>=4080?F=255:F>>=4;O<16?O=0:O>=4080?O=255:O>>=4;T<16?T=0:T>=4080?T=255:T>>=4;M<16?M=0:M>=4080?M=255:M>>=4;n[t+e]=x;n[t+e+8]=k;n[t+e+16]=C;n[t+e+24]=v;n[t+e+32]=F;n[t+e+40]=O;n[t+e+48]=T;n[t+e+56]=M}else{E=d*x+8192>>14;E=E<-2040?0:E>=2024?255:E+2056>>4;n[t+e]=E;n[t+e+8]=E;n[t+e+16]=E;n[t+e+24]=E;n[t+e+32]=E;n[t+e+40]=E;n[t+e+48]=E;n[t+e+56]=E}}}function buildComponentData(e,t){const a=t.blocksPerLine,r=t.blocksPerColumn,n=new Int16Array(64);for(let e=0;e=r)return null;const s=(0,n.readUint16)(e,t);if(s>=65472&&s<=65534)return{invalid:null,marker:s,offset:t};let o=(0,n.readUint16)(e,i);for(;!(o>=65472&&o<=65534);){if(++i>=r)return null;o=(0,n.readUint16)(e,i)}return{invalid:s.toString(16),marker:o,offset:i}}t.JpegImage=class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}parse(e,{dnlScanLines:t=null}={}){function readDataBlock(){const t=(0,n.readUint16)(e,o);o+=2;let a=o+t-2;const i=findNextFileMarker(e,a,o);if(i&&i.invalid){(0,r.warn)("readDataBlock - incorrect length, current marker is: "+i.invalid);a=i.offset}const s=e.subarray(o,a);o+=s.length;return s}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),a=Math.ceil(e.scanLines/8/e.maxV);for(let r=0,n=e.components.length;r>4==0)for(m=0;m<64;m++){x=i[m];a[x]=e[o++]}else{if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(m=0;m<64;m++){x=i[m];a[x]=(0,n.readUint16)(e,o);o+=2}}u[15&t]=a}break;case 65472:case 65473:case 65474:if(a)throw new JpegError("Only single frame JPEGs supported");o+=2;a={};a.extended=65473===g;a.progressive=65474===g;a.precision=e[o++];const k=(0,n.readUint16)(e,o);o+=2;a.scanLines=t||k;a.samplesPerLine=(0,n.readUint16)(e,o);o+=2;a.components=[];a.componentIds={};const C=e[o++];let v=0,F=0;for(p=0;p>4,n=15&e[o+1];v>4==0?f:d)[15&t]=buildHuffmanTable(a,n)}break;case 65501:o+=2;s=(0,n.readUint16)(e,o);o+=2;break;case 65498:const T=1==++h&&!t;o+=2;const M=e[o++],E=[];for(p=0;p>4];n.huffmanTableAC=d[15&i];E.push(n)}const D=e[o++],N=e[o++],L=e[o++];try{const t=decodeScan(e,o,a,E,s,D,N,L>>4,15&L,T);o+=t}catch(t){if(t instanceof DNLMarkerError){(0,r.warn)(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){(0,r.warn)(`${t.message} -- ignoring the rest of the image data.`);break e}throw t}break;case 65500:o+=4;break;case 65535:255!==e[o]&&o--;break;default:const R=findNextFileMarker(e,o-2,o-3);if(R&&R.invalid){(0,r.warn)("JpegImage.parse - unexpected data, current marker is: "+R.invalid);o=R.offset;break}if(!R||o>=e.length-1){(0,r.warn)("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new JpegError("JpegImage.parse - unknown marker: "+g.toString(16))}g=(0,n.readUint16)(e,o);o+=2}this.width=a.samplesPerLine;this.height=a.scanLines;this.jfif=c;this.adobe=l;this.components=[];for(let e=0,t=a.components.length;e>8)+C[f+1];return w}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,a,r;for(let n=0,i=e.length;n4)throw new JpegError("Unsupported color mode");const n=this._getLinearizedBlockData(e,t,r);if(1===this.numComponents&&a){const e=n.length,t=new Uint8ClampedArray(3*e);let a=0;for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0});t.JpxStream=void 0;var r=a(29),n=a(40),i=a(2);class JpxStream extends r.DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,i.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new n.JpxImage;e.parse(this.bytes);const t=e.width,a=e.height,r=e.componentsCount,i=e.tiles.length;if(1===i)this.buffer=e.tiles[0].items;else{const n=new Uint8ClampedArray(t*a*r);for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.JpxImage=void 0;var r=a(2),n=a(8),i=a(36);class JpxError extends r.BaseException{constructor(e){super(`JPX error: ${e}`,"JpxError")}}const s={LL:0,LH:1,HL:1,HH:2};t.JpxImage=class JpxImage{constructor(){this.failOnCorruptedImage=!1}parse(e){if(65359===(0,n.readUint16)(e,0)){this.parseCodestream(e,0,e.length);return}const t=e.length;let a=0;for(;a>24&255,o>>16&255,o>>8&255,255&o);(0,r.warn)(`Unsupported header type ${o} (${i}).`)}l&&(a+=c)}}parseImageProperties(e){let t=e.getByte();for(;t>=0;){const a=t;t=e.getByte();if(65361===(a<<8|t)){e.skip(4);const t=e.getInt32()>>>0,a=e.getInt32()>>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0;e.skip(16);const i=e.getUint16();this.width=t-r;this.height=a-n;this.componentsCount=i;this.bitsPerComponent=8;return}}throw new JpxError("No size marker found in JPX stream")}parseCodestream(e,t,a){const i={};let s=!1;try{let o=t;for(;o+1>5;l=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}l.push(t)}b.SPqcds=l;if(i.mainHeader)i.QCD=b;else{i.currentTile.QCD=b;i.currentTile.QCC=[]}break;case 65373:f=(0,n.readUint16)(e,o);const y={};a=o+2;let w;if(i.SIZ.Csiz<257)w=e[a++];else{w=(0,n.readUint16)(e,a);a+=2}c=e[a++];switch(31&c){case 0:h=8;u=!0;break;case 1:h=16;u=!1;break;case 2:h=16;u=!0;break;default:throw new Error("Invalid SQcd value "+c)}y.noQuantization=8===h;y.scalarExpounded=u;y.guardBits=c>>5;l=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}l.push(t)}y.SPqcds=l;i.mainHeader?i.QCC[w]=y:i.currentTile.QCC[w]=y;break;case 65362:f=(0,n.readUint16)(e,o);const S={};a=o+2;const x=e[a++];S.entropyCoderWithCustomPrecincts=!!(1&x);S.sopMarkerUsed=!!(2&x);S.ephMarkerUsed=!!(4&x);S.progressionOrder=e[a++];S.layersCount=(0,n.readUint16)(e,a);a+=2;S.multipleComponentTransform=e[a++];S.decompositionLevelsCount=e[a++];S.xcb=2+(15&e[a++]);S.ycb=2+(15&e[a++]);const k=e[a++];S.selectiveArithmeticCodingBypass=!!(1&k);S.resetContextProbabilities=!!(2&k);S.terminationOnEachCodingPass=!!(4&k);S.verticallyStripe=!!(8&k);S.predictableTermination=!!(16&k);S.segmentationSymbolUsed=!!(32&k);S.reversibleTransformation=e[a++];if(S.entropyCoderWithCustomPrecincts){const t=[];for(;a>4})}S.precinctsSizes=t}const C=[];S.selectiveArithmeticCodingBypass&&C.push("selectiveArithmeticCodingBypass");S.terminationOnEachCodingPass&&C.push("terminationOnEachCodingPass");S.verticallyStripe&&C.push("verticallyStripe");S.predictableTermination&&C.push("predictableTermination");if(C.length>0){s=!0;(0,r.warn)(`JPX: Unsupported COD options (${C.join(", ")}).`)}if(i.mainHeader)i.COD=S;else{i.currentTile.COD=S;i.currentTile.COC=[]}break;case 65424:f=(0,n.readUint16)(e,o);d={};d.index=(0,n.readUint16)(e,o+2);d.length=(0,n.readUint32)(e,o+4);d.dataEnd=d.length+o-2;d.partIndex=e[o+8];d.partsCount=e[o+9];i.mainHeader=!1;if(0===d.partIndex){d.COD=i.COD;d.COC=i.COC.slice(0);d.QCD=i.QCD;d.QCC=i.QCC.slice(0)}i.currentTile=d;break;case 65427:d=i.currentTile;if(0===d.partIndex){initializeTile(i,d.index);buildPackets(i)}f=d.dataEnd-o;parseTilePackets(i,e,o,f);break;case 65363:(0,r.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:f=(0,n.readUint16)(e,o);break;default:throw new Error("Unknown codestream code: "+t.toString(16))}o+=f}}catch(e){if(s||this.failOnCorruptedImage)throw new JpxError(e.message);(0,r.warn)(`JPX: Trying to recover from: "${e.message}".`)}this.tiles=function transformComponents(e){const t=e.SIZ,a=e.components,r=t.Csiz,n=[];for(let t=0,i=e.tiles.length;t>2);c[b++]=e+m>>h;c[b++]=e>>h;c[b++]=e+p>>h}else for(d=0;d>h;c[b++]=g-.34413*p-.71414*m>>h;c[b++]=g+1.772*p>>h}if(e)for(d=0,b=3;d>h}else for(let e=0;e>h;b+=r}}n.push(l)}return n}(i);this.width=i.SIZ.Xsiz-i.SIZ.XOsiz;this.height=i.SIZ.Ysiz-i.SIZ.YOsiz;this.componentsCount=i.SIZ.Csiz}};function calculateComponentDimensions(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz);e.x1=Math.ceil(t.Xsiz/e.XRsiz);e.y0=Math.ceil(t.YOsiz/e.YRsiz);e.y1=Math.ceil(t.Ysiz/e.YRsiz);e.width=e.x1-e.x0;e.height=e.y1-e.y0}function calculateTileGrids(e,t){const a=e.SIZ,r=[];let n;const i=Math.ceil((a.Xsiz-a.XTOsiz)/a.XTsiz),s=Math.ceil((a.Ysiz-a.YTOsiz)/a.YTsiz);for(let e=0;e0?Math.min(r.xcb,n.PPx-1):Math.min(r.xcb,n.PPx);n.ycb_=a>0?Math.min(r.ycb,n.PPy-1):Math.min(r.ycb,n.PPy);return n}function buildPrecincts(e,t,a){const r=1<t.trx0?Math.ceil(t.trx1/r)-Math.floor(t.trx0/r):0,l=t.try1>t.try0?Math.ceil(t.try1/n)-Math.floor(t.try0/n):0,h=c*l;t.precinctParameters={precinctWidth:r,precinctHeight:n,numprecinctswide:c,numprecinctshigh:l,numprecincts:h,precinctWidthInSubband:s,precinctHeightInSubband:o}}function buildCodeblocks(e,t,a){const r=a.xcb_,n=a.ycb_,i=1<>r,c=t.tby0>>n,l=t.tbx1+i-1>>r,h=t.tby1+s-1>>n,u=t.resolution.precinctParameters,d=[],f=[];let g,p,m,b;for(p=c;pe.cbxMax&&(e.cbxMax=g);pe.cbyMax&&(e.cbyMax=p)}else f[b]=e={cbxMin:g,cbyMin:p,cbxMax:g,cbyMax:p};m.precinct=e}t.codeblockParameters={codeblockWidth:r,codeblockHeight:n,numcodeblockwide:l-o+1,numcodeblockhigh:h-c+1};t.codeblocks=d;t.precincts=f}function createPacket(e,t,a){const r=[],n=e.subbands;for(let e=0,a=n.length;ee.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;if(!(l>=a)){for(;s=0;--e){const a=t.resolutions[e],r=g*a.precinctParameters.precinctWidth,n=g*a.precinctParameters.precinctHeight;h=Math.min(h,r);u=Math.min(u,n);d=Math.max(d,a.precinctParameters.numprecinctswide);f=Math.max(f,a.precinctParameters.numprecinctshigh);l[e]={width:r,height:n};g<<=1}a=Math.min(a,h);r=Math.min(r,u);n=Math.max(n,d);i=Math.max(i,f);s[o]={resolutions:l,minWidth:h,minHeight:u,maxNumWide:d,maxNumHigh:f}}return{components:s,minWidth:a,minHeight:r,maxNumWide:n,maxNumHigh:i}}function buildPackets(e){const t=e.SIZ,a=e.currentTile.index,r=e.tiles[a],n=t.Csiz;for(let e=0;e>>o&(1<0;){const e=i.shift();o=e.codeblock;void 0===o.data&&(o.data=[]);o.data.push({data:t,start:a+s,end:a+s+e.dataLength,codingpasses:e.codingpasses});s+=e.dataLength}}return s}function copyCoefficients(e,t,a,r,n,s,c,l,h){const u=r.tbx0,d=r.tby0,f=r.tbx1-r.tbx0,g=r.codeblocks,p="H"===r.type.charAt(0)?1:0,m="H"===r.type.charAt(1)?t:0;for(let a=0,b=g.length;a=s?U:U*(1<0?1-e:0)}const p=t.subbands[r],m=s[p.type];copyCoefficients(i,a,0,p,g?1:2**(f+m-o)*(1+n/2048),h+o-1,g,u,d)}m.push({width:a,height:n,items:i})}const y=p.calculate(m,r.tcx0,r.tcy0);return{left:r.tcx0,top:r.tcy0,width:y.width,height:y.height,items:y.items}}function initializeTile(e,t){const a=e.SIZ.Csiz,r=e.tiles[t];for(let t=0;t>=1;t>>=1;r++}r--;a=this.levels[r];a.items[a.index]=n;this.currentLevel=r;delete this.value}incrementValue(){const e=this.levels[this.currentLevel];e.items[e.index]++}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];e--;if(e<0){this.value=a;return!1}this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}class InclusionTree{constructor(e,t,a){const r=(0,n.log2)(Math.max(e,t))+1;this.levels=[];for(let n=0;na){this.currentLevel=r;this.propagateValues();return!1}e>>=1;t>>=1;r++}this.currentLevel=r-1;return!0}incrementValue(e){const t=this.levels[this.currentLevel];t.items[t.index]=e+1;this.propagateValues()}propagateValues(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];for(;--e>=0;){t=this.levels[e];t.items[t.index]=a}}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];t.items[t.index]=255;e--;if(e<0)return!1;this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}const o=function BitModelClosure(){const e=17,t=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]),a=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]),r=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);return class BitModel{constructor(e,n,i,s,o){this.width=e;this.height=n;let c;c="HH"===i?r:"HL"===i?a:t;this.contextLabelTable=c;const l=e*n;this.neighborsSignificance=new Uint8Array(l);this.coefficentsSign=new Uint8Array(l);let h;h=o>14?new Uint32Array(l):o>6?new Uint16Array(l):new Uint8Array(l);this.coefficentsMagnitude=h;this.processingFlags=new Uint8Array(l);const u=new Uint8Array(l);if(0!==s)for(let e=0;e0,o=t+10){c=a-n;s&&(r[c-1]+=16);o&&(r[c+1]+=16);r[c]+=4}if(e+1=a)break;s[d]&=-2;if(r[d]||!i[d])continue;const g=c[i[d]];if(e.readBit(o,g)){const e=this.decodeSignBit(t,u,d);n[d]=e;r[d]=1;this.setNeighborsSignificance(t,u,d);s[d]|=2}l[d]++;s[d]|=1}}}decodeSignBit(e,t,a){const r=this.width,n=this.height,i=this.coefficentsMagnitude,s=this.coefficentsSign;let o,c,l,h,u,d;h=t>0&&0!==i[a-1];if(t+10&&0!==i[a-r];if(e+1=0){u=9+o;d=this.decoder.readBit(this.contexts,u)}else{u=9-o;d=1^this.decoder.readBit(this.contexts,u)}return d}runMagnitudeRefinementPass(){const e=this.decoder,t=this.width,a=this.height,r=this.coefficentsMagnitude,n=this.neighborsSignificance,i=this.contexts,s=this.bitsDecoded,o=this.processingFlags,c=t*a,l=4*t;for(let a,h=0;h>1;let n,i,s,o;const c=-1.586134342059924,l=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;n=(t|=0)-3;for(i=r+4;i--;n+=2)e[n]*=.8128930661159609;n=t-2;s=u*e[n-1];for(i=r+3;i--;n+=2){o=u*e[n+1];e[n]=d*e[n]-s-o;if(!i--)break;n+=2;s=u*e[n+1];e[n]=d*e[n]-s-o}n=t-1;s=h*e[n-1];for(i=r+2;i--;n+=2){o=h*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=h*e[n+1];e[n]-=s+o}n=t;s=l*e[n-1];for(i=r+1;i--;n+=2){o=l*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=l*e[n+1];e[n]-=s+o}if(0!==r){n=t+1;s=c*e[n-1];for(i=r;i--;n+=2){o=c*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=c*e[n+1];e[n]-=s+o}}}}class ReversibleTransform extends Transform{filter(e,t,a){const r=a>>1;let n,i;for(n=t|=0,i=r+1;i--;n+=2)e[n]-=e[n-1]+e[n+1]+2>>2;for(n=t+1,i=r;i--;n+=2)e[n]+=e[n-1]+e[n+1]>>1}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LZWStream=void 0;var r=a(29);class LZWStream extends r.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;this.cachedData=0;this.bitsCached=0;const r=4096,n={earlyChange:a,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(r),dictionaryLengths:new Uint16Array(r),dictionaryPrevCodes:new Uint16Array(r),currentSequence:new Uint8Array(r),currentSequenceLength:0};for(let e=0;e<256;++e){n.dictionaryValues[e]=e;n.dictionaryLengths[e]=1}this.lzwState=n}readBits(e){let t=this.bitsCached,a=this.cachedData;for(;t>>t&(1<0;if(e<256){d[0]=e;f=1}else{if(!(e>=258)){if(256===e){h=9;s=258;f=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){d[t]=o[a];a=l[a]}}else d[f++]=d[0]}if(n){l[s]=u;c[s]=c[u]+1;o[s]=d[0];s++;h=s+i&s+i-1?h:0|Math.min(Math.log(s+i)/.6931471805599453+1,12)}u=e;g+=f;if(r{Object.defineProperty(t,"__esModule",{value:!0});t.PredictorStream=void 0;var r=a(29),n=a(5),i=a(2);class PredictorStream extends r.DecodeStream{constructor(e,t,a){super(t);if(!(a instanceof n.Dict))return e;const r=this.predictor=a.get("Predictor")||1;if(r<=1)return e;if(2!==r&&(r<10||r>15))throw new i.FormatError(`Unsupported predictor: ${r}`);this.readBlock=2===r?this.readBlockTiff:this.readBlockPng;this.str=e;this.dict=e.dict;const s=this.colors=a.get("Colors")||1,o=this.bits=a.get("BPC","BitsPerComponent")||8,c=this.columns=a.get("Columns")||1;this.pixBytes=s*o+7>>3;this.rowBytes=c*s*o+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,a=this.ensureBuffer(t+e),r=this.bits,n=this.colors,i=this.str.getBytes(e);this.eof=!i.length;if(this.eof)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===r&&1===n)for(s=0;s>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;a[u++]=e}else if(8===r){for(s=0;s>8&255;a[u++]=255&e}}else{const e=new Uint8Array(n+1),u=(1<>l-r)&u;l-=r;c=c<=8){a[f++]=c>>h-8&255;h-=8}}h>0&&(a[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,a=this.str.getByte(),r=this.str.getBytes(e);this.eof=!r.length;if(this.eof)return;const n=this.bufferLength,s=this.ensureBuffer(n+e);let o=s.subarray(n-e,n);0===o.length&&(o=new Uint8Array(e));let c,l,h,u=n;switch(a){case 0:for(c=0;c>1)+r[c];for(;c>1)+r[c]&255;u++}break;case 4:for(c=0;c{Object.defineProperty(t,"__esModule",{value:!0});t.RunLengthStream=void 0;var r=a(29);class RunLengthStream extends r.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict}readBlock(){const e=this.str.getBytes(2);if(!e||e.length<2||128===e[0]){this.eof=!0;return}let t,a=this.bufferLength,r=e[0];if(r<128){t=this.ensureBuffer(a+r+1);t[a++]=e[1];if(r>0){const e=this.str.getBytes(r);t.set(e,a);a+=r}}else{r=257-r;const n=e[1];t=this.ensureBuffer(a+r+1);for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Font=t.ErrorFont=void 0;var r=a(2),n=a(45),i=a(18),s=a(21),o=a(20),c=a(19),l=a(47),h=a(48),u=a(49),d=a(50),f=a(51),g=a(52),p=a(26),m=a(53),b=a(8),y=a(10),w=a(54);const S=[[57344,63743],[1048576,1114109]],x=1e3,k=["ascent","bbox","black","bold","charProcOperatorList","composite","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","fallbackName","fontMatrix","fontType","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","subtype","type","vertical"],C=["cMap","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","toFontChar","toUnicode","vmetrics","widths"];function adjustWidths(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===r.FONT_IDENTITY_MATRIX[0])return;const t=.001/e.fontMatrix[0],a=e.widths;for(const e in a)a[e]*=t;e.defaultWidth*=t}function amendFallbackToUnicode(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const t=[];for(const a in e.fallbackToUnicode)e.toUnicode.has(a)||(t[a]=e.fallbackToUnicode[a]);t.length>0&&e.toUnicode.amend(t)}class Glyph{constructor(e,t,a,r,n,i,o,c,l){this.originalCharCode=e;this.fontChar=t;this.unicode=a;this.accent=r;this.width=n;this.vmetric=i;this.operatorListId=o;this.isSpace=c;this.isInFont=l;const h=(0,s.getCharUnicodeCategory)(a);this.isWhitespace=h.isWhitespace;this.isZeroWidthDiacritic=h.isZeroWidthDiacritic;this.isInvisibleFormatMark=h.isInvisibleFormatMark}matchesForCache(e,t,a,r,n,i,s,o,c){return this.originalCharCode===e&&this.fontChar===t&&this.unicode===a&&this.accent===r&&this.width===n&&this.vmetric===i&&this.operatorListId===s&&this.isSpace===o&&this.isInFont===c}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,a){e[t+1]=a;e[t]=a>>>8}function signedInt16(e,t){const a=(e<<8)+t;return 32768&a?a-65536:a}function string16(e){return String.fromCharCode(e>>8&255,255&e)}function safeString16(e){e>32767?e=32767:e<-32768&&(e=-32768);return String.fromCharCode(e>>8&255,255&e)}function isTrueTypeCollectionFile(e){const t=e.peekBytes(4);return"ttcf"===(0,r.bytesToString)(t)}function getFontFileType(e,{type:t,subtype:a,composite:n}){let i,s;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===(0,b.readUint32)(t,0)||"true"===(0,r.bytesToString)(t)}(e)||isTrueTypeCollectionFile(e))i=n?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){const t=e.peekBytes(4);return"OTTO"===(0,r.bytesToString)(t)}(e))i=n?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))i=n?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(n){i="CIDFontType0";s="CIDFontType0C"}else{i="MMType1"===t?"MMType1":"Type1";s="Type1C"}else{(0,r.warn)("getFontFileType: Unable to detect correct font file Type/Subtype.");i=t;s=a}return[i,s]}function applyStandardFontGlyphMap(e,t){for(const a in t)e[+a]=t[a]}function buildToFontChar(e,t,a){const r=[];let n;for(let a=0,i=e.length;ac){s++;if(s>=S.length){(0,r.warn)("Ran out of space in font private use area.");break}o=S[s][0];c=S[s][1]}const u=o++;0===h&&(h=a);n[u]=h;i[l]=u}return{toFontChar:i,charCodeToGlyphId:n,nextAvailableFontCharCode:o}}function createCmapTable(e,t){const a=function getRanges(e,t){const a=[];for(const r in e)e[r]>=t||a.push({fontCharCode:0|r,glyphId:e[r]});0===a.length&&a.push({fontCharCode:0,glyphId:0});a.sort((function fontGetRangesSort(e,t){return e.fontCharCode-t.fontCharCode}));const r=[],n=a.length;for(let e=0;e65535?2:1;let i,s,o,c,l="\0\0"+string16(n)+"\0\0"+(0,r.string32)(4+8*n);for(i=a.length-1;i>=0&&!(a[i][0]<=65535);--i);const h=i+1;a[i][0]<65535&&65535===a[i][1]&&(a[i][1]=65534);const u=a[i][1]<65535?1:0,d=h+u,f=m.OpenTypeFileBuilder.getSearchParams(d,2);let g,p,b,y,w="",S="",x="",k="",C="",v=0;for(i=0,s=h;i0){S+="ÿÿ";w+="ÿÿ";x+="\0";k+="\0\0"}const F="\0\0"+string16(2*d)+string16(f.range)+string16(f.entry)+string16(f.rangeShift)+S+"\0\0"+w+x+k+C;let O="",T="";if(n>1){l+="\0\0\n"+(0,r.string32)(4+8*n+4+F.length);O="";for(i=0,s=a.length;ie||!l)&&(l=e);h 123 are reserved for internal usage");c|=1<65535&&(h=65535)}else{l=0;h=255}const u=e.bbox||[0,0,0,0],d=a.unitsPerEm||1/(e.fontMatrix||r.FONT_IDENTITY_MATRIX)[0],f=e.ascentScaled?1:d/x,g=a.ascent||Math.round(f*(e.ascent||u[3]));let p=a.descent||Math.round(f*(e.descent||u[1]));p>0&&e.descent>0&&u[1]<0&&(p=-p);const m=a.yMax||g,b=-a.yMin||-p;return"\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0"+String.fromCharCode(e.fixedPitch?9:0)+"\0\0\0\0\0\0"+(0,r.string32)(n)+(0,r.string32)(i)+(0,r.string32)(o)+(0,r.string32)(c)+"*21*"+string16(e.italicAngle?1:0)+string16(l||e.firstChar)+string16(h||e.lastChar)+string16(g)+string16(p)+"\0d"+string16(m)+string16(b)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(l||e.firstChar)+"\0"}function createPostTable(e){const t=Math.floor(65536*e.italicAngle);return"\0\0\0"+(0,r.string32)(t)+"\0\0\0\0"+(0,r.string32)(e.fixedPitch?1:0)+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}function createPostscriptName(e){return e.replace(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||(t=[[],[]]);const a=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],r=[];let n,i,s,o,c;for(n=0,i=a.length;n0;if((p||m)&&"CIDFontType2"===a&&this.cidEncoding.startsWith("Identity-")){const a=e.cidToGidMap,r=[];applyStandardFontGlyphMap(r,(0,l.getGlyphMapForStandardFonts)());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(r,(0,l.getSupplementalGlyphMapForArialBlack)()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(r,(0,l.getSupplementalGlyphMapForCalibri)());if(a){for(const e in r){const t=r[e];void 0!==a[t]&&(r[+e]=a[t])}a.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof h.IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const n=r[e];void 0===a[n]&&(r[+e]=t)}))}this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){r[+e]=t}));this.toFontChar=r;this.toUnicode=new h.ToUnicodeMap(r)}else if(/Symbol/i.test(u))this.toFontChar=buildToFontChar(c.SymbolSetEncoding,(0,o.getGlyphsUnicode)(),this.differences);else if(/Dingbats/i.test(u)){/Wingdings/i.test(t)&&(0,r.warn)("Non-embedded Wingdings font, falling back to ZapfDingbats.");this.toFontChar=buildToFontChar(c.ZapfDingbatsEncoding,(0,o.getDingbatsGlyphsUnicode)(),this.differences)}else if(p){const e=buildToFontChar(this.defaultEncoding,(0,o.getGlyphsUnicode)(),this.differences);"CIDFontType2"!==a||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(t,a){e[+t]=a}));this.toFontChar=e}else{const e=(0,o.getGlyphsUnicode)(),a=[];this.toUnicode.forEach(((t,r)=>{if(!this.composite){const a=this.differences[t]||this.defaultEncoding[t],n=(0,s.getUnicodeForGlyph)(a,e);-1!==n&&(r=n)}a[+t]=r}));this.composite&&this.toUnicode instanceof h.IdentityToUnicodeMap&&/Verdana/i.test(t)&&applyStandardFontGlyphMap(a,(0,l.getGlyphMapForStandardFonts)());this.toFontChar=a}amendFallbackToUnicode(e);this.loadedName=u.split("-")[0];this.fontType=(0,i.getFontType)(a,n,e.isStandardFont)}checkAndRepair(e,t,a){const s=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const a=Object.create(null);a["OS/2"]=null;a.cmap=null;a.head=null;a.hhea=null;a.hmtx=null;a.maxp=null;a.name=null;a.post=null;for(let r=0;r>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0,i=e.pos;e.pos=e.start?e.start:0;e.skip(r);const s=e.getBytes(n);e.pos=i;if("head"===t){s[8]=s[9]=s[10]=s[11]=0;s[17]|=32}return{tag:t,checksum:a,length:n,offset:r,data:s}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,a,r,n,i){const s={length:0,sizeOfInstructions:0};if(a-t<=12)return s;const o=e.subarray(t,a);let c=signedInt16(o[0],o[1]);if(c<0){c=-1;writeSignedInt16(o,0,c);r.set(o,n);s.length=o.length;return s}let l,h=10,u=0;for(l=0;lo.length)return s;if(!i&&f>0){r.set(o.subarray(0,d),n);r.set([0,0],n+d);r.set(o.subarray(g,m),n+d+2);m-=f;o.length-m>3&&(m=m+3&-4);s.length=m;return s}if(o.length-m>3){m=m+3&-4;r.set(o.subarray(0,m),n);s.length=m;return s}r.set(o,n);s.length=o.length;return s}function readNameTable(e){const a=(t.start?t.start:0)+e.offset;t.pos=a;const r=[[],[]],n=e.length,i=a+n;if(0!==t.getUint16()||n<6)return r;const s=t.getUint16(),o=t.getUint16(),c=[];let l,h;for(l=0;li)continue;t.pos=n;const s=e.name;if(e.encoding){let a="";for(let r=0,n=e.length;r0&&(h+=e-1)}}else{if(b||w){(0,r.warn)("TT: nested FDEFs not allowed");m=!0}b=!0;d=h;s=f.pop();t.functionsDefined[s]={data:c,i:h}}else if(!b&&!w){s=f[f.length-1];if(isNaN(s))(0,r.info)("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[s]=!0;if(s in t.functionsStackDeltas){const e=f.length+t.functionsStackDeltas[s];if(e<0){(0,r.warn)("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}f.length=e}else if(s in t.functionsDefined&&!p.includes(s)){g.push({data:c,i:h,stackTop:f.length-1});p.push(s);o=t.functionsDefined[s];if(!o){(0,r.warn)("TT: CALL non-existent function");t.hintsValid=!1;return}c=o.data;h=o.i}}}if(!b&&!w){let t=0;e<=142?t=l[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){n=f.pop();isNaN(n)||(t=2*-n)}for(;t<0&&f.length>0;){f.pop();t++}for(;t>0;){f.push(NaN);t--}}}t.tooComplexToFollowFunctions=m;const S=[c];h>c.length&&S.push(new Uint8Array(h-c.length));if(d>u){(0,r.warn)("TT: complementing a missing function tail");S.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let a,r,n=0;for(a=0,r=t.length;a>>0,s=[];for(let t=0;t>>0);const o={ttcTag:t,majorVersion:a,minorVersion:n,numFonts:i,offsetTable:s};switch(a){case 1:return o;case 2:o.dsigTag=e.getInt32()>>>0;o.dsigLength=e.getInt32()>>>0;o.dsigOffset=e.getInt32()>>>0;return o}throw new r.FormatError(`Invalid TrueType Collection majorVersion: ${a}.`)}(e),i=t.split("+");let s;for(let o=0;o0||!(a.cMap instanceof p.IdentityCMap));if("OTTO"===d.version&&!t||!f.head||!f.hhea||!f.maxp||!f.post){w=new y.Stream(f["CFF "].data);b=new u.CFFFont(w,a);adjustWidths(a);return this.convert(e,b,a)}delete f.glyf;delete f.loca;delete f.fpgm;delete f.prep;delete f["cvt "];this.isOpenType=!0}if(!f.maxp)throw new r.FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+f.maxp.offset;const x=t.getInt32(),k=t.getUint16();if(a.scaleFactors&&a.scaleFactors.length===k&&S){const{scaleFactors:e}=a,t=int16(f.head.data[50],f.head.data[51]),r=new g.GlyfTable({glyfTable:f.glyf.data,isGlyphLocationsLong:t,locaTable:f.loca.data,numGlyphs:k});r.scale(e);const{glyf:n,loca:i,isLocationLong:s}=r.write();f.glyf.data=n;f.loca.data=i;if(s!==!!t){f.head.data[50]=0;f.head.data[51]=s?1:0}const o=f.hmtx.data;for(let t=0;t>8&255;o[a+1]=255&r;writeSignedInt16(o,a+2,Math.round(e[t]*signedInt16(o[a+2],o[a+3])))}}let C=k+1,v=!0;if(C>65535){v=!1;C=k;(0,r.warn)("Not enough space in glyfs to duplicate first glyph.")}let F=0,O=0;if(x>=65536&&f.maxp.length>=22){t.pos+=8;if(t.getUint16()>2){f.maxp.data[14]=0;f.maxp.data[15]=2}t.pos+=4;F=t.getUint16();t.pos+=4;O=t.getUint16()}f.maxp.data[4]=C>>8;f.maxp.data[5]=255&C;const T=function sanitizeTTPrograms(e,t,a,n){const i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,i);t&&sanitizeTTProgram(t,i);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){(0,r.warn)("TT: more functions defined than expected");e.hintsValid=!1}else for(let a=0,n=e.functionsUsed.length;at){(0,r.warn)("TT: invalid function id: "+a);e.hintsValid=!1;return}if(e.functionsUsed[a]&&!e.functionsDefined[a]){(0,r.warn)("TT: undefined function: "+a);e.hintsValid=!1;return}}}(i,n);if(a&&1&a.length){const e=new Uint8Array(a.length+1);e.set(a.data);a.data=e}return i.hintsValid}(f.fpgm,f.prep,f["cvt "],F);if(!T){delete f.fpgm;delete f.prep;delete f["cvt "]}!function sanitizeMetrics(e,t,a,n,i,s){if(!t){a&&(a.data=null);return}e.pos=(e.start?e.start:0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const o=e.getUint16();e.pos+=8;e.pos+=2;let c=e.getUint16();if(0!==o){if(!(2&int16(n.data[44],n.data[45]))){t.data[22]=0;t.data[23]=0}}if(c>i){(0,r.info)(`The numOfMetrics (${c}) should not be greater than the numGlyphs (${i}).`);c=i;t.data[34]=(65280&c)>>8;t.data[35]=255&c}const l=i-c-(a.length-4*c>>1);if(l>0){const e=new Uint8Array(a.length+2*l);e.set(a.data);if(s){e[a.length]=a.data[2];e[a.length+1]=a.data[3]}a.data=e}}(t,f.hhea,f.hmtx,f.head,C,v);if(!f.head)throw new r.FormatError('Required "head" table is not found');!function sanitizeHead(e,t,a){const n=e.data,i=function int32(e,t,a,r){return(e<<24)+(t<<16)+(a<<8)+r}(n[0],n[1],n[2],n[3]);if(i>>16!=1){(0,r.info)("Attempting to fix invalid version in head table: "+i);n[0]=0;n[1]=1;n[2]=0;n[3]=0}const s=int16(n[50],n[51]);if(s<0||s>1){(0,r.info)("Attempting to fix invalid indexToLocFormat in head table: "+s);const e=t+1;if(a===e<<1){n[50]=0;n[51]=0}else{if(a!==e<<2)throw new r.FormatError("Could not fix indexToLocFormat: "+s);n[50]=0;n[51]=1}}}(f.head,k,S?f.loca.length:0);let M=Object.create(null);if(S){const e=int16(f.head.data[50],f.head.data[51]),t=function sanitizeGlyphLocations(e,t,a,r,n,i,s){let o,c,l;if(r){o=4;c=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};l=function fontItemEncodeLong(e,t,a){e[t]=a>>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}}else{o=2;c=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};l=function fontItemEncode(e,t,a){e[t]=a>>9&255;e[t+1]=a>>1&255}}const h=i?a+1:a,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u));e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g);y.push({index:m,offset:e,endOffset:0})}y.sort(((e,t)=>e.offset-t.offset));for(m=0;me.index-t.index));for(m=0;ms&&(s=e.sizeOfInstructions);S+=t;l(d,b,S)}if(0===S){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;ma+S)t.data=p.subarray(0,a+S);else{t.data=new Uint8Array(a+S);t.data.set(p.subarray(0,S))}t.data.set(p.subarray(0,a),S);l(e.data,d.length-o,S+a)}else t.data=p.subarray(0,S);return{missingGlyphs:w,maxSizeOfInstructions:s}}(f.loca,f.glyf,k,e,T,v,O);M=t.missingGlyphs;if(x>=65536&&f.maxp.length>=22){f.maxp.data[26]=t.maxSizeOfInstructions>>8;f.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!f.hhea)throw new r.FormatError('Required "hhea" table is not found');if(0===f.hhea.data[10]&&0===f.hhea.data[11]){f.hhea.data[10]=255;f.hhea.data[11]=255}const E={unitsPerEm:int16(f.head.data[18],f.head.data[19]),yMax:int16(f.head.data[42],f.head.data[43]),yMin:signedInt16(f.head.data[38],f.head.data[39]),ascent:signedInt16(f.hhea.data[4],f.hhea.data[5]),descent:signedInt16(f.hhea.data[6],f.hhea.data[7]),lineGap:signedInt16(f.hhea.data[8],f.hhea.data[9])};this.ascent=E.ascent/E.unitsPerEm;this.descent=E.descent/E.unitsPerEm;this.lineGap=E.lineGap/E.unitsPerEm;if(this.cssFontInfo&&this.cssFontInfo.lineHeight){this.lineHeight=this.cssFontInfo.metrics.lineHeight;this.lineGap=this.cssFontInfo.metrics.lineGap}else this.lineHeight=this.ascent-this.descent+this.lineGap;f.post&&function readPostScriptTable(e,a,n){const s=(t.start?t.start:0)+e.offset;t.pos=s;const o=s+e.length,c=t.getInt32();t.skip(28);let l,h,u=!0;switch(c){case 65536:l=i.MacStandardGlyphOrdering;break;case 131072:const e=t.getUint16();if(e!==n){u=!1;break}const s=[];for(h=0;h=32768){u=!1;break}s.push(e)}if(!u)break;const d=[],f=[];for(;t.pos65535)throw new r.FormatError("Max size of CID is 65,535");let i=-1;t?i=n:void 0!==e[n]&&(i=e[n]);i>=0&&i>>0;let h=!1;if(!c||c.platformId!==r||c.encodingId!==i){if(0!==r||0!==i&&1!==i&&3!==i)if(1===r&&0===i)h=!0;else if(3!==r||1!==i||!n&&c){if(a&&3===r&&0===i){h=!0;let a=!0;if(e>3;e.push(r);a=Math.max(r,a)}const r=[];for(let e=0;e<=a;e++)r.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let a=0;a<256;a++)if(0===e[a]){t.pos=r[0].idRangePos+2*a;g=t.getUint16();d.push({charCode:a,glyphId:g})}else{const n=r[e[a]];for(f=0;f>1;t.skip(6);const a=[];let r;for(r=0;r>1)-(e-r);i.offsetIndex=n;o=Math.max(o,n+i.end-i.start+1)}else i.offsetIndex=-1}const c=[];for(f=0;f>>0;for(f=0;f>>0,a=t.getInt32()>>>0;let r=t.getInt32()>>>0;for(let t=e;t<=a;t++)d.push({charCode:t,glyphId:r++})}}}d.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e=61440&&t<=61695&&(t&=255);D[t]=l[e].glyphId}if(a.glyphNames&&(d.length||this.differences.length))for(let e=0;e<256;++e){if(!g&&void 0!==D[e])continue;const t=this.differences[e]||d[e];if(!t)continue;const r=a.glyphNames.indexOf(t);r>0&&hasGlyph(r)&&(D[e]=r)}}0===D.length&&(D[0]=0);let N=C-1;v||(N=0);if(!a.cssFontInfo){const e=adjustMapping(D,hasGlyph,N);this.toFontChar=e.toFontChar;f.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,C)};f["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const a=t.getUint16();t.skip(60);const r=t.getUint16();if(a<4&&768&r)return!1;if(t.getUint16()>t.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(f["OS/2"],t)||(f["OS/2"]={tag:"OS/2",data:createOS2Table(a,e.charCodeToGlyphId,E)})}if(!S)try{w=new y.Stream(f["CFF "].data);b=new n.CFFParser(w,a,i.SEAC_ANALYSIS_ENABLED).parse();b.duplicateFirstGlyph();const e=new n.CFFCompiler(b);f["CFF "].data=e.compile()}catch(e){(0,r.warn)("Failed to compile font "+a.loadedName)}if(f.name){const t=readNameTable(f.name);f.name.data=createNameTable(e,t);this.psName=t[0][6]||null}else f.name={tag:"name",data:createNameTable(this.name)};const L=new m.OpenTypeFileBuilder(d.version);for(const e in f)L.addTable(e,f[e].data);return L.toArray()}convert(e,t,a){a.fixedPitch=!1;a.builtInEncoding&&function adjustToUnicode(e,t){if(e.isInternalFont)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const a=[],r=(0,o.getGlyphsUnicode)();for(const n in t){if(e.hasIncludedToUnicodeMap){if(e.toUnicode.has(n))continue}else if(e.hasEncoding&&(0===e.differences.length||void 0!==e.differences[n]))continue;const i=t[n],o=(0,s.getUnicodeForGlyph)(i,r);-1!==o&&(a[n]=String.fromCharCode(o))}a.length>0&&e.toUnicode.amend(a)}(a,a.builtInEncoding);let n=1;t instanceof u.CFFFont&&(n=t.numGlyphs-1);const l=t.getGlyphMapping(a);let d=null,f=l;if(!a.cssFontInfo){d=adjustMapping(l,t.hasGlyphId.bind(t),n);this.toFontChar=d.toFontChar;f=d.charCodeToGlyphId}const g=t.numGlyphs;function getCharCodes(e,t){let a=null;for(const r in e)if(t===e[r]){a||(a=[]);a.push(0|r)}return a}function createCharCode(e,t){for(const a in e)if(t===e[a])return 0|a;d.charCodeToGlyphId[d.nextAvailableFontCharCode]=t;return d.nextAvailableFontCharCode++}const p=t.seacs;if(d&&i.SEAC_ANALYSIS_ENABLED&&p&&p.length){const e=a.fontMatrix||r.FONT_IDENTITY_MATRIX,n=t.getCharset(),i=Object.create(null);for(let t in p){t|=0;const a=p[t],r=c.StandardEncoding[a[2]],s=c.StandardEncoding[a[3]],o=n.indexOf(r),h=n.indexOf(s);if(o<0||h<0)continue;const u={x:a[0]*e[0]+a[1]*e[2]+e[4],y:a[0]*e[1]+a[1]*e[3]+e[5]},f=getCharCodes(l,t);if(f)for(let e=0,t=f.length;et.length%2==1,r=this.toUnicode instanceof h.IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let n=0,i=e.length;n55295&&(i<57344||i>65533)&&n++;if(this.toUnicode){const e=r(i);if(-1!==e){if(hasCurrentBufErrors()){t.push(a.join(""));a.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)a.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(a.join(""));a.length=0}a.push(String.fromCodePoint(i))}t.push(a.join(""));return t}};t.ErrorFont=class ErrorFont{constructor(e){this.error=e;this.loadedName="g_font_error";this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(e=!1){return{error:this.error}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFTopDict=t.CFFStrings=t.CFFStandardStrings=t.CFFPrivateDict=t.CFFParser=t.CFFIndex=t.CFFHeader=t.CFFFDSelect=t.CFFCompiler=t.CFFCharset=t.CFF=void 0;var r=a(2),n=a(46),i=a(19);const s=[".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"];t.CFFStandardStrings=s;const o=391,c=function CFFParserClosure(){const e=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],t=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn:function stack_div(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];return class CFFParser{constructor(e,t,a){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!a}parse(){const e=this.properties,t=new CFF;this.cff=t;const a=this.parseHeader(),r=this.parseIndex(a.endPos),n=this.parseIndex(r.endPos),i=this.parseIndex(n.endPos),s=this.parseIndex(i.endPos),o=this.parseDict(n.obj.get(0)),c=this.createDict(l,o,t.strings);t.header=a.obj;t.names=this.parseNameIndex(r.obj);t.strings=this.parseStringIndex(i.obj);t.topDict=c;t.globalSubrIndex=s.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=c.hasName("ROS");const h=c.getByName("CharStrings"),u=this.parseIndex(h).obj,d=c.getByName("FontMatrix");d&&(e.fontMatrix=d);const f=c.getByName("FontBBox");if(f){e.ascent=Math.max(f[3],f[1]);e.descent=Math.min(f[1],f[3]);e.ascentScaled=!0}let g,p;if(t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let a=0,r=e.count;a=t)throw new r.FormatError("Invalid CFF header");if(0!==a){(0,r.info)("cff data is shifted");e=e.subarray(a);this.bytes=e}const n=e[0],i=e[1],s=e[2],o=e[3];return{obj:new CFFHeader(n,i,s,o),endPos:s}}parseDict(e){let t=0;function parseOperand(){let a=e[t++];if(30===a)return function parseFloatOperand(){let a="";const r=15,n=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],i=e.length;for(;t>4,o=15&i;if(s===r)break;a+=n[s];if(o===r)break;a+=n[o]}return parseFloat(a)}();if(28===a){a=e[t++];a=(a<<24|e[t++]<<16)>>16;return a}if(29===a){a=e[t++];a=a<<8|e[t++];a=a<<8|e[t++];a=a<<8|e[t++];return a}if(a>=32&&a<=246)return a-139;if(a>=247&&a<=250)return 256*(a-247)+e[t++]+108;if(a>=251&&a<=254)return-256*(a-251)-e[t++]-108;(0,r.warn)('CFFParser_parseDict: "'+a+'" is a reserved command.');return NaN}let a=[];const n=[];t=0;const i=e.length;for(;t10)return!1;let o=a.stackSize;const c=a.stack,l=n.length;for(let h=0;h>16;h+=2;o++}else if(14===l){if(o>=4){o-=4;if(this.seacAnalysisEnabled){a.seac=c.slice(o,o+4);return!1}}u=e[l]}else if(l>=32&&l<=246){c[o]=l-139;o++}else if(l>=247&&l<=254){c[o]=l<251?(l-247<<8)+n[h]+108:-(l-251<<8)-n[h]-108;h++;o++}else if(255===l){c[o]=(n[h]<<24|n[h+1]<<16|n[h+2]<<8|n[h+3])/65536;h+=4;o++}else if(19===l||20===l){a.hints+=o>>1;h+=a.hints+7>>3;o%=2;u=e[l]}else{if(10===l||29===l){let t;t=10===l?i:s;if(!t){u=e[l];(0,r.warn)("Missing subrsIndex for "+u.id);return!1}let n=32768;t.count<1240?n=107:t.count<33900&&(n=1131);const h=c[--o]+n;if(h<0||h>=t.count||isNaN(h)){u=e[l];(0,r.warn)("Out of bounds subrIndex for "+u.id);return!1}a.stackSize=o;a.callDepth++;if(!this.parseCharString(a,t.get(h),i,s))return!1;a.callDepth--;o=a.stackSize;continue}if(11===l){a.stackSize=o;return!0}if(0===l&&h===n.length){n[h-1]=14;u=e[14]}else u=e[l]}if(u){if(u.stem){a.hints+=o>>1;if(3===l||23===l)a.hasVStems=!0;else if(a.hasVStems&&(1===l||18===l)){(0,r.warn)("CFF stem hints are in wrong order");n[h-1]=1===l?3:23}}if("min"in u&&!a.undefStack&&o=2&&u.stem?o%=2:o>1&&(0,r.warn)("Found too many parameters for stack-clearing command");o>0&&(a.width=c[o-1])}if("stackDelta"in u){"stackFn"in u&&u.stackFn(c,o);o+=u.stackDelta}else if(u.stackClearing)o=0;else if(u.resetStack){o=0;a.undefStack=!1}else if(u.undefStack){o=0;a.undefStack=!0;a.firstStackClearing=!1}}}a.stackSize=o;return!0}parseCharStrings({charStrings:e,localSubrIndex:t,globalSubrIndex:a,fdSelect:n,fdArray:i,privateDict:s}){const o=[],c=[],l=e.count;for(let h=0;h=i.length){(0,r.warn)("Invalid fd index for glyph index.");d=!1}if(d){g=i[e].privateDict;f=g.subrsIndex}}else t&&(f=t);d&&(d=this.parseCharString(u,l,f,a));if(null!==u.width){const e=g.getByName("nominalWidthX");c[h]=e+u.width}else{const e=g.getByName("defaultWidthX");c[h]=e}null!==u.seac&&(o[h]=u.seac);d||e.set(h,new Uint8Array([14]))}return{charStrings:e,seacs:o,widths:c}}emptyPrivateDictionary(e){const t=this.createDict(h,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const a=t[0],r=t[1];if(0===a||r>=this.bytes.length){this.emptyPrivateDictionary(e);return}const n=r+a,i=this.bytes.subarray(r,n),s=this.parseDict(i),o=this.createDict(h,s,e.strings);e.privateDict=o;if(!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=r+c;if(0===c||l>=this.bytes.length){this.emptyPrivateDictionary(e);return}const u=this.parseIndex(l);o.subrsIndex=u.obj}parseCharsets(e,t,a,i){if(0===e)return new CFFCharset(!0,u.ISO_ADOBE,n.ISOAdobeCharset);if(1===e)return new CFFCharset(!0,u.EXPERT,n.ExpertCharset);if(2===e)return new CFFCharset(!0,u.EXPERT_SUBSET,n.ExpertSubsetCharset);const s=this.bytes,o=e,c=s[e++],l=[i?0:".notdef"];let h,d,f;t-=1;switch(c){case 0:for(f=0;f=65535){(0,r.warn)("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}t.CFF=CFF;class CFFHeader{constructor(e,t,a,r){this.major=e;this.minor=t;this.hdrSize=a;this.offSize=r}}t.CFFHeader=CFFHeader;class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?s[e]:e-o<=this.strings.length?this.strings[e-o]:s[0]}getSID(e){let t=s.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+o:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}t.CFFStrings=CFFStrings;class CFFIndex{constructor(){this.objects=[];this.length=0}add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}t.CFFIndex=CFFIndex;class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;const a=t.length;if(0===a)return!0;for(let n=0;n=this.fdSelect.length?-1:this.fdSelect[e]}}t.CFFFDSelect=CFFFDSelect;class CFFOffsetTracker{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new r.FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,a){if(!(e in this.offsets))throw new r.FormatError(`Not tracking location of ${e}`);const n=a.data,i=this.offsets[e];for(let e=0,a=t.length;e>24&255;n[o]=h>>16&255;n[c]=h>>8&255;n[l]=255&h}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add:function CFFCompiler_add(e){this.data=this.data.concat(e);this.length=this.data.length}},a=this.compileHeader(e.header);t.add(a);const n=this.compileNameIndex(e.names);t.add(n);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(let a=0,n=e.fdArray.length;a16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let s=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(s.output);const o=s.trackers[0],c=this.compileStringIndex(e.strings.strings);t.add(c);const l=this.compileIndex(e.globalSubrIndex);t.add(l);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],t);else{const a=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[t.length],t);t.add(a)}const h=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[t.length],t);t.add(h);const u=this.compileCharStrings(e.charStrings);o.setEntryLocation("CharStrings",[t.length],t);t.add(u);if(e.isCIDFont){o.setEntryLocation("FDSelect",[t.length],t);const a=this.compileFDSelect(e.fdSelect);t.add(a);s=this.compileTopDicts(e.fdArray,t.length,!0);o.setEntryLocation("FDArray",[t.length],t);t.add(s.output);const r=s.trackers;this.compilePrivateDicts(e.fdArray,r,t)}this.compilePrivateDicts([e.topDict],[o],t);t.add([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return(0,r.shadow)(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const a=CFFCompiler.EncodeFloatRegExp.exec(t);if(a){const r=parseFloat("1e"+((a[2]?+a[2]:0)+a[1].length));t=(Math.round(e*r)/r).toString()}let r,n,i="";for(r=0,n=t.length;r=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(let a=0,n=e.length;a"~"||"["===t||"]"===t||"("===t||")"===t||"{"===t||"}"===t||"<"===t||">"===t||"/"===t||"%"===t)&&(t="_");s[e]=t}s=s.join("");""===s&&(s="Bad_Font_Name");t.add((0,r.stringToBytes)(s))}return this.compileIndex(t)}compileTopDicts(e,t,a){const r=[];let n=new CFFIndex;for(let i=0,s=e.length;i>8&255,255&s]);else{i=new Uint8Array(1+2*s);i[0]=0;let t=0;const n=e.charset.length;let o=!1;for(let s=1;s>8&255;i[s+1]=255&c}}return this.compileTypedArray(i)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let a,r;switch(t){case 0:a=new Uint8Array(1+e.fdSelect.length);a[0]=t;for(r=0;r>8&255,255&n,i];for(r=1;r>8&255,255&r,t);i=t}}const o=(s.length-3)/3;s[1]=o>>8&255;s[2]=255&o;s.push(r>>8&255,255&r);a=new Uint8Array(s)}return this.compileTypedArray(a)}compileTypedArray(e){const t=[];for(let a=0,r=e.length;a>8&255,255&r];let i,s,o=1;for(i=0;i>8&255,255&c):3===s?n.push(c>>16&255,c>>8&255,255&c):n.push(c>>>24&255,c>>16&255,c>>8&255,255&c);a[i]&&(c+=a[i].length)}for(i=0;i{Object.defineProperty(t,"__esModule",{value:!0});t.ISOAdobeCharset=t.ExpertSubsetCharset=t.ExpertCharset=void 0;t.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"];t.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"];t.ExpertSubsetCharset=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","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"]},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getSerifFonts=t.getNonStdFontMap=t.getGlyphMapForStandardFonts=t.getFontNameToFileMap=void 0;t.getStandardFontName=function getStandardFontName(e){const t=(0,n.normalizeFontName)(e);return i()[t]};t.getSymbolsFonts=t.getSupplementalGlyphMapForCalibri=t.getSupplementalGlyphMapForArialBlack=t.getStdFontMap=void 0;var r=a(8),n=a(18);const i=(0,r.getLookupTableFactory)((function(e){e["Times-Roman"]="Times-Roman";e.Helvetica="Helvetica";e.Courier="Courier";e.Symbol="Symbol";e["Times-Bold"]="Times-Bold";e["Helvetica-Bold"]="Helvetica-Bold";e["Courier-Bold"]="Courier-Bold";e.ZapfDingbats="ZapfDingbats";e["Times-Italic"]="Times-Italic";e["Helvetica-Oblique"]="Helvetica-Oblique";e["Courier-Oblique"]="Courier-Oblique";e["Times-BoldItalic"]="Times-BoldItalic";e["Helvetica-BoldOblique"]="Helvetica-BoldOblique";e["Courier-BoldOblique"]="Courier-BoldOblique";e.ArialNarrow="Helvetica";e["ArialNarrow-Bold"]="Helvetica-Bold";e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique";e["ArialNarrow-Italic"]="Helvetica-Oblique";e.ArialBlack="Helvetica";e["ArialBlack-Bold"]="Helvetica-Bold";e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique";e["ArialBlack-Italic"]="Helvetica-Oblique";e["Arial-Black"]="Helvetica";e["Arial-Black-Bold"]="Helvetica-Bold";e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Black-Italic"]="Helvetica-Oblique";e.Arial="Helvetica";e["Arial-Bold"]="Helvetica-Bold";e["Arial-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Italic"]="Helvetica-Oblique";e["Arial-BoldItalicMT"]="Helvetica-BoldOblique";e["Arial-BoldMT"]="Helvetica-Bold";e["Arial-ItalicMT"]="Helvetica-Oblique";e.ArialMT="Helvetica";e["Courier-BoldItalic"]="Courier-BoldOblique";e["Courier-Italic"]="Courier-Oblique";e.CourierNew="Courier";e["CourierNew-Bold"]="Courier-Bold";e["CourierNew-BoldItalic"]="Courier-BoldOblique";e["CourierNew-Italic"]="Courier-Oblique";e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique";e["CourierNewPS-BoldMT"]="Courier-Bold";e["CourierNewPS-ItalicMT"]="Courier-Oblique";e.CourierNewPSMT="Courier";e["Helvetica-BoldItalic"]="Helvetica-BoldOblique";e["Helvetica-Italic"]="Helvetica-Oblique";e["Symbol-Bold"]="Symbol";e["Symbol-BoldItalic"]="Symbol";e["Symbol-Italic"]="Symbol";e.TimesNewRoman="Times-Roman";e["TimesNewRoman-Bold"]="Times-Bold";e["TimesNewRoman-BoldItalic"]="Times-BoldItalic";e["TimesNewRoman-Italic"]="Times-Italic";e.TimesNewRomanPS="Times-Roman";e["TimesNewRomanPS-Bold"]="Times-Bold";e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic";e["TimesNewRomanPS-BoldMT"]="Times-Bold";e["TimesNewRomanPS-Italic"]="Times-Italic";e["TimesNewRomanPS-ItalicMT"]="Times-Italic";e.TimesNewRomanPSMT="Times-Roman";e["TimesNewRomanPSMT-Bold"]="Times-Bold";e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPSMT-Italic"]="Times-Italic"}));t.getStdFontMap=i;const s=(0,r.getLookupTableFactory)((function(e){e.Courier="FoxitFixed.pfb";e["Courier-Bold"]="FoxitFixedBold.pfb";e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb";e["Courier-Oblique"]="FoxitFixedItalic.pfb";e.Helvetica="FoxitSans.pfb";e["Helvetica-Bold"]="FoxitSansBold.pfb";e["Helvetica-BoldOblique"]="FoxitSansBoldItalic.pfb";e["Helvetica-Oblique"]="FoxitSansItalic.pfb";e["Times-Roman"]="FoxitSerif.pfb";e["Times-Bold"]="FoxitSerifBold.pfb";e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb";e["Times-Italic"]="FoxitSerifItalic.pfb";e.Symbol="FoxitSymbol.pfb";e.ZapfDingbats="FoxitDingbats.pfb";e["LiberationSans-Regular"]="LiberationSans-Regular.ttf";e["LiberationSans-Bold"]="LiberationSans-Bold.ttf";e["LiberationSans-Italic"]="LiberationSans-Italic.ttf";e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"}));t.getFontNameToFileMap=s;const o=(0,r.getLookupTableFactory)((function(e){e.Calibri="Helvetica";e["Calibri-Bold"]="Helvetica-Bold";e["Calibri-BoldItalic"]="Helvetica-BoldOblique";e["Calibri-Italic"]="Helvetica-Oblique";e.CenturyGothic="Helvetica";e["CenturyGothic-Bold"]="Helvetica-Bold";e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique";e["CenturyGothic-Italic"]="Helvetica-Oblique";e.ComicSansMS="Comic Sans MS";e["ComicSansMS-Bold"]="Comic Sans MS-Bold";e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic";e["ComicSansMS-Italic"]="Comic Sans MS-Italic";e["ItcSymbol-Bold"]="Helvetica-Bold";e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique";e["ItcSymbol-Book"]="Helvetica";e["ItcSymbol-BookItalic"]="Helvetica-Oblique";e["ItcSymbol-Medium"]="Helvetica";e["ItcSymbol-MediumItalic"]="Helvetica-Oblique";e.LucidaConsole="Courier";e["LucidaConsole-Bold"]="Courier-Bold";e["LucidaConsole-BoldItalic"]="Courier-BoldOblique";e["LucidaConsole-Italic"]="Courier-Oblique";e["LucidaSans-Demi"]="Helvetica-Bold";e["MS-Gothic"]="MS Gothic";e["MS-Gothic-Bold"]="MS Gothic-Bold";e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic";e["MS-Gothic-Italic"]="MS Gothic-Italic";e["MS-Mincho"]="MS Mincho";e["MS-Mincho-Bold"]="MS Mincho-Bold";e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic";e["MS-Mincho-Italic"]="MS Mincho-Italic";e["MS-PGothic"]="MS PGothic";e["MS-PGothic-Bold"]="MS PGothic-Bold";e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic";e["MS-PGothic-Italic"]="MS PGothic-Italic";e["MS-PMincho"]="MS PMincho";e["MS-PMincho-Bold"]="MS PMincho-Bold";e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic";e["MS-PMincho-Italic"]="MS PMincho-Italic";e.NuptialScript="Times-Italic";e.SegoeUISymbol="Helvetica";e.Wingdings="ZapfDingbats";e["Wingdings-Regular"]="ZapfDingbats"}));t.getNonStdFontMap=o;const c=(0,r.getLookupTableFactory)((function(e){e["Adobe Jenson"]=!0;e["Adobe Text"]=!0;e.Albertus=!0;e.Aldus=!0;e.Alexandria=!0;e.Algerian=!0;e["American Typewriter"]=!0;e.Antiqua=!0;e.Apex=!0;e.Arno=!0;e.Aster=!0;e.Aurora=!0;e.Baskerville=!0;e.Bell=!0;e.Bembo=!0;e["Bembo Schoolbook"]=!0;e.Benguiat=!0;e["Berkeley Old Style"]=!0;e["Bernhard Modern"]=!0;e["Berthold City"]=!0;e.Bodoni=!0;e["Bauer Bodoni"]=!0;e["Book Antiqua"]=!0;e.Bookman=!0;e["Bordeaux Roman"]=!0;e["Californian FB"]=!0;e.Calisto=!0;e.Calvert=!0;e.Capitals=!0;e.Cambria=!0;e.Cartier=!0;e.Caslon=!0;e.Catull=!0;e.Centaur=!0;e["Century Old Style"]=!0;e["Century Schoolbook"]=!0;e.Chaparral=!0;e["Charis SIL"]=!0;e.Cheltenham=!0;e["Cholla Slab"]=!0;e.Clarendon=!0;e.Clearface=!0;e.Cochin=!0;e.Colonna=!0;e["Computer Modern"]=!0;e["Concrete Roman"]=!0;e.Constantia=!0;e["Cooper Black"]=!0;e.Corona=!0;e.Ecotype=!0;e.Egyptienne=!0;e.Elephant=!0;e.Excelsior=!0;e.Fairfield=!0;e["FF Scala"]=!0;e.Folkard=!0;e.Footlight=!0;e.FreeSerif=!0;e["Friz Quadrata"]=!0;e.Garamond=!0;e.Gentium=!0;e.Georgia=!0;e.Gloucester=!0;e["Goudy Old Style"]=!0;e["Goudy Schoolbook"]=!0;e["Goudy Pro Font"]=!0;e.Granjon=!0;e["Guardian Egyptian"]=!0;e.Heather=!0;e.Hercules=!0;e["High Tower Text"]=!0;e.Hiroshige=!0;e["Hoefler Text"]=!0;e["Humana Serif"]=!0;e.Imprint=!0;e["Ionic No. 5"]=!0;e.Janson=!0;e.Joanna=!0;e.Korinna=!0;e.Lexicon=!0;e.LiberationSerif=!0;e["Liberation Serif"]=!0;e["Linux Libertine"]=!0;e.Literaturnaya=!0;e.Lucida=!0;e["Lucida Bright"]=!0;e.Melior=!0;e.Memphis=!0;e.Miller=!0;e.Minion=!0;e.Modern=!0;e["Mona Lisa"]=!0;e["Mrs Eaves"]=!0;e["MS Serif"]=!0;e["Museo Slab"]=!0;e["New York"]=!0;e["Nimbus Roman"]=!0;e["NPS Rawlinson Roadway"]=!0;e.NuptialScript=!0;e.Palatino=!0;e.Perpetua=!0;e.Plantin=!0;e["Plantin Schoolbook"]=!0;e.Playbill=!0;e["Poor Richard"]=!0;e["Rawlinson Roadway"]=!0;e.Renault=!0;e.Requiem=!0;e.Rockwell=!0;e.Roman=!0;e["Rotis Serif"]=!0;e.Sabon=!0;e.Scala=!0;e.Seagull=!0;e.Sistina=!0;e.Souvenir=!0;e.STIX=!0;e["Stone Informal"]=!0;e["Stone Serif"]=!0;e.Sylfaen=!0;e.Times=!0;e.Trajan=!0;e["Trinité"]=!0;e["Trump Mediaeval"]=!0;e.Utopia=!0;e["Vale Type"]=!0;e["Bitstream Vera"]=!0;e["Vera Serif"]=!0;e.Versailles=!0;e.Wanted=!0;e.Weiss=!0;e["Wide Latin"]=!0;e.Windsor=!0;e.XITS=!0}));t.getSerifFonts=c;const l=(0,r.getLookupTableFactory)((function(e){e.Dingbats=!0;e.Symbol=!0;e.ZapfDingbats=!0}));t.getSymbolsFonts=l;const h=(0,r.getLookupTableFactory)((function(e){e[2]=10;e[3]=32;e[4]=33;e[5]=34;e[6]=35;e[7]=36;e[8]=37;e[9]=38;e[10]=39;e[11]=40;e[12]=41;e[13]=42;e[14]=43;e[15]=44;e[16]=45;e[17]=46;e[18]=47;e[19]=48;e[20]=49;e[21]=50;e[22]=51;e[23]=52;e[24]=53;e[25]=54;e[26]=55;e[27]=56;e[28]=57;e[29]=58;e[30]=894;e[31]=60;e[32]=61;e[33]=62;e[34]=63;e[35]=64;e[36]=65;e[37]=66;e[38]=67;e[39]=68;e[40]=69;e[41]=70;e[42]=71;e[43]=72;e[44]=73;e[45]=74;e[46]=75;e[47]=76;e[48]=77;e[49]=78;e[50]=79;e[51]=80;e[52]=81;e[53]=82;e[54]=83;e[55]=84;e[56]=85;e[57]=86;e[58]=87;e[59]=88;e[60]=89;e[61]=90;e[62]=91;e[63]=92;e[64]=93;e[65]=94;e[66]=95;e[67]=96;e[68]=97;e[69]=98;e[70]=99;e[71]=100;e[72]=101;e[73]=102;e[74]=103;e[75]=104;e[76]=105;e[77]=106;e[78]=107;e[79]=108;e[80]=109;e[81]=110;e[82]=111;e[83]=112;e[84]=113;e[85]=114;e[86]=115;e[87]=116;e[88]=117;e[89]=118;e[90]=119;e[91]=120;e[92]=121;e[93]=122;e[94]=123;e[95]=124;e[96]=125;e[97]=126;e[98]=196;e[99]=197;e[100]=199;e[101]=201;e[102]=209;e[103]=214;e[104]=220;e[105]=225;e[106]=224;e[107]=226;e[108]=228;e[109]=227;e[110]=229;e[111]=231;e[112]=233;e[113]=232;e[114]=234;e[115]=235;e[116]=237;e[117]=236;e[118]=238;e[119]=239;e[120]=241;e[121]=243;e[122]=242;e[123]=244;e[124]=246;e[125]=245;e[126]=250;e[127]=249;e[128]=251;e[129]=252;e[130]=8224;e[131]=176;e[132]=162;e[133]=163;e[134]=167;e[135]=8226;e[136]=182;e[137]=223;e[138]=174;e[139]=169;e[140]=8482;e[141]=180;e[142]=168;e[143]=8800;e[144]=198;e[145]=216;e[146]=8734;e[147]=177;e[148]=8804;e[149]=8805;e[150]=165;e[151]=181;e[152]=8706;e[153]=8721;e[154]=8719;e[156]=8747;e[157]=170;e[158]=186;e[159]=8486;e[160]=230;e[161]=248;e[162]=191;e[163]=161;e[164]=172;e[165]=8730;e[166]=402;e[167]=8776;e[168]=8710;e[169]=171;e[170]=187;e[171]=8230;e[200]=193;e[203]=205;e[210]=218;e[223]=711;e[224]=321;e[225]=322;e[226]=352;e[227]=353;e[228]=381;e[229]=382;e[233]=221;e[234]=253;e[252]=263;e[253]=268;e[254]=269;e[258]=258;e[260]=260;e[261]=261;e[265]=280;e[266]=281;e[267]=282;e[268]=283;e[269]=313;e[275]=323;e[276]=324;e[278]=328;e[283]=344;e[284]=345;e[285]=346;e[286]=347;e[292]=367;e[295]=377;e[296]=378;e[298]=380;e[305]=963;e[306]=964;e[307]=966;e[308]=8215;e[309]=8252;e[310]=8319;e[311]=8359;e[312]=8592;e[313]=8593;e[337]=9552;e[493]=1039;e[494]=1040;e[705]=1524;e[706]=8362;e[710]=64288;e[711]=64298;e[759]=1617;e[761]=1776;e[763]=1778;e[775]=1652;e[777]=1764;e[778]=1780;e[779]=1781;e[780]=1782;e[782]=771;e[783]=64726;e[786]=8363;e[788]=8532;e[790]=768;e[791]=769;e[792]=768;e[795]=803;e[797]=64336;e[798]=64337;e[799]=64342;e[800]=64343;e[801]=64344;e[802]=64345;e[803]=64362;e[804]=64363;e[805]=64364;e[2424]=7821;e[2425]=7822;e[2426]=7823;e[2427]=7824;e[2428]=7825;e[2429]=7826;e[2430]=7827;e[2433]=7682;e[2678]=8045;e[2679]=8046;e[2830]=1552;e[2838]=686;e[2840]=751;e[2842]=753;e[2843]=754;e[2844]=755;e[2846]=757;e[2856]=767;e[2857]=848;e[2858]=849;e[2862]=853;e[2863]=854;e[2864]=855;e[2865]=861;e[2866]=862;e[2906]=7460;e[2908]=7462;e[2909]=7463;e[2910]=7464;e[2912]=7466;e[2913]=7467;e[2914]=7468;e[2916]=7470;e[2917]=7471;e[2918]=7472;e[2920]=7474;e[2921]=7475;e[2922]=7476;e[2924]=7478;e[2925]=7479;e[2926]=7480;e[2928]=7482;e[2929]=7483;e[2930]=7484;e[2932]=7486;e[2933]=7487;e[2934]=7488;e[2936]=7490;e[2937]=7491;e[2938]=7492;e[2940]=7494;e[2941]=7495;e[2942]=7496;e[2944]=7498;e[2946]=7500;e[2948]=7502;e[2950]=7504;e[2951]=7505;e[2952]=7506;e[2954]=7508;e[2955]=7509;e[2956]=7510;e[2958]=7512;e[2959]=7513;e[2960]=7514;e[2962]=7516;e[2963]=7517;e[2964]=7518;e[2966]=7520;e[2967]=7521;e[2968]=7522;e[2970]=7524;e[2971]=7525;e[2972]=7526;e[2974]=7528;e[2975]=7529;e[2976]=7530;e[2978]=1537;e[2979]=1538;e[2980]=1539;e[2982]=1549;e[2983]=1551;e[2984]=1552;e[2986]=1554;e[2987]=1555;e[2988]=1556;e[2990]=1623;e[2991]=1624;e[2995]=1775;e[2999]=1791;e[3002]=64290;e[3003]=64291;e[3004]=64292;e[3006]=64294;e[3007]=64295;e[3008]=64296;e[3011]=1900;e[3014]=8223;e[3015]=8244;e[3017]=7532;e[3018]=7533;e[3019]=7534;e[3075]=7590;e[3076]=7591;e[3079]=7594;e[3080]=7595;e[3083]=7598;e[3084]=7599;e[3087]=7602;e[3088]=7603;e[3091]=7606;e[3092]=7607;e[3095]=7610;e[3096]=7611;e[3099]=7614;e[3100]=7615;e[3103]=7618;e[3104]=7619;e[3107]=8337;e[3108]=8338;e[3116]=1884;e[3119]=1885;e[3120]=1885;e[3123]=1886;e[3124]=1886;e[3127]=1887;e[3128]=1887;e[3131]=1888;e[3132]=1888;e[3135]=1889;e[3136]=1889;e[3139]=1890;e[3140]=1890;e[3143]=1891;e[3144]=1891;e[3147]=1892;e[3148]=1892;e[3153]=580;e[3154]=581;e[3157]=584;e[3158]=585;e[3161]=588;e[3162]=589;e[3165]=891;e[3166]=892;e[3169]=1274;e[3170]=1275;e[3173]=1278;e[3174]=1279;e[3181]=7622;e[3182]=7623;e[3282]=11799;e[3316]=578;e[3379]=42785;e[3393]=1159;e[3416]=8377}));t.getGlyphMapForStandardFonts=h;const u=(0,r.getLookupTableFactory)((function(e){e[227]=322;e[264]=261;e[291]=346}));t.getSupplementalGlyphMapForArialBlack=u;const d=(0,r.getLookupTableFactory)((function(e){e[1]=32;e[4]=65;e[6]=193;e[17]=66;e[18]=67;e[21]=268;e[24]=68;e[28]=69;e[30]=201;e[32]=282;e[38]=70;e[39]=71;e[44]=72;e[47]=73;e[49]=205;e[58]=74;e[60]=75;e[62]=76;e[68]=77;e[69]=78;e[75]=79;e[87]=80;e[89]=81;e[90]=82;e[92]=344;e[94]=83;e[97]=352;e[100]=84;e[104]=85;e[115]=86;e[116]=87;e[121]=88;e[122]=89;e[124]=221;e[127]=90;e[129]=381;e[258]=97;e[260]=225;e[268]=261;e[271]=98;e[272]=99;e[273]=263;e[275]=269;e[282]=100;e[286]=101;e[288]=233;e[290]=283;e[295]=281;e[296]=102;e[336]=103;e[346]=104;e[349]=105;e[351]=237;e[361]=106;e[364]=107;e[367]=108;e[371]=322;e[373]=109;e[374]=110;e[381]=111;e[383]=243;e[393]=112;e[395]=113;e[396]=114;e[398]=345;e[400]=115;e[401]=347;e[403]=353;e[410]=116;e[437]=117;e[448]=118;e[449]=119;e[454]=120;e[455]=121;e[457]=253;e[460]=122;e[462]=382;e[463]=380;e[853]=44;e[855]=58;e[856]=46;e[876]=47;e[878]=45;e[882]=45;e[894]=40;e[895]=41;e[896]=91;e[897]=93;e[923]=64;e[1004]=48;e[1005]=49;e[1006]=50;e[1007]=51;e[1008]=52;e[1009]=53;e[1010]=54;e[1011]=55;e[1012]=56;e[1013]=57;e[1081]=37;e[1085]=43;e[1086]=45}));t.getSupplementalGlyphMapForCalibri=d},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ToUnicodeMap=t.IdentityToUnicodeMap=void 0;var r=a(2);t.ToUnicodeMap=class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const a in t)if(t[a]===e)return 0|a;return-1}amend(e){for(const t in e)this._map[t]=e[t]}};t.IdentityToUnicodeMap=class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,a=this.lastChar;t<=a;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){(0,r.unreachable)("Should not call amend()")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFFont=void 0;var r=a(45),n=a(18),i=a(2);t.CFFFont=class CFFFont{constructor(e,t){this.properties=t;const a=new r.CFFParser(e,t,n.SEAC_ANALYSIS_ENABLED);this.cff=a.parse();this.cff.duplicateFirstGlyph();const s=new r.CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=s.compile()}catch(a){(0,i.warn)("Failed to compile font "+t.loadedName);this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,a=e.charset.charset;let r,i;if(t.composite){r=Object.create(null);let n;if(e.isCIDFont)for(i=0;i=0){const r=a[t];r&&(n[e]=r)}}n.length>0&&(this.properties.builtInEncoding=n)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontRendererFactory=void 0;var r=a(2),n=a(45),i=a(20),s=a(19),o=a(10);function getUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function getUint16(e,t){return e[t]<<8|e[t+1]}function getInt16(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function getInt8(e,t){return e[t]<<24>>24}function getFloat214(e,t){return getInt16(e,t)/16384}function getSubroutineBias(e){const t=e.length;let a=32768;t<1240?a=107:t<33900&&(a=1131);return a}function parseCmap(e,t,a){const n=1===getUint16(e,t+2)?getUint32(e,t+8):getUint32(e,t+16),i=getUint16(e,t+n);let s,o,c;if(4===i){getUint16(e,t+n+2);const a=getUint16(e,t+n+6)>>1;o=t+n+14;s=[];for(c=0;c>1;a0;)h.push({flags:i})}for(a=0;a>1;S=!0;break;case 4:c+=i.pop();moveTo(o,c);S=!0;break;case 5:for(;i.length>0;){o+=i.shift();c+=i.shift();lineTo(o,c)}break;case 6:for(;i.length>0;){o+=i.shift();lineTo(o,c);if(0===i.length)break;c+=i.shift();lineTo(o,c)}break;case 7:for(;i.length>0;){c+=i.shift();lineTo(o,c);if(0===i.length)break;o+=i.shift();lineTo(o,c)}break;case 8:for(;i.length>0;){u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 10:y=i.pop();w=null;if(a.isCFFCIDFont){const e=a.fdSelect.getFDIndex(n);if(e>=0&&eMath.abs(c-t)?o+=i.shift():c+=i.shift();bezierCurveTo(u,f,d,g,o,c);break;default:throw new r.FormatError(`unknown operator: 12 ${x}`)}break;case 14:if(i.length>=4){const e=i.pop(),r=i.pop();c=i.pop();o=i.pop();t.push({cmd:"save"},{cmd:"translate",args:[o,c]});let n=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[s.StandardEncoding[e]]));compileCharString(a.glyphs[n.glyphId],t,a,n.glyphId);t.push({cmd:"restore"});n=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[s.StandardEncoding[r]]));compileCharString(a.glyphs[n.glyphId],t,a,n.glyphId)}return;case 19:case 20:l+=i.length>>1;h+=l+7>>3;S=!0;break;case 21:c+=i.pop();o+=i.pop();moveTo(o,c);S=!0;break;case 22:o+=i.pop();moveTo(o,c);S=!0;break;case 24:for(;i.length>2;){u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}o+=i.shift();c+=i.shift();lineTo(o,c);break;case 25:for(;i.length>6;){o+=i.shift();c+=i.shift();lineTo(o,c)}u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c);break;case 26:i.length%2&&(o+=i.shift());for(;i.length>0;){u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d;c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 27:i.length%2&&(c+=i.shift());for(;i.length>0;){u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g;bezierCurveTo(u,f,d,g,o,c)}break;case 28:i.push((e[h]<<24|e[h+1]<<16)>>16);h+=2;break;case 29:y=i.pop()+a.gsubrsBias;w=a.gsubrs[y];w&&parse(w);break;case 30:for(;i.length>0;){u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===i.length)break;u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();c=g+i.shift();o=d+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;case 31:for(;i.length>0;){u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();c=g+i.shift();o=d+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===i.length)break;u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;default:if(x<32)throw new r.FormatError(`unknown operator: ${x}`);if(x<247)i.push(x-139);else if(x<251)i.push(256*(x-247)+e[h++]+108);else if(x<255)i.push(256*-(x-251)-e[h++]-108);else{i.push((e[h]<<24|e[h+1]<<16|e[h+2]<<8|e[h+3])/65536);h+=4}}S&&(i.length=0)}}(e)}const c=[];class CompiledFont{constructor(e){this.constructor===CompiledFont&&(0,r.unreachable)("Cannot initialize CompiledFont.");this.fontMatrix=e;this.compiledGlyphs=Object.create(null);this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:a}=lookupCmap(this.cmap,e);let r=this.compiledGlyphs[a];if(!r)try{r=this.compileGlyph(this.glyphs[a],a);this.compiledGlyphs[a]=r}catch(e){this.compiledGlyphs[a]=c;void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);throw e}void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);return r}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return c;let a=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);if(e>=0&&e2*getUint16(e,t)}const i=[];let s=n(t,0);for(let a=r;a{Object.defineProperty(t,"__esModule",{value:!0});t.getMetrics=t.getFontBasicMetrics=void 0;var r=a(8);const n=(0,r.getLookupTableFactory)((function(e){e.Courier=600;e["Courier-Bold"]=600;e["Courier-BoldOblique"]=600;e["Courier-Oblique"]=600;e.Helvetica=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Bold"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-BoldOblique"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Oblique"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e.Symbol=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.universal=713;e.numbersign=500;e.existential=549;e.percent=833;e.ampersand=778;e.suchthat=439;e.parenleft=333;e.parenright=333;e.asteriskmath=500;e.plus=549;e.comma=250;e.minus=549;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=549;e.equal=549;e.greater=549;e.question=444;e.congruent=549;e.Alpha=722;e.Beta=667;e.Chi=722;e.Delta=612;e.Epsilon=611;e.Phi=763;e.Gamma=603;e.Eta=722;e.Iota=333;e.theta1=631;e.Kappa=722;e.Lambda=686;e.Mu=889;e.Nu=722;e.Omicron=722;e.Pi=768;e.Theta=741;e.Rho=556;e.Sigma=592;e.Tau=611;e.Upsilon=690;e.sigma1=439;e.Omega=768;e.Xi=645;e.Psi=795;e.Zeta=611;e.bracketleft=333;e.therefore=863;e.bracketright=333;e.perpendicular=658;e.underscore=500;e.radicalex=500;e.alpha=631;e.beta=549;e.chi=549;e.delta=494;e.epsilon=439;e.phi=521;e.gamma=411;e.eta=603;e.iota=329;e.phi1=603;e.kappa=549;e.lambda=549;e.mu=576;e.nu=521;e.omicron=549;e.pi=549;e.theta=521;e.rho=549;e.sigma=603;e.tau=439;e.upsilon=576;e.omega1=713;e.omega=686;e.xi=493;e.psi=686;e.zeta=494;e.braceleft=480;e.bar=200;e.braceright=480;e.similar=549;e.Euro=750;e.Upsilon1=620;e.minute=247;e.lessequal=549;e.fraction=167;e.infinity=713;e.florin=500;e.club=753;e.diamond=753;e.heart=753;e.spade=753;e.arrowboth=1042;e.arrowleft=987;e.arrowup=603;e.arrowright=987;e.arrowdown=603;e.degree=400;e.plusminus=549;e.second=411;e.greaterequal=549;e.multiply=549;e.proportional=713;e.partialdiff=494;e.bullet=460;e.divide=549;e.notequal=549;e.equivalence=549;e.approxequal=549;e.ellipsis=1e3;e.arrowvertex=603;e.arrowhorizex=1e3;e.carriagereturn=658;e.aleph=823;e.Ifraktur=686;e.Rfraktur=795;e.weierstrass=987;e.circlemultiply=768;e.circleplus=768;e.emptyset=823;e.intersection=768;e.union=768;e.propersuperset=713;e.reflexsuperset=713;e.notsubset=713;e.propersubset=713;e.reflexsubset=713;e.element=713;e.notelement=713;e.angle=768;e.gradient=713;e.registerserif=790;e.copyrightserif=790;e.trademarkserif=890;e.product=823;e.radical=549;e.dotmath=250;e.logicalnot=713;e.logicaland=603;e.logicalor=603;e.arrowdblboth=1042;e.arrowdblleft=987;e.arrowdblup=603;e.arrowdblright=987;e.arrowdbldown=603;e.lozenge=494;e.angleleft=329;e.registersans=790;e.copyrightsans=790;e.trademarksans=786;e.summation=713;e.parenlefttp=384;e.parenleftex=384;e.parenleftbt=384;e.bracketlefttp=384;e.bracketleftex=384;e.bracketleftbt=384;e.bracelefttp=494;e.braceleftmid=494;e.braceleftbt=494;e.braceex=494;e.angleright=329;e.integral=274;e.integraltp=686;e.integralex=686;e.integralbt=686;e.parenrighttp=384;e.parenrightex=384;e.parenrightbt=384;e.bracketrighttp=384;e.bracketrightex=384;e.bracketrightbt=384;e.bracerighttp=494;e.bracerightmid=494;e.bracerightbt=494;e.apple=790}));e["Times-Roman"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=408;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=564;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=564;e.equal=564;e.greater=564;e.question=444;e.at=921;e.A=722;e.B=667;e.C=667;e.D=722;e.E=611;e.F=556;e.G=722;e.H=722;e.I=333;e.J=389;e.K=722;e.L=611;e.M=889;e.N=722;e.O=722;e.P=556;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=722;e.W=944;e.X=722;e.Y=722;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=469;e.underscore=500;e.quoteleft=333;e.a=444;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=500;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=500;e.o=500;e.p=500;e.q=500;e.r=333;e.s=389;e.t=278;e.u=500;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=480;e.bar=200;e.braceright=480;e.asciitilde=541;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=180;e.quotedblleft=444;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=453;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=444;e.quotedblright=444;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=444;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=889;e.ordfeminine=276;e.Lslash=611;e.Oslash=722;e.OE=889;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=444;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=722;e.divide=564;e.Yacute=722;e.Acircumflex=722;e.aacute=444;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=444;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=444;e.Ncommaaccent=722;e.lacute=278;e.agrave=444;e.Tcommaaccent=611;e.Cacute=667;e.atilde=444;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=444;e.Amacron=722;e.rcaron=333;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=556;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=588;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=722;e.Abreve=722;e.multiply=564;e.uacute=500;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=444;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=722;e.Iacute=333;e.plusminus=564;e.brokenbar=200;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=333;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=326;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=444;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=344;e.Kcommaaccent=722;e.Lacute=611;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=722;e.zdotaccent=444;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=500;e.minus=564;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=564;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Bold"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=1e3;e.ampersand=833;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=930;e.A=722;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=778;e.I=389;e.J=500;e.K=778;e.L=667;e.M=944;e.N=722;e.O=778;e.P=611;e.Q=778;e.R=722;e.S=556;e.T=667;e.U=722;e.V=722;e.W=1e3;e.X=722;e.Y=722;e.Z=667;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=581;e.underscore=500;e.quoteleft=333;e.a=500;e.b=556;e.c=444;e.d=556;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=333;e.k=556;e.l=278;e.m=833;e.n=556;e.o=500;e.p=556;e.q=556;e.r=444;e.s=389;e.t=333;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=394;e.bar=220;e.braceright=394;e.asciitilde=520;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=540;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=300;e.Lslash=667;e.Oslash=778;e.OE=1e3;e.ordmasculine=330;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=556;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=722;e.divide=570;e.Yacute=722;e.Acircumflex=722;e.aacute=500;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=667;e.Cacute=722;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=500;e.Amacron=722;e.rcaron=444;e.ccedilla=444;e.Zdotaccent=667;e.Thorn=611;e.Omacron=778;e.Racute=722;e.Sacute=556;e.dcaron=672;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=570;e.uacute=556;e.Tcaron=667;e.partialdiff=494;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=778;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=444;e.omacron=500;e.Zacute=667;e.Zcaron=667;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=416;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=778;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=300;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=556;e.threequarters=750;e.Scedilla=556;e.lcaron=394;e.Kcommaaccent=778;e.Lacute=667;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=667;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=778;e.degree=400;e.ograve=500;e.Ccaron=722;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=444;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=722;e.Lcommaaccent=667;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=444;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=556;e.minus=570;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=333;e.logicalnot=570;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-BoldItalic"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=389;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=832;e.A=667;e.B=667;e.C=667;e.D=722;e.E=667;e.F=667;e.G=722;e.H=778;e.I=389;e.J=500;e.K=667;e.L=611;e.M=889;e.N=722;e.O=722;e.P=611;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=667;e.W=889;e.X=667;e.Y=611;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=570;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=556;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=556;e.v=444;e.w=667;e.x=500;e.y=444;e.z=389;e.braceleft=348;e.bar=220;e.braceright=348;e.asciitilde=570;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=500;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=944;e.ordfeminine=266;e.Lslash=611;e.Oslash=722;e.OE=944;e.ordmasculine=300;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=611;e.divide=570;e.Yacute=611;e.Acircumflex=667;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=611;e.Cacute=667;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=556;e.acircumflex=500;e.Amacron=667;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=611;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=608;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=722;e.Agrave=667;e.Abreve=667;e.multiply=570;e.uacute=556;e.Tcaron=611;e.partialdiff=494;e.ydieresis=444;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=722;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=366;e.eogonek=444;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=576;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=382;e.Kcommaaccent=667;e.Lacute=611;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=722;e.zdotaccent=389;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=500;e.minus=606;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=606;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Italic"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=420;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=675;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=675;e.equal=675;e.greater=675;e.question=500;e.at=920;e.A=611;e.B=611;e.C=667;e.D=722;e.E=611;e.F=611;e.G=722;e.H=722;e.I=333;e.J=444;e.K=667;e.L=556;e.M=833;e.N=667;e.O=722;e.P=611;e.Q=722;e.R=611;e.S=500;e.T=556;e.U=722;e.V=611;e.W=833;e.X=611;e.Y=556;e.Z=556;e.bracketleft=389;e.backslash=278;e.bracketright=389;e.asciicircum=422;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=278;e.g=500;e.h=500;e.i=278;e.j=278;e.k=444;e.l=278;e.m=722;e.n=500;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=500;e.v=444;e.w=667;e.x=444;e.y=444;e.z=389;e.braceleft=400;e.bar=275;e.braceright=400;e.asciitilde=541;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=214;e.quotedblleft=556;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=523;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=556;e.quotedblright=556;e.guillemotright=500;e.ellipsis=889;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=889;e.AE=889;e.ordfeminine=276;e.Lslash=556;e.Oslash=722;e.OE=944;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=667;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=500;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=556;e.divide=675;e.Yacute=556;e.Acircumflex=611;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=500;e.Ncommaaccent=667;e.lacute=278;e.agrave=500;e.Tcommaaccent=556;e.Cacute=667;e.atilde=500;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=611;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=500;e.Amacron=611;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=556;e.Thorn=611;e.Omacron=722;e.Racute=611;e.Sacute=500;e.dcaron=544;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=611;e.Abreve=611;e.multiply=675;e.uacute=500;e.Tcaron=556;e.partialdiff=476;e.ydieresis=444;e.Nacute=667;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=667;e.Iacute=333;e.plusminus=675;e.brokenbar=275;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=389;e.omacron=500;e.Zacute=556;e.Zcaron=556;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=300;e.eogonek=444;e.Uogonek=722;e.Aacute=611;e.Adieresis=611;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=500;e.lcaron=300;e.Kcommaaccent=667;e.Lacute=556;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=500;e.Scommaaccent=500;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=667;e.otilde=500;e.Rcommaaccent=611;e.Lcommaaccent=556;e.Atilde=611;e.Aogonek=611;e.Aring=611;e.Otilde=722;e.zdotaccent=389;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=444;e.minus=675;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=675;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e.ZapfDingbats=(0,r.getLookupTableFactory)((function(e){e.space=278;e.a1=974;e.a2=961;e.a202=974;e.a3=980;e.a4=719;e.a5=789;e.a119=790;e.a118=791;e.a117=690;e.a11=960;e.a12=939;e.a13=549;e.a14=855;e.a15=911;e.a16=933;e.a105=911;e.a17=945;e.a18=974;e.a19=755;e.a20=846;e.a21=762;e.a22=761;e.a23=571;e.a24=677;e.a25=763;e.a26=760;e.a27=759;e.a28=754;e.a6=494;e.a7=552;e.a8=537;e.a9=577;e.a10=692;e.a29=786;e.a30=788;e.a31=788;e.a32=790;e.a33=793;e.a34=794;e.a35=816;e.a36=823;e.a37=789;e.a38=841;e.a39=823;e.a40=833;e.a41=816;e.a42=831;e.a43=923;e.a44=744;e.a45=723;e.a46=749;e.a47=790;e.a48=792;e.a49=695;e.a50=776;e.a51=768;e.a52=792;e.a53=759;e.a54=707;e.a55=708;e.a56=682;e.a57=701;e.a58=826;e.a59=815;e.a60=789;e.a61=789;e.a62=707;e.a63=687;e.a64=696;e.a65=689;e.a66=786;e.a67=787;e.a68=713;e.a69=791;e.a70=785;e.a71=791;e.a72=873;e.a73=761;e.a74=762;e.a203=762;e.a75=759;e.a204=759;e.a76=892;e.a77=892;e.a78=788;e.a79=784;e.a81=438;e.a82=138;e.a83=277;e.a84=415;e.a97=392;e.a98=392;e.a99=668;e.a100=668;e.a89=390;e.a90=390;e.a93=317;e.a94=317;e.a91=276;e.a92=276;e.a205=509;e.a85=509;e.a206=410;e.a86=410;e.a87=234;e.a88=234;e.a95=334;e.a96=334;e.a101=732;e.a102=544;e.a103=544;e.a104=910;e.a106=667;e.a107=760;e.a108=760;e.a112=776;e.a111=595;e.a110=694;e.a109=626;e.a120=788;e.a121=788;e.a122=788;e.a123=788;e.a124=788;e.a125=788;e.a126=788;e.a127=788;e.a128=788;e.a129=788;e.a130=788;e.a131=788;e.a132=788;e.a133=788;e.a134=788;e.a135=788;e.a136=788;e.a137=788;e.a138=788;e.a139=788;e.a140=788;e.a141=788;e.a142=788;e.a143=788;e.a144=788;e.a145=788;e.a146=788;e.a147=788;e.a148=788;e.a149=788;e.a150=788;e.a151=788;e.a152=788;e.a153=788;e.a154=788;e.a155=788;e.a156=788;e.a157=788;e.a158=788;e.a159=788;e.a160=894;e.a161=838;e.a163=1016;e.a164=458;e.a196=748;e.a165=924;e.a192=748;e.a166=918;e.a167=927;e.a168=928;e.a169=928;e.a170=834;e.a171=873;e.a172=828;e.a173=924;e.a162=924;e.a174=917;e.a175=930;e.a176=931;e.a177=463;e.a178=883;e.a179=836;e.a193=836;e.a180=867;e.a199=867;e.a181=696;e.a200=696;e.a182=874;e.a201=874;e.a183=760;e.a184=946;e.a197=771;e.a185=865;e.a194=771;e.a198=888;e.a186=967;e.a195=888;e.a187=831;e.a188=873;e.a189=927;e.a190=970;e.a191=918}))}));t.getMetrics=n;const i=(0,r.getLookupTableFactory)((function(e){e.Courier={ascent:629,descent:-157,capHeight:562,xHeight:-426};e["Courier-Bold"]={ascent:629,descent:-157,capHeight:562,xHeight:439};e["Courier-Oblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e["Courier-BoldOblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e.Helvetica={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-Bold"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Helvetica-Oblique"]={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-BoldOblique"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Times-Roman"]={ascent:683,descent:-217,capHeight:662,xHeight:450};e["Times-Bold"]={ascent:683,descent:-217,capHeight:676,xHeight:461};e["Times-Italic"]={ascent:683,descent:-217,capHeight:653,xHeight:441};e["Times-BoldItalic"]={ascent:683,descent:-217,capHeight:669,xHeight:462};e.Symbol={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN};e.ZapfDingbats={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN}}));t.getFontBasicMetrics=i},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.GlyfTable=void 0;t.GlyfTable=class GlyfTable{constructor({glyfTable:e,isGlyphLocationsLong:t,locaTable:a,numGlyphs:r}){this.glyphs=[];const n=new DataView(a.buffer,a.byteOffset,a.byteLength),i=new DataView(e.buffer,e.byteOffset,e.byteLength),s=t?4:2;let o=t?n.getUint32(0):2*n.getUint16(0),c=0;for(let e=0;ee+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),a=e>131070,r=a?4:2,n=new DataView(new ArrayBuffer((this.glyphs.length+1)*r));a?n.setUint32(0,0):n.setUint16(0,0);let i=0,s=0;for(const e of this.glyphs){i+=e.write(i,t);i=i+3&-4;s+=r;a?n.setUint32(s,i):n.setUint16(s,i>>1)}return{isLocationLong:a,loca:new Uint8Array(n.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,a=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const a=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const a of this.composites)e+=a.write(e,t);return e-a}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const a of this.composites)a.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:a,xMax:r,yMax:n}){this.numberOfContours=e;this.xMin=t;this.yMin=a;this.xMax=r;this.yMax=n}static parse(e,t){return[10,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return 10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:a}){this.xCoordinates=t;this.yCoordinates=a;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,a){const r=[];for(let n=0;n255?e+=2:o>0&&(e+=1);t=i;o=Math.abs(s-a);o>255?e+=2:o>0&&(e+=1);a=s}}return e}write(e,t){const a=e,r=[],n=[],i=[];let s=0,o=0;for(const a of this.contours){for(let e=0,t=a.xCoordinates.length;e=0?18:2;r.push(e)}else r.push(l)}s=c;const h=a.yCoordinates[e];l=h-o;if(0===l){t|=32;n.push(0)}else{const e=Math.abs(l);if(e<=255){t|=l>=0?36:4;n.push(e)}else n.push(l)}o=h;i.push(t)}t.setUint16(e,r.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const a of i)t.setUint8(e++,a);for(let a=0,n=r.length;a=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const a=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(256&this.flags){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-a}scale(e,t){}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OpenTypeFileBuilder=void 0;var r=a(8),n=a(2);function writeInt16(e,t,a){e[t]=a>>8&255;e[t+1]=255&a}function writeInt32(e,t,a){e[t]=a>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}function writeData(e,t,a){if(a instanceof Uint8Array)e.set(a,t);else if("string"==typeof a)for(let r=0,n=a.length;ra;){a<<=1;r++}const n=a*t;return{range:n,entry:r,rangeShift:t*e-n}}toArray(){let e=this.sfnt;const t=this.tables,a=Object.keys(t);a.sort();const i=a.length;let s,o,c,l,h,u=12+16*i;const d=[u];for(s=0;s>>0;d.push(u)}const f=new Uint8Array(u);for(s=0;s>>0}writeInt32(f,u+4,e);writeInt32(f,u+8,d[s]);writeInt32(f,u+12,t[h].length);u+=16}return f}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}t.OpenTypeFileBuilder=OpenTypeFileBuilder},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Font=void 0;var r=a(45),n=a(18),i=a(8),s=a(10),o=a(55),c=a(2);function findBlock(e,t,a){const r=e.length,n=t.length,s=r-n;let o=a,c=!1;for(;o=n){o+=a;for(;o=0&&(r[e]=i)}}return(0,n.type1FontGlyphMapping)(e,r,a)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let a=0,r=e.length;a0;e--)t[e]-=t[e-1];g.setByName(e,t)}s.topDict.privateDict=g;const m=new r.CFFIndex;for(u=0,d=n.length;u{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Parser=void 0;var r=a(19),n=a(8),i=a(10),s=a(2);const o=function Type1CharStringClosure(){const e=[4],t=[5],a=[6],r=[7],n=[8],i=[12,35],o=[14],c=[21],l=[22],h=[30],u=[31];return class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(d,f,g){const p=d.length;let m,b,y,w=!1;for(let S=0;Sr)return!0;const n=r-e;for(let e=n;e>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push.apply(this.output,t);a?this.stack.splice(n,e):this.stack.length=0;return!1}}}(),c=function Type1ParserClosure(){function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,a){if(a>=e.length)return new Uint8Array(0);let r,n,i=0|t;for(r=0;r>8;i=52845*(t+i)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}return class Type1Parser{constructor(e,t,a){if(t){const t=e.getBytes(),a=!((isHexDigit(t[0])||(0,n.isWhiteSpace)(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new i.Stream(a?decrypt(t,55665,4):function decryptAscii(e,t,a){let r=0|t;const n=e.length,i=new Uint8Array(n>>>1);let s,o;for(s=0,o=0;s>8;r=52845*(e+r)+22719&65535}}return i.slice(a,o)}(t,55665,4))}this.seacAnalysisEnabled=!!a;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){this.stream.skip(-2);return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,n.isWhiteSpace)(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let a="";do{a+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!(0,n.isWhiteSpace)(t)&&!isSpecial(t));return a}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,a=[],r=[],n=Object.create(null);n.lenIV=4;const i={subrs:[],charstrings:[],properties:{privateData:n}};let s,c,l,h,u;for(;null!==(s=this.getToken());)if("/"===s){s=this.getToken();switch(s){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){s=this.getToken();if(null===s||"end"===s)break;if("/"!==s)continue;const e=this.getToken();c=this.readInt();this.getToken();l=c>0?t.getBytes(c):new Uint8Array(0);h=i.properties.privateData.lenIV;u=this.readCharStrings(l,h);this.nextChar();s=this.getToken();"noaccess"===s?this.getToken():"/"===s&&this.prevChar();r.push({glyph:e,encoded:u})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();c=this.readInt();this.getToken();l=c>0?t.getBytes(c):new Uint8Array(0);h=i.properties.privateData.lenIV;u=this.readCharStrings(l,h);this.nextChar();s=this.getToken();"noaccess"===s&&this.getToken();a[e]=u}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":i.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":i.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":case"ExpansionFactor":i.properties.privateData[s]=this.readNumber();break;case"ForceBold":i.properties.privateData[s]=this.readBoolean()}}for(let t=0;t-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=s.width)}}return i}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const a=this.readNumberArray();e.fontMatrix=a;break;case"Encoding":const n=this.getToken();let i;if(/^\d+$/.test(n)){i=[];const e=0|parseInt(n,10);this.getToken();for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.Pattern=void 0;t.getTilingPatternIR=function getTilingPatternIR(e,t,a){const n=t.getArray("Matrix"),i=r.Util.normalizeRect(t.getArray("BBox")),s=t.get("XStep"),o=t.get("YStep"),c=t.get("PaintType"),l=t.get("TilingType");if(i[2]-i[0]==0||i[3]-i[1]==0)throw new r.FormatError(`Invalid getTilingPatternIR /BBox array: [${i}].`);return["TilingPattern",a,e,n,i,s,o,c,l]};var r=a(2),n=a(9),i=a(24),s=a(8);const o=2,c=3,l=4,h=5,u=6,d=7;t.Pattern=class Pattern{constructor(){(0,r.unreachable)("Cannot initialize Pattern.")}static parseShading(e,t,a,i,f,g){const p=e instanceof n.BaseStream?e.dict:e,m=p.get("ShadingType");try{switch(m){case o:case c:return new RadialAxialShading(p,t,a,f,g);case l:case h:case u:case d:return new MeshShading(e,t,a,f,g);default:throw new r.FormatError("Unsupported ShadingType: "+m)}}catch(e){if(e instanceof s.MissingDataException)throw e;i.send("UnsupportedFeature",{featureId:r.UNSUPPORTED_FEATURES.shadingPattern});(0,r.warn)(e);return new DummyShading}}};class BaseShading{static get SMALL_NUMBER(){return(0,r.shadow)(this,"SMALL_NUMBER",1e-6)}constructor(){this.constructor===BaseShading&&(0,r.unreachable)("Cannot initialize BaseShading.")}getIR(){(0,r.unreachable)("Abstract method `getIR` called.")}}class RadialAxialShading extends BaseShading{constructor(e,t,a,n,s){super();this.coordsArr=e.getArray("Coords");this.shadingType=e.get("ShadingType");const o=i.ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:a,pdfFunctionFactory:n,localColorSpaceCache:s}),l=e.getArray("BBox");Array.isArray(l)&&4===l.length?this.bbox=r.Util.normalizeRect(l):this.bbox=null;let h=0,u=1;if(e.has("Domain")){const t=e.getArray("Domain");h=t[0];u=t[1]}let d=!1,f=!1;if(e.has("Extend")){const t=e.getArray("Extend");d=t[0];f=t[1]}if(!(this.shadingType!==c||d&&f)){const[e,t,a,n,i,s]=this.coordsArr,o=Math.hypot(e-n,t-i);a<=s+o&&s<=a+o&&(0,r.warn)("Unsupported radial gradient.")}this.extendStart=d;this.extendEnd=f;const g=e.getRaw("Function"),p=n.createFromArray(g),m=(u-h)/10,b=this.colorStops=[];if(h>=u||m<=0){(0,r.info)("Bad shading domain.");return}const y=new Float32Array(o.numComps),w=new Float32Array(1);let S;for(let e=0;e<=10;e++){w[0]=h+e*m;p(w,0,y,0);S=o.getRgb(y,0);const t=r.Util.makeHexColor(S[0],S[1],S[2]);b.push([e/10,t])}let x="transparent";if(e.has("Background")){S=o.getRgb(e.get("Background"),0);x=r.Util.makeHexColor(S[0],S[1],S[2])}if(!d){b.unshift([0,x]);b[1][0]+=BaseShading.SMALL_NUMBER}if(!f){b[b.length-1][0]-=BaseShading.SMALL_NUMBER;b.push([1,x])}this.colorStops=b}getIR(){const e=this.coordsArr,t=this.shadingType;let a,n,i,s,l;if(t===o){n=[e[0],e[1]];i=[e[2],e[3]];s=null;l=null;a="axial"}else if(t===c){n=[e[0],e[1]];i=[e[3],e[4]];s=e[2];l=e[5];a="radial"}else(0,r.unreachable)(`getPattern type unknown: ${t}`);return["RadialAxial",a,this.bbox,this.colorStops,n,i,s,l]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const a=t.numComps;this.tmpCompsBuf=new Float32Array(a);const r=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(r):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){let t=this.buffer,a=this.bufferLength;if(32===e){if(0===a)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();this.buffer=e&(1<>a)>>>0}if(8===e&&0===a)return this.stream.getByte();for(;a>a}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),a=this.readBits(e),r=this.context.decode,n=e<32?1/((1<i?i:e;t=t>s?s:t;a=a{Object.defineProperty(t,"__esModule",{value:!0});t.PostScriptEvaluator=t.PostScriptCompiler=t.PDFFunctionFactory=void 0;t.isPDFFunction=function isPDFFunction(e){let t;if("object"!=typeof e)return!1;if(e instanceof r.Dict)t=e;else{if(!(e instanceof s.BaseStream))return!1;t=e.dict}return t.has("FunctionType")};var r=a(5),n=a(2),i=a(58),s=a(9),o=a(59);t.PDFFunctionFactory=class PDFFunctionFactory{constructor({xref:e,isEvalSupported:t=!0}){this.xref=e;this.isEvalSupported=!1!==t}create(e){const t=this.getCached(e);if(t)return t;const a=PDFFunction.parse({xref:this.xref,isEvalSupported:this.isEvalSupported,fn:e instanceof r.Ref?this.xref.fetch(e):e});this._cache(e,a);return a}createFromArray(e){const t=this.getCached(e);if(t)return t;const a=PDFFunction.parseArray({xref:this.xref,isEvalSupported:this.isEvalSupported,fnObj:e instanceof r.Ref?this.xref.fetch(e):e});this._cache(e,a);return a}getCached(e){let t;e instanceof r.Ref?t=e:e instanceof r.Dict?t=e.objId:e instanceof s.BaseStream&&(t=e.dict&&e.dict.objId);if(t){const e=this._localFunctionCache.getByRef(t);if(e)return e}return null}_cache(e,t){if(!t)throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.');let a;e instanceof r.Ref?a=e:e instanceof r.Dict?a=e.objId:e instanceof s.BaseStream&&(a=e.dict&&e.dict.objId);a&&this._localFunctionCache.set(null,a,t)}get _localFunctionCache(){return(0,n.shadow)(this,"_localFunctionCache",new o.LocalFunctionCache)}};function toNumberArray(e){if(!Array.isArray(e))return null;const t=e.length;for(let a=0;a>c)*h;l&=(1<a?e=a:e0&&(d=o[u-1]);let f=r[1];u>1,d=s.length>>1,f=new PostScriptEvaluator(h),g=Object.create(null);let p=8192;const m=new Float32Array(d);return function constructPostScriptFn(e,t,a,r){let n,i,s="";const c=m;for(n=0;ne&&(i=e)}h[n]=i}if(p>0){p--;g[s]=h}a.set(h,r)}}}class PostScriptStack{static get MAX_STACK_SIZE(){return(0,n.shadow)(this,"MAX_STACK_SIZE",100)}constructor(e){this.stack=e?Array.prototype.slice.call(e,0):[]}push(e){if(this.stack.length>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let a=t.length-e,r=e-1;r>=0;r--,a++)t.push(t[a])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const a=this.stack,r=a.length-e,n=a.length-1,i=r+(t-Math.floor(t/e)*e);for(let e=r,t=n;e0?t.push(o<>c);break;case"ceiling":o=t.pop();t.push(Math.ceil(o));break;case"copy":o=t.pop();t.copy(o);break;case"cos":o=t.pop();t.push(Math.cos(o));break;case"cvi":o=0|t.pop();t.push(o);break;case"cvr":break;case"div":c=t.pop();o=t.pop();t.push(o/c);break;case"dup":t.copy(1);break;case"eq":c=t.pop();o=t.pop();t.push(o===c);break;case"exch":t.roll(2,1);break;case"exp":c=t.pop();o=t.pop();t.push(o**c);break;case"false":t.push(!1);break;case"floor":o=t.pop();t.push(Math.floor(o));break;case"ge":c=t.pop();o=t.pop();t.push(o>=c);break;case"gt":c=t.pop();o=t.pop();t.push(o>c);break;case"idiv":c=t.pop();o=t.pop();t.push(o/c|0);break;case"index":o=t.pop();t.index(o);break;case"le":c=t.pop();o=t.pop();t.push(o<=c);break;case"ln":o=t.pop();t.push(Math.log(o));break;case"log":o=t.pop();t.push(Math.log(o)/Math.LN10);break;case"lt":c=t.pop();o=t.pop();t.push(o=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}return class PostScriptCompiler{compile(e,t,a){const r=[],n=[],i=t.length>>1,s=a.length>>1;let o,c,l,h,u,d,f,g,p=0;for(let e=0;et.min){o.unshift("Math.max(",i,", ");o.push(")")}if(s{Object.defineProperty(t,"__esModule",{value:!0});t.PostScriptParser=t.PostScriptLexer=void 0;var r=a(2),n=a(5),i=a(8);t.PostScriptParser=class PostScriptParser{constructor(e){this.lexer=e;this.operators=[];this.token=null;this.prev=null}nextToken(){this.prev=this.token;this.token=this.lexer.getToken()}accept(e){if(this.token.type===e){this.nextToken();return!0}return!1}expect(e){if(this.accept(e))return!0;throw new r.FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`)}parse(){this.nextToken();this.expect(s.LBRACE);this.parseBlock();this.expect(s.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(s.NUMBER))this.operators.push(this.prev.value);else if(this.accept(s.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(s.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(s.RBRACE);if(this.accept(s.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(s.LBRACE))throw new r.FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const a=this.operators.length;this.parseBlock();this.expect(s.RBRACE);this.expect(s.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=a;this.operators[e+1]="jz"}}}};const s={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class PostScriptToken{static get opCache(){return(0,r.shadow)(this,"opCache",Object.create(null))}constructor(e,t){this.type=e;this.value=t}static getOperator(e){const t=PostScriptToken.opCache[e];return t||(PostScriptToken.opCache[e]=new PostScriptToken(s.OPERATOR,e))}static get LBRACE(){return(0,r.shadow)(this,"LBRACE",new PostScriptToken(s.LBRACE,"{"))}static get RBRACE(){return(0,r.shadow)(this,"RBRACE",new PostScriptToken(s.RBRACE,"}"))}static get IF(){return(0,r.shadow)(this,"IF",new PostScriptToken(s.IF,"IF"))}static get IFELSE(){return(0,r.shadow)(this,"IFELSE",new PostScriptToken(s.IFELSE,"IFELSE"))}}t.PostScriptLexer=class PostScriptLexer{constructor(e){this.stream=e;this.nextChar();this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return n.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,i.isWhiteSpace)(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(s.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const a=this.strBuf;a.length=0;a[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)a.push(String.fromCharCode(t));const r=a.join("");switch(r.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(r)}}getNumber(){let e=this.currentChar;const t=this.strBuf;t.length=0;t[0]=String.fromCharCode(e);for(;(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const a=parseFloat(t.join(""));if(isNaN(a))throw new r.FormatError(`Invalid floating point number: ${a}`);return a}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LocalTilingPatternCache=t.LocalImageCache=t.LocalGStateCache=t.LocalFunctionCache=t.LocalColorSpaceCache=t.GlobalImageCache=void 0;var r=a(2),n=a(5);class BaseLocalCache{constructor(e){this.constructor===BaseLocalCache&&(0,r.unreachable)("Cannot initialize BaseLocalCache.");this._onlyRefs=!0===(e&&e.onlyRefs);if(!this._onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new n.RefSetCache}getByName(e){this._onlyRefs&&(0,r.unreachable)("Should not call `getByName` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,a){(0,r.unreachable)("Abstract method `set` called.")}}t.LocalImageCache=class LocalImageCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalColorSpaceCache=class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,a){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalFunctionCache=class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};t.LocalGStateCache=class LocalGStateCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalTilingPatternCache=class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};class GlobalImageCache{static get NUM_PAGES_THRESHOLD(){return(0,r.shadow)(this,"NUM_PAGES_THRESHOLD",2)}static get MIN_IMAGES_TO_CACHE(){return(0,r.shadow)(this,"MIN_IMAGES_TO_CACHE",10)}static get MAX_BYTE_SIZE(){return(0,r.shadow)(this,"MAX_BYTE_SIZE",4e7)}constructor(){this._refCache=new n.RefSetCache;this._imageCache=new n.RefSetCache}get _byteSize(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get _cacheLimitReached(){return!(this._imageCache.size{Object.defineProperty(t,"__esModule",{value:!0});t.bidi=function bidi(e,t=-1,a=!1){let c=!0;const l=e.length;if(0===l||a)return createBidiText(e,c,a);s.length=l;o.length=l;let h,u,d=0;for(h=0;h4){c=!0;t=0}else{c=!1;t=1}const f=[];for(h=0;h=0&&"ET"===o[e];--e)o[e]="EN";for(let e=h+1;e0&&(t=o[h-1]);let a=m;e+1w&&isOdd(w)&&(x=w)}for(w=S;w>=x;--w){let e=-1;for(h=0,u=f.length;h=0){reverseValues(s,e,h);e=-1}}else e<0&&(e=h);e>=0&&reverseValues(s,e,f.length)}for(h=0,u=s.length;h"!==e||(s[h]="")}return createBidiText(s.join(""),c)};var r=a(2);const n=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],i=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function isOdd(e){return 0!=(1&e)}function isEven(e){return 0==(1&e)}function findUnequal(e,t,a){let r,n;for(r=t,n=e.length;r{Object.defineProperty(t,"__esModule",{value:!0});t.MurmurHash3_64=void 0;var r=a(2);const n=3285377520,i=4294901760,s=65535;t.MurmurHash3_64=class MurmurHash3_64{constructor(e){this.h1=e?4294967295&e:n;this.h2=e?4294967295&e:n}update(e){let t,a;if("string"==typeof e){t=new Uint8Array(2*e.length);a=0;for(let r=0,n=e.length;r>>8;t[a++]=255&n}}}else{if(!(0,r.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice();a=t.byteLength}const n=a>>2,o=a-4*n,c=new Uint32Array(t.buffer,0,n);let l=0,h=0,u=this.h1,d=this.h2;const f=3432918353,g=461845907,p=11601,m=13715;for(let e=0;e>>17;l=l*g&i|l*m&s;u^=l;u=u<<13|u>>>19;u=5*u+3864292196}else{h=c[e];h=h*f&i|h*p&s;h=h<<15|h>>>17;h=h*g&i|h*m&s;d^=h;d=d<<13|d>>>19;d=5*d+3864292196}l=0;switch(o){case 3:l^=t[4*n+2]<<16;case 2:l^=t[4*n+1]<<8;case 1:l^=t[4*n];l=l*f&i|l*p&s;l=l<<15|l>>>17;l=l*g&i|l*m&s;1&n?u^=l:d^=l}this.h1=u;this.h2=d}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&i|36045*e&s;t=4283543511*t&i|(2950163797*(t<<16|e>>>16)&i)>>>16;e^=t>>>1;e=444984403*e&i|60499*e&s;t=3301882366*t&i|(3120437893*(t<<16|e>>>16)&i)>>>16;e^=t>>>1;const a=(e>>>0).toString(16),r=(t>>>0).toString(16);return a.padStart(8,"0")+r.padStart(8,"0")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OperatorList=void 0;var r=a(2);function addState(e,t,a,r,n){let i=e;for(let e=0,a=t.length-1;e1e3){h=Math.max(h,f);g+=d+2;f=0;d=0}u.push({transform:t,x:f,y:g,w:a.width,h:a.height});f+=a.width+2;d=Math.max(d,a.height)}const p=Math.max(h,f)+1,m=g+d+1,b=new Uint8Array(p*m*4),y=p<<2;for(let e=0;e=0;){t[i-4]=t[i];t[i-3]=t[i+1];t[i-2]=t[i+2];t[i-1]=t[i+3];t[i+a]=t[i+a-4];t[i+a+1]=t[i+a-3];t[i+a+2]=t[i+a-2];t[i+a+3]=t[i+a-1];i-=y}}a.splice(s,4*l,r.OPS.paintInlineImageXObjectGroup);n.splice(s,4*l,[{width:p,height:m,kind:r.ImageKind.RGBA_32BPP,data:b},u]);return s+1}));addState(n,[r.OPS.save,r.OPS.transform,r.OPS.paintImageMaskXObject,r.OPS.restore],null,(function iterateImageMaskGroup(e,t){const a=e.fnArray,n=(t-(e.iCurr-3))%4;switch(n){case 0:return a[t]===r.OPS.save;case 1:return a[t]===r.OPS.transform;case 2:return a[t]===r.OPS.paintImageMaskXObject;case 3:return a[t]===r.OPS.restore}throw new Error(`iterateImageMaskGroup - invalid pos: ${n}`)}),(function foundImageMaskGroup(e,t){const a=e.fnArray,n=e.argsArray,i=e.iCurr,s=i-3,o=i-2,c=i-1;let l=Math.floor((t-s)/4);if(l<10)return t-(t-s)%4;let h,u,d=!1;const f=n[c][0],g=n[o][0],p=n[o][1],m=n[o][2],b=n[o][3];if(p===m){d=!0;h=o+4;let e=c+4;for(let t=1;t=4&&a[i-4]===a[s]&&a[i-3]===a[o]&&a[i-2]===a[c]&&a[i-1]===a[l]&&r[i-4][0]===h&&r[i-4][1]===u){d++;f-=5}let g=f+4;for(let e=1;e=a)break}r=(r||n)[e[t]];if(r&&!Array.isArray(r)){s.iCurr=t;t++;if(!r.checkFn||(0,r.checkFn)(s)){i=r;r=null}else r=null}else t++}this.state=r;this.match=i;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static get CHUNK_SIZE(){return(0,r.shadow)(this,"CHUNK_SIZE",1e3)}static get CHUNK_SIZE_ABOUT(){return(0,r.shadow)(this,"CHUNK_SIZE_ABOUT",this.CHUNK_SIZE-5)}constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];!t||e&r.RenderingIntentFlag.OPLIST?this.optimizer=new NullOptimizer(this):this.optimizer=new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===r.OPS.restore||e===r.OPS.endText))&&this.flush()}addImageOps(e,t,a){void 0!==a&&this.addOp(r.OPS.beginMarkedContentProps,["OC",a]);this.addOp(e,t);void 0!==a&&this.addOp(r.OPS.endMarkedContent,[])}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(r.OPS.dependency,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,a=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.PDFImage=void 0;var r=a(2),n=a(64),i=a(9),s=a(24),o=a(29),c=a(37),l=a(40),h=a(5);function decodeAndClamp(e,t,a,r){(e=t+e*a)<0?e=0:e>r&&(e=r);return e}function resizeImageMask(e,t,a,r,n,i){const s=n*i;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=a/n,l=r/i;let h,u,d,f,g=0;const p=new Uint16Array(n),m=a;for(h=0;h0&&Number.isInteger(a.height)&&a.height>0&&(a.width!==m||a.height!==b)){(0,r.warn)("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");m=a.width;b=a.height}if(m<1||b<1)throw new r.FormatError(`Invalid image width: ${m} or height: ${b}`);this.width=m;this.height=b;this.interpolate=g.get("I","Interpolate");this.imageMask=g.get("IM","ImageMask")||!1;this.matte=g.get("Matte")||!1;let y=a.bitsPerComponent;if(!y){y=g.get("BPC","BitsPerComponent");if(!y){if(!this.imageMask)throw new r.FormatError(`Bits per component missing in image: ${this.imageMask}`);y=1}}this.bpc=y;if(!this.imageMask){let i=g.getRaw("CS")||g.getRaw("ColorSpace");if(!i){(0,r.info)("JPX images (which do not require color spaces)");switch(a.numComps){case 1:i=h.Name.get("DeviceGray");break;case 3:i=h.Name.get("DeviceRGB");break;case 4:i=h.Name.get("DeviceCMYK");break;default:throw new Error(`JPX images with ${a.numComps} color components not supported.`)}}this.colorSpace=s.ColorSpace.parse({cs:i,xref:e,resources:n?t:null,pdfFunctionFactory:d,localColorSpaceCache:f});this.numComps=this.colorSpace.numComps}this.decode=g.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,y)||u&&!s.ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<>3)*a,o=e.byteLength;let c,l;if(!r||n&&!(s===o))if(n){c=new Uint8Array(s);c.set(e);c.fill(255,o)}else c=new Uint8Array(e);else c=e;if(n)for(l=0;l>7&1;s[d+1]=u>>6&1;s[d+2]=u>>5&1;s[d+3]=u>>4&1;s[d+4]=u>>3&1;s[d+5]=u>>2&1;s[d+6]=u>>1&1;s[d+7]=1&u;d+=8}if(d>=1}}}}else{let a=0;u=0;for(d=0,h=i;d>r;n<0?n=0:n>l&&(n=l);s[d]=n;u&=(1<o[r+1]){t=255;break}}c[u]=t}}}if(c)for(u=0,f=3,d=t*n;u>3;if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===l?e=r.ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==l||this.needsDecode||(e=r.ImageKind.RGB_24BPP);if(e&&!this.smask&&!this.mask&&t===s&&a===o){n.kind=e;n.data=this.getImageBytes(o*h,{});if(this.needsDecode){(0,r.assert)(e===r.ImageKind.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const t=n.data;for(let e=0,a=t.length;e>3,o=this.getImageBytes(n*s,{internal:!0}),c=this.getComponents(o);let l,h;if(1===i){h=a*n;if(this.needsDecode)for(l=0;l{Object.defineProperty(t,"__esModule",{value:!0});t.applyMaskImageData=function applyMaskImageData({src:e,srcPos:t=0,dest:a,destPos:n=0,width:i,height:s,inverseDecode:o=!1}){const c=r.FeatureTest.isLittleEndian?4278190080:255,[l,h]=o?[0,c]:[c,0],u=i>>3,d=7&i,f=e.length;a=new Uint32Array(a.buffer);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0});t.Catalog=void 0;var r=a(8),n=a(2),i=a(5),s=a(66),o=a(9),c=a(67),l=a(24),h=a(68),u=a(59),d=a(69),f=a(71);function fetchDestination(e){e instanceof i.Dict&&(e=e.get("D"));return Array.isArray(e)?e:null}class Catalog{constructor(e,t){this.pdfManager=e;this.xref=t;this._catDict=t.getCatalogObj();if(!(this._catDict instanceof i.Dict))throw new n.FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict;this._actualNumPages=null;this.fontCache=new i.RefSetCache;this.builtInCMapCache=new Map;this.standardFontDataCache=new Map;this.globalImageCache=new u.GlobalImageCache;this.pageKidsCountCache=new i.RefSetCache;this.pageIndexCache=new i.RefSetCache;this.nonBlendModesSet=new i.RefSet}get version(){const e=this._catDict.get("Version");return(0,n.shadow)(this,"version",e instanceof i.Name?e.name:null)}get lang(){const e=this._catDict.get("Lang");return(0,n.shadow)(this,"lang","string"==typeof e?(0,n.stringToPDFString)(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return(0,n.shadow)(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)("Cannot fetch Collection entry; assuming no collection is present.")}return(0,n.shadow)(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)("Cannot fetch AcroForm entry; assuming no forms are present.")}return(0,n.shadow)(this,"acroForm",e)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return(0,n.shadow)(this,"acroFormRef",e instanceof i.Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof i.Ref))return(0,n.shadow)(this,"metadata",null);let t=null;try{const a=!(this.xref.encrypt&&this.xref.encrypt.encryptMetadata),r=this.xref.fetch(e,a);if(r instanceof o.BaseStream&&r.dict instanceof i.Dict){const e=r.dict.get("Type"),a=r.dict.get("Subtype");if((0,i.isName)(e,"Metadata")&&(0,i.isName)(a,"XML")){const e=(0,n.stringToUTF8String)(r.getString());e&&(t=new d.MetadataParser(e).serializable)}}}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)(`Skipping invalid Metadata: "${e}".`)}return(0,n.shadow)(this,"metadata",t)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read mark info.")}return(0,n.shadow)(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof i.Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const a in t){const r=e.get(a);"boolean"==typeof r&&(t[a]=r)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable read to structTreeRoot info.")}return(0,n.shadow)(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.get("StructTreeRoot");if(!(e instanceof i.Dict))return null;const t=new f.StructTreeRoot(e);t.init();return t}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(e instanceof i.Dict))throw new n.FormatError("Invalid top-level pages dictionary.");return(0,n.shadow)(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read document outline.")}return(0,n.shadow)(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof i.Dict))return null;e=e.getRaw("First");if(!(e instanceof i.Ref))return null;const t={items:[]},a=[{obj:e,parent:t}],r=new i.RefSet;r.put(e);const s=this.xref,o=new Uint8ClampedArray(3);for(;a.length>0;){const t=a.shift(),c=s.fetchIfRef(t.obj);if(null===c)continue;if(!c.has("Title"))throw new n.FormatError("Invalid outline item encountered.");const h={url:null,dest:null};Catalog.parseDestDictionary({destDict:c,resultObj:h,docBaseUrl:this.pdfManager.docBaseUrl});const u=c.get("Title"),d=c.get("F")||0,f=c.getArray("C"),g=c.get("Count");let p=o;!Array.isArray(f)||3!==f.length||0===f[0]&&0===f[1]&&0===f[2]||(p=l.ColorSpace.singletons.rgb.getRgb(f,0));const m={dest:h.dest,url:h.url,unsafeUrl:h.unsafeUrl,newWindow:h.newWindow,title:(0,n.stringToPDFString)(u),color:p,count:Number.isInteger(g)?g:void 0,bold:!!(2&d),italic:!!(1&d),items:[]};t.parent.items.push(m);e=c.getRaw("First");if(e instanceof i.Ref&&!r.has(e)){a.push({obj:e,parent:m});r.put(e)}e=c.getRaw("Next");if(e instanceof i.Ref&&!r.has(e)){a.push({obj:e,parent:t.parent});r.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read permissions.")}return(0,n.shadow)(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof i.Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const a=[];for(const e in n.PermissionFlag){const r=n.PermissionFlag[e];t&r&&a.push(r)}return a}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return(0,n.shadow)(this,"optionalContentConfig",null);const a=t.get("D");if(!a)return(0,n.shadow)(this,"optionalContentConfig",null);const r=t.get("OCGs");if(!Array.isArray(r))return(0,n.shadow)(this,"optionalContentConfig",null);const s=[],o=[];for(const e of r){if(!(e instanceof i.Ref))continue;o.push(e);const t=this.xref.fetchIfRef(e);s.push({id:e.toString(),name:"string"==typeof t.get("Name")?(0,n.stringToPDFString)(t.get("Name")):null,intent:"string"==typeof t.get("Intent")?(0,n.stringToPDFString)(t.get("Intent")):null})}e=this._readOptionalContentConfig(a,o);e.groups=s}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)(`Unable to read optional content config: ${e}`)}return(0,n.shadow)(this,"optionalContentConfig",e)}_readOptionalContentConfig(e,t){function parseOnOff(e){const a=[];if(Array.isArray(e))for(const r of e)r instanceof i.Ref&&t.includes(r)&&a.push(r.toString());return a}function parseOrder(e,a=0){if(!Array.isArray(e))return null;const n=[];for(const s of e){if(s instanceof i.Ref&&t.includes(s)){r.put(s);n.push(s.toString());continue}const e=parseNestedOrder(s,a);e&&n.push(e)}if(a>0)return n;const s=[];for(const e of t)r.has(e)||s.push(e.toString());s.length&&n.push({name:null,order:s});return n}function parseNestedOrder(e,t){if(++t>s){(0,n.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const r=a.fetchIfRef(e);if(!Array.isArray(r))return null;const i=a.fetchIfRef(r[0]);if("string"!=typeof i)return null;const o=parseOrder(r.slice(1),t);return o&&o.length?{name:(0,n.stringToPDFString)(i),order:o}:null}const a=this.xref,r=new i.RefSet,s=10;return{name:"string"==typeof e.get("Name")?(0,n.stringToPDFString)(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?(0,n.stringToPDFString)(e.get("Creator")):null,baseState:e.get("BaseState")instanceof i.Name?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:null}}setActualNumPages(e=null){this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new n.FormatError("Page count in top-level pages dictionary is not an integer.");return(0,n.shadow)(this,"_pagesCount",e)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof s.NameTree)for(const[a,r]of e.getAll()){const e=fetchDestination(r);e&&(t[(0,n.stringToPDFString)(a)]=e)}else e instanceof i.Dict&&e.forEach((function(e,a){const r=fetchDestination(a);r&&(t[e]=r)}));return(0,n.shadow)(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof s.NameTree){const a=fetchDestination(t.get(e));if(a)return a;const r=this.destinations[e];if(r){(0,n.warn)(`Found "${e}" at an incorrect position in the NameTree.`);return r}}else if(t instanceof i.Dict){const a=fetchDestination(t.get(e));if(a)return a}return null}_readDests(){const e=this._catDict.get("Names");return e&&e.has("Dests")?new s.NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read page labels.")}return(0,n.shadow)(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let a=null,o="";const c=new s.NumberTree(e,this.xref).getAll();let l="",h=1;for(let e=0,s=this.numPages;e=1))throw new n.FormatError("Invalid start in PageLabel dictionary.");h=e}else h=1}switch(a){case"D":l=h;break;case"R":case"r":l=(0,r.toRomanNumerals)(h,"r"===a);break;case"A":case"a":const e=26,t=65,i=97,s="a"===a?i:t,o=h-1;l=String.fromCharCode(s+o%e).repeat(Math.floor(o/e)+1);break;default:if(a)throw new n.FormatError(`Invalid style "${a}" in PageLabel dictionary.`);l=""}t[e]=o+l;h++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if(e instanceof i.Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return(0,n.shadow)(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if(e instanceof i.Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return(0,n.shadow)(this,"pageMode",t)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof i.Dict))return(0,n.shadow)(this,"viewerPreferences",null);let t=null;for(const a of e.getKeys()){const r=e.get(a);let s;switch(a){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof r&&(s=r);break;case"NonFullScreenPageMode":if(r instanceof i.Name)switch(r.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":s=r.name;break;default:s="UseNone"}break;case"Direction":if(r instanceof i.Name)switch(r.name){case"L2R":case"R2L":s=r.name;break;default:s="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(r instanceof i.Name)switch(r.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":s=r.name;break;default:s="CropBox"}break;case"PrintScaling":if(r instanceof i.Name)switch(r.name){case"None":case"AppDefault":s=r.name;break;default:s="AppDefault"}break;case"Duplex":if(r instanceof i.Name)switch(r.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":s=r.name;break;default:s="None"}break;case"PrintPageRange":if(Array.isArray(r)&&r.length%2==0){r.every(((e,t,a)=>Number.isInteger(e)&&e>0&&(0===t||e>=a[t-1])&&e<=this.numPages))&&(s=r)}break;case"NumCopies":Number.isInteger(r)&&r>0&&(s=r);break;default:(0,n.warn)(`Ignoring non-standard key in ViewerPreferences: ${a}.`);continue}if(void 0!==s){t||(t=Object.create(null));t[a]=s}else(0,n.warn)(`Bad value, for key "${a}", in ViewerPreferences: ${r}.`)}return(0,n.shadow)(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof i.Dict){const a=new i.Dict(this.xref);a.set("A",e);const r={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:a,resultObj:r});Array.isArray(r.dest)?t.dest=r.dest:r.action&&(t.action=r.action)}else Array.isArray(e)&&(t.dest=e);return(0,n.shadow)(this,"openAction",(0,n.objectSize)(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("EmbeddedFiles")){const a=new s.NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,r]of a.getAll()){const a=new h.FileSpec(r,this.xref);t||(t=Object.create(null));t[(0,n.stringToPDFString)(e)]=a.serializable}}return(0,n.shadow)(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("XFAImages")){const a=new s.NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,r]of a.getAll()){t||(t=new i.Dict(this.xref));t.set((0,n.stringToPDFString)(e),r)}}return(0,n.shadow)(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function appendIfJavaScriptDict(e,a){if(!(a instanceof i.Dict))return;if(!(0,i.isName)(a.get("S"),"JavaScript"))return;let r=a.get("JS");if(r instanceof o.BaseStream)r=r.getString();else if("string"!=typeof r)return;null===t&&(t=new Map);t.set(e,(0,n.stringToPDFString)(r))}if(e instanceof i.Dict&&e.has("JavaScript")){const t=new s.NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,a]of t.getAll())appendIfJavaScriptDict((0,n.stringToPDFString)(e),a)}const a=this._catDict.get("OpenAction");a&&appendIfJavaScriptDict("OpenAction",a);return t}get javaScript(){const e=this._collectJavaScript();return(0,n.shadow)(this,"javaScript",e?[...e.values()]:null)}get jsActions(){const e=this._collectJavaScript();let t=(0,r.collectActions)(this.xref,this._catDict,n.DocumentActionEventType);if(e){t||(t=Object.create(null));for(const[a,r]of e)a in t?t[a].push(r):t[a]=[r]}return(0,n.shadow)(this,"jsActions",t)}async fontFallback(e,t){const a=await Promise.all(this.fontCache);for(const r of a)if(r.loadedName===e){r.fallback(t);return}}async cleanup(e=!1){(0,c.clearGlobalCaches)();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],a=new i.RefSet,r=this._catDict.getRaw("Pages");r instanceof i.Ref&&a.put(r);const s=this.xref,o=this.pageKidsCountCache,c=this.pageIndexCache;let l=0;for(;t.length;){const r=t.pop();if(r instanceof i.Ref){const h=o.get(r);if(h>=0&&l+h<=e){l+=h;continue}if(a.has(r))throw new n.FormatError("Pages tree contains circular reference.");a.put(r);const u=await s.fetchAsync(r);if(u instanceof i.Dict){let t=u.getRaw("Type");t instanceof i.Ref&&(t=await s.fetchAsync(t));if((0,i.isName)(t,"Page")||!u.has("Kids")){o.has(r)||o.put(r,1);c.has(r)||c.put(r,l);if(l===e)return[u,r];l++;continue}}t.push(u);continue}if(!(r instanceof i.Dict))throw new n.FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:h}=r;let u=r.getRaw("Count");u instanceof i.Ref&&(u=await s.fetchAsync(u));if(Number.isInteger(u)&&u>=0){h&&!o.has(h)&&o.put(h,u);if(l+u<=e){l+=u;continue}}let d=r.getRaw("Kids");d instanceof i.Ref&&(d=await s.fetchAsync(d));if(!Array.isArray(d)){let t=r.getRaw("Type");t instanceof i.Ref&&(t=await s.fetchAsync(t));if((0,i.isName)(t,"Page")||!r.has("Kids")){if(l===e)return[r,null];l++;continue}throw new n.FormatError("Page dictionary kids object is not an array.")}for(let e=d.length-1;e>=0;e--)t.push(d[e])}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const t=[{currentNode:this.toplevelPagesDict,posInKids:0}],a=new i.RefSet,s=this._catDict.getRaw("Pages");s instanceof i.Ref&&a.put(s);const o=new Map,c=this.xref,l=this.pageIndexCache;let h=0;function addPageDict(e,t){t&&!l.has(t)&&l.put(t,h);o.set(h++,[e,t])}function addPageError(t){if(t instanceof r.XRefEntryException&&!e)throw t;o.set(h++,[t,null])}for(;t.length>0;){const e=t[t.length-1],{currentNode:r,posInKids:s}=e;let o=r.getRaw("Kids");if(o instanceof i.Ref)try{o=await c.fetchAsync(o)}catch(e){addPageError(e);break}if(!Array.isArray(o)){addPageError(new n.FormatError("Page dictionary kids object is not an array."));break}if(s>=o.length){t.pop();continue}const l=o[s];let h;if(l instanceof i.Ref){if(a.has(l)){addPageError(new n.FormatError("Pages tree contains circular reference."));break}a.put(l);try{h=await c.fetchAsync(l)}catch(e){addPageError(e);break}}else h=l;if(!(h instanceof i.Dict)){addPageError(new n.FormatError("Page dictionary kid reference points to wrong type of object."));break}let u=h.getRaw("Type");if(u instanceof i.Ref)try{u=await c.fetchAsync(u)}catch(e){addPageError(e);break}(0,i.isName)(u,"Page")||!h.has("Kids")?addPageDict(h,l instanceof i.Ref?l:null):t.push({currentNode:h,posInKids:0});e.posInKids++}return o}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const a=this.xref;let r=0;const next=t=>function pagesBeforeRef(t){let r,s=0;return a.fetchAsync(t).then((function(a){if((0,i.isRefsEqual)(t,e)&&!(0,i.isDict)(a,"Page")&&!(a instanceof i.Dict&&!a.has("Type")&&a.has("Contents")))throw new n.FormatError("The reference does not point to a /Page dictionary.");if(!a)return null;if(!(a instanceof i.Dict))throw new n.FormatError("Node must be a dictionary.");r=a.getRaw("Parent");return a.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof i.Dict))throw new n.FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const o=[];let c=!1;for(let r=0,l=e.length;r{if(!t){this.pageIndexCache.put(e,r);return r}const[a,n]=t;r+=a;return next(n)}));return next(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof i.Dict){const t=e.get("Base");if("string"==typeof t){const e=(0,n.createValidAbsoluteUrl)(t,null,{tryConvertEncoding:!0});if(e)return(0,n.shadow)(this,"baseUrl",e.href)}}return(0,n.shadow)(this,"baseUrl",null)}static parseDestDictionary(e){const t=e.destDict;if(!(t instanceof i.Dict)){(0,n.warn)("parseDestDictionary: `destDict` must be a dictionary.");return}const a=e.resultObj;if("object"!=typeof a){(0,n.warn)("parseDestDictionary: `resultObj` must be an object.");return}const s=e.docBaseUrl||null;let c,l,h=t.get("A");if(!(h instanceof i.Dict))if(t.has("Dest"))h=t.get("Dest");else{h=t.get("AA");h instanceof i.Dict&&(h.has("D")?h=h.get("D"):h.has("U")&&(h=h.get("U")))}if(h instanceof i.Dict){const e=h.get("S");if(!(e instanceof i.Name)){(0,n.warn)("parseDestDictionary: Invalid type in Action dictionary.");return}const t=e.name;switch(t){case"ResetForm":const e=h.get("Flags"),s=0==(1&("number"==typeof e?e:0)),u=[],d=[];for(const e of h.get("Fields")||[])e instanceof i.Ref?d.push(e.toString()):"string"==typeof e&&u.push((0,n.stringToPDFString)(e));a.resetForm={fields:u,refs:d,include:s};break;case"URI":c=h.get("URI");c instanceof i.Name&&(c="/"+c.name);break;case"GoTo":l=h.get("D");break;case"Launch":case"GoToR":const f=h.get("F");f instanceof i.Dict?c=f.get("F")||null:"string"==typeof f&&(c=f);let g=h.get("D");if(g){g instanceof i.Name&&(g=g.name);if("string"==typeof c){const e=c.split("#")[0];"string"==typeof g?c=e+"#"+g:Array.isArray(g)&&(c=e+"#"+JSON.stringify(g))}}const p=h.get("NewWindow");"boolean"==typeof p&&(a.newWindow=p);break;case"Named":const m=h.get("N");m instanceof i.Name&&(a.action=m.name);break;case"JavaScript":const b=h.get("JS");let y;b instanceof o.BaseStream?y=b.getString():"string"==typeof b&&(y=b);const w=y&&(0,r.recoverJsURL)((0,n.stringToPDFString)(y));if(w){c=w.url;a.newWindow=w.newWindow;break}default:if("JavaScript"===t||"SubmitForm"===t)break;(0,n.warn)(`parseDestDictionary - unsupported action: "${t}".`)}}else t.has("Dest")&&(l=t.get("Dest"));if("string"==typeof c){const e=(0,n.createValidAbsoluteUrl)(c,s,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(a.url=e.href);a.unsafeUrl=c}if(l){l instanceof i.Name&&(l=l.name);"string"==typeof l?a.dest=(0,n.stringToPDFString)(l):Array.isArray(l)&&(a.dest=l)}}}t.Catalog=Catalog},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NumberTree=t.NameTree=void 0;var r=a(5),n=a(2);class NameOrNumberTree{constructor(e,t,a){this.constructor===NameOrNumberTree&&(0,n.unreachable)("Cannot initialize NameOrNumberTree.");this.root=e;this.xref=t;this._type=a}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,a=new r.RefSet;a.put(this.root);const i=[this.root];for(;i.length>0;){const s=t.fetchIfRef(i.shift());if(!(s instanceof r.Dict))continue;if(s.has("Kids")){const e=s.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(a.has(t))throw new n.FormatError(`Duplicate entry in "${this._type}" tree.`);i.push(t);a.put(t)}continue}const o=s.get(this._type);if(Array.isArray(o))for(let a=0,r=o.length;a10){(0,n.warn)(`Search depth limit reached for "${this._type}" tree.`);return null}const i=a.get("Kids");if(!Array.isArray(i))return null;let s=0,o=i.length-1;for(;s<=o;){const r=s+o>>1,n=t.fetchIfRef(i[r]),c=n.get("Limits");if(et.fetchIfRef(c[1]))){a=n;break}s=r+1}}if(s>o)return null}const i=a.get(this._type);if(Array.isArray(i)){let a=0,r=i.length-2;for(;a<=r;){const n=a+r>>1,s=n+(1&n),o=t.fetchIfRef(i[s]);if(eo))return t.fetchIfRef(i[s+1]);a=s+2}}}return null}}t.NameTree=class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}};t.NumberTree=class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.clearGlobalCaches=function clearGlobalCaches(){(0,r.clearPrimitiveCaches)();(0,n.clearUnicodeCaches)()};var r=a(5),n=a(21)},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FileSpec=void 0;var r=a(2),n=a(9),i=a(5);function pickPlatformItem(e){return e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null}t.FileSpec=class FileSpec{constructor(e,t){if(e instanceof i.Dict){this.xref=t;this.root=e;e.has("FS")&&(this.fs=e.get("FS"));this.description=e.has("Desc")?(0,r.stringToPDFString)(e.get("Desc")):"";e.has("RF")&&(0,r.warn)("Related file specifications are not supported");this.contentAvailable=!0;if(!e.has("EF")){this.contentAvailable=!1;(0,r.warn)("Non-embedded file specifications are not supported")}}}get filename(){if(!this._filename&&this.root){const e=pickPlatformItem(this.root)||"unnamed";this._filename=(0,r.stringToPDFString)(e).replace(/\\\\/g,"\\").replace(/\\\//g,"/").replace(/\\/g,"/")}return this._filename}get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=pickPlatformItem(this.root.get("EF")));let e=null;if(this.contentRef){const t=this.xref.fetchIfRef(this.contentRef);t instanceof n.BaseStream?e=t.getBytes():(0,r.warn)("Embedded file specification points to non-existing/invalid content")}else(0,r.warn)("Embedded file specification does not have a content");return e}get serializable(){return{filename:this.filename,content:this.content}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MetadataParser=void 0;var r=a(70);t.MetadataParser=class MetadataParser{constructor(e){e=this._repair(e);const t=new r.SimpleXMLParser({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map;this._data=e;t&&this._parse(t)}_repair(e){return e.replace(/^[^<]+/,"").replace(/>\\376\\377([^<]+)/g,(function(e,t){const a=t.replace(/\\([0-3])([0-7])([0-7])/g,(function(e,t,a,r){return String.fromCharCode(64*t+8*a+1*r)})).replace(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)})),r=[];for(let e=0,t=a.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?r.push(String.fromCharCode(t)):r.push("&#x"+(65536+t).toString(16).substring(1)+";")}return">"+r.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,a=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,a.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XMLParserErrorCode=t.XMLParserBase=t.SimpleXMLParser=t.SimpleDOMNode=void 0;var r=a(8);const n={NoError:0,EndOfDocument:-1,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,OutOfMemory:-7,UnterminatedAttributeValue:-8,UnterminatedElement:-9,ElementNeverBegun:-10};t.XMLParserErrorCode=n;function isWhitespace(e,t){const a=e[t];return" "===a||"\n"===a||"\r"===a||"\t"===a}class XMLParserBase{_resolveEntities(e){return e.replace(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const a=[];let r=t;function skipWs(){for(;r"!==e[r]&&"/"!==e[r];)++r;const n=e.substring(t,r);skipWs();for(;r"!==e[r]&&"/"!==e[r]&&"?"!==e[r];){skipWs();let t="",n="";for(;r"!==e[a]&&"?"!==e[a]&&"/"!==e[a];)++a;const r=e.substring(t,a);!function skipWs(){for(;a"!==e[a+1]);)++a;return{name:r,value:e.substring(n,a),parsed:a-t}}parseXml(e){let t=0;for(;t",a);if(t<0){this.onError(n.UnterminatedElement);return}this.onEndElement(e.substring(a,t));a=t+1;break;case"?":++a;const r=this._parseProcessingInstruction(e,a);if("?>"!==e.substring(a+r.parsed,a+r.parsed+2)){this.onError(n.UnterminatedXmlDeclaration);return}this.onPi(r.name,r.value);a+=r.parsed+2;break;case"!":if("--"===e.substring(a+1,a+3)){t=e.indexOf("--\x3e",a+3);if(t<0){this.onError(n.UnterminatedComment);return}this.onComment(e.substring(a+3,t));a=t+3}else if("[CDATA["===e.substring(a+1,a+8)){t=e.indexOf("]]>",a+8);if(t<0){this.onError(n.UnterminatedCdat);return}this.onCdata(e.substring(a+8,t));a=t+3}else{if("DOCTYPE"!==e.substring(a+1,a+8)){this.onError(n.MalformedElement);return}{const r=e.indexOf("[",a+8);let i=!1;t=e.indexOf(">",a+8);if(t<0){this.onError(n.UnterminatedDoctypeDeclaration);return}if(r>0&&t>r){t=e.indexOf("]>",a+8);if(t<0){this.onError(n.UnterminatedDoctypeDeclaration);return}i=!0}const s=e.substring(a+8,t+(i?1:0));this.onDoctype(s);a=t+(i?2:1)}}break;default:const i=this._parseContent(e,a);if(null===i){this.onError(n.MalformedElement);return}let s=!1;if("/>"===e.substring(a+i.parsed,a+i.parsed+2))s=!0;else if(">"!==e.substring(a+i.parsed,a+i.parsed+1)){this.onError(n.UnterminatedElement);return}this.onBeginElement(i.name,i.attributes,s);a+=i.parsed+(s?2:1)}}else{for(;a0}searchNode(e,t){if(t>=e.length)return this;const a=e[t],r=[];let n=this;for(;;){if(a.name===n.nodeName){if(0!==a.pos){if(0===r.length)return null;{const[i]=r.pop();let s=0;for(const r of i.childNodes)if(a.name===r.nodeName){if(s===a.pos)return r.searchNode(e,t+1);s++}return n.searchNode(e,t+1)}}{const a=n.searchNode(e,t+1);if(null!==a)return a}}if(n.childNodes&&0!==n.childNodes.length){r.push([n,0]);n=n.childNodes[0]}else{if(0===r.length)return null;for(;0!==r.length;){const[e,t]=r.pop(),a=t+1;if(a");for(const t of this.childNodes)t.dump(e);e.push(``)}else this.nodeValue?e.push(`>${(0,r.encodeToXmlString)(this.nodeValue)}`):e.push("/>")}else e.push((0,r.encodeToXmlString)(this.nodeValue))}}t.SimpleDOMNode=SimpleDOMNode;t.SimpleXMLParser=class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=n.NoError;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=n.NoError;this.parseXml(e);if(this._errorCode!==n.NoError)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,a=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.StructTreeRoot=t.StructTreePage=void 0;var r=a(5),n=a(2),i=a(66);const s="PAGE_CONTENT",o="STREAM_CONTENT",c="OBJECT",l="ELEMENT";t.StructTreeRoot=class StructTreeRoot{constructor(e){this.dict=e;this.roleMap=new Map}init(){this.readRoleMap()}readRoleMap(){const e=this.dict.get("RoleMap");e instanceof r.Dict&&e.forEach(((e,t)=>{t instanceof r.Name&&this.roleMap.set(e,t.name)}))}};class StructElementNode{constructor(e,t){this.tree=e;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof r.Name?e.name:"",{root:a}=this.tree;return a.roleMap.has(t)?a.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof r.Ref&&(e=t.toString());const a=this.dict.get("K");if(Array.isArray(a))for(const t of a){const a=this.parseKid(e,t);a&&this.kids.push(a)}else{const t=this.parseKid(e,a);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:s,mcid:t,pageObjId:e});let a=null;t instanceof r.Ref?a=this.dict.xref.fetch(t):t instanceof r.Dict&&(a=t);if(!a)return null;const n=a.getRaw("Pg");n instanceof r.Ref&&(e=n.toString());const i=a.get("Type")instanceof r.Name?a.get("Type").name:null;return"MCR"===i?this.tree.pageDict.objId!==e?null:new StructElement({type:o,refObjId:a.getRaw("Stm")instanceof r.Ref?a.getRaw("Stm").toString():null,pageObjId:e,mcid:a.get("MCID")}):"OBJR"===i?this.tree.pageDict.objId!==e?null:new StructElement({type:c,refObjId:a.getRaw("Obj")instanceof r.Ref?a.getRaw("Obj").toString():null,pageObjId:e}):new StructElement({type:l,dict:a})}}class StructElement{constructor({type:e,dict:t=null,mcid:a=null,pageObjId:r=null,refObjId:n=null}){this.type=e;this.dict=t;this.mcid=a;this.pageObjId=r;this.refObjId=n;this.parentNode=null}}t.StructTreePage=class StructTreePage{constructor(e,t){this.root=e;this.rootDict=e?e.dict:null;this.pageDict=t;this.nodes=[]}parse(){if(!this.root||!this.rootDict)return;const e=this.rootDict.get("ParentTree");if(!e)return;const t=this.pageDict.get("StructParents");if(!Number.isInteger(t))return;const a=new i.NumberTree(e,this.rootDict.xref).get(t);if(!Array.isArray(a))return;const n=new Map;for(const e of a)e instanceof r.Ref&&this.addNode(this.rootDict.xref.fetch(e),n)}addNode(e,t,a=0){if(a>40){(0,n.warn)("StructTree MAX_DEPTH reached.");return null}if(t.has(e))return t.get(e);const i=new StructElementNode(this,e);t.set(e,i);const s=e.get("P");if(!s||(0,r.isName)(s.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,i)||t.delete(e);return i}const o=this.addNode(s,t,a+1);if(!o)return i;let c=!1;for(const t of o.kids)if(t.type===l&&t.dict===e){t.parentNode=i;c=!0}c||t.delete(e);return i}addTopLevelNode(e,t){const a=this.rootDict.get("K");if(!a)return!1;if(a instanceof r.Dict){if(a.objId!==e.objId)return!1;this.nodes[0]=t;return!0}if(!Array.isArray(a))return!0;let n=!1;for(let r=0;r40){(0,n.warn)("StructTree too deep to be fully serialized.");return}const r=Object.create(null);r.role=e.role;r.children=[];t.children.push(r);const i=e.dict.get("Alt");"string"==typeof i&&(r.alt=(0,n.stringToPDFString)(i));const h=e.dict.get("Lang");"string"==typeof h&&(r.lang=(0,n.stringToPDFString)(h));for(const t of e.kids){const e=t.type===l?t.parentNode:null;e?nodeToSerializable(e,r,a+1):t.type===s||t.type===o?r.children.push({type:"content",id:`page${t.pageObjId}_mcid${t.mcid}`}):t.type===c&&r.children.push({type:"object",id:t.refObjId})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ObjectLoader=void 0;var r=a(5),n=a(9),i=a(8),s=a(2);function addChildren(e,t){if(e instanceof r.Dict)e=e.getRawValues();else if(e instanceof n.BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const i of e)((a=i)instanceof r.Ref||a instanceof r.Dict||a instanceof n.BaseStream||Array.isArray(a))&&t.push(i);var a}t.ObjectLoader=class ObjectLoader{constructor(e,t,a){this.dict=e;this.keys=t;this.xref=a;this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new r.RefSet;const a=[];for(let r=0,n=e.length;r{Object.defineProperty(t,"__esModule",{value:!0});t.incrementalUpdate=function incrementalUpdate({originalData:e,xrefInfo:t,newRefs:a,xref:o=null,hasXfa:l=!1,xfaDatasetsRef:h=null,hasXfaDatasetsEntry:u=!1,acroFormRef:d=null,acroForm:f=null,xfaData:g=null}){l&&function updateXFA({xfaData:e,xfaDatasetsRef:t,hasXfaDatasetsEntry:a,acroFormRef:n,acroForm:o,newRefs:c,xref:l,xrefInfo:h}){if(null===l)return;if(!a){if(!n){(0,r.warn)("XFA - Cannot save it");return}const e=o.get("XFA"),a=e.slice();a.splice(2,0,"datasets");a.splice(3,0,t);o.set("XFA",a);const i=l.encrypt;let s=null;i&&(s=i.createCipherTransform(n.num,n.gen));const h=[`${n.num} ${n.gen} obj\n`];writeDict(o,h,s);h.push("\n");o.set("XFA",e);c.push({ref:n,data:h.join("")})}if(null===e){e=function writeXFADataForAcroform(e,t){const a=new s.SimpleXMLParser({hasAttributes:!0}).parseFromString(e);for(const{xfa:e}of t){if(!e)continue;const{path:t,value:n}=e;if(!t)continue;const o=a.documentElement.searchNode((0,i.parseXFAPath)(t),0);o?Array.isArray(n)?o.childNodes=n.map((e=>new s.SimpleDOMNode("value",e))):o.childNodes=[new s.SimpleDOMNode("#text",n)]:(0,r.warn)(`Node not found for path: ${t}`)}const n=[];a.documentElement.dump(n);return n.join("")}(l.fetchIfRef(t).getString(),c)}const u=l.encrypt;if(u){e=u.createCipherTransform(t.num,t.gen).encryptString(e)}const d=`${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n`+e+"\nendstream\nendobj\n";c.push({ref:t,data:d})}({xfaData:g,xfaDatasetsRef:h,hasXfaDatasetsEntry:u,acroFormRef:d,acroForm:f,newRefs:a,xref:o,xrefInfo:t});const p=new n.Dict(null),m=t.newRef;let b,y;const w=e[e.length-1];if(10===w||13===w){b=[];y=e.length}else{b=["\n"];y=e.length+1}p.set("Size",m.num+1);p.set("Prev",t.startXRef);p.set("Type",n.Name.get("XRef"));null!==t.rootRef&&p.set("Root",t.rootRef);null!==t.infoRef&&p.set("Info",t.infoRef);null!==t.encryptRef&&p.set("Encrypt",t.encryptRef);a.push({ref:m,data:""});a=a.sort(((e,t)=>e.ref.num-t.ref.num));const S=[[0,1,65535]],x=[0,1];let k=0;for(const{ref:e,data:t}of a){k=Math.max(k,y);S.push([1,y,Math.min(e.gen,65535)]);y+=t.length;x.push(e.num,1);b.push(t)}p.set("Index",x);if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const e=function computeMD5(e,t){const a=Math.floor(Date.now()/1e3),n=t.filename||"",i=[a.toString(),n,e.toString()];let s=i.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info)){i.push(e);s+=e.length}const o=new Uint8Array(s);let l=0;for(const e of i){writeString(e,l,o);l+=e.length}return(0,r.bytesToString)((0,c.calculateMD5)(o))}(y,t);p.set("ID",[t.fileIds[0],e])}const C=[1,Math.ceil(Math.log2(k)/8),2],v=(C[0]+C[1]+C[2])*S.length;p.set("W",C);p.set("Length",v);b.push(`${m.num} ${m.gen} obj\n`);writeDict(p,b,null);b.push(" stream\n");const F=b.reduce(((e,t)=>e+t.length),0),O=`\nendstream\nendobj\nstartxref\n${y}\n%%EOF\n`,T=new Uint8Array(e.length+F+v+O.length);T.set(e);let M=e.length;for(const e of b){writeString(e,M,T);M+=e.length}for(const[e,t,a]of S){M=writeInt(e,C[0],M,T);M=writeInt(t,C[1],M,T);M=writeInt(a,C[2],M,T)}writeString(O,M,T);return T};t.writeDict=writeDict;var r=a(2),n=a(5),i=a(8),s=a(70),o=a(9),c=a(74);function writeDict(e,t,a){t.push("<<");for(const r of e.getKeys()){t.push(` /${(0,i.escapePDFName)(r)} `);writeValue(e.getRaw(r),t,a)}t.push(">>")}function writeValue(e,t,a){if(e instanceof n.Name)t.push(`/${(0,i.escapePDFName)(e.name)}`);else if(e instanceof n.Ref)t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e))!function writeArray(e,t,a){t.push("[");let r=!0;for(const n of e){r?r=!1:t.push(" ");writeValue(n,t,a)}t.push("]")}(e,t,a);else if("string"==typeof e){null!==a&&(e=a.encryptString(e));t.push(`(${(0,r.escapeString)(e)})`)}else"number"==typeof e?t.push(function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)}(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof n.Dict?writeDict(e,t,a):e instanceof o.BaseStream?function writeStream(e,t,a){writeDict(e.dict,t,a);t.push(" stream\n");let r=e.getString();null!==a&&(r=a.encryptString(r));t.push(r,"\nendstream\n")}(e,t,a):null===e?t.push("null"):(0,r.warn)(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,a,r){for(let n=t+a-1;n>a-1;n--){r[n]=255&e;e>>=8}return a+t}function writeString(e,t,a){for(let r=0,n=e.length;r{Object.defineProperty(t,"__esModule",{value:!0});t.calculateSHA256=t.calculateMD5=t.PDF20=t.PDF17=t.CipherTransformFactory=t.ARCFourCipher=t.AES256Cipher=t.AES128Cipher=void 0;t.calculateSHA384=calculateSHA384;t.calculateSHA512=void 0;var r=a(2),n=a(5),i=a(75);class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),a=e.length;for(let e=0;e<256;++e)t[e]=e;for(let r=0,n=0;r<256;++r){const i=t[r];n=n+i+e[r%a]&255;t[r]=t[n];t[n]=i}this.s=t}encryptBlock(e){let t=this.a,a=this.b;const r=this.s,n=e.length,i=new Uint8Array(n);for(let s=0;s>5&255;h[u++]=n>>13&255;h[u++]=n>>21&255;h[u++]=n>>>29&255;h[u++]=0;h[u++]=0;h[u++]=0;const g=new Int32Array(16);for(u=0;u>>32-o)|0;n=i}i=i+n|0;s=s+l|0;o=o+f|0;c=c+p|0}return new Uint8Array([255&i,i>>8&255,i>>16&255,i>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])}}();t.calculateMD5=s;class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}or(e){this.high|=e.high;this.low|=e.low}shiftRight(e){if(e>=32){this.low=this.high>>>e-32|0;this.high=0}else{this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}}shiftLeft(e){if(e>=32){this.high=this.low<>>32-e;this.low<<=e}}rotateRight(e){let t,a;if(32&e){a=this.low;t=this.high}else{t=this.low;a=this.high}e&=31;this.low=t>>>e|a<<32-e;this.high=a>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let a=(this.high>>>0)+(e.high>>>0);t>4294967295&&(a+=1);this.low=0|t;this.high=0|a}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const o=function calculateSHA256Closure(){function rotr(e,t){return e>>>t|e<<32-t}function ch(e,t,a){return e&t^~e&a}function maj(e,t,a){return e&t^e&a^t&a}function sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}const e=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function hash(t,a,r){let n=1779033703,i=3144134277,s=1013904242,o=2773480762,c=1359893119,l=2600822924,h=528734635,u=1541459225;const d=64*Math.ceil((r+9)/64),f=new Uint8Array(d);let g,p;for(g=0;g>>29&255;f[g++]=r>>21&255;f[g++]=r>>13&255;f[g++]=r>>5&255;f[g++]=r<<3&255;const b=new Uint32Array(64);for(g=0;g>>10)+b[p-7]+littleSigma(b[p-15])+b[p-16]|0;let t,a,r=n,d=i,m=s,w=o,S=c,x=l,k=h,C=u;for(p=0;p<64;++p){t=C+sigmaPrime(S)+ch(S,x,k)+e[p]+b[p];a=sigma(r)+maj(r,d,m);C=k;k=x;x=S;S=w+t|0;w=m;m=d;d=r;r=t+a|0}n=n+r|0;i=i+d|0;s=s+m|0;o=o+w|0;c=c+S|0;l=l+x|0;h=h+k|0;u=u+C|0}var y;return new Uint8Array([n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,s>>24&255,s>>16&255,s>>8&255,255&s,o>>24&255,o>>16&255,o>>8&255,255&o,c>>24&255,c>>16&255,c>>8&255,255&c,l>>24&255,l>>16&255,l>>8&255,255&l,h>>24&255,h>>16&255,h>>8&255,255&h,u>>24&255,u>>16&255,u>>8&255,255&u])}}();t.calculateSHA256=o;const c=function calculateSHA512Closure(){function ch(e,t,a,r,n){e.assign(t);e.and(a);n.assign(t);n.not();n.and(r);e.xor(n)}function maj(e,t,a,r,n){e.assign(t);e.and(a);n.assign(t);n.and(r);e.xor(n);n.assign(a);n.and(r);e.xor(n)}function sigma(e,t,a){e.assign(t);e.rotateRight(28);a.assign(t);a.rotateRight(34);e.xor(a);a.assign(t);a.rotateRight(39);e.xor(a)}function sigmaPrime(e,t,a){e.assign(t);e.rotateRight(14);a.assign(t);a.rotateRight(18);e.xor(a);a.assign(t);a.rotateRight(41);e.xor(a)}function littleSigma(e,t,a){e.assign(t);e.rotateRight(1);a.assign(t);a.rotateRight(8);e.xor(a);a.assign(t);a.shiftRight(7);e.xor(a)}function littleSigmaPrime(e,t,a){e.assign(t);e.rotateRight(19);a.assign(t);a.rotateRight(61);e.xor(a);a.assign(t);a.shiftRight(6);e.xor(a)}const e=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return function hash(t,a,r,n=!1){let i,s,o,c,l,h,u,d;if(n){i=new Word64(3418070365,3238371032);s=new Word64(1654270250,914150663);o=new Word64(2438529370,812702999);c=new Word64(355462360,4144912697);l=new Word64(1731405415,4290775857);h=new Word64(2394180231,1750603025);u=new Word64(3675008525,1694076839);d=new Word64(1203062813,3204075428)}else{i=new Word64(1779033703,4089235720);s=new Word64(3144134277,2227873595);o=new Word64(1013904242,4271175723);c=new Word64(2773480762,1595750129);l=new Word64(1359893119,2917565137);h=new Word64(2600822924,725511199);u=new Word64(528734635,4215389547);d=new Word64(1541459225,327033209)}const f=128*Math.ceil((r+17)/128),g=new Uint8Array(f);let p,m;for(p=0;p>>29&255;g[p++]=r>>21&255;g[p++]=r>>13&255;g[p++]=r>>5&255;g[p++]=r<<3&255;const y=new Array(80);for(p=0;p<80;p++)y[p]=new Word64(0,0);let w=new Word64(0,0),S=new Word64(0,0),x=new Word64(0,0),k=new Word64(0,0),C=new Word64(0,0),v=new Word64(0,0),F=new Word64(0,0),O=new Word64(0,0);const T=new Word64(0,0),M=new Word64(0,0),E=new Word64(0,0),D=new Word64(0,0);let N,L;for(p=0;p=1;--e){a=i[13];i[13]=i[9];i[9]=i[5];i[5]=i[1];i[1]=a;a=i[14];r=i[10];i[14]=i[6];i[10]=i[2];i[6]=a;i[2]=r;a=i[15];r=i[11];n=i[7];i[15]=i[3];i[11]=a;i[7]=r;i[3]=n;for(let e=0;e<16;++e)i[e]=this._inv_s[i[e]];for(let a=0,r=16*e;a<16;++a,++r)i[a]^=t[r];for(let e=0;e<16;e+=4){const t=this._mix[i[e]],r=this._mix[i[e+1]],n=this._mix[i[e+2]],s=this._mix[i[e+3]];a=t^r>>>8^r<<24^n>>>16^n<<16^s>>>24^s<<8;i[e]=a>>>24&255;i[e+1]=a>>16&255;i[e+2]=a>>8&255;i[e+3]=255&a}}a=i[13];i[13]=i[9];i[9]=i[5];i[5]=i[1];i[1]=a;a=i[14];r=i[10];i[14]=i[6];i[10]=i[2];i[6]=a;i[2]=r;a=i[15];r=i[11];n=i[7];i[15]=i[3];i[11]=a;i[7]=r;i[3]=n;for(let e=0;e<16;++e){i[e]=this._inv_s[i[e]];i[e]^=t[e]}return i}_encrypt(e,t){const a=this._s;let r,n,i;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=r;--a)if(e[a]!==t){t=0;break}o-=t;i[i.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,a=i.length;e=256&&(o=255&(27^o))}for(let t=0;t<4;++t){a[e]=r^=a[e-32];e++;a[e]=n^=a[e-32];e++;a[e]=i^=a[e-32];e++;a[e]=s^=a[e-32];e++}}return a}}t.AES256Cipher=AES256Cipher;class PDF17{checkOwnerPassword(e,t,a,n){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const s=o(i,0,i.length);return(0,r.isArrayEqual)(s,n)}checkUserPassword(e,t,a){const n=new Uint8Array(e.length+8);n.set(e,0);n.set(t,e.length);const i=o(n,0,n.length);return(0,r.isArrayEqual)(i,a)}getOwnerKey(e,t,a,r){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(a,e.length+t.length);const i=o(n,0,n.length);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const n=o(r,0,r.length);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}}t.PDF17=PDF17;const l=function PDF20Closure(){function calculatePDF20Hash(e,t,a){let r=o(t,0,t.length).subarray(0,32),n=[0],i=0;for(;i<64||n[n.length-1]>i-32;){const t=e.length+r.length+a.length,s=new Uint8Array(t);let l=0;s.set(e,l);l+=e.length;s.set(r,l);l+=r.length;s.set(a,l);const h=new Uint8Array(64*t);for(let e=0,a=0;e<64;e++,a+=t)h.set(s,a);n=new AES128Cipher(r.subarray(0,16)).encrypt(h,r.subarray(16,32));let u=0;for(let e=0;e<16;e++){u*=1;u%=3;u+=(n[e]>>>0)%3;u%=3}0===u?r=o(n,0,n.length):1===u?r=calculateSHA384(n,0,n.length):2===u&&(r=c(n,0,n.length));i++}return r.subarray(0,32)}return class PDF20{hash(e,t,a){return calculatePDF20Hash(e,t,a)}checkOwnerPassword(e,t,a,n){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const s=calculatePDF20Hash(e,i,a);return(0,r.isArrayEqual)(s,n)}checkUserPassword(e,t,a){const n=new Uint8Array(e.length+8);n.set(e,0);n.set(t,e.length);const i=calculatePDF20Hash(e,n,[]);return(0,r.isArrayEqual)(i,a)}getOwnerKey(e,t,a,r){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(a,e.length+t.length);const i=calculatePDF20Hash(e,n,a);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const n=calculatePDF20Hash(e,r,[]);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}}}();t.PDF20=l;class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const a=new this.StreamCipherConstructor;return new i.DecryptStream(e,t,(function cipherTransformDecryptStream(e,t){return a.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let a=(0,r.stringToBytes)(e);a=t.decryptBlock(a,!0);return(0,r.bytesToString)(a)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const a=16-e.length%16;e+=String.fromCharCode(a).repeat(a);const n=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(n);else for(let e=0;e<16;e++)n[e]=Math.floor(256*Math.random());let i=(0,r.stringToBytes)(e);i=t.encrypt(i,n);const s=new Uint8Array(16+i.length);s.set(n);s.set(i,16);return(0,r.bytesToString)(s)}let a=(0,r.stringToBytes)(e);a=t.encrypt(a);return(0,r.bytesToString)(a)}}const h=function CipherTransformFactoryClosure(){const e=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);function prepareKeyData(t,a,r,n,i,o,c,l){const h=40+r.length+t.length,u=new Uint8Array(h);let d,f,g=0;if(a){f=Math.min(32,a.length);for(;g>8&255;u[g++]=i>>16&255;u[g++]=i>>>24&255;for(d=0,f=t.length;d=4&&!l){u[g++]=255;u[g++]=255;u[g++]=255;u[g++]=255}let p=s(u,0,g);const m=c>>3;if(o>=3)for(d=0;d<50;++d)p=s(p,0,m);const b=p.subarray(0,m);let y,w;if(o>=3){for(g=0;g<32;++g)u[g]=e[g];for(d=0,f=t.length;d>8&255;n[o++]=e>>16&255;n[o++]=255&t;n[o++]=t>>8&255;if(r){n[o++]=115;n[o++]=65;n[o++]=108;n[o++]=84}return s(n,0,o).subarray(0,Math.min(a.length+5,16))}function buildCipherConstructor(e,t,a,i,s){if(!(t instanceof n.Name))throw new r.FormatError("Invalid crypt filter name.");const o=e.get(t.name);let c;null!=o&&(c=o.get("CFM"));if(!c||"None"===c.name)return function cipherTransformFactoryBuildCipherConstructorNone(){return new NullCipher};if("V2"===c.name)return function cipherTransformFactoryBuildCipherConstructorV2(){return new ARCFourCipher(buildObjectKey(a,i,s,!1))};if("AESV2"===c.name)return function cipherTransformFactoryBuildCipherConstructorAESV2(){return new AES128Cipher(buildObjectKey(a,i,s,!0))};if("AESV3"===c.name)return function cipherTransformFactoryBuildCipherConstructorAESV3(){return new AES256Cipher(s)};throw new r.FormatError("Unknown crypto method")}return class CipherTransformFactory{constructor(a,i,o){const c=a.get("Filter");if(!(0,n.isName)(c,"Standard"))throw new r.FormatError("unknown encryption method");this.filterName=c.name;this.dict=a;const h=a.get("V");if(!Number.isInteger(h)||1!==h&&2!==h&&4!==h&&5!==h)throw new r.FormatError("unsupported encryption algorithm");this.algorithm=h;let u=a.get("Length");if(!u)if(h<=3)u=40;else{const e=a.get("CF"),t=a.get("StmF");if(e instanceof n.Dict&&t instanceof n.Name){e.suppressEncryption=!0;const a=e.get(t.name);u=a&&a.get("Length")||128;u<40&&(u<<=3)}}if(!Number.isInteger(u)||u<40||u%8!=0)throw new r.FormatError("invalid key length");const d=(0,r.stringToBytes)(a.get("O")).subarray(0,32),f=(0,r.stringToBytes)(a.get("U")).subarray(0,32),g=a.get("P"),p=a.get("R"),m=(4===h||5===h)&&!1!==a.get("EncryptMetadata");this.encryptMetadata=m;const b=(0,r.stringToBytes)(i);let y,w;if(o){if(6===p)try{o=(0,r.utf8StringToString)(o)}catch(e){(0,r.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password.")}y=(0,r.stringToBytes)(o)}if(5!==h)w=prepareKeyData(b,y,d,f,g,p,u,m);else{const e=(0,r.stringToBytes)(a.get("O")).subarray(32,40),t=(0,r.stringToBytes)(a.get("O")).subarray(40,48),n=(0,r.stringToBytes)(a.get("U")).subarray(0,48),i=(0,r.stringToBytes)(a.get("U")).subarray(32,40),s=(0,r.stringToBytes)(a.get("U")).subarray(40,48),o=(0,r.stringToBytes)(a.get("OE")),c=(0,r.stringToBytes)(a.get("UE"));(0,r.stringToBytes)(a.get("Perms"));w=function createEncryptionKey20(e,t,a,r,n,i,s,o,c,h,u,d){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];let f;f=6===e?new l:new PDF17;return f.checkUserPassword(t,o,s)?f.getUserKey(t,c,u):t.length&&f.checkOwnerPassword(t,r,i,a)?f.getOwnerKey(t,n,i,h):null}(p,y,d,e,t,n,f,i,s,o,c)}if(!w&&!o)throw new r.PasswordException("No password given",r.PasswordResponses.NEED_PASSWORD);if(!w&&o){const t=function decodeUserPassword(t,a,r,n){const i=new Uint8Array(32);let o=0;const c=Math.min(32,t.length);for(;o>3;if(r>=3)for(l=0;l<50;++l)h=s(h,0,h.length);let d,f;if(r>=3){f=a;const e=new Uint8Array(u);for(l=19;l>=0;l--){for(let t=0;t=4){const e=a.get("CF");e instanceof n.Dict&&(e.suppressEncryption=!0);this.cf=e;this.stmf=a.get("StmF")||t;this.strf=a.get("StrF")||t;this.eff=a.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(buildCipherConstructor(this.cf,this.stmf,e,t,this.encryptionKey),buildCipherConstructor(this.cf,this.strf,e,t,this.encryptionKey));const a=buildObjectKey(e,t,this.encryptionKey,!1),r=function buildCipherCipherConstructor(){return new ARCFourCipher(a)};return new CipherTransform(r,r)}}}();t.CipherTransformFactory=h},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DecryptStream=void 0;var r=a(29);class DecryptStream extends r.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;this.decrypt=a;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.str.getBytes(512);this.initialized=!0}if(!e||0===e.length){this.eof=!0;return}this.nextChunk=this.str.getBytes(512);const t=this.nextChunk&&this.nextChunk.length>0;e=(0,this.decrypt)(e,!t);let a=this.bufferLength;const r=e.length,n=this.ensureBuffer(a+r);for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0});t.XFAFactory=void 0;var r=a(77),n=a(81),i=a(87),s=a(85),o=a(78),c=a(2),l=a(88),h=a(98);class XFAFactory{constructor(e){try{this.root=(new l.XFAParser).parse(XFAFactory._createDocument(e));const t=new n.Binder(this.root);this.form=t.bind();this.dataHandler=new i.DataHandler(this.root,t.getData());this.form[r.$globalData].template=this.form}catch(e){(0,c.warn)(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[r.$toPages]();return new Promise(((t,a)=>{const nextIteration=()=>{try{const a=e.next();a.done?t(a.value):setTimeout(nextIteration,0)}catch(e){a(e)}};setTimeout(nextIteration,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map((e=>{const{width:t,height:a}=e.attributes.style;return[0,0,parseInt(t),parseInt(a)]}))}catch(e){(0,c.warn)(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){this.pages||await this._createPages();return this.dims.length}setImages(e){this.form[r.$globalData].images=e}setFonts(e){this.form[r.$globalData].fontFinder=new s.FontFinder(e);const t=[];for(let e of this.form[r.$globalData].usedTypefaces){e=(0,o.stripQuotes)(e);this.form[r.$globalData].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[r.$globalData].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new l.XFAParser(h.XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[r.$nodeName])){const e=h.XhtmlNamespace.body({});e[r.$appendChild](t);t=e}const a=t[r.$toHTML]();if(!a.success)return null;const{html:n}=a,{attributes:i}=n;if(i){i.class&&(i.class=i.class.filter((e=>!e.startsWith("xfa"))));i.dir="auto"}return{html:n,str:t[r.$text]()}}catch(e){(0,c.warn)(`XFA - an error occurred during parsing of rich text: ${e}`)}return null}}t.XFAFactory=XFAFactory},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XmlObject=t.XFAObjectArray=t.XFAObject=t.XFAAttribute=t.StringObject=t.OptionObject=t.Option10=t.Option01=t.IntegerObject=t.ContentObject=t.$uid=t.$toStyle=t.$toString=t.$toPages=t.$toHTML=t.$text=t.$tabIndex=t.$setValue=t.$setSetAttributes=t.$setId=t.$searchNode=t.$root=t.$resolvePrototypes=t.$removeChild=t.$pushPara=t.$pushGlyphs=t.$popPara=t.$onText=t.$onChildCheck=t.$onChild=t.$nsAttributes=t.$nodeName=t.$namespaceId=t.$isUsable=t.$isTransparent=t.$isThereMoreWidth=t.$isSplittable=t.$isNsAgnostic=t.$isDescendent=t.$isDataValue=t.$isCDATAXml=t.$isBindable=t.$insertAt=t.$indexOf=t.$ids=t.$hasSettableValue=t.$globalData=t.$getTemplateRoot=t.$getSubformParent=t.$getRealChildrenByNameIt=t.$getParent=t.$getNextPage=t.$getExtra=t.$getDataValue=t.$getContainedChildren=t.$getChildrenByNameIt=t.$getChildrenByName=t.$getChildrenByClass=t.$getChildren=t.$getAvailableSpace=t.$getAttributes=t.$getAttributeIt=t.$flushHTML=t.$finalize=t.$extra=t.$dump=t.$data=t.$content=t.$consumed=t.$clone=t.$cleanup=t.$cleanPage=t.$clean=t.$childrenToHTML=t.$appendChild=t.$addHTML=t.$acceptWhitespace=void 0;var r=a(78),n=a(2),i=a(8),s=a(79),o=a(80);const c=Symbol();t.$acceptWhitespace=c;const l=Symbol();t.$addHTML=l;const h=Symbol();t.$appendChild=h;const u=Symbol();t.$childrenToHTML=u;const d=Symbol();t.$clean=d;const f=Symbol();t.$cleanPage=f;const g=Symbol();t.$cleanup=g;const p=Symbol();t.$clone=p;const m=Symbol();t.$consumed=m;const b=Symbol("content");t.$content=b;const y=Symbol("data");t.$data=y;const w=Symbol();t.$dump=w;const S=Symbol("extra");t.$extra=S;const x=Symbol();t.$finalize=x;const k=Symbol();t.$flushHTML=k;const C=Symbol();t.$getAttributeIt=C;const v=Symbol();t.$getAttributes=v;const F=Symbol();t.$getAvailableSpace=F;const O=Symbol();t.$getChildrenByClass=O;const T=Symbol();t.$getChildrenByName=T;const M=Symbol();t.$getChildrenByNameIt=M;const E=Symbol();t.$getDataValue=E;const D=Symbol();t.$getExtra=D;const N=Symbol();t.$getRealChildrenByNameIt=N;const L=Symbol();t.$getChildren=L;const R=Symbol();t.$getContainedChildren=R;const j=Symbol();t.$getNextPage=j;const $=Symbol();t.$getSubformParent=$;const _=Symbol();t.$getParent=_;const U=Symbol();t.$getTemplateRoot=U;const X=Symbol();t.$globalData=X;const H=Symbol();t.$hasSettableValue=H;const q=Symbol();t.$ids=q;const z=Symbol();t.$indexOf=z;const W=Symbol();t.$insertAt=W;const G=Symbol();t.$isCDATAXml=G;const V=Symbol();t.$isBindable=V;const K=Symbol();t.$isDataValue=K;const Y=Symbol();t.$isDescendent=Y;const J=Symbol();t.$isNsAgnostic=J;const Z=Symbol();t.$isSplittable=Z;const Q=Symbol();t.$isThereMoreWidth=Q;const ee=Symbol();t.$isTransparent=ee;const te=Symbol();t.$isUsable=te;const ae=Symbol(),re=Symbol("namespaceId");t.$namespaceId=re;const ne=Symbol("nodeName");t.$nodeName=ne;const ie=Symbol();t.$nsAttributes=ie;const se=Symbol();t.$onChild=se;const oe=Symbol();t.$onChildCheck=oe;const ce=Symbol();t.$onText=ce;const le=Symbol();t.$pushGlyphs=le;const he=Symbol();t.$popPara=he;const ue=Symbol();t.$pushPara=ue;const de=Symbol();t.$removeChild=de;const fe=Symbol("root");t.$root=fe;const ge=Symbol();t.$resolvePrototypes=ge;const pe=Symbol();t.$searchNode=pe;const me=Symbol();t.$setId=me;const be=Symbol();t.$setSetAttributes=be;const ye=Symbol();t.$setValue=ye;const we=Symbol();t.$tabIndex=we;const Se=Symbol();t.$text=Se;const xe=Symbol();t.$toPages=xe;const ke=Symbol();t.$toHTML=ke;const Ae=Symbol();t.$toString=Ae;const Ce=Symbol();t.$toStyle=Ce;const ve=Symbol("uid");t.$uid=ve;const Fe=Symbol(),Oe=Symbol(),Te=Symbol(),Ie=Symbol("_children"),Pe=Symbol(),Me=Symbol(),Ee=Symbol(),De=Symbol(),Be=Symbol(),Ne=Symbol(),Le=Symbol(),Re=Symbol(),je=Symbol(),$e=Symbol("parent"),_e=Symbol(),Ue=Symbol(),Xe=Symbol();let He=0;const qe=s.NamespaceIds.datasets.id;class XFAObject{constructor(e,t,a=!1){this[re]=e;this[ne]=t;this[Le]=a;this[$e]=null;this[Ie]=[];this[ve]=`${t}${He++}`;this[X]=null}[se](e){if(!this[Le]||!this[oe](e))return!1;const t=e[ne],a=this[t];if(!(a instanceof XFAObjectArray)){null!==a&&this[de](a);this[t]=e;this[h](e);return!0}if(a.push(e)){this[h](e);return!0}let r="";this.id?r=` (id: ${this.id})`:this.name&&(r=` (name: ${this.name} ${this.h.value})`);(0,n.warn)(`XFA - node "${this[ne]}"${r} has already enough "${t}"!`);return!1}[oe](e){return this.hasOwnProperty(e[ne])&&e[re]===this[re]}[J](){return!1}[c](){return!1}[G](){return!1}[V](){return!1}[he](){this.para&&this[U]()[S].paraStack.pop()}[ue](){this[U]()[S].paraStack.push(this.para)}[me](e){this.id&&this[re]===s.NamespaceIds.template.id&&e.set(this.id,this)}[U](){return this[X].template}[Z](){return!1}[Q](){return!1}[h](e){e[$e]=this;this[Ie].push(e);!e[X]&&this[X]&&(e[X]=this[X])}[de](e){const t=this[Ie].indexOf(e);this[Ie].splice(t,1)}[H](){return this.hasOwnProperty("value")}[ye](e){}[ce](e){}[x](){}[d](e){delete this[Le];if(this[g]){e.clean(this[g]);delete this[g]}}[z](e){return this[Ie].indexOf(e)}[W](e,t){t[$e]=this;this[Ie].splice(e,0,t);!t[X]&&this[X]&&(t[X]=this[X])}[ee](){return!this.name}[ae](){return""}[Se](){return 0===this[Ie].length?this[b]:this[Ie].map((e=>e[Se]())).join("")}get[Te](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return(0,n.shadow)(this,Te,e._attributes)}[Y](e){let t=this;for(;t;){if(t===e)return!0;t=t[_]()}return!1}[_](){return this[$e]}[$](){return this[_]()}[L](e=null){return e?this[e]:this[Ie]}[w](){const e=Object.create(null);this[b]&&(e.$content=this[b]);for(const t of Object.getOwnPropertyNames(this)){const a=this[t];null!==a&&(a instanceof XFAObject?e[t]=a[w]():a instanceof XFAObjectArray?a.isEmpty()||(e[t]=a.dump()):e[t]=a)}return e}[Ce](){return null}[ke](){return r.HTMLResult.EMPTY}*[R](){for(const e of this[L]())yield e}*[De](e,t){for(const a of this[R]())if(!e||t===e.has(a[ne])){const e=this[F](),t=a[ke](e);t.success||(this[S].failingNode=a);yield t}}[k](){return null}[l](e,t){this[S].children.push(e)}[F](){}[u]({filter:e=null,include:t=!0}){if(this[S].generator){const e=this[F](),t=this[S].failingNode[ke](e);if(!t.success)return t;t.html&&this[l](t.html,t.bbox);delete this[S].failingNode}else this[S].generator=this[De](e,t);for(;;){const e=this[S].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[l](t.html,t.bbox)}this[S].generator=null;return r.HTMLResult.EMPTY}[be](e){this[Ue]=new Set(Object.keys(e))}[Ne](e){const t=this[Te],a=this[Ue];return[...e].filter((e=>t.has(e)&&!a.has(e)))}[ge](e,t=new Set){for(const a of this[Ie])a[_e](e,t)}[_e](e,t){const a=this[Be](e,t);a?this[Fe](a,e,t):this[ge](e,t)}[Be](e,t){const{use:a,usehref:r}=this;if(!a&&!r)return null;let i=null,s=null,c=null,l=a;if(r){l=r;r.startsWith("#som(")&&r.endsWith(")")?s=r.slice("#som(".length,r.length-1):r.startsWith(".#som(")&&r.endsWith(")")?s=r.slice(".#som(".length,r.length-1):r.startsWith("#")?c=r.slice(1):r.startsWith(".#")&&(c=r.slice(2))}else a.startsWith("#")?c=a.slice(1):s=a;this.use=this.usehref="";if(c)i=e.get(c);else{i=(0,o.searchNode)(e.get(fe),this,s,!0,!1);i&&(i=i[0])}if(!i){(0,n.warn)(`XFA - Invalid prototype reference: ${l}.`);return null}if(i[ne]!==this[ne]){(0,n.warn)(`XFA - Incompatible prototype: ${i[ne]} !== ${this[ne]}.`);return null}if(t.has(i)){(0,n.warn)("XFA - Cycle detected in prototypes use.");return null}t.add(i);const h=i[Be](e,t);h&&i[Fe](h,e,t);i[ge](e,t);t.delete(i);return i}[Fe](e,t,a){if(a.has(e)){(0,n.warn)("XFA - Cycle detected in prototypes use.");return}!this[b]&&e[b]&&(this[b]=e[b]);new Set(a).add(e);for(const t of this[Ne](e[Ue])){this[t]=e[t];this[Ue]&&this[Ue].add(t)}for(const r of Object.getOwnPropertyNames(this)){if(this[Te].has(r))continue;const n=this[r],i=e[r];if(n instanceof XFAObjectArray){for(const e of n[Ie])e[_e](t,a);for(let r=n[Ie].length,s=i[Ie].length;rXFAObject[Pe](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[p](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch(a){(0,n.shadow)(e,t,this[t])}e[ve]=`${e[ne]}${He++}`;e[Ie]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[Te].has(t)){e[t]=XFAObject[Pe](this[t]);continue}const a=this[t];e[t]=a instanceof XFAObjectArray?new XFAObjectArray(a[Re]):null}for(const t of this[Ie]){const a=t[ne],r=t[p]();e[Ie].push(r);r[$e]=e;null===e[a]?e[a]=r:e[a][Ie].push(r)}return e}[L](e=null){return e?this[Ie].filter((t=>t[ne]===e)):this[Ie]}[O](e){return this[e]}[T](e,t,a=!0){return Array.from(this[M](e,t,a))}*[M](e,t,a=!0){if("parent"!==e){for(const a of this[Ie]){a[ne]===e&&(yield a);a.name===e&&(yield a);(t||a[ee]())&&(yield*a[M](e,t,!1))}a&&this[Te].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[$e]}}t.XFAObject=XFAObject;class XFAObjectArray{constructor(e=1/0){this[Re]=e;this[Ie]=[]}push(e){if(this[Ie].length<=this[Re]){this[Ie].push(e);return!0}(0,n.warn)(`XFA - node "${e[ne]}" accepts no more than ${this[Re]} children`);return!1}isEmpty(){return 0===this[Ie].length}dump(){return 1===this[Ie].length?this[Ie][0][w]():this[Ie].map((e=>e[w]()))}[p](){const e=new XFAObjectArray(this[Re]);e[Ie]=this[Ie].map((e=>e[p]()));return e}get children(){return this[Ie]}clear(){this[Ie].length=0}}t.XFAObjectArray=XFAObjectArray;class XFAAttribute{constructor(e,t,a){this[$e]=e;this[ne]=t;this[b]=a;this[m]=!1;this[ve]="attribute"+He++}[_](){return this[$e]}[K](){return!0}[E](){return this[b].trim()}[ye](e){e=e.value||"";this[b]=e.toString()}[Se](){return this[b]}[Y](e){return this[$e]===e||this[$e][Y](e)}}t.XFAAttribute=XFAAttribute;class XmlObject extends XFAObject{constructor(e,t,a={}){super(e,t);this[b]="";this[Me]=null;if("#text"!==t){const e=new Map;this[Oe]=e;for(const[t,r]of Object.entries(a))e.set(t,new XFAAttribute(this,t,r));if(a.hasOwnProperty(ie)){const e=a[ie].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[Me]=!1:"dataValue"===e&&(this[Me]=!0))}}this[m]=!1}[Ae](e){const t=this[ne];if("#text"===t){e.push((0,i.encodeToXmlString)(this[b]));return}const a=(0,n.utf8StringToString)(t),r=this[re]===qe?"xfa:":"";e.push(`<${r}${a}`);for(const[t,a]of this[Oe].entries()){const r=(0,n.utf8StringToString)(t);e.push(` ${r}="${(0,i.encodeToXmlString)(a[b])}"`)}null!==this[Me]&&(this[Me]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[b]||0!==this[Ie].length){e.push(">");if(this[b])"string"==typeof this[b]?e.push((0,i.encodeToXmlString)(this[b])):this[b][Ae](e);else for(const t of this[Ie])t[Ae](e);e.push(``)}else e.push("/>")}[se](e){if(this[b]){const e=new XmlObject(this[re],"#text");this[h](e);e[b]=this[b];this[b]=""}this[h](e);return!0}[ce](e){this[b]+=e}[x](){if(this[b]&&this[Ie].length>0){const e=new XmlObject(this[re],"#text");this[h](e);e[b]=this[b];delete this[b]}}[ke](){return"#text"===this[ne]?r.HTMLResult.success({name:"#text",value:this[b]}):r.HTMLResult.EMPTY}[L](e=null){return e?this[Ie].filter((t=>t[ne]===e)):this[Ie]}[v](){return this[Oe]}[O](e){const t=this[Oe].get(e);return void 0!==t?t:this[L](e)}*[M](e,t){const a=this[Oe].get(e);a&&(yield a);for(const a of this[Ie]){a[ne]===e&&(yield a);t&&(yield*a[M](e,t))}}*[C](e,t){const a=this[Oe].get(e);!a||t&&a[m]||(yield a);for(const a of this[Ie])yield*a[C](e,t)}*[N](e,t,a){for(const r of this[Ie]){r[ne]!==e||a&&r[m]||(yield r);t&&(yield*r[N](e,t,a))}}[K](){return null===this[Me]?0===this[Ie].length||this[Ie][0][re]===s.NamespaceIds.xhtml.id:this[Me]}[E](){return null===this[Me]?0===this[Ie].length?this[b].trim():this[Ie][0][re]===s.NamespaceIds.xhtml.id?this[Ie][0][Se]().trim():null:this[b].trim()}[ye](e){e=e.value||"";this[b]=e.toString()}[w](e=!1){const t=Object.create(null);e&&(t.$ns=this[re]);this[b]&&(t.$content=this[b]);t.$name=this[ne];t.children=[];for(const a of this[Ie])t.children.push(a[w](e));t.attributes=Object.create(null);for(const[e,a]of this[Oe])t.attributes[e]=a[b];return t}}t.XmlObject=XmlObject;class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[b]=""}[ce](e){this[b]+=e}[x](){}}t.ContentObject=ContentObject;t.OptionObject=class OptionObject extends ContentObject{constructor(e,t,a){super(e,t);this[je]=a}[x](){this[b]=(0,r.getKeyword)({data:this[b],defaultValue:this[je][0],validate:e=>this[je].includes(e)})}[d](e){super[d](e);delete this[je]}};t.StringObject=class StringObject extends ContentObject{[x](){this[b]=this[b].trim()}};class IntegerObject extends ContentObject{constructor(e,t,a,r){super(e,t);this[Ee]=a;this[Xe]=r}[x](){this[b]=(0,r.getInteger)({data:this[b],defaultValue:this[Ee],validate:this[Xe]})}[d](e){super[d](e);delete this[Ee];delete this[Xe]}}t.IntegerObject=IntegerObject;t.Option01=class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,(e=>1===e))}};t.Option10=class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,(e=>0===e))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.HTMLResult=void 0;t.getBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const a=e.trim().split(/\s*,\s*/).map((e=>getMeasurement(e,"-1")));if(a.length<4||a[2]<0||a[3]<0)return{x:t,y:t,width:t,height:t};const[r,n,i,s]=a;return{x:r,y:n,width:i,height:s}};t.getColor=function getColor(e,t=[0,0,0]){let[a,r,n]=t;if(!e)return{r:a,g:r,b:n};const i=e.trim().split(/\s*,\s*/).map((e=>Math.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));if(i.length<3)return{r:a,g:r,b:n};[a,r,n]=i;return{r:a,g:r,b:n}};t.getFloat=function getFloat({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseFloat(e);if(!isNaN(r)&&a(r))return r;return t};t.getInteger=function getInteger({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseInt(e,10);if(!isNaN(r)&&a(r))return r;return t};t.getKeyword=getKeyword;t.getMeasurement=getMeasurement;t.getRatio=function getRatio(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\s*:\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[a,r]=t;return{num:a,den:r}};t.getRelevant=function getRelevant(e){if(!e)return[];return e.trim().split(/\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)})))};t.getStringOption=function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})};t.stripQuotes=function stripQuotes(e){if(e.startsWith("'")||e.startsWith('"'))return e.slice(1,e.length-1);return e};var r=a(2);const n={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},i=/([+-]?\d+\.?\d*)(.*)/;function getKeyword({data:e,defaultValue:t,validate:a}){return e&&a(e=e.trim())?e:t}function getMeasurement(e,t="0"){t=t||"0";if(!e)return getMeasurement(t);const a=e.trim().match(i);if(!a)return getMeasurement(t);const[,r,s]=a,o=parseFloat(r);if(isNaN(o))return getMeasurement(t);if(0===o)return 0;const c=n[s];return c?c(o):o}class HTMLResult{static get FAILURE(){return(0,r.shadow)(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return(0,r.shadow)(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,a,r){this.success=e;this.html=t;this.bbox=a;this.breakNode=r}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}t.HTMLResult=HTMLResult},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceIds=t.$buildXFAObject=void 0;const a=Symbol();t.$buildXFAObject=a;t.NamespaceIds={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.createDataNode=function createDataNode(e,t,a){const n=parseExpression(a);if(!n)return null;if(n.some((e=>e.operator===l)))return null;const s=f.get(n[0].name);let o=0;if(s){e=s(e,t);o=1}else e=t||e;for(let t=n.length;o0&&p.push(e)}if(0!==p.length||u||0!==d)e=isFinite(f)?p.filter((e=>fe[f])):p.reduce(((e,t)=>e.concat(t)),[]);else{const a=t[r.$getParent]();if(!(t=a))return null;d=-1;e=[t]}}if(0===e.length)return null;return e};var r=a(77),n=a(79),i=a(2);const s=/^[^.[]+/,o=/^[^\]]+/,c=0,l=1,h=2,u=3,d=4,f=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[r.$getChildren]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),g=new WeakMap,p=n.NamespaceIds.datasets.id;function parseExpression(e,t,a=!0){let r=e.match(s);if(!r)return null;let[n]=r;const f=[{name:n,cacheName:"."+n,index:0,js:null,formCalc:null,operator:c}];let g=n.length;for(;g{Object.defineProperty(t,"__esModule",{value:!0});t.Binder=void 0;var r=a(77),n=a(82),i=a(80),s=a(79),o=a(2);const c=s.NamespaceIds.datasets.id;function createText(e){const t=new n.Text({});t[r.$content]=e;return t}t.Binder=class Binder{constructor(e){this.root=e;this.datasets=e.datasets;e.datasets&&e.datasets.data?this.data=e.datasets.data:this.data=new r.XmlObject(s.NamespaceIds.datasets.id,"data");this.emptyMerge=0===this.data[r.$getChildren]().length;this.root.form=this.form=e.template[r.$clone]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,a){e[r.$data]=t;if(e[r.$hasSettableValue]())if(t[r.$isDataValue]()){const a=t[r.$getDataValue]();e[r.$setValue](createText(a))}else if(e instanceof n.Field&&e.ui&&e.ui.choiceList&&"multiSelect"===e.ui.choiceList.open){const a=t[r.$getChildren]().map((e=>e[r.$content].trim())).join("\n");e[r.$setValue](createText(a))}else this._isConsumeData()&&(0,o.warn)("XFA - Nodes haven't the same type.");else!t[r.$isDataValue]()||this._isMatchTemplate()?this._bindElement(e,t):(0,o.warn)("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,a,n){if(!e)return null;let i,o;for(let n=0;n<3;n++){i=a[r.$getRealChildrenByNameIt](e,!1,!0);for(;;){o=i.next().value;if(!o)break;if(t===o[r.$isDataValue]())return o}if(a[r.$namespaceId]===s.NamespaceIds.datasets.id&&"data"===a[r.$nodeName])break;a=a[r.$getParent]()}if(!n)return null;i=this.data[r.$getRealChildrenByNameIt](e,!0,!1);o=i.next().value;if(o)return o;i=this.data[r.$getAttributeIt](e,!0);o=i.next().value;return o&&o[r.$isDataValue]()?o:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:a,target:s,connection:c}of e.setProperty.children){if(c)continue;if(!a)continue;const l=(0,i.searchNode)(this.root,t,a,!1,!1);if(!l){(0,o.warn)(`XFA - Invalid reference: ${a}.`);continue}const[h]=l;if(!h[r.$isDescendent](this.data)){(0,o.warn)("XFA - Invalid node: must be a data node.");continue}const u=(0,i.searchNode)(this.root,e,s,!1,!1);if(!u){(0,o.warn)(`XFA - Invalid target: ${s}.`);continue}const[d]=u;if(!d[r.$isDescendent](e)){(0,o.warn)("XFA - Invalid target: must be a property or subproperty.");continue}const f=d[r.$getParent]();if(d instanceof n.SetProperty||f instanceof n.SetProperty){(0,o.warn)("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(d instanceof n.BindItems||f instanceof n.BindItems){(0,o.warn)("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const g=h[r.$text](),p=d[r.$nodeName];if(d instanceof r.XFAAttribute){const e=Object.create(null);e[p]=g;const t=Reflect.construct(Object.getPrototypeOf(f).constructor,[e]);f[p]=t[p]}else if(d.hasOwnProperty(r.$content)){d[r.$data]=h;d[r.$content]=g;d[r.$finalize]()}else(0,o.warn)("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[r.$removeChild](t);e.items.clear();const a=new n.Items({}),s=new n.Items({});e[r.$appendChild](a);e.items.push(a);e[r.$appendChild](s);e.items.push(s);for(const{ref:n,labelRef:c,valueRef:l,connection:h}of e.bindItems.children){if(h)continue;if(!n)continue;const e=(0,i.searchNode)(this.root,t,n,!1,!1);if(e)for(const t of e){if(!t[r.$isDescendent](this.datasets)){(0,o.warn)(`XFA - Invalid ref (${n}): must be a datasets child.`);continue}const e=(0,i.searchNode)(this.root,t,c,!0,!1);if(!e){(0,o.warn)(`XFA - Invalid label: ${c}.`);continue}const[h]=e;if(!h[r.$isDescendent](this.datasets)){(0,o.warn)("XFA - Invalid label: must be a datasets child.");continue}const u=(0,i.searchNode)(this.root,t,l,!0,!1);if(!u){(0,o.warn)(`XFA - Invalid value: ${l}.`);continue}const[d]=u;if(!d[r.$isDescendent](this.datasets)){(0,o.warn)("XFA - Invalid value: must be a datasets child.");continue}const f=createText(h[r.$text]()),g=createText(d[r.$text]());a[r.$appendChild](f);a.text.push(f);s[r.$appendChild](g);s.text.push(g)}else(0,o.warn)(`XFA - Invalid reference: ${n}.`)}}_bindOccurrences(e,t,a){let n;if(t.length>1){n=e[r.$clone]();n[r.$removeChild](n.occur);n.occur=null}this._bindValue(e,t[0],a);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const i=e[r.$getParent](),s=e[r.$nodeName],o=i[r.$indexOf](e);for(let e=1,c=t.length;et.name===e.name)).length:a[n].children.length;const s=a[r.$indexOf](e)+1,o=t.initial-i;if(o){const t=e[r.$clone]();t[r.$removeChild](t.occur);t.occur=null;a[n].push(t);a[r.$insertAt](s,t);for(let e=1;e0)this._bindOccurrences(n,[e[0]],null);else if(this.emptyMerge){const e=t[r.$namespaceId]===c?-1:t[r.$namespaceId],a=n[r.$data]=new r.XmlObject(e,n.name||"root");t[r.$appendChild](a);this._bindElement(n,a)}continue}if(!n[r.$isBindable]())continue;let e=!1,s=null,l=null,h=null;if(n.bind){switch(n.bind.match){case"none":this._setAndBind(n,t);continue;case"global":e=!0;break;case"dataRef":if(!n.bind.ref){(0,o.warn)(`XFA - ref is empty in node ${n[r.$nodeName]}.`);this._setAndBind(n,t);continue}l=n.bind.ref}n.bind.picture&&(s=n.bind.picture[r.$content])}const[u,d]=this._getOccurInfo(n);if(l){h=(0,i.searchNode)(this.root,t,l,!0,!1);if(null===h){h=(0,i.createDataNode)(this.data,t,l);if(!h)continue;this._isConsumeData()&&(h[r.$consumed]=!0);this._setAndBind(n,h);continue}this._isConsumeData()&&(h=h.filter((e=>!e[r.$consumed])));h.length>d?h=h.slice(0,d):0===h.length&&(h=null);h&&this._isConsumeData()&&h.forEach((e=>{e[r.$consumed]=!0}))}else{if(!n.name){this._setAndBind(n,t);continue}if(this._isConsumeData()){const a=[];for(;a.length0?a:null}else{h=t[r.$getRealChildrenByNameIt](n.name,!1,this.emptyMerge).next().value;if(!h){if(0===u){a.push(n);continue}const e=t[r.$namespaceId]===c?-1:t[r.$namespaceId];h=n[r.$data]=new r.XmlObject(e,n.name);this.emptyMerge&&(h[r.$consumed]=!0);t[r.$appendChild](h);this._setAndBind(n,h);continue}this.emptyMerge&&(h[r.$consumed]=!0);h=[h]}}h?this._bindOccurrences(n,h,s):u>0?this._setAndBind(n,t):a.push(n)}a.forEach((e=>e[r.$getParent]()[r.$removeChild](e)))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Value=t.Text=t.TemplateNamespace=t.Template=t.SetProperty=t.Items=t.Field=t.BindItems=void 0;var r=a(77),n=a(79),i=a(83),s=a(84),o=a(78),c=a(2),l=a(85),h=a(8),u=a(80);const d=n.NamespaceIds.template.id,f="http://www.w3.org/2000/svg",g=/^H(\d+)$/,p=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),m=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function getBorderDims(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[r.$getExtra]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[r.$appendChild](t);e.value=t}e.value[r.$setValue](t)}function*getContainedChildren(e){for(const t of e[r.$getChildren]())t instanceof SubformSet?yield*t[r.$getContainedChildren]():yield t}function setTabIndex(e){for(;e;){if(!e.traversal){e[r.$tabIndex]=e[r.$getParent]()[r.$tabIndex];return}if(e[r.$tabIndex])return;let t=null;for(const a of e.traversal[r.$getChildren]())if("next"===a.operation){t=a;break}if(!t||!t.ref){e[r.$tabIndex]=e[r.$getParent]()[r.$tabIndex];return}const a=e[r.$getTemplateRoot]();e[r.$tabIndex]=++a[r.$tabIndex];const n=a[r.$searchNode](t.ref,e);if(!n)return;e=n[0]}}function applyAssist(e,t){const a=e.assist;if(a){const e=a[r.$toHTML]();e&&(t.title=e);const n=a.role.match(g);if(n){const e="heading",a=n[1];t.role=e;t["aria-level"]=a}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const a=e[r.$getParent]();"row"===a.layout&&(a.assist&&"TH"===a.assist.role?t.role="columnheader":t.role="cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[r.$content]?t.speak[r.$content]:t.toolTip?t.toolTip[r.$content]:null}function valueToHtml(e){return o.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[r.$getTemplateRoot]();if(null===t[r.$extra].firstUnsplittable){t[r.$extra].firstUnsplittable=e;t[r.$extra].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[r.$getTemplateRoot]();t[r.$extra].firstUnsplittable===e&&(t[r.$extra].noLayoutFailure=!1)}function handleBreak(e){if(e[r.$extra])return!1;e[r.$extra]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[r.$getTemplateRoot]();let a=null;if(e.target){a=t[r.$searchNode](e.target,e[r.$getParent]());if(!a)return!1;a=a[0]}const{currentPageArea:n,currentContentArea:i}=t[r.$extra];if("pageArea"===e.targetType){a instanceof PageArea||(a=null);if(e.startNew){e[r.$extra].target=a||n;return!0}if(a&&a!==n){e[r.$extra].target=a;return!0}return!1}a instanceof ContentArea||(a=null);const s=a&&a[r.$getParent]();let o,c=s;if(e.startNew)if(a){const e=s.contentArea.children,t=e.indexOf(i),r=e.indexOf(a);-1!==t&&te;n[r.$extra].noLayoutFailure=!0;const o=t[r.$toHTML](a);e[r.$addHTML](o.html,o.bbox);n[r.$extra].noLayoutFailure=i;t[r.$getSubformParent]=s}class AppearanceFilter extends r.StringObject{constructor(e){super(d,"appearanceFilter");this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends r.XFAObject{constructor(e){super(d,"arc",!0);this.circular=(0,o.getInteger)({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=(0,o.getFloat)({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=(0,o.getFloat)({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[r.$toHTML](){const e=this.edge?this.edge:new Edge({}),t=e[r.$toStyle](),a=Object.create(null);this.fill&&"visible"===this.fill.presence?Object.assign(a,this.fill[r.$toStyle]()):a.fill="transparent";a.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);a.stroke=t.color;let n;const i={xmlns:f,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)n={name:"ellipse",attributes:{xmlns:f,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:a}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,r=this.sweepAngle>180?1:0,[s,o,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];n={name:"path",attributes:{xmlns:f,d:`M ${s} ${o} A 50 50 0 ${r} 0 ${c} ${l}`,vectorEffect:"non-scaling-stroke",style:a}};Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const c={name:"svg",children:[n],attributes:i};if(hasMargin(this[r.$getParent]()[r.$getParent]()))return o.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[c]});c.attributes.style.position="absolute";return o.HTMLResult.success(c)}}class Area extends r.XFAObject{constructor(e){super(d,"area",!0);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null;this.area=new r.XFAObjectArray;this.draw=new r.XFAObjectArray;this.exObject=new r.XFAObjectArray;this.exclGroup=new r.XFAObjectArray;this.field=new r.XFAObjectArray;this.subform=new r.XFAObjectArray;this.subformSet=new r.XFAObjectArray}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$isTransparent](){return!0}[r.$isBindable](){return!0}[r.$addHTML](e,t){const[a,n,i,s]=t;this[r.$extra].width=Math.max(this[r.$extra].width,a+i);this[r.$extra].height=Math.max(this[r.$extra].height,n+s);this[r.$extra].children.push(e)}[r.$getAvailableSpace](){return this[r.$extra].availableSpace}[r.$toHTML](e){const t=(0,s.toStyle)(this,"position"),a={style:t,id:this[r.$uid],class:["xfaArea"]};(0,s.isPrintOnly)(this)&&a.class.push("xfaPrintOnly");this.name&&(a.xfaName=this.name);const n=[];this[r.$extra]={children:n,width:0,height:0,availableSpace:e};const i=this[r.$childrenToHTML]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success){if(i.isBreak())return i;delete this[r.$extra];return o.HTMLResult.FAILURE}t.width=(0,s.measureToString)(this[r.$extra].width);t.height=(0,s.measureToString)(this[r.$extra].height);const c={name:"div",attributes:a,children:n},l=[this.x,this.y,this[r.$extra].width,this[r.$extra].height];delete this[r.$extra];return o.HTMLResult.success(c,l)}}class Assist extends r.XFAObject{constructor(e){super(d,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[r.$toHTML](){return this.toolTip&&this.toolTip[r.$content]?this.toolTip[r.$content]:null}}class Barcode extends r.XFAObject{constructor(e){super(d,"barcode",!0);this.charEncoding=(0,o.getKeyword)({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.checksum=(0,o.getStringOption)(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=(0,o.getInteger)({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=(0,o.getInteger)({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=(0,o.getStringOption)(e.dataPrep,["none","flateCompress"]);this.dataRowCount=(0,o.getInteger)({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=(0,o.getInteger)({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=(0,o.getMeasurement)(e.moduleHeight,"5mm");this.moduleWidth=(0,o.getMeasurement)(e.moduleWidth,"0.25mm");this.printCheckDigit=(0,o.getInteger)({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=(0,o.getRatio)(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=(0,o.getStringOption)(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=(0,o.getInteger)({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=(0,o.getStringOption)(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=(0,o.getStringOption)(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=(0,o.getRatio)(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends r.XFAObject{constructor(e){super(d,"bind",!0);this.match=(0,o.getStringOption)(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends r.XFAObject{constructor(e){super(d,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}t.BindItems=BindItems;class Bookend extends r.XFAObject{constructor(e){super(d,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends r.Option01{constructor(e){super(d,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$toHTML](e){return valueToHtml(1===this[r.$content]?"1":"0")}}class Border extends r.XFAObject{constructor(e){super(d,"border",!0);this.break=(0,o.getStringOption)(e.break,["close","open"]);this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new r.XFAObjectArray(4);this.edge=new r.XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[r.$getExtra](){if(!this[r.$extra]){const e=this.edge.children.slice();if(e.length<4){const t=e[e.length-1]||new Edge({});for(let a=e.length;a<4;a++)e.push(t)}const t=e.map((e=>e.thickness)),a=[0,0,0,0];if(this.margin){a[0]=this.margin.topInset;a[1]=this.margin.rightInset;a[2]=this.margin.bottomInset;a[3]=this.margin.leftInset}this[r.$extra]={widths:t,insets:a,edges:e}}return this[r.$extra]}[r.$toStyle](){const{edges:e}=this[r.$getExtra](),t=e.map((e=>{const t=e[r.$toStyle]();t.color=t.color||"#000000";return t})),a=Object.create(null);this.margin&&Object.assign(a,this.margin[r.$toStyle]());this.fill&&"visible"===this.fill.presence&&Object.assign(a,this.fill[r.$toStyle]());if(this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[r.$toStyle]()));if(2===e.length||3===e.length){const t=e[e.length-1];for(let a=e.length;a<4;a++)e.push(t)}a.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":a.borderStyle="";break;case"inactive":a.borderStyle="none";break;default:a.borderStyle=t.map((e=>e.style)).join(" ")}a.borderWidth=t.map((e=>e.width)).join(" ");a.borderColor=t.map((e=>e.color)).join(" ");return a}}class Break extends r.XFAObject{constructor(e){super(d,"break",!0);this.after=(0,o.getStringOption)(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=(0,o.getStringOption)(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=(0,o.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends r.XFAObject{constructor(e){super(d,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,o.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,o.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends r.XFAObject{constructor(e){super(d,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,o.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,o.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[r.$toHTML](e){this[r.$extra]={};return o.HTMLResult.FAILURE}}class Button extends r.XFAObject{constructor(e){super(d,"button",!0);this.highlight=(0,o.getStringOption)(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toHTML](e){const t=this[r.$getParent]()[r.$getParent](),a={name:"button",attributes:{id:this[r.$uid],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=(0,h.recoverJsURL)(e.script[r.$content]);if(!t)continue;const n=(0,s.fixURL)(t.url);n&&a.children.push({name:"a",attributes:{id:"link"+this[r.$uid],href:n,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return o.HTMLResult.success(a)}}class Calculate extends r.XFAObject{constructor(e){super(d,"calculate",!0);this.id=e.id||"";this.override=(0,o.getStringOption)(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends r.XFAObject{constructor(e){super(d,"caption",!0);this.id=e.id||"";this.placement=(0,o.getStringOption)(e.placement,["left","bottom","inline","right","top"]);this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil((0,o.getMeasurement)(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[r.$setValue](e){_setValue(this,e)}[r.$getExtra](e){if(!this[r.$extra]){let{width:t,height:a}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":a=this.reserve<=0?a:this.reserve}this[r.$extra]=(0,s.layoutNode)(this,{width:t,height:a})}return this[r.$extra]}[r.$toHTML](e){if(!this.value)return o.HTMLResult.EMPTY;this[r.$pushPara]();const t=this.value[r.$toHTML](e).html;if(!t){this[r.$popPara]();return o.HTMLResult.EMPTY}const a=this.reserve;if(this.reserve<=0){const{w:t,h:a}=this[r.$getExtra](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=a}}const n=[];"string"==typeof t?n.push({name:"#text",value:t}):n.push(t);const i=(0,s.toStyle)(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=(0,s.measureToString)(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=(0,s.measureToString)(this.reserve))}(0,s.setPara)(this,null,t);this[r.$popPara]();this.reserve=a;return o.HTMLResult.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:n})}}class Certificate extends r.StringObject{constructor(e){super(d,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends r.XFAObject{constructor(e){super(d,"certificates",!0);this.credentialServerPolicy=(0,o.getStringOption)(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends r.XFAObject{constructor(e){super(d,"checkButton",!0);this.id=e.id||"";this.mark=(0,o.getStringOption)(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=(0,o.getStringOption)(e.shape,["square","round"]);this.size=(0,o.getMeasurement)(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)("margin"),a=(0,s.measureToString)(this.size);t.width=t.height=a;let n,i,c;const l=this[r.$getParent]()[r.$getParent](),h=l.items.children.length&&l.items.children[0][r.$toHTML]().html||[],u={on:(void 0!==h[0]?h[0]:"on").toString(),off:(void 0!==h[1]?h[1]:"off").toString()},d=(l.value&&l.value[r.$text]()||"off")===u.on||void 0,f=l[r.$getSubformParent](),g=l[r.$uid];let p;if(f instanceof ExclGroup){c=f[r.$uid];n="radio";i="xfaRadio";p=f[r.$data]&&f[r.$data][r.$uid]||f[r.$uid]}else{n="checkbox";i="xfaCheckbox";p=l[r.$data]&&l[r.$data][r.$uid]||l[r.$uid]}const m={name:"input",attributes:{class:[i],style:t,fieldId:g,dataId:p,type:n,checked:d,xfaOn:u.on,xfaOff:u.off,"aria-label":ariaLabel(l)}};c&&(m.attributes.name=c);return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[m]})}}class ChoiceList extends r.XFAObject{constructor(e){super(d,"choiceList",!0);this.commitOn=(0,o.getStringOption)(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=(0,o.getStringOption)(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=(0,o.getInteger)({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","margin"),a=this[r.$getParent]()[r.$getParent](),n={fontSize:`calc(${a.font&&a.font.size||10}px * var(--zoom-factor))`},i=[];if(a.items.children.length>0){const e=a.items;let t=0,s=0;if(2===e.children.length){t=e.children[0].save;s=1-t}const o=e.children[t][r.$toHTML]().html,c=e.children[s][r.$toHTML]().html;let l=!1;const h=a.value&&a.value[r.$text]()||"";for(let e=0,t=o.length;ee>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends r.XFAObject{constructor(e){super(d,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=(0,o.getStringOption)(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends r.XFAObject{constructor(e){super(d,"contentArea",!0);this.h=(0,o.getMeasurement)(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=(0,o.getMeasurement)(e.w);this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null}[r.$toHTML](e){const t={left:(0,s.measureToString)(this.x),top:(0,s.measureToString)(this.y),width:(0,s.measureToString)(this.w),height:(0,s.measureToString)(this.h)},a=["xfaContentarea"];(0,s.isPrintOnly)(this)&&a.push("xfaPrintOnly");return o.HTMLResult.success({name:"div",children:[],attributes:{style:t,class:a,id:this[r.$uid]}})}}class Corner extends r.XFAObject{constructor(e){super(d,"corner",!0);this.id=e.id||"";this.inverted=(0,o.getInteger)({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=(0,o.getStringOption)(e.join,["square","round"]);this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.radius=(0,o.getMeasurement)(e.radius);this.stroke=(0,o.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,o.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"visibility");e.radius=(0,s.measureToString)("square"===this.join?0:this.radius);return e}}class DateElement extends r.ContentObject{constructor(e){super(d,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class DateTime extends r.ContentObject{constructor(e){super(d,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class DateTimeEdit extends r.XFAObject{constructor(e){super(d,"dateTimeEdit",!0);this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=(0,o.getStringOption)(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),a=this[r.$getParent]()[r.$getParent](),n={name:"input",attributes:{type:"text",fieldId:a[r.$uid],dataId:a[r.$data]&&a[r.$data][r.$uid]||a[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a)}};return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[n]})}}class Decimal extends r.ContentObject{constructor(e){super(d,"decimal");this.fracDigits=(0,o.getInteger)({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=(0,o.getInteger)({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseFloat(this[r.$content].trim());this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class DefaultUi extends r.XFAObject{constructor(e){super(d,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends r.XFAObject{constructor(e){super(d,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new r.XFAObjectArray;this.date=new r.XFAObjectArray;this.dateTime=new r.XFAObjectArray;this.decimal=new r.XFAObjectArray;this.exData=new r.XFAObjectArray;this.float=new r.XFAObjectArray;this.image=new r.XFAObjectArray;this.integer=new r.XFAObjectArray;this.text=new r.XFAObjectArray;this.time=new r.XFAObjectArray}}class DigestMethod extends r.OptionObject{constructor(e){super(d,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends r.XFAObject{constructor(e){super(d,"digestMethods",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new r.XFAObjectArray}}class Draw extends r.XFAObject{constructor(e){super(d,"draw",!0);this.anchorType=(0,o.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.rotate=(0,o.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new r.XFAObjectArray}[r.$setValue](e){_setValue(this,e)}[r.$toHTML](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return o.HTMLResult.EMPTY;(0,s.fixDimensions)(this);this[r.$pushPara]();const t=this.w,a=this.h,{w:n,h:c,isBroken:l}=(0,s.layoutNode)(this,e);if(n&&""===this.w){if(l&&this[r.$getSubformParent]()[r.$isThereMoreWidth]()){this[r.$popPara]();return o.HTMLResult.FAILURE}this.w=n}c&&""===this.h&&(this.h=c);setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e)){this.w=t;this.h=a;this[r.$popPara]();return o.HTMLResult.FAILURE}unsetFirstUnsplittable(this);const h=(0,s.toStyle)(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");(0,s.setMinMaxDimensions)(this,h);if(h.margin){h.padding=h.margin;delete h.margin}const u=["xfaDraw"];this.font&&u.push("xfaFont");(0,s.isPrintOnly)(this)&&u.push("xfaPrintOnly");const d={style:h,id:this[r.$uid],class:u};this.name&&(d.xfaName=this.name);const f={name:"div",attributes:d,children:[]};applyAssist(this,d);const g=(0,s.computeBbox)(this,f,e),p=this.value?this.value[r.$toHTML](e).html:null;if(null===p){this.w=t;this.h=a;this[r.$popPara]();return o.HTMLResult.success((0,s.createWrapper)(this,f),g)}f.children.push(p);(0,s.setPara)(this,h,p);this.w=t;this.h=a;this[r.$popPara]();return o.HTMLResult.success((0,s.createWrapper)(this,f),g)}}class Edge extends r.XFAObject{constructor(e){super(d,"edge",!0);this.cap=(0,o.getStringOption)(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=(0,o.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,o.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"visibility");Object.assign(e,{linecap:this.cap,width:(0,s.measureToString)(this.thickness),color:this.color?this.color[r.$toStyle]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends r.OptionObject{constructor(e){super(d,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends r.XFAObject{constructor(e){super(d,"encodings",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new r.XFAObjectArray}}class Encrypt extends r.XFAObject{constructor(e){super(d,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends r.XFAObject{constructor(e){super(d,"encryptData",!0);this.id=e.id||"";this.operation=(0,o.getStringOption)(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends r.XFAObject{constructor(e){super(d,"encryption",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new r.XFAObjectArray}}class EncryptionMethod extends r.OptionObject{constructor(e){super(d,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends r.XFAObject{constructor(e){super(d,"encryptionMethods",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new r.XFAObjectArray}}class Event extends r.XFAObject{constructor(e){super(d,"event",!0);this.activity=(0,o.getStringOption)(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=(0,o.getStringOption)(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends r.ContentObject{constructor(e){super(d,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=(0,o.getInteger)({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=(0,o.getStringOption)(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$isCDATAXml](){return"text/html"===this.contentType}[r.$onChild](e){if("text/html"===this.contentType&&e[r.$namespaceId]===n.NamespaceIds.xhtml.id){this[r.$content]=e;return!0}if("text/xml"===this.contentType){this[r.$content]=e;return!0}return!1}[r.$toHTML](e){return"text/html"===this.contentType&&this[r.$content]?this[r.$content][r.$toHTML](e):o.HTMLResult.EMPTY}}class ExObject extends r.XFAObject{constructor(e){super(d,"exObject",!0);this.archive=e.archive||"";this.classId=e.classId||"";this.codeBase=e.codeBase||"";this.codeType=e.codeType||"";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.boolean=new r.XFAObjectArray;this.date=new r.XFAObjectArray;this.dateTime=new r.XFAObjectArray;this.decimal=new r.XFAObjectArray;this.exData=new r.XFAObjectArray;this.exObject=new r.XFAObjectArray;this.float=new r.XFAObjectArray;this.image=new r.XFAObjectArray;this.integer=new r.XFAObjectArray;this.text=new r.XFAObjectArray;this.time=new r.XFAObjectArray}}class ExclGroup extends r.XFAObject{constructor(e){super(d,"exclGroup",!0);this.access=(0,o.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=(0,o.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,o.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new r.XFAObjectArray;this.event=new r.XFAObjectArray;this.field=new r.XFAObjectArray;this.setProperty=new r.XFAObjectArray}[r.$isBindable](){return!0}[r.$hasSettableValue](){return!0}[r.$setValue](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[r.$appendChild](e);t.value=e}t.value[r.$setValue](e)}}[r.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[r.$extra].attempt&&this[r.$extra].numberInLine>0||this[r.$getParent]()[r.$isThereMoreWidth]()}[r.$isSplittable](){const e=this[r.$getSubformParent]();if(!e[r.$isSplittable]())return!1;if(void 0!==this[r.$extra]._isSplittable)return this[r.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[r.$extra]._isSplittable=!1;return!1}if(e.layout&&e.layout.endsWith("-tb")&&0!==e[r.$extra].numberInLine)return!1;this[r.$extra]._isSplittable=!0;return!0}[r.$flushHTML](){return(0,i.flushHTML)(this)}[r.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[r.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[r.$toHTML](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return o.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],a={id:this[r.$uid],class:[]};(0,s.setAccess)(this,a.class);this[r.$extra]||(this[r.$extra]=Object.create(null));Object.assign(this[r.$extra],{children:t,attributes:a,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const n=this[r.$isSplittable]();n||setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e))return o.HTMLResult.FAILURE;const c=new Set(["field"]);if(this.layout.includes("row")){const e=this[r.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[r.$extra].columnWidths=e;this[r.$extra].currentColumn=0}}const l=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),h=["xfaExclgroup"],u=(0,s.layoutClass)(this);u&&h.push(u);(0,s.isPrintOnly)(this)&&h.push("xfaPrintOnly");a.style=l;a.class=h;this.name&&(a.xfaName=this.name);this[r.$pushPara]();const d="lr-tb"===this.layout||"rl-tb"===this.layout,f=d?2:1;for(;this[r.$extra].attempte>=1||-1===e});this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.rotate=(0,o.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new r.XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new r.XFAObjectArray;this.connect=new r.XFAObjectArray;this.event=new r.XFAObjectArray;this.setProperty=new r.XFAObjectArray}[r.$isBindable](){return!0}[r.$setValue](e){_setValue(this,e)}[r.$toHTML](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[r.$globalData]=this[r.$globalData];this[r.$appendChild](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[r.$appendChild](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return o.HTMLResult.EMPTY;this.caption&&delete this.caption[r.$extra];this[r.$pushPara]();const t=this.caption?this.caption[r.$toHTML](e).html:null,a=this.w,n=this.h;let c=0,h=0;if(this.margin){c=this.margin.leftInset+this.margin.rightInset;h=this.margin.topInset+this.margin.bottomInset}let u=null;if(""===this.w||""===this.h){let t=null,a=null,n=0,i=0;if(this.ui.checkButton)n=i=this.ui.checkButton.size;else{const{w:t,h:a}=(0,s.layoutNode)(this,e);if(null!==t){n=t;i=a}else i=(0,l.getMetrics)(this.font,!0).lineNoGap}u=getBorderDims(this.ui[r.$getExtra]());n+=u.w;i+=u.h;if(this.caption){const{w:s,h:c,isBroken:l}=this.caption[r.$getExtra](e);if(l&&this[r.$getSubformParent]()[r.$isThereMoreWidth]()){this[r.$popPara]();return o.HTMLResult.FAILURE}t=s;a=c;switch(this.caption.placement){case"left":case"right":case"inline":t+=n;break;case"top":case"bottom":a+=i}}else{t=n;a=i}if(t&&""===this.w){t+=c;this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends r.ContentObject{constructor(e){super(d,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseFloat(this[r.$content].trim());this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class Font extends r.XFAObject{constructor(e){super(d,"font",!0);this.baselineShift=(0,o.getMeasurement)(e.baselineShift);this.fontHorizontalScale=(0,o.getFloat)({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=(0,o.getFloat)({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=(0,o.getStringOption)(e.kerningMode,["none","pair"]);this.letterSpacing=(0,o.getMeasurement)(e.letterSpacing,"0");this.lineThrough=(0,o.getInteger)({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=(0,o.getStringOption)(e.lineThroughPeriod,["all","word"]);this.overline=(0,o.getInteger)({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=(0,o.getStringOption)(e.overlinePeriod,["all","word"]);this.posture=(0,o.getStringOption)(e.posture,["normal","italic"]);this.size=(0,o.getMeasurement)(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=(0,o.getInteger)({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=(0,o.getStringOption)(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=(0,o.getStringOption)(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[r.$clean](e){super[r.$clean](e);this[r.$globalData].usedTypefaces.add(this.typeface)}[r.$toStyle](){const e=(0,s.toStyle)(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=(0,s.measureToString)(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=(0,s.measureToString)(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=(0,s.measureToString)(.99*this.size);(0,s.setFontFamily)(this,this,this[r.$globalData].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends r.XFAObject{constructor(e){super(d,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends r.StringObject{constructor(e){super(d,"handler");this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends r.XFAObject{constructor(e){super(d,"hyphenation");this.excludeAllCaps=(0,o.getInteger)({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=(0,o.getInteger)({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=(0,o.getInteger)({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=(0,o.getInteger)({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=(0,o.getInteger)({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=(0,o.getInteger)({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends r.StringObject{constructor(e){super(d,"image");this.aspect=(0,o.getStringOption)(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=(0,o.getStringOption)(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$toHTML](){if(this.contentType&&!p.has(this.contentType.toLowerCase()))return o.HTMLResult.EMPTY;let e=this[r.$globalData].images&&this[r.$globalData].images.get(this.href);if(!e&&(this.href||!this[r.$content]))return o.HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=(0,c.stringToBytes)(atob(this[r.$content])));if(!e)return o.HTMLResult.EMPTY;if(!this.contentType){for(const[t,a]of m)if(e.length>t.length&&t.every(((t,a)=>t===e[a]))){this.contentType=a;break}if(!this.contentType)return o.HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let a;switch(this.aspect){case"fit":case"actual":break;case"height":a={height:"100%",objectFit:"fill"};break;case"none":a={width:"100%",height:"100%",objectFit:"fill"};break;case"width":a={width:"100%",objectFit:"fill"}}const n=this[r.$getParent]();return o.HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:a,src:URL.createObjectURL(t),alt:n?ariaLabel(n[r.$getParent]()):null}})}}class ImageEdit extends r.XFAObject{constructor(e){super(d,"imageEdit",!0);this.data=(0,o.getStringOption)(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){return"embed"===this.data?o.HTMLResult.success({name:"div",children:[],attributes:{}}):o.HTMLResult.EMPTY}}class Integer extends r.ContentObject{constructor(e){super(d,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseInt(this[r.$content].trim(),10);this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class Issuers extends r.XFAObject{constructor(e){super(d,"issuers",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new r.XFAObjectArray}}class Items extends r.XFAObject{constructor(e){super(d,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=(0,o.getInteger)({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new r.XFAObjectArray;this.date=new r.XFAObjectArray;this.dateTime=new r.XFAObjectArray;this.decimal=new r.XFAObjectArray;this.exData=new r.XFAObjectArray;this.float=new r.XFAObjectArray;this.image=new r.XFAObjectArray;this.integer=new r.XFAObjectArray;this.text=new r.XFAObjectArray;this.time=new r.XFAObjectArray}[r.$toHTML](){const e=[];for(const t of this[r.$getChildren]())e.push(t[r.$text]());return o.HTMLResult.success(e)}}t.Items=Items;class Keep extends r.XFAObject{constructor(e){super(d,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=(0,o.getStringOption)(e.intact,t);this.next=(0,o.getStringOption)(e.next,t);this.previous=(0,o.getStringOption)(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends r.XFAObject{constructor(e){super(d,"keyUsage");const t=["","yes","no"];this.crlSign=(0,o.getStringOption)(e.crlSign,t);this.dataEncipherment=(0,o.getStringOption)(e.dataEncipherment,t);this.decipherOnly=(0,o.getStringOption)(e.decipherOnly,t);this.digitalSignature=(0,o.getStringOption)(e.digitalSignature,t);this.encipherOnly=(0,o.getStringOption)(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=(0,o.getStringOption)(e.keyAgreement,t);this.keyCertSign=(0,o.getStringOption)(e.keyCertSign,t);this.keyEncipherment=(0,o.getStringOption)(e.keyEncipherment,t);this.nonRepudiation=(0,o.getStringOption)(e.nonRepudiation,t);this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends r.XFAObject{constructor(e){super(d,"line",!0);this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=(0,o.getStringOption)(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[r.$toHTML](){const e=this[r.$getParent]()[r.$getParent](),t=this.edge?this.edge:new Edge({}),a=t[r.$toStyle](),n=Object.create(null),i="visible"===t.presence?t.thickness:0;n.strokeWidth=(0,s.measureToString)(i);n.stroke=a.color;let c,l,h,u,d="100%",g="100%";if(e.w<=i){[c,l,h,u]=["50%",0,"50%","100%"];d=n.strokeWidth}else if(e.h<=i){[c,l,h,u]=[0,"50%","100%","50%"];g=n.strokeWidth}else"\\"===this.slope?[c,l,h,u]=[0,0,"100%","100%"]:[c,l,h,u]=[0,"100%","100%",0];const p={name:"svg",children:[{name:"line",attributes:{xmlns:f,x1:c,y1:l,x2:h,y2:u,style:n}}],attributes:{xmlns:f,width:d,height:g,style:{overflow:"visible"}}};if(hasMargin(e))return o.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[p]});p.attributes.style.position="absolute";return o.HTMLResult.success(p)}}class Linear extends r.XFAObject{constructor(e){super(d,"linear",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[r.$toStyle]():"#000000"})`}}class LockDocument extends r.ContentObject{constructor(e){super(d,"lockDocument");this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){this[r.$content]=(0,o.getStringOption)(this[r.$content],["auto","0","1"])}}class Manifest extends r.XFAObject{constructor(e){super(d,"manifest",!0);this.action=(0,o.getStringOption)(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new r.XFAObjectArray}}class Margin extends r.XFAObject{constructor(e){super(d,"margin",!0);this.bottomInset=(0,o.getMeasurement)(e.bottomInset,"0");this.id=e.id||"";this.leftInset=(0,o.getMeasurement)(e.leftInset,"0");this.rightInset=(0,o.getMeasurement)(e.rightInset,"0");this.topInset=(0,o.getMeasurement)(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toStyle](){return{margin:(0,s.measureToString)(this.topInset)+" "+(0,s.measureToString)(this.rightInset)+" "+(0,s.measureToString)(this.bottomInset)+" "+(0,s.measureToString)(this.leftInset)}}}class Mdp extends r.XFAObject{constructor(e){super(d,"mdp");this.id=e.id||"";this.permissions=(0,o.getInteger)({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=(0,o.getStringOption)(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends r.XFAObject{constructor(e){super(d,"medium");this.id=e.id||"";this.imagingBBox=(0,o.getBBox)(e.imagingBBox);this.long=(0,o.getMeasurement)(e.long);this.orientation=(0,o.getStringOption)(e.orientation,["portrait","landscape"]);this.short=(0,o.getMeasurement)(e.short);this.stock=e.stock||"";this.trayIn=(0,o.getStringOption)(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=(0,o.getStringOption)(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends r.XFAObject{constructor(e){super(d,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new r.XFAObjectArray}}class NumericEdit extends r.XFAObject{constructor(e){super(d,"numericEdit",!0);this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),a=this[r.$getParent]()[r.$getParent](),n={name:"input",attributes:{type:"text",fieldId:a[r.$uid],dataId:a[r.$data]&&a[r.$data][r.$uid]||a[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a)}};return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[n]})}}class Occur extends r.XFAObject{constructor(e){super(d,"occur",!0);this.id=e.id||"";this.initial=""!==e.initial?(0,o.getInteger)({data:e.initial,defaultValue:"",validate:e=>!0}):"";this.max=""!==e.max?(0,o.getInteger)({data:e.max,defaultValue:1,validate:e=>!0}):"";this.min=""!==e.min?(0,o.getInteger)({data:e.min,defaultValue:1,validate:e=>!0}):"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$clean](){const e=this[r.$getParent](),t=this.min;""===this.min&&(this.min=e instanceof PageArea||e instanceof PageSet?0:1);""===this.max&&(this.max=""===t?e instanceof PageArea||e instanceof PageSet?-1:1:this.min);-1!==this.max&&this.max!0});this.name=e.name||"";this.numbered=(0,o.getInteger)({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=(0,o.getStringOption)(e.oddOrEven,["any","even","odd"]);this.pagePosition=(0,o.getStringOption)(e.pagePosition,["any","first","last","only","rest"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new r.XFAObjectArray;this.contentArea=new r.XFAObjectArray;this.draw=new r.XFAObjectArray;this.exclGroup=new r.XFAObjectArray;this.field=new r.XFAObjectArray;this.subform=new r.XFAObjectArray}[r.$isUsable](){if(!this[r.$extra]){this[r.$extra]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[r.$extra].numberOfUsee.oddOrEven===t&&e.pagePosition===a));if(n)return n;n=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===a));if(n)return n;n=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition));return n||this.pageArea.children[0]}}class Para extends r.XFAObject{constructor(e){super(d,"para",!0);this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?(0,o.getMeasurement)(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?(0,o.getMeasurement)(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?(0,o.getMeasurement)(e.marginRight,"0pt"):"";this.orphans=(0,o.getInteger)({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?(0,o.getMeasurement)(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?(0,o.getMeasurement)(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?(0,o.getMeasurement)(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?(0,o.getMeasurement)(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map(((e,t)=>t%2==1?(0,o.getMeasurement)(e):e));this.textIndent=e.textIndent?(0,o.getMeasurement)(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=(0,o.getStringOption)(e.vAlign,["top","bottom","middle"]);this.widows=(0,o.getInteger)({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=(0,s.measureToString)(this.marginLeft));""!==this.marginRight&&(e.paddingight=(0,s.measureToString)(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=(0,s.measureToString)(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=(0,s.measureToString)(this.spaceBelow));if(""!==this.textIndent){e.textIndent=(0,s.measureToString)(this.textIndent);(0,s.fixTextIndent)(e)}this.lineHeight>0&&(e.lineHeight=(0,s.measureToString)(this.lineHeight));""!==this.tabDefault&&(e.tabSize=(0,s.measureToString)(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[r.$toStyle]());return e}}class PasswordEdit extends r.XFAObject{constructor(e){super(d,"passwordEdit",!0);this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class Pattern extends r.XFAObject{constructor(e){super(d,"pattern",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";const t=this.color?this.color[r.$toStyle]():"#000000",a="repeating-linear-gradient",n=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${a}(to top,${n}) ${a}(to right,${n})`;case"crossDiagonal":return`${a}(45deg,${n}) ${a}(-45deg,${n})`;case"diagonalLeft":return`${a}(45deg,${n})`;case"diagonalRight":return`${a}(-45deg,${n})`;case"horizontal":return`${a}(to top,${n})`;case"vertical":return`${a}(to right,${n})`}return""}}class Picture extends r.StringObject{constructor(e){super(d,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends r.XFAObject{constructor(e){super(d,"proto",!0);this.appearanceFilter=new r.XFAObjectArray;this.arc=new r.XFAObjectArray;this.area=new r.XFAObjectArray;this.assist=new r.XFAObjectArray;this.barcode=new r.XFAObjectArray;this.bindItems=new r.XFAObjectArray;this.bookend=new r.XFAObjectArray;this.boolean=new r.XFAObjectArray;this.border=new r.XFAObjectArray;this.break=new r.XFAObjectArray;this.breakAfter=new r.XFAObjectArray;this.breakBefore=new r.XFAObjectArray;this.button=new r.XFAObjectArray;this.calculate=new r.XFAObjectArray;this.caption=new r.XFAObjectArray;this.certificate=new r.XFAObjectArray;this.certificates=new r.XFAObjectArray;this.checkButton=new r.XFAObjectArray;this.choiceList=new r.XFAObjectArray;this.color=new r.XFAObjectArray;this.comb=new r.XFAObjectArray;this.connect=new r.XFAObjectArray;this.contentArea=new r.XFAObjectArray;this.corner=new r.XFAObjectArray;this.date=new r.XFAObjectArray;this.dateTime=new r.XFAObjectArray;this.dateTimeEdit=new r.XFAObjectArray;this.decimal=new r.XFAObjectArray;this.defaultUi=new r.XFAObjectArray;this.desc=new r.XFAObjectArray;this.digestMethod=new r.XFAObjectArray;this.digestMethods=new r.XFAObjectArray;this.draw=new r.XFAObjectArray;this.edge=new r.XFAObjectArray;this.encoding=new r.XFAObjectArray;this.encodings=new r.XFAObjectArray;this.encrypt=new r.XFAObjectArray;this.encryptData=new r.XFAObjectArray;this.encryption=new r.XFAObjectArray;this.encryptionMethod=new r.XFAObjectArray;this.encryptionMethods=new r.XFAObjectArray;this.event=new r.XFAObjectArray;this.exData=new r.XFAObjectArray;this.exObject=new r.XFAObjectArray;this.exclGroup=new r.XFAObjectArray;this.execute=new r.XFAObjectArray;this.extras=new r.XFAObjectArray;this.field=new r.XFAObjectArray;this.fill=new r.XFAObjectArray;this.filter=new r.XFAObjectArray;this.float=new r.XFAObjectArray;this.font=new r.XFAObjectArray;this.format=new r.XFAObjectArray;this.handler=new r.XFAObjectArray;this.hyphenation=new r.XFAObjectArray;this.image=new r.XFAObjectArray;this.imageEdit=new r.XFAObjectArray;this.integer=new r.XFAObjectArray;this.issuers=new r.XFAObjectArray;this.items=new r.XFAObjectArray;this.keep=new r.XFAObjectArray;this.keyUsage=new r.XFAObjectArray;this.line=new r.XFAObjectArray;this.linear=new r.XFAObjectArray;this.lockDocument=new r.XFAObjectArray;this.manifest=new r.XFAObjectArray;this.margin=new r.XFAObjectArray;this.mdp=new r.XFAObjectArray;this.medium=new r.XFAObjectArray;this.message=new r.XFAObjectArray;this.numericEdit=new r.XFAObjectArray;this.occur=new r.XFAObjectArray;this.oid=new r.XFAObjectArray;this.oids=new r.XFAObjectArray;this.overflow=new r.XFAObjectArray;this.pageArea=new r.XFAObjectArray;this.pageSet=new r.XFAObjectArray;this.para=new r.XFAObjectArray;this.passwordEdit=new r.XFAObjectArray;this.pattern=new r.XFAObjectArray;this.picture=new r.XFAObjectArray;this.radial=new r.XFAObjectArray;this.reason=new r.XFAObjectArray;this.reasons=new r.XFAObjectArray;this.rectangle=new r.XFAObjectArray;this.ref=new r.XFAObjectArray;this.script=new r.XFAObjectArray;this.setProperty=new r.XFAObjectArray;this.signData=new r.XFAObjectArray;this.signature=new r.XFAObjectArray;this.signing=new r.XFAObjectArray;this.solid=new r.XFAObjectArray;this.speak=new r.XFAObjectArray;this.stipple=new r.XFAObjectArray;this.subform=new r.XFAObjectArray;this.subformSet=new r.XFAObjectArray;this.subjectDN=new r.XFAObjectArray;this.subjectDNs=new r.XFAObjectArray;this.submit=new r.XFAObjectArray;this.text=new r.XFAObjectArray;this.textEdit=new r.XFAObjectArray;this.time=new r.XFAObjectArray;this.timeStamp=new r.XFAObjectArray;this.toolTip=new r.XFAObjectArray;this.traversal=new r.XFAObjectArray;this.traverse=new r.XFAObjectArray;this.ui=new r.XFAObjectArray;this.validate=new r.XFAObjectArray;this.value=new r.XFAObjectArray;this.variables=new r.XFAObjectArray}}class Radial extends r.XFAObject{constructor(e){super(d,"radial",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";const t=this.color?this.color[r.$toStyle]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends r.StringObject{constructor(e){super(d,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends r.XFAObject{constructor(e){super(d,"reasons",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new r.XFAObjectArray}}class Rectangle extends r.XFAObject{constructor(e){super(d,"rectangle",!0);this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new r.XFAObjectArray(4);this.edge=new r.XFAObjectArray(4);this.fill=null}[r.$toHTML](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[r.$toStyle](),a=Object.create(null);this.fill&&"visible"===this.fill.presence?Object.assign(a,this.fill[r.$toStyle]()):a.fill="transparent";a.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);a.stroke=t.color;const n=(this.corner.children.length?this.corner.children[0]:new Corner({}))[r.$toStyle](),i={name:"svg",children:[{name:"rect",attributes:{xmlns:f,width:"100%",height:"100%",x:0,y:0,rx:n.radius,ry:n.radius,style:a}}],attributes:{xmlns:f,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[r.$getParent]()[r.$getParent]()))return o.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[i]});i.attributes.style.position="absolute";return o.HTMLResult.success(i)}}class RefElement extends r.StringObject{constructor(e){super(d,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends r.StringObject{constructor(e){super(d,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=(0,o.getStringOption)(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends r.XFAObject{constructor(e){super(d,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}t.SetProperty=SetProperty;class SignData extends r.XFAObject{constructor(e){super(d,"signData",!0);this.id=e.id||"";this.operation=(0,o.getStringOption)(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends r.XFAObject{constructor(e){super(d,"signature",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends r.XFAObject{constructor(e){super(d,"signing",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new r.XFAObjectArray}}class Solid extends r.XFAObject{constructor(e){super(d,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toStyle](e){return e?e[r.$toStyle]():"#FFFFFF"}}class Speak extends r.StringObject{constructor(e){super(d,"speak");this.disable=(0,o.getInteger)({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=(0,o.getStringOption)(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends r.XFAObject{constructor(e){super(d,"stipple",!0);this.id=e.id||"";this.rate=(0,o.getInteger)({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){const t=this.rate/100;return c.Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends r.XFAObject{constructor(e){super(d,"subform",!0);this.access=(0,o.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=(0,o.getInteger)({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=(0,o.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map((e=>"-1"===e?-1:(0,o.getMeasurement)(e)));this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,o.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.mergeMode=(0,o.getStringOption)(e.mergeMode,["consumeData","matchTemplate"]);this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.restoreState=(0,o.getStringOption)(e.restoreState,["manual","auto"]);this.scope=(0,o.getStringOption)(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new r.XFAObjectArray;this.breakAfter=new r.XFAObjectArray;this.breakBefore=new r.XFAObjectArray;this.connect=new r.XFAObjectArray;this.draw=new r.XFAObjectArray;this.event=new r.XFAObjectArray;this.exObject=new r.XFAObjectArray;this.exclGroup=new r.XFAObjectArray;this.field=new r.XFAObjectArray;this.proto=new r.XFAObjectArray;this.setProperty=new r.XFAObjectArray;this.subform=new r.XFAObjectArray;this.subformSet=new r.XFAObjectArray}[r.$getSubformParent](){const e=this[r.$getParent]();return e instanceof SubformSet?e[r.$getSubformParent]():e}[r.$isBindable](){return!0}[r.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[r.$extra].attempt&&this[r.$extra].numberInLine>0||this[r.$getParent]()[r.$isThereMoreWidth]()}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$flushHTML](){return(0,i.flushHTML)(this)}[r.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[r.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[r.$isSplittable](){const e=this[r.$getSubformParent]();if(!e[r.$isSplittable]())return!1;if(void 0!==this[r.$extra]._isSplittable)return this[r.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[r.$extra]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[r.$extra]._isSplittable=!1;return!1}if(e.layout&&e.layout.endsWith("-tb")&&0!==e[r.$extra].numberInLine)return!1;this[r.$extra]._isSplittable=!0;return!0}[r.$toHTML](e){setTabIndex(this);if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.overflow.push(e)}this[r.$removeChild](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return o.HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&(0,c.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return o.HTMLResult.breakNode(e)}if(this[r.$extra]&&this[r.$extra].afterBreakAfter)return o.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],a={id:this[r.$uid],class:[]};(0,s.setAccess)(this,a.class);this[r.$extra]||(this[r.$extra]=Object.create(null));Object.assign(this[r.$extra],{children:t,line:null,attributes:a,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const n=this[r.$getTemplateRoot](),l=n[r.$extra].noLayoutFailure,h=this[r.$isSplittable]();h||setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e))return o.HTMLResult.FAILURE;const u=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[r.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[r.$extra].columnWidths=e;this[r.$extra].currentColumn=0}}const d=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),f=["xfaSubform"],g=(0,s.layoutClass)(this);g&&f.push(g);a.style=d;a.class=f;this.name&&(a.xfaName=this.name);if(this.overflow){const t=this.overflow[r.$getExtra]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[r.$pushPara]();const p="lr-tb"===this.layout||"rl-tb"===this.layout,m=p?2:1;for(;this[r.$extra].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[r.$extra].afterBreakAfter=C;return o.HTMLResult.breakNode(e)}}delete this[r.$extra];return C}}class SubformSet extends r.XFAObject{constructor(e){super(d,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=(0,o.getStringOption)(e.relation,["ordered","choice","unordered"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new r.XFAObjectArray;this.breakBefore=new r.XFAObjectArray;this.subform=new r.XFAObjectArray;this.subformSet=new r.XFAObjectArray}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$getSubformParent](){let e=this[r.$getParent]();for(;!(e instanceof Subform);)e=e[r.$getParent]();return e}[r.$isBindable](){return!0}}class SubjectDN extends r.ContentObject{constructor(e){super(d,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){this[r.$content]=new Map(this[r.$content].split(this.delimiter).map((e=>{(e=e.split("=",2))[0]=e[0].trim();return e})))}}class SubjectDNs extends r.XFAObject{constructor(e){super(d,"subjectDNs",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new r.XFAObjectArray}}class Submit extends r.XFAObject{constructor(e){super(d,"submit",!0);this.embedPDF=(0,o.getInteger)({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=(0,o.getStringOption)(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=(0,o.getKeyword)({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new r.XFAObjectArray;this.signData=new r.XFAObjectArray}}class Template extends r.XFAObject{constructor(e){super(d,"template",!0);this.baseProfile=(0,o.getStringOption)(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new r.XFAObjectArray}[r.$finalize](){0===this.subform.children.length&&(0,c.warn)("XFA - No subforms in template node.");this.subform.children.length>=2&&(0,c.warn)("XFA - Several subforms in template node: please file a bug.");this[r.$tabIndex]=5e3}[r.$isSplittable](){return!0}[r.$searchNode](e,t){return e.startsWith("#")?[this[r.$ids].get(e.slice(1))]:(0,u.searchNode)(this,t,e,!0,!0)}*[r.$toPages](){if(!this.subform.children.length)return o.HTMLResult.success({name:"div",children:[]});this[r.$extra]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const e=this.subform.children[0];e.pageSet[r.$cleanPage]();const t=e.pageSet.pageArea.children,a={name:"div",children:[]};let n=null,i=null,s=null;if(e.breakBefore.children.length>=1){i=e.breakBefore.children[0];s=i.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){i=e.subform.children[0].breakBefore.children[0];s=i.target}else if(e.break&&e.break.beforeTarget){i=e.break;s=i.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break&&e.subform.children[0].break.beforeTarget){i=e.subform.children[0].break;s=i.beforeTarget}if(i){const e=this[r.$searchNode](s,i[r.$getParent]());if(e instanceof PageArea){n=e;i[r.$extra]={}}}n||(n=t[0]);n[r.$extra]={numberOfUse:1};const l=n[r.$getParent]();l[r.$extra]={numberOfUse:1,pageIndex:l.pageArea.children.indexOf(n),pageSetIndex:0};let h,u=null,d=null,f=!0,g=0,p=0;for(;;){if(f)g=0;else{a.children.pop();if(3==++g){(0,c.warn)("XFA - Something goes wrong: please file a bug.");return a}}h=null;this[r.$extra].currentPageArea=n;const t=n[r.$toHTML]().html;a.children.push(t);if(u){this[r.$extra].noLayoutFailure=!0;t.children.push(u[r.$toHTML](n[r.$extra].space).html);u=null}if(d){this[r.$extra].noLayoutFailure=!0;t.children.push(d[r.$toHTML](n[r.$extra].space).html);d=null}const i=n.contentArea.children,s=t.children.filter((e=>e.attributes.class.includes("xfaContentarea")));f=!1;this[r.$extra].firstUnsplittable=null;this[r.$extra].noLayoutFailure=!1;const flush=t=>{const a=e[r.$flushHTML]();if(a){f=f||a.children&&0!==a.children.length;s[t].children.push(a)}};for(let t=p,n=i.length;t1&&a.children.pop();return a}if(c.isBreak()){const e=c.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){u=this[r.$searchNode](e.leader,e[r.$getParent]());u=u?u[0]:null}if(e.trailer){d=this[r.$searchNode](e.trailer,e[r.$getParent]());d=d?d[0]:null}if("pageArea"===e.targetType){h=e[r.$extra].target;t=1/0}else if(e[r.$extra].target){h=e[r.$extra].target;p=e[r.$extra].index+1;t=1/0}else t=e[r.$extra].index}else if(this[r.$extra].overflowNode){const e=this[r.$extra].overflowNode;this[r.$extra].overflowNode=null;const a=e[r.$getExtra](),n=a.target;a.addLeader=null!==a.leader;a.addTrailer=null!==a.trailer;flush(t);const s=t;t=1/0;if(n instanceof PageArea)h=n;else if(n instanceof ContentArea){const e=i.findIndex((e=>e===n));if(-1!==e)e>s?t=e-1:p=e;else{h=n[r.$getParent]();p=h.contentArea.children.findIndex((e=>e===n))}}}else flush(t)}this[r.$extra].pageNumber+=1;h&&(h[r.$isUsable]()?h[r.$extra].numberOfUse+=1:h=null);n=h||n[r.$getNextPage]();yield null}}}t.Template=Template;class Text extends r.ContentObject{constructor(e){super(d,"text");this.id=e.id||"";this.maxChars=(0,o.getInteger)({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$acceptWhitespace](){return!0}[r.$onChild](e){if(e[r.$namespaceId]===n.NamespaceIds.xhtml.id){this[r.$content]=e;return!0}(0,c.warn)(`XFA - Invalid content in Text: ${e[r.$nodeName]}.`);return!1}[r.$onText](e){this[r.$content]instanceof r.XFAObject||super[r.$onText](e)}[r.$finalize](){"string"==typeof this[r.$content]&&(this[r.$content]=this[r.$content].replace(/\r\n/g,"\n"))}[r.$getExtra](){return"string"==typeof this[r.$content]?this[r.$content].split(/[\u2029\u2028\n]/).reduce(((e,t)=>{t&&e.push(t);return e}),[]).join("\n"):this[r.$content][r.$text]()}[r.$toHTML](e){if("string"==typeof this[r.$content]){const e=valueToHtml(this[r.$content]).html;if(this[r.$content].includes("\u2029")){e.name="div";e.children=[];this[r.$content].split("\u2029").map((e=>e.split(/[\u2028\n]/).reduce(((e,t)=>{e.push({name:"span",value:t},{name:"br"});return e}),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))}else if(/[\u2028\n]/.test(this[r.$content])){e.name="div";e.children=[];this[r.$content].split(/[\u2028\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))}return o.HTMLResult.success(e)}return this[r.$content][r.$toHTML](e)}}t.Text=Text;class TextEdit extends r.XFAObject{constructor(e){super(d,"textEdit",!0);this.allowRichText=(0,o.getInteger)({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=(0,o.getInteger)({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=(0,o.getStringOption)(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin");let a;const n=this[r.$getParent]()[r.$getParent]();""===this.multiLine&&(this.multiLine=n instanceof Draw?1:0);a=1===this.multiLine?{name:"textarea",attributes:{dataId:n[r.$data]&&n[r.$data][r.$uid]||n[r.$uid],fieldId:n[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n)}}:{name:"input",attributes:{type:"text",dataId:n[r.$data]&&n[r.$data][r.$uid]||n[r.$uid],fieldId:n[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n)}};return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Time extends r.StringObject{constructor(e){super(d,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class TimeStamp extends r.XFAObject{constructor(e){super(d,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends r.StringObject{constructor(e){super(d,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends r.XFAObject{constructor(e){super(d,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new r.XFAObjectArray}}class Traverse extends r.XFAObject{constructor(e){super(d,"traverse",!0);this.id=e.id||"";this.operation=(0,o.getStringOption)(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[r.$isTransparent](){return!1}}class Ui extends r.XFAObject{constructor(e){super(d,"ui",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null;this.barcode=null;this.button=null;this.checkButton=null;this.choiceList=null;this.dateTimeEdit=null;this.defaultUi=null;this.imageEdit=null;this.numericEdit=null;this.passwordEdit=null;this.signature=null;this.textEdit=null}[r.$getExtra](){if(void 0===this[r.$extra]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof r.XFAObject){this[r.$extra]=t;return t}}this[r.$extra]=null}return this[r.$extra]}[r.$toHTML](e){const t=this[r.$getExtra]();return t?t[r.$toHTML](e):o.HTMLResult.EMPTY}}class Validate extends r.XFAObject{constructor(e){super(d,"validate",!0);this.formatTest=(0,o.getStringOption)(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=(0,o.getStringOption)(e.nullTest,["disabled","error","warning"]);this.scriptTest=(0,o.getStringOption)(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends r.XFAObject{constructor(e){super(d,"value",!0);this.id=e.id||"";this.override=(0,o.getInteger)({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[r.$setValue](e){const t=this[r.$getParent]();if(t instanceof Field&&t.ui&&t.ui.imageEdit){if(!this.image){this.image=new Image({});this[r.$appendChild](this.image)}this.image[r.$content]=e[r.$content];return}const a=e[r.$nodeName];if(null===this[a]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof r.XFAObject){this[e]=null;this[r.$removeChild](t)}}this[e[r.$nodeName]]=e;this[r.$appendChild](e)}else this[a][r.$content]=e[r.$content]}[r.$text](){if(this.exData)return"string"==typeof this.exData[r.$content]?this.exData[r.$content].trim():this.exData[r.$content][r.$text]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof r.XFAObject)return(t[r.$content]||"").toString().trim()}return null}[r.$toHTML](e){for(const t of Object.getOwnPropertyNames(this)){const a=this[t];if(a instanceof r.XFAObject)return a[r.$toHTML](e)}return o.HTMLResult.EMPTY}}t.Value=Value;class Variables extends r.XFAObject{constructor(e){super(d,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new r.XFAObjectArray;this.date=new r.XFAObjectArray;this.dateTime=new r.XFAObjectArray;this.decimal=new r.XFAObjectArray;this.exData=new r.XFAObjectArray;this.float=new r.XFAObjectArray;this.image=new r.XFAObjectArray;this.integer=new r.XFAObjectArray;this.manifest=new r.XFAObjectArray;this.script=new r.XFAObjectArray;this.text=new r.XFAObjectArray;this.time=new r.XFAObjectArray}[r.$isTransparent](){return!0}}class TemplateNamespace{static[n.$buildXFAObject](e,t){if(TemplateNamespace.hasOwnProperty(e)){const a=TemplateNamespace[e](t);a[r.$setSetAttributes](t);return a}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}t.TemplateNamespace=TemplateNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.addHTML=function addHTML(e,t,a){const i=e[r.$extra],s=i.availableSpace,[o,c,l,h]=a;switch(e.layout){case"position":i.width=Math.max(i.width,o+l);i.height=Math.max(i.height,c+h);i.children.push(t);break;case"lr-tb":case"rl-tb":if(!i.line||1===i.attempt){i.line=createLine(e,[]);i.children.push(i.line);i.numberInLine=0}i.numberInLine+=1;i.line.children.push(t);if(0===i.attempt){i.currentWidth+=l;i.height=Math.max(i.height,i.prevHeight+h)}else{i.currentWidth=l;i.prevHeight=i.height;i.height+=h;i.attempt=0}i.width=Math.max(i.width,i.currentWidth);break;case"rl-row":case"row":{i.children.push(t);i.width+=l;i.height=Math.max(i.height,h);const e=(0,n.measureToString)(i.height);for(const t of i.children)t.attributes.style.height=e;break}case"table":case"tb":i.width=Math.min(s.width,Math.max(i.width,l));i.height+=h;i.children.push(t)}};t.checkDimensions=function checkDimensions(e,t){if(null===e[r.$getTemplateRoot]()[r.$extra].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const a=e[r.$getSubformParent](),n=a[r.$extra]&&a[r.$extra].attempt||0,[,i,s,o]=function getTransformedBBox(e){let t,a,r=""===e.w?NaN:e.w,n=""===e.h?NaN:e.h,[i,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[i,s]=[r/2,n];break;case"bottomLeft":[i,s]=[0,n];break;case"bottomRight":[i,s]=[r,n];break;case"middleCenter":[i,s]=[r/2,n/2];break;case"middleLeft":[i,s]=[0,n/2];break;case"middleRight":[i,s]=[r,n/2];break;case"topCenter":[i,s]=[r/2,0];break;case"topRight":[i,s]=[r,0]}switch(e.rotate||0){case 0:[t,a]=[-i,-s];break;case 90:[t,a]=[-s,i];[r,n]=[n,-r];break;case 180:[t,a]=[i,s];[r,n]=[-r,-n];break;case 270:[t,a]=[s,-i];[r,n]=[-n,r]}return[e.x+t+Math.min(0,r),e.y+a+Math.min(0,n),Math.abs(r),Math.abs(n)]}(e);switch(a.layout){case"lr-tb":case"rl-tb":return 0===n?e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure?""!==e.w?Math.round(s-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(o-t.height)>2)&&(""!==e.w?Math.round(s-t.width)<=2||0===a[r.$extra].numberInLine&&t.height>2:t.width>2):!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||!(""!==e.h&&Math.round(o-t.height)>2)&&((""===e.w||Math.round(s-t.width)<=2||!a[r.$isThereMoreWidth]())&&t.height>2);case"table":case"tb":return!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||(""===e.h||e[r.$isSplittable]()?(""===e.w||Math.round(s-t.width)<=2||!a[r.$isThereMoreWidth]())&&t.height>2:Math.round(o-t.height)<=2);case"position":if(e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure)return!0;if(""===e.h||Math.round(o+i-t.height)<=2)return!0;const c=e[r.$getTemplateRoot]()[r.$extra].currentContentArea;return o+i>c.h;case"rl-row":case"row":return!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||(""===e.h||Math.round(o-t.height)<=2);default:return!0}};t.flushHTML=function flushHTML(e){if(!e[r.$extra])return null;const t={name:"div",attributes:e[r.$extra].attributes,children:e[r.$extra].children};if(e[r.$extra].failingNode){const a=e[r.$extra].failingNode[r.$flushHTML]();a&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[a])):t.children.push(a))}if(0===t.children.length)return null;return t};t.getAvailableSpace=function getAvailableSpace(e){const t=e[r.$extra].availableSpace,a=e.margin?e.margin.topInset+e.margin.bottomInset:0,n=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[r.$extra].attempt?{width:t.width-n-e[r.$extra].currentWidth,height:t.height-a-e[r.$extra].prevHeight}:{width:t.width-n,height:t.height-a-e[r.$extra].height};case"rl-row":case"row":return{width:e[r.$extra].columnWidths.slice(e[r.$extra].currentColumn).reduce(((e,t)=>e+t)),height:t.height-n};case"table":case"tb":return{width:t.width-n,height:t.height-a-e[r.$extra].height};default:return t}};var r=a(77),n=a(84);function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.computeBbox=function computeBbox(e,t,a){let n;if(""!==e.w&&""!==e.h)n=[e.x,e.y,e.w,e.h];else{if(!a)return null;let i=e.w;if(""===i){if(0===e.maxW){const t=e[r.$getSubformParent]();i="position"===t.layout&&""!==t.w?0:e.minW}else i=Math.min(e.maxW,a.width);t.attributes.style.width=measureToString(i)}let s=e.h;if(""===s){if(0===e.maxH){const t=e[r.$getSubformParent]();s="position"===t.layout&&""!==t.h?0:e.minH}else s=Math.min(e.maxH,a.height);t.attributes.style.height=measureToString(s)}n=[e.x,e.y,i,s]}return n};t.createWrapper=function createWrapper(e,t){const{attributes:a}=t,{style:n}=a,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};a.class.push("xfaWrapped");if(e.border){const{widths:a,insets:s}=e.border[r.$extra];let o,c,l=s[0],h=s[3];const u=s[0]+s[2],d=s[1]+s[3];switch(e.border.hand){case"even":l-=a[0]/2;h-=a[3]/2;o=`calc(100% + ${(a[1]+a[3])/2-d}px)`;c=`calc(100% + ${(a[0]+a[2])/2-u}px)`;break;case"left":l-=a[0];h-=a[3];o=`calc(100% + ${a[1]+a[3]-d}px)`;c=`calc(100% + ${a[0]+a[2]-u}px)`;break;case"right":o=d?`calc(100% - ${d}px)`:"100%";c=u?`calc(100% - ${u}px)`:"100%"}const f=["xfaBorder"];isPrintOnly(e.border)&&f.push("xfaPrintOnly");const g={name:"div",attributes:{class:f,style:{top:`${l}px`,left:`${h}px`,width:o,height:c}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==n[e]){g.attributes.style[e]=n[e];delete n[e]}i.children.push(g,t)}else i.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==n[e]){i.attributes.style[e]=n[e];delete n[e]}"absolute"===n.position?i.attributes.style.position="absolute":i.attributes.style.position="relative";delete n.position;if(n.alignSelf){i.attributes.style.alignSelf=n.alignSelf;delete n.alignSelf}return i};t.fixDimensions=function fixDimensions(e){const t=e[r.$getSubformParent]();if(t.layout&&t.layout.includes("row")){const a=t[r.$extra],n=e.colSpan;let i;i=-1===n?a.columnWidths.slice(a.currentColumn).reduce(((e,t)=>e+t),0):a.columnWidths.slice(a.currentColumn,a.currentColumn+n).reduce(((e,t)=>e+t),0);isNaN(i)||(e.w=i)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))};t.fixTextIndent=function fixTextIndent(e){const t=(0,i.getMeasurement)(e.textIndent,"0px");if(t>=0)return;const a="padding"+("left"==("right"===e.textAlign?"right":"left")?"Left":"Right"),r=(0,i.getMeasurement)(e[a],"0px");e[a]=r-t+"px"};t.fixURL=function fixURL(e){const t=(0,n.createValidAbsoluteUrl)(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null};t.isPrintOnly=isPrintOnly;t.layoutClass=function layoutClass(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}};t.layoutNode=function layoutNode(e,t){let a=null,n=null,i=!1;if((!e.w||!e.h)&&e.value){let s=0,o=0;if(e.margin){s=e.margin.leftInset+e.margin.rightInset;o=e.margin.topInset+e.margin.bottomInset}let c=null,l=null;if(e.para){l=Object.create(null);c=""===e.para.lineHeight?null:e.para.lineHeight;l.top=""===e.para.spaceAbove?0:e.para.spaceAbove;l.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;l.left=""===e.para.marginLeft?0:e.para.marginLeft;l.right=""===e.para.marginRight?0:e.para.marginRight}let h=e.font;if(!h){const t=e[r.$getTemplateRoot]();let a=e[r.$getParent]();for(;a&&a!==t;){if(a.font){h=a.font;break}a=a[r.$getParent]()}}const u=(e.w?e.w:t.width)-s,d=e[r.$globalData].fontFinder;if(e.value.exData&&e.value.exData[r.$content]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[r.$content],h,l,c,d,u);n=t.width;a=t.height;i=t.isBroken}else{const t=e.value[r.$text]();if(t){const e=layoutText(t,h,l,c,d,u);n=e.width;a=e.height;i=e.isBroken}}null===n||e.w||(n+=s);null===a||e.h||(a+=o)}return{w:n,h:a,isBroken:i}};t.measureToString=measureToString;t.setAccess=function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}};t.setFontFamily=function setFontFamily(e,t,a,r){if(!a){delete r.fontFamily;return}const n=(0,i.stripQuotes)(e.typeface);r.fontFamily=`"${n}"`;const o=a.find(n);if(o){const{fontFamily:a}=o.regular.cssFontInfo;a!==n&&(r.fontFamily=`"${a}"`);const i=getCurrentPara(t);if(i&&""!==i.lineHeight)return;if(r.lineHeight)return;const c=(0,s.selectFont)(e,o);c&&(r.lineHeight=Math.max(1.2,c.lineHeight))}};t.setMinMaxDimensions=function setMinMaxDimensions(e,t){if("position"===e[r.$getSubformParent]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}};t.setPara=function setPara(e,t,a){if(a.attributes.class&&a.attributes.class.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const n=getCurrentPara(e);if(n){const e=a.attributes.style;e.display="flex";e.flexDirection="column";switch(n.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=n[r.$toStyle]();for(const[a,r]of Object.entries(t))a in e||(e[a]=r)}}};t.toStyle=function toStyle(e,...t){const a=Object.create(null);for(const i of t){const t=e[i];if(null!==t)if(c.hasOwnProperty(i))c[i](e,a);else if(t instanceof r.XFAObject){const e=t[r.$toStyle]();e?Object.assign(a,e):(0,n.warn)(`(DEBUG) - XFA - style for ${i} not implemented yet`)}}return a};var r=a(77),n=a(2),i=a(78),s=a(85),o=a(86);function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const c={anchorType(e,t){const a=e[r.$getSubformParent]();if(a&&(!a.layout||"position"===a.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const a=e[r.$getSubformParent]();let n=e.w;const i=e.h;if(a.layout&&a.layout.includes("row")){const t=a[r.$extra],i=e.colSpan;let s;if(-1===i){s=t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0);t.currentColumn=0}else{s=t.columnWidths.slice(t.currentColumn,t.currentColumn+i).reduce(((e,t)=>e+t),0);t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(s)||(n=e.w=s)}t.width=""!==n?measureToString(n):"auto";t.height=""!==i?measureToString(i):"auto"},position(e,t){const a=e[r.$getSubformParent]();if(!a||!a.layout||"position"===a.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[r.$nodeName])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[r.$toStyle]().margin)}};function layoutText(e,t,a,n,i,s){const c=new o.TextMeasure(t,a,n,i);"string"==typeof e?c.addString(e):e[r.$pushGlyphs](c);return c.compute(s)}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function getCurrentPara(e){const t=e[r.$getTemplateRoot]()[r.$extra].paraStack;return t.length?t[t.length-1]:null}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontFinder=void 0;t.getMetrics=function getMetrics(e,t=!1){let a=null;if(e){const t=(0,n.stripQuotes)(e.typeface),i=e[r.$globalData].fontFinder.find(t);a=selectFont(e,i)}if(!a)return{lineHeight:12,lineGap:2,lineNoGap:10};const i=e.size||10,s=a.lineHeight?Math.max(t?0:1.2,a.lineHeight):1.2,o=void 0===a.lineGap?.2:a.lineGap;return{lineHeight:s*i,lineGap:o*i,lineNoGap:Math.max(1,s-o)*i}};t.selectFont=selectFont;var r=a(77),n=a(78),i=a(2);t.FontFinder=class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const a=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,a)}addPdfFont(e){const t=e.cssFontInfo,a=t.fontFamily;let r=this.fonts.get(a);if(!r){r=Object.create(null);this.fonts.set(a,r);this.defaultFont||(this.defaultFont=r)}let n="";const i=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?n=i>=700?"bolditalic":"italic":i>=700&&(n="bold");if(!n){(e.name.includes("Bold")||e.psName&&e.psName.includes("Bold"))&&(n="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName&&(e.psName.includes("Italic")||e.psName.endsWith("It")))&&(n+="italic")}n||(n="regular");r[n]=e}getDefault(){return this.defaultFont}find(e,t=!0){let a=this.fonts.get(e)||this.cache.get(e);if(a)return a;const r=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let n=e.replace(r,"");a=this.fonts.get(n);if(a){this.cache.set(e,a);return a}n=n.toLowerCase();const s=[];for(const[e,t]of this.fonts.entries())e.replace(r,"").toLowerCase().startsWith(n)&&s.push(t);if(0===s.length)for(const[,e]of this.fonts.entries())e.regular.name&&e.regular.name.replace(r,"").toLowerCase().startsWith(n)&&s.push(e);if(0===s.length){n=n.replace(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replace(r,"").toLowerCase().startsWith(n)&&s.push(t)}if(0===s.length)for(const e of this.fonts.values())e.regular.name&&e.regular.name.replace(r,"").toLowerCase().startsWith(n)&&s.push(e);if(s.length>=1){1!==s.length&&t&&(0,i.warn)(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,s[0]);return s[0]}if(t&&!this.warned.has(e)){this.warned.add(e);(0,i.warn)(`XFA - Cannot find the font: ${e}`)}return null}};function selectFont(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.TextMeasure=void 0;var r=a(85);class FontInfo{constructor(e,t,a,n){this.lineHeight=a;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(n);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=n.find(e.typeface);if(i){this.pdfFont=(0,r.selectFont)(e,i);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(n))}else[this.pdfFont,this.xfaFont]=this.defaultFont(n)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t&&t.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,a,r){this.fontFinder=r;this.stack=[new FontInfo(e,t,a,r)]}pushData(e,t,a){const r=this.stack[this.stack.length-1];for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=r.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=r.paraMargin[e]);const n=new FontInfo(e,t,a||r.lineHeight,this.fontFinder);n.pdfFont||(n.pdfFont=r.pdfFont);this.stack.push(n)}popFont(){this.stack.pop()}topFont(){return this.stack[this.stack.length-1]}}t.TextMeasure=class TextMeasure{constructor(e,t,a,r){this.glyphs=[];this.fontSelector=new FontSelector(e,t,a,r);this.extraHeight=0}pushData(e,t,a){this.fontSelector.pushData(e,t,a)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),a=t.xfaFont.size;if(t.pdfFont){const r=t.xfaFont.letterSpacing,n=t.pdfFont,i=n.lineHeight||1.2,s=t.lineHeight||Math.max(1.2,i)*a,o=i-(void 0===n.lineGap?.2:n.lineGap),c=Math.max(1,o)*a,l=a/1e3,h=n.defaultWidth||n.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=n.encodeString(t).join(""),a=n.charsToGlyphs(e);for(const e of a){const t=e.width||h;this.glyphs.push([t*l+r,s,c,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([a,1.2*a,a,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,a=0,r=0,n=0,i=0,s=0,o=!1,c=!0;for(let l=0,h=this.glyphs.length;le){r=Math.max(r,i);i=0;n+=s;s=m;t=-1;a=0;o=!0;c=!1}else{s=Math.max(m,s);a=i;i+=h;t=l}else if(i+h>e){n+=s;s=m;if(-1!==t){l=t;r=Math.max(r,a);i=0;t=-1;a=0}else{r=Math.max(r,i);i=h}o=!0;c=!1}else{i+=h;s=Math.max(m,s)}}r=Math.max(r,i);n+=s+this.extraHeight;return{width:1.02*r,height:n,isBroken:o}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DataHandler=void 0;var r=a(77);t.DataHandler=class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[r.$getChildren]()]];for(;t.length>0;){const a=t[t.length-1],[n,i]=a;if(n+1===i.length){t.pop();continue}const s=i[++a[0]],o=e.get(s[r.$uid]);if(o)s[r.$setValue](o);else{const t=s[r.$getAttributes]();for(const a of t.values()){const t=e.get(a[r.$uid]);if(t){a[r.$setValue](t);break}}}const c=s[r.$getChildren]();c.length>0&&t.push([-1,c])}const a=[''];if(this.dataset)for(const e of this.dataset[r.$getChildren]())"data"!==e[r.$nodeName]&&e[r.$toString](a);this.data[r.$toString](a);a.push("");return a.join("")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XFAParser=void 0;var r=a(77),n=a(70),i=a(89),s=a(2);class XFAParser extends n.XMLParserBase{constructor(e=null,t=!1){super();this._builder=new i.Builder(e);this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=n.XMLParserErrorCode.NoError;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===n.XMLParserErrorCode.NoError){this._current[r.$finalize]();return this._current.element}}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" "));this._richText||this._current[r.$acceptWhitespace]()?this._current[r.$onText](e,this._richText):this._whiteRegex.test(e)||this._current[r.$onText](e.trim())}onCdata(e){this._current[r.$onText](e)}_mkAttributes(e,t){let a=null,n=null;const i=Object.create({});for(const{name:o,value:c}of e)if("xmlns"===o)a?(0,s.warn)(`XFA - multiple namespace definition in <${t}>`):a=c;else if(o.startsWith("xmlns:")){const e=o.substring("xmlns:".length);n||(n=[]);n.push({prefix:e,value:c})}else{const e=o.indexOf(":");if(-1===e)i[o]=c;else{let t=i[r.$nsAttributes];t||(t=i[r.$nsAttributes]=Object.create(null));const[a,n]=[o.slice(0,e),o.slice(e+1)];let s=t[a];s||(s=t[a]=Object.create(null));s[n]=c}}return[a,n,i]}_getNameAndPrefix(e,t){const a=e.indexOf(":");return-1===a?[e,null]:[e.substring(a+1),t?"":e.substring(0,a)]}onBeginElement(e,t,a){const[n,i,s]=this._mkAttributes(t,e),[o,c]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:c,name:o,attributes:s,namespace:n,prefixes:i});l[r.$globalData]=this._globalData;if(a){l[r.$finalize]();this._current[r.$onChild](l)&&l[r.$setId](this._ids);l[r.$clean](this._builder)}else{this._stack.push(this._current);this._current=l}}onEndElement(e){const t=this._current;if(t[r.$isCDATAXml]()&&"string"==typeof t[r.$content]){const e=new XFAParser;e._globalData=this._globalData;const a=e.parse(t[r.$content]);t[r.$content]=null;t[r.$onChild](a)}t[r.$finalize]();this._current=this._stack.pop();this._current[r.$onChild](t)&&t[r.$setId](this._ids);t[r.$clean](this._builder)}onError(e){this._errorCode=e}}t.XFAParser=XFAParser},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Builder=void 0;var r=a(79),n=a(77),i=a(90),s=a(82),o=a(99),c=a(2);class Root extends n.XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[n.$ids]=e}[n.$onChild](e){this.element=e;return!0}[n.$finalize](){super[n.$finalize]();if(this.element.template instanceof s.Template){this[n.$ids].set(n.$root,this.element);this.element.template[n.$resolvePrototypes](this[n.$ids]);this.element.template[n.$ids]=this[n.$ids]}}}class Empty extends n.XFAObject{constructor(){super(-1,"",Object.create(null))}[n.$onChild](e){return!1}}t.Builder=class Builder{constructor(e=null){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(r.NamespaceIds).map((({id:e})=>e)));this._currentNamespace=e||new o.UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:a,namespace:s,prefixes:o}){const c=null!==s;if(c){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(s)}o&&this._addNamespacePrefix(o);if(a.hasOwnProperty(n.$nsAttributes)){const e=i.NamespaceSetUp.datasets,t=a[n.$nsAttributes];let r=null;for(const[a,n]of Object.entries(t)){if(this._getNamespaceToUse(a)===e){r={xfa:n};break}}r?a[n.$nsAttributes]=r:delete a[n.$nsAttributes]}const l=this._getNamespaceToUse(e),h=l&&l[r.$buildXFAObject](t,a)||new Empty;h[n.$isNsAgnostic]()&&this._nsAgnosticLevel++;(c||o||h[n.$isNsAgnostic]())&&(h[n.$cleanup]={hasNamespace:c,prefixes:o,nsAgnostic:h[n.$isNsAgnostic]()});return h}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[a,{check:n}]of Object.entries(r.NamespaceIds))if(n(e)){t=i.NamespaceSetUp[a];if(t){this._namespaces.set(e,t);return t}break}t=new o.UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:a}of e){const e=this._searchNamespace(a);let r=this._namespacePrefixes.get(t);if(!r){r=[];this._namespacePrefixes.set(t,r)}r.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t&&t.length>0)return t[t.length-1];(0,c.warn)(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:a,nsAgnostic:r}=e;t&&(this._currentNamespace=this._namespaceStack.pop());a&&a.forEach((({prefix:e})=>{this._namespacePrefixes.get(e).pop()}));r&&this._nsAgnosticLevel--}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceSetUp=void 0;var r=a(91),n=a(92),i=a(93),s=a(94),o=a(95),c=a(96),l=a(82),h=a(97),u=a(98);const d={config:r.ConfigNamespace,connection:n.ConnectionSetNamespace,datasets:i.DatasetsNamespace,localeSet:s.LocaleSetNamespace,signature:o.SignatureNamespace,stylesheet:c.StylesheetNamespace,template:l.TemplateNamespace,xdp:h.XdpNamespace,xhtml:u.XhtmlNamespace};t.NamespaceSetUp=d},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConfigNamespace=void 0;var r=a(79),n=a(77),i=a(78),s=a(2);const o=r.NamespaceIds.config.id;class Acrobat extends n.XFAObject{constructor(e){super(o,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new n.XFAObjectArray}}class Acrobat7 extends n.XFAObject{constructor(e){super(o,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends n.OptionObject{constructor(e){super(o,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends n.OptionObject{constructor(e){super(o,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends n.Option01{constructor(e){super(o,"addSilentPrint")}}class AddViewerPreferences extends n.Option01{constructor(e){super(o,"addViewerPreferences")}}class AdjustData extends n.Option10{constructor(e){super(o,"adjustData")}}class AdobeExtensionLevel extends n.IntegerObject{constructor(e){super(o,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class Agent extends n.XFAObject{constructor(e){super(o,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new n.XFAObjectArray}}class AlwaysEmbed extends n.ContentObject{constructor(e){super(o,"alwaysEmbed")}}class Amd extends n.StringObject{constructor(e){super(o,"amd")}}class Area extends n.XFAObject{constructor(e){super(o,"area");this.level=(0,i.getInteger)({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=(0,i.getStringOption)(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends n.OptionObject{constructor(e){super(o,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends n.OptionObject{constructor(e){super(o,"autoSave",["disabled","enabled"])}}class Base extends n.StringObject{constructor(e){super(o,"base")}}class BatchOutput extends n.XFAObject{constructor(e){super(o,"batchOutput");this.format=(0,i.getStringOption)(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends n.ContentObject{constructor(e){super(o,"behaviorOverride")}[n.$finalize](){this[n.$content]=new Map(this[n.$content].trim().split(/\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class Cache extends n.XFAObject{constructor(e){super(o,"cache",!0);this.templateCache=null}}class Change extends n.Option01{constructor(e){super(o,"change")}}class Common extends n.XFAObject{constructor(e){super(o,"common",!0);this.data=null;this.locale=null;this.localeSet=null;this.messaging=null;this.suppressBanner=null;this.template=null;this.validationMessaging=null;this.versionControl=null;this.log=new n.XFAObjectArray}}class Compress extends n.XFAObject{constructor(e){super(o,"compress");this.scope=(0,i.getStringOption)(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends n.Option01{constructor(e){super(o,"compressLogicalStructure")}}class CompressObjectStream extends n.Option10{constructor(e){super(o,"compressObjectStream")}}class Compression extends n.XFAObject{constructor(e){super(o,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends n.XFAObject{constructor(e){super(o,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new n.XFAObjectArray}}class Conformance extends n.OptionObject{constructor(e){super(o,"conformance",["A","B"])}}class ContentCopy extends n.Option01{constructor(e){super(o,"contentCopy")}}class Copies extends n.IntegerObject{constructor(e){super(o,"copies",1,(e=>e>=1))}}class Creator extends n.StringObject{constructor(e){super(o,"creator")}}class CurrentPage extends n.IntegerObject{constructor(e){super(o,"currentPage",0,(e=>e>=0))}}class Data extends n.XFAObject{constructor(e){super(o,"data",!0);this.adjustData=null;this.attributes=null;this.incrementalLoad=null;this.outputXSL=null;this.range=null;this.record=null;this.startNode=null;this.uri=null;this.window=null;this.xsl=null;this.excludeNS=new n.XFAObjectArray;this.transform=new n.XFAObjectArray}}class Debug extends n.XFAObject{constructor(e){super(o,"debug",!0);this.uri=null}}class DefaultTypeface extends n.ContentObject{constructor(e){super(o,"defaultTypeface");this.writingScript=(0,i.getStringOption)(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends n.OptionObject{constructor(e){super(o,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends n.Option01{constructor(e){super(o,"documentAssembly")}}class Driver extends n.XFAObject{constructor(e){super(o,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends n.OptionObject{constructor(e){super(o,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends n.OptionObject{constructor(e){super(o,"dynamicRender",["forbidden","required"])}}class Embed extends n.Option01{constructor(e){super(o,"embed")}}class Encrypt extends n.Option01{constructor(e){super(o,"encrypt")}}class Encryption extends n.XFAObject{constructor(e){super(o,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends n.OptionObject{constructor(e){super(o,"encryptionLevel",["40bit","128bit"])}}class Enforce extends n.StringObject{constructor(e){super(o,"enforce")}}class Equate extends n.XFAObject{constructor(e){super(o,"equate");this.force=(0,i.getInteger)({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends n.XFAObject{constructor(e){super(o,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,a=this._unicodeRange;for(let r of a.split(",").map((e=>e.trim())).filter((e=>!!e))){r=r.split("-",2).map((e=>{const a=e.match(t);return a?parseInt(a[1],16):0}));1===r.length&&r.push(r[0]);e.push(r)}return(0,s.shadow)(this,"unicodeRange",e)}}class Exclude extends n.ContentObject{constructor(e){super(o,"exclude")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class ExcludeNS extends n.StringObject{constructor(e){super(o,"excludeNS")}}class FlipLabel extends n.OptionObject{constructor(e){super(o,"flipLabel",["usePrinterSetting","on","off"])}}class FontInfo extends n.XFAObject{constructor(e){super(o,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new n.XFAObjectArray;this.defaultTypeface=new n.XFAObjectArray;this.neverEmbed=new n.XFAObjectArray}}class FormFieldFilling extends n.Option01{constructor(e){super(o,"formFieldFilling")}}class GroupParent extends n.StringObject{constructor(e){super(o,"groupParent")}}class IfEmpty extends n.OptionObject{constructor(e){super(o,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends n.StringObject{constructor(e){super(o,"includeXDPContent")}}class IncrementalLoad extends n.OptionObject{constructor(e){super(o,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends n.Option01{constructor(e){super(o,"incrementalMerge")}}class Interactive extends n.Option01{constructor(e){super(o,"interactive")}}class Jog extends n.OptionObject{constructor(e){super(o,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends n.XFAObject{constructor(e){super(o,"labelPrinter",!0);this.name=(0,i.getStringOption)(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends n.OptionObject{constructor(e){super(o,"layout",["paginate","panel"])}}class Level extends n.IntegerObject{constructor(e){super(o,"level",0,(e=>e>0))}}class Linearized extends n.Option01{constructor(e){super(o,"linearized")}}class Locale extends n.StringObject{constructor(e){super(o,"locale")}}class LocaleSet extends n.StringObject{constructor(e){super(o,"localeSet")}}class Log extends n.XFAObject{constructor(e){super(o,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends n.XFAObject{constructor(e){super(o,"map",!0);this.equate=new n.XFAObjectArray;this.equateRange=new n.XFAObjectArray}}class MediumInfo extends n.XFAObject{constructor(e){super(o,"mediumInfo",!0);this.map=null}}class Message extends n.XFAObject{constructor(e){super(o,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends n.XFAObject{constructor(e){super(o,"messaging",!0);this.message=new n.XFAObjectArray}}class Mode extends n.OptionObject{constructor(e){super(o,"mode",["append","overwrite"])}}class ModifyAnnots extends n.Option01{constructor(e){super(o,"modifyAnnots")}}class MsgId extends n.IntegerObject{constructor(e){super(o,"msgId",1,(e=>e>=1))}}class NameAttr extends n.StringObject{constructor(e){super(o,"nameAttr")}}class NeverEmbed extends n.ContentObject{constructor(e){super(o,"neverEmbed")}}class NumberOfCopies extends n.IntegerObject{constructor(e){super(o,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class OpenAction extends n.XFAObject{constructor(e){super(o,"openAction",!0);this.destination=null}}class Output extends n.XFAObject{constructor(e){super(o,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends n.StringObject{constructor(e){super(o,"outputBin")}}class OutputXSL extends n.XFAObject{constructor(e){super(o,"outputXSL",!0);this.uri=null}}class Overprint extends n.OptionObject{constructor(e){super(o,"overprint",["none","both","draw","field"])}}class Packets extends n.StringObject{constructor(e){super(o,"packets")}[n.$finalize](){"*"!==this[n.$content]&&(this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class PageOffset extends n.XFAObject{constructor(e){super(o,"pageOffset");this.x=(0,i.getInteger)({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=(0,i.getInteger)({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends n.StringObject{constructor(e){super(o,"pageRange")}[n.$finalize](){const e=this[n.$content].trim().split(/\s+/).map((e=>parseInt(e,10))),t=[];for(let a=0,r=e.length;a!1))}}class Pcl extends n.XFAObject{constructor(e){super(o,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends n.XFAObject{constructor(e){super(o,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends n.XFAObject{constructor(e){super(o,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends n.XFAObject{constructor(e){super(o,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends n.Option01{constructor(e){super(o,"pickTrayByPDFSize")}}class Picture extends n.StringObject{constructor(e){super(o,"picture")}}class PlaintextMetadata extends n.Option01{constructor(e){super(o,"plaintextMetadata")}}class Presence extends n.OptionObject{constructor(e){super(o,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends n.XFAObject{constructor(e){super(o,"present",!0);this.behaviorOverride=null;this.cache=null;this.common=null;this.copies=null;this.destination=null;this.incrementalMerge=null;this.layout=null;this.output=null;this.overprint=null;this.pagination=null;this.paginationOverride=null;this.script=null;this.validate=null;this.xdp=null;this.driver=new n.XFAObjectArray;this.labelPrinter=new n.XFAObjectArray;this.pcl=new n.XFAObjectArray;this.pdf=new n.XFAObjectArray;this.ps=new n.XFAObjectArray;this.submitUrl=new n.XFAObjectArray;this.webClient=new n.XFAObjectArray;this.zpl=new n.XFAObjectArray}}class Print extends n.Option01{constructor(e){super(o,"print")}}class PrintHighQuality extends n.Option01{constructor(e){super(o,"printHighQuality")}}class PrintScaling extends n.OptionObject{constructor(e){super(o,"printScaling",["appdefault","noScaling"])}}class PrinterName extends n.StringObject{constructor(e){super(o,"printerName")}}class Producer extends n.StringObject{constructor(e){super(o,"producer")}}class Ps extends n.XFAObject{constructor(e){super(o,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends n.ContentObject{constructor(e){super(o,"range")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s*,\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>{1===e.length&&e.push(e[0]);return e}))}}class Record extends n.ContentObject{constructor(e){super(o,"record")}[n.$finalize](){this[n.$content]=this[n.$content].trim();const e=parseInt(this[n.$content],10);!isNaN(e)&&e>=0&&(this[n.$content]=e)}}class Relevant extends n.ContentObject{constructor(e){super(o,"relevant")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/)}}class Rename extends n.ContentObject{constructor(e){super(o,"rename")}[n.$finalize](){this[n.$content]=this[n.$content].trim();(this[n.$content].toLowerCase().startsWith("xml")||this[n.$content].match(new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u")))&&(0,s.warn)("XFA - Rename: invalid XFA name")}}class RenderPolicy extends n.OptionObject{constructor(e){super(o,"renderPolicy",["server","client"])}}class RunScripts extends n.OptionObject{constructor(e){super(o,"runScripts",["both","client","none","server"])}}class Script extends n.XFAObject{constructor(e){super(o,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends n.OptionObject{constructor(e){super(o,"scriptModel",["XFA","none"])}}class Severity extends n.OptionObject{constructor(e){super(o,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends n.XFAObject{constructor(e){super(o,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends n.XFAObject{constructor(e){super(o,"staple");this.mode=(0,i.getStringOption)(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends n.StringObject{constructor(e){super(o,"startNode")}}class StartPage extends n.IntegerObject{constructor(e){super(o,"startPage",0,(e=>!0))}}class SubmitFormat extends n.OptionObject{constructor(e){super(o,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends n.StringObject{constructor(e){super(o,"submitUrl")}}class SubsetBelow extends n.IntegerObject{constructor(e){super(o,"subsetBelow",100,(e=>e>=0&&e<=100))}}class SuppressBanner extends n.Option01{constructor(e){super(o,"suppressBanner")}}class Tagged extends n.Option01{constructor(e){super(o,"tagged")}}class Template extends n.XFAObject{constructor(e){super(o,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends n.OptionObject{constructor(e){super(o,"threshold",["trace","error","information","warning"])}}class To extends n.OptionObject{constructor(e){super(o,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends n.XFAObject{constructor(e){super(o,"templateCache");this.maxEntries=(0,i.getInteger)({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends n.XFAObject{constructor(e){super(o,"trace",!0);this.area=new n.XFAObjectArray}}class Transform extends n.XFAObject{constructor(e){super(o,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends n.OptionObject{constructor(e){super(o,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends n.StringObject{constructor(e){super(o,"uri")}}class Validate extends n.OptionObject{constructor(e){super(o,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends n.ContentObject{constructor(e){super(o,"validateApprovalSignatures")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class ValidationMessaging extends n.OptionObject{constructor(e){super(o,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends n.OptionObject{constructor(e){super(o,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends n.XFAObject{constructor(e){super(o,"VersionControl");this.outputBelow=(0,i.getStringOption)(e.outputBelow,["warn","error","update"]);this.sourceAbove=(0,i.getStringOption)(e.sourceAbove,["warn","error"]);this.sourceBelow=(0,i.getStringOption)(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends n.XFAObject{constructor(e){super(o,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends n.XFAObject{constructor(e){super(o,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends n.OptionObject{constructor(e){super(o,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends n.ContentObject{constructor(e){super(o,"window")}[n.$finalize](){const e=this[n.$content].trim().split(/\s*,\s*/,2).map((e=>parseInt(e,10)));if(e.some((e=>isNaN(e))))this[n.$content]=[0,0];else{1===e.length&&e.push(e[0]);this[n.$content]=e}}}class Xdc extends n.XFAObject{constructor(e){super(o,"xdc",!0);this.uri=new n.XFAObjectArray;this.xsl=new n.XFAObjectArray}}class Xdp extends n.XFAObject{constructor(e){super(o,"xdp",!0);this.packets=null}}class Xsl extends n.XFAObject{constructor(e){super(o,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends n.XFAObject{constructor(e){super(o,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[r.$buildXFAObject](e,t){if(ConfigNamespace.hasOwnProperty(e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new Encrypt(e)}static encryption(e){return new Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}t.ConfigNamespace=ConfigNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConnectionSetNamespace=void 0;var r=a(79),n=a(77);const i=r.NamespaceIds.connectionSet.id;class ConnectionSet extends n.XFAObject{constructor(e){super(i,"connectionSet",!0);this.wsdlConnection=new n.XFAObjectArray;this.xmlConnection=new n.XFAObjectArray;this.xsdConnection=new n.XFAObjectArray}}class EffectiveInputPolicy extends n.XFAObject{constructor(e){super(i,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends n.XFAObject{constructor(e){super(i,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends n.StringObject{constructor(e){super(i,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends n.StringObject{constructor(e){super(i,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends n.StringObject{constructor(e){super(i,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends n.StringObject{constructor(e){super(i,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Uri extends n.StringObject{constructor(e){super(i,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends n.StringObject{constructor(e){super(i,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends n.XFAObject{constructor(e){super(i,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends n.XFAObject{constructor(e){super(i,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends n.XFAObject{constructor(e){super(i,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[r.$buildXFAObject](e,t){if(ConnectionSetNamespace.hasOwnProperty(e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}t.ConnectionSetNamespace=ConnectionSetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DatasetsNamespace=void 0;var r=a(77),n=a(79);const i=n.NamespaceIds.datasets.id;class Data extends r.XmlObject{constructor(e){super(i,"data",e)}[r.$isNsAgnostic](){return!0}}class Datasets extends r.XFAObject{constructor(e){super(i,"datasets",!0);this.data=null;this.Signature=null}[r.$onChild](e){const t=e[r.$nodeName];("data"===t&&e[r.$namespaceId]===i||"Signature"===t&&e[r.$namespaceId]===n.NamespaceIds.signature.id)&&(this[t]=e);this[r.$appendChild](e)}}class DatasetsNamespace{static[n.$buildXFAObject](e,t){if(DatasetsNamespace.hasOwnProperty(e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new Data(e)}}t.DatasetsNamespace=DatasetsNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LocaleSetNamespace=void 0;var r=a(79),n=a(77),i=a(78);const s=r.NamespaceIds.localeSet.id;class CalendarSymbols extends n.XFAObject{constructor(e){super(s,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new n.XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new n.XFAObjectArray(2)}}class CurrencySymbol extends n.StringObject{constructor(e){super(s,"currencySymbol");this.name=(0,i.getStringOption)(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends n.XFAObject{constructor(e){super(s,"currencySymbols",!0);this.currencySymbol=new n.XFAObjectArray(3)}}class DatePattern extends n.StringObject{constructor(e){super(s,"datePattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class DatePatterns extends n.XFAObject{constructor(e){super(s,"datePatterns",!0);this.datePattern=new n.XFAObjectArray(4)}}class DateTimeSymbols extends n.ContentObject{constructor(e){super(s,"dateTimeSymbols")}}class Day extends n.StringObject{constructor(e){super(s,"day")}}class DayNames extends n.XFAObject{constructor(e){super(s,"dayNames",!0);this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new n.XFAObjectArray(7)}}class Era extends n.StringObject{constructor(e){super(s,"era")}}class EraNames extends n.XFAObject{constructor(e){super(s,"eraNames",!0);this.era=new n.XFAObjectArray(2)}}class Locale extends n.XFAObject{constructor(e){super(s,"locale",!0);this.desc=e.desc||"";this.name="isoname";this.calendarSymbols=null;this.currencySymbols=null;this.datePatterns=null;this.dateTimeSymbols=null;this.numberPatterns=null;this.numberSymbols=null;this.timePatterns=null;this.typeFaces=null}}class LocaleSet extends n.XFAObject{constructor(e){super(s,"localeSet",!0);this.locale=new n.XFAObjectArray}}class Meridiem extends n.StringObject{constructor(e){super(s,"meridiem")}}class MeridiemNames extends n.XFAObject{constructor(e){super(s,"meridiemNames",!0);this.meridiem=new n.XFAObjectArray(2)}}class Month extends n.StringObject{constructor(e){super(s,"month")}}class MonthNames extends n.XFAObject{constructor(e){super(s,"monthNames",!0);this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new n.XFAObjectArray(12)}}class NumberPattern extends n.StringObject{constructor(e){super(s,"numberPattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class NumberPatterns extends n.XFAObject{constructor(e){super(s,"numberPatterns",!0);this.numberPattern=new n.XFAObjectArray(4)}}class NumberSymbol extends n.StringObject{constructor(e){super(s,"numberSymbol");this.name=(0,i.getStringOption)(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends n.XFAObject{constructor(e){super(s,"numberSymbols",!0);this.numberSymbol=new n.XFAObjectArray(5)}}class TimePattern extends n.StringObject{constructor(e){super(s,"timePattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class TimePatterns extends n.XFAObject{constructor(e){super(s,"timePatterns",!0);this.timePattern=new n.XFAObjectArray(4)}}class TypeFace extends n.XFAObject{constructor(e){super(s,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends n.XFAObject{constructor(e){super(s,"typeFaces",!0);this.typeFace=new n.XFAObjectArray}}class LocaleSetNamespace{static[r.$buildXFAObject](e,t){if(LocaleSetNamespace.hasOwnProperty(e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}t.LocaleSetNamespace=LocaleSetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SignatureNamespace=void 0;var r=a(79),n=a(77);const i=r.NamespaceIds.signature.id;class Signature extends n.XFAObject{constructor(e){super(i,"signature",!0)}}class SignatureNamespace{static[r.$buildXFAObject](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new Signature(e)}}t.SignatureNamespace=SignatureNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StylesheetNamespace=void 0;var r=a(79),n=a(77);const i=r.NamespaceIds.stylesheet.id;class Stylesheet extends n.XFAObject{constructor(e){super(i,"stylesheet",!0)}}class StylesheetNamespace{static[r.$buildXFAObject](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}t.StylesheetNamespace=StylesheetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XdpNamespace=void 0;var r=a(79),n=a(77);const i=r.NamespaceIds.xdp.id;class Xdp extends n.XFAObject{constructor(e){super(i,"xdp",!0);this.uuid=e.uuid||"";this.timeStamp=e.timeStamp||"";this.config=null;this.connectionSet=null;this.datasets=null;this.localeSet=null;this.stylesheet=new n.XFAObjectArray;this.template=null}[n.$onChildCheck](e){const t=r.NamespaceIds[e[n.$nodeName]];return t&&e[n.$namespaceId]===t.id}}class XdpNamespace{static[r.$buildXFAObject](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new Xdp(e)}}t.XdpNamespace=XdpNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XhtmlNamespace=void 0;var r=a(77),n=a(79),i=a(84),s=a(78);const o=n.NamespaceIds.xhtml.id,c=Symbol(),l=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),h=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>{e=t.fontSize=(0,s.getMeasurement)(e);return(0,i.measureToString)(.99*e)}],["letter-spacing",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["line-height",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-bottom",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-left",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-right",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-top",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["text-indent",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["font-family",e=>e],["vertical-align",e=>(0,i.measureToString)((0,s.getMeasurement)(e))]]),u=/\s+/g,d=/[\r\n]+/g,f=/\r\n?/g;function mapStyle(e,t,a){const n=Object.create(null);if(!e)return n;const o=Object.create(null);for(const[t,a]of e.split(";").map((e=>e.split(":",2)))){const e=h.get(t);if(""===e)continue;let r=a;e&&(r="string"==typeof e?e:e(a,o));t.endsWith("scale")?n.transform?n.transform=`${n[t]} ${r}`:n.transform=r:n[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=r}n.fontFamily&&(0,i.setFontFamily)({typeface:n.fontFamily,weight:n.fontWeight||"normal",posture:n.fontStyle||"normal",size:o.fontSize||0},t,t[r.$globalData].fontFinder,n);if(a&&n.verticalAlign&&"0px"!==n.verticalAlign&&n.fontSize){const e=.583,t=.333,a=(0,s.getMeasurement)(n.fontSize);n.fontSize=(0,i.measureToString)(a*e);n.verticalAlign=(0,i.measureToString)(Math.sign((0,s.getMeasurement)(n.verticalAlign))*a*t)}(0,i.fixTextIndent)(n);return n}const g=new Set(["body","html"]);class XhtmlObject extends r.XmlObject{constructor(e,t){super(o,t);this[c]=!1;this.style=e.style||""}[r.$clean](e){super[r.$clean](e);this.style=function checkStyle(e){return e.style?e.style.trim().split(/\s*;\s*/).filter((e=>!!e)).map((e=>e.split(/\s*:\s*/,2))).filter((([t,a])=>{"font-family"===t&&e[r.$globalData].usedTypefaces.add(a);return l.has(t)})).map((e=>e.join(":"))).join(";"):""}(this)}[r.$acceptWhitespace](){return!g.has(this[r.$nodeName])}[r.$onText](e,t=!1){if(t)this[c]=!0;else{e=e.replace(d,"");this.style.includes("xfa-spacerun:yes")||(e=e.replace(u," "))}e&&(this[r.$content]+=e)}[r.$pushGlyphs](e,t=!0){const a=Object.create(null),n={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":a.typeface=(0,s.stripQuotes)(t);break;case"font-size":a.size=(0,s.getMeasurement)(t);break;case"font-weight":a.weight=t;break;case"font-style":a.posture=t;break;case"letter-spacing":a.letterSpacing=(0,s.getMeasurement)(t);break;case"margin":const e=t.split(/ \t/).map((e=>(0,s.getMeasurement)(e)));switch(e.length){case 1:n.top=n.bottom=n.left=n.right=e[0];break;case 2:n.top=n.bottom=e[0];n.left=n.right=e[1];break;case 3:n.top=e[0];n.bottom=e[2];n.left=n.right=e[1];break;case 4:n.top=e[0];n.left=e[1];n.bottom=e[2];n.right=e[3]}break;case"margin-top":n.top=(0,s.getMeasurement)(t);break;case"margin-bottom":n.bottom=(0,s.getMeasurement)(t);break;case"margin-left":n.left=(0,s.getMeasurement)(t);break;case"margin-right":n.right=(0,s.getMeasurement)(t);break;case"line-height":i=(0,s.getMeasurement)(t)}e.pushData(a,n,i);if(this[r.$content])e.addString(this[r.$content]);else for(const t of this[r.$getChildren]())"#text"!==t[r.$nodeName]?t[r.$pushGlyphs](e):e.addString(t[r.$content]);t&&e.popFont()}[r.$toHTML](e){const t=[];this[r.$extra]={children:t};this[r.$childrenToHTML]({});if(0===t.length&&!this[r.$content])return s.HTMLResult.EMPTY;let a;a=this[c]?this[r.$content]?this[r.$content].replace(f,"\n"):void 0:this[r.$content]||void 0;return s.HTMLResult.success({name:this[r.$nodeName],attributes:{href:this.href,style:mapStyle(this.style,this,this[c])},children:t,value:a})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=(0,i.fixURL)(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[r.$pushGlyphs](e){e.pushFont({weight:"bold"});super[r.$pushGlyphs](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[r.$toHTML](e){const t=super[r.$toHTML](e),{html:a}=t;if(!a)return s.HTMLResult.EMPTY;a.name="div";a.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[r.$text](){return"\n"}[r.$pushGlyphs](e){e.addString("\n")}[r.$toHTML](e){return s.HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[r.$toHTML](e){const t=[];this[r.$extra]={children:t};this[r.$childrenToHTML]({});if(0===t.length)return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[r.$content]||""});if(1===t.length){const e=t[0];if(e.attributes&&e.attributes.class.includes("xfaRich"))return s.HTMLResult.success(e)}return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[r.$pushGlyphs](e){e.pushFont({posture:"italic"});super[r.$pushGlyphs](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[r.$pushGlyphs](e){super[r.$pushGlyphs](e,!1);e.addString("\n");e.addPara();e.popFont()}[r.$text](){const e=this[r.$getParent]()[r.$getChildren]();return e[e.length-1]===this?super[r.$text]():super[r.$text]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[n.$buildXFAObject](e,t){if(XhtmlNamespace.hasOwnProperty(e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}t.XhtmlNamespace=XhtmlNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.UnknownNamespace=void 0;var r=a(79),n=a(77);class UnknownNamespace{constructor(e){this.namespaceId=e}[r.$buildXFAObject](e,t){return new n.XmlObject(this.namespaceId,e,t)}}t.UnknownNamespace=UnknownNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DatasetReader=void 0;var r=a(2),n=a(8),i=a(70);function decodeString(e){try{return(0,r.stringToUTF8String)(e)}catch(t){(0,r.warn)(`UTF-8 decoding failed: "${t}".`);return e}}class DatasetXMLParser extends i.SimpleXMLParser{constructor(e){super(e);this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e){this.node=t;throw new Error("Aborting DatasetXMLParser.")}}}t.DatasetReader=class DatasetReader{constructor(e){if(e.datasets)this.node=new i.SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new DatasetXMLParser({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch(e){}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode((0,n.parseXFAPath)(e),0);if(!t)return"";const a=t.firstChild;return a&&"value"===a.nodeName?t.children.map((e=>decodeString(e.textContent))):decodeString(t.textContent)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XRef=void 0;var r=a(2),n=a(5),i=a(8),s=a(27),o=a(9),c=a(74);t.XRef=class XRef{constructor(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this.xrefstms=Object.create(null);this._cacheMap=new Map;this._pendingRefs=new n.RefSet;this.stats=new i.DocStats(t.msgHandler);this._newRefNum=null}getNewRef(){null===this._newRefNum&&(this._newRefNum=this.entries.length);return n.Ref.get(this._newRefNum++,0)}resetNewRef(){this._newRefNum=null}setStartXRef(e){this.startXRefQueue=[e]}parse(e=!1){let t,a,s;if(e){(0,r.warn)("Indexing all PDF objects");t=this.indexObjects()}else t=this.readXRef();t.assignXref(this);this.trailer=t;try{a=t.get("Encrypt")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Encrypt" reference: "${e}".`)}if(a instanceof n.Dict){const e=t.get("ID"),r=e&&e.length?e[0]:"";a.suppressEncryption=!0;this.encrypt=new c.CipherTransformFactory(a,r,this.pdfManager.password)}try{s=t.get("Root")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Root" reference: "${e}".`)}if(s instanceof n.Dict)try{if(s.get("Pages")instanceof n.Dict){this.root=s;return}}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Pages" reference: "${e}".`)}if(!e)throw new i.XRefParseException;throw new r.InvalidPDFException("Invalid Root reference.")}processXRefTable(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});const t=this.readXRefTable(e);if(!(0,n.isCmd)(t,"trailer"))throw new r.FormatError("Invalid XRef table: could not find trailer dictionary");let a=e.getObj();a instanceof n.Dict||!a.dict||(a=a.dict);if(!(a instanceof n.Dict))throw new r.FormatError("Invalid XRef table: could not parse trailer dictionary");delete this.tableState;return a}readXRefTable(e){const t=e.lexer.stream,a=this.tableState;t.pos=a.streamPos;e.buf1=a.parserBuf1;e.buf2=a.parserBuf2;let i;for(;;){if(!("firstEntryNum"in a)||!("entryCount"in a)){if((0,n.isCmd)(i=e.getObj(),"trailer"))break;a.firstEntryNum=i;a.entryCount=e.getObj()}let s=a.firstEntryNum;const o=a.entryCount;if(!Number.isInteger(s)||!Number.isInteger(o))throw new r.FormatError("Invalid XRef table: wrong types in subsection header");for(let i=a.entryNum;i0;){const[o,c]=s;if(!Number.isInteger(o)||!Number.isInteger(c))throw new r.FormatError(`Invalid XRef range fields: ${o}, ${c}`);if(!Number.isInteger(a)||!Number.isInteger(n)||!Number.isInteger(i))throw new r.FormatError(`Invalid XRef entry fields length: ${o}, ${c}`);for(let s=t.entryNum;s=e.length);){a+=String.fromCharCode(r);r=e[t]}return a}function skipUntil(e,t,a){const r=a.length,n=e.length;let i=0;for(;t=r)break;t++;i++}return i}const e=/^(\d+)\s+(\d+)\s+obj\b/,t=/\bendobj[\b\s]$/,a=/\s+(\d+\s+\d+\s+obj[\b\s<])$/,o=new Uint8Array([116,114,97,105,108,101,114]),c=new Uint8Array([115,116,97,114,116,120,114,101,102]),l=new Uint8Array([111,98,106]),h=new Uint8Array([47,88,82,101,102]);this.entries.length=0;this._cacheMap.clear();const u=this.stream;u.pos=0;const d=u.getBytes(),f=d.length;let g=u.start;const p=[],m=[];for(;g=f)break;n=d[g]}while(10!==n&&13!==n);continue}const b=readToken(d,g);let y;if(b.startsWith("xref")&&(4===b.length||/\s/.test(b[4]))){g+=skipUntil(d,g,o);p.push(g);g+=skipUntil(d,g,c)}else if(y=e.exec(b)){const e=0|y[1],n=0|y[2];let o,c=g+b.length,f=!1;if(this.entries[e]){if(this.entries[e].gen===n)try{new s.Parser({lexer:new s.Lexer(u.makeSubStream(c))}).getObj();f=!0}catch(e){e instanceof i.ParserEOFException?(0,r.warn)(`indexObjects -- checking object (${b}): "${e}".`):f=!0}}else f=!0;f&&(this.entries[e]={offset:g-u.start,gen:n,uncompressed:!0});for(;c{Object.defineProperty(t,"__esModule",{value:!0});t.MessageHandler=void 0;var r=a(2);const n=1,i=2,s=1,o=2,c=3,l=4,h=5,u=6,d=7,f=8;function wrapReason(e){e instanceof Error||"object"==typeof e&&null!==e||(0,r.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(e.name){case"AbortException":return new r.AbortException(e.message);case"MissingPDFException":return new r.MissingPDFException(e.message);case"PasswordException":return new r.PasswordException(e.message,e.code);case"UnexpectedResponseException":return new r.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new r.UnknownErrorException(e.message,e.details);default:return new r.UnknownErrorException(e.message,e.toString())}}t.MessageHandler=class MessageHandler{constructor(e,t,a){this.sourceName=e;this.targetName=t;this.comObj=a;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream){this._processStreamMessage(t);return}if(t.callback){const e=t.callbackId,a=this.callbackCapabilities[e];if(!a)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===n)a.resolve(t.data);else{if(t.callback!==i)throw new Error("Unexpected callback case");a.reject(wrapReason(t.reason))}return}const r=this.actionHandler[t.action];if(!r)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const e=this.sourceName,s=t.sourceName;new Promise((function(e){e(r(t.data))})).then((function(r){a.postMessage({sourceName:e,targetName:s,callback:n,callbackId:t.callbackId,data:r})}),(function(r){a.postMessage({sourceName:e,targetName:s,callback:i,callbackId:t.callbackId,reason:wrapReason(r)})}))}else t.streamId?this._createStreamSink(t):r(t.data)};a.addEventListener("message",this._onComObjOnMessage)}on(e,t){const a=this.actionHandler;if(a[e])throw new Error(`There is already an actionName called "${e}"`);a[e]=t}send(e,t,a){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},a)}sendWithPromise(e,t,a){const n=this.callbackId++,i=(0,r.createPromiseCapability)();this.callbackCapabilities[n]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},a)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,a,n){const i=this.streamId++,o=this.sourceName,c=this.targetName,l=this.comObj;return new ReadableStream({start:a=>{const s=(0,r.createPromiseCapability)();this.streamControllers[i]={controller:a,startCall:s,pullCall:null,cancelCall:null,isClosed:!1};l.postMessage({sourceName:o,targetName:c,action:e,streamId:i,data:t,desiredSize:a.desiredSize},n);return s.promise},pull:e=>{const t=(0,r.createPromiseCapability)();this.streamControllers[i].pullCall=t;l.postMessage({sourceName:o,targetName:c,stream:u,streamId:i,desiredSize:e.desiredSize});return t.promise},cancel:e=>{(0,r.assert)(e instanceof Error,"cancel must have a valid reason");const t=(0,r.createPromiseCapability)();this.streamControllers[i].cancelCall=t;this.streamControllers[i].isClosed=!0;l.postMessage({sourceName:o,targetName:c,stream:s,streamId:i,reason:wrapReason(e)});return t.promise}},a)}_createStreamSink(e){const t=e.streamId,a=this.sourceName,n=e.sourceName,i=this.comObj,s=this,o=this.actionHandler[e.action],u={enqueue(e,s=1,o){if(this.isCancelled)return;const c=this.desiredSize;this.desiredSize-=s;if(c>0&&this.desiredSize<=0){this.sinkCapability=(0,r.createPromiseCapability)();this.ready=this.sinkCapability.promise}i.postMessage({sourceName:a,targetName:n,stream:l,streamId:t,chunk:e},o)},close(){if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:n,stream:c,streamId:t});delete s.streamSinks[t]}},error(e){(0,r.assert)(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:n,stream:h,streamId:t,reason:wrapReason(e)})}},sinkCapability:(0,r.createPromiseCapability)(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};u.sinkCapability.resolve();u.ready=u.sinkCapability.promise;this.streamSinks[t]=u;new Promise((function(t){t(o(e.data,u))})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:f,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:f,streamId:t,reason:wrapReason(e)})}))}_processStreamMessage(e){const t=e.streamId,a=this.sourceName,n=e.sourceName,i=this.comObj,g=this.streamControllers[t],p=this.streamSinks[t];switch(e.stream){case f:e.success?g.startCall.resolve():g.startCall.reject(wrapReason(e.reason));break;case d:e.success?g.pullCall.resolve():g.pullCall.reject(wrapReason(e.reason));break;case u:if(!p){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,success:!0});break}p.desiredSize<=0&&e.desiredSize>0&&p.sinkCapability.resolve();p.desiredSize=e.desiredSize;new Promise((function(e){e(p.onPull&&p.onPull())})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,reason:wrapReason(e)})}));break;case l:(0,r.assert)(g,"enqueue should have stream controller");if(g.isClosed)break;g.controller.enqueue(e.chunk);break;case c:(0,r.assert)(g,"close should have stream controller");if(g.isClosed)break;g.isClosed=!0;g.controller.close();this._deleteStreamController(g,t);break;case h:(0,r.assert)(g,"error should have stream controller");g.controller.error(wrapReason(e.reason));this._deleteStreamController(g,t);break;case o:e.success?g.cancelCall.resolve():g.cancelCall.reject(wrapReason(e.reason));this._deleteStreamController(g,t);break;case s:if(!p)break;new Promise((function(t){t(p.onCancel&&p.onCancel(wrapReason(e.reason)))})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:o,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:o,streamId:t,reason:wrapReason(e)})}));p.sinkCapability.reject(wrapReason(e.reason));p.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async _deleteStreamController(e,t){await Promise.allSettled([e.startCall&&e.startCall.promise,e.pullCall&&e.pullCall.promise,e.cancelCall&&e.cancelCall.promise]);delete this.streamControllers[t]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFWorkerStream=void 0;var r=a(2);t.PDFWorkerStream=class PDFWorkerStream{constructor(e){this._msgHandler=e;this._contentLength=null;this._fullRequestReader=null;this._rangeRequestReaders=[]}getFullReader(){(0,r.assert)(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once.");this._fullRequestReader=new PDFWorkerStreamReader(this._msgHandler);return this._fullRequestReader}getRangeReader(e,t){const a=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(a);return a}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class PDFWorkerStreamReader{constructor(e){this._msgHandler=e;this.onProgress=null;this._contentLength=null;this._isRangeSupported=!1;this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader();this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader{constructor(e,t,a){this._msgHandler=a;this.onProgress=null;const r=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=r.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}}],t={};function __w_pdfjs_require__(a){var r=t[a];if(void 0!==r)return r.exports;var n=t[a]={exports:{}};e[a](n,n.exports,__w_pdfjs_require__);return n.exports}__w_pdfjs_require__.d=(e,t)=>{for(var a in t)__w_pdfjs_require__.o(t,a)&&!__w_pdfjs_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})};__w_pdfjs_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);__w_pdfjs_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{var e=a;Object.defineProperty(e,"__esModule",{value:!0});Object.defineProperty(e,"WorkerMessageHandler",{enumerable:!0,get:function(){return t.WorkerMessageHandler}});var t=__w_pdfjs_require__(1)})();return a})())); \ No newline at end of file diff --git a/resources/js/pdfjs/pdf_viewer.js b/resources/js/pdfjs/pdf_viewer.js deleted file mode 100644 index f40494480d86..000000000000 --- a/resources/js/pdfjs/pdf_viewer.js +++ /dev/null @@ -1,8565 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * JavaScript code in this page - * - * Copyright 2022 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/web/pdf_viewer", [], factory); - else if(typeof exports === 'object') - exports["pdfjs-dist/web/pdf_viewer"] = factory(); - else - root["pdfjs-dist/web/pdf_viewer"] = root.pdfjsViewer = factory(); -})(this, () => { -return /******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ([ -/* 0 */, -/* 1 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DefaultXfaLayerFactory = exports.DefaultTextLayerFactory = exports.DefaultStructTreeLayerFactory = exports.DefaultAnnotationLayerFactory = void 0; - -var _annotation_layer_builder = __w_pdfjs_require__(2); - -var _l10n_utils = __w_pdfjs_require__(4); - -var _pdf_link_service = __w_pdfjs_require__(5); - -var _struct_tree_layer_builder = __w_pdfjs_require__(7); - -var _text_layer_builder = __w_pdfjs_require__(8); - -var _xfa_layer_builder = __w_pdfjs_require__(9); - -class DefaultAnnotationLayerFactory { - createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderForms = true, l10n = _l10n_utils.NullL10n, enableScripting = false, hasJSActionsPromise = null, mouseState = null, fieldObjectsPromise = null, annotationCanvasMap = null) { - return new _annotation_layer_builder.AnnotationLayerBuilder({ - pageDiv, - pdfPage, - imageResourcesPath, - renderForms, - linkService: new _pdf_link_service.SimpleLinkService(), - l10n, - annotationStorage, - enableScripting, - hasJSActionsPromise, - fieldObjectsPromise, - mouseState, - annotationCanvasMap - }); - } - -} - -exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; - -class DefaultStructTreeLayerFactory { - createStructTreeLayerBuilder(pdfPage) { - return new _struct_tree_layer_builder.StructTreeLayerBuilder({ - pdfPage - }); - } - -} - -exports.DefaultStructTreeLayerFactory = DefaultStructTreeLayerFactory; - -class DefaultTextLayerFactory { - createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus, highlighter) { - return new _text_layer_builder.TextLayerBuilder({ - textLayerDiv, - pageIndex, - viewport, - enhanceTextSelection, - eventBus, - highlighter - }); - } - -} - -exports.DefaultTextLayerFactory = DefaultTextLayerFactory; - -class DefaultXfaLayerFactory { - createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null, xfaHtml = null) { - return new _xfa_layer_builder.XfaLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage, - linkService: new _pdf_link_service.SimpleLinkService(), - xfaHtml - }); - } - -} - -exports.DefaultXfaLayerFactory = DefaultXfaLayerFactory; - -/***/ }), -/* 2 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.AnnotationLayerBuilder = void 0; - -var _pdfjsLib = __w_pdfjs_require__(3); - -var _l10n_utils = __w_pdfjs_require__(4); - -class AnnotationLayerBuilder { - constructor({ - pageDiv, - pdfPage, - linkService, - downloadManager, - annotationStorage = null, - imageResourcesPath = "", - renderForms = true, - l10n = _l10n_utils.NullL10n, - enableScripting = false, - hasJSActionsPromise = null, - fieldObjectsPromise = null, - mouseState = null, - annotationCanvasMap = null - }) { - this.pageDiv = pageDiv; - this.pdfPage = pdfPage; - this.linkService = linkService; - this.downloadManager = downloadManager; - this.imageResourcesPath = imageResourcesPath; - this.renderForms = renderForms; - this.l10n = l10n; - this.annotationStorage = annotationStorage; - this.enableScripting = enableScripting; - this._hasJSActionsPromise = hasJSActionsPromise; - this._fieldObjectsPromise = fieldObjectsPromise; - this._mouseState = mouseState; - this._annotationCanvasMap = annotationCanvasMap; - this.div = null; - this._cancelled = false; - } - - async render(viewport, intent = "display") { - const [annotations, hasJSActions = false, fieldObjects = null] = await Promise.all([this.pdfPage.getAnnotations({ - intent - }), this._hasJSActionsPromise, this._fieldObjectsPromise]); - - if (this._cancelled || annotations.length === 0) { - return; - } - - const parameters = { - viewport: viewport.clone({ - dontFlip: true - }), - div: this.div, - annotations, - page: this.pdfPage, - imageResourcesPath: this.imageResourcesPath, - renderForms: this.renderForms, - linkService: this.linkService, - downloadManager: this.downloadManager, - annotationStorage: this.annotationStorage, - enableScripting: this.enableScripting, - hasJSActions, - fieldObjects, - mouseState: this._mouseState, - annotationCanvasMap: this._annotationCanvasMap - }; - - if (this.div) { - _pdfjsLib.AnnotationLayer.update(parameters); - } else { - this.div = document.createElement("div"); - this.div.className = "annotationLayer"; - this.pageDiv.appendChild(this.div); - parameters.div = this.div; - - _pdfjsLib.AnnotationLayer.render(parameters); - - this.l10n.translate(this.div); - } - } - - cancel() { - this._cancelled = true; - } - - hide() { - if (!this.div) { - return; - } - - this.div.hidden = true; - } - -} - -exports.AnnotationLayerBuilder = AnnotationLayerBuilder; - -/***/ }), -/* 3 */ -/***/ ((module) => { - - - -let pdfjsLib; - -if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { - pdfjsLib = window["pdfjs-dist/build/pdf"]; -} else { - pdfjsLib = require("../build/pdf.js"); -} - -module.exports = pdfjsLib; - -/***/ }), -/* 4 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NullL10n = void 0; -exports.fixupLangCode = fixupLangCode; -exports.getL10nFallback = getL10nFallback; -const DEFAULT_L10N_STRINGS = { - of_pages: "of {{pagesCount}}", - page_of_pages: "({{pageNumber}} of {{pagesCount}})", - document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", - document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", - document_properties_date_string: "{{date}}, {{time}}", - document_properties_page_size_unit_inches: "in", - 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_name_a3: "A3", - document_properties_page_size_name_a4: "A4", - document_properties_page_size_name_letter: "Letter", - document_properties_page_size_name_legal: "Legal", - document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", - document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", - document_properties_linearized_yes: "Yes", - document_properties_linearized_no: "No", - print_progress_percent: "{{progress}}%", - "toggle_sidebar.title": "Toggle Sidebar", - "toggle_sidebar_notification2.title": "Toggle Sidebar (document contains outline/attachments/layers)", - additional_layers: "Additional Layers", - page_landmark: "Page {{page}}", - thumb_page_title: "Page {{page}}", - thumb_page_canvas: "Thumbnail of Page {{page}}", - find_reached_top: "Reached top of document, continued from bottom", - find_reached_bottom: "Reached end of document, continued from top", - "find_match_count[one]": "{{current}} of {{total}} match", - "find_match_count[other]": "{{current}} of {{total}} matches", - "find_match_count_limit[one]": "More than {{limit}} match", - "find_match_count_limit[other]": "More than {{limit}} matches", - find_not_found: "Phrase not found", - error_version_info: "PDF.js v{{version}} (build: {{build}})", - error_message: "Message: {{message}}", - error_stack: "Stack: {{stack}}", - error_file: "File: {{file}}", - error_line: "Line: {{line}}", - rendering_error: "An error occurred while rendering the page.", - page_scale_width: "Page Width", - page_scale_fit: "Page Fit", - page_scale_auto: "Automatic Zoom", - page_scale_actual: "Actual Size", - page_scale_percent: "{{scale}}%", - loading: "Loading…", - loading_error: "An error occurred while loading the PDF.", - invalid_file_error: "Invalid or corrupted PDF file.", - missing_file_error: "Missing PDF file.", - unexpected_response_error: "Unexpected server response.", - 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." -}; - -function getL10nFallback(key, args) { - switch (key) { - case "find_match_count": - key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; - break; - - case "find_match_count_limit": - key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; - break; - } - - return DEFAULT_L10N_STRINGS[key] || ""; -} - -const PARTIAL_LANG_CODES = { - en: "en-US", - es: "es-ES", - fy: "fy-NL", - ga: "ga-IE", - gu: "gu-IN", - hi: "hi-IN", - hy: "hy-AM", - nb: "nb-NO", - ne: "ne-NP", - nn: "nn-NO", - pa: "pa-IN", - pt: "pt-PT", - sv: "sv-SE", - zh: "zh-CN" -}; - -function fixupLangCode(langCode) { - return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode; -} - -function formatL10nValue(text, args) { - if (!args) { - return text; - } - - return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { - return name in args ? args[name] : "{{" + name + "}}"; - }); -} - -const NullL10n = { - async getLanguage() { - return "en-us"; - }, - - async getDirection() { - return "ltr"; - }, - - async get(key, args = null, fallback = getL10nFallback(key, args)) { - return formatL10nValue(fallback, args); - }, - - async translate(element) {} - -}; -exports.NullL10n = NullL10n; - -/***/ }), -/* 5 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0; - -var _ui_utils = __w_pdfjs_require__(6); - -const DEFAULT_LINK_REL = "noopener noreferrer nofollow"; -const LinkTarget = { - NONE: 0, - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4 -}; -exports.LinkTarget = LinkTarget; - -function addLinkAttributes(link, { - url, - target, - rel, - enabled = true -} = {}) { - if (!url || typeof url !== "string") { - throw new Error('A valid "url" parameter must provided.'); - } - - const urlNullRemoved = (0, _ui_utils.removeNullCharacters)(url); - - if (enabled) { - link.href = link.title = urlNullRemoved; - } else { - link.href = ""; - link.title = `Disabled: ${urlNullRemoved}`; - - link.onclick = () => { - return false; - }; - } - - let targetStr = ""; - - switch (target) { - case LinkTarget.NONE: - break; - - case LinkTarget.SELF: - targetStr = "_self"; - break; - - case LinkTarget.BLANK: - targetStr = "_blank"; - break; - - case LinkTarget.PARENT: - targetStr = "_parent"; - break; - - case LinkTarget.TOP: - targetStr = "_top"; - break; - } - - link.target = targetStr; - link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL; -} - -class PDFLinkService { - #pagesRefCache = new Map(); - - constructor({ - eventBus, - externalLinkTarget = null, - externalLinkRel = null, - ignoreDestinationZoom = false - } = {}) { - this.eventBus = eventBus; - this.externalLinkTarget = externalLinkTarget; - this.externalLinkRel = externalLinkRel; - this.externalLinkEnabled = true; - this._ignoreDestinationZoom = ignoreDestinationZoom; - this.baseUrl = null; - this.pdfDocument = null; - this.pdfViewer = null; - this.pdfHistory = null; - } - - setDocument(pdfDocument, baseUrl = null) { - this.baseUrl = baseUrl; - this.pdfDocument = pdfDocument; - this.#pagesRefCache.clear(); - } - - setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - - setHistory(pdfHistory) { - this.pdfHistory = pdfHistory; - } - - get pagesCount() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - } - - get page() { - return this.pdfViewer.currentPageNumber; - } - - set page(value) { - this.pdfViewer.currentPageNumber = value; - } - - get rotation() { - return this.pdfViewer.pagesRotation; - } - - set rotation(value) { - this.pdfViewer.pagesRotation = value; - } - - #goToDestinationHelper(rawDest, namedDest = null, explicitDest) { - const destRef = explicitDest[0]; - let pageNumber; - - if (typeof destRef === "object" && destRef !== null) { - pageNumber = this._cachedPageNumber(destRef); - - if (!pageNumber) { - this.pdfDocument.getPageIndex(destRef).then(pageIndex => { - this.cachePageRef(pageIndex + 1, destRef); - this.#goToDestinationHelper(rawDest, namedDest, explicitDest); - }).catch(() => { - console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); - }); - return; - } - } else if (Number.isInteger(destRef)) { - pageNumber = destRef + 1; - } else { - console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); - return; - } - - if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { - console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); - return; - } - - if (this.pdfHistory) { - this.pdfHistory.pushCurrentPosition(); - this.pdfHistory.push({ - namedDest, - explicitDest, - pageNumber - }); - } - - this.pdfViewer.scrollPageIntoView({ - pageNumber, - destArray: explicitDest, - ignoreDestinationZoom: this._ignoreDestinationZoom - }); - } - - async goToDestination(dest) { - if (!this.pdfDocument) { - return; - } - - let namedDest, explicitDest; - - if (typeof dest === "string") { - 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; - } - - 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 - }); - } - - addLinkAttributes(link, url, newWindow = false) { - addLinkAttributes(link, { - url, - target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget, - rel: this.externalLinkRel, - enabled: this.externalLinkEnabled - }); - } - - getDestinationHash(dest) { - if (typeof dest === "string") { - if (dest.length > 0) { - return this.getAnchorUrl("#" + escape(dest)); - } - } else if (Array.isArray(dest)) { - const str = JSON.stringify(dest); - - if (str.length > 0) { - return this.getAnchorUrl("#" + escape(str)); - } - } - - return this.getAnchorUrl(""); - } - - getAnchorUrl(anchor) { - return (this.baseUrl || "") + anchor; - } - - setHash(hash) { - if (!this.pdfDocument) { - return; - } - - let pageNumber, dest; - - if (hash.includes("=")) { - const params = (0, _ui_utils.parseQueryString)(hash); - - if (params.has("search")) { - this.eventBus.dispatch("findfromurlhash", { - source: this, - query: params.get("search").replace(/"/g, ""), - phraseSearch: params.get("phrase") === "true" - }); - } - - if (params.has("page")) { - pageNumber = params.get("page") | 0 || 1; - } - - if (params.has("zoom")) { - const zoomArgs = params.get("zoom").split(","); - const zoomArg = zoomArgs[0]; - const zoomArgNumber = parseFloat(zoomArg); - - if (!zoomArg.includes("Fit")) { - dest = [null, { - name: "XYZ" - }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; - } else { - if (zoomArg === "Fit" || zoomArg === "FitB") { - dest = [null, { - name: zoomArg - }]; - } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { - dest = [null, { - name: zoomArg - }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; - } else if (zoomArg === "FitR") { - if (zoomArgs.length !== 5) { - console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); - } else { - dest = [null, { - name: zoomArg - }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; - } - } else { - console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`); - } - } - } - - if (dest) { - this.pdfViewer.scrollPageIntoView({ - pageNumber: pageNumber || this.page, - destArray: dest, - allowNegativeOffset: true - }); - } else if (pageNumber) { - this.page = pageNumber; - } - - if (params.has("pagemode")) { - this.eventBus.dispatch("pagemode", { - source: this, - mode: params.get("pagemode") - }); - } - - if (params.has("nameddest")) { - this.goToDestination(params.get("nameddest")); - } - } else { - dest = unescape(hash); - - try { - dest = JSON.parse(dest); - - if (!Array.isArray(dest)) { - dest = dest.toString(); - } - } catch (ex) {} - - if (typeof dest === "string" || PDFLinkService.#isValidExplicitDestination(dest)) { - this.goToDestination(dest); - return; - } - - console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`); - } - } - - executeNamedAction(action) { - switch (action) { - case "GoBack": - this.pdfHistory?.back(); - break; - - case "GoForward": - this.pdfHistory?.forward(); - break; - - case "NextPage": - this.pdfViewer.nextPage(); - break; - - case "PrevPage": - this.pdfViewer.previousPage(); - break; - - case "LastPage": - this.page = this.pagesCount; - break; - - case "FirstPage": - this.page = 1; - break; - - default: - break; - } - - this.eventBus.dispatch("namedaction", { - source: this, - action - }); - } - - cachePageRef(pageNum, pageRef) { - if (!pageRef) { - return; - } - - const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; - this.#pagesRefCache.set(refStr, pageNum); - } - - _cachedPageNumber(pageRef) { - if (!pageRef) { - return null; - } - - const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; - return this.#pagesRefCache.get(refStr) || null; - } - - isPageVisible(pageNumber) { - return this.pdfViewer.isPageVisible(pageNumber); - } - - isPageCached(pageNumber) { - return this.pdfViewer.isPageCached(pageNumber); - } - - static #isValidExplicitDestination(dest) { - if (!Array.isArray(dest)) { - return false; - } - - const destLength = dest.length; - - if (destLength < 2) { - return false; - } - - const page = dest[0]; - - if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { - return false; - } - - const zoom = dest[1]; - - if (!(typeof zoom === "object" && typeof zoom.name === "string")) { - return false; - } - - let allowNull = true; - - switch (zoom.name) { - case "XYZ": - if (destLength !== 5) { - return false; - } - - break; - - case "Fit": - case "FitB": - return destLength === 2; - - case "FitH": - case "FitBH": - case "FitV": - case "FitBV": - if (destLength !== 3) { - return false; - } - - break; - - case "FitR": - if (destLength !== 6) { - return false; - } - - allowNull = false; - break; - - default: - return false; - } - - for (let i = 2; i < destLength; i++) { - const param = dest[i]; - - if (!(typeof param === "number" || allowNull && param === null)) { - return false; - } - } - - return true; - } - -} - -exports.PDFLinkService = PDFLinkService; - -class SimpleLinkService { - constructor() { - this.externalLinkEnabled = true; - } - - get pagesCount() { - return 0; - } - - get page() { - return 0; - } - - set page(value) {} - - get rotation() { - return 0; - } - - set rotation(value) {} - - async goToDestination(dest) {} - - goToPage(val) {} - - addLinkAttributes(link, url, newWindow = false) { - addLinkAttributes(link, { - url, - enabled: this.externalLinkEnabled - }); - } - - getDestinationHash(dest) { - return "#"; - } - - getAnchorUrl(hash) { - return "#"; - } - - setHash(hash) {} - - executeNamedAction(action) {} - - cachePageRef(pageNum, pageRef) {} - - isPageVisible(pageNumber) { - return true; - } - - isPageCached(pageNumber) { - return true; - } - -} - -exports.SimpleLinkService = SimpleLinkService; - -/***/ }), -/* 6 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.OutputScale = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.AutoPrintRegExp = void 0; -exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes; -exports.apiPageModeToSidebarView = apiPageModeToSidebarView; -exports.approximateFraction = approximateFraction; -exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; -exports.binarySearchFirstItem = binarySearchFirstItem; -exports.getActiveOrFocusedElement = getActiveOrFocusedElement; -exports.getPageSizeInches = getPageSizeInches; -exports.getVisibleElements = getVisibleElements; -exports.isPortraitOrientation = isPortraitOrientation; -exports.isValidRotation = isValidRotation; -exports.isValidScrollMode = isValidScrollMode; -exports.isValidSpreadMode = isValidSpreadMode; -exports.noContextMenuHandler = noContextMenuHandler; -exports.normalizeWheelEventDelta = normalizeWheelEventDelta; -exports.normalizeWheelEventDirection = normalizeWheelEventDirection; -exports.parseQueryString = parseQueryString; -exports.removeNullCharacters = removeNullCharacters; -exports.roundToDivide = roundToDivide; -exports.scrollIntoView = scrollIntoView; -exports.watchScroll = watchScroll; -const DEFAULT_SCALE_VALUE = "auto"; -exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; -const DEFAULT_SCALE = 1.0; -exports.DEFAULT_SCALE = DEFAULT_SCALE; -const DEFAULT_SCALE_DELTA = 1.1; -exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA; -const MIN_SCALE = 0.1; -exports.MIN_SCALE = MIN_SCALE; -const MAX_SCALE = 10.0; -exports.MAX_SCALE = MAX_SCALE; -const UNKNOWN_SCALE = 0; -exports.UNKNOWN_SCALE = UNKNOWN_SCALE; -const MAX_AUTO_SCALE = 1.25; -exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; -const SCROLLBAR_PADDING = 40; -exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; -const VERTICAL_PADDING = 5; -exports.VERTICAL_PADDING = VERTICAL_PADDING; -const RenderingStates = { - INITIAL: 0, - RUNNING: 1, - PAUSED: 2, - FINISHED: 3 -}; -exports.RenderingStates = RenderingStates; -const PresentationModeState = { - UNKNOWN: 0, - NORMAL: 1, - CHANGING: 2, - 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" -}; -exports.RendererType = RendererType; -const TextLayerMode = { - DISABLE: 0, - ENABLE: 1, - ENABLE_ENHANCE: 2 -}; -exports.TextLayerMode = TextLayerMode; -const ScrollMode = { - UNKNOWN: -1, - VERTICAL: 0, - HORIZONTAL: 1, - WRAPPED: 2, - PAGE: 3 -}; -exports.ScrollMode = ScrollMode; -const SpreadMode = { - UNKNOWN: -1, - NONE: 0, - ODD: 1, - EVEN: 2 -}; -exports.SpreadMode = SpreadMode; -const AutoPrintRegExp = /\bprint\s*\(/; -exports.AutoPrintRegExp = AutoPrintRegExp; - -class OutputScale { - constructor() { - const pixelRatio = window.devicePixelRatio || 1; - this.sx = pixelRatio; - this.sy = pixelRatio; - } - - get scaled() { - return this.sx !== 1 || this.sy !== 1; - } - -} - -exports.OutputScale = OutputScale; - -function scrollIntoView(element, spot, scrollMatches = false) { - let parent = element.offsetParent; - - if (!parent) { - console.error("offsetParent is not set -- cannot scroll"); - return; - } - - let offsetY = element.offsetTop + element.clientTop; - let offsetX = element.offsetLeft + element.clientLeft; - - while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) { - offsetY += parent.offsetTop; - offsetX += parent.offsetLeft; - parent = parent.offsetParent; - - if (!parent) { - return; - } - } - - if (spot) { - if (spot.top !== undefined) { - offsetY += spot.top; - } - - if (spot.left !== undefined) { - offsetX += spot.left; - parent.scrollLeft = offsetX; - } - } - - if (parent && parent.classList.contains('pdfViewer')) { - parent = parent.parentElement - } - - parent.scrollTop = offsetY; -} - -function watchScroll(viewAreaElement, callback) { - const debounceScroll = function (evt) { - if (rAF) { - return; - } - - rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { - rAF = null; - const currentX = viewAreaElement.scrollLeft; - const lastX = state.lastX; - - if (currentX !== lastX) { - state.right = currentX > lastX; - } - - state.lastX = currentX; - const currentY = viewAreaElement.scrollTop; - const lastY = state.lastY; - - if (currentY !== lastY) { - state.down = currentY > lastY; - } - - state.lastY = currentY; - callback(state); - }); - }; - - const state = { - right: true, - down: true, - lastX: viewAreaElement.scrollLeft, - lastY: viewAreaElement.scrollTop, - _eventHandler: debounceScroll - }; - let rAF = null; - viewAreaElement.addEventListener("scroll", debounceScroll, true); - return state; -} - -function parseQueryString(query) { - const params = new Map(); - - for (const [key, value] of new URLSearchParams(query)) { - params.set(key.toLowerCase(), value); - } - - return params; -} - -const NullCharactersRegExp = /\x00/g; -const InvisibleCharactersRegExp = /[\x01-\x1F]/g; - -function removeNullCharacters(str, replaceInvisible = false) { - if (typeof str !== "string") { - console.error(`The argument must be a string.`); - return str; - } - - if (replaceInvisible) { - str = str.replace(InvisibleCharactersRegExp, " "); - } - - return str.replace(NullCharactersRegExp, ""); -} - -function binarySearchFirstItem(items, condition, start = 0) { - let minIndex = start; - let maxIndex = items.length - 1; - - if (maxIndex < 0 || !condition(items[maxIndex])) { - return items.length; - } - - if (condition(items[minIndex])) { - return minIndex; - } - - while (minIndex < maxIndex) { - const currentIndex = minIndex + maxIndex >> 1; - const currentItem = items[currentIndex]; - - if (condition(currentItem)) { - maxIndex = currentIndex; - } else { - minIndex = currentIndex + 1; - } - } - - return minIndex; -} - -function approximateFraction(x) { - if (Math.floor(x) === x) { - return [x, 1]; - } - - const xinv = 1 / x; - const limit = 8; - - if (xinv > limit) { - return [1, limit]; - } else if (Math.floor(xinv) === xinv) { - return [1, xinv]; - } - - const x_ = x > 1 ? xinv : x; - let a = 0, - b = 1, - c = 1, - d = 1; - - while (true) { - const p = a + c, - q = b + d; - - if (q > limit) { - break; - } - - if (x_ <= p / q) { - c = p; - d = q; - } else { - a = p; - b = q; - } - } - - let result; - - if (x_ - a / b < c / d - x_) { - result = x_ === x ? [a, b] : [b, a]; - } else { - result = x_ === x ? [c, d] : [d, c]; - } - - return result; -} - -function roundToDivide(x, div) { - const r = x % div; - return r === 0 ? x : Math.round(x - r + div); -} - -function getPageSizeInches({ - view, - userUnit, - rotate -}) { - const [x1, y1, x2, y2] = view; - const changeOrientation = rotate % 180 !== 0; - const width = (x2 - x1) / 72 * userUnit; - const height = (y2 - y1) / 72 * userUnit; - return { - width: changeOrientation ? height : width, - height: changeOrientation ? width : height - }; -} - -function backtrackBeforeAllVisibleElements(index, views, top) { - if (index < 2) { - return index; - } - - let elt = views[index].div; - let pageTop = elt.offsetTop + elt.clientTop; - - if (pageTop >= top) { - elt = views[index - 1].div; - pageTop = elt.offsetTop + elt.clientTop; - } - - for (let i = index - 2; i >= 0; --i) { - elt = views[i].div; - - if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { - break; - } - - index = i; - } - - return index; -} - -function getVisibleElements({ - scrollEl, - views, - sortByVisibility = false, - horizontal = false, - rtl = false -}) { - const top = scrollEl.scrollTop, - bottom = top + scrollEl.clientHeight; - const left = scrollEl.scrollLeft, - right = left + scrollEl.clientWidth; - - function isElementBottomAfterViewTop(view) { - const element = view.div; - const elementBottom = element.offsetTop + element.clientTop + element.clientHeight; - return elementBottom > top; - } - - function isElementNextAfterViewHorizontally(view) { - const element = view.div; - const elementLeft = element.offsetLeft + element.clientLeft; - const elementRight = elementLeft + element.clientWidth; - return rtl ? elementLeft < right : elementRight > left; - } - - const visible = [], - ids = new Set(), - numViews = views.length; - let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); - - if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { - firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); - } - - let lastEdge = horizontal ? right : -1; - - for (let i = firstVisibleElementInd; i < numViews; i++) { - const view = views[i], - element = view.div; - const currentWidth = element.offsetLeft + element.clientLeft; - const currentHeight = element.offsetTop + element.clientTop; - const viewWidth = element.clientWidth, - viewHeight = element.clientHeight; - const viewRight = currentWidth + viewWidth; - const viewBottom = currentHeight + viewHeight; - - if (lastEdge === -1) { - if (viewBottom >= bottom) { - lastEdge = viewBottom; - } - } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { - break; - } - - if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { - continue; - } - - 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 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, - widthPercent: fractionWidth * 100 | 0 - }); - ids.add(view.id); - } - - const first = visible[0], - last = visible[visible.length - 1]; - - if (sortByVisibility) { - visible.sort(function (a, b) { - const pc = a.percent - b.percent; - - if (Math.abs(pc) > 0.001) { - return -pc; - } - - return a.id - b.id; - }); - } - - return { - first, - last, - views: visible, - ids - }; -} - -function noContextMenuHandler(evt) { - evt.preventDefault(); -} - -function normalizeWheelEventDirection(evt) { - let delta = Math.hypot(evt.deltaX, evt.deltaY); - const angle = Math.atan2(evt.deltaY, evt.deltaX); - - if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { - delta = -delta; - } - - return delta; -} - -function normalizeWheelEventDelta(evt) { - let delta = normalizeWheelEventDirection(evt); - const MOUSE_DOM_DELTA_PIXEL_MODE = 0; - const MOUSE_DOM_DELTA_LINE_MODE = 1; - const MOUSE_PIXELS_PER_LINE = 30; - const MOUSE_LINES_PER_PAGE = 30; - - if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { - delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; - } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { - delta /= MOUSE_LINES_PER_PAGE; - } - - return delta; -} - -function isValidRotation(angle) { - return Number.isInteger(angle) && angle % 90 === 0; -} - -function isValidScrollMode(mode) { - return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; -} - -function isValidSpreadMode(mode) { - return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; -} - -function isPortraitOrientation(size) { - return size.width <= size.height; -} - -const animationStarted = new Promise(function (resolve) { - window.requestAnimationFrame(resolve); -}); -exports.animationStarted = animationStarted; - -function clamp(v, min, max) { - return Math.min(Math.max(v, min), max); -} - -class ProgressBar { - constructor(id) { - if (arguments.length > 1) { - throw new Error("ProgressBar no longer accepts any additional options, " + "please use CSS rules to modify its appearance instead."); - } - - this.visible = true; - this.div = document.querySelector(id + " .progress"); - this.bar = this.div.parentNode; - this.percent = 0; - } - - #updateBar() { - if (this._indeterminate) { - this.div.classList.add("indeterminate"); - return; - } - - this.div.classList.remove("indeterminate"); - const doc = document.documentElement; - doc.style.setProperty("--progressBar-percent", `${this._percent}%`); - } - - get percent() { - return this._percent; - } - - set percent(val) { - this._indeterminate = isNaN(val); - this._percent = clamp(val, 0, 100); - this.#updateBar(); - } - - setWidth(viewer) { - if (!viewer) { - return; - } - - const container = viewer.parentNode; - const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; - - if (scrollbarWidth > 0) { - const doc = document.documentElement; - doc.style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); - } - } - - hide() { - if (!this.visible) { - return; - } - - this.visible = false; - this.bar.classList.add("hidden"); - } - - show() { - if (this.visible) { - return; - } - - this.visible = true; - this.bar.classList.remove("hidden"); - } - -} - -exports.ProgressBar = ProgressBar; - -function getActiveOrFocusedElement() { - let curRoot = document; - let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); - - while (curActiveOrFocused?.shadowRoot) { - curRoot = curActiveOrFocused.shadowRoot; - curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); - } - - return curActiveOrFocused; -} - -function apiPageLayoutToViewerModes(layout) { - let scrollMode = ScrollMode.VERTICAL, - spreadMode = SpreadMode.NONE; - - switch (layout) { - case "SinglePage": - scrollMode = ScrollMode.PAGE; - break; - - case "OneColumn": - break; - - case "TwoPageLeft": - scrollMode = ScrollMode.PAGE; - - case "TwoColumnLeft": - spreadMode = SpreadMode.ODD; - break; - - case "TwoPageRight": - scrollMode = ScrollMode.PAGE; - - case "TwoColumnRight": - spreadMode = SpreadMode.EVEN; - break; - } - - return { - scrollMode, - spreadMode - }; -} - -function apiPageModeToSidebarView(mode) { - switch (mode) { - case "UseNone": - return SidebarView.NONE; - - case "UseThumbs": - return SidebarView.THUMBS; - - case "UseOutlines": - return SidebarView.OUTLINE; - - case "UseAttachments": - return SidebarView.ATTACHMENTS; - - case "UseOC": - return SidebarView.LAYERS; - } - - return SidebarView.NONE; -} - -/***/ }), -/* 7 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.StructTreeLayerBuilder = void 0; -const PDF_ROLE_TO_HTML_ROLE = { - Document: null, - DocumentFragment: null, - Part: "group", - Sect: "group", - Div: "group", - Aside: "note", - NonStruct: "none", - P: null, - H: "heading", - Title: null, - FENote: "note", - Sub: "group", - Lbl: null, - Span: null, - Em: null, - Strong: null, - Link: "link", - Annot: "note", - Form: "form", - Ruby: null, - RB: null, - RT: null, - RP: null, - Warichu: null, - WT: null, - WP: null, - L: "list", - LI: "listitem", - LBody: null, - Table: "table", - TR: "row", - TH: "columnheader", - TD: "cell", - THead: "columnheader", - TBody: null, - TFoot: null, - Caption: null, - Figure: "figure", - Formula: null, - Artifact: null -}; -const HEADING_PATTERN = /^H(\d+)$/; - -class StructTreeLayerBuilder { - constructor({ - pdfPage - }) { - this.pdfPage = pdfPage; - } - - render(structTree) { - return this._walk(structTree); - } - - _setAttributes(structElement, htmlElement) { - if (structElement.alt !== undefined) { - htmlElement.setAttribute("aria-label", structElement.alt); - } - - if (structElement.id !== undefined) { - htmlElement.setAttribute("aria-owns", structElement.id); - } - - if (structElement.lang !== undefined) { - htmlElement.setAttribute("lang", structElement.lang); - } - } - - _walk(node) { - if (!node) { - return null; - } - - const element = document.createElement("span"); - - if ("role" in node) { - const { - role - } = node; - const match = role.match(HEADING_PATTERN); - - if (match) { - element.setAttribute("role", "heading"); - element.setAttribute("aria-level", match[1]); - } else if (PDF_ROLE_TO_HTML_ROLE[role]) { - element.setAttribute("role", PDF_ROLE_TO_HTML_ROLE[role]); - } - } - - this._setAttributes(node, element); - - if (node.children) { - if (node.children.length === 1 && "id" in node.children[0]) { - this._setAttributes(node.children[0], element); - } else { - for (const kid of node.children) { - element.appendChild(this._walk(kid)); - } - } - } - - return element; - } - -} - -exports.StructTreeLayerBuilder = StructTreeLayerBuilder; - -/***/ }), -/* 8 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TextLayerBuilder = void 0; - -var _pdfjsLib = __w_pdfjs_require__(3); - -const EXPAND_DIVS_TIMEOUT = 300; - -class TextLayerBuilder { - constructor({ - textLayerDiv, - eventBus, - pageIndex, - viewport, - highlighter = null, - enhanceTextSelection = false - }) { - this.textLayerDiv = textLayerDiv; - this.eventBus = eventBus; - this.textContent = null; - this.textContentItemsStr = []; - this.textContentStream = null; - this.renderingDone = false; - this.pageNumber = pageIndex + 1; - this.viewport = viewport; - this.textDivs = []; - this.textLayerRenderTask = null; - this.highlighter = highlighter; - this.enhanceTextSelection = enhanceTextSelection; - - this._bindMouse(); - } - - _finishRendering() { - this.renderingDone = true; - - if (!this.enhanceTextSelection) { - const endOfContent = document.createElement("div"); - endOfContent.className = "endOfContent"; - this.textLayerDiv.appendChild(endOfContent); - } - - this.eventBus.dispatch("textlayerrendered", { - source: this, - pageNumber: this.pageNumber, - numTextDivs: this.textDivs.length - }); - } - - render(timeout = 0) { - if (!(this.textContent || this.textContentStream) || this.renderingDone) { - return; - } - - this.cancel(); - this.textDivs.length = 0; - this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr); - const textLayerFrag = document.createDocumentFragment(); - this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ - textContent: this.textContent, - textContentStream: this.textContentStream, - container: textLayerFrag, - viewport: this.viewport, - textDivs: this.textDivs, - textContentItemsStr: this.textContentItemsStr, - timeout, - enhanceTextSelection: this.enhanceTextSelection - }); - this.textLayerRenderTask.promise.then(() => { - this.textLayerDiv.appendChild(textLayerFrag); - - this._finishRendering(); - - this.highlighter?.enable(); - }, function (reason) {}); - } - - cancel() { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.cancel(); - this.textLayerRenderTask = null; - } - - this.highlighter?.disable(); - } - - setTextContentStream(readableStream) { - this.cancel(); - this.textContentStream = readableStream; - } - - setTextContent(textContent) { - this.cancel(); - this.textContent = textContent; - } - - _bindMouse() { - const div = this.textLayerDiv; - let expandDivsTimer = null; - div.addEventListener("mousedown", evt => { - if (this.enhanceTextSelection && this.textLayerRenderTask) { - this.textLayerRenderTask.expandTextDivs(true); - - if (expandDivsTimer) { - clearTimeout(expandDivsTimer); - expandDivsTimer = null; - } - - return; - } - - const end = div.querySelector(".endOfContent"); - - if (!end) { - return; - } - - let adjustTop = evt.target !== div; - adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; - - if (adjustTop) { - const divBounds = div.getBoundingClientRect(); - const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); - end.style.top = (r * 100).toFixed(2) + "%"; - } - - end.classList.add("active"); - }); - div.addEventListener("mouseup", () => { - if (this.enhanceTextSelection && this.textLayerRenderTask) { - expandDivsTimer = setTimeout(() => { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.expandTextDivs(false); - } - - expandDivsTimer = null; - }, EXPAND_DIVS_TIMEOUT); - return; - } - - const end = div.querySelector(".endOfContent"); - - if (!end) { - return; - } - - end.style.top = ""; - end.classList.remove("active"); - }); - } - -} - -exports.TextLayerBuilder = TextLayerBuilder; - -/***/ }), -/* 9 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XfaLayerBuilder = void 0; - -var _pdfjsLib = __w_pdfjs_require__(3); - -class XfaLayerBuilder { - constructor({ - pageDiv, - pdfPage, - annotationStorage = null, - linkService, - xfaHtml = null - }) { - this.pageDiv = pageDiv; - this.pdfPage = pdfPage; - this.annotationStorage = annotationStorage; - this.linkService = linkService; - this.xfaHtml = xfaHtml; - this.div = null; - this._cancelled = false; - } - - render(viewport, intent = "display") { - if (intent === "print") { - const parameters = { - viewport: viewport.clone({ - dontFlip: true - }), - div: this.div, - xfaHtml: this.xfaHtml, - annotationStorage: this.annotationStorage, - linkService: this.linkService, - intent - }; - const div = document.createElement("div"); - this.pageDiv.appendChild(div); - parameters.div = div; - - const result = _pdfjsLib.XfaLayer.render(parameters); - - return Promise.resolve(result); - } - - return this.pdfPage.getXfa().then(xfaHtml => { - if (this._cancelled || !xfaHtml) { - return { - textDivs: [] - }; - } - - const parameters = { - viewport: viewport.clone({ - dontFlip: true - }), - div: this.div, - xfaHtml, - annotationStorage: this.annotationStorage, - linkService: this.linkService, - intent - }; - - if (this.div) { - return _pdfjsLib.XfaLayer.update(parameters); - } - - this.div = document.createElement("div"); - this.pageDiv.appendChild(this.div); - parameters.div = this.div; - return _pdfjsLib.XfaLayer.render(parameters); - }).catch(error => { - console.error(error); - }); - } - - cancel() { - this._cancelled = true; - } - - hide() { - if (!this.div) { - return; - } - - this.div.hidden = true; - } - -} - -exports.XfaLayerBuilder = XfaLayerBuilder; - -/***/ }), -/* 10 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFViewer = exports.PDFSinglePageViewer = void 0; - -var _ui_utils = __w_pdfjs_require__(6); - -var _base_viewer = __w_pdfjs_require__(11); - -class PDFViewer extends _base_viewer.BaseViewer {} - -exports.PDFViewer = PDFViewer; - -class PDFSinglePageViewer extends _base_viewer.BaseViewer { - _resetView() { - super._resetView(); - - this._scrollMode = _ui_utils.ScrollMode.PAGE; - this._spreadMode = _ui_utils.SpreadMode.NONE; - } - - set scrollMode(mode) {} - - _updateScrollMode() {} - - set spreadMode(mode) {} - - _updateSpreadMode() {} - -} - -exports.PDFSinglePageViewer = PDFSinglePageViewer; - -/***/ }), -/* 11 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PagesCountLimit = exports.PDFPageViewBuffer = exports.BaseViewer = void 0; - -var _pdfjsLib = __w_pdfjs_require__(3); - -var _ui_utils = __w_pdfjs_require__(6); - -var _annotation_layer_builder = __w_pdfjs_require__(2); - -var _l10n_utils = __w_pdfjs_require__(4); - -var _pdf_page_view = __w_pdfjs_require__(12); - -var _pdf_rendering_queue = __w_pdfjs_require__(14); - -var _pdf_link_service = __w_pdfjs_require__(5); - -var _struct_tree_layer_builder = __w_pdfjs_require__(7); - -var _text_highlighter = __w_pdfjs_require__(15); - -var _text_layer_builder = __w_pdfjs_require__(8); - -var _xfa_layer_builder = __w_pdfjs_require__(9); - -const DEFAULT_CACHE_SIZE = 10; -const ENABLE_PERMISSIONS_CLASS = "enablePermissions"; -const PagesCountLimit = { - FORCE_SCROLL_MODE_PAGE: 15000, - FORCE_LAZY_PAGE_INIT: 7500, - PAUSE_EAGER_PAGE_INIT: 250 -}; -exports.PagesCountLimit = PagesCountLimit; - -class PDFPageViewBuffer { - #buf = new Set(); - #size = 0; - - constructor(size) { - this.#size = size; - } - - push(view) { - const buf = this.#buf; - - if (buf.has(view)) { - buf.delete(view); - } - - buf.add(view); - - if (buf.size > this.#size) { - this.#destroyFirstView(); - } - } - - resize(newSize, idsToKeep = null) { - this.#size = newSize; - const buf = this.#buf; - - if (idsToKeep) { - const ii = buf.size; - let i = 1; - - for (const view of buf) { - if (idsToKeep.has(view.id)) { - buf.delete(view); - buf.add(view); - } - - if (++i > ii) { - break; - } - } - } - - while (buf.size > this.#size) { - this.#destroyFirstView(); - } - } - - has(view) { - return this.#buf.has(view); - } - - [Symbol.iterator]() { - return this.#buf.keys(); - } - - #destroyFirstView() { - const firstView = this.#buf.keys().next().value; - firstView?.destroy(); - this.#buf.delete(firstView); - } - -} - -exports.PDFPageViewBuffer = PDFPageViewBuffer; - -class BaseViewer { - #buffer = null; - #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; - #previousAnnotationMode = null; - #enablePermissions = false; - #previousContainerHeight = 0; - #scrollModePageState = null; - #onVisibilityChange = null; - - constructor(options) { - if (this.constructor === BaseViewer) { - throw new Error("Cannot initialize BaseViewer."); - } - - const viewerVersion = '2.14.305'; - - if (_pdfjsLib.version !== viewerVersion) { - throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); - } - - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - - if (!(this.container?.tagName.toUpperCase() === "DIV" && this.viewer?.tagName.toUpperCase() === "DIV")) { - throw new Error("Invalid `container` and/or `viewer` option."); - } - - if (this.container.offsetParent && 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; - this.findController = options.findController || null; - this._scriptingManager = options.scriptingManager || null; - this.removePageBorders = options.removePageBorders || false; - this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; - this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; - this.imageResourcesPath = options.imageResourcesPath || ""; - this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.useOnlyCssZoom = options.useOnlyCssZoom || false; - this.maxCanvasPixels = options.maxCanvasPixels; - this.l10n = options.l10n || _l10n_utils.NullL10n; - this.#enablePermissions = options.enablePermissions || false; - this.pageColors = options.pageColors || null; - - if (options.pageColors && (!CSS.supports("color", options.pageColors.background) || !CSS.supports("color", options.pageColors.foreground))) { - if (options.pageColors.background || options.pageColors.foreground) { - console.warn("Ignoring `pageColors`-option, since the browser doesn't support the values used."); - } - - this.pageColors = null; - } - - this.defaultRenderingQueue = !options.renderingQueue; - - if (this.defaultRenderingQueue) { - this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - this.renderingQueue.setViewer(this); - } else { - this.renderingQueue = options.renderingQueue; - } - - this._doc = document.documentElement; - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); - this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN; - this._onBeforeDraw = this._onAfterDraw = null; - - this._resetView(); - - if (this.removePageBorders) { - this.viewer.classList.add("removePageBorders"); - } - - this.updateContainerHeightCss(); - Promise.resolve().then(() => { - this.eventBus.dispatch("baseviewerinit", { - source: this - }); - }); - } - - get pagesCount() { - return this._pages.length; - } - - getPageView(index) { - return this._pages[index]; - } - - get pageViewsReady() { - if (!this._pagesCapability.settled) { - return false; - } - - return this._pages.every(function (pageView) { - return pageView?.pdfPage; - }); - } - - get renderForms() { - return this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS; - } - - get enableScripting() { - return !!this._scriptingManager; - } - - get currentPageNumber() { - return this._currentPageNumber; - } - - set currentPageNumber(val) { - if (!Number.isInteger(val)) { - throw new Error("Invalid page number."); - } - - if (!this.pdfDocument) { - return; - } - - if (!this._setCurrentPageNumber(val, true)) { - console.error(`currentPageNumber: "${val}" is not a valid page.`); - } - } - - _setCurrentPageNumber(val, resetCurrentPageView = false) { - if (this._currentPageNumber === val) { - if (resetCurrentPageView) { - this.#resetCurrentPageView(); - } - - return true; - } - - if (!(0 < val && val <= this.pagesCount)) { - return false; - } - - const previous = this._currentPageNumber; - this._currentPageNumber = val; - this.eventBus.dispatch("pagechanging", { - source: this, - pageNumber: val, - pageLabel: this._pageLabels?.[val - 1] ?? null, - previous - }); - - if (resetCurrentPageView) { - this.#resetCurrentPageView(); - } - - return true; - } - - get currentPageLabel() { - return this._pageLabels?.[this._currentPageNumber - 1] ?? null; - } - - set currentPageLabel(val) { - if (!this.pdfDocument) { - return; - } - - let page = val | 0; - - if (this._pageLabels) { - const i = this._pageLabels.indexOf(val); - - if (i >= 0) { - page = i + 1; - } - } - - if (!this._setCurrentPageNumber(page, true)) { - console.error(`currentPageLabel: "${val}" is not a valid page.`); - } - } - - get currentScale() { - return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; - } - - set currentScale(val) { - if (isNaN(val)) { - throw new Error("Invalid numeric scale."); - } - - if (!this.pdfDocument) { - return; - } - - this._setScale(val, false); - } - - get currentScaleValue() { - return this._currentScaleValue; - } - - set currentScaleValue(val) { - if (!this.pdfDocument) { - return; - } - - this._setScale(val, false); - } - - get pagesRotation() { - return this._pagesRotation; - } - - set pagesRotation(rotation) { - if (!(0, _ui_utils.isValidRotation)(rotation)) { - throw new Error("Invalid pages rotation angle."); - } - - if (!this.pdfDocument) { - return; - } - - rotation %= 360; - - if (rotation < 0) { - rotation += 360; - } - - if (this._pagesRotation === rotation) { - return; - } - - this._pagesRotation = rotation; - const pageNumber = this._currentPageNumber; - const updateArgs = { - rotation - }; - - for (const pageView of this._pages) { - pageView.update(updateArgs); - } - - if (this._currentScaleValue) { - this._setScale(this._currentScaleValue, true); - } - - this.eventBus.dispatch("rotationchanging", { - source: this, - pagesRotation: rotation, - pageNumber - }); - - if (this.defaultRenderingQueue) { - this.update(); - } - } - - get firstPagePromise() { - return this.pdfDocument ? this._firstPageCapability.promise : null; - } - - get onePageRendered() { - return this.pdfDocument ? this._onePageRenderedCapability.promise : null; - } - - get pagesPromise() { - return this.pdfDocument ? this._pagesCapability.promise : null; - } - - #initializePermissions(permissions) { - if (!permissions) { - return; - } - - if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) { - this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS); - } - - if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_ANNOTATIONS) && !permissions.includes(_pdfjsLib.PermissionFlag.FILL_INTERACTIVE_FORMS)) { - if (this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS) { - this.#previousAnnotationMode = this.#annotationMode; - this.#annotationMode = _pdfjsLib.AnnotationMode.ENABLE; - } - } - } - - #onePageRenderedOrForceFetch() { - if (document.visibilityState === "hidden" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) { - return Promise.resolve(); - } - - const visibilityChangePromise = new Promise(resolve => { - this.#onVisibilityChange = () => { - if (document.visibilityState !== "hidden") { - return; - } - - resolve(); - document.removeEventListener("visibilitychange", this.#onVisibilityChange); - this.#onVisibilityChange = null; - }; - - document.addEventListener("visibilitychange", this.#onVisibilityChange); - }); - return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]); - } - - setDocument(pdfDocument) { - if (this.pdfDocument) { - this.eventBus.dispatch("pagesdestroy", { - source: this - }); - - this._cancelRendering(); - - this._resetView(); - - if (this.findController) { - this.findController.setDocument(null); - } - - if (this._scriptingManager) { - this._scriptingManager.setDocument(null); - } - } - - this.pdfDocument = pdfDocument; - - if (!pdfDocument) { - return; - } - - const isPureXfa = pdfDocument.isPureXfa; - const pagesCount = pdfDocument.numPages; - const firstPagePromise = pdfDocument.getPage(1); - const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); - const permissionsPromise = this.#enablePermissions ? pdfDocument.getPermissions() : Promise.resolve(); - - if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { - console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document."); - const mode = this._scrollMode = _ui_utils.ScrollMode.PAGE; - this.eventBus.dispatch("scrollmodechanged", { - source: this, - mode - }); - } - - this._pagesCapability.promise.then(() => { - this.eventBus.dispatch("pagesloaded", { - source: this, - pagesCount - }); - }, () => {}); - - this._onBeforeDraw = evt => { - const pageView = this._pages[evt.pageNumber - 1]; - - if (!pageView) { - return; - } - - this.#buffer.push(pageView); - }; - - this.eventBus._on("pagerender", this._onBeforeDraw); - - this._onAfterDraw = evt => { - if (evt.cssTransform || this._onePageRenderedCapability.settled) { - return; - } - - this._onePageRenderedCapability.resolve({ - timestamp: evt.timestamp - }); - - this.eventBus._off("pagerendered", this._onAfterDraw); - - this._onAfterDraw = null; - - if (this.#onVisibilityChange) { - document.removeEventListener("visibilitychange", this.#onVisibilityChange); - this.#onVisibilityChange = null; - } - }; - - this.eventBus._on("pagerendered", this._onAfterDraw); - - Promise.all([firstPagePromise, permissionsPromise]).then(([firstPdfPage, permissions]) => { - if (pdfDocument !== this.pdfDocument) { - return; - } - - this._firstPageCapability.resolve(firstPdfPage); - - this._optionalContentConfigPromise = optionalContentConfigPromise; - this.#initializePermissions(permissions); - const viewerElement = this._scrollMode === _ui_utils.ScrollMode.PAGE ? null : this.viewer; - const scale = this.currentScale; - const viewport = firstPdfPage.getViewport({ - scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS - }); - const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !isPureXfa ? this : null; - const annotationLayerFactory = this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE ? this : null; - const xfaLayerFactory = isPureXfa ? this : null; - - for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { - const pageView = new _pdf_page_view.PDFPageView({ - container: viewerElement, - eventBus: this.eventBus, - id: pageNum, - scale, - defaultViewport: viewport.clone(), - optionalContentConfigPromise, - renderingQueue: this.renderingQueue, - textLayerFactory, - textLayerMode: this.textLayerMode, - annotationLayerFactory, - annotationMode: this.#annotationMode, - xfaLayerFactory, - textHighlighterFactory: this, - structTreeLayerFactory: this, - imageResourcesPath: this.imageResourcesPath, - renderer: this.renderer, - useOnlyCssZoom: this.useOnlyCssZoom, - maxCanvasPixels: this.maxCanvasPixels, - pageColors: this.pageColors, - l10n: this.l10n - }); - - this._pages.push(pageView); - } - - const firstPageView = this._pages[0]; - - if (firstPageView) { - firstPageView.setPdfPage(firstPdfPage); - this.linkService.cachePageRef(1, firstPdfPage.ref); - } - - if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { - this.#ensurePageViewVisible(); - } else if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { - this._updateSpreadMode(); - } - - this.#onePageRenderedOrForceFetch().then(async () => { - if (this.findController) { - this.findController.setDocument(pdfDocument); - } - - if (this._scriptingManager) { - this._scriptingManager.setDocument(pdfDocument); - } - - if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT) { - this._pagesCapability.resolve(); - - return; - } - - let getPagesLeft = pagesCount - 1; - - if (getPagesLeft <= 0) { - this._pagesCapability.resolve(); - - return; - } - - for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) { - const promise = pdfDocument.getPage(pageNum).then(pdfPage => { - const pageView = this._pages[pageNum - 1]; - - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - - this.linkService.cachePageRef(pageNum, pdfPage.ref); - - if (--getPagesLeft === 0) { - this._pagesCapability.resolve(); - } - }, reason => { - console.error(`Unable to get page ${pageNum} to initialize viewer`, reason); - - if (--getPagesLeft === 0) { - this._pagesCapability.resolve(); - } - }); - - if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) { - await promise; - } - } - }); - this.eventBus.dispatch("pagesinit", { - source: this - }); - pdfDocument.getMetadata().then(({ - info - }) => { - if (pdfDocument !== this.pdfDocument) { - return; - } - - if (info.Language) { - this.viewer.lang = info.Language; - } - }); - - if (this.defaultRenderingQueue) { - this.update(); - } - }).catch(reason => { - console.error("Unable to initialize viewer", reason); - - this._pagesCapability.reject(reason); - }); - } - - setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - - if (!labels) { - this._pageLabels = null; - } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error(`setPageLabels: Invalid page labels.`); - } else { - this._pageLabels = labels; - } - - for (let i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null); - } - } - - _resetView() { - this._pages = []; - this._currentPageNumber = 1; - this._currentScale = _ui_utils.UNKNOWN_SCALE; - this._currentScaleValue = null; - this._pageLabels = null; - this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); - this._location = null; - this._pagesRotation = 0; - this._optionalContentConfigPromise = null; - this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._scrollMode = _ui_utils.ScrollMode.VERTICAL; - this._previousScrollMode = _ui_utils.ScrollMode.UNKNOWN; - this._spreadMode = _ui_utils.SpreadMode.NONE; - this.#scrollModePageState = { - previousPageNumber: 1, - scrollDown: true, - pages: [] - }; - - if (this._onBeforeDraw) { - this.eventBus._off("pagerender", this._onBeforeDraw); - - this._onBeforeDraw = null; - } - - if (this._onAfterDraw) { - this.eventBus._off("pagerendered", this._onAfterDraw); - - this._onAfterDraw = null; - } - - if (this.#onVisibilityChange) { - document.removeEventListener("visibilitychange", this.#onVisibilityChange); - this.#onVisibilityChange = null; - } - - this.viewer.textContent = ""; - - this._updateScrollMode(); - - this.viewer.removeAttribute("lang"); - this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS); - - if (this.#previousAnnotationMode !== null) { - this.#annotationMode = this.#previousAnnotationMode; - this.#previousAnnotationMode = null; - } - } - - #ensurePageViewVisible() { - if (this._scrollMode !== _ui_utils.ScrollMode.PAGE) { - throw new Error("#ensurePageViewVisible: Invalid scrollMode value."); - } - - const pageNumber = this._currentPageNumber, - state = this.#scrollModePageState, - viewer = this.viewer; - viewer.textContent = ""; - state.pages.length = 0; - - if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) { - const pageView = this._pages[pageNumber - 1]; - viewer.appendChild(pageView.div); - state.pages.push(pageView); - } else { - const pageIndexSet = new Set(), - parity = this._spreadMode - 1; - - if (parity === -1) { - pageIndexSet.add(pageNumber - 1); - } else if (pageNumber % 2 !== parity) { - pageIndexSet.add(pageNumber - 1); - pageIndexSet.add(pageNumber); - } else { - pageIndexSet.add(pageNumber - 2); - pageIndexSet.add(pageNumber - 1); - } - - const spread = document.createElement("div"); - spread.className = "spread"; - - if (this.isInPresentationMode) { - const dummyPage = document.createElement("div"); - dummyPage.className = "dummyPage"; - spread.appendChild(dummyPage); - } - - for (const i of pageIndexSet) { - const pageView = this._pages[i]; - - if (!pageView) { - continue; - } - - spread.appendChild(pageView.div); - state.pages.push(pageView); - } - - viewer.appendChild(spread); - } - - state.scrollDown = pageNumber >= state.previousPageNumber; - state.previousPageNumber = pageNumber; - } - - _scrollUpdate() { - if (this.pagesCount === 0) { - return; - } - - this.update(); - } - - #scrollIntoView(pageView, pageSpot = null) { - const { - div, - id - } = pageView; - - if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { - this._setCurrentPageNumber(id); - - this.#ensurePageViewVisible(); - this.update(); - } - - if (!pageSpot && !this.isInPresentationMode) { - const left = div.offsetLeft + div.clientLeft, - right = left + div.clientWidth; - const { - scrollLeft, - clientWidth - } = this.container; - - if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) { - pageSpot = { - left: 0, - top: 0 - }; - } - } - - (0, _ui_utils.scrollIntoView)(div, pageSpot); - } - - #isSameScale(newScale) { - return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15; - } - - _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) { - this._currentScaleValue = newValue.toString(); - - if (this.#isSameScale(newScale)) { - if (preset) { - this.eventBus.dispatch("scalechanging", { - source: this, - scale: newScale, - presetValue: newValue - }); - } - - return; - } - - this._doc.style.setProperty("--zoom-factor", newScale); - - const updateArgs = { - scale: newScale - }; - - for (const pageView of this._pages) { - pageView.update(updateArgs); - } - - this._currentScale = newScale; - - if (!noScroll) { - let page = this._currentPageNumber, - dest; - - if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) { - page = this._location.pageNumber; - dest = [null, { - name: "XYZ" - }, this._location.left, this._location.top, null]; - } - - this.scrollPageIntoView({ - pageNumber: page, - destArray: dest, - allowNegativeOffset: true - }); - } - - this.eventBus.dispatch("scalechanging", { - source: this, - scale: newScale, - presetValue: preset ? newValue : undefined - }); - - if (this.defaultRenderingQueue) { - this.update(); - } - - this.updateContainerHeightCss(); - } - - get _pageWidthScaleFactor() { - if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) { - return 2; - } - - return 1; - } - - _setScale(value, noScroll = false) { - let scale = parseFloat(value); - - if (scale > 0) { - this._setScaleUpdatePages(scale, value, noScroll, false); - } else { - const currentPage = this._pages[this._currentPageNumber - 1]; - - if (!currentPage) { - return; - } - - let hPadding = _ui_utils.SCROLLBAR_PADDING, - vPadding = _ui_utils.VERTICAL_PADDING; - - if (this.isInPresentationMode) { - hPadding = vPadding = 4; - } else if (this.removePageBorders) { - hPadding = vPadding = 0; - } else if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) { - [hPadding, vPadding] = [vPadding, hPadding]; - } - - const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this._pageWidthScaleFactor; - const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; - - switch (value) { - case "page-actual": - scale = 1; - break; - - case "page-width": - scale = pageWidthScale; - break; - - case "page-height": - scale = pageHeightScale; - break; - - case "page-fit": - scale = Math.min(pageWidthScale, pageHeightScale); - break; - - case "auto": - const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale); - scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); - break; - - default: - console.error(`_setScale: "${value}" is an unknown zoom value.`); - return; - } - - this._setScaleUpdatePages(scale, value, noScroll, true); - } - } - - #resetCurrentPageView() { - const pageView = this._pages[this._currentPageNumber - 1]; - - if (this.isInPresentationMode) { - this._setScale(this._currentScaleValue, true); - } - - this.#scrollIntoView(pageView); - } - - 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, - allowNegativeOffset = false, - ignoreDestinationZoom = false - }) { - if (!this.pdfDocument) { - return; - } - - const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1]; - - if (!pageView) { - console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`); - return; - } - - if (this.isInPresentationMode || !destArray) { - this._setCurrentPageNumber(pageNumber, true); - - return; - } - - let x = 0, - y = 0; - let width = 0, - height = 0, - widthScale, - heightScale; - const changeOrientation = pageView.rotation % 180 !== 0; - const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; - const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; - let scale = 0; - - switch (destArray[1].name) { - case "XYZ": - x = destArray[2]; - y = destArray[3]; - scale = destArray[4]; - x = x !== null ? x : 0; - y = y !== null ? y : pageHeight; - break; - - case "Fit": - case "FitB": - scale = "page-fit"; - break; - - case "FitH": - case "FitBH": - y = destArray[2]; - scale = "page-width"; - - if (y === null && this._location) { - x = this._location.left; - y = this._location.top; - } else if (typeof y !== "number" || y < 0) { - y = pageHeight; - } - - break; - - case "FitV": - case "FitBV": - x = destArray[2]; - width = pageWidth; - height = pageHeight; - scale = "page-height"; - break; - - case "FitR": - x = destArray[2]; - y = destArray[3]; - width = destArray[4] - x; - height = destArray[5] - y; - const hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; - const vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; - widthScale = (this.container.clientWidth - hPadding) / width / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; - heightScale = (this.container.clientHeight - vPadding) / height / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; - scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); - break; - - default: - console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`); - return; - } - - if (!ignoreDestinationZoom) { - if (scale && scale !== this._currentScale) { - this.currentScaleValue = scale; - } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { - this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - } - - if (scale === "page-fit" && !destArray[4]) { - this.#scrollIntoView(pageView); - return; - } - - const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; - let left = Math.min(boundingRect[0][0], boundingRect[1][0]); - let top = Math.min(boundingRect[0][1], boundingRect[1][1]); - - if (!allowNegativeOffset) { - left = Math.max(left, 0); - top = Math.max(top, 0); - } - - this.#scrollIntoView(pageView, { - left, - top - }); - } - - _updateLocation(firstPage) { - const currentScale = this._currentScale; - const currentScaleValue = this._currentScaleValue; - const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; - const pageNumber = firstPage.id; - const currentPageView = this._pages[pageNumber - 1]; - const container = this.container; - const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); - const intLeft = Math.round(topLeft[0]); - const intTop = Math.round(topLeft[1]); - let pdfOpenParams = `#page=${pageNumber}`; - - if (!this.isInPresentationMode) { - pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`; - } - - this._location = { - pageNumber, - scale: normalizedScaleValue, - top: intTop, - left: intLeft, - rotation: this._pagesRotation, - pdfOpenParams - }; - } - - update() { - const visible = this._getVisiblePages(); - - const visiblePages = visible.views, - numVisiblePages = visiblePages.length; - - if (numVisiblePages === 0) { - return; - } - - const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); - this.#buffer.resize(newCacheSize, visible.ids); - this.renderingQueue.renderHighestPriority(visible); - const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL); - const currentId = this._currentPageNumber; - let stillFullyVisible = false; - - for (const page of visiblePages) { - if (page.percent < 100) { - break; - } - - if (page.id === currentId && isSimpleLayout) { - stillFullyVisible = true; - break; - } - } - - this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id); - - this._updateLocation(visible.first); - - this.eventBus.dispatch("updateviewarea", { - source: this, - location: this._location - }); - } - - containsElement(element) { - return this.container.contains(element); - } - - focus() { - this.container.focus(); - } - - get _isContainerRtl() { - return getComputedStyle(this.container).direction === "rtl"; - } - - get isInPresentationMode() { - return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; - } - - get isChangingPresentationMode() { - return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING; - } - - get isHorizontalScrollbarEnabled() { - return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; - } - - get isVerticalScrollbarEnabled() { - return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight; - } - - _getVisiblePages() { - const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages, - horizontal = this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL, - rtl = horizontal && this._isContainerRtl; - return (0, _ui_utils.getVisibleElements)({ - scrollEl: this.container, - views, - sortByVisibility: true, - horizontal, - rtl - }); - } - - isPageVisible(pageNumber) { - if (!this.pdfDocument) { - return false; - } - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error(`isPageVisible: "${pageNumber}" is not a valid page.`); - return false; - } - - return this._getVisiblePages().ids.has(pageNumber); - } - - isPageCached(pageNumber) { - if (!this.pdfDocument) { - return false; - } - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error(`isPageCached: "${pageNumber}" is not a valid page.`); - return false; - } - - const pageView = this._pages[pageNumber - 1]; - return this.#buffer.has(pageView); - } - - cleanup() { - for (const pageView of this._pages) { - if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) { - pageView.reset(); - } - } - } - - _cancelRendering() { - for (const pageView of this._pages) { - pageView.cancelRendering(); - } - } - - async #ensurePdfPageLoaded(pageView) { - if (pageView.pdfPage) { - return pageView.pdfPage; - } - - try { - const pdfPage = await this.pdfDocument.getPage(pageView.id); - - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - - if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) { - this.linkService.cachePageRef(pageView.id, pdfPage.ref); - } - - return pdfPage; - } catch (reason) { - console.error("Unable to get page for page view", reason); - return null; - } - } - - #getScrollAhead(visible) { - if (visible.first?.id === 1) { - return true; - } else if (visible.last?.id === this.pagesCount) { - return false; - } - - switch (this._scrollMode) { - case _ui_utils.ScrollMode.PAGE: - return this.#scrollModePageState.scrollDown; - - case _ui_utils.ScrollMode.HORIZONTAL: - return this.scroll.right; - } - - return this.scroll.down; - } - - #toggleLoadingIconSpinner(visibleIds) { - for (const id of visibleIds) { - const pageView = this._pages[id - 1]; - pageView?.toggleLoadingIconSpinner(true); - } - - for (const pageView of this.#buffer) { - if (visibleIds.has(pageView.id)) { - continue; - } - - pageView.toggleLoadingIconSpinner(false); - } - } - - forceRendering(currentlyVisiblePages) { - const visiblePages = currentlyVisiblePages || this._getVisiblePages(); - - const scrollAhead = this.#getScrollAhead(visiblePages); - const preRenderExtra = this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL; - const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra); - this.#toggleLoadingIconSpinner(visiblePages.ids); - - if (pageView) { - this.#ensurePdfPageLoaded(pageView).then(() => { - this.renderingQueue.renderView(pageView); - }); - return true; - } - - return false; - } - - createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus, highlighter) { - return new _text_layer_builder.TextLayerBuilder({ - textLayerDiv, - eventBus, - pageIndex, - viewport, - enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection, - highlighter - }); - } - - createTextHighlighter(pageIndex, eventBus) { - return new _text_highlighter.TextHighlighter({ - eventBus, - pageIndex, - findController: this.isInPresentationMode ? null : this.findController - }); - } - - createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderForms = true, l10n = _l10n_utils.NullL10n, enableScripting = null, hasJSActionsPromise = null, mouseState = null, fieldObjectsPromise = null, annotationCanvasMap = null) { - return new _annotation_layer_builder.AnnotationLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage, - imageResourcesPath, - renderForms, - linkService: this.linkService, - downloadManager: this.downloadManager, - l10n, - enableScripting: enableScripting ?? this.enableScripting, - hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(), - fieldObjectsPromise: fieldObjectsPromise || this.pdfDocument?.getFieldObjects(), - mouseState: mouseState || this._scriptingManager?.mouseState, - annotationCanvasMap - }); - } - - createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) { - return new _xfa_layer_builder.XfaLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage, - linkService: this.linkService - }); - } - - createStructTreeLayerBuilder(pdfPage) { - return new _struct_tree_layer_builder.StructTreeLayerBuilder({ - pdfPage - }); - } - - get hasEqualPageSizes() { - const firstPageView = this._pages[0]; - - for (let i = 1, ii = this._pages.length; i < ii; ++i) { - const pageView = this._pages[i]; - - if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { - return false; - } - } - - return true; - } - - getPagesOverview() { - return this._pages.map(pageView => { - const viewport = pageView.pdfPage.getViewport({ - scale: 1 - }); - - if (!this.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) { - return { - width: viewport.width, - height: viewport.height, - rotation: viewport.rotation - }; - } - - return { - width: viewport.height, - height: viewport.width, - rotation: (viewport.rotation - 90) % 360 - }; - }); - } - - get optionalContentConfigPromise() { - if (!this.pdfDocument) { - return Promise.resolve(null); - } - - if (!this._optionalContentConfigPromise) { - return this.pdfDocument.getOptionalContentConfig(); - } - - return this._optionalContentConfigPromise; - } - - set optionalContentConfigPromise(promise) { - if (!(promise instanceof Promise)) { - throw new Error(`Invalid optionalContentConfigPromise: ${promise}`); - } - - if (!this.pdfDocument) { - return; - } - - if (!this._optionalContentConfigPromise) { - return; - } - - this._optionalContentConfigPromise = promise; - const updateArgs = { - optionalContentConfigPromise: promise - }; - - for (const pageView of this._pages) { - pageView.update(updateArgs); - } - - this.update(); - this.eventBus.dispatch("optionalcontentconfigchanged", { - source: this, - promise - }); - } - - get scrollMode() { - return this._scrollMode; - } - - set scrollMode(mode) { - if (this._scrollMode === mode) { - return; - } - - if (!(0, _ui_utils.isValidScrollMode)(mode)) { - throw new Error(`Invalid scroll mode: ${mode}`); - } - - if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { - return; - } - - this._previousScrollMode = this._scrollMode; - this._scrollMode = mode; - this.eventBus.dispatch("scrollmodechanged", { - source: this, - mode - }); - - this._updateScrollMode(this._currentPageNumber); - } - - _updateScrollMode(pageNumber = null) { - const scrollMode = this._scrollMode, - viewer = this.viewer; - viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL); - viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED); - - if (!this.pdfDocument || !pageNumber) { - return; - } - - if (scrollMode === _ui_utils.ScrollMode.PAGE) { - this.#ensurePageViewVisible(); - } else if (this._previousScrollMode === _ui_utils.ScrollMode.PAGE) { - this._updateSpreadMode(); - } - - if (this._currentScaleValue && isNaN(this._currentScaleValue)) { - this._setScale(this._currentScaleValue, true); - } - - this._setCurrentPageNumber(pageNumber, true); - - this.update(); - } - - get spreadMode() { - return this._spreadMode; - } - - set spreadMode(mode) { - if (this._spreadMode === mode) { - return; - } - - if (!(0, _ui_utils.isValidSpreadMode)(mode)) { - throw new Error(`Invalid spread mode: ${mode}`); - } - - this._spreadMode = mode; - this.eventBus.dispatch("spreadmodechanged", { - source: this, - mode - }); - - this._updateSpreadMode(this._currentPageNumber); - } - - _updateSpreadMode(pageNumber = null) { - if (!this.pdfDocument) { - return; - } - - const viewer = this.viewer, - pages = this._pages; - - if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { - this.#ensurePageViewVisible(); - } else { - viewer.textContent = ""; - - if (this._spreadMode === _ui_utils.SpreadMode.NONE) { - for (const pageView of this._pages) { - viewer.appendChild(pageView.div); - } - } else { - const parity = this._spreadMode - 1; - let spread = null; - - for (let i = 0, ii = pages.length; i < ii; ++i) { - if (spread === null) { - spread = document.createElement("div"); - spread.className = "spread"; - viewer.appendChild(spread); - } else if (i % 2 === parity) { - spread = spread.cloneNode(false); - viewer.appendChild(spread); - } - - spread.appendChild(pages[i].div); - } - } - } - - if (!pageNumber) { - return; - } - - if (this._currentScaleValue && isNaN(this._currentScaleValue)) { - this._setScale(this._currentScaleValue, true); - } - - this._setCurrentPageNumber(pageNumber, true); - - this.update(); - } - - _getPageAdvance(currentPageNumber, previous = false) { - 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.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.PAGE: - 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; - } - - increaseScale(steps = 1) { - let newScale = this._currentScale; - - do { - newScale = (newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.ceil(newScale * 10) / 10; - newScale = Math.min(_ui_utils.MAX_SCALE, newScale); - } while (--steps > 0 && newScale < _ui_utils.MAX_SCALE); - - this.currentScaleValue = newScale; - } - - decreaseScale(steps = 1) { - let newScale = this._currentScale; - - do { - newScale = (newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.floor(newScale * 10) / 10; - newScale = Math.max(_ui_utils.MIN_SCALE, newScale); - } while (--steps > 0 && newScale > _ui_utils.MIN_SCALE); - - this.currentScaleValue = newScale; - } - - updateContainerHeightCss() { - const height = this.container.clientHeight; - - if (height !== this.#previousContainerHeight) { - this.#previousContainerHeight = height; - - this._doc.style.setProperty("--viewer-container-height", `${height}px`); - } - } - -} - -exports.BaseViewer = BaseViewer; - -/***/ }), -/* 12 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFPageView = void 0; - -var _pdfjsLib = __w_pdfjs_require__(3); - -var _ui_utils = __w_pdfjs_require__(6); - -var _app_options = __w_pdfjs_require__(13); - -var _l10n_utils = __w_pdfjs_require__(4); - -const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216; - -class PDFPageView { - #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; - - constructor(options) { - const container = options.container; - const defaultViewport = options.defaultViewport; - this.id = options.id; - this.renderingId = "page" + this.id; - this.pdfPage = null; - this.pageLabel = null; - this.rotation = 0; - this.scale = options.scale || _ui_utils.DEFAULT_SCALE; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; - this.hasRestrictedScaling = false; - this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; - this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; - this.imageResourcesPath = options.imageResourcesPath || ""; - this.useOnlyCssZoom = options.useOnlyCssZoom || false; - this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; - this.pageColors = options.pageColors || null; - this.eventBus = options.eventBus; - this.renderingQueue = options.renderingQueue; - this.textLayerFactory = options.textLayerFactory; - this.annotationLayerFactory = options.annotationLayerFactory; - this.xfaLayerFactory = options.xfaLayerFactory; - this.textHighlighter = options.textHighlighterFactory?.createTextHighlighter(this.id - 1, this.eventBus); - this.structTreeLayerFactory = options.structTreeLayerFactory; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.l10n = options.l10n || _l10n_utils.NullL10n; - this.paintTask = null; - this.paintedViewportMap = new WeakMap(); - this.renderingState = _ui_utils.RenderingStates.INITIAL; - this.resume = null; - this._renderError = null; - this._isStandalone = !this.renderingQueue?.hasViewer(); - this._annotationCanvasMap = null; - this.annotationLayer = null; - this.textLayer = null; - this.zoomLayer = null; - this.xfaLayer = null; - this.structTreeLayer = null; - const div = document.createElement("div"); - div.className = "page"; - div.style.width = Math.floor(this.viewport.width) + "px"; - div.style.height = Math.floor(this.viewport.height) + "px"; - div.setAttribute("data-page-number", this.id); - div.setAttribute("role", "region"); - this.l10n.get("page_landmark", { - page: this.id - }).then(msg => { - div.setAttribute("aria-label", msg); - }); - this.div = div; - container?.appendChild(div); - } - - setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - const totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport({ - scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, - rotation: totalRotation - }); - this.reset(); - } - - destroy() { - this.reset(); - - if (this.pdfPage) { - this.pdfPage.cleanup(); - } - } - - async _renderAnnotationLayer() { - let error = null; - - try { - await this.annotationLayer.render(this.viewport, "display"); - } catch (ex) { - error = ex; - } finally { - this.eventBus.dispatch("annotationlayerrendered", { - source: this, - pageNumber: this.id, - error - }); - } - } - - async _renderXfaLayer() { - let error = null; - - try { - const result = await this.xfaLayer.render(this.viewport, "display"); - - if (this.textHighlighter) { - this._buildXfaTextContentItems(result.textDivs); - } - } catch (ex) { - error = ex; - } finally { - this.eventBus.dispatch("xfalayerrendered", { - source: this, - pageNumber: this.id, - error - }); - } - } - - async _buildXfaTextContentItems(textDivs) { - const text = await this.pdfPage.getTextContent(); - const items = []; - - for (const item of text.items) { - items.push(item.str); - } - - this.textHighlighter.setTextMapping(textDivs, items); - this.textHighlighter.enable(); - } - - _resetZoomLayer(removeFromDOM = false) { - if (!this.zoomLayer) { - return; - } - - const zoomLayerCanvas = this.zoomLayer.firstChild; - this.paintedViewportMap.delete(zoomLayerCanvas); - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - - if (removeFromDOM) { - this.zoomLayer.remove(); - } - - this.zoomLayer = null; - } - - reset({ - keepZoomLayer = false, - keepAnnotationLayer = false, - keepXfaLayer = false - } = {}) { - this.cancelRendering({ - keepAnnotationLayer, - keepXfaLayer - }); - this.renderingState = _ui_utils.RenderingStates.INITIAL; - const div = this.div; - div.style.width = Math.floor(this.viewport.width) + "px"; - div.style.height = Math.floor(this.viewport.height) + "px"; - const childNodes = div.childNodes, - zoomLayerNode = keepZoomLayer && this.zoomLayer || null, - annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null, - xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null; - - for (let i = childNodes.length - 1; i >= 0; i--) { - const node = childNodes[i]; - - switch (node) { - case zoomLayerNode: - case annotationLayerNode: - case xfaLayerNode: - continue; - } - - node.remove(); - } - - div.removeAttribute("data-loaded"); - - if (annotationLayerNode) { - this.annotationLayer.hide(); - } - - if (xfaLayerNode) { - this.xfaLayer.hide(); - } - - if (!zoomLayerNode) { - if (this.canvas) { - this.paintedViewportMap.delete(this.canvas); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - - this._resetZoomLayer(); - } - - if (this.svg) { - this.paintedViewportMap.delete(this.svg); - delete this.svg; - } - - this.loadingIconDiv = document.createElement("div"); - this.loadingIconDiv.className = "loadingIcon notVisible"; - - if (this._isStandalone) { - this.toggleLoadingIconSpinner(true); - } - - this.loadingIconDiv.setAttribute("role", "img"); - this.l10n.get("loading").then(msg => { - this.loadingIconDiv?.setAttribute("aria-label", msg); - }); - div.appendChild(this.loadingIconDiv); - } - - update({ - scale = 0, - rotation = null, - optionalContentConfigPromise = null - }) { - this.scale = scale || this.scale; - - if (typeof rotation === "number") { - this.rotation = rotation; - } - - if (optionalContentConfigPromise instanceof Promise) { - this._optionalContentConfigPromise = optionalContentConfigPromise; - } - - const totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, - rotation: totalRotation - }); - - if (this._isStandalone) { - const { - style - } = document.documentElement; - style.setProperty("--zoom-factor", this.scale); - } - - if (this.svg) { - this.cssTransform({ - target: this.svg, - redrawAnnotationLayer: true, - redrawXfaLayer: true - }); - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: true, - timestamp: performance.now(), - error: this._renderError - }); - return; - } - - let isScalingRestricted = false; - - if (this.canvas && this.maxCanvasPixels > 0) { - const outputScale = this.outputScale; - - if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) { - isScalingRestricted = true; - } - } - - if (this.canvas) { - if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { - this.cssTransform({ - target: this.canvas, - redrawAnnotationLayer: true, - redrawXfaLayer: true - }); - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: true, - timestamp: performance.now(), - error: this._renderError - }); - return; - } - - if (!this.zoomLayer && !this.canvas.hidden) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = "absolute"; - } - } - - if (this.zoomLayer) { - this.cssTransform({ - target: this.zoomLayer.firstChild - }); - } - - this.reset({ - keepZoomLayer: true, - keepAnnotationLayer: true, - keepXfaLayer: true - }); - } - - cancelRendering({ - keepAnnotationLayer = false, - keepXfaLayer = false - } = {}) { - if (this.paintTask) { - this.paintTask.cancel(); - this.paintTask = null; - } - - this.resume = null; - - if (this.textLayer) { - this.textLayer.cancel(); - this.textLayer = null; - } - - if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) { - this.annotationLayer.cancel(); - this.annotationLayer = null; - this._annotationCanvasMap = null; - } - - if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) { - this.xfaLayer.cancel(); - this.xfaLayer = null; - this.textHighlighter?.disable(); - } - - if (this._onTextLayerRendered) { - this.eventBus._off("textlayerrendered", this._onTextLayerRendered); - - this._onTextLayerRendered = null; - } - } - - cssTransform({ - target, - redrawAnnotationLayer = false, - redrawXfaLayer = false - }) { - const width = this.viewport.width; - const height = this.viewport.height; - const div = this.div; - target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + "px"; - target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + "px"; - const relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; - const absRotation = Math.abs(relativeRotation); - let scaleX = 1, - scaleY = 1; - - if (absRotation === 90 || absRotation === 270) { - scaleX = height / width; - scaleY = width / height; - } - - target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; - - if (this.textLayer) { - const textLayerViewport = this.textLayer.viewport; - const textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; - const textAbsRotation = Math.abs(textRelativeRotation); - let scale = width / textLayerViewport.width; - - if (textAbsRotation === 90 || textAbsRotation === 270) { - scale = width / textLayerViewport.height; - } - - const textLayerDiv = this.textLayer.textLayerDiv; - let transX, transY; - - switch (textAbsRotation) { - case 0: - transX = transY = 0; - break; - - case 90: - transX = 0; - transY = "-" + textLayerDiv.style.height; - break; - - case 180: - transX = "-" + textLayerDiv.style.width; - transY = "-" + textLayerDiv.style.height; - break; - - case 270: - transX = "-" + textLayerDiv.style.width; - transY = 0; - break; - - default: - console.error("Bad rotation value."); - break; - } - - textLayerDiv.style.transform = `rotate(${textAbsRotation}deg) ` + `scale(${scale}) ` + `translate(${transX}, ${transY})`; - textLayerDiv.style.transformOrigin = "0% 0%"; - } - - if (redrawAnnotationLayer && this.annotationLayer) { - this._renderAnnotationLayer(); - } - - if (redrawXfaLayer && this.xfaLayer) { - this._renderXfaLayer(); - } - } - - get width() { - return this.viewport.width; - } - - get height() { - return this.viewport.height; - } - - getPagePoint(x, y) { - return this.viewport.convertToPdfPoint(x, y); - } - - toggleLoadingIconSpinner(viewVisible = false) { - this.loadingIconDiv?.classList.toggle("notVisible", !viewVisible); - } - - draw() { - if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { - console.error("Must be in new state before drawing"); - this.reset(); - } - - const { - div, - pdfPage - } = this; - - if (!pdfPage) { - this.renderingState = _ui_utils.RenderingStates.FINISHED; - - if (this.loadingIconDiv) { - this.loadingIconDiv.remove(); - delete this.loadingIconDiv; - } - - return Promise.reject(new Error("pdfPage is not loaded")); - } - - this.renderingState = _ui_utils.RenderingStates.RUNNING; - const canvasWrapper = document.createElement("div"); - canvasWrapper.style.width = div.style.width; - canvasWrapper.style.height = div.style.height; - canvasWrapper.classList.add("canvasWrapper"); - - if (this.annotationLayer?.div) { - div.insertBefore(canvasWrapper, this.annotationLayer.div); - } else { - div.appendChild(canvasWrapper); - } - - let textLayer = null; - - if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) { - const textLayerDiv = document.createElement("div"); - textLayerDiv.className = "textLayer"; - textLayerDiv.style.width = canvasWrapper.style.width; - textLayerDiv.style.height = canvasWrapper.style.height; - - if (this.annotationLayer?.div) { - div.insertBefore(textLayerDiv, this.annotationLayer.div); - } else { - div.appendChild(textLayerDiv); - } - - textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE, this.eventBus, this.textHighlighter); - } - - this.textLayer = textLayer; - - if (this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE && this.annotationLayerFactory) { - this._annotationCanvasMap ||= new Map(); - this.annotationLayer ||= this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, this.imageResourcesPath, this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS, this.l10n, null, null, null, null, this._annotationCanvasMap); - } - - if (this.xfaLayer?.div) { - div.appendChild(this.xfaLayer.div); - } - - let renderContinueCallback = null; - - if (this.renderingQueue) { - renderContinueCallback = cont => { - if (!this.renderingQueue.isHighestPriority(this)) { - this.renderingState = _ui_utils.RenderingStates.PAUSED; - - this.resume = () => { - this.renderingState = _ui_utils.RenderingStates.RUNNING; - cont(); - }; - - return; - } - - cont(); - }; - } - - const finishPaintTask = async (error = null) => { - if (paintTask === this.paintTask) { - this.paintTask = null; - } - - if (error instanceof _pdfjsLib.RenderingCancelledException) { - this._renderError = null; - return; - } - - this._renderError = error; - this.renderingState = _ui_utils.RenderingStates.FINISHED; - - if (this.loadingIconDiv) { - this.loadingIconDiv.remove(); - delete this.loadingIconDiv; - } - - this._resetZoomLayer(true); - - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: false, - timestamp: performance.now(), - error: this._renderError - }); - - if (error) { - throw error; - } - }; - - const paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); - paintTask.onRenderContinue = renderContinueCallback; - this.paintTask = paintTask; - const resultPromise = paintTask.promise.then(() => { - return finishPaintTask(null).then(() => { - if (textLayer) { - const readableStream = pdfPage.streamTextContent({ - includeMarkedContent: true - }); - textLayer.setTextContentStream(readableStream); - textLayer.render(); - } - - if (this.annotationLayer) { - this._renderAnnotationLayer(); - } - }); - }, function (reason) { - return finishPaintTask(reason); - }); - - if (this.xfaLayerFactory) { - if (!this.xfaLayer) { - this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(div, pdfPage, null); - } - - this._renderXfaLayer(); - } - - if (this.structTreeLayerFactory && this.textLayer && this.canvas) { - this._onTextLayerRendered = event => { - if (event.pageNumber !== this.id) { - return; - } - - this.eventBus._off("textlayerrendered", this._onTextLayerRendered); - - this._onTextLayerRendered = null; - - if (!this.canvas) { - return; - } - - this.pdfPage.getStructTree().then(tree => { - if (!tree) { - return; - } - - if (!this.canvas) { - return; - } - - const treeDom = this.structTreeLayer.render(tree); - treeDom.classList.add("structTree"); - this.canvas.appendChild(treeDom); - }); - }; - - this.eventBus._on("textlayerrendered", this._onTextLayerRendered); - - this.structTreeLayer = this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage); - } - - div.setAttribute("data-loaded", true); - this.eventBus.dispatch("pagerender", { - source: this, - pageNumber: this.id - }); - return resultPromise; - } - - paintOnCanvas(canvasWrapper) { - const renderCapability = (0, _pdfjsLib.createPromiseCapability)(); - const result = { - promise: renderCapability.promise, - - onRenderContinue(cont) { - cont(); - }, - - cancel() { - renderTask.cancel(); - } - - }; - const viewport = this.viewport; - const canvas = document.createElement("canvas"); - canvas.hidden = true; - let isCanvasHidden = true; - - const showCanvas = function () { - if (isCanvasHidden) { - canvas.hidden = false; - isCanvasHidden = false; - } - }; - - canvasWrapper.appendChild(canvas); - this.canvas = canvas; - const ctx = canvas.getContext("2d", { - alpha: false - }); - const outputScale = this.outputScale = new _ui_utils.OutputScale(); - - if (this.useOnlyCssZoom) { - const actualSizeViewport = viewport.clone({ - scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS - }); - outputScale.sx *= actualSizeViewport.width / viewport.width; - outputScale.sy *= actualSizeViewport.height / viewport.height; - } - - if (this.maxCanvasPixels > 0) { - const pixelsInViewport = viewport.width * viewport.height; - const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); - - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - this.hasRestrictedScaling = true; - } else { - this.hasRestrictedScaling = false; - } - } - - const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); - const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); - canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); - canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); - canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; - canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px"; - this.paintedViewportMap.set(canvas, viewport); - const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; - const renderContext = { - canvasContext: ctx, - transform, - viewport: this.viewport, - annotationMode: this.#annotationMode, - optionalContentConfigPromise: this._optionalContentConfigPromise, - annotationCanvasMap: this._annotationCanvasMap, - pageColors: this.pageColors - }; - const renderTask = this.pdfPage.render(renderContext); - - renderTask.onContinue = function (cont) { - showCanvas(); - - if (result.onRenderContinue) { - result.onRenderContinue(cont); - } else { - cont(); - } - }; - - renderTask.promise.then(function () { - showCanvas(); - renderCapability.resolve(); - }, function (error) { - showCanvas(); - renderCapability.reject(error); - }); - return result; - } - - paintOnSvg(wrapper) { - let cancelled = false; - - const ensureNotCancelled = () => { - if (cancelled) { - throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`, "svg"); - } - }; - - const pdfPage = this.pdfPage; - const actualSizeViewport = this.viewport.clone({ - scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS - }); - const promise = pdfPage.getOperatorList({ - annotationMode: this.#annotationMode - }).then(opList => { - ensureNotCancelled(); - const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs); - return svgGfx.getSVG(opList, actualSizeViewport).then(svg => { - ensureNotCancelled(); - this.svg = svg; - this.paintedViewportMap.set(svg, actualSizeViewport); - svg.style.width = wrapper.style.width; - svg.style.height = wrapper.style.height; - this.renderingState = _ui_utils.RenderingStates.FINISHED; - wrapper.appendChild(svg); - }); - }); - return { - promise, - - onRenderContinue(cont) { - cont(); - }, - - cancel() { - cancelled = true; - } - - }; - } - - setPageLabel(label) { - this.pageLabel = typeof label === "string" ? label : null; - - if (this.pageLabel !== null) { - this.div.setAttribute("data-page-label", this.pageLabel); - } else { - this.div.removeAttribute("data-page-label"); - } - } - -} - -exports.PDFPageView = PDFPageView; - -/***/ }), -/* 13 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0; -const compatibilityParams = Object.create(null); -exports.compatibilityParams = compatibilityParams; -{ - const userAgent = navigator.userAgent || ""; - const platform = navigator.platform || ""; - const maxTouchPoints = navigator.maxTouchPoints || 1; - const isAndroid = /Android/.test(userAgent); - const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; - - (function checkCanvasSizeLimitation() { - if (isIOS || isAndroid) { - compatibilityParams.maxCanvasPixels = 5242880; - } - })(); -} -const OptionKind = { - VIEWER: 0x02, - API: 0x04, - WORKER: 0x08, - PREFERENCE: 0x80 -}; -exports.OptionKind = OptionKind; -const defaultOptions = { - annotationMode: { - value: 2, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - 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: true, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enableScripting: { - value: true, - 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: compatibilityParams.maxCanvasPixels, - kind: OptionKind.VIEWER - }, - pageColorsBackground: { - value: "Canvas", - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - pageColorsForeground: { - value: "CanvasText", - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - pdfBugEnabled: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - printResolution: { - value: 150, - kind: OptionKind.VIEWER - }, - renderer: { - value: "canvas", - kind: OptionKind.VIEWER - }, - 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 - }, - enableXfa: { - value: true, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - fontExtraProperties: { - value: false, - kind: OptionKind.API - }, - isEvalSupported: { - value: true, - kind: OptionKind.API - }, - maxImageSize: { - value: -1, - kind: OptionKind.API - }, - pdfBug: { - value: false, - kind: OptionKind.API - }, - standardFontDataUrl: { - value: "../web/standard_fonts/", - 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: navigator.language || "en-US", - kind: OptionKind.VIEWER - }; - defaultOptions.sandboxBundleSrc = { - value: "../build/pdf.sandbox.js", - kind: OptionKind.VIEWER - }; - defaultOptions.renderer.kind += OptionKind.PREFERENCE; -} -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]; - } - - static _hasUserOptions() { - return Object.keys(userOptions).length > 0; - } - -} - -exports.AppOptions = AppOptions; - -/***/ }), -/* 14 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFRenderingQueue = void 0; - -var _pdfjsLib = __w_pdfjs_require__(3); - -var _ui_utils = __w_pdfjs_require__(6); - -const CLEANUP_TIMEOUT = 30000; - -class PDFRenderingQueue { - constructor() { - this.pdfViewer = null; - this.pdfThumbnailViewer = null; - this.onIdle = null; - this.highestPriorityPage = null; - this.idleTimeout = null; - this.printing = false; - this.isThumbnailViewEnabled = false; - } - - setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - - setThumbnailViewer(pdfThumbnailViewer) { - this.pdfThumbnailViewer = pdfThumbnailViewer; - } - - isHighestPriority(view) { - return this.highestPriorityPage === view.renderingId; - } - - hasViewer() { - return !!this.pdfViewer; - } - - renderHighestPriority(currentlyVisiblePages) { - if (this.idleTimeout) { - clearTimeout(this.idleTimeout); - this.idleTimeout = null; - } - - if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { - return; - } - - if (this.isThumbnailViewEnabled && this.pdfThumbnailViewer?.forceRendering()) { - return; - } - - if (this.printing) { - return; - } - - if (this.onIdle) { - this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); - } - } - - getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) { - const visibleViews = visible.views, - numVisible = visibleViews.length; - - if (numVisible === 0) { - return null; - } - - for (let i = 0; i < numVisible; i++) { - const view = visibleViews[i].view; - - if (!this.isViewFinished(view)) { - return view; - } - } - - const firstId = visible.first.id, - lastId = visible.last.id; - - if (lastId - firstId + 1 > numVisible) { - const visibleIds = visible.ids; - - for (let i = 1, ii = lastId - firstId; i < ii; i++) { - const holeId = scrolledDown ? firstId + i : lastId - i; - - if (visibleIds.has(holeId)) { - continue; - } - - const holeView = views[holeId - 1]; - - if (!this.isViewFinished(holeView)) { - return holeView; - } - } - } - - let preRenderIndex = scrolledDown ? lastId : firstId - 2; - let preRenderView = views[preRenderIndex]; - - if (preRenderView && !this.isViewFinished(preRenderView)) { - return preRenderView; - } - - if (preRenderExtra) { - preRenderIndex += scrolledDown ? 1 : -1; - preRenderView = views[preRenderIndex]; - - if (preRenderView && !this.isViewFinished(preRenderView)) { - return preRenderView; - } - } - - return null; - } - - isViewFinished(view) { - return view.renderingState === _ui_utils.RenderingStates.FINISHED; - } - - renderView(view) { - switch (view.renderingState) { - case _ui_utils.RenderingStates.FINISHED: - return false; - - case _ui_utils.RenderingStates.PAUSED: - this.highestPriorityPage = view.renderingId; - view.resume(); - break; - - case _ui_utils.RenderingStates.RUNNING: - this.highestPriorityPage = view.renderingId; - break; - - case _ui_utils.RenderingStates.INITIAL: - this.highestPriorityPage = view.renderingId; - view.draw().finally(() => { - this.renderHighestPriority(); - }).catch(reason => { - if (reason instanceof _pdfjsLib.RenderingCancelledException) { - return; - } - - console.error(`renderView: "${reason}"`); - }); - break; - } - - return true; - } - -} - -exports.PDFRenderingQueue = PDFRenderingQueue; - -/***/ }), -/* 15 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TextHighlighter = void 0; - -class TextHighlighter { - constructor({ - findController, - eventBus, - pageIndex - }) { - this.findController = findController; - this.matches = []; - this.eventBus = eventBus; - this.pageIdx = pageIndex; - this._onUpdateTextLayerMatches = null; - this.textDivs = null; - this.textContentItemsStr = null; - this.enabled = false; - } - - setTextMapping(divs, texts) { - this.textDivs = divs; - this.textContentItemsStr = texts; - } - - enable() { - if (!this.textDivs || !this.textContentItemsStr) { - throw new Error("Text divs and strings have not been set."); - } - - if (this.enabled) { - throw new Error("TextHighlighter is already enabled."); - } - - this.enabled = true; - - if (!this._onUpdateTextLayerMatches) { - this._onUpdateTextLayerMatches = evt => { - if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) { - this._updateMatches(); - } - }; - - this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); - } - - this._updateMatches(); - } - - disable() { - if (!this.enabled) { - return; - } - - this.enabled = false; - - if (this._onUpdateTextLayerMatches) { - this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); - - this._onUpdateTextLayerMatches = null; - } - } - - _convertMatches(matches, matchesLength) { - if (!matches) { - return []; - } - - const { - textContentItemsStr - } = this; - let i = 0, - iIndex = 0; - const end = textContentItemsStr.length - 1; - const result = []; - - for (let m = 0, mm = matches.length; m < mm; m++) { - let matchIdx = matches[m]; - - while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { - iIndex += textContentItemsStr[i].length; - i++; - } - - if (i === textContentItemsStr.length) { - console.error("Could not find a matching mapping"); - } - - const match = { - begin: { - divIdx: i, - offset: matchIdx - iIndex - } - }; - matchIdx += matchesLength[m]; - - while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { - iIndex += textContentItemsStr[i].length; - i++; - } - - match.end = { - divIdx: i, - offset: matchIdx - iIndex - }; - result.push(match); - } - - return result; - } - - _renderMatches(matches) { - if (matches.length === 0) { - return; - } - - const { - findController, - pageIdx - } = this; - const { - textContentItemsStr, - textDivs - } = this; - const isSelectedPage = pageIdx === findController.selected.pageIdx; - const selectedMatchIdx = findController.selected.matchIdx; - const highlightAll = findController.state.highlightAll; - let prevEnd = null; - const infinity = { - divIdx: -1, - offset: undefined - }; - - function beginText(begin, className) { - const divIdx = begin.divIdx; - textDivs[divIdx].textContent = ""; - return appendTextToDiv(divIdx, 0, begin.offset, className); - } - - function appendTextToDiv(divIdx, fromOffset, toOffset, className) { - let div = textDivs[divIdx]; - - if (div.nodeType === Node.TEXT_NODE) { - const span = document.createElement("span"); - div.parentNode.insertBefore(span, div); - span.appendChild(div); - textDivs[divIdx] = span; - div = span; - } - - const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); - const node = document.createTextNode(content); - - if (className) { - const span = document.createElement("span"); - span.className = `${className} appended`; - span.appendChild(node); - div.appendChild(span); - return className.includes("selected") ? span.offsetLeft : 0; - } - - div.appendChild(node); - return 0; - } - - let i0 = selectedMatchIdx, - i1 = i0 + 1; - - if (highlightAll) { - i0 = 0; - i1 = matches.length; - } else if (!isSelectedPage) { - return; - } - - for (let i = i0; i < i1; i++) { - const match = matches[i]; - const begin = match.begin; - const end = match.end; - const isSelected = isSelectedPage && i === selectedMatchIdx; - const highlightSuffix = isSelected ? " selected" : ""; - let selectedLeft = 0; - - if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { - if (prevEnd !== null) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - - beginText(begin); - } else { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); - } - - if (begin.divIdx === end.divIdx) { - selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix); - } else { - selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix); - - for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { - textDivs[n0].className = "highlight middle" + highlightSuffix; - } - - beginText(end, "highlight end" + highlightSuffix); - } - - prevEnd = end; - - if (isSelected) { - findController.scrollMatchIntoView({ - element: textDivs[begin.divIdx], - selectedLeft, - pageIndex: pageIdx, - matchIndex: selectedMatchIdx - }); - } - } - - if (prevEnd) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - } - - _updateMatches() { - if (!this.enabled) { - return; - } - - const { - findController, - matches, - pageIdx - } = this; - const { - textContentItemsStr, - textDivs - } = this; - let clearedUntilDivIdx = -1; - - for (let i = 0, ii = matches.length; i < ii; i++) { - const match = matches[i]; - const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); - - for (let n = begin, end = match.end.divIdx; n <= end; n++) { - const div = textDivs[n]; - div.textContent = textContentItemsStr[n]; - div.className = ""; - } - - clearedUntilDivIdx = match.end.divIdx + 1; - } - - if (!findController?.highlightMatches) { - return; - } - - const pageMatches = findController.pageMatches[pageIdx] || null; - const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; - this.matches = this._convertMatches(pageMatches, pageMatchesLength); - - this._renderMatches(this.matches); - } - -} - -exports.TextHighlighter = TextHighlighter; - -/***/ }), -/* 16 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DownloadManager = void 0; - -var _pdfjsLib = __w_pdfjs_require__(3); - -; - -function download(blobUrl, filename) { - const a = document.createElement("a"); - - if (!a.click) { - throw new Error('DownloadManager: "a.click()" is not supported.'); - } - - a.href = blobUrl; - a.target = "_parent"; - - if ("download" in a) { - a.download = filename; - } - - (document.body || document.documentElement).appendChild(a); - a.click(); - a.remove(); -} - -class DownloadManager { - constructor() { - this._openBlobUrls = new WeakMap(); - } - - downloadUrl(url, filename) { - if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { - console.error(`downloadUrl - not a valid URL: ${url}`); - return; - } - - download(url + "#pdfjs.action=download", filename); - } - - downloadData(data, filename, contentType) { - const blobUrl = URL.createObjectURL(new Blob([data], { - type: contentType - })); - download(blobUrl, filename); - } - - openOrDownloadData(element, data, filename) { - const isPdfData = (0, _pdfjsLib.isPdfFile)(filename); - const contentType = isPdfData ? "application/pdf" : ""; - - if (isPdfData) { - let blobUrl = this._openBlobUrls.get(element); - - if (!blobUrl) { - blobUrl = URL.createObjectURL(new Blob([data], { - type: contentType - })); - - this._openBlobUrls.set(element, blobUrl); - } - - let viewerUrl; - viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); - - try { - window.open(viewerUrl); - return true; - } catch (ex) { - console.error(`openOrDownloadData: ${ex}`); - URL.revokeObjectURL(blobUrl); - - this._openBlobUrls.delete(element); - } - } - - this.downloadData(data, filename, contentType); - return false; - } - - download(blob, url, filename, sourceEventType = "download") { - const blobUrl = URL.createObjectURL(blob); - download(blobUrl, filename); - } - -} - -exports.DownloadManager = DownloadManager; - -/***/ }), -/* 17 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.WaitOnType = exports.EventBus = exports.AutomationEventBus = void 0; -exports.waitOnEventOrTimeout = waitOnEventOrTimeout; -const WaitOnType = { - EVENT: "event", - TIMEOUT: "timeout" -}; -exports.WaitOnType = WaitOnType; - -function waitOnEventOrTimeout({ - target, - name, - delay = 0 -}) { - return new Promise(function (resolve, reject) { - if (typeof target !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) { - throw new Error("waitOnEventOrTimeout - invalid parameters."); - } - - function handler(type) { - if (target instanceof EventBus) { - target._off(name, eventHandler); - } else { - target.removeEventListener(name, eventHandler); - } - - if (timeout) { - clearTimeout(timeout); - } - - resolve(type); - } - - const eventHandler = handler.bind(null, WaitOnType.EVENT); - - if (target instanceof EventBus) { - target._on(name, eventHandler); - } else { - target.addEventListener(name, eventHandler); - } - - const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT); - const timeout = setTimeout(timeoutHandler, delay); - }); -} - -class EventBus { - constructor() { - this._listeners = Object.create(null); - } - - on(eventName, listener, options = null) { - this._on(eventName, listener, { - external: true, - once: options?.once - }); - } - - off(eventName, listener, options = null) { - this._off(eventName, listener, { - external: true, - once: options?.once - }); - } - - dispatch(eventName, data) { - const eventListeners = this._listeners[eventName]; - - if (!eventListeners || eventListeners.length === 0) { - return; - } - - let externalListeners; - - for (const { - listener, - external, - once - } of eventListeners.slice(0)) { - if (once) { - this._off(eventName, listener); - } - - if (external) { - (externalListeners ||= []).push(listener); - continue; - } - - listener(data); - } - - if (externalListeners) { - for (const listener of externalListeners) { - listener(data); - } - - externalListeners = null; - } - } - - _on(eventName, listener, options = null) { - const eventListeners = this._listeners[eventName] ||= []; - eventListeners.push({ - listener, - external: options?.external === true, - once: options?.once === true - }); - } - - _off(eventName, listener, options = null) { - const eventListeners = this._listeners[eventName]; - - if (!eventListeners) { - return; - } - - for (let i = 0, ii = eventListeners.length; i < ii; i++) { - if (eventListeners[i].listener === listener) { - eventListeners.splice(i, 1); - return; - } - } - } - -} - -exports.EventBus = EventBus; - -class AutomationEventBus extends EventBus { - dispatch(eventName, data) { - throw new Error("Not implemented: AutomationEventBus.dispatch"); - } - -} - -exports.AutomationEventBus = AutomationEventBus; - -/***/ }), -/* 18 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GenericL10n = void 0; - -__w_pdfjs_require__(19); - -var _l10n_utils = __w_pdfjs_require__(4); - -const webL10n = document.webL10n; - -class GenericL10n { - constructor(lang) { - this._lang = lang; - this._ready = new Promise((resolve, reject) => { - webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => { - resolve(webL10n); - }); - }); - } - - async getLanguage() { - const l10n = await this._ready; - return l10n.getLanguage(); - } - - async getDirection() { - const l10n = await this._ready; - return l10n.getDirection(); - } - - async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) { - const l10n = await this._ready; - return l10n.get(key, args, fallback); - } - - async translate(element) { - const l10n = await this._ready; - return l10n.translate(element); - } - -} - -exports.GenericL10n = GenericL10n; - -/***/ }), -/* 19 */ -/***/ (() => { - - - -document.webL10n = function (window, document, undefined) { - var gL10nData = {}; - var gTextData = ''; - var gTextProp = 'textContent'; - var gLanguage = ''; - var gMacros = {}; - var gReadyState = 'loading'; - var gAsyncResourceLoading = true; - - function getL10nResourceLinks() { - return document.querySelectorAll('link[type="application/l10n"]'); - } - - function getL10nDictionary() { - var script = document.querySelector('script[type="application/l10n"]'); - return script ? JSON.parse(script.innerHTML) : null; - } - - function getTranslatableChildren(element) { - return element ? element.querySelectorAll('*[data-l10n-id]') : []; - } - - function getL10nAttributes(element) { - if (!element) return {}; - var l10nId = element.getAttribute('data-l10n-id'); - var l10nArgs = element.getAttribute('data-l10n-args'); - var args = {}; - - if (l10nArgs) { - try { - args = JSON.parse(l10nArgs); - } catch (e) { - console.warn('could not parse arguments for #' + l10nId); - } - } - - return { - id: l10nId, - args: args - }; - } - - function xhrLoadText(url, onSuccess, onFailure) { - onSuccess = onSuccess || function _onSuccess(data) {}; - - onFailure = onFailure || function _onFailure() {}; - - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, gAsyncResourceLoading); - - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=utf-8'); - } - - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - if (xhr.status == 200 || xhr.status === 0) { - onSuccess(xhr.responseText); - } else { - onFailure(); - } - } - }; - - xhr.onerror = onFailure; - xhr.ontimeout = onFailure; - - try { - xhr.send(null); - } catch (e) { - onFailure(); - } - } - - function parseResource(href, lang, successCallback, failureCallback) { - var baseURL = href.replace(/[^\/]*$/, '') || './'; - - function evalString(text) { - if (text.lastIndexOf('\\') < 0) return text; - return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); - } - - function parseProperties(text, parsedPropertiesCallback) { - var dictionary = {}; - var reBlank = /^\s*|\s*$/; - var reComment = /^\s*#|^\s*$/; - var reSection = /^\s*\[(.*)\]\s*$/; - var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; - var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; - - function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { - var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); - var currentLang = '*'; - var genericLang = lang.split('-', 1)[0]; - var skipLang = false; - var match = ''; - - function nextEntry() { - while (true) { - if (!entries.length) { - parsedRawLinesCallback(); - return; - } - - var line = entries.shift(); - if (reComment.test(line)) continue; - - if (extendedSyntax) { - match = reSection.exec(line); - - if (match) { - currentLang = match[1].toLowerCase(); - skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; - continue; - } else if (skipLang) { - continue; - } - - match = reImport.exec(line); - - if (match) { - loadImport(baseURL + match[1], nextEntry); - return; - } - } - - var tmp = line.match(reSplit); - - if (tmp && tmp.length == 3) { - dictionary[tmp[1]] = evalString(tmp[2]); - } - } - } - - nextEntry(); - } - - function loadImport(url, callback) { - xhrLoadText(url, function (content) { - parseRawLines(content, false, callback); - }, function () { - console.warn(url + ' not found.'); - callback(); - }); - } - - parseRawLines(text, true, function () { - parsedPropertiesCallback(dictionary); - }); - } - - xhrLoadText(href, function (response) { - gTextData += response; - parseProperties(response, function (data) { - for (var key in data) { - var id, - prop, - index = key.lastIndexOf('.'); - - if (index > 0) { - id = key.substring(0, index); - prop = key.substring(index + 1); - } else { - id = key; - prop = gTextProp; - } - - if (!gL10nData[id]) { - gL10nData[id] = {}; - } - - gL10nData[id][prop] = data[key]; - } - - if (successCallback) { - successCallback(); - } - }); - }, failureCallback); - } - - function loadLocale(lang, callback) { - if (lang) { - lang = lang.toLowerCase(); - } - - callback = callback || function _callback() {}; - - clear(); - gLanguage = lang; - var langLinks = getL10nResourceLinks(); - var langCount = langLinks.length; - - if (langCount === 0) { - var dict = getL10nDictionary(); - - if (dict && dict.locales && dict.default_locale) { - console.log('using the embedded JSON directory, early way out'); - gL10nData = dict.locales[lang]; - - if (!gL10nData) { - var defaultLocale = dict.default_locale.toLowerCase(); - - for (var anyCaseLang in dict.locales) { - anyCaseLang = anyCaseLang.toLowerCase(); - - if (anyCaseLang === lang) { - gL10nData = dict.locales[lang]; - break; - } else if (anyCaseLang === defaultLocale) { - gL10nData = dict.locales[defaultLocale]; - } - } - } - - callback(); - } else { - console.log('no resource to load, early way out'); - } - - gReadyState = 'complete'; - return; - } - - var onResourceLoaded = null; - var gResourceCount = 0; - - onResourceLoaded = function () { - gResourceCount++; - - if (gResourceCount >= langCount) { - callback(); - gReadyState = 'complete'; - } - }; - - function L10nResourceLink(link) { - var href = link.href; - - this.load = function (lang, callback) { - parseResource(href, lang, callback, function () { - console.warn(href + ' not found.'); - console.warn('"' + lang + '" resource not found'); - gLanguage = ''; - callback(); - }); - }; - } - - for (var i = 0; i < langCount; i++) { - var resource = new L10nResourceLink(langLinks[i]); - resource.load(lang, onResourceLoaded); - } - } - - function clear() { - gL10nData = {}; - gTextData = ''; - gLanguage = ''; - } - - function getPluralRules(lang) { - var locales2rules = { - 'af': 3, - 'ak': 4, - 'am': 4, - 'ar': 1, - 'asa': 3, - 'az': 0, - 'be': 11, - 'bem': 3, - 'bez': 3, - 'bg': 3, - 'bh': 4, - 'bm': 0, - 'bn': 3, - 'bo': 0, - 'br': 20, - 'brx': 3, - 'bs': 11, - 'ca': 3, - 'cgg': 3, - 'chr': 3, - 'cs': 12, - 'cy': 17, - 'da': 3, - 'de': 3, - 'dv': 3, - 'dz': 0, - 'ee': 3, - 'el': 3, - 'en': 3, - 'eo': 3, - 'es': 3, - 'et': 3, - 'eu': 3, - 'fa': 0, - 'ff': 5, - 'fi': 3, - 'fil': 4, - 'fo': 3, - 'fr': 5, - 'fur': 3, - 'fy': 3, - 'ga': 8, - 'gd': 24, - 'gl': 3, - 'gsw': 3, - 'gu': 3, - 'guw': 4, - 'gv': 23, - 'ha': 3, - 'haw': 3, - 'he': 2, - 'hi': 4, - 'hr': 11, - 'hu': 0, - 'id': 0, - 'ig': 0, - 'ii': 0, - 'is': 3, - 'it': 3, - 'iu': 7, - 'ja': 0, - 'jmc': 3, - 'jv': 0, - 'ka': 0, - 'kab': 5, - 'kaj': 3, - 'kcg': 3, - 'kde': 0, - 'kea': 0, - 'kk': 3, - 'kl': 3, - 'km': 0, - 'kn': 0, - 'ko': 0, - 'ksb': 3, - 'ksh': 21, - 'ku': 3, - 'kw': 7, - 'lag': 18, - 'lb': 3, - 'lg': 3, - 'ln': 4, - 'lo': 0, - 'lt': 10, - 'lv': 6, - 'mas': 3, - 'mg': 4, - 'mk': 16, - 'ml': 3, - 'mn': 3, - 'mo': 9, - 'mr': 3, - 'ms': 0, - 'mt': 15, - 'my': 0, - 'nah': 3, - 'naq': 7, - 'nb': 3, - 'nd': 3, - 'ne': 3, - 'nl': 3, - 'nn': 3, - 'no': 3, - 'nr': 3, - 'nso': 4, - 'ny': 3, - 'nyn': 3, - 'om': 3, - 'or': 3, - 'pa': 3, - 'pap': 3, - 'pl': 13, - 'ps': 3, - 'pt': 3, - 'rm': 3, - 'ro': 9, - 'rof': 3, - 'ru': 11, - 'rwk': 3, - 'sah': 0, - 'saq': 3, - 'se': 7, - 'seh': 3, - 'ses': 0, - 'sg': 0, - 'sh': 11, - 'shi': 19, - 'sk': 12, - 'sl': 14, - 'sma': 7, - 'smi': 7, - 'smj': 7, - 'smn': 7, - 'sms': 7, - 'sn': 3, - 'so': 3, - 'sq': 3, - 'sr': 11, - 'ss': 3, - 'ssy': 3, - 'st': 3, - 'sv': 3, - 'sw': 3, - 'syr': 3, - 'ta': 3, - 'te': 3, - 'teo': 3, - 'th': 0, - 'ti': 4, - 'tig': 3, - 'tk': 3, - 'tl': 4, - 'tn': 3, - 'to': 0, - 'tr': 0, - 'ts': 3, - 'tzm': 22, - 'uk': 11, - 'ur': 3, - 've': 3, - 'vi': 0, - 'vun': 3, - 'wa': 4, - 'wae': 3, - 'wo': 0, - 'xh': 3, - 'xog': 3, - 'yo': 0, - 'zh': 0, - 'zu': 3 - }; - - function isIn(n, list) { - return list.indexOf(n) !== -1; - } - - function isBetween(n, start, end) { - return start <= n && n <= end; - } - - var pluralRules = { - '0': function (n) { - return 'other'; - }, - '1': function (n) { - if (isBetween(n % 100, 3, 10)) return 'few'; - if (n === 0) return 'zero'; - if (isBetween(n % 100, 11, 99)) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '2': function (n) { - if (n !== 0 && n % 10 === 0) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '3': function (n) { - if (n == 1) return 'one'; - return 'other'; - }, - '4': function (n) { - if (isBetween(n, 0, 1)) return 'one'; - return 'other'; - }, - '5': function (n) { - if (isBetween(n, 0, 2) && n != 2) return 'one'; - return 'other'; - }, - '6': function (n) { - if (n === 0) return 'zero'; - if (n % 10 == 1 && n % 100 != 11) return 'one'; - return 'other'; - }, - '7': function (n) { - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '8': function (n) { - if (isBetween(n, 3, 6)) return 'few'; - if (isBetween(n, 7, 10)) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '9': function (n) { - if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few'; - if (n == 1) return 'one'; - return 'other'; - }, - '10': function (n) { - if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few'; - if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one'; - return 'other'; - }, - '11': function (n) { - if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; - if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many'; - if (n % 10 == 1 && n % 100 != 11) return 'one'; - return 'other'; - }, - '12': function (n) { - if (isBetween(n, 2, 4)) return 'few'; - if (n == 1) return 'one'; - return 'other'; - }, - '13': function (n) { - if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; - if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many'; - if (n == 1) return 'one'; - return 'other'; - }, - '14': function (n) { - if (isBetween(n % 100, 3, 4)) return 'few'; - if (n % 100 == 2) return 'two'; - if (n % 100 == 1) return 'one'; - return 'other'; - }, - '15': function (n) { - if (n === 0 || isBetween(n % 100, 2, 10)) return 'few'; - if (isBetween(n % 100, 11, 19)) return 'many'; - if (n == 1) return 'one'; - return 'other'; - }, - '16': function (n) { - if (n % 10 == 1 && n != 11) return 'one'; - return 'other'; - }, - '17': function (n) { - if (n == 3) return 'few'; - if (n === 0) return 'zero'; - if (n == 6) return 'many'; - if (n == 2) return 'two'; - if (n == 1) return 'one'; - return 'other'; - }, - '18': function (n) { - if (n === 0) return 'zero'; - if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one'; - return 'other'; - }, - '19': function (n) { - if (isBetween(n, 2, 10)) return 'few'; - if (isBetween(n, 0, 1)) return 'one'; - return 'other'; - }, - '20': function (n) { - if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few'; - if (n % 1000000 === 0 && n !== 0) return 'many'; - if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two'; - if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one'; - return 'other'; - }, - '21': function (n) { - if (n === 0) return 'zero'; - if (n == 1) return 'one'; - return 'other'; - }, - '22': function (n) { - if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one'; - return 'other'; - }, - '23': function (n) { - if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one'; - return 'other'; - }, - '24': function (n) { - if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few'; - if (isIn(n, [2, 12])) return 'two'; - if (isIn(n, [1, 11])) return 'one'; - return 'other'; - } - }; - var index = locales2rules[lang.replace(/-.*$/, '')]; - - if (!(index in pluralRules)) { - console.warn('plural form unknown for [' + lang + ']'); - return function () { - return 'other'; - }; - } - - return pluralRules[index]; - } - - gMacros.plural = function (str, param, key, prop) { - var n = parseFloat(param); - if (isNaN(n)) return str; - if (prop != gTextProp) return str; - - if (!gMacros._pluralRules) { - gMacros._pluralRules = getPluralRules(gLanguage); - } - - var index = '[' + gMacros._pluralRules(n) + ']'; - - if (n === 0 && key + '[zero]' in gL10nData) { - str = gL10nData[key + '[zero]'][prop]; - } else if (n == 1 && key + '[one]' in gL10nData) { - str = gL10nData[key + '[one]'][prop]; - } else if (n == 2 && key + '[two]' in gL10nData) { - str = gL10nData[key + '[two]'][prop]; - } else if (key + index in gL10nData) { - str = gL10nData[key + index][prop]; - } else if (key + '[other]' in gL10nData) { - str = gL10nData[key + '[other]'][prop]; - } - - return str; - }; - - function getL10nData(key, args, fallback) { - var data = gL10nData[key]; - - if (!data) { - console.warn('#' + key + ' is undefined.'); - - if (!fallback) { - return null; - } - - data = fallback; - } - - var rv = {}; - - for (var prop in data) { - var str = data[prop]; - str = substIndexes(str, args, key, prop); - str = substArguments(str, args, key); - rv[prop] = str; - } - - return rv; - } - - function substIndexes(str, args, key, prop) { - var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; - var reMatch = reIndex.exec(str); - if (!reMatch || !reMatch.length) return str; - var macroName = reMatch[1]; - var paramName = reMatch[2]; - var param; - - if (args && paramName in args) { - param = args[paramName]; - } else if (paramName in gL10nData) { - param = gL10nData[paramName]; - } - - if (macroName in gMacros) { - var macro = gMacros[macroName]; - str = macro(str, param, key, prop); - } - - return str; - } - - function substArguments(str, args, key) { - var reArgs = /\{\{\s*(.+?)\s*\}\}/g; - return str.replace(reArgs, function (matched_text, arg) { - if (args && arg in args) { - return args[arg]; - } - - if (arg in gL10nData) { - return gL10nData[arg]; - } - - console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); - return matched_text; - }); - } - - function translateElement(element) { - var l10n = getL10nAttributes(element); - if (!l10n.id) return; - var data = getL10nData(l10n.id, l10n.args); - - if (!data) { - console.warn('#' + l10n.id + ' is undefined.'); - return; - } - - if (data[gTextProp]) { - if (getChildElementCount(element) === 0) { - element[gTextProp] = data[gTextProp]; - } else { - var children = element.childNodes; - var found = false; - - for (var i = 0, l = children.length; i < l; i++) { - if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { - if (found) { - children[i].nodeValue = ''; - } else { - children[i].nodeValue = data[gTextProp]; - found = true; - } - } - } - - if (!found) { - var textNode = document.createTextNode(data[gTextProp]); - element.insertBefore(textNode, element.firstChild); - } - } - - delete data[gTextProp]; - } - - for (var k in data) { - element[k] = data[k]; - } - } - - function getChildElementCount(element) { - if (element.children) { - return element.children.length; - } - - if (typeof element.childElementCount !== 'undefined') { - return element.childElementCount; - } - - var count = 0; - - for (var i = 0; i < element.childNodes.length; i++) { - count += element.nodeType === 1 ? 1 : 0; - } - - return count; - } - - function translateFragment(element) { - element = element || document.documentElement; - var children = getTranslatableChildren(element); - var elementCount = children.length; - - for (var i = 0; i < elementCount; i++) { - translateElement(children[i]); - } - - translateElement(element); - } - - return { - get: function (key, args, fallbackString) { - var index = key.lastIndexOf('.'); - var prop = gTextProp; - - if (index > 0) { - prop = key.substring(index + 1); - key = key.substring(0, index); - } - - var fallback; - - if (fallbackString) { - fallback = {}; - fallback[prop] = fallbackString; - } - - var data = getL10nData(key, args, fallback); - - if (data && prop in data) { - return data[prop]; - } - - return '{{' + key + '}}'; - }, - getData: function () { - return gL10nData; - }, - getText: function () { - return gTextData; - }, - getLanguage: function () { - return gLanguage; - }, - setLanguage: function (lang, callback) { - loadLocale(lang, function () { - if (callback) callback(); - }); - }, - getDirection: function () { - var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; - var shortCode = gLanguage.split('-', 1)[0]; - return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr'; - }, - translate: translateFragment, - getReadyState: function () { - return gReadyState; - }, - ready: function (callback) { - if (!callback) { - return; - } else if (gReadyState == 'complete' || gReadyState == 'interactive') { - window.setTimeout(function () { - callback(); - }); - } else if (document.addEventListener) { - document.addEventListener('localized', function once() { - document.removeEventListener('localized', once); - callback(); - }); - } - } - }; -}(window, document); - -/***/ }), -/* 20 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFFindController = exports.FindState = void 0; - -var _ui_utils = __w_pdfjs_require__(6); - -var _pdfjsLib = __w_pdfjs_require__(3); - -var _pdf_find_utils = __w_pdfjs_require__(21); - -const FindState = { - FOUND: 0, - NOT_FOUND: 1, - WRAPPED: 2, - PENDING: 3 -}; -exports.FindState = FindState; -const FIND_TIMEOUT = 250; -const MATCH_SCROLL_OFFSET_TOP = -200; -const MATCH_SCROLL_OFFSET_LEFT = -400; -const CHARACTERS_TO_NORMALIZE = { - "\u2010": "-", - "\u2018": "'", - "\u2019": "'", - "\u201A": "'", - "\u201B": "'", - "\u201C": '"', - "\u201D": '"', - "\u201E": '"', - "\u201F": '"', - "\u00BC": "1/4", - "\u00BD": "1/2", - "\u00BE": "3/4" -}; -const DIACRITICS_EXCEPTION = new Set([0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74]); -const DIACRITICS_EXCEPTION_STR = [...DIACRITICS_EXCEPTION.values()].map(x => String.fromCharCode(x)).join(""); -const DIACRITICS_REG_EXP = /\p{M}+/gu; -const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu; -const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u; -const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u; -let normalizationRegex = null; - -function normalize(text) { - if (!normalizationRegex) { - const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(""); - normalizationRegex = new RegExp(`([${replace}])|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(\\n)`, "gum"); - } - - const rawDiacriticsPositions = []; - let m; - - while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) { - rawDiacriticsPositions.push([m[0].length, m.index]); - } - - let normalized = text.normalize("NFD"); - const positions = [[0, 0]]; - let k = 0; - let shift = 0; - let shiftOrigin = 0; - let eol = 0; - let hasDiacritics = false; - normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, i) => { - i -= shiftOrigin; - - if (p1) { - const replacement = CHARACTERS_TO_NORMALIZE[match]; - const jj = replacement.length; - - for (let j = 1; j < jj; j++) { - positions.push([i - shift + j, shift - j]); - } - - shift -= jj - 1; - return replacement; - } - - if (p2) { - const hasTrailingDashEOL = p2.endsWith("\n"); - const len = hasTrailingDashEOL ? p2.length - 2 : p2.length; - hasDiacritics = true; - let jj = len; - - if (i + eol === rawDiacriticsPositions[k]?.[1]) { - jj -= rawDiacriticsPositions[k][0]; - ++k; - } - - for (let j = 1; j < jj + 1; j++) { - positions.push([i - 1 - shift + j, shift - j]); - } - - shift -= jj; - shiftOrigin += jj; - - if (hasTrailingDashEOL) { - i += len - 1; - positions.push([i - shift + 1, 1 + shift]); - shift += 1; - shiftOrigin += 1; - eol += 1; - return p2.slice(0, len); - } - - return p2; - } - - if (p3) { - positions.push([i - shift + 1, 1 + shift]); - shift += 1; - shiftOrigin += 1; - eol += 1; - return p3.charAt(0); - } - - positions.push([i - shift + 1, shift - 1]); - shift -= 1; - shiftOrigin += 1; - eol += 1; - return " "; - }); - positions.push([normalized.length, shift]); - return [normalized, positions, hasDiacritics]; -} - -function getOriginalIndex(diffs, pos, len) { - if (!diffs) { - return [pos, len]; - } - - const start = pos; - const end = pos + len; - let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start); - - if (diffs[i][0] > start) { - --i; - } - - let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i); - - if (diffs[j][0] > end) { - --j; - } - - return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]]; -} - -class PDFFindController { - constructor({ - linkService, - eventBus - }) { - this._linkService = linkService; - this._eventBus = eventBus; - this.#reset(); - - eventBus._on("find", this.#onFind.bind(this)); - - eventBus._on("findbarclose", this.#onFindBarClose.bind(this)); - } - - get highlightMatches() { - return this._highlightMatches; - } - - get pageMatches() { - return this._pageMatches; - } - - get pageMatchesLength() { - return this._pageMatchesLength; - } - - get selected() { - return this._selected; - } - - get state() { - return this._state; - } - - setDocument(pdfDocument) { - if (this._pdfDocument) { - this.#reset(); - } - - if (!pdfDocument) { - return; - } - - this._pdfDocument = pdfDocument; - - this._firstPageCapability.resolve(); - } - - #onFind(state) { - if (!state) { - return; - } - - const pdfDocument = this._pdfDocument; - const { - type - } = state; - - if (this._state === null || this.#shouldDirtyMatch(state)) { - this._dirtyMatch = true; - } - - this._state = state; - - if (type !== "highlightallchange") { - this.#updateUIState(FindState.PENDING); - } - - this._firstPageCapability.promise.then(() => { - if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { - return; - } - - this.#extractText(); - const findbarClosed = !this._highlightMatches; - const pendingTimeout = !!this._findTimeout; - - if (this._findTimeout) { - clearTimeout(this._findTimeout); - this._findTimeout = null; - } - - if (!type) { - this._findTimeout = setTimeout(() => { - this.#nextMatch(); - this._findTimeout = null; - }, FIND_TIMEOUT); - } else if (this._dirtyMatch) { - this.#nextMatch(); - } else if (type === "again") { - this.#nextMatch(); - - if (findbarClosed && this._state.highlightAll) { - this.#updateAllPages(); - } - } else if (type === "highlightallchange") { - if (pendingTimeout) { - this.#nextMatch(); - } else { - this._highlightMatches = true; - } - - this.#updateAllPages(); - } else { - this.#nextMatch(); - } - }); - } - - scrollMatchIntoView({ - element = null, - selectedLeft = 0, - pageIndex = -1, - matchIndex = -1 - }) { - if (!this._scrollMatches || !element) { - return; - } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) { - return; - } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) { - return; - } - - this._scrollMatches = false; - const spot = { - top: MATCH_SCROLL_OFFSET_TOP, - left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT - }; - (0, _ui_utils.scrollIntoView)(element, spot, true); - } - - #reset() { - this._highlightMatches = false; - this._scrollMatches = false; - this._pdfDocument = null; - this._pageMatches = []; - this._pageMatchesLength = []; - this._state = null; - this._selected = { - pageIdx: -1, - matchIdx: -1 - }; - this._offset = { - pageIdx: null, - matchIdx: null, - wrapped: false - }; - this._extractTextPromises = []; - this._pageContents = []; - this._pageDiffs = []; - this._hasDiacritics = []; - this._matchesCountTotal = 0; - this._pagesToSearch = null; - this._pendingFindMatches = new Set(); - this._resumePageIdx = null; - this._dirtyMatch = false; - clearTimeout(this._findTimeout); - this._findTimeout = null; - this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); - } - - get #query() { - if (this._state.query !== this._rawQuery) { - this._rawQuery = this._state.query; - [this._normalizedQuery] = normalize(this._state.query); - } - - return this._normalizedQuery; - } - - #shouldDirtyMatch(state) { - if (state.query !== this._state.query) { - return true; - } - - switch (state.type) { - case "again": - const pageNumber = this._selected.pageIdx + 1; - const linkService = this._linkService; - - if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) { - return true; - } - - return false; - - case "highlightallchange": - return false; - } - - return true; - } - - #isEntireWord(content, startIdx, length) { - let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP); - - if (match) { - const first = content.charCodeAt(startIdx); - const limit = match[1].charCodeAt(0); - - if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) { - return false; - } - } - - match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP); - - if (match) { - const last = content.charCodeAt(startIdx + length - 1); - const limit = match[1].charCodeAt(0); - - if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) { - return false; - } - } - - return true; - } - - #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) { - const matches = [], - matchesLength = []; - const diffs = this._pageDiffs[pageIndex]; - let match; - - while ((match = query.exec(pageContent)) !== null) { - if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) { - continue; - } - - const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length); - - if (matchLen) { - matches.push(matchPos); - matchesLength.push(matchLen); - } - } - - this._pageMatches[pageIndex] = matches; - this._pageMatchesLength[pageIndex] = matchesLength; - } - - #convertToRegExpString(query, hasDiacritics) { - const { - matchDiacritics - } = this._state; - let isUnicode = false; - query = query.replace(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => { - if (p1) { - return `[ ]*\\${p1}[ ]*`; - } - - if (p2) { - return `[ ]*${p2}[ ]*`; - } - - if (p3) { - return "[ ]+"; - } - - if (matchDiacritics) { - return p4 || p5; - } - - if (p4) { - return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : ""; - } - - if (hasDiacritics) { - isUnicode = true; - return `${p5}\\p{M}*`; - } - - return p5; - }); - const trailingSpaces = "[ ]*"; - - if (query.endsWith(trailingSpaces)) { - query = query.slice(0, query.length - trailingSpaces.length); - } - - if (matchDiacritics) { - if (hasDiacritics) { - isUnicode = true; - query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`; - } - } - - return [isUnicode, query]; - } - - #calculateMatch(pageIndex) { - let query = this.#query; - - if (query.length === 0) { - return; - } - - const { - caseSensitive, - entireWord, - phraseSearch - } = this._state; - const pageContent = this._pageContents[pageIndex]; - const hasDiacritics = this._hasDiacritics[pageIndex]; - let isUnicode = false; - - if (phraseSearch) { - [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics); - } else { - const match = query.match(/\S+/g); - - if (match) { - query = match.sort().reverse().map(q => { - const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics); - isUnicode ||= isUnicodePart; - return `(${queryPart})`; - }).join("|"); - } - } - - const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`; - query = new RegExp(query, flags); - this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent); - - if (this._state.highlightAll) { - this.#updatePage(pageIndex); - } - - if (this._resumePageIdx === pageIndex) { - this._resumePageIdx = null; - this.#nextPageMatch(); - } - - const pageMatchesCount = this._pageMatches[pageIndex].length; - - if (pageMatchesCount > 0) { - this._matchesCountTotal += pageMatchesCount; - this.#updateUIResultsCount(); - } - } - - #extractText() { - if (this._extractTextPromises.length > 0) { - return; - } - - let promise = Promise.resolve(); - - for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) { - const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._extractTextPromises[i] = extractTextCapability.promise; - promise = promise.then(() => { - return this._pdfDocument.getPage(i + 1).then(pdfPage => { - return pdfPage.getTextContent(); - }).then(textContent => { - const strBuf = []; - - for (const textItem of textContent.items) { - strBuf.push(textItem.str); - - if (textItem.hasEOL) { - strBuf.push("\n"); - } - } - - [this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join("")); - extractTextCapability.resolve(); - }, reason => { - console.error(`Unable to get text content for page ${i + 1}`, reason); - this._pageContents[i] = ""; - this._pageDiffs[i] = null; - this._hasDiacritics[i] = false; - extractTextCapability.resolve(); - }); - }); - } - } - - #updatePage(index) { - if (this._scrollMatches && this._selected.pageIdx === index) { - this._linkService.page = index + 1; - } - - this._eventBus.dispatch("updatetextlayermatches", { - source: this, - pageIndex: index - }); - } - - #updateAllPages() { - this._eventBus.dispatch("updatetextlayermatches", { - source: this, - pageIndex: -1 - }); - } - - #nextMatch() { - const previous = this._state.findPrevious; - const currentPageIndex = this._linkService.page - 1; - const numPages = this._linkService.pagesCount; - this._highlightMatches = true; - - if (this._dirtyMatch) { - this._dirtyMatch = false; - this._selected.pageIdx = this._selected.matchIdx = -1; - this._offset.pageIdx = currentPageIndex; - this._offset.matchIdx = null; - this._offset.wrapped = false; - this._resumePageIdx = null; - this._pageMatches.length = 0; - this._pageMatchesLength.length = 0; - this._matchesCountTotal = 0; - this.#updateAllPages(); - - for (let i = 0; i < numPages; i++) { - if (this._pendingFindMatches.has(i)) { - continue; - } - - this._pendingFindMatches.add(i); - - this._extractTextPromises[i].then(() => { - this._pendingFindMatches.delete(i); - - this.#calculateMatch(i); - }); - } - } - - if (this.#query === "") { - this.#updateUIState(FindState.FOUND); - return; - } - - if (this._resumePageIdx) { - return; - } - - const offset = this._offset; - this._pagesToSearch = numPages; - - if (offset.matchIdx !== null) { - const numPageMatches = this._pageMatches[offset.pageIdx].length; - - if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { - offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; - this.#updateMatch(true); - return; - } - - this.#advanceOffsetPage(previous); - } - - this.#nextPageMatch(); - } - - #matchesReady(matches) { - const offset = this._offset; - const numMatches = matches.length; - const previous = this._state.findPrevious; - - if (numMatches) { - offset.matchIdx = previous ? numMatches - 1 : 0; - this.#updateMatch(true); - return true; - } - - this.#advanceOffsetPage(previous); - - if (offset.wrapped) { - offset.matchIdx = null; - - if (this._pagesToSearch < 0) { - this.#updateMatch(false); - return true; - } - } - - return false; - } - - #nextPageMatch() { - if (this._resumePageIdx !== null) { - console.error("There can only be one pending page."); - } - - let matches = null; - - do { - const pageIdx = this._offset.pageIdx; - matches = this._pageMatches[pageIdx]; - - if (!matches) { - this._resumePageIdx = pageIdx; - break; - } - } while (!this.#matchesReady(matches)); - } - - #advanceOffsetPage(previous) { - const offset = this._offset; - const numPages = this._linkService.pagesCount; - offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; - offset.matchIdx = null; - this._pagesToSearch--; - - if (offset.pageIdx >= numPages || offset.pageIdx < 0) { - offset.pageIdx = previous ? numPages - 1 : 0; - offset.wrapped = true; - } - } - - #updateMatch(found = false) { - let state = FindState.NOT_FOUND; - const wrapped = this._offset.wrapped; - this._offset.wrapped = false; - - if (found) { - const previousPage = this._selected.pageIdx; - this._selected.pageIdx = this._offset.pageIdx; - this._selected.matchIdx = this._offset.matchIdx; - state = wrapped ? FindState.WRAPPED : FindState.FOUND; - - if (previousPage !== -1 && previousPage !== this._selected.pageIdx) { - this.#updatePage(previousPage); - } - } - - this.#updateUIState(state, this._state.findPrevious); - - if (this._selected.pageIdx !== -1) { - this._scrollMatches = true; - this.#updatePage(this._selected.pageIdx); - } - } - - #onFindBarClose(evt) { - const pdfDocument = this._pdfDocument; - - this._firstPageCapability.promise.then(() => { - if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { - return; - } - - if (this._findTimeout) { - clearTimeout(this._findTimeout); - this._findTimeout = null; - } - - if (this._resumePageIdx) { - this._resumePageIdx = null; - this._dirtyMatch = true; - } - - this.#updateUIState(FindState.FOUND); - this._highlightMatches = false; - this.#updateAllPages(); - }); - } - - #requestMatchesCount() { - const { - pageIdx, - matchIdx - } = this._selected; - let current = 0, - total = this._matchesCountTotal; - - if (matchIdx !== -1) { - for (let i = 0; i < pageIdx; i++) { - current += this._pageMatches[i]?.length || 0; - } - - current += matchIdx + 1; - } - - if (current < 1 || current > total) { - current = total = 0; - } - - return { - current, - total - }; - } - - #updateUIResultsCount() { - this._eventBus.dispatch("updatefindmatchescount", { - source: this, - matchesCount: this.#requestMatchesCount() - }); - } - - #updateUIState(state, previous = false) { - this._eventBus.dispatch("updatefindcontrolstate", { - source: this, - state, - previous, - matchesCount: this.#requestMatchesCount(), - rawQuery: this._state?.query ?? null - }); - } - -} - -exports.PDFFindController = PDFFindController; - -/***/ }), -/* 21 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.CharacterType = void 0; -exports.getCharacterType = getCharacterType; -const CharacterType = { - SPACE: 0, - ALPHA_LETTER: 1, - PUNCT: 2, - HAN_LETTER: 3, - KATAKANA_LETTER: 4, - HIRAGANA_LETTER: 5, - HALFWIDTH_KATAKANA_LETTER: 6, - THAI_LETTER: 7 -}; -exports.CharacterType = CharacterType; - -function isAlphabeticalScript(charCode) { - return charCode < 0x2e80; -} - -function isAscii(charCode) { - return (charCode & 0xff80) === 0; -} - -function isAsciiAlpha(charCode) { - return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a; -} - -function isAsciiDigit(charCode) { - return charCode >= 0x30 && charCode <= 0x39; -} - -function isAsciiSpace(charCode) { - return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a; -} - -function isHan(charCode) { - return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff; -} - -function isKatakana(charCode) { - return charCode >= 0x30a0 && charCode <= 0x30ff; -} - -function isHiragana(charCode) { - return charCode >= 0x3040 && charCode <= 0x309f; -} - -function isHalfwidthKatakana(charCode) { - return charCode >= 0xff60 && charCode <= 0xff9f; -} - -function isThai(charCode) { - return (charCode & 0xff80) === 0x0e00; -} - -function getCharacterType(charCode) { - if (isAlphabeticalScript(charCode)) { - if (isAscii(charCode)) { - if (isAsciiSpace(charCode)) { - return CharacterType.SPACE; - } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) { - return CharacterType.ALPHA_LETTER; - } - - return CharacterType.PUNCT; - } else if (isThai(charCode)) { - return CharacterType.THAI_LETTER; - } else if (charCode === 0xa0) { - return CharacterType.SPACE; - } - - return CharacterType.ALPHA_LETTER; - } - - if (isHan(charCode)) { - return CharacterType.HAN_LETTER; - } else if (isKatakana(charCode)) { - return CharacterType.KATAKANA_LETTER; - } else if (isHiragana(charCode)) { - return CharacterType.HIRAGANA_LETTER; - } else if (isHalfwidthKatakana(charCode)) { - return CharacterType.HALFWIDTH_KATAKANA_LETTER; - } - - return CharacterType.ALPHA_LETTER; -} - -/***/ }), -/* 22 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFHistory = void 0; -exports.isDestArraysEqual = isDestArraysEqual; -exports.isDestHashesEqual = isDestHashesEqual; - -var _ui_utils = __w_pdfjs_require__(6); - -var _event_utils = __w_pdfjs_require__(17); - -const HASH_CHANGE_TIMEOUT = 1000; -const POSITION_UPDATED_THRESHOLD = 50; -const UPDATE_VIEWAREA_TIMEOUT = 1000; - -function getCurrentHash() { - return document.location.hash; -} - -class PDFHistory { - constructor({ - linkService, - eventBus - }) { - this.linkService = linkService; - this.eventBus = eventBus; - this._initialized = false; - this._fingerprint = ""; - this.reset(); - this._boundEvents = null; - - this.eventBus._on("pagesinit", () => { - this._isPagesLoaded = false; - - this.eventBus._on("pagesloaded", evt => { - this._isPagesLoaded = !!evt.pagesCount; - }, { - once: true - }); - }); - } - - initialize({ - fingerprint, - resetHistory = false, - updateUrl = false - }) { - if (!fingerprint || typeof fingerprint !== "string") { - console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.'); - return; - } - - if (this._initialized) { - this.reset(); - } - - const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint; - this._fingerprint = fingerprint; - this._updateUrl = updateUrl === true; - this._initialized = true; - - this._bindEvents(); - - const state = window.history.state; - this._popStateInProgress = false; - this._blockHashChange = 0; - this._currentHash = getCurrentHash(); - this._numPositionUpdates = 0; - this._uid = this._maxUid = 0; - this._destination = null; - this._position = null; - - if (!this._isValidState(state, true) || resetHistory) { - const { - hash, - page, - rotation - } = this._parseCurrentHash(true); - - if (!hash || reInitialized || resetHistory) { - this._pushOrReplaceState(null, true); - - return; - } - - this._pushOrReplaceState({ - hash, - page, - rotation - }, true); - - return; - } - - const destination = state.destination; - - this._updateInternalState(destination, state.uid, true); - - if (destination.rotation !== undefined) { - this._initialRotation = destination.rotation; - } - - if (destination.dest) { - this._initialBookmark = JSON.stringify(destination.dest); - this._destination.page = null; - } else if (destination.hash) { - this._initialBookmark = destination.hash; - } else if (destination.page) { - this._initialBookmark = `page=${destination.page}`; - } - } - - reset() { - if (this._initialized) { - this._pageHide(); - - this._initialized = false; - - this._unbindEvents(); - } - - if (this._updateViewareaTimeout) { - clearTimeout(this._updateViewareaTimeout); - this._updateViewareaTimeout = null; - } - - this._initialBookmark = null; - this._initialRotation = null; - } - - push({ - namedDest = null, - explicitDest, - pageNumber - }) { - if (!this._initialized) { - return; - } - - if (namedDest && typeof namedDest !== "string") { - console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`); - return; - } else if (!Array.isArray(explicitDest)) { - console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`); - return; - } else if (!this._isValidPage(pageNumber)) { - if (pageNumber !== null || this._destination) { - console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`); - return; - } - } - - const hash = namedDest || JSON.stringify(explicitDest); - - if (!hash) { - return; - } - - let forceReplace = false; - - if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) { - if (this._destination.page) { - return; - } - - forceReplace = true; - } - - if (this._popStateInProgress && !forceReplace) { - return; - } - - this._pushOrReplaceState({ - dest: explicitDest, - hash, - page: pageNumber, - rotation: this.linkService.rotation - }, forceReplace); - - if (!this._popStateInProgress) { - this._popStateInProgress = true; - Promise.resolve().then(() => { - this._popStateInProgress = false; - }); - } - } - - pushPage(pageNumber) { - if (!this._initialized) { - return; - } - - if (!this._isValidPage(pageNumber)) { - console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`); - return; - } - - if (this._destination?.page === pageNumber) { - return; - } - - if (this._popStateInProgress) { - return; - } - - this._pushOrReplaceState({ - dest: null, - 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; - } - - this._tryPushCurrentPosition(); - } - - back() { - if (!this._initialized || this._popStateInProgress) { - return; - } - - const state = window.history.state; - - if (this._isValidState(state) && state.uid > 0) { - window.history.back(); - } - } - - forward() { - if (!this._initialized || this._popStateInProgress) { - return; - } - - const state = window.history.state; - - if (this._isValidState(state) && state.uid < this._maxUid) { - window.history.forward(); - } - } - - get popStateInProgress() { - return this._initialized && (this._popStateInProgress || this._blockHashChange > 0); - } - - get initialBookmark() { - return this._initialized ? this._initialBookmark : null; - } - - get initialRotation() { - return this._initialized ? this._initialRotation : null; - } - - _pushOrReplaceState(destination, forceReplace = false) { - const shouldReplace = forceReplace || !this._destination; - const newState = { - fingerprint: this._fingerprint, - uid: shouldReplace ? this._uid : this._uid + 1, - destination - }; - - this._updateInternalState(destination, newState.uid); - - let newUrl; - - if (this._updateUrl && destination?.hash) { - const baseUrl = document.location.href.split("#")[0]; - - if (!baseUrl.startsWith("file://")) { - newUrl = `${baseUrl}#${destination.hash}`; - } - } - - if (shouldReplace) { - window.history.replaceState(newState, "", newUrl); - } else { - window.history.pushState(newState, "", newUrl); - } - } - - _tryPushCurrentPosition(temporary = false) { - if (!this._position) { - return; - } - - let position = this._position; - - if (temporary) { - position = Object.assign(Object.create(null), this._position); - position.temporary = true; - } - - if (!this._destination) { - this._pushOrReplaceState(position); - - return; - } - - if (this._destination.temporary) { - this._pushOrReplaceState(position, true); - - return; - } - - if (this._destination.hash === position.hash) { - return; - } - - if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) { - return; - } - - let forceReplace = false; - - if (this._destination.page >= position.first && this._destination.page <= position.page) { - if (this._destination.dest !== undefined || !this._destination.first) { - return; - } - - forceReplace = true; - } - - this._pushOrReplaceState(position, forceReplace); - } - - _isValidPage(val) { - return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount; - } - - _isValidState(state, checkReload = false) { - if (!state) { - return false; - } - - if (state.fingerprint !== this._fingerprint) { - if (checkReload) { - if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) { - return false; - } - - const [perfEntry] = performance.getEntriesByType("navigation"); - - if (perfEntry?.type !== "reload") { - return false; - } - } else { - return false; - } - } - - if (!Number.isInteger(state.uid) || state.uid < 0) { - return false; - } - - if (state.destination === null || typeof state.destination !== "object") { - return false; - } - - return true; - } - - _updateInternalState(destination, uid, removeTemporary = false) { - if (this._updateViewareaTimeout) { - clearTimeout(this._updateViewareaTimeout); - this._updateViewareaTimeout = null; - } - - if (removeTemporary && destination?.temporary) { - delete destination.temporary; - } - - this._destination = destination; - this._uid = uid; - this._maxUid = Math.max(this._maxUid, uid); - this._numPositionUpdates = 0; - } - - _parseCurrentHash(checkNameddest = false) { - const hash = unescape(getCurrentHash()).substring(1); - const params = (0, _ui_utils.parseQueryString)(hash); - const nameddest = params.get("nameddest") || ""; - let page = params.get("page") | 0; - - if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) { - page = null; - } - - return { - hash, - page, - rotation: this.linkService.rotation - }; - } - - _updateViewarea({ - location - }) { - if (this._updateViewareaTimeout) { - clearTimeout(this._updateViewareaTimeout); - this._updateViewareaTimeout = null; - } - - this._position = { - hash: location.pdfOpenParams.substring(1), - page: this.linkService.page, - first: location.pageNumber, - rotation: location.rotation - }; - - if (this._popStateInProgress) { - return; - } - - if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) { - this._numPositionUpdates++; - } - - if (UPDATE_VIEWAREA_TIMEOUT > 0) { - this._updateViewareaTimeout = setTimeout(() => { - if (!this._popStateInProgress) { - this._tryPushCurrentPosition(true); - } - - this._updateViewareaTimeout = null; - }, UPDATE_VIEWAREA_TIMEOUT); - } - } - - _popState({ - state - }) { - const newHash = getCurrentHash(), - hashChanged = this._currentHash !== newHash; - this._currentHash = newHash; - - if (!state) { - this._uid++; - - const { - hash, - page, - rotation - } = this._parseCurrentHash(); - - this._pushOrReplaceState({ - hash, - page, - rotation - }, true); - - return; - } - - if (!this._isValidState(state)) { - return; - } - - this._popStateInProgress = true; - - if (hashChanged) { - this._blockHashChange++; - (0, _event_utils.waitOnEventOrTimeout)({ - target: window, - name: "hashchange", - delay: HASH_CHANGE_TIMEOUT - }).then(() => { - this._blockHashChange--; - }); - } - - const destination = state.destination; - - this._updateInternalState(destination, state.uid, true); - - if ((0, _ui_utils.isValidRotation)(destination.rotation)) { - this.linkService.rotation = destination.rotation; - } - - if (destination.dest) { - this.linkService.goToDestination(destination.dest); - } else if (destination.hash) { - this.linkService.setHash(destination.hash); - } else if (destination.page) { - this.linkService.page = destination.page; - } - - Promise.resolve().then(() => { - this._popStateInProgress = false; - }); - } - - _pageHide() { - if (!this._destination || this._destination.temporary) { - this._tryPushCurrentPosition(); - } - } - - _bindEvents() { - if (this._boundEvents) { - return; - } - - this._boundEvents = { - updateViewarea: this._updateViewarea.bind(this), - popState: this._popState.bind(this), - pageHide: this._pageHide.bind(this) - }; - - this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea); - - window.addEventListener("popstate", this._boundEvents.popState); - window.addEventListener("pagehide", this._boundEvents.pageHide); - } - - _unbindEvents() { - if (!this._boundEvents) { - return; - } - - this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea); - - window.removeEventListener("popstate", this._boundEvents.popState); - window.removeEventListener("pagehide", this._boundEvents.pageHide); - this._boundEvents = null; - } - -} - -exports.PDFHistory = PDFHistory; - -function isDestHashesEqual(destHash, pushHash) { - if (typeof destHash !== "string" || typeof pushHash !== "string") { - return false; - } - - if (destHash === pushHash) { - return true; - } - - const nameddest = (0, _ui_utils.parseQueryString)(destHash).get("nameddest"); - - if (nameddest === pushHash) { - return true; - } - - return false; -} - -function isDestArraysEqual(firstDest, secondDest) { - function isEntryEqual(first, second) { - if (typeof first !== typeof second) { - return false; - } - - if (Array.isArray(first) || Array.isArray(second)) { - return false; - } - - if (first !== null && typeof first === "object" && second !== null) { - if (Object.keys(first).length !== Object.keys(second).length) { - return false; - } - - for (const key in first) { - if (!isEntryEqual(first[key], second[key])) { - return false; - } - } - - return true; - } - - return first === second || Number.isNaN(first) && Number.isNaN(second); - } - - if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) { - return false; - } - - if (firstDest.length !== secondDest.length) { - return false; - } - - for (let i = 0, ii = firstDest.length; i < ii; i++) { - if (!isEntryEqual(firstDest[i], secondDest[i])) { - return false; - } - } - - return true; -} - -/***/ }), -/* 23 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFScriptingManager = void 0; - -var _ui_utils = __w_pdfjs_require__(6); - -var _pdfjsLib = __w_pdfjs_require__(3); - -class PDFScriptingManager { - constructor({ - eventBus, - sandboxBundleSrc = null, - scriptingFactory = null, - docPropertiesLookup = null - }) { - this._pdfDocument = null; - this._pdfViewer = null; - this._closeCapability = null; - this._destroyCapability = null; - this._scripting = null; - this._mouseState = Object.create(null); - this._ready = false; - this._eventBus = eventBus; - this._sandboxBundleSrc = sandboxBundleSrc; - this._scriptingFactory = scriptingFactory; - this._docPropertiesLookup = docPropertiesLookup; - - if (!this._scriptingFactory) { - window.addEventListener("updatefromsandbox", event => { - this._eventBus.dispatch("updatefromsandbox", { - source: window, - detail: event.detail - }); - }); - } - } - - setViewer(pdfViewer) { - this._pdfViewer = pdfViewer; - } - - async setDocument(pdfDocument) { - if (this._pdfDocument) { - await this._destroyScripting(); - } - - this._pdfDocument = pdfDocument; - - if (!pdfDocument) { - return; - } - - const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); - - if (!objects && !docActions) { - await this._destroyScripting(); - return; - } - - if (pdfDocument !== this._pdfDocument) { - return; - } - - try { - this._scripting = this._createScripting(); - } catch (error) { - console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); - await this._destroyScripting(); - return; - } - - this._internalEvents.set("updatefromsandbox", event => { - if (event?.source !== window) { - return; - } - - this._updateFromSandbox(event.detail); - }); - - this._internalEvents.set("dispatcheventinsandbox", event => { - this._scripting?.dispatchEventInSandbox(event.detail); - }); - - this._internalEvents.set("pagechanging", ({ - pageNumber, - previous - }) => { - if (pageNumber === previous) { - return; - } - - this._dispatchPageClose(previous); - - this._dispatchPageOpen(pageNumber); - }); - - this._internalEvents.set("pagerendered", ({ - pageNumber - }) => { - if (!this._pageOpenPending.has(pageNumber)) { - return; - } - - if (pageNumber !== this._pdfViewer.currentPageNumber) { - return; - } - - this._dispatchPageOpen(pageNumber); - }); - - this._internalEvents.set("pagesdestroy", async event => { - await this._dispatchPageClose(this._pdfViewer.currentPageNumber); - await this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "WillClose" - }); - this._closeCapability?.resolve(); - }); - - this._domEvents.set("mousedown", event => { - this._mouseState.isDown = true; - }); - - this._domEvents.set("mouseup", event => { - this._mouseState.isDown = false; - }); - - for (const [name, listener] of this._internalEvents) { - this._eventBus._on(name, listener); - } - - for (const [name, listener] of this._domEvents) { - window.addEventListener(name, listener, true); - } - - try { - const docProperties = await this._getDocProperties(); - - if (pdfDocument !== this._pdfDocument) { - return; - } - - await this._scripting.createSandbox({ - objects, - calculationOrder, - appInfo: { - platform: navigator.platform, - language: navigator.language - }, - docInfo: { ...docProperties, - actions: docActions - } - }); - - this._eventBus.dispatch("sandboxcreated", { - source: this - }); - } catch (error) { - console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); - await this._destroyScripting(); - return; - } - - await this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "Open" - }); - await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true); - Promise.resolve().then(() => { - if (pdfDocument === this._pdfDocument) { - this._ready = true; - } - }); - } - - async dispatchWillSave(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "WillSave" - }); - } - - async dispatchDidSave(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "DidSave" - }); - } - - async dispatchWillPrint(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "WillPrint" - }); - } - - async dispatchDidPrint(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "DidPrint" - }); - } - - get mouseState() { - return this._mouseState; - } - - get destroyPromise() { - return this._destroyCapability?.promise || null; - } - - get ready() { - return this._ready; - } - - get _internalEvents() { - return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); - } - - get _domEvents() { - return (0, _pdfjsLib.shadow)(this, "_domEvents", new Map()); - } - - get _pageOpenPending() { - return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); - } - - get _visitedPages() { - return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); - } - - async _updateFromSandbox(detail) { - const isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode; - const { - id, - siblings, - command, - value - } = detail; - - if (!id) { - switch (command) { - case "clear": - console.clear(); - break; - - case "error": - console.error(value); - break; - - case "layout": - if (isInPresentationMode) { - return; - } - - const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(value); - this._pdfViewer.spreadMode = modes.spreadMode; - break; - - case "page-num": - this._pdfViewer.currentPageNumber = value + 1; - break; - - case "print": - await this._pdfViewer.pagesPromise; - - this._eventBus.dispatch("print", { - source: this - }); - - break; - - case "println": - console.log(value); - break; - - case "zoom": - if (isInPresentationMode) { - return; - } - - this._pdfViewer.currentScaleValue = value; - break; - - case "SaveAs": - this._eventBus.dispatch("save", { - source: this - }); - - break; - - case "FirstPage": - this._pdfViewer.currentPageNumber = 1; - break; - - case "LastPage": - this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount; - break; - - case "NextPage": - this._pdfViewer.nextPage(); - - break; - - case "PrevPage": - this._pdfViewer.previousPage(); - - break; - - case "ZoomViewIn": - if (isInPresentationMode) { - return; - } - - this._pdfViewer.increaseScale(); - - break; - - case "ZoomViewOut": - if (isInPresentationMode) { - return; - } - - this._pdfViewer.decreaseScale(); - - break; - } - - return; - } - - if (isInPresentationMode) { - if (detail.focus) { - return; - } - } - - delete detail.id; - delete detail.siblings; - const ids = siblings ? [id, ...siblings] : [id]; - - for (const elementId of ids) { - const element = document.getElementById(elementId); - - if (element) { - element.dispatchEvent(new CustomEvent("updatefromsandbox", { - detail - })); - } else { - this._pdfDocument?.annotationStorage.setValue(elementId, detail); - } - } - } - - async _dispatchPageOpen(pageNumber, initialize = false) { - const pdfDocument = this._pdfDocument, - visitedPages = this._visitedPages; - - if (initialize) { - this._closeCapability = (0, _pdfjsLib.createPromiseCapability)(); - } - - if (!this._closeCapability) { - return; - } - - const pageView = this._pdfViewer.getPageView(pageNumber - 1); - - if (pageView?.renderingState !== _ui_utils.RenderingStates.FINISHED) { - this._pageOpenPending.add(pageNumber); - - return; - } - - this._pageOpenPending.delete(pageNumber); - - const actionsPromise = (async () => { - const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null); - - if (pdfDocument !== this._pdfDocument) { - return; - } - - await this._scripting?.dispatchEventInSandbox({ - id: "page", - name: "PageOpen", - pageNumber, - actions - }); - })(); - - visitedPages.set(pageNumber, actionsPromise); - } - - async _dispatchPageClose(pageNumber) { - const pdfDocument = this._pdfDocument, - visitedPages = this._visitedPages; - - if (!this._closeCapability) { - return; - } - - if (this._pageOpenPending.has(pageNumber)) { - return; - } - - const actionsPromise = visitedPages.get(pageNumber); - - if (!actionsPromise) { - return; - } - - visitedPages.set(pageNumber, null); - await actionsPromise; - - if (pdfDocument !== this._pdfDocument) { - return; - } - - await this._scripting?.dispatchEventInSandbox({ - id: "page", - name: "PageClose", - pageNumber - }); - } - - async _getDocProperties() { - if (this._docPropertiesLookup) { - return this._docPropertiesLookup(this._pdfDocument); - } - - const { - docPropertiesLookup - } = __w_pdfjs_require__(24); - - return docPropertiesLookup(this._pdfDocument); - } - - _createScripting() { - this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)(); - - if (this._scripting) { - throw new Error("_createScripting: Scripting already exists."); - } - - if (this._scriptingFactory) { - return this._scriptingFactory.createScripting({ - sandboxBundleSrc: this._sandboxBundleSrc - }); - } - - const { - GenericScripting - } = __w_pdfjs_require__(24); - - return new GenericScripting(this._sandboxBundleSrc); - } - - async _destroyScripting() { - if (!this._scripting) { - this._pdfDocument = null; - this._destroyCapability?.resolve(); - return; - } - - if (this._closeCapability) { - await Promise.race([this._closeCapability.promise, new Promise(resolve => { - setTimeout(resolve, 1000); - })]).catch(reason => {}); - this._closeCapability = null; - } - - this._pdfDocument = null; - - try { - await this._scripting.destroySandbox(); - } catch (ex) {} - - for (const [name, listener] of this._internalEvents) { - this._eventBus._off(name, listener); - } - - this._internalEvents.clear(); - - for (const [name, listener] of this._domEvents) { - window.removeEventListener(name, listener, true); - } - - this._domEvents.clear(); - - this._pageOpenPending.clear(); - - this._visitedPages.clear(); - - this._scripting = null; - delete this._mouseState.isDown; - this._ready = false; - this._destroyCapability?.resolve(); - } - -} - -exports.PDFScriptingManager = PDFScriptingManager; - -/***/ }), -/* 24 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GenericScripting = void 0; -exports.docPropertiesLookup = docPropertiesLookup; - -var _pdfjsLib = __w_pdfjs_require__(3); - -async function docPropertiesLookup(pdfDocument) { - const url = "", - baseUrl = url.split("#")[0]; - let { - info, - metadata, - contentDispositionFilename, - contentLength - } = await pdfDocument.getMetadata(); - - if (!contentLength) { - const { - length - } = await pdfDocument.getDownloadInfo(); - contentLength = length; - } - - return { ...info, - baseURL: baseUrl, - filesize: contentLength, - filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url), - metadata: metadata?.getRaw(), - authors: metadata?.get("dc:creator"), - numPages: pdfDocument.numPages, - URL: url - }; -} - -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; - setTimeout(() => sandbox.dispatchEvent(event), 0); - } - - async destroySandbox() { - const sandbox = await this._ready; - sandbox.nukeSandbox(); - } - -} - -exports.GenericScripting = GenericScripting; - -/***/ }) -/******/ ]); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.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; -/******/ } -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. -(() => { -var exports = __webpack_exports__; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "AnnotationLayerBuilder", ({ - enumerable: true, - get: function () { - return _annotation_layer_builder.AnnotationLayerBuilder; - } -})); -Object.defineProperty(exports, "DefaultAnnotationLayerFactory", ({ - enumerable: true, - get: function () { - return _default_factory.DefaultAnnotationLayerFactory; - } -})); -Object.defineProperty(exports, "DefaultStructTreeLayerFactory", ({ - enumerable: true, - get: function () { - return _default_factory.DefaultStructTreeLayerFactory; - } -})); -Object.defineProperty(exports, "DefaultTextLayerFactory", ({ - enumerable: true, - get: function () { - return _default_factory.DefaultTextLayerFactory; - } -})); -Object.defineProperty(exports, "DefaultXfaLayerFactory", ({ - enumerable: true, - get: function () { - return _default_factory.DefaultXfaLayerFactory; - } -})); -Object.defineProperty(exports, "DownloadManager", ({ - enumerable: true, - get: function () { - return _download_manager.DownloadManager; - } -})); -Object.defineProperty(exports, "EventBus", ({ - enumerable: true, - get: function () { - return _event_utils.EventBus; - } -})); -Object.defineProperty(exports, "GenericL10n", ({ - enumerable: true, - get: function () { - return _genericl10n.GenericL10n; - } -})); -Object.defineProperty(exports, "LinkTarget", ({ - enumerable: true, - get: function () { - return _pdf_link_service.LinkTarget; - } -})); -Object.defineProperty(exports, "NullL10n", ({ - enumerable: true, - get: function () { - return _l10n_utils.NullL10n; - } -})); -Object.defineProperty(exports, "PDFFindController", ({ - enumerable: true, - get: function () { - return _pdf_find_controller.PDFFindController; - } -})); -Object.defineProperty(exports, "PDFHistory", ({ - enumerable: true, - get: function () { - return _pdf_history.PDFHistory; - } -})); -Object.defineProperty(exports, "PDFLinkService", ({ - enumerable: true, - get: function () { - return _pdf_link_service.PDFLinkService; - } -})); -Object.defineProperty(exports, "PDFPageView", ({ - enumerable: true, - get: function () { - return _pdf_page_view.PDFPageView; - } -})); -Object.defineProperty(exports, "PDFScriptingManager", ({ - enumerable: true, - get: function () { - return _pdf_scripting_manager.PDFScriptingManager; - } -})); -Object.defineProperty(exports, "PDFSinglePageViewer", ({ - enumerable: true, - get: function () { - return _pdf_viewer.PDFSinglePageViewer; - } -})); -Object.defineProperty(exports, "PDFViewer", ({ - enumerable: true, - get: function () { - return _pdf_viewer.PDFViewer; - } -})); -Object.defineProperty(exports, "ProgressBar", ({ - enumerable: true, - get: function () { - return _ui_utils.ProgressBar; - } -})); -Object.defineProperty(exports, "SimpleLinkService", ({ - enumerable: true, - get: function () { - return _pdf_link_service.SimpleLinkService; - } -})); -Object.defineProperty(exports, "StructTreeLayerBuilder", ({ - enumerable: true, - get: function () { - return _struct_tree_layer_builder.StructTreeLayerBuilder; - } -})); -Object.defineProperty(exports, "TextLayerBuilder", ({ - enumerable: true, - get: function () { - return _text_layer_builder.TextLayerBuilder; - } -})); -Object.defineProperty(exports, "XfaLayerBuilder", ({ - enumerable: true, - get: function () { - return _xfa_layer_builder.XfaLayerBuilder; - } -})); -Object.defineProperty(exports, "parseQueryString", ({ - enumerable: true, - get: function () { - return _ui_utils.parseQueryString; - } -})); - -var _default_factory = __w_pdfjs_require__(1); - -var _pdf_link_service = __w_pdfjs_require__(5); - -var _ui_utils = __w_pdfjs_require__(6); - -var _pdf_viewer = __w_pdfjs_require__(10); - -var _annotation_layer_builder = __w_pdfjs_require__(2); - -var _download_manager = __w_pdfjs_require__(16); - -var _event_utils = __w_pdfjs_require__(17); - -var _genericl10n = __w_pdfjs_require__(18); - -var _l10n_utils = __w_pdfjs_require__(4); - -var _pdf_find_controller = __w_pdfjs_require__(20); - -var _pdf_history = __w_pdfjs_require__(22); - -var _pdf_page_view = __w_pdfjs_require__(12); - -var _pdf_scripting_manager = __w_pdfjs_require__(23); - -var _struct_tree_layer_builder = __w_pdfjs_require__(7); - -var _text_layer_builder = __w_pdfjs_require__(8); - -var _xfa_layer_builder = __w_pdfjs_require__(9); - -const pdfjsVersion = '2.14.305'; -const pdfjsBuild = 'eaaa8b4ad'; -})(); - -/******/ return __webpack_exports__; -/******/ })() -; -}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4e65f427b799..fdbb258b5893 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2526,6 +2526,11 @@ domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +dommatrix@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz#e7c18e8d6f3abdd1fef3dd4aa74c4d2e620a0525" + integrity sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww== + dompurify@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.0.tgz#c9c88390f024c2823332615c9e20a453cf3825dd" @@ -5366,6 +5371,14 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pdfjs-dist@2.14.305: + version "2.14.305" + resolved "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.14.305.tgz#ed2ecb439ff8af5446c90a310ebd30bc1a91df62" + integrity sha512-5f7i25J1dKIBczhgfxEgNxfYNIxXEdxqo6Qb4ehY7Ja+p6AI4uUmk/OcVGXfRGm2ys5iaJJhJUwBFwv6Jl/Qww== + dependencies: + dommatrix "^1.0.1" + web-streams-polyfill "^3.2.1" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -7759,6 +7772,11 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +web-streams-polyfill@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" From f9b8f69c16de3b89e0eef63bf4adf84a193c8b41 Mon Sep 17 00:00:00 2001 From: Konstantinos Kaloutas Date: Thu, 27 Jul 2023 11:26:34 +0300 Subject: [PATCH 59/63] handle amplify --- gulpfile.js | 3 +- package.json | 3 +- packages/amplify/package.json | 3 +- resources/css/amplify.css | 1 - resources/js/amplify.js | 142 ---------------------------------- tailwind.all.css | 2 +- 6 files changed, 7 insertions(+), 147 deletions(-) delete mode 100644 resources/css/amplify.css delete mode 100644 resources/js/amplify.js diff --git a/gulpfile.js b/gulpfile.js index 8dad149ec3be..8e3bb0df24e1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -63,7 +63,8 @@ const common = { 'node_modules/shepherd.js/dist/js/shepherd.min.js', 'node_modules/marked/marked.min.js', 'node_modules/@highlightjs/cdn-assets/highlight.min.js', - 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js' + 'node_modules/@isomorphic-git/lightning-fs/dist/lightning-fs.min.js', + 'packages/amplify/dist/amplify.js' ]).pipe(gulp.dest(path.join(outputPath, 'js'))), () => gulp.src([ 'node_modules/pdfjs-dist/build/pdf.js', diff --git a/package.json b/package.json index 8155458bf36c..702d14ad5396 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,8 @@ "ios:dev": "cross-env PLATFORM=ios gulp cap", "android:dev": "cross-env PLATFORM=android gulp cap", "tldraw:build": "yarn --cwd tldraw install", - "postinstall": "yarn tldraw:build" + "amplify:build": "yarn --cwd packages/amplify install", + "postinstall": "yarn tldraw:build && yarn amplify:build " }, "dependencies": { "@capacitor/android": "^4.0.0", diff --git a/packages/amplify/package.json b/packages/amplify/package.json index 405480874ab7..421ba23d0f0e 100644 --- a/packages/amplify/package.json +++ b/packages/amplify/package.json @@ -6,7 +6,8 @@ "scripts": { "dev:amplify": "parcel watch ./src/amplify.ts --dist-dir ../src/main/frontend/ --no-hmr --no-source-maps", "dev:examples": "parcel serve ./examples/index.html", - "build:amplify": "parcel build ./src/amplify.ts --dist-dir ../../resources/js --no-source-maps && mv ../../resources/js/amplify.css ../../resources/css/" + "build:amplify": "parcel build ./src/amplify.ts --no-source-maps", + "postinstall": "yarn build:amplify" }, "devDependencies": { "buffer": "^5.5.0", diff --git a/resources/css/amplify.css b/resources/css/amplify.css deleted file mode 100644 index a94f99fb5252..000000000000 --- a/resources/css/amplify.css +++ /dev/null @@ -1 +0,0 @@ -:root,[data-amplify-theme]{--amplify-components-alert-align-items:center;--amplify-components-alert-justify-content:space-between;--amplify-components-alert-color:var(--amplify-colors-font-primary);--amplify-components-alert-background-color:var(--amplify-colors-background-tertiary);--amplify-components-alert-padding-block:var(--amplify-space-small);--amplify-components-alert-padding-inline:var(--amplify-space-medium);--amplify-components-alert-icon-size:var(--amplify-font-sizes-xl);--amplify-components-alert-heading-font-size:var(--amplify-font-sizes-medium);--amplify-components-alert-heading-font-weight:var(--amplify-font-weights-bold);--amplify-components-alert-info-color:var(--amplify-colors-font-info);--amplify-components-alert-info-background-color:var(--amplify-colors-background-info);--amplify-components-alert-error-color:var(--amplify-colors-font-error);--amplify-components-alert-error-background-color:var(--amplify-colors-background-error);--amplify-components-alert-warning-color:var(--amplify-colors-font-warning);--amplify-components-alert-warning-background-color:var(--amplify-colors-background-warning);--amplify-components-alert-success-color:var(--amplify-colors-font-success);--amplify-components-alert-success-background-color:var(--amplify-colors-background-success);--amplify-components-authenticator-max-width:60rem;--amplify-components-authenticator-modal-width:var(--amplify-space-relative-full);--amplify-components-authenticator-modal-height:var(--amplify-space-relative-full);--amplify-components-authenticator-modal-background-color:var(--amplify-colors-overlay-50);--amplify-components-authenticator-modal-top:var(--amplify-space-zero);--amplify-components-authenticator-modal-left:var(--amplify-space-zero);--amplify-components-authenticator-container-width-max:30rem;--amplify-components-authenticator-router-border-width:var(--amplify-border-widths-small);--amplify-components-authenticator-router-border-style:solid;--amplify-components-authenticator-router-border-color:var(--amplify-colors-border-primary);--amplify-components-authenticator-router-background-color:var(--amplify-colors-background-primary);--amplify-components-authenticator-router-box-shadow:var(--amplify-shadows-medium);--amplify-components-authenticator-footer-padding-bottom:var(--amplify-space-medium);--amplify-components-authenticator-form-padding:var(--amplify-space-xl);--amplify-components-authenticator-state-inactive-background-color:var(--amplify-colors-background-secondary);--amplify-components-authenticator-or-container-color:var(--amplify-colors-neutral-80);--amplify-components-authenticator-or-container-or-line-background-color:var(--amplify-colors-background-primary);--amplify-components-autocomplete-menu-width:100%;--amplify-components-autocomplete-menu-margin-block-start:var(--amplify-space-xxxs);--amplify-components-autocomplete-menu-background-color:var(--amplify-colors-background-primary);--amplify-components-autocomplete-menu-border-color:var(--amplify-colors-border-primary);--amplify-components-autocomplete-menu-border-width:var(--amplify-border-widths-small);--amplify-components-autocomplete-menu-border-style:solid;--amplify-components-autocomplete-menu-border-radius:var(--amplify-radii-small);--amplify-components-autocomplete-menu-options-display:flex;--amplify-components-autocomplete-menu-options-flex-direction:column;--amplify-components-autocomplete-menu-options-max-height:300px;--amplify-components-autocomplete-menu-option-background-color:var(--amplify-colors-background-primary);--amplify-components-autocomplete-menu-option-color:currentcolor;--amplify-components-autocomplete-menu-option-cursor:pointer;--amplify-components-autocomplete-menu-option-transition-duration:var(--amplify-time-short);--amplify-components-autocomplete-menu-option-transition-property:background-color,color;--amplify-components-autocomplete-menu-option-transition-timing-function:ease;--amplify-components-autocomplete-menu-option-active-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-autocomplete-menu-option-active-color:var(--amplify-colors-white);--amplify-components-autocomplete-menu-empty-display:flex;--amplify-components-autocomplete-menu-loading-align-items:center;--amplify-components-autocomplete-menu-loading-display:flex;--amplify-components-autocomplete-menu-loading-gap:var(--amplify-space-xxxs);--amplify-components-autocomplete-menu-space-shared-padding-block:var(--amplify-space-xs);--amplify-components-autocomplete-menu-space-shared-padding-inline:var(--amplify-space-small);--amplify-components-badge-color:var(--amplify-colors-font-primary);--amplify-components-badge-line-height:1;--amplify-components-badge-font-weight:var(--amplify-font-weights-semibold);--amplify-components-badge-font-size:var(--amplify-font-sizes-small);--amplify-components-badge-text-align:center;--amplify-components-badge-padding-vertical:var(--amplify-space-xs);--amplify-components-badge-padding-horizontal:var(--amplify-space-small);--amplify-components-badge-background-color:var(--amplify-colors-background-tertiary);--amplify-components-badge-border-radius:var(--amplify-radii-xl);--amplify-components-badge-info-color:var(--amplify-colors-font-info);--amplify-components-badge-info-background-color:var(--amplify-colors-background-info);--amplify-components-badge-warning-color:var(--amplify-colors-font-warning);--amplify-components-badge-warning-background-color:var(--amplify-colors-background-warning);--amplify-components-badge-success-color:var(--amplify-colors-font-success);--amplify-components-badge-success-background-color:var(--amplify-colors-background-success);--amplify-components-badge-error-color:var(--amplify-colors-font-error);--amplify-components-badge-error-background-color:var(--amplify-colors-background-error);--amplify-components-badge-small-font-size:var(--amplify-font-sizes-xs);--amplify-components-badge-small-padding-vertical:var(--amplify-space-xxs);--amplify-components-badge-small-padding-horizontal:var(--amplify-space-xs);--amplify-components-badge-large-font-size:var(--amplify-font-sizes-medium);--amplify-components-badge-large-padding-vertical:var(--amplify-space-small);--amplify-components-badge-large-padding-horizontal:var(--amplify-space-medium);--amplify-components-button-font-weight:var(--amplify-font-weights-bold);--amplify-components-button-transition-duration:var(--amplify-components-fieldcontrol-transition-duration);--amplify-components-button-font-size:var(--amplify-components-fieldcontrol-font-size);--amplify-components-button-line-height:var(--amplify-components-fieldcontrol-line-height);--amplify-components-button-padding-block-start:var(--amplify-components-fieldcontrol-padding-block-start);--amplify-components-button-padding-block-end:var(--amplify-components-fieldcontrol-padding-block-end);--amplify-components-button-padding-inline-start:var(--amplify-components-fieldcontrol-padding-inline-start);--amplify-components-button-padding-inline-end:var(--amplify-components-fieldcontrol-padding-inline-end);--amplify-components-button-border-color:var(--amplify-components-fieldcontrol-border-color);--amplify-components-button-border-width:var(--amplify-components-fieldcontrol-border-width);--amplify-components-button-border-style:var(--amplify-components-fieldcontrol-border-style);--amplify-components-button-border-radius:var(--amplify-components-fieldcontrol-border-radius);--amplify-components-button-color:var(--amplify-colors-font-primary);--amplify-components-button-hover-color:var(--amplify-colors-font-focus);--amplify-components-button-hover-background-color:var(--amplify-colors-brand-primary-10);--amplify-components-button-hover-border-color:var(--amplify-colors-brand-primary-60);--amplify-components-button-focus-color:var(--amplify-colors-font-focus);--amplify-components-button-focus-background-color:var(--amplify-colors-brand-primary-10);--amplify-components-button-focus-border-color:var(--amplify-colors-border-focus);--amplify-components-button-focus-box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow);--amplify-components-button-active-color:var(--amplify-colors-font-active);--amplify-components-button-active-background-color:var(--amplify-colors-brand-primary-20);--amplify-components-button-active-border-color:var(--amplify-colors-brand-primary-100);--amplify-components-button-loading-color:var(--amplify-colors-font-disabled);--amplify-components-button-loading-background-color:transparent;--amplify-components-button-loading-border-color:var(--amplify-colors-border-tertiary);--amplify-components-button-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-button-disabled-background-color:transparent;--amplify-components-button-disabled-border-color:var(--amplify-colors-border-tertiary);--amplify-components-button-primary-border-color:transparent;--amplify-components-button-primary-border-width:var(--amplify-border-widths-small);--amplify-components-button-primary-border-style:solid;--amplify-components-button-primary-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-button-primary-color:var(--amplify-colors-font-inverse);--amplify-components-button-primary-disabled-border-color:transparent;--amplify-components-button-primary-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-button-primary-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-button-primary-loading-border-color:transparent;--amplify-components-button-primary-loading-background-color:var(--amplify-colors-background-disabled);--amplify-components-button-primary-loading-color:var(--amplify-colors-font-disabled);--amplify-components-button-primary-hover-border-color:transparent;--amplify-components-button-primary-hover-background-color:var(--amplify-colors-brand-primary-90);--amplify-components-button-primary-hover-color:var(--amplify-colors-font-inverse);--amplify-components-button-primary-focus-border-color:transparent;--amplify-components-button-primary-focus-background-color:var(--amplify-colors-brand-primary-90);--amplify-components-button-primary-focus-color:var(--amplify-colors-font-inverse);--amplify-components-button-primary-focus-box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow);--amplify-components-button-primary-active-border-color:transparent;--amplify-components-button-primary-active-background-color:var(--amplify-colors-brand-primary-100);--amplify-components-button-primary-active-color:var(--amplify-colors-font-inverse);--amplify-components-button-menu-border-width:var(--amplify-space-zero);--amplify-components-button-menu-background-color:transparent;--amplify-components-button-menu-justify-content:start;--amplify-components-button-menu-hover-color:var(--amplify-colors-font-inverse);--amplify-components-button-menu-hover-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-button-menu-focus-color:var(--amplify-colors-font-inverse);--amplify-components-button-menu-focus-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-button-menu-active-color:var(--amplify-colors-font-inverse);--amplify-components-button-menu-active-background-color:var(--amplify-colors-brand-primary-90);--amplify-components-button-menu-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-button-link-background-color:transparent;--amplify-components-button-link-border-color:transparent;--amplify-components-button-link-border-width:var(--amplify-space-zero);--amplify-components-button-link-color:var(--amplify-colors-font-interactive);--amplify-components-button-link-hover-border-color:transparent;--amplify-components-button-link-hover-background-color:var(--amplify-colors-brand-primary-10);--amplify-components-button-link-hover-color:var(--amplify-colors-font-hover);--amplify-components-button-link-focus-border-color:transparent;--amplify-components-button-link-focus-background-color:var(--amplify-colors-brand-primary-10);--amplify-components-button-link-focus-color:var(--amplify-colors-font-focus);--amplify-components-button-link-focus-box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow);--amplify-components-button-link-active-border-color:transparent;--amplify-components-button-link-active-background-color:var(--amplify-colors-brand-primary-20);--amplify-components-button-link-active-color:var(--amplify-colors-font-active);--amplify-components-button-link-disabled-border-color:transparent;--amplify-components-button-link-disabled-background-color:transparent;--amplify-components-button-link-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-button-link-loading-border-color:transparent;--amplify-components-button-link-loading-background-color:transparent;--amplify-components-button-link-loading-color:var(--amplify-colors-font-disabled);--amplify-components-button-warning-background-color:transparent;--amplify-components-button-warning-border-color:var(--amplify-colors-red-60);--amplify-components-button-warning-border-width:var(--amplify-border-widths-small);--amplify-components-button-warning-color:var(--amplify-colors-red-60);--amplify-components-button-warning-hover-border-color:var(--amplify-colors-red-80);--amplify-components-button-warning-hover-background-color:var(--amplify-colors-red-10);--amplify-components-button-warning-hover-color:var(--amplify-colors-font-error);--amplify-components-button-warning-focus-border-color:var(--amplify-colors-red-80);--amplify-components-button-warning-focus-background-color:var(--amplify-colors-red-10);--amplify-components-button-warning-focus-color:var(--amplify-colors-red-80);--amplify-components-button-warning-focus-box-shadow:var(--amplify-components-fieldcontrol-error-focus-box-shadow);--amplify-components-button-warning-active-border-color:var(--amplify-colors-red-100);--amplify-components-button-warning-active-background-color:var(--amplify-colors-red-20);--amplify-components-button-warning-active-color:var(--amplify-colors-red-100);--amplify-components-button-warning-disabled-border-color:var(--amplify-colors-border-tertiary);--amplify-components-button-warning-disabled-background-color:transparent;--amplify-components-button-warning-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-button-warning-loading-border-color:var(--amplify-colors-border-tertiary);--amplify-components-button-warning-loading-background-color:transparent;--amplify-components-button-warning-loading-color:var(--amplify-colors-font-disabled);--amplify-components-button-destructive-border-color:transparent;--amplify-components-button-destructive-border-width:var(--amplify-border-widths-small);--amplify-components-button-destructive-border-style:solid;--amplify-components-button-destructive-background-color:var(--amplify-colors-red-60);--amplify-components-button-destructive-color:var(--amplify-colors-font-inverse);--amplify-components-button-destructive-disabled-border-color:transparent;--amplify-components-button-destructive-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-button-destructive-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-button-destructive-loading-border-color:transparent;--amplify-components-button-destructive-loading-background-color:var(--amplify-colors-background-disabled);--amplify-components-button-destructive-loading-color:var(--amplify-colors-font-disabled);--amplify-components-button-destructive-hover-border-color:transparent;--amplify-components-button-destructive-hover-background-color:var(--amplify-colors-red-80);--amplify-components-button-destructive-hover-color:var(--amplify-colors-font-inverse);--amplify-components-button-destructive-focus-border-color:transparent;--amplify-components-button-destructive-focus-background-color:var(--amplify-colors-red-80);--amplify-components-button-destructive-focus-color:var(--amplify-colors-font-inverse);--amplify-components-button-destructive-focus-box-shadow:var(--amplify-components-fieldcontrol-error-focus-box-shadow);--amplify-components-button-destructive-active-border-color:transparent;--amplify-components-button-destructive-active-background-color:var(--amplify-colors-red-100);--amplify-components-button-destructive-active-color:var(--amplify-colors-font-inverse);--amplify-components-button-small-font-size:var(--amplify-components-fieldcontrol-small-font-size);--amplify-components-button-small-padding-block-start:var(--amplify-components-fieldcontrol-small-padding-block-start);--amplify-components-button-small-padding-block-end:var(--amplify-components-fieldcontrol-small-padding-block-end);--amplify-components-button-small-padding-inline-start:var(--amplify-components-fieldcontrol-small-padding-inline-start);--amplify-components-button-small-padding-inline-end:var(--amplify-components-fieldcontrol-small-padding-inline-end);--amplify-components-button-large-font-size:var(--amplify-components-fieldcontrol-large-font-size);--amplify-components-button-large-padding-block-start:var(--amplify-components-fieldcontrol-large-padding-block-start);--amplify-components-button-large-padding-block-end:var(--amplify-components-fieldcontrol-large-padding-block-end);--amplify-components-button-large-padding-inline-start:var(--amplify-components-fieldcontrol-large-padding-inline-start);--amplify-components-button-large-padding-inline-end:var(--amplify-components-fieldcontrol-large-padding-inline-end);--amplify-components-button-loader-wrapper-align-items:center;--amplify-components-button-loader-wrapper-gap:var(--amplify-space-xs);--amplify-components-card-background-color:var(--amplify-colors-background-primary);--amplify-components-card-border-radius:var(--amplify-radii-xs);--amplify-components-card-border-width:0;--amplify-components-card-border-style:solid;--amplify-components-card-border-color:transparent;--amplify-components-card-box-shadow:none;--amplify-components-card-padding:var(--amplify-space-medium);--amplify-components-card-outlined-background-color:var(--amplify-components-card-background-color);--amplify-components-card-outlined-border-radius:var(--amplify-radii-xs);--amplify-components-card-outlined-border-width:var(--amplify-border-widths-small);--amplify-components-card-outlined-border-style:solid;--amplify-components-card-outlined-border-color:var(--amplify-colors-border-primary);--amplify-components-card-outlined-box-shadow:var(--amplify-components-card-box-shadow);--amplify-components-card-elevated-background-color:var(--amplify-components-card-background-color);--amplify-components-card-elevated-border-radius:var(--amplify-radii-xs);--amplify-components-card-elevated-border-width:0;--amplify-components-card-elevated-border-style:solid;--amplify-components-card-elevated-border-color:transparent;--amplify-components-card-elevated-box-shadow:var(--amplify-shadows-medium);--amplify-components-checkbox-cursor:pointer;--amplify-components-checkbox-align-items:center;--amplify-components-checkbox-disabled-cursor:not-allowed;--amplify-components-checkbox-button-position:relative;--amplify-components-checkbox-button-align-items:center;--amplify-components-checkbox-button-justify-content:center;--amplify-components-checkbox-button-color:var(--amplify-colors-font-inverse);--amplify-components-checkbox-button-before-width:100%;--amplify-components-checkbox-button-before-height:100%;--amplify-components-checkbox-button-before-border-width:var(--amplify-border-widths-medium);--amplify-components-checkbox-button-before-border-radius:20%;--amplify-components-checkbox-button-before-border-style:solid;--amplify-components-checkbox-button-before-border-color:var(--amplify-colors-border-primary);--amplify-components-checkbox-button-focus-outline-color:var(--amplify-colors-transparent);--amplify-components-checkbox-button-focus-outline-style:solid;--amplify-components-checkbox-button-focus-outline-width:var(--amplify-outline-widths-medium);--amplify-components-checkbox-button-focus-outline-offset:var(--amplify-outline-offsets-medium);--amplify-components-checkbox-button-focus-border-color:var(--amplify-colors-transparent);--amplify-components-checkbox-button-focus-box-shadow:0px 0px 0px 2px var(--amplify-colors-border-focus);--amplify-components-checkbox-button-disabled-border-color:var(--amplify-colors-border-disabled);--amplify-components-checkbox-button-error-border-color:var(--amplify-colors-border-error);--amplify-components-checkbox-button-error-focus-border-color:var(--amplify-colors-transparent);--amplify-components-checkbox-button-error-focus-box-shadow:0px 0px 0px 2px var(--amplify-colors-border-error);--amplify-components-checkbox-icon-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-checkbox-icon-border-radius:20%;--amplify-components-checkbox-icon-opacity:var(--amplify-opacities-0);--amplify-components-checkbox-icon-transform:scale(0);--amplify-components-checkbox-icon-transition-property:all;--amplify-components-checkbox-icon-transition-duration:var(--amplify-time-short);--amplify-components-checkbox-icon-transition-timing-function:ease-in-out;--amplify-components-checkbox-icon-checked-opacity:var(--amplify-opacities-100);--amplify-components-checkbox-icon-checked-transform:scale(1);--amplify-components-checkbox-icon-checked-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-checkbox-icon-indeterminate-opacity:var(--amplify-opacities-100);--amplify-components-checkbox-icon-indeterminate-transform:scale(1);--amplify-components-checkbox-icon-indeterminate-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-checkbox-label-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-checkboxfield-align-items:flex-start;--amplify-components-checkboxfield-align-content:center;--amplify-components-checkboxfield-flex-direction:column;--amplify-components-checkboxfield-justify-content:center;--amplify-components-collection-pagination-current-color:var(--amplify-components-pagination-current-color);--amplify-components-collection-pagination-current-background-color:var(--amplify-components-pagination-current-background-color);--amplify-components-collection-pagination-button-color:var(--amplify-components-pagination-button-color);--amplify-components-collection-pagination-button-hover-background-color:var(--amplify-components-pagination-button-hover-background-color);--amplify-components-collection-pagination-button-hover-color:var(--amplify-components-pagination-button-hover-color);--amplify-components-collection-pagination-button-disabled-color:var(--amplify-components-pagination-button-disabled-color);--amplify-components-collection-search-input-color:var(--amplify-components-searchfield-color);--amplify-components-collection-search-button-color:var(--amplify-components-searchfield-button-color);--amplify-components-collection-search-button-active-background-color:var(--amplify-components-searchfield-button-active-background-color);--amplify-components-collection-search-button-active-border-color:var(--amplify-components-searchfield-button-active-border-color);--amplify-components-collection-search-button-active-color:var(--amplify-components-searchfield-button-active-color);--amplify-components-collection-search-button-disabled-background-color:var(--amplify-components-searchfield-button-disabled-background-color);--amplify-components-collection-search-button-disabled-border-color:var(--amplify-components-searchfield-button-disabled-border-color);--amplify-components-collection-search-button-disabled-color:var(--amplify-components-searchfield-button-disabled-color);--amplify-components-collection-search-button-focus-background-color:var(--amplify-components-searchfield-button-focus-background-color);--amplify-components-collection-search-button-focus-border-color:var(--amplify-components-searchfield-button-focus-border-color);--amplify-components-collection-search-button-focus-color:var(--amplify-components-searchfield-button-focus-color);--amplify-components-collection-search-button-hover-background-color:var(--amplify-components-searchfield-button-hover-background-color);--amplify-components-collection-search-button-hover-border-color:var(--amplify-components-searchfield-button-hover-border-color);--amplify-components-collection-search-button-hover-color:var(--amplify-components-searchfield-button-hover-color);--amplify-components-copy-font-size:var(--amplify-font-sizes-xs);--amplify-components-copy-gap:var(--amplify-space-relative-medium);--amplify-components-copy-svg-path-fill:var(--amplify-colors-font-primary);--amplify-components-copy-tool-tip-bottom:var(--amplify-space-large);--amplify-components-copy-tool-tip-color:var(--amplify-colors-teal-100);--amplify-components-copy-tool-tip-font-size:var(--amplify-font-sizes-xxs);--amplify-components-countrycodeselect-height:var(--amplify-space-relative-full);--amplify-components-divider-border-style:solid;--amplify-components-divider-border-color:var(--amplify-colors-border-primary);--amplify-components-divider-border-width:var(--amplify-border-widths-medium);--amplify-components-divider-label-color:var(--amplify-colors-font-tertiary);--amplify-components-divider-label-padding-inline:var(--amplify-space-medium);--amplify-components-divider-label-font-size:var(--amplify-font-sizes-small);--amplify-components-divider-label-background-color:var(--amplify-colors-background-primary);--amplify-components-divider-small-border-width:var(--amplify-border-widths-small);--amplify-components-divider-large-border-width:var(--amplify-border-widths-large);--amplify-components-divider-opacity:var(--amplify-opacities-60);--amplify-components-expander-display:block;--amplify-components-expander-background-color:var(--amplify-colors-background-primary);--amplify-components-expander-border-radius:var(--amplify-radii-medium);--amplify-components-expander-box-shadow:var(--amplify-shadows-large);--amplify-components-expander-width:100%;--amplify-components-expander-item-margin-top:1px;--amplify-components-expander-item-box-shadow:var(--amplify-shadows-small);--amplify-components-expander-item-border-bottom-left-radius:var(--amplify-radii-medium);--amplify-components-expander-item-border-bottom-right-radius:var(--amplify-radii-medium);--amplify-components-expander-item-border-top-left-radius:var(--amplify-radii-medium);--amplify-components-expander-item-border-top-right-radius:var(--amplify-radii-medium);--amplify-components-expander-item-border-start-start-radius:var(--amplify-radii-medium);--amplify-components-expander-item-border-start-end-radius:var(--amplify-radii-medium);--amplify-components-expander-item-border-end-start-radius:var(--amplify-radii-medium);--amplify-components-expander-item-border-end-end-radius:var(--amplify-radii-medium);--amplify-components-expander-item-focus-box-shadow:0 0 0 2px var(--amplify-colors-border-focus);--amplify-components-expander-header-box-shadow:0 1px 0 var(--amplify-colors-overlay-20);--amplify-components-expander-trigger-min-height:3rem;--amplify-components-expander-trigger-padding-inline-start:var(--amplify-space-large);--amplify-components-expander-trigger-padding-inline-end:var(--amplify-space-large);--amplify-components-expander-trigger-align-items:center;--amplify-components-expander-trigger-justify-content:space-between;--amplify-components-expander-trigger-hover-background-color:var(--amplify-colors-overlay-10);--amplify-components-expander-content-padding-inline-start:var(--amplify-space-large);--amplify-components-expander-content-padding-inline-end:var(--amplify-space-large);--amplify-components-expander-content-text-color:var(--amplify-colors-font-secondary);--amplify-components-expander-content-text-padding-block-start:var(--amplify-space-medium);--amplify-components-expander-content-text-padding-block-end:var(--amplify-space-medium);--amplify-components-expander-content-open-animation-duration:var(--amplify-time-medium);--amplify-components-expander-content-open-animation-timing-function:cubic-bezier(.87,0,.13,1);--amplify-components-expander-content-closed-animation-duration:var(--amplify-time-medium);--amplify-components-expander-content-closed-animation-timing-function:cubic-bezier(.87,0,.13,1);--amplify-components-expander-icon-transition-duration:var(--amplify-time-medium);--amplify-components-expander-icon-transition-timing-function:cubic-bezier(.87,0,.13,1);--amplify-components-field-gap:var(--amplify-space-xs);--amplify-components-field-font-size:var(--amplify-font-sizes-medium);--amplify-components-field-small-gap:var(--amplify-space-xxxs);--amplify-components-field-small-font-size:var(--amplify-font-sizes-small);--amplify-components-field-large-gap:var(--amplify-space-small);--amplify-components-field-large-font-size:var(--amplify-font-sizes-large);--amplify-components-field-label-color:var(--amplify-colors-font-secondary);--amplify-components-fieldcontrol-border-style:solid;--amplify-components-fieldcontrol-border-color:var(--amplify-colors-border-primary);--amplify-components-fieldcontrol-border-width:var(--amplify-border-widths-small);--amplify-components-fieldcontrol-border-radius:var(--amplify-radii-small);--amplify-components-fieldcontrol-color:var(--amplify-colors-font-primary);--amplify-components-fieldcontrol-padding-block-start:var(--amplify-space-xs);--amplify-components-fieldcontrol-padding-block-end:var(--amplify-space-xs);--amplify-components-fieldcontrol-padding-inline-start:var(--amplify-space-medium);--amplify-components-fieldcontrol-padding-inline-end:var(--amplify-space-medium);--amplify-components-fieldcontrol-font-size:var(--amplify-components-field-font-size);--amplify-components-fieldcontrol-line-height:var(--amplify-line-heights-medium);--amplify-components-fieldcontrol-transition-duration:var(--amplify-time-medium);--amplify-components-fieldcontrol-outline-color:var(--amplify-colors-transparent);--amplify-components-fieldcontrol-outline-style:solid;--amplify-components-fieldcontrol-outline-width:var(--amplify-outline-widths-medium);--amplify-components-fieldcontrol-outline-offset:var(--amplify-outline-offsets-medium);--amplify-components-fieldcontrol-small-font-size:var(--amplify-components-field-small-font-size);--amplify-components-fieldcontrol-small-padding-block-start:var(--amplify-space-xxs);--amplify-components-fieldcontrol-small-padding-block-end:var(--amplify-space-xxs);--amplify-components-fieldcontrol-small-padding-inline-start:var(--amplify-space-small);--amplify-components-fieldcontrol-small-padding-inline-end:var(--amplify-space-small);--amplify-components-fieldcontrol-large-font-size:var(--amplify-components-field-large-font-size);--amplify-components-fieldcontrol-large-padding-block-start:var(--amplify-space-xs);--amplify-components-fieldcontrol-large-padding-block-end:var(--amplify-space-xs);--amplify-components-fieldcontrol-large-padding-inline-start:var(--amplify-space-medium);--amplify-components-fieldcontrol-large-padding-inline-end:var(--amplify-space-medium);--amplify-components-fieldcontrol-quiet-border-style:none;--amplify-components-fieldcontrol-quiet-border-inline-start:none;--amplify-components-fieldcontrol-quiet-border-inline-end:none;--amplify-components-fieldcontrol-quiet-border-block-start:none;--amplify-components-fieldcontrol-quiet-border-radius:0;--amplify-components-fieldcontrol-quiet-focus-border-block-end-color:var(--amplify-colors-border-focus);--amplify-components-fieldcontrol-quiet-focus-box-shadow:0px 1px 0px var(--amplify-colors-border-focus);--amplify-components-fieldcontrol-quiet-error-border-block-end-color:var(--amplify-colors-border-error);--amplify-components-fieldcontrol-quiet-error-focus-box-shadow:0px 1px 0px var(--amplify-colors-border-error);--amplify-components-fieldcontrol-focus-border-color:var(--amplify-colors-border-focus);--amplify-components-fieldcontrol-focus-box-shadow:0px 0px 0px 1px var(--amplify-colors-border-focus);--amplify-components-fieldcontrol-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-fieldcontrol-disabled-cursor:not-allowed;--amplify-components-fieldcontrol-disabled-border-color:var(--amplify-colors-transparent);--amplify-components-fieldcontrol-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-fieldcontrol-error-border-color:var(--amplify-colors-border-error);--amplify-components-fieldcontrol-error-focus-box-shadow:0px 0px 0px 1px var(--amplify-colors-border-error);--amplify-components-fieldgroup-gap:var(--amplify-space-zero);--amplify-components-fieldgroup-vertical-align-items:center;--amplify-components-fieldgroup-outer-align-items:center;--amplify-components-fieldmessages-error-color:var(--amplify-colors-font-error);--amplify-components-fieldmessages-error-font-size:var(--amplify-font-sizes-small);--amplify-components-fieldmessages-description-color:var(--amplify-colors-font-secondary);--amplify-components-fieldmessages-description-font-style:italic;--amplify-components-fieldmessages-description-font-size:var(--amplify-font-sizes-small);--amplify-components-fileuploader-dropzone-background-color:var(--amplify-colors-background-primary);--amplify-components-fileuploader-dropzone-border-radius:var(--amplify-radii-small);--amplify-components-fileuploader-dropzone-border-color:var(--amplify-colors-border-primary);--amplify-components-fileuploader-dropzone-border-style:dashed;--amplify-components-fileuploader-dropzone-border-width:var(--amplify-border-widths-small);--amplify-components-fileuploader-dropzone-gap:var(--amplify-space-small);--amplify-components-fileuploader-dropzone-padding-block:var(--amplify-space-xl);--amplify-components-fileuploader-dropzone-padding-inline:var(--amplify-space-large);--amplify-components-fileuploader-dropzone-text-align:center;--amplify-components-fileuploader-dropzone-active-background-color:var(--amplify-colors-brand-primary-10);--amplify-components-fileuploader-dropzone-active-border-radius:var(--amplify-components-fileuploader-dropzone-border-radius);--amplify-components-fileuploader-dropzone-active-border-color:var(--amplify-colors-border-pressed);--amplify-components-fileuploader-dropzone-active-border-style:var(--amplify-components-fileuploader-dropzone-border-style);--amplify-components-fileuploader-dropzone-active-border-width:var(--amplify-border-widths-medium);--amplify-components-fileuploader-dropzone-icon-color:var(--amplify-colors-border-primary);--amplify-components-fileuploader-dropzone-icon-font-size:var(--amplify-font-sizes-xxl);--amplify-components-fileuploader-dropzone-text-color:var(--amplify-colors-font-tertiary);--amplify-components-fileuploader-dropzone-text-font-size:var(--amplify-font-sizes-medium);--amplify-components-fileuploader-dropzone-text-font-weight:var(--amplify-font-weights-bold);--amplify-components-fileuploader-file-background-color:var(--amplify-colors-background-primary);--amplify-components-fileuploader-file-border-radius:var(--amplify-radii-small);--amplify-components-fileuploader-file-border-color:var(--amplify-colors-border-primary);--amplify-components-fileuploader-file-border-style:solid;--amplify-components-fileuploader-file-border-width:var(--amplify-border-widths-small);--amplify-components-fileuploader-file-padding-block:var(--amplify-space-xs);--amplify-components-fileuploader-file-padding-inline:var(--amplify-space-small);--amplify-components-fileuploader-file-gap:var(--amplify-space-small);--amplify-components-fileuploader-file-align-items:baseline;--amplify-components-fileuploader-file-name-font-size:var(--amplify-font-sizes-medium);--amplify-components-fileuploader-file-name-font-weight:var(--amplify-font-weights-bold);--amplify-components-fileuploader-file-name-color:var(--amplify-colors-font-primary);--amplify-components-fileuploader-file-size-font-size:var(--amplify-font-sizes-small);--amplify-components-fileuploader-file-size-font-weight:var(--amplify-font-weights-normal);--amplify-components-fileuploader-file-size-color:var(--amplify-colors-font-tertiary);--amplify-components-fileuploader-file-image-width:var(--amplify-space-xxl);--amplify-components-fileuploader-file-image-height:var(--amplify-space-xxl);--amplify-components-fileuploader-file-image-background-color:var(--amplify-colors-background-secondary);--amplify-components-fileuploader-file-image-color:var(--amplify-colors-font-tertiary);--amplify-components-fileuploader-file-image-border-radius:var(--amplify-radii-small);--amplify-components-fileuploader-loader-stroke-linecap:round;--amplify-components-fileuploader-loader-stroke-empty:var(--amplify-colors-border-secondary);--amplify-components-fileuploader-loader-stroke-filled:var(--amplify-components-loader-stroke-filled);--amplify-components-fileuploader-loader-stroke-width:var(--amplify-border-widths-large);--amplify-components-fileuploader-previewer-background-color:var(--amplify-colors-background-primary);--amplify-components-fileuploader-previewer-border-color:var(--amplify-colors-border-primary);--amplify-components-fileuploader-previewer-border-style:solid;--amplify-components-fileuploader-previewer-border-width:var(--amplify-border-widths-small);--amplify-components-fileuploader-previewer-border-radius:var(--amplify-radii-small);--amplify-components-fileuploader-previewer-padding-block:var(--amplify-space-zero);--amplify-components-fileuploader-previewer-padding-inline:var(--amplify-space-zero);--amplify-components-fileuploader-previewer-max-height:40rem;--amplify-components-fileuploader-previewer-max-width:auto;--amplify-components-fileuploader-previewer-text-font-size:var(--amplify-font-sizes-medium);--amplify-components-fileuploader-previewer-text-font-weight:var(--amplify-font-weights-bold);--amplify-components-fileuploader-previewer-text-color:var(--amplify-colors-font-primary);--amplify-components-fileuploader-previewer-body-padding-block:var(--amplify-space-medium);--amplify-components-fileuploader-previewer-body-padding-inline:var(--amplify-space-medium);--amplify-components-fileuploader-previewer-body-gap:var(--amplify-space-small);--amplify-components-fileuploader-previewer-footer-border-color:var(--amplify-colors-border-secondary);--amplify-components-fileuploader-previewer-footer-border-style:solid;--amplify-components-fileuploader-previewer-footer-border-width:var(--amplify-border-widths-small);--amplify-components-fileuploader-previewer-footer-padding-block:var(--amplify-space-medium);--amplify-components-fileuploader-previewer-footer-padding-inline:var(--amplify-space-medium);--amplify-components-fileuploader-previewer-footer-justify-content:space-between;--amplify-components-flex-gap:var(--amplify-space-medium);--amplify-components-flex-justify-content:normal;--amplify-components-flex-align-items:stretch;--amplify-components-flex-align-content:normal;--amplify-components-flex-flex-wrap:nowrap;--amplify-components-heading-1-font-size:var(--amplify-font-sizes-xxxxl);--amplify-components-heading-1-font-weight:var(--amplify-font-weights-light);--amplify-components-heading-2-font-size:var(--amplify-font-sizes-xxxl);--amplify-components-heading-2-font-weight:var(--amplify-font-weights-normal);--amplify-components-heading-3-font-size:var(--amplify-font-sizes-xxl);--amplify-components-heading-3-font-weight:var(--amplify-font-weights-medium);--amplify-components-heading-4-font-size:var(--amplify-font-sizes-xl);--amplify-components-heading-4-font-weight:var(--amplify-font-weights-semibold);--amplify-components-heading-5-font-size:var(--amplify-font-sizes-large);--amplify-components-heading-5-font-weight:var(--amplify-font-weights-bold);--amplify-components-heading-6-font-size:var(--amplify-font-sizes-medium);--amplify-components-heading-6-font-weight:var(--amplify-font-weights-extrabold);--amplify-components-heading-color:var(--amplify-colors-font-primary);--amplify-components-heading-line-height:var(--amplify-line-heights-small);--amplify-components-icon-line-height:1;--amplify-components-icon-height:1em;--amplify-components-highlightmatch-highlighted-font-weight:var(--amplify-font-weights-bold);--amplify-components-image-max-width:100%;--amplify-components-image-height:auto;--amplify-components-image-object-fit:initial;--amplify-components-image-object-position:initial;--amplify-components-inappmessaging-banner-height:150px;--amplify-components-inappmessaging-banner-width:400px;--amplify-components-inappmessaging-button-background-color:#e8e8e8;--amplify-components-inappmessaging-button-border-radius:5px;--amplify-components-inappmessaging-button-color:black;--amplify-components-inappmessaging-dialog-height:50vh;--amplify-components-inappmessaging-dialog-min-height:400px;--amplify-components-inappmessaging-dialog-min-width:400px;--amplify-components-inappmessaging-dialog-width:30vw;--amplify-components-inappmessaging-header-font-size:var(--amplify-font-sizes-medium);--amplify-components-inappmessaging-header-font-weight:var(--amplify-font-weights-extrabold);--amplify-components-link-active-color:var(--amplify-colors-font-active);--amplify-components-link-color:var(--amplify-colors-font-interactive);--amplify-components-link-focus-color:var(--amplify-colors-font-focus);--amplify-components-link-hover-color:var(--amplify-colors-font-hover);--amplify-components-link-visited-color:var(--amplify-colors-font-interactive);--amplify-components-loader-width:var(--amplify-font-sizes-medium);--amplify-components-loader-height:var(--amplify-font-sizes-medium);--amplify-components-loader-font-size:var(--amplify-font-sizes-xs);--amplify-components-loader-stroke-empty:var(--amplify-colors-neutral-20);--amplify-components-loader-stroke-filled:var(--amplify-colors-brand-primary-80);--amplify-components-loader-stroke-linecap:round;--amplify-components-loader-animation-duration:1s;--amplify-components-loader-small-width:var(--amplify-font-sizes-small);--amplify-components-loader-small-height:var(--amplify-font-sizes-small);--amplify-components-loader-small-font-size:var(--amplify-font-sizes-xxs);--amplify-components-loader-large-width:var(--amplify-font-sizes-large);--amplify-components-loader-large-height:var(--amplify-font-sizes-large);--amplify-components-loader-large-font-size:var(--amplify-font-sizes-small);--amplify-components-loader-linear-width:100%;--amplify-components-loader-linear-min-width:5rem;--amplify-components-loader-linear-font-size:var(--amplify-font-sizes-medium);--amplify-components-loader-linear-stroke-width:var(--amplify-font-sizes-medium);--amplify-components-loader-linear-stroke-filled:var(--amplify-colors-brand-primary-80);--amplify-components-loader-linear-stroke-empty:var(--amplify-colors-neutral-20);--amplify-components-loader-linear-stroke-linecap:round;--amplify-components-loader-linear-animation-duration:1s;--amplify-components-loader-linear-small-stroke-width:var(--amplify-font-sizes-small);--amplify-components-loader-linear-small-font-size:var(--amplify-font-sizes-small);--amplify-components-loader-linear-large-stroke-width:var(--amplify-font-sizes-large);--amplify-components-loader-linear-large-font-size:var(--amplify-font-sizes-large);--amplify-components-loader-text-fill:var(--amplify-colors-font-primary);--amplify-components-menu-background-color:var(--amplify-colors-background-primary);--amplify-components-menu-border-radius:var(--amplify-radii-medium);--amplify-components-menu-border-width:var(--amplify-border-widths-small);--amplify-components-menu-border-style:solid;--amplify-components-menu-border-color:var(--amplify-colors-border-primary);--amplify-components-menu-box-shadow:var(--amplify-shadows-large);--amplify-components-menu-flex-direction:column;--amplify-components-menu-gap:var(--amplify-space-zero);--amplify-components-menu-max-width:30rem;--amplify-components-menu-min-width:14rem;--amplify-components-menu-small-width:var(--amplify-font-sizes-medium);--amplify-components-menu-small-height:var(--amplify-font-sizes-medium);--amplify-components-menu-large-width:var(--amplify-font-sizes-xxxl);--amplify-components-menu-large-height:var(--amplify-font-sizes-xxxl);--amplify-components-menu-item-min-height:2.5rem;--amplify-components-menu-item-padding-inline-start:var(--amplify-space-medium);--amplify-components-menu-item-padding-inline-end:var(--amplify-space-medium);--amplify-components-pagination-current-align-items:center;--amplify-components-pagination-current-justify-content:center;--amplify-components-pagination-current-color:var(--amplify-colors-font-inverse);--amplify-components-pagination-current-font-size:var(--amplify-font-sizes-small);--amplify-components-pagination-current-background-color:var(--amplify-colors-overlay-40);--amplify-components-pagination-button-color:var(--amplify-colors-font-primary);--amplify-components-pagination-button-padding-inline-start:var(--amplify-space-xxs);--amplify-components-pagination-button-padding-inline-end:var(--amplify-space-xxs);--amplify-components-pagination-button-transition-property:background-color;--amplify-components-pagination-button-transition-duration:var(--amplify-time-medium);--amplify-components-pagination-button-hover-background-color:var(--amplify-colors-overlay-10);--amplify-components-pagination-button-hover-color:var(--amplify-colors-font-primary);--amplify-components-pagination-button-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-pagination-ellipsis-align-items:baseline;--amplify-components-pagination-ellipsis-justify-content:center;--amplify-components-pagination-ellipsis-padding-inline-start:var(--amplify-space-xs);--amplify-components-pagination-ellipsis-padding-inline-end:var(--amplify-space-xs);--amplify-components-pagination-item-container-margin-left:var(--amplify-space-xxxs);--amplify-components-pagination-item-container-margin-right:var(--amplify-space-xxxs);--amplify-components-pagination-item-shared-height:var(--amplify-font-sizes-xxl);--amplify-components-pagination-item-shared-min-width:var(--amplify-font-sizes-xxl);--amplify-components-pagination-item-shared-border-radius:var(--amplify-font-sizes-medium);--amplify-components-passwordfield-color:var(--amplify-components-fieldcontrol-color);--amplify-components-passwordfield-button-color:var(--amplify-components-button-color);--amplify-components-passwordfield-button-active-background-color:var(--amplify-components-button-active-background-color);--amplify-components-passwordfield-button-active-border-color:var(--amplify-components-button-active-border-color);--amplify-components-passwordfield-button-active-color:var(--amplify-components-button-active-color);--amplify-components-passwordfield-button-disabled-background-color:var(--amplify-components-button-disabled-background-color);--amplify-components-passwordfield-button-disabled-border-color:var(--amplify-components-button-disabled-border-color);--amplify-components-passwordfield-button-disabled-color:var(--amplify-components-button-disabled-color);--amplify-components-passwordfield-button-focus-background-color:var(--amplify-components-button-focus-background-color);--amplify-components-passwordfield-button-focus-border-color:var(--amplify-components-button-focus-border-color);--amplify-components-passwordfield-button-focus-color:var(--amplify-components-button-focus-color);--amplify-components-passwordfield-button-hover-background-color:var(--amplify-components-button-hover-background-color);--amplify-components-passwordfield-button-hover-border-color:var(--amplify-components-button-hover-border-color);--amplify-components-passwordfield-button-hover-color:var(--amplify-components-button-hover-color);--amplify-components-phonenumberfield-color:var(--amplify-components-fieldcontrol-color);--amplify-components-phonenumberfield-border-color:var(--amplify-components-fieldcontrol-border-color);--amplify-components-phonenumberfield-font-size:var(--amplify-components-fieldcontrol-font-size);--amplify-components-phonenumberfield-focus-border-color:var(--amplify-components-fieldcontrol-focus-border-color);--amplify-components-placeholder-border-radius:var(--amplify-radii-small);--amplify-components-placeholder-transition-duration:var(--amplify-time-long);--amplify-components-placeholder-start-color:var(--amplify-colors-background-secondary);--amplify-components-placeholder-end-color:var(--amplify-colors-background-tertiary);--amplify-components-placeholder-small-height:var(--amplify-space-small);--amplify-components-placeholder-default-height:var(--amplify-space-medium);--amplify-components-placeholder-large-height:var(--amplify-space-large);--amplify-components-radio-align-items:center;--amplify-components-radio-justify-content:flex-start;--amplify-components-radio-gap:inherit;--amplify-components-radio-disabled-cursor:not-allowed;--amplify-components-radio-button-align-items:center;--amplify-components-radio-button-justify-content:center;--amplify-components-radio-button-width:var(--amplify-font-sizes-medium);--amplify-components-radio-button-height:var(--amplify-font-sizes-medium);--amplify-components-radio-button-box-sizing:border-box;--amplify-components-radio-button-border-width:var(--amplify-border-widths-medium);--amplify-components-radio-button-border-style:solid;--amplify-components-radio-button-border-radius:50%;--amplify-components-radio-button-border-color:var(--amplify-colors-border-primary);--amplify-components-radio-button-color:var(--amplify-colors-background-primary);--amplify-components-radio-button-background-color:var(--amplify-colors-background-primary);--amplify-components-radio-button-transition-property:all;--amplify-components-radio-button-transition-duration:var(--amplify-time-medium);--amplify-components-radio-button-outline-color:var(--amplify-colors-transparent);--amplify-components-radio-button-outline-style:solid;--amplify-components-radio-button-outline-width:var(--amplify-outline-widths-medium);--amplify-components-radio-button-outline-offset:var(--amplify-outline-offsets-medium);--amplify-components-radio-button-padding:var(--amplify-border-widths-medium);--amplify-components-radio-button-small-width:var(--amplify-font-sizes-small);--amplify-components-radio-button-small-height:var(--amplify-font-sizes-small);--amplify-components-radio-button-large-width:var(--amplify-font-sizes-large);--amplify-components-radio-button-large-height:var(--amplify-font-sizes-large);--amplify-components-radio-button-checked-color:var(--amplify-colors-brand-primary-80);--amplify-components-radio-button-checked-disabled-color:var(--amplify-colors-background-disabled);--amplify-components-radio-button-focus-border-color:var(--amplify-colors-border-focus);--amplify-components-radio-button-focus-box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow);--amplify-components-radio-button-error-border-color:var(--amplify-colors-border-error);--amplify-components-radio-button-error-focus-box-shadow:var(--amplify-components-fieldcontrol-error-focus-box-shadow);--amplify-components-radio-button-disabled-border-color:var(--amplify-colors-border-disabled);--amplify-components-radio-button-disabled-background-color:var(--amplify-colors-background-primary);--amplify-components-radio-label-color:var(--amplify-components-text-color);--amplify-components-radio-label-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-radiogroup-radio-border-width:var(--amplify-components-radio-button-border-width);--amplify-components-radiogroup-radio-border-color:var(--amplify-components-radio-button-border-color);--amplify-components-radiogroup-radio-background-color:var(--amplify-components-radio-button-background-color);--amplify-components-radiogroup-radio-checked-color:var(--amplify-components-radio-button-checked-color);--amplify-components-radiogroup-radio-label-color:var(--amplify-components-radio-label-color);--amplify-components-radiogroup-label-color:var(--amplify-components-field-label-color);--amplify-components-rating-large-size:var(--amplify-font-sizes-xxxl);--amplify-components-rating-default-size:var(--amplify-font-sizes-xl);--amplify-components-rating-small-size:var(--amplify-font-sizes-small);--amplify-components-rating-filled-color:var(--amplify-colors-brand-secondary-80);--amplify-components-rating-empty-color:var(--amplify-colors-background-tertiary);--amplify-components-searchfield-color:var(--amplify-components-fieldcontrol-color);--amplify-components-searchfield-button-color:var(--amplify-components-button-color);--amplify-components-searchfield-button-background-color:var(--amplify-colors-background-primary);--amplify-components-searchfield-button-active-background-color:var(--amplify-components-button-active-background-color);--amplify-components-searchfield-button-active-border-color:var(--amplify-components-button-active-border-color);--amplify-components-searchfield-button-active-color:var(--amplify-components-button-active-color);--amplify-components-searchfield-button-disabled-background-color:var(--amplify-components-button-disabled-background-color);--amplify-components-searchfield-button-disabled-border-color:var(--amplify-components-button-disabled-border-color);--amplify-components-searchfield-button-disabled-color:var(--amplify-components-button-disabled-color);--amplify-components-searchfield-button-focus-background-color:var(--amplify-components-button-focus-background-color);--amplify-components-searchfield-button-focus-border-color:var(--amplify-components-button-focus-border-color);--amplify-components-searchfield-button-focus-color:var(--amplify-components-button-focus-color);--amplify-components-searchfield-button-hover-background-color:var(--amplify-components-button-hover-background-color);--amplify-components-searchfield-button-hover-border-color:var(--amplify-components-button-hover-border-color);--amplify-components-searchfield-button-hover-color:var(--amplify-components-button-hover-color);--amplify-components-select-padding-inline-end:var(--amplify-space-xxl);--amplify-components-select-wrapper-flex:1;--amplify-components-select-wrapper-display:block;--amplify-components-select-wrapper-position:relative;--amplify-components-select-wrapper-cursor:pointer;--amplify-components-select-icon-wrapper-align-items:center;--amplify-components-select-icon-wrapper-position:absolute;--amplify-components-select-icon-wrapper-top:50%;--amplify-components-select-icon-wrapper-right:var(--amplify-space-medium);--amplify-components-select-icon-wrapper-transform:translateY(-50%);--amplify-components-select-icon-wrapper-pointer-events:none;--amplify-components-select-option-background-color:var(--amplify-colors-background-primary);--amplify-components-select-option-color:var(--amplify-colors-font-primary);--amplify-components-select-option-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-select-white-space:nowrap;--amplify-components-select-min-width:6.5rem;--amplify-components-select-small-min-width:5.5rem;--amplify-components-select-large-min-width:7.5rem;--amplify-components-selectfield-border-color:var(--amplify-components-fieldcontrol-border-color);--amplify-components-selectfield-color:var(--amplify-components-fieldcontrol-color);--amplify-components-selectfield-flex-direction:column;--amplify-components-selectfield-font-size:var(--amplify-components-fieldcontrol-font-size);--amplify-components-selectfield-focus-border-color:var(--amplify-components-fieldcontrol-focus-border-color);--amplify-components-selectfield-label-color:var(--amplify-components-field-label-color);--amplify-components-sliderfield-padding-block:var(--amplify-space-xs);--amplify-components-sliderfield-track-background-color:var(--amplify-colors-background-quaternary);--amplify-components-sliderfield-track-border-radius:9999px;--amplify-components-sliderfield-track-height:.375rem;--amplify-components-sliderfield-track-min-width:10rem;--amplify-components-sliderfield-range-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-sliderfield-range-border-radius:9999px;--amplify-components-sliderfield-range-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-sliderfield-thumb-width:1.25rem;--amplify-components-sliderfield-thumb-height:1.25rem;--amplify-components-sliderfield-thumb-background-color:var(--amplify-colors-background-primary);--amplify-components-sliderfield-thumb-box-shadow:var(--amplify-shadows-small);--amplify-components-sliderfield-thumb-border-radius:50%;--amplify-components-sliderfield-thumb-border-width:var(--amplify-border-widths-medium);--amplify-components-sliderfield-thumb-border-color:var(--amplify-colors-border-primary);--amplify-components-sliderfield-thumb-border-style:solid;--amplify-components-sliderfield-thumb-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-sliderfield-thumb-disabled-border-color:transparent;--amplify-components-sliderfield-thumb-disabled-box-shadow:none;--amplify-components-sliderfield-thumb-hover-background-color:var(--amplify-colors-background-primary);--amplify-components-sliderfield-thumb-hover-border-color:var(--amplify-colors-border-focus);--amplify-components-sliderfield-thumb-focus-border-color:var(--amplify-colors-border-focus);--amplify-components-sliderfield-thumb-focus-box-shadow:0 0 0 2px var(--amplify-colors-border-focus);--amplify-components-sliderfield-small-track-height:.25rem;--amplify-components-sliderfield-small-thumb-width:1rem;--amplify-components-sliderfield-small-thumb-height:1rem;--amplify-components-sliderfield-large-track-height:.625rem;--amplify-components-sliderfield-large-thumb-width:1.5rem;--amplify-components-sliderfield-large-thumb-height:1.5rem;--amplify-components-stepperfield-border-color:var(--amplify-components-fieldcontrol-border-color);--amplify-components-stepperfield-flex-direction:column;--amplify-components-stepperfield-input-color:var(--amplify-components-fieldcontrol-color);--amplify-components-stepperfield-input-font-size:var(--amplify-components-fieldcontrol-font-size);--amplify-components-stepperfield-input-text-align:center;--amplify-components-stepperfield-button-color:var(--amplify-components-button-color);--amplify-components-stepperfield-button-background-color:var(--amplify-colors-transparent);--amplify-components-stepperfield-button-active-color:var(--amplify-components-button-active-color);--amplify-components-stepperfield-button-active-background-color:var(--amplify-components-button-active-background-color);--amplify-components-stepperfield-button-focus-color:var(--amplify-components-button-focus-color);--amplify-components-stepperfield-button-focus-background-color:var(--amplify-components-button-focus-background-color);--amplify-components-stepperfield-button-disabled-color:var(--amplify-components-button-disabled-color);--amplify-components-stepperfield-button-disabled-background-color:var(--amplify-components-fieldcontrol-disabled-background-color);--amplify-components-stepperfield-button-hover-color:var(--amplify-components-button-hover-color);--amplify-components-stepperfield-button-hover-background-color:var(--amplify-components-button-hover-background-color);--amplify-components-switchfield-disabled-opacity:var(--amplify-opacities-60);--amplify-components-switchfield-focused-shadow:0px 0px 0px 2px var(--amplify-colors-border-focus);--amplify-components-switchfield-font-size:var(--amplify-font-sizes-medium);--amplify-components-switchfield-large-font-size:var(--amplify-font-sizes-large);--amplify-components-switchfield-small-font-size:var(--amplify-font-sizes-small);--amplify-components-switchfield-label-padding:var(--amplify-space-xs);--amplify-components-switchfield-thumb-background-color:var(--amplify-colors-background-primary);--amplify-components-switchfield-thumb-border-color:var(--amplify-colors-border-tertiary);--amplify-components-switchfield-thumb-border-radius:var(--amplify-radii-xxxl);--amplify-components-switchfield-thumb-checked-transform:var(--amplify-transforms-slide-x-medium);--amplify-components-switchfield-thumb-transition-duration:var(--amplify-time-medium);--amplify-components-switchfield-thumb-width:var(--amplify-space-relative-medium);--amplify-components-switchfield-track-background-color:var(--amplify-colors-background-quaternary);--amplify-components-switchfield-track-border-radius:var(--amplify-radii-xxxl);--amplify-components-switchfield-track-checked-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-switchfield-track-height:var(--amplify-space-relative-medium);--amplify-components-switchfield-track-padding:var(--amplify-outline-widths-medium);--amplify-components-switchfield-track-transition-duration:var(--amplify-time-short);--amplify-components-switchfield-track-width:var(--amplify-space-relative-xl);--amplify-components-switchfield-track-error-background-color:var(--amplify-colors-background-error);--amplify-components-table-border-collapse:collapse;--amplify-components-table-display:table;--amplify-components-table-width:100%;--amplify-components-table-head-display:table-header-group;--amplify-components-table-head-vertical-align:middle;--amplify-components-table-body-display:table-row-group;--amplify-components-table-body-vertical-align:middle;--amplify-components-table-foot-display:table-footer-group;--amplify-components-table-foot-vertical-align:middle;--amplify-components-table-row-display:table-row;--amplify-components-table-row-vertical-align:middle;--amplify-components-table-row-hover-background-color:var(--amplify-colors-background-tertiary);--amplify-components-table-row-striped-background-color:var(--amplify-colors-background-secondary);--amplify-components-table-header-border-color:var(--amplify-colors-border-tertiary);--amplify-components-table-header-border-style:solid;--amplify-components-table-header-border-width:var(--amplify-border-widths-small);--amplify-components-table-header-color:var(--amplify-colors-font-primary);--amplify-components-table-header-display:table-cell;--amplify-components-table-header-font-size:var(--amplify-font-sizes-medium);--amplify-components-table-header-font-weight:var(--amplify-font-weights-bold);--amplify-components-table-header-padding:var(--amplify-space-medium);--amplify-components-table-header-vertical-align:middle;--amplify-components-table-header-large-font-size:var(--amplify-font-sizes-large);--amplify-components-table-header-large-padding:var(--amplify-space-large);--amplify-components-table-header-small-font-size:var(--amplify-font-sizes-small);--amplify-components-table-header-small-padding:var(--amplify-space-xs);--amplify-components-table-data-border-color:var(--amplify-colors-border-tertiary);--amplify-components-table-data-border-style:solid;--amplify-components-table-data-border-width:var(--amplify-border-widths-small);--amplify-components-table-data-color:var(--amplify-colors-font-primary);--amplify-components-table-data-display:table-cell;--amplify-components-table-data-font-size:var(--amplify-font-sizes-medium);--amplify-components-table-data-font-weight:var(--amplify-font-weights-normal);--amplify-components-table-data-padding:var(--amplify-space-medium);--amplify-components-table-data-vertical-align:middle;--amplify-components-table-data-large-font-size:var(--amplify-font-sizes-large);--amplify-components-table-data-large-padding:var(--amplify-space-large);--amplify-components-table-data-small-font-size:var(--amplify-font-sizes-small);--amplify-components-table-data-small-padding:var(--amplify-space-xs);--amplify-components-table-caption-caption-side:bottom;--amplify-components-table-caption-color:var(--amplify-colors-font-primary);--amplify-components-table-caption-display:table-caption;--amplify-components-table-caption-font-size:var(--amplify-font-sizes-medium);--amplify-components-table-caption-text-align:center;--amplify-components-table-caption-word-break:break-all;--amplify-components-table-caption-large-font-size:var(--amplify-font-sizes-large);--amplify-components-table-caption-small-font-size:var(--amplify-font-sizes-small);--amplify-components-tabs-background-color:transparent;--amplify-components-tabs-border-color:var(--amplify-colors-border-secondary);--amplify-components-tabs-border-style:solid;--amplify-components-tabs-border-width:var(--amplify-border-widths-medium);--amplify-components-tabs-gap:0;--amplify-components-tabs-item-background-color:transparent;--amplify-components-tabs-item-border-color:var(--amplify-colors-border-secondary);--amplify-components-tabs-item-border-style:solid;--amplify-components-tabs-item-border-width:var(--amplify-border-widths-medium);--amplify-components-tabs-item-color:var(--amplify-colors-font-secondary);--amplify-components-tabs-item-font-size:var(--amplify-font-sizes-medium);--amplify-components-tabs-item-font-weight:var(--amplify-font-weights-bold);--amplify-components-tabs-item-padding-vertical:var(--amplify-space-small);--amplify-components-tabs-item-padding-horizontal:var(--amplify-space-medium);--amplify-components-tabs-item-text-align:center;--amplify-components-tabs-item-transition-duration:var(--amplify-time-medium);--amplify-components-tabs-item-hover-color:var(--amplify-colors-font-hover);--amplify-components-tabs-item-focus-color:var(--amplify-colors-font-focus);--amplify-components-tabs-item-active-color:var(--amplify-colors-font-interactive);--amplify-components-tabs-item-active-border-color:var(--amplify-colors-font-interactive);--amplify-components-tabs-item-active-background-color:transparent;--amplify-components-tabs-item-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-tabs-item-disabled-background-color:transparent;--amplify-components-tabs-item-disabled-border-color:var(--amplify-colors-border-tertiary);--amplify-components-text-color:var(--amplify-colors-font-primary);--amplify-components-text-primary-color:var(--amplify-colors-font-primary);--amplify-components-text-secondary-color:var(--amplify-colors-font-secondary);--amplify-components-text-tertiary-color:var(--amplify-colors-font-tertiary);--amplify-components-text-error-color:var(--amplify-colors-font-error);--amplify-components-text-warning-color:var(--amplify-colors-font-warning);--amplify-components-text-success-color:var(--amplify-colors-font-success);--amplify-components-text-info-color:var(--amplify-colors-font-info);--amplify-components-textareafield-color:var(--amplify-components-fieldcontrol-color);--amplify-components-textareafield-border-color:var(--amplify-components-fieldcontrol-border-color);--amplify-components-textareafield-focus-border-color:var(--amplify-components-fieldcontrol-focus-border-color);--amplify-components-textfield-color:var(--amplify-components-fieldcontrol-color);--amplify-components-textfield-border-color:var(--amplify-components-fieldcontrol-border-color);--amplify-components-textfield-font-size:var(--amplify-components-fieldcontrol-font-size);--amplify-components-textfield-focus-border-color:var(--amplify-components-fieldcontrol-focus-border-color);--amplify-components-togglebutton-border-color:var(--amplify-colors-border-primary);--amplify-components-togglebutton-color:var(--amplify-colors-font-primary);--amplify-components-togglebutton-hover-background-color:var(--amplify-colors-overlay-10);--amplify-components-togglebutton-focus-border-color:var(--amplify-colors-border-focus);--amplify-components-togglebutton-focus-color:var(--amplify-colors-font-primary);--amplify-components-togglebutton-active-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-disabled-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-disabled-border-color:var(--amplify-colors-border-disabled);--amplify-components-togglebutton-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-togglebutton-pressed-border-color:var(--amplify-colors-border-pressed);--amplify-components-togglebutton-pressed-color:var(--amplify-colors-font-primary);--amplify-components-togglebutton-pressed-background-color:var(--amplify-colors-overlay-20);--amplify-components-togglebutton-pressed-hover-background-color:var(--amplify-colors-overlay-30);--amplify-components-togglebutton-primary-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-primary-border-width:var(--amplify-border-widths-small);--amplify-components-togglebutton-primary-focus-border-color:var(--amplify-colors-border-focus);--amplify-components-togglebutton-primary-focus-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-primary-focus-box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow);--amplify-components-togglebutton-primary-focus-color:var(--amplify-colors-font-primary);--amplify-components-togglebutton-primary-hover-background-color:var(--amplify-colors-overlay-10);--amplify-components-togglebutton-primary-hover-color:var(--amplify-colors-font-primary);--amplify-components-togglebutton-primary-disabled-border-color:var(--amplify-colors-border-disabled);--amplify-components-togglebutton-primary-disabled-background-color:var(--amplify-colors-background-disabled);--amplify-components-togglebutton-primary-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-togglebutton-primary-pressed-background-color:var(--amplify-colors-brand-primary-80);--amplify-components-togglebutton-primary-pressed-border-color:var(--amplify-colors-brand-primary-80);--amplify-components-togglebutton-primary-pressed-color:var(--amplify-colors-background-primary);--amplify-components-togglebutton-primary-pressed-focus-background-color:var(--amplify-colors-border-focus);--amplify-components-togglebutton-primary-pressed-focus-border-color:var(--amplify-colors-border-focus);--amplify-components-togglebutton-primary-pressed-focus-color:var(--amplify-colors-background-primary);--amplify-components-togglebutton-primary-pressed-hover-border-color:var(--amplify-colors-brand-primary-60);--amplify-components-togglebutton-primary-pressed-hover-background-color:var(--amplify-colors-brand-primary-60);--amplify-components-togglebutton-primary-pressed-hover-box-shadow:var(--amplify-colors-brand-primary-60);--amplify-components-togglebutton-primary-pressed-hover-color:var(--amplify-colors-background-primary);--amplify-components-togglebutton-link-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-link-color:var(--amplify-colors-overlay-50);--amplify-components-togglebutton-link-hover-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-link-hover-color:var(--amplify-colors-overlay-50);--amplify-components-togglebutton-link-focus-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-link-focus-color:var(--amplify-colors-overlay-50);--amplify-components-togglebutton-link-disabled-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-link-disabled-color:var(--amplify-colors-font-disabled);--amplify-components-togglebutton-link-pressed-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-link-pressed-color:var(--amplify-colors-overlay-90);--amplify-components-togglebutton-link-pressed-focus-background-color:var(--amplify-colors-transparent);--amplify-components-togglebutton-link-pressed-focus-color:var(--amplify-colors-overlay-90);--amplify-components-togglebutton-link-pressed-hover-color:var(--amplify-colors-overlay-90);--amplify-components-togglebutton-link-pressed-hover-background-color:var(--amplify-colors-transparent);--amplify-components-togglebuttongroup-align-items:center;--amplify-components-togglebuttongroup-align-content:center;--amplify-components-togglebuttongroup-justify-content:flex-start;--amplify-border-widths-small:1px;--amplify-border-widths-medium:2px;--amplify-border-widths-large:3px;--amplify-colors-red-10:#fce9e9;--amplify-colors-red-20:#f5bcbc;--amplify-colors-red-40:#ef8f8f;--amplify-colors-red-60:#bf4040;--amplify-colors-red-80:#950404;--amplify-colors-red-90:#600;--amplify-colors-red-100:#4d0000;--amplify-colors-orange-10:#fcf2e9;--amplify-colors-orange-20:#f5d9bc;--amplify-colors-orange-40:#efbf8f;--amplify-colors-orange-60:#bf8040;--amplify-colors-orange-80:#954d04;--amplify-colors-orange-90:#630;--amplify-colors-orange-100:#4d2600;--amplify-colors-yellow-10:#fcfce9;--amplify-colors-yellow-20:#f5f5bc;--amplify-colors-yellow-40:#efef8f;--amplify-colors-yellow-60:#bfbf40;--amplify-colors-yellow-80:#959504;--amplify-colors-yellow-90:#660;--amplify-colors-yellow-100:#4d4d00;--amplify-colors-green-10:#ebfaed;--amplify-colors-green-20:#d6f5db;--amplify-colors-green-40:#77ca85;--amplify-colors-green-60:#43a854;--amplify-colors-green-80:#3f7d4a;--amplify-colors-green-90:#365e3d;--amplify-colors-green-100:#2e4832;--amplify-colors-teal-10:#e9f9fc;--amplify-colors-teal-20:#bcecf5;--amplify-colors-teal-40:#7dd6e8;--amplify-colors-teal-60:#40aabf;--amplify-colors-teal-80:#047d95;--amplify-colors-teal-90:#056;--amplify-colors-teal-100:#00404d;--amplify-colors-blue-10:#e6eefe;--amplify-colors-blue-20:#b8cef9;--amplify-colors-blue-40:#7da1e8;--amplify-colors-blue-60:#406abf;--amplify-colors-blue-80:#043495;--amplify-colors-blue-90:#026;--amplify-colors-blue-100:#001a4d;--amplify-colors-purple-10:#fee6fe;--amplify-colors-purple-20:#f9b8f9;--amplify-colors-purple-40:#e87de8;--amplify-colors-purple-60:#bf40bf;--amplify-colors-purple-80:#950495;--amplify-colors-purple-90:#606;--amplify-colors-purple-100:#4d004d;--amplify-colors-pink-10:#fee6ee;--amplify-colors-pink-20:#fbb6cd;--amplify-colors-pink-40:#e87da1;--amplify-colors-pink-60:#bf406a;--amplify-colors-pink-80:#950434;--amplify-colors-pink-90:#602;--amplify-colors-pink-100:#4d001a;--amplify-colors-neutral-10:#fafafa;--amplify-colors-neutral-20:#eff0f0;--amplify-colors-neutral-40:#dcdee0;--amplify-colors-neutral-60:#89949f;--amplify-colors-neutral-80:#5c6670;--amplify-colors-neutral-90:#304050;--amplify-colors-neutral-100:#0d1a26;--amplify-colors-brand-primary-10:var(--amplify-colors-teal-10);--amplify-colors-brand-primary-20:var(--amplify-colors-teal-20);--amplify-colors-brand-primary-40:var(--amplify-colors-teal-40);--amplify-colors-brand-primary-60:var(--amplify-colors-teal-60);--amplify-colors-brand-primary-80:var(--amplify-colors-teal-80);--amplify-colors-brand-primary-90:var(--amplify-colors-teal-90);--amplify-colors-brand-primary-100:var(--amplify-colors-teal-100);--amplify-colors-brand-secondary-10:var(--amplify-colors-purple-10);--amplify-colors-brand-secondary-20:var(--amplify-colors-purple-20);--amplify-colors-brand-secondary-40:var(--amplify-colors-purple-40);--amplify-colors-brand-secondary-60:var(--amplify-colors-purple-60);--amplify-colors-brand-secondary-80:var(--amplify-colors-purple-80);--amplify-colors-brand-secondary-90:var(--amplify-colors-purple-90);--amplify-colors-brand-secondary-100:var(--amplify-colors-purple-100);--amplify-colors-font-primary:var(--amplify-colors-neutral-100);--amplify-colors-font-secondary:var(--amplify-colors-neutral-90);--amplify-colors-font-tertiary:var(--amplify-colors-neutral-80);--amplify-colors-font-disabled:var(--amplify-colors-neutral-60);--amplify-colors-font-inverse:var(--amplify-colors-white);--amplify-colors-font-interactive:var(--amplify-colors-brand-primary-80);--amplify-colors-font-hover:var(--amplify-colors-brand-primary-90);--amplify-colors-font-focus:var(--amplify-colors-brand-primary-100);--amplify-colors-font-active:var(--amplify-colors-brand-primary-100);--amplify-colors-font-info:var(--amplify-colors-blue-90);--amplify-colors-font-warning:var(--amplify-colors-orange-90);--amplify-colors-font-error:var(--amplify-colors-red-90);--amplify-colors-font-success:var(--amplify-colors-green-90);--amplify-colors-background-primary:var(--amplify-colors-white);--amplify-colors-background-secondary:var(--amplify-colors-neutral-10);--amplify-colors-background-tertiary:var(--amplify-colors-neutral-20);--amplify-colors-background-quaternary:var(--amplify-colors-neutral-60);--amplify-colors-background-disabled:var(--amplify-colors-background-tertiary);--amplify-colors-background-info:var(--amplify-colors-blue-20);--amplify-colors-background-warning:var(--amplify-colors-orange-20);--amplify-colors-background-error:var(--amplify-colors-red-20);--amplify-colors-background-success:var(--amplify-colors-green-20);--amplify-colors-border-primary:var(--amplify-colors-neutral-60);--amplify-colors-border-secondary:var(--amplify-colors-neutral-40);--amplify-colors-border-tertiary:var(--amplify-colors-neutral-20);--amplify-colors-border-disabled:var(--amplify-colors-border-tertiary);--amplify-colors-border-pressed:var(--amplify-colors-brand-primary-100);--amplify-colors-border-focus:var(--amplify-colors-brand-primary-100);--amplify-colors-border-error:var(--amplify-colors-red-80);--amplify-colors-shadow-primary:#0d1a2640;--amplify-colors-shadow-secondary:#0d1a2626;--amplify-colors-shadow-tertiary:#0d1a260d;--amplify-colors-overlay-10:#0000001a;--amplify-colors-overlay-20:#0003;--amplify-colors-overlay-30:#0000004d;--amplify-colors-overlay-40:#0006;--amplify-colors-overlay-50:#00000080;--amplify-colors-overlay-60:#0009;--amplify-colors-overlay-70:#000000b3;--amplify-colors-overlay-80:#000c;--amplify-colors-overlay-90:#000000e6;--amplify-colors-black:#000;--amplify-colors-white:#fff;--amplify-colors-transparent:transparent;--amplify-fonts-default-variable:"InterVariable","Inter var","Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",Oxygen,Ubuntu,Cantarell,"Open Sans",sans-serif;--amplify-fonts-default-static:"Inter",-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",Oxygen,Ubuntu,Cantarell,"Open Sans",sans-serif;--amplify-font-sizes-xxxs:.375rem;--amplify-font-sizes-xxs:.5rem;--amplify-font-sizes-xs:.75rem;--amplify-font-sizes-small:.875rem;--amplify-font-sizes-medium:1rem;--amplify-font-sizes-large:1.25rem;--amplify-font-sizes-xl:1.5rem;--amplify-font-sizes-xxl:2rem;--amplify-font-sizes-xxxl:2.5rem;--amplify-font-sizes-xxxxl:3rem;--amplify-font-weights-hairline:100;--amplify-font-weights-thin:200;--amplify-font-weights-light:300;--amplify-font-weights-normal:400;--amplify-font-weights-medium:500;--amplify-font-weights-semibold:600;--amplify-font-weights-bold:700;--amplify-font-weights-extrabold:800;--amplify-font-weights-black:900;--amplify-line-heights-small:1.25;--amplify-line-heights-medium:1.5;--amplify-line-heights-large:2;--amplify-opacities-0:0;--amplify-opacities-10:.1;--amplify-opacities-20:.2;--amplify-opacities-30:.3;--amplify-opacities-40:.4;--amplify-opacities-50:.5;--amplify-opacities-60:.6;--amplify-opacities-70:.7;--amplify-opacities-80:.8;--amplify-opacities-90:.9;--amplify-opacities-100:1;--amplify-outline-offsets-small:1px;--amplify-outline-offsets-medium:2px;--amplify-outline-offsets-large:3px;--amplify-outline-widths-small:1px;--amplify-outline-widths-medium:2px;--amplify-outline-widths-large:3px;--amplify-radii-xs:.125rem;--amplify-radii-small:.25rem;--amplify-radii-medium:.5rem;--amplify-radii-large:1rem;--amplify-radii-xl:2rem;--amplify-radii-xxl:4rem;--amplify-radii-xxxl:8rem;--amplify-shadows-small:0px 2px 4px var(--amplify-colors-shadow-tertiary);--amplify-shadows-medium:0px 2px 6px var(--amplify-colors-shadow-secondary);--amplify-shadows-large:0px 4px 12px var(--amplify-colors-shadow-primary);--amplify-space-zero:0;--amplify-space-xxxs:.25rem;--amplify-space-xxs:.375rem;--amplify-space-xs:.5rem;--amplify-space-small:.75rem;--amplify-space-medium:1rem;--amplify-space-large:1.5rem;--amplify-space-xl:2rem;--amplify-space-xxl:3rem;--amplify-space-xxxl:4.5rem;--amplify-space-relative-xxxs:.25em;--amplify-space-relative-xxs:.375em;--amplify-space-relative-xs:.5em;--amplify-space-relative-small:.75em;--amplify-space-relative-medium:1em;--amplify-space-relative-large:1.5em;--amplify-space-relative-xl:2em;--amplify-space-relative-xxl:3em;--amplify-space-relative-xxxl:4.5em;--amplify-space-relative-full:100%;--amplify-time-short:.1s;--amplify-time-medium:.25s;--amplify-time-long:.5s;--amplify-transforms-slide-x-small:translateX(.5em);--amplify-transforms-slide-x-medium:translateX(1em);--amplify-transforms-slide-x-large:translateX(2em)}html,[data-amplify-theme]{font-family:var(--amplify-fonts-default-static)}@supports (font-variation-settings:normal){html,[data-amplify-theme]{font-family:var(--amplify-fonts-default-variable)}}html:focus-within{scroll-behavior:smooth}*{box-sizing:border-box}input,button,textarea,select{font:inherit}@media (prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}}[class*=amplify]{all:unset;box-sizing:border-box}.amplify-flex{align-content:var(--amplify-components-flex-align-content);align-items:var(--amplify-components-flex-align-items);flex-wrap:var(--amplify-components-flex-flex-wrap);gap:var(--amplify-components-flex-gap);justify-content:var(--amplify-components-flex-justify-content);display:flex}.amplify-grid{display:grid}.amplify-scrollview{display:block;overflow:auto}.amplify-scrollview--horizontal{overflow-x:scroll;overflow-y:initial}.amplify-scrollview--vertical{overflow-x:initial;overflow-y:scroll}.amplify-text{color:var(--amplify-components-text-color);display:block}b.amplify-text,em.amplify-text,i.amplify-text,span.amplify-text,strong.amplify-text{display:inline}.amplify-text--truncated{max-width:100%;text-overflow:ellipsis;white-space:nowrap;display:inline-block;overflow:hidden}.amplify-text--primary{color:var(--amplify-components-text-primary-color)}.amplify-text--secondary{color:var(--amplify-components-text-secondary-color)}.amplify-text--tertiary{color:var(--amplify-components-text-tertiary-color)}.amplify-text--error{color:var(--amplify-components-text-error-color)}.amplify-text--info{color:var(--amplify-components-text-info-color)}.amplify-text--success{color:var(--amplify-components-text-success-color)}.amplify-text--warning{color:var(--amplify-components-text-warning-color)}.amplify-badge{background-color:var(--amplify-components-badge-background-color);border-radius:var(--amplify-components-badge-border-radius);color:var(--amplify-components-badge-color);font-size:var(--amplify-components-badge-font-size);font-weight:var(--amplify-components-badge-font-weight);line-height:var(--amplify-components-badge-line-height);padding:var(--amplify-components-badge-padding-vertical)var(--amplify-components-badge-padding-horizontal);text-align:var(--amplify-components-badge-text-align);display:inline-flex}.amplify-badge--info{color:var(--amplify-components-badge-info-color);background-color:var(--amplify-components-badge-info-background-color)}.amplify-badge--error{color:var(--amplify-components-badge-error-color);background-color:var(--amplify-components-badge-error-background-color)}.amplify-badge--warning{color:var(--amplify-components-badge-warning-color);background-color:var(--amplify-components-badge-warning-background-color)}.amplify-badge--success{color:var(--amplify-components-badge-success-color);background-color:var(--amplify-components-badge-success-background-color)}.amplify-badge--small{font-size:var(--amplify-components-badge-small-font-size);padding:var(--amplify-components-badge-small-padding-vertical)var(--amplify-components-badge-small-padding-horizontal)}.amplify-badge--large{font-size:var(--amplify-components-badge-large-font-size);padding:var(--amplify-components-badge-large-padding-vertical)var(--amplify-components-badge-large-padding-horizontal)}.amplify-button{border-color:var(--amplify-components-button-border-color);border-radius:var(--amplify-components-button-border-radius);border-style:var(--amplify-components-button-border-style);border-width:var(--amplify-components-button-border-width);box-sizing:border-box;color:var(--amplify-components-button-color);cursor:pointer;font-size:var(--amplify-components-button-font-size);font-weight:var(--amplify-components-button-font-weight);line-height:var(--amplify-components-button-line-height);-webkit-padding-before:var(--amplify-components-button-padding-block-start);-webkit-padding-after:var(--amplify-components-button-padding-block-end);-webkit-padding-start:var(--amplify-components-button-padding-inline-start);-webkit-padding-end:var(--amplify-components-button-padding-inline-end);transition:all var(--amplify-components-button-transition-duration);-webkit-user-select:none;user-select:none;--amplify-internal-button-disabled-color:var(--amplify-components-button-disabled-color);--amplify-internal-button-disabled-background-color:var(--amplify-components-button-disabled-background-color);--amplify-internal-button-disabled-border-color:var(--amplify-components-button-disabled-border-color);--amplify-internal-button-disabled-text-decoration:initial;--amplify-internal-button-loading-background-color:var(--amplify-components-button-loading-background-color);--amplify-internal-button-loading-border-color:var(--amplify-components-button-loading-border-color);--amplify-internal-button-loading-color:var(--amplify-components-button-loading-color);--amplify-internal-button-loading-text-decoration:initial;justify-content:center;align-items:center;padding-block-start:var(--amplify-components-button-padding-block-start);padding-block-end:var(--amplify-components-button-padding-block-end);padding-inline-start:var(--amplify-components-button-padding-inline-start);padding-inline-end:var(--amplify-components-button-padding-inline-end);display:inline-flex}.amplify-button:hover{background-color:var(--amplify-components-button-hover-background-color);border-color:var(--amplify-components-button-hover-border-color);color:var(--amplify-components-button-hover-color)}.amplify-button:focus{background-color:var(--amplify-components-button-hover-background-color);border-color:var(--amplify-components-button-focus-border-color);color:var(--amplify-components-button-focus-color);box-shadow:var(--amplify-components-button-focus-box-shadow)}.amplify-button:active{background-color:var(--amplify-components-button-active-background-color);border-color:var(--amplify-components-button-active-border-color);color:var(--amplify-components-button-active-color)}.amplify-button--fullwidth{width:100%}.amplify-button--menu{border-width:var(--amplify-components-button-menu-border-width);background-color:var(--amplify-components-button-menu-background-color);justify-content:var(--amplify-components-button-menu-justify-content);--amplify-internal-button-disabled-color:var(--amplify-components-button-menu-disabled-color)}.amplify-button--menu:hover{color:var(--amplify-components-button-menu-hover-color);background-color:var(--amplify-components-button-menu-hover-background-color)}.amplify-button--menu:focus{box-shadow:none;color:var(--amplify-components-button-menu-focus-color);background-color:var(--amplify-components-button-menu-focus-background-color)}.amplify-button--menu:active{color:var(--amplify-components-button-menu-active-color);background-color:var(--amplify-components-button-menu-active-background-color)}.amplify-button--primary{border-width:var(--amplify-components-button-primary-border-width);background-color:var(--amplify-components-button-primary-background-color);border-color:var(--amplify-components-button-primary-border-color);color:var(--amplify-components-button-primary-color);--amplify-internal-button-disabled-border-color:var(--amplify-components-button-primary-disabled-border-color);--amplify-internal-button-disabled-background-color:var(--amplify-components-button-primary-disabled-background-color);--amplify-internal-button-disabled-color:var(--amplify-components-button-primary-disabled-color);--amplify-internal-button-loading-background-color:var(--amplify-components-button-primary-loading-background-color);--amplify-internal-button-loading-border-color:var(--amplify-components-button-primary-loading-border-color);--amplify-internal-button-loading-color:var(--amplify-components-button-primary-loading-color)}.amplify-button--primary:hover{background-color:var(--amplify-components-button-primary-hover-background-color);border-color:var(--amplify-components-button-primary-hover-border-color);color:var(--amplify-components-button-primary-hover-color)}.amplify-button--primary:focus{background-color:var(--amplify-components-button-primary-focus-background-color);border-color:var(--amplify-components-button-primary-focus-border-color);color:var(--amplify-components-button-primary-focus-color);box-shadow:var(--amplify-components-button-primary-focus-box-shadow)}.amplify-button--primary:active{background-color:var(--amplify-components-button-primary-active-background-color);border-color:var(--amplify-components-button-primary-active-border-color);color:var(--amplify-components-button-primary-active-color)}.amplify-button--link{border-width:var(--amplify-components-button-link-border-width);background-color:var(--amplify-components-button-link-background-color);color:var(--amplify-components-button-link-color);--amplify-internal-button-disabled-text-decoration:none;--amplify-internal-button-disabled-border-color:var(--amplify-components-button-link-disabled-border-color);--amplify-internal-button-disabled-background-color:var(--amplify-components-button-link-disabled-background-color);--amplify-internal-button-disabled-color:var(--amplify-components-button-link-disabled-color);--amplify-internal-button-loading-background-color:var(--amplify-components-button-link-loading-background-color);--amplify-internal-button-loading-border-color:var(--amplify-components-button-link-loading-border-color);--amplify-internal-button-loading-color:var(--amplify-components-button-link-loading-color);--amplify-internal-button-loading-text-decoration:none}.amplify-button--link:hover{background-color:var(--amplify-components-button-link-hover-background-color);border-color:var(--amplify-components-button-link-hover-border-color);color:var(--amplify-components-button-link-hover-color)}.amplify-button--link:focus{background-color:var(--amplify-components-button-link-focus-background-color);border-color:var(--amplify-components-button-link-focus-border-color);color:var(--amplify-components-button-link-focus-color);box-shadow:var(--amplify-components-button-link-focus-box-shadow)}.amplify-button--link:active{background-color:var(--amplify-components-button-link-active-background-color);border-color:var(--amplify-components-button-link-active-border-color);color:var(--amplify-components-button-link-active-color)}.amplify-button--destructive{border-width:var(--amplify-components-button-destructive-border-width);background-color:var(--amplify-components-button-destructive-background-color);border-color:var(--amplify-components-button-destructive-border-color);color:var(--amplify-components-button-destructive-color);--amplify-internal-button-disabled-border-color:var(--amplify-components-button-destructive-disabled-border-color);--amplify-internal-button-disabled-background-color:var(--amplify-components-button-destructive-disabled-background-color);--amplify-internal-button-disabled-color:var(--amplify-components-button-destructive-disabled-color);--amplify-internal-button-loading-background-color:var(--amplify-components-button-destructive-loading-background-color);--amplify-internal-button-loading-border-color:var(--amplify-components-button-destructive-loading-border-color);--amplify-internal-button-loading-color:var(--amplify-components-button-destructive-loading-color)}.amplify-button--destructive:hover{background-color:var(--amplify-components-button-destructive-hover-background-color);border-color:var(--amplify-components-button-destructive-hover-border-color);color:var(--amplify-components-button-destructive-hover-color)}.amplify-button--destructive:focus{background-color:var(--amplify-components-button-destructive-focus-background-color);border-color:var(--amplify-components-button-destructive-focus-border-color);color:var(--amplify-components-button-destructive-focus-color);box-shadow:var(--amplify-components-button-destructive-focus-box-shadow)}.amplify-button--destructive:active{background-color:var(--amplify-components-button-destructive-active-background-color);border-color:var(--amplify-components-button-destructive-active-border-color);color:var(--amplify-components-button-destructive-active-color)}.amplify-button--warning{background-color:var(--amplify-components-button-warning-background-color);border-color:var(--amplify-components-button-warning-border-color);border-width:var(--amplify-components-button-warning-border-width);color:var(--amplify-components-button-warning-color);--amplify-internal-button-disabled-text-decoration:none;--amplify-internal-button-disabled-border-color:var(--amplify-components-button-warning-disabled-border-color);--amplify-internal-button-disabled-background-color:var(--amplify-components-button-warning-disabled-background-color);--amplify-internal-button-disabled-color:var(--amplify-components-button-warning-disabled-color);--amplify-internal-button-loading-background-color:var(--amplify-components-button-warning-loading-background-color);--amplify-internal-button-loading-border-color:var(--amplify-components-button-warning-loading-border-color);--amplify-internal-button-loading-color:var(--amplify-components-button-warning-loading-color);--amplify-internal-button-loading-text-decoration:none}.amplify-button--warning:hover{background-color:var(--amplify-components-button-warning-hover-background-color);border-color:var(--amplify-components-button-warning-hover-border-color);color:var(--amplify-components-button-warning-hover-color)}.amplify-button--warning:focus{background-color:var(--amplify-components-button-warning-focus-background-color);border-color:var(--amplify-components-button-warning-focus-border-color);color:var(--amplify-components-button-warning-focus-color);box-shadow:var(--amplify-components-button-warning-focus-box-shadow)}.amplify-button--warning:active{background-color:var(--amplify-components-button-warning-active-background-color);border-color:var(--amplify-components-button-warning-active-border-color);color:var(--amplify-components-button-warning-active-color)}.amplify-button--small{font-size:var(--amplify-components-button-small-font-size);-webkit-padding-before:var(--amplify-components-button-small-padding-block-start);-webkit-padding-after:var(--amplify-components-button-small-padding-block-end);-webkit-padding-start:var(--amplify-components-button-small-padding-inline-start);-webkit-padding-end:var(--amplify-components-button-small-padding-inline-end);padding-block-start:var(--amplify-components-button-small-padding-block-start);padding-block-end:var(--amplify-components-button-small-padding-block-end);padding-inline-start:var(--amplify-components-button-small-padding-inline-start);padding-inline-end:var(--amplify-components-button-small-padding-inline-end)}.amplify-button--large{font-size:var(--amplify-components-button-large-font-size);-webkit-padding-before:var(--amplify-components-button-large-padding-block-start);-webkit-padding-after:var(--amplify-components-button-large-padding-block-end);-webkit-padding-start:var(--amplify-components-button-large-padding-inline-start);-webkit-padding-end:var(--amplify-components-button-large-padding-inline-end);padding-block-start:var(--amplify-components-button-large-padding-block-start);padding-block-end:var(--amplify-components-button-large-padding-block-end);padding-inline-start:var(--amplify-components-button-large-padding-inline-start);padding-inline-end:var(--amplify-components-button-large-padding-inline-end)}.amplify-button--disabled{background-color:var(--amplify-internal-button-disabled-background-color);border-color:var(--amplify-internal-button-disabled-border-color);color:var(--amplify-internal-button-disabled-color);-webkit-text-decoration:var(--amplify-internal-button-disabled-text-decoration);-webkit-text-decoration:var(--amplify-internal-button-disabled-text-decoration);-webkit-text-decoration:var(--amplify-internal-button-disabled-text-decoration);text-decoration:var(--amplify-internal-button-disabled-text-decoration);cursor:not-allowed}.amplify-button--disabled:hover,.amplify-button--disabled :focus,.amplify-button--disabled:active{background-color:var(--amplify-internal-button-disabled-background-color);border-color:var(--amplify-internal-button-disabled-border-color);color:var(--amplify-internal-button-disabled-color);-webkit-text-decoration:var(--amplify-internal-button-disabled-text-decoration);-webkit-text-decoration:var(--amplify-internal-button-disabled-text-decoration);-webkit-text-decoration:var(--amplify-internal-button-disabled-text-decoration);text-decoration:var(--amplify-internal-button-disabled-text-decoration)}.amplify-button--loading,.amplify-button--loading:hover,.amplify-button--loading:focus,.amplify-button--loading:active{background-color:var(--amplify-internal-button-loading-background-color);border-color:var(--amplify-internal-button-loading-border-color);color:var(--amplify-components-button-loading-color);-webkit-text-decoration:var(--amplify-internal-button-loading-text-decoration);-webkit-text-decoration:var(--amplify-internal-button-loading-text-decoration);-webkit-text-decoration:var(--amplify-internal-button-loading-text-decoration);text-decoration:var(--amplify-internal-button-loading-text-decoration)}.amplify-button__loader-wrapper{align-items:var(--amplify-components-button-loader-wrapper-align-items);gap:var(--amplify-components-button-loader-wrapper-gap)}@media (prefers-reduced-motion:reduce){.amplify-button{transition:none}}.amplify-field__description{color:var(--amplify-components-fieldmessages-description-color);font-style:var(--amplify-components-fieldmessages-description-font-style);font-size:var(--amplify-components-fieldmessages-description-font-size)}.amplify-field__error-message{color:var(--amplify-components-fieldmessages-error-color);font-size:var(--amplify-components-fieldmessages-error-font-size)}.amplify-heading{color:var(--amplify-components-heading-color);line-height:var(--amplify-components-heading-line-height);display:block}.amplify-heading--truncated{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.amplify-heading--1{font-size:var(--amplify-components-heading-1-font-size);font-weight:var(--amplify-components-heading-1-font-weight)}.amplify-heading--2{font-size:var(--amplify-components-heading-2-font-size);font-weight:var(--amplify-components-heading-2-font-weight)}.amplify-heading--3{font-size:var(--amplify-components-heading-3-font-size);font-weight:var(--amplify-components-heading-3-font-weight)}.amplify-heading--4{font-size:var(--amplify-components-heading-4-font-size);font-weight:var(--amplify-components-heading-4-font-weight)}.amplify-heading--5{font-size:var(--amplify-components-heading-5-font-size);font-weight:var(--amplify-components-heading-5-font-weight)}.amplify-heading--6{font-size:var(--amplify-components-heading-6-font-size);font-weight:var(--amplify-components-heading-6-font-weight)}.amplify-icon{vertical-align:middle;fill:currentColor;height:var(--amplify-components-icon-height);line-height:var(--amplify-components-icon-line-height);display:inline-block}.amplify-icon>svg{height:var(--amplify-components-icon-height);width:var(--amplify-components-icon-height)}.amplify-highlightmatch__highlighted{font-weight:var(--amplify-components-highlightmatch-highlighted-font-weight)}.amplify-input{box-sizing:border-box;color:var(--amplify-components-fieldcontrol-color);font-size:var(--amplify-components-fieldcontrol-font-size);line-height:var(--amplify-components-fieldcontrol-line-height);-webkit-padding-before:var(--amplify-components-fieldcontrol-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-padding-inline-end);transition:all var(--amplify-components-fieldcontrol-transition-duration);width:100%;border-color:var(--amplify-components-fieldcontrol-border-color);border-radius:var(--amplify-components-fieldcontrol-border-radius);border-style:var(--amplify-components-fieldcontrol-border-style);border-width:var(--amplify-components-fieldcontrol-border-width);outline-color:var(--amplify-components-fieldcontrol-outline-color);outline-style:var(--amplify-components-fieldcontrol-outline-style);outline-width:var(--amplify-components-fieldcontrol-outline-width);outline-offset:var(--amplify-components-fieldcontrol-outline-offset);-webkit-user-select:text;user-select:text;padding-block-start:var(--amplify-components-fieldcontrol-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-padding-inline-end);display:inline-flex}.amplify-input:focus{border-color:var(--amplify-components-fieldcontrol-focus-border-color);box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow)}.amplify-input--small{font-size:var(--amplify-components-fieldcontrol-small-font-size);-webkit-padding-before:var(--amplify-components-fieldcontrol-small-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-small-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-small-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-small-padding-inline-end);padding-block-start:var(--amplify-components-fieldcontrol-small-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-small-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-small-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-small-padding-inline-end)}.amplify-input--large{font-size:var(--amplify-components-fieldcontrol-large-font-size);-webkit-padding-before:var(--amplify-components-fieldcontrol-large-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-large-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-large-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-large-padding-inline-end);padding-block-start:var(--amplify-components-fieldcontrol-large-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-large-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-large-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-large-padding-inline-end)}.amplify-input--error{border-color:var(--amplify-components-fieldcontrol-error-border-color)}.amplify-input--error:focus{border-color:var(--amplify-components-fieldcontrol-error-border-color);box-shadow:var(--amplify-components-fieldcontrol-error-focus-box-shadow)}.amplify-input[disabled]{color:var(--amplify-components-fieldcontrol-disabled-color);cursor:var(--amplify-components-fieldcontrol-disabled-cursor);border-color:var(--amplify-components-fieldcontrol-disabled-border-color);background-color:var(--amplify-components-fieldcontrol-disabled-background-color)}.amplify-input--quiet{-webkit-border-before:var(--amplify-components-fieldcontrol-quiet-border-block-start);border-block-start:var(--amplify-components-fieldcontrol-quiet-border-block-start);-webkit-border-start:var(--amplify-components-fieldcontrol-quiet-border-inline-start);border-inline-start:var(--amplify-components-fieldcontrol-quiet-border-inline-start);-webkit-border-end:var(--amplify-components-fieldcontrol-quiet-border-inline-end);border-inline-end:var(--amplify-components-fieldcontrol-quiet-border-inline-end);border-radius:var(--amplify-components-fieldcontrol-quiet-border-radius)}.amplify-input--quiet:focus{border-block-end-color:var(--amplify-components-fieldcontrol-quiet-focus-border-block-end-color);box-shadow:var(--amplify-components-fieldcontrol-quiet-focus-box-shadow)}.amplify-input--quiet[aria-invalid=true]{border-block-end-color:var(--amplify-components-fieldcontrol-quiet-error-border-block-end-color)}.amplify-input--quiet[aria-invalid=true]:focus{box-shadow:var(--amplify-components-fieldcontrol-quiet-error-focus-box-shadow)}.amplify-textarea{box-sizing:border-box;color:var(--amplify-components-fieldcontrol-color);font-size:var(--amplify-components-fieldcontrol-font-size);line-height:var(--amplify-components-fieldcontrol-line-height);-webkit-padding-before:var(--amplify-components-fieldcontrol-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-padding-inline-end);transition:all var(--amplify-components-fieldcontrol-transition-duration);width:100%;border-color:var(--amplify-components-fieldcontrol-border-color);border-radius:var(--amplify-components-fieldcontrol-border-radius);border-style:var(--amplify-components-fieldcontrol-border-style);border-width:var(--amplify-components-fieldcontrol-border-width);outline-color:var(--amplify-components-fieldcontrol-outline-color);outline-style:var(--amplify-components-fieldcontrol-outline-style);outline-width:var(--amplify-components-fieldcontrol-outline-width);outline-offset:var(--amplify-components-fieldcontrol-outline-offset);-webkit-user-select:text;user-select:text;white-space:pre-wrap;padding-block-start:var(--amplify-components-fieldcontrol-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-padding-inline-end)}.amplify-textarea:focus{border-color:var(--amplify-components-fieldcontrol-focus-border-color);box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow)}.amplify-textarea--small{font-size:var(--amplify-components-fieldcontrol-small-font-size);-webkit-padding-before:var(--amplify-components-fieldcontrol-small-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-small-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-small-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-small-padding-inline-end);padding-block-start:var(--amplify-components-fieldcontrol-small-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-small-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-small-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-small-padding-inline-end)}.amplify-textarea--large{font-size:var(--amplify-components-fieldcontrol-large-font-size);-webkit-padding-before:var(--amplify-components-fieldcontrol-large-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-large-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-large-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-large-padding-inline-end);padding-block-start:var(--amplify-components-fieldcontrol-large-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-large-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-large-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-large-padding-inline-end)}.amplify-textarea--error{border-color:var(--amplify-components-fieldcontrol-error-border-color)}.amplify-textarea--error:focus{border-color:var(--amplify-components-fieldcontrol-error-border-color);box-shadow:var(--amplify-components-fieldcontrol-error-focus-box-shadow)}.amplify-textarea[disabled]{color:var(--amplify-components-fieldcontrol-disabled-color);cursor:var(--amplify-components-fieldcontrol-disabled-cursor);border-color:var(--amplify-components-fieldcontrol-disabled-border-color);background-color:var(--amplify-components-fieldcontrol-disabled-background-color)}.amplify-textarea--quiet{-webkit-border-before:var(--amplify-components-fieldcontrol-quiet-border-block-start);border-block-start:var(--amplify-components-fieldcontrol-quiet-border-block-start);-webkit-border-start:var(--amplify-components-fieldcontrol-quiet-border-inline-start);border-inline-start:var(--amplify-components-fieldcontrol-quiet-border-inline-start);-webkit-border-end:var(--amplify-components-fieldcontrol-quiet-border-inline-end);border-inline-end:var(--amplify-components-fieldcontrol-quiet-border-inline-end);border-radius:var(--amplify-components-fieldcontrol-quiet-border-radius)}.amplify-textarea--quiet:focus{border-block-end-color:var(--amplify-components-fieldcontrol-quiet-focus-border-block-end-color);box-shadow:var(--amplify-components-fieldcontrol-quiet-focus-box-shadow)}.amplify-textarea--quiet[aria-invalid=true]{border-block-end-color:var(--amplify-components-fieldcontrol-quiet-error-border-block-end-color)}.amplify-textarea--quiet[aria-invalid=true]:focus{box-shadow:var(--amplify-components-fieldcontrol-quiet-error-focus-box-shadow)}.amplify-image{height:var(--amplify-components-image-height);max-width:var(--amplify-components-image-max-width);-o-object-fit:var(--amplify-components-image-object-fit);object-fit:var(--amplify-components-image-object-fit);-o-object-position:var(--amplify-components-image-object-position);object-position:var(--amplify-components-image-object-position);overflow:clip}.amplify-link{color:var(--amplify-components-link-color);-webkit-text-decoration:var(--amplify-components-link-text-decoration);-webkit-text-decoration:var(--amplify-components-link-text-decoration);-webkit-text-decoration:var(--amplify-components-link-text-decoration);text-decoration:var(--amplify-components-link-text-decoration);cursor:pointer}.amplify-link:visited{color:var(--amplify-components-link-visited-color);-webkit-text-decoration:var(--amplify-components-link-visited-text-decoration);-webkit-text-decoration:var(--amplify-components-link-visited-text-decoration);-webkit-text-decoration:var(--amplify-components-link-visited-text-decoration);text-decoration:var(--amplify-components-link-visited-text-decoration)}.amplify-link:active{color:var(--amplify-components-link-active-color);-webkit-text-decoration:var(--amplify-components-link-active-text-decoration);-webkit-text-decoration:var(--amplify-components-link-active-text-decoration);-webkit-text-decoration:var(--amplify-components-link-active-text-decoration);text-decoration:var(--amplify-components-link-active-text-decoration)}.amplify-link:focus{color:var(--amplify-components-link-focus-color);-webkit-text-decoration:var(--amplify-components-link-focus-text-decoration);-webkit-text-decoration:var(--amplify-components-link-focus-text-decoration);-webkit-text-decoration:var(--amplify-components-link-focus-text-decoration);text-decoration:var(--amplify-components-link-focus-text-decoration)}.amplify-link:hover{color:var(--amplify-components-link-hover-color);-webkit-text-decoration:var(--amplify-components-link-hover-text-decoration);-webkit-text-decoration:var(--amplify-components-link-hover-text-decoration);-webkit-text-decoration:var(--amplify-components-link-hover-text-decoration);text-decoration:var(--amplify-components-link-hover-text-decoration)}.amplify-loader{width:var(--amplify-components-loader-width);height:var(--amplify-components-loader-height);font-size:var(--amplify-components-loader-font-size);fill:none;stroke:var(--amplify-components-loader-stroke-empty);--amplify-internal-loader-linear-font-size:var(--amplify-components-loader-linear-font-size);--amplify-internal-loader-linear-stroke-width:var(--amplify-components-loader-linear-stroke-width)}.amplify-loader circle:last-of-type{transform-origin:50%;animation-name:amplify-loader-circular;animation-timing-function:linear;animation-iteration-count:infinite;animation-duration:var(--amplify-components-loader-animation-duration);stroke:var(--amplify-components-loader-stroke-filled);stroke-linecap:var(--amplify-components-loader-stroke-linecap)}@media (prefers-reduced-motion){.amplify-loader circle:last-of-type{stroke-dasharray:100% 200%;stroke-dashoffset:50%;animation:none}}.amplify-loader line:last-of-type{stroke:var(--amplify-components-loader-linear-stroke-filled);stroke-dasharray:50% 200%;animation-name:amplify-loader-linear;animation-duration:var(--amplify-components-loader-linear-animation-duration);animation-timing-function:linear;animation-iteration-count:infinite}@media (prefers-reduced-motion){.amplify-loader line:last-of-type{stroke-dashoffset:-50%;animation:none}}.amplify-loader--small{width:var(--amplify-components-loader-small-width);height:var(--amplify-components-loader-small-height);font-size:var(--amplify-components-loader-small-font-size);--amplify-internal-loader-linear-stroke-width:var(--amplify-components-loader-linear-small-stroke-width);--amplify-internal-loader-linear-font-size:var(--amplify-components-loader-linear-small-font-size)}.amplify-loader--large{width:var(--amplify-components-loader-large-width);height:var(--amplify-components-loader-large-height);font-size:var(--amplify-components-loader-large-font-size);--amplify-internal-loader-linear-stroke-width:var(--amplify-components-loader-linear-large-stroke-width);--amplify-internal-loader-linear-font-size:var(--amplify-components-loader-linear-large-font-size)}.amplify-loader--linear{width:var(--amplify-components-loader-linear-width);min-width:var(--amplify-components-loader-linear-min-width);stroke:var(--amplify-components-loader-linear-stroke-empty);stroke-linecap:var(--amplify-components-loader-linear-stroke-linecap);stroke-width:var(--amplify-internal-loader-linear-stroke-width);font-size:var(--amplify-internal-loader-linear-font-size)}.amplify-loader--determinate circle:last-of-type{animation:none;transform:rotate(-90deg)}.amplify-loader--determinate line:last-of-type{stroke-dashoffset:0%;stroke-dasharray:none;animation:none}.amplify-loader__percentage-text{fill:var(--amplify-components-loader-text-fill);stroke:none}@keyframes amplify-loader-circular{0%{stroke-dasharray:100% 200%;transform:rotate(120deg)}50%{stroke-dasharray:20% 400%}to{stroke-dasharray:100% 200%;transform:rotate(480deg)}}@keyframes amplify-loader-linear{0%{stroke-dashoffset:200%}to{stroke-dashoffset:-50%}}.amplify-placeholder{animation-direction:alternate;animation-duration:var(--amplify-components-placeholder-transition-duration);border-radius:var(--amplify-components-placeholder-border-radius);height:var(--amplify-components-placeholder-default-height);width:100%;animation-name:amplify-placeholder-loading;animation-iteration-count:infinite;display:block}.amplify-placeholder--small{height:var(--amplify-components-placeholder-small-height)}.amplify-placeholder--large{height:var(--amplify-components-placeholder-large-height)}@keyframes amplify-placeholder-loading{0%{background-color:var(--amplify-components-placeholder-start-color)}to{background-color:var(--amplify-components-placeholder-end-color)}}@media (prefers-reduced-motion:reduce){.amplify-placeholder{background-color:var(--amplify-components-placeholder-end-color);animation:none}}[data-amplify-copy]{font-size:var(--amplify-components-copy-font-size);gap:var(--amplify-components-copy-gap);word-break:break-all;justify-content:center;align-items:center;display:flex}[data-amplify-copy-svg]{cursor:pointer;position:relative}[data-amplify-copy-svg] path{fill:var(--amplify-components-copy-svg-path-fill)}[data-amplify-copy-svg]:hover [data-amplify-copy-tooltip]{visibility:visible;font-size:var(--amplify-components-copy-tool-tip-font-size)}[data-amplify-copy-tooltip]{visibility:hidden;bottom:var(--amplify-components-copy-tool-tip-bottom);color:var(--amplify-components-copy-tool-tip-color);position:absolute}.amplify-alert{align-items:var(--amplify-components-alert-align-items);background-color:var(--amplify-components-alert-background-color);color:var(--amplify-components-alert-color);justify-content:var(--amplify-components-alert-justify-content);padding-block:var(--amplify-components-alert-padding-block);padding-inline:var(--amplify-components-alert-padding-inline)}.amplify-alert--info{color:var(--amplify-components-alert-info-color);background-color:var(--amplify-components-alert-info-background-color)}.amplify-alert--error{color:var(--amplify-components-alert-error-color);background-color:var(--amplify-components-alert-error-background-color)}.amplify-alert--warning{color:var(--amplify-components-alert-warning-color);background-color:var(--amplify-components-alert-warning-background-color)}.amplify-alert--success{color:var(--amplify-components-alert-success-color);background-color:var(--amplify-components-alert-success-background-color)}.amplify-alert__icon{font-size:var(--amplify-components-alert-icon-size)}.amplify-alert__heading{font-weight:var(--amplify-components-alert-heading-font-weight);font-size:var(--amplify-components-alert-heading-font-size);display:block}.amplify-alert__body{color:inherit;display:block}.amplify-alert__dismiss{color:inherit}.amplify-autocomplete__menu__option,.amplify-autocomplete__menu--loading,.amplify-autocomplete__menu--empty{padding-block:var(--amplify-components-autocomplete-menu-space-shared-padding-block);padding-inline:var(--amplify-components-autocomplete-menu-space-shared-padding-inline)}.amplify-autocomplete{display:block;position:relative}.amplify-autocomplete__menu{z-index:999999;width:var(--amplify-components-autocomplete-menu-width);-webkit-margin-before:var(--amplify-components-autocomplete-menu-margin-block-start);background-color:var(--amplify-components-autocomplete-menu-background-color);border-color:var(--amplify-components-autocomplete-menu-border-color);border-width:var(--amplify-components-autocomplete-menu-border-width);border-style:var(--amplify-components-autocomplete-menu-border-style);border-radius:var(--amplify-components-autocomplete-menu-border-radius);margin-block-start:var(--amplify-components-autocomplete-menu-margin-block-start);position:absolute}.amplify-autocomplete__menu--empty{display:var(--amplify-components-autocomplete-menu-empty-display)}.amplify-autocomplete__menu--loading{display:var(--amplify-components-autocomplete-menu-loading-display);align-items:var(--amplify-components-autocomplete-menu-loading-align-items);gap:var(--amplify-components-autocomplete-menu-loading-gap)}.amplify-autocomplete__menu__options{overscroll-behavior:contain;display:var(--amplify-components-autocomplete-menu-options-display);flex-direction:var(--amplify-components-autocomplete-menu-options-flex-direction);max-height:var(--amplify-components-autocomplete-menu-options-max-height);position:relative}.amplify-autocomplete__menu__option{background-color:var(--amplify-components-autocomplete-menu-option-background-color);color:var(--amplify-components-autocomplete-menu-option-color);cursor:var(--amplify-components-autocomplete-menu-option-cursor);transition-duration:var(--amplify-components-autocomplete-menu-option-transition-duration);transition-property:var(--amplify-components-autocomplete-menu-option-transition-property);transition-timing-function:var(--amplify-components-autocomplete-menu-option-transition-timing-function)}.amplify-autocomplete__menu__option--active{background-color:var(--amplify-components-autocomplete-menu-option-active-background-color);color:var(--amplify-components-autocomplete-menu-option-active-color)}[data-amplify-authenticator]{display:grid}[data-amplify-authenticator][data-variation=modal]{width:var(--amplify-components-authenticator-modal-width);height:var(--amplify-components-authenticator-modal-height);background-color:var(--amplify-components-authenticator-modal-background-color);top:var(--amplify-components-authenticator-modal-top);left:var(--amplify-components-authenticator-modal-left);z-index:1;position:fixed;overflow-y:auto}[data-amplify-authenticator] [data-amplify-container]{place-self:center}@media (min-width:30rem){[data-amplify-authenticator] [data-amplify-container]{width:var(--amplify-components-authenticator-container-width-max)}}[data-amplify-authenticator] [data-amplify-router]{background-color:var(--amplify-components-authenticator-router-background-color);box-shadow:var(--amplify-components-authenticator-router-box-shadow);border-color:var(--amplify-components-authenticator-router-border-color);border-width:var(--amplify-components-authenticator-router-border-width);border-style:var(--amplify-components-authenticator-router-border-style)}[data-amplify-authenticator] [data-amplify-footer]{padding-bottom:var(--amplify-components-authenticator-footer-padding-bottom);text-align:center}[data-amplify-authenticator] [data-amplify-form]{padding:var(--amplify-components-authenticator-form-padding)}[data-amplify-authenticator] [data-state=inactive]{background-color:var(--amplify-components-authenticator-state-inactive-background-color)}@media (max-width:26rem){[data-amplify-authenticator] [data-amplify-sign-up-errors]{font-size:.688rem}}.amplify-authenticator__column{flex-direction:column;display:flex}.amplify-authenticator__subtitle{margin-bottom:var(--amplify-space-medium)}.amplify-authenticator__heading{font-size:var(--amplify-font-sizes-xl)}.amplify-authenticator__federated-text{align-self:center}.amplify-card{background-color:var(--amplify-components-card-background-color);border-radius:var(--amplify-components-card-border-radius);border-width:var(--amplify-components-card-border-width);border-style:var(--amplify-components-card-border-style);border-color:var(--amplify-components-card-border-color);box-shadow:var(--amplify-components-card-box-shadow);padding:var(--amplify-components-card-padding);display:block}.amplify-card--outlined{background-color:var(--amplify-components-card-outlined-background-color);border-radius:var(--amplify-components-card-outlined-border-radius);border-width:var(--amplify-components-card-outlined-border-width);border-style:var(--amplify-components-card-outlined-border-style);border-color:var(--amplify-components-card-outlined-border-color);box-shadow:var(--amplify-components-card-outlined-box-shadow)}.amplify-card--elevated{background-color:var(--amplify-components-card-elevated-background-color);border-radius:var(--amplify-components-card-elevated-border-radius);border-width:var(--amplify-components-card-elevated-border-width);border-style:var(--amplify-components-card-elevated-border-style);border-color:var(--amplify-components-card-elevated-border-color);box-shadow:var(--amplify-components-card-elevated-box-shadow)}.amplify-collection{flex-direction:column}.amplify-collection-pagination{--amplify-components-pagination-current-color:var(--amplify-components-collection-pagination-current-color);--amplify-components-pagination-current-background-color:var(--amplify-components-collection-pagination-current-background-color);--amplify-components-pagination-button-color:var(--amplify-components-collection-pagination-button-color);--amplify-components-pagination-button-hover-color:var(--amplify-components-collection-pagination-button-hover-color);--amplify-components-pagination-button-hover-background-color:var(--amplify-components-collection-pagination-button-hover-background-color);--amplify-components-pagination-button-disabled-color:var(--amplify-components-collection-pagination-button-disabled-color);justify-content:center}.amplify-collection-search{--amplify-components-searchfield-input-color:var(--amplify-components-collection-search-input-color);--amplify-components-searchfield-button-color:var(--amplify-components-collection-search-button-color);--amplify-components-searchfield-button-active-background-color:var(--amplify-components-collection-search-button-active-background-color);--amplify-components-searchfield-button-active-border-color:var(--amplify-components-collection-search-button-active-border-color);--amplify-components-searchfield-button-active-color:var(--amplify-components-collection-search-button-active-color);--amplify-components-searchfield-button-disabled-background-color:var(--amplify-components-collection-search-button-disabled-background-color);--amplify-components-searchfield-button-disabled-border-color:var(--amplify-components-collection-search-button-disabled-border-color);--amplify-components-searchfield-button-disabled-color:var(--amplify-components-collection-search-button-disabled-color);--amplify-components-searchfield-button-focus-background-color:var(--amplify-components-collection-search-button-focus-background-color);--amplify-components-searchfield-button-focus-border-color:var(--amplify-components-collection-search-button-focus-border-color);--amplify-components-searchfield-button-focus-color:var(--amplify-components-collection-search-button-focus-color);--amplify-components-searchfield-button-hover-background-color:var(--amplify-components-collection-search-button-hover-background-color);--amplify-components-searchfield-button-hover-border-color:var(--amplify-components-collection-search-button-hover-border-color);--amplify-components-searchfield-button-hover-color:var(--amplify-components-collection-search-button-hover-color);flex-direction:row;justify-content:center}.amplify-checkbox{cursor:var(--amplify-components-checkbox-cursor);align-items:var(--amplify-components-checkbox-align-items);gap:inherit;flex-direction:row-reverse}.amplify-checkbox--disabled{cursor:var(--amplify-components-checkbox-disabled-cursor)}.amplify-checkbox__button{position:var(--amplify-components-checkbox-button-position);align-items:var(--amplify-components-checkbox-button-align-items);justify-content:var(--amplify-components-checkbox-button-justify-content);color:var(--amplify-components-checkbox-button-color);--amplify-internal-checkbox_button-focused-before-border-color:var(--amplify-components-checkbox-button-focus-border-color);--amplify-internal-checkbox_button-focused-before-box-shadow:var(--amplify-components-checkbox-button-focus-box-shadow)}.amplify-checkbox__button:before{content:"";box-sizing:border-box;width:var(--amplify-components-checkbox-button-before-width);height:var(--amplify-components-checkbox-button-before-height);border-width:var(--amplify-components-checkbox-button-before-border-width);border-radius:var(--amplify-components-checkbox-button-before-border-radius);border-style:var(--amplify-components-checkbox-button-before-border-style);border-color:var(--amplify-components-checkbox-button-before-border-color);display:inline-block;position:absolute}.amplify-checkbox__button--focused:before{outline-color:var(--amplify-components-checkbox-button-focus-outline-color);outline-style:var(--amplify-components-checkbox-button-focus-outline-style);outline-width:var(--amplify-components-checkbox-button-focus-outline-width);outline-offset:var(--amplify-components-checkbox-button-focus-outline-offset);border-color:var(--amplify-internal-checkbox_button-focused-before-border-color);box-shadow:var(--amplify-internal-checkbox_button-focused-before-box-shadow)}.amplify-checkbox__button--error{--amplify-internal-checkbox_button-focused-before-border-color:var(--amplify-components-checkbox-button-error-focus-border-color);--amplify-internal-checkbox_button-focused-before-box-shadow:var(--amplify-components-checkbox-button-error-focus-box-shadow)}.amplify-checkbox__button--error:before{border-color:var(--amplify-components-checkbox-button-error-border-color)}.amplify-checkbox__button--disabled:before{border-color:var(--amplify-components-checkbox-button-disabled-border-color)}.amplify-checkbox__icon{background-color:var(--amplify-components-checkbox-icon-background-color);opacity:var(--amplify-components-checkbox-icon-opacity);transform:var(--amplify-components-checkbox-icon-transform);border-radius:var(--amplify-components-checkbox-icon-border-radius);transition-property:var(--amplify-components-checkbox-icon-transition-property);transition-duration:var(--amplify-components-checkbox-icon-transition-duration);transition-timing-function:var(--amplify-components-checkbox-icon-transition-timing-function);--amplify-internal-checkbox-icon-disabled-background-color:var(--amplify-components-checkbox-icon-background-color)}.amplify-checkbox__icon--checked{opacity:var(--amplify-components-checkbox-icon-checked-opacity);transform:var(--amplify-components-checkbox-icon-checked-transform);--amplify-internal-checkbox-icon-disabled-background-color:var(--amplify-components-checkbox-icon-checked-disabled-background-color)}.amplify-checkbox__icon--indeterminate{opacity:var(--amplify-components-checkbox-icon-indeterminate-opacity);transform:var(--amplify-components-checkbox-icon-indeterminate-transform);--amplify-internal-checkbox-icon-disabled-background-color:var(--amplify-components-checkbox-icon-indeterminate-disabled-background-color)}.amplify-checkbox__icon--disabled{background-color:var(--amplify-internal-checkbox-icon-disabled-background-color)}.amplify-checkbox__label[data-disabled=true]{color:var(--amplify-components-checkbox-label-disabled-color)}.amplify-checkboxfield{align-content:var(--amplify-components-checkboxfield-align-content);align-items:var(--amplify-components-checkboxfield-align-items);flex-direction:var(--amplify-components-checkboxfield-flex-direction);justify-content:var(--amplify-components-checkboxfield-justify-content)}.amplify-dialcodeselect{height:var(--amplify-components-countrycodeselect-height)}.amplify-divider{border-color:var(--amplify-components-divider-border-color);border-style:var(--amplify-components-divider-border-style);opacity:var(--amplify-components-divider-opacity);--amplify-internal-divider-size:var(--amplify-components-divider-border-width);text-align:center;border-width:0;padding:0;display:block;position:relative}.amplify-divider--small{--amplify-internal-divider-size:var(--amplify-components-divider-small-border-width)}.amplify-divider--large{--amplify-internal-divider-size:var(--amplify-components-divider-large-border-width)}.amplify-divider--horizontal{width:100%;border-bottom-width:var(--amplify-internal-divider-size)}.amplify-divider--vertical{border-left-width:var(--amplify-internal-divider-size)}.amplify-divider--label{justify-content:center;display:flex}.amplify-divider--label:after{content:attr(data-label);font-size:var(--amplify-components-divider-label-font-size);padding-inline:var(--amplify-components-divider-label-padding-inline);background-color:var(--amplify-components-divider-label-background-color);color:var(--amplify-components-divider-label-color);position:absolute;transform:translateY(-50%)}.amplify-divider--label[aria-orientation=vertical]{flex-direction:column}.amplify-divider--label[aria-orientation=vertical]:after{padding-block:0;padding-inline:0;top:auto;transform:translate(-50%)}.amplify-expander{background-color:var(--amplify-components-expander-background-color);border-radius:var(--amplify-components-expander-border-radius);box-shadow:var(--amplify-components-expander-box-shadow);width:var(--amplify-components-expander-width);display:block}.amplify-expander__item{box-shadow:var(--amplify-components-expander-item-box-shadow);display:block;overflow:hidden}.amplify-expander__item:first-of-type{border-start-start-radius:var(--amplify-components-expander-item-border-start-start-radius);border-start-end-radius:var(--amplify-components-expander-item-border-start-end-radius)}@supports not (border-start-start-radius:var(--amplify-components-expander-item-border-start-start-radius)){.amplify-expander__item:first-of-type{border-top-left-radius:var(--amplify-components-expander-item-border-top-left-radius);border-top-right-radius:var(--amplify-components-expander-item-border-top-right-radius)}}.amplify-expander__item:last-of-type{box-shadow:none;border-end-end-radius:var(--amplify-components-expander-item-border-end-end-radius);border-end-start-radius:var(--amplify-components-expander-item-border-end-start-radius)}@supports not (border-end-start-radius:var(--amplify-components-expander-item-border-end-start-radius)){.amplify-expander__item:last-of-type{border-bottom-left-radius:var(--amplify-components-expander-item-border-bottom-left-radius);border-bottom-right-radius:var(--amplify-components-expander-item-border-bottom-right-radius)}}.amplify-expander__item:focus-within{box-shadow:var(--amplify-components-expander-item-focus-box-shadow)}.amplify-expander__header{box-shadow:var(--amplify-components-expander-header-box-shadow);display:flex}.amplify-expander__trigger{min-height:var(--amplify-components-expander-trigger-min-height);-webkit-padding-start:var(--amplify-components-expander-trigger-padding-inline-start);-webkit-padding-end:var(--amplify-components-expander-trigger-padding-inline-end);align-items:var(--amplify-components-expander-trigger-align-items);justify-content:var(--amplify-components-expander-trigger-justify-content);flex:1;padding-inline-start:var(--amplify-components-expander-trigger-padding-inline-start);padding-inline-end:var(--amplify-components-expander-trigger-padding-inline-end);display:flex}.amplify-expander__trigger:hover{background-color:var(--amplify-components-expander-trigger-hover-background-color)}.amplify-expander__content{-webkit-padding-start:var(--amplify-components-expander-content-padding-inline-start);-webkit-padding-end:var(--amplify-components-expander-content-padding-inline-end);padding-inline-start:var(--amplify-components-expander-content-padding-inline-start);padding-inline-end:var(--amplify-components-expander-content-padding-inline-end);display:block}.amplify-expander__content[data-state=open]{animation-name:amplify-expander-slide-down;animation-duration:var(--amplify-components-expander-content-open-animation-duration);animation-timing-function:var(--amplify-components-expander-content-open-animation-timing-function)}.amplify-expander__content[data-state=closed]{animation-name:amplify-expander-slide-up;animation-duration:var(--amplify-components-expander-content-closed-animation-duration);animation-timing-function:var(--amplify-components-expander-content-closed-animation-timing-function)}.amplify-expander__content__text{color:var(--amplify-components-expander-content-text-color);-webkit-padding-before:var(--amplify-components-expander-content-text-padding-block-start);-webkit-padding-after:var(--amplify-components-expander-content-text-padding-block-end);padding-block-start:var(--amplify-components-expander-content-text-padding-block-start);padding-block-end:var(--amplify-components-expander-content-text-padding-block-end);display:block}.amplify-expander__icon{transition-property:transform;transition-duration:var(--amplify-components-expander-icon-transition-duration);transition-timing-function:var(--amplify-components-expander-icon-transition-timing-function)}[data-state=open] .amplify-expander__icon{transform:rotate(180deg)}@keyframes amplify-expander-slide-down{0%{height:0}to{height:auto}}@keyframes amplify-expander-slide-up{0%{height:auto}to{height:0}}.amplify-field{font-size:var(--amplify-components-field-font-size);gap:var(--amplify-components-field-gap)}.amplify-field--small{font-size:var(--amplify-components-field-small-font-size);gap:var(--amplify-components-field-small-gap)}.amplify-field--large{font-size:var(--amplify-components-field-large-font-size);gap:var(--amplify-components-field-large-gap)}.amplify-label{color:var(--amplify-components-field-label-color)}.amplify-field-group__outer-end .amplify-select__wrapper .amplify-select,.amplify-field-group__outer-end .amplify-field-group__control,.amplify-field-group__outer-start .amplify-select__wrapper:not(:first-child) .amplify-select:not(:first-child),.amplify-field-group__outer-start--quiet .amplify-field-group__control,.amplify-field-group__outer-start .amplify-field-group__control:not(:first-child),.amplify-field-group :not(:first-child) .amplify-input{border-start-start-radius:0;border-end-start-radius:0}@supports not (border-start-start-radius:0){.amplify-field-group__outer-end .amplify-select__wrapper .amplify-select,.amplify-field-group__outer-end .amplify-field-group__control,.amplify-field-group__outer-start .amplify-select__wrapper:not(:first-child) .amplify-select:not(:first-child),.amplify-field-group__outer-start--quiet .amplify-field-group__control,.amplify-field-group__outer-start .amplify-field-group__control:not(:first-child),.amplify-field-group :not(:first-child) .amplify-input{border-top-left-radius:0;border-bottom-left-radius:0}}.amplify-field-group__outer-end .amplify-select__wrapper:not(:last-child) .amplify-select,.amplify-field-group__outer-end--quiet .amplify-field-group__control,.amplify-field-group__outer-end .amplify-field-group__control:not(:last-child),.amplify-field-group__outer-start .amplify-select__wrapper .amplify-select,.amplify-field-group__outer-start .amplify-field-group__control,.amplify-field-group :not(:last-child) .amplify-input{border-start-end-radius:0;border-end-end-radius:0}@supports not (border-end-end-radius:0){.amplify-field-group__outer-end .amplify-select__wrapper:not(:last-child) .amplify-select,.amplify-field-group__outer-end--quiet .amplify-field-group__control,.amplify-field-group__outer-end .amplify-field-group__control:not(:last-child),.amplify-field-group__outer-start .amplify-select__wrapper .amplify-select,.amplify-field-group__outer-start .amplify-field-group__control,.amplify-field-group :not(:last-child) .amplify-input{border-top-right-radius:0;border-bottom-right-radius:0}}.amplify-field-group{gap:var(--amplify-components-fieldgroup-gap);align-self:stretch}.amplify-field-group--horizontal{flex-direction:row}.amplify-field-group--vertical{align-items:var(--amplify-components-fieldgroup-vertical-align-items);flex-direction:column}.amplify-field-group__outer-start,.amplify-field-group__outer-end{align-items:var(--amplify-components-fieldgroup-outer-align-items);display:flex}.amplify-field-group__outer-start .amplify-field-group__control,.amplify-field-group__outer-end .amplify-field-group__control{height:100%}.amplify-field-group__outer-start .amplify-field-group__control:not(:focus){border-inline-end-color:#0000}.amplify-field-group__outer-start .amplify-field-group__control:focus{z-index:1}.amplify-field-group__outer-start--quiet .amplify-field-group__control:not(:focus){border-block-start-color:#0000;border-inline-start-color:#0000}.amplify-field-group__outer-end .amplify-field-group__control:not(:focus){border-inline-start-color:#0000}.amplify-field-group__outer-end .amplify-field-group__control:focus{z-index:1}.amplify-field-group__outer-end--quiet .amplify-field-group__control:not(:focus){border-block-start-color:#0000;border-inline-end-color:#0000}.amplify-field-group__field-wrapper{width:100%;position:relative}.amplify-field-group__field-wrapper--vertical{width:-moz-fit-content;width:-moz-fit-content;width:-moz-fit-content;width:fit-content}.amplify-field-group__inner-end,.amplify-field-group__inner-start{height:100%;pointer-events:none;position:absolute;top:0}.amplify-field-group__inner-end .amplify-button,.amplify-field-group__inner-start .amplify-button{pointer-events:all;height:100%}.amplify-field-group__inner-end{left:auto;right:0}.amplify-field-group__inner-start,html[dir=rtl] .amplify-field-group__inner-end{left:0;right:auto}html[dir=rtl] .amplify-field-group__inner-start{left:auto;right:0}.amplify-field-group--has-inner-end .amplify-input{-webkit-padding-end:calc(var(--amplify-components-fieldcontrol-padding-inline-end)*3);padding-inline-end:calc(var(--amplify-components-fieldcontrol-padding-inline-end)*3)}.amplify-field-group--has-inner-start .amplify-input{-webkit-padding-start:calc(var(--amplify-components-fieldcontrol-padding-inline-start)*3);padding-inline-start:calc(var(--amplify-components-fieldcontrol-padding-inline-start)*3)}.amplify-field-group__icon:not(.amplify-field-group__icon-button){-webkit-padding-start:var(--amplify-components-fieldcontrol-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-padding-inline-start);height:100%;flex-direction:column;justify-content:center;padding-inline-start:var(--amplify-components-fieldcontrol-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-padding-inline-start);display:flex}.amplify-fileuploader__dropzone{background-color:var(--amplify-components-fileuploader-dropzone-background-color);border-color:var(--amplify-components-fileuploader-dropzone-border-color);border-radius:var(--amplify-components-fileuploader-dropzone-border-radius);border-style:var(--amplify-components-fileuploader-dropzone-border-style);border-width:var(--amplify-components-fileuploader-dropzone-border-width);text-align:var(--amplify-components-fileuploader-dropzone-text-align);padding-block:var(--amplify-components-fileuploader-dropzone-padding-block);padding-inline:var(--amplify-components-fileuploader-dropzone-padding-inline);align-items:center;gap:var(--amplify-components-fileuploader-dropzone-gap);flex-direction:column;display:flex}.amplify-fileuploader__dropzone--small{flex-direction:row;justify-content:center}.amplify-fileuploader__dropzone--active{border-color:var(--amplify-components-fileuploader-dropzone-active-border-color);border-width:var(--amplify-components-fileuploader-dropzone-active-border-width);background-color:var(--amplify-components-fileuploader-dropzone-active-background-color)}.amplify-fileuploader__dropzone__icon{font-size:var(--amplify-components-fileuploader-dropzone-icon-font-size);color:var(--amplify-components-fileuploader-dropzone-icon-color)}.amplify-fileuploader__dropzone__text{color:var(--amplify-components-fileuploader-dropzone-text-color);font-size:var(--amplify-components-fileuploader-dropzone-text-font-size);font-weight:var(--amplify-components-fileuploader-dropzone-text-font-weight)}.amplify-fileuploader__file{border-width:var(--amplify-components-fileuploader-file-border-width);border-style:var(--amplify-components-fileuploader-file-border-style);border-color:var(--amplify-components-fileuploader-file-border-color);border-radius:var(--amplify-components-fileuploader-file-border-radius);padding-inline:var(--amplify-components-fileuploader-file-padding-inline);padding-block:var(--amplify-components-fileuploader-file-padding-block);align-items:var(--amplify-components-fileuploader-file-align-items);flex-direction:column;display:flex;position:relative}.amplify-fileuploader__file__wrapper{width:100%;align-items:center;gap:var(--amplify-components-fileuploader-file-gap);flex-direction:row;display:flex}.amplify-fileuploader__file__name{text-overflow:ellipsis;font-weight:var(--amplify-components-fileuploader-file-name-font-weight);font-size:var(--amplify-components-fileuploader-file-name-font-size);color:var(--amplify-components-fileuploader-file-name-color);overflow:hidden}.amplify-fileuploader__file__size{font-weight:var(--amplify-components-fileuploader-file-size-font-weight);font-size:var(--amplify-components-fileuploader-file-size-font-size);color:var(--amplify-components-fileuploader-file-size-color)}.amplify-fileuploader__file__main{white-space:nowrap;flex:1;overflow:hidden}.amplify-fileuploader__file__image{width:var(--amplify-components-fileuploader-file-image-width);height:var(--amplify-components-fileuploader-file-image-height);background-color:var(--amplify-components-fileuploader-file-image-background-color);border-radius:var(--amplify-components-fileuploader-file-image-border-radius);color:var(--amplify-components-fileuploader-file-image-color);justify-content:center;align-items:center;display:flex;position:relative}.amplify-fileuploader__file__image img{max-height:100%}.amplify-fileuploader__file__status--error{color:var(--amplify-colors-font-error);font-size:var(--amplify-components-fileuploader-file-size-font-size)}.amplify-fileuploader__file__status--success{color:var(--amplify-colors-font-success)}.amplify-fileuploader__loader{stroke-linecap:var(--amplify-components-fileuploader-loader-stroke-linecap);stroke:var(--amplify-components-fileuploader-loader-stroke-empty);stroke-width:var(--amplify-components-fileuploader-loader-stroke-width);height:var(--amplify-components-fileuploader-loader-stroke-width);--amplify-components-loader-linear-stroke-filled:var(--amplify-components-fileuploader-loader-stroke-filled);width:100%;position:absolute;bottom:0;left:0;overflow:hidden}.amplify-fileuploader__previewer{max-width:var(--amplify-components-fileuploader-previewer-max-width);background-color:var(--amplify-components-fileuploader-previewer-background-color);border-width:var(--amplify-components-fileuploader-previewer-border-width);border-style:var(--amplify-components-fileuploader-previewer-border-style);border-color:var(--amplify-components-fileuploader-previewer-border-color);border-radius:var(--amplify-components-fileuploader-previewer-border-radius);padding-inline:var(--amplify-components-fileuploader-previewer-padding-inline);padding-block:var(--amplify-components-fileuploader-previewer-padding-block);display:block}.amplify-fileuploader__previewer__text{font-weight:var(--amplify-components-fileuploader-previewer-text-font-weight);font-size:var(--amplify-components-fileuploader-previewer-text-font-size);color:var(--amplify-components-fileuploader-previewer-text-color)}.amplify-fileuploader__previewer__body{max-height:var(--amplify-components-fileuploader-previewer-max-height);max-width:var(--amplify-components-fileuploader-previewer-max-width);gap:var(--amplify-components-fileuploader-previewer-body-gap);padding-inline:var(--amplify-components-fileuploader-previewer-body-padding-inline);padding-block:var(--amplify-components-fileuploader-previewer-body-padding-block);flex-direction:column;display:flex;overflow:auto}.amplify-fileuploader__previewer__footer{max-width:var(--amplify-components-fileuploader-previewer-max-width);border-top-width:var(--amplify-components-fileuploader-previewer-footer-border-width);border-top-style:var(--amplify-components-fileuploader-previewer-footer-border-style);border-top-color:var(--amplify-components-fileuploader-previewer-footer-border-color);padding-inline:var(--amplify-components-fileuploader-previewer-footer-padding-inline);padding-block:var(--amplify-components-fileuploader-previewer-footer-padding-block);justify-content:var(--amplify-components-fileuploader-previewer-footer-justify-content);flex-direction:row;display:flex;position:relative}.amplify-fileuploader__previewer__footer__actions{gap:var(--amplify-space-small);flex-direction:row;display:flex}.amplify-menu-content-wrapper{z-index:999999}.amplify-menu-trigger{justify-content:center;align-items:center;display:flex}.amplify-menu-content{background-color:var(--amplify-components-menu-background-color);border-radius:var(--amplify-components-menu-border-radius);box-shadow:var(--amplify-components-menu-box-shadow);flex-direction:var(--amplify-components-menu-flex-direction);gap:var(--amplify-components-menu-gap);min-width:var(--amplify-components-menu-min-width);max-width:var(--amplify-components-menu-max-width);border-color:var(--amplify-components-menu-border-color);border-width:var(--amplify-components-menu-border-width);border-style:var(--amplify-components-menu-border-style)}.amplify-menu-content__item{min-height:var(--amplify-components-menu-item-min-height);-webkit-padding-start:var(--amplify-components-menu-item-padding-inline-start);-webkit-padding-end:var(--amplify-components-menu-item-padding-inline-end);padding-inline-start:var(--amplify-components-menu-item-padding-inline-start);padding-inline-end:var(--amplify-components-menu-item-padding-inline-end)}.amplify-menu-content__item:not(:first-child):not(:last-child){border-radius:0}.amplify-menu-content__item:first-child{border-end-end-radius:0;border-end-start-radius:0}@supports not (border-end-end-radius:0){.amplify-menu-content__item:first-child{border-bottom-right-radius:0;border-bottom-left-radius:0}}.amplify-menu-content__item:last-child{border-start-start-radius:0;border-start-end-radius:0}@supports not (border-end-end-radius:0){.amplify-menu-content__item:last-child{border-top-left-radius:0;border-top-right-radius:0}}.amplify-pagination__item-current,.amplify-pagination__item-button{height:var(--amplify-components-pagination-item-shared-height);min-width:var(--amplify-components-pagination-item-shared-min-width);border-radius:var(--amplify-components-pagination-item-shared-border-radius)}.amplify-pagination{list-style-type:none}.amplify-pagination li{margin-left:var(--amplify-components-pagination-item-container-margin-left);margin-right:var(--amplify-components-pagination-item-container-margin-right)}.amplify-pagination__item-button{font-weight:initial;color:var(--amplify-components-pagination-button-color);-webkit-padding-start:var(--amplify-components-pagination-button-padding-inline-start);-webkit-padding-end:var(--amplify-components-pagination-button-padding-inline-end);transition-property:var(--amplify-components-pagination-button-transition-property);transition-duration:var(--amplify-components-pagination-button-transition-duration);justify-content:center;align-items:center;padding-inline-start:var(--amplify-components-pagination-button-padding-inline-start);padding-inline-end:var(--amplify-components-pagination-button-padding-inline-end);display:flex}.amplify-pagination__item-button:hover{color:var(--amplify-components-pagination-button-hover-color);background-color:var(--amplify-components-pagination-button-hover-background-color);text-decoration:none}.amplify-pagination__item-button--disabled{color:var(--amplify-components-pagination-button-disabled-color);pointer-events:none}.amplify-pagination__item-current{align-items:var(--amplify-components-pagination-current-align-items);justify-content:var(--amplify-components-pagination-current-justify-content);color:var(--amplify-components-pagination-current-color);font-size:var(--amplify-components-pagination-current-font-size);background-color:var(--amplify-components-pagination-current-background-color)}.amplify-pagination__item-ellipsis{align-items:var(--amplify-components-pagination-ellipsis-align-items);justify-content:var(--amplify-components-pagination-ellipsis-justify-content);-webkit-padding-start:var(--amplify-components-pagination-ellipsis-padding-inline-start);-webkit-padding-end:var(--amplify-components-pagination-ellipsis-padding-inline-end);padding-inline-start:var(--amplify-components-pagination-ellipsis-padding-inline-start);padding-inline-end:var(--amplify-components-pagination-ellipsis-padding-inline-end)}.amplify-passwordfield{--amplify-components-fieldcontrol-color:var(--amplify-components-passwordfield-color);--amplify-components-button-color:var(--amplify-components-passwordfield-button-color);--amplify-components-button-active-background-color:var(--amplify-components-passwordfield-button-active-background-color);--amplify-components-button-active-border-color:var(--amplify-components-passwordfield-button-active-border-color);--amplify-components-button-active-color:var(--amplify-components-passwordfield-button-active-color);--amplify-components-button-disabled-background-color:var(--amplify-components-passwordfield-button-disabled-background-color);--amplify-components-button-disabled-border-color:var(--amplify-components-passwordfield-button-disabled-border-color);--amplify-components-button-disabled-color:var(--amplify-components-passwordfield-button-disabled-color);--amplify-components-button-focus-background-color:var(--amplify-components-passwordfield-button-focus-background-color);--amplify-components-button-focus-border-color:var(--amplify-components-passwordfield-button-focus-border-color);--amplify-components-button-focus-color:var(--amplify-components-passwordfield-button-focus-color);--amplify-components-button-hover-background-color:var(--amplify-components-passwordfield-button-hover-background-color);--amplify-components-button-hover-border-color:var(--amplify-components-passwordfield-button-hover-border-color);--amplify-components-button-hover-color:var(--amplify-components-passwordfield-button-hover-color)}.amplify-phonenumberfield select:not(:focus){border-right:none}.amplify-phonenumberfield{--amplify-components-selectfield-color:var(--amplify-components-phonenumberfield-color);--amplify-components-selectfield-border-color:var(--amplify-components-phonenumberfield-border-color);--amplify-components-selectfield-font-size:var(--amplify-components-phonenumberfield-font-size);--amplify-components-selectfield-focus-border-color:var(--amplify-components-phonenumberfield-focus-border-color);--amplify-components-textfield-color:var(--amplify-components-phonenumberfield-color);--amplify-components-textfield-border-color:var(--amplify-components-phonenumberfield-border-color);--amplify-components-textfield-font-size:var(--amplify-components-phonenumberfield-font-size);--amplify-components-textfield-focus-border-color:var(--amplify-components-phonenumberfield-focus-border-color)}.amplify-rating{text-align:left;font-size:var(--amplify-components-rating-default-size);line-height:var(--amplify-components-rating-default-size);display:inline-flex;position:relative}.amplify-rating .amplify-icon{font-size:unset;line-height:unset;height:1em}.amplify-rating--small{font-size:var(--amplify-components-rating-small-size);line-height:var(--amplify-components-rating-small-size)}.amplify-rating--large{font-size:var(--amplify-components-rating-large-size);line-height:var(--amplify-components-rating-large-size)}.amplify-rating-filled{fill:currentColor;width:1em;height:1em;flex-shrink:0;display:inline-block}.amplify-rating-icon-container{height:1em;width:1em;position:relative}.amplify-rating-label{height:1em;width:1em;position:absolute;overflow:hidden}.amplify-rating-icon{width:1em;height:1em}.amplify-rating-icon-filled{color:var(--amplify-components-rating-filled-color)}.amplify-rating-icon-empty{color:var(--amplify-components-rating-empty-color)}.amplify-radio{align-items:var(--amplify-components-radio-align-items);justify-content:var(--amplify-components-radio-justify-content);gap:inherit;--amplify-components-text-color:var(--amplify-components-radio-label-color);flex-direction:row-reverse}.amplify-radio--disabled{cursor:var(--amplify-components-radio-disabled-cursor)}.amplify-radio__button{align-items:var(--amplify-components-radio-button-align-items);justify-content:var(--amplify-components-radio-button-justify-content);padding:var(--amplify-components-radio-button-padding);box-sizing:var(--amplify-components-radio-button-box-sizing);border-width:var(--amplify-components-radio-button-border-width);border-style:var(--amplify-components-radio-button-border-style);border-radius:var(--amplify-components-radio-button-border-radius);border-color:var(--amplify-components-radio-button-border-color);color:var(--amplify-components-radio-button-color);background-color:var(--amplify-components-radio-button-background-color);transition-property:var(--amplify-components-radio-button-transition-property);transition-duration:var(--amplify-components-radio-button-transition-duration);width:var(--amplify-components-radio-button-width);height:var(--amplify-components-radio-button-height);outline-color:var(--amplify-components-radio-button-outline-color);outline-style:var(--amplify-components-radio-button-outline-style);outline-width:var(--amplify-components-radio-button-outline-width);outline-offset:var(--amplify-components-radio-button-outline-offset);flex-shrink:0}.amplify-radio__button:before{content:"";width:100%;height:100%;border-radius:var(--amplify-components-radio-button-before-border-radius);background-color:currentColor;border-radius:50%;display:inline-block}.amplify-radio__button--small{width:var(--amplify-components-radio-button-small-width);height:var(--amplify-components-radio-button-small-height)}.amplify-radio__button--large{width:var(--amplify-components-radio-button-large-width);height:var(--amplify-components-radio-button-large-height)}.amplify-radio__input:checked+.amplify-radio__button{color:var(--amplify-components-radio-button-checked-color)}.amplify-radio__input:checked:disabled+.amplify-radio__button{color:var(--amplify-components-radio-button-checked-disabled-color)}.amplify-radio__input:focus+.amplify-radio__button{border-color:var(--amplify-components-radio-button-focus-border-color);box-shadow:var(--amplify-components-radio-button-focus-box-shadow)}.amplify-radio__input[aria-invalid=true]+.amplify-radio__button{border-color:var(--amplify-components-radio-button-error-border-color)}.amplify-radio__input[aria-invalid=true]:focus+.amplify-radio__button{box-shadow:var(--amplify-components-radio-button-error-focus-box-shadow)}.amplify-radio__input:disabled+.amplify-radio__button{border-color:var(--amplify-components-radio-button-disabled-border-color);background-color:var(--amplify-components-radio-button-disabled-background-color)}.amplify-radio__label[data-disabled=true]{color:var(--amplify-components-radio-label-disabled-color)}.amplify-radiogroup{gap:inherit;flex-direction:inherit;align-items:inherit}.amplify-radiogroupfield{--amplify-components-field-label-color:var(--amplify-components-radiogroup-label-color);--amplify-components-radio-button-border-width:var(--amplify-components-radiogroup-radio-border-width);--amplify-components-radio-button-border-color:var(--amplify-components-radiogroup-radio-border-color);--amplify-components-radio-button-background-color:var(--amplify-components-radiogroup-radio-background-color);--amplify-components-radio-label-color:var(--amplify-components-radiogroup-radio-label-color);--amplify-components-radio-button-checked-color:var(--amplify-components-radiogroup-radio-checked-color);flex-direction:column;align-items:flex-start}.amplify-searchfield{--amplify-components-fieldcontrol-color:var(--amplify-components-searchfield-input-color)}.amplify-searchfield__search{color:var(--amplify-components-searchfield-button-color);background-color:var(--amplify-components-searchfield-button-background-color)}.amplify-searchfield__search:active{background-color:var(--amplify-components-button-active-background-color);border-color:var(--amplify-components-button-active-border-color);color:var(--amplify-components-button-active-color)}.amplify-searchfield__search:disabled{background-color:var(--amplify-components-searchfield-button-disabled-background-color);border-color:var(--amplify-components-searchfield-button-disabled-border-color);color:var(--amplify-components-searchfield-button-disabled-color)}.amplify-searchfield__search:focus{background-color:var(--amplify-components-searchfield-button-focus-background-color);border-color:var(--amplify-components-searchfield-button-focus-border-color);color:var(--amplify-components-searchfield-button-focus-color)}.amplify-searchfield__search:hover{background-color:var(--amplify-components-searchfield-button-hover-background-color);border-color:var(--amplify-components-searchfield-button-hover-border-color);color:var(--amplify-components-searchfield-button-hover-color)}.amplify-select__wrapper{flex:var(--amplify-components-select-wrapper-flex);display:var(--amplify-components-select-wrapper-display);position:var(--amplify-components-select-wrapper-position);cursor:var(--amplify-components-select-wrapper-cursor);align-self:stretch}.amplify-select__icon-wrapper{align-items:var(--amplify-components-select-icon-wrapper-align-items);position:var(--amplify-components-select-icon-wrapper-position);top:var(--amplify-components-select-icon-wrapper-top);right:var(--amplify-components-select-icon-wrapper-right);transform:var(--amplify-components-select-icon-wrapper-transform);pointer-events:var(--amplify-components-select-icon-wrapper-pointer-events)}.amplify-select{box-sizing:border-box;color:var(--amplify-components-fieldcontrol-color);font-size:var(--amplify-components-fieldcontrol-font-size);line-height:var(--amplify-components-fieldcontrol-line-height);-webkit-padding-before:var(--amplify-components-fieldcontrol-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-padding-inline-end);transition:all var(--amplify-components-fieldcontrol-transition-duration);width:100%;border-color:var(--amplify-components-fieldcontrol-border-color);border-radius:var(--amplify-components-fieldcontrol-border-radius);border-style:var(--amplify-components-fieldcontrol-border-style);border-width:var(--amplify-components-fieldcontrol-border-width);outline-color:var(--amplify-components-fieldcontrol-outline-color);outline-style:var(--amplify-components-fieldcontrol-outline-style);outline-width:var(--amplify-components-fieldcontrol-outline-width);outline-offset:var(--amplify-components-fieldcontrol-outline-offset);min-width:var(--amplify-components-select-min-width);-webkit-padding-end:var(--amplify-components-select-padding-inline-end);white-space:var(--amplify-components-select-white-space);padding-block-start:var(--amplify-components-fieldcontrol-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-padding-inline-start);padding-inline-end:var(--amplify-components-select-padding-inline-end)}.amplify-select:focus{border-color:var(--amplify-components-fieldcontrol-focus-border-color);box-shadow:var(--amplify-components-fieldcontrol-focus-box-shadow)}.amplify-select--small{font-size:var(--amplify-components-fieldcontrol-small-font-size);-webkit-padding-before:var(--amplify-components-fieldcontrol-small-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-small-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-small-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-small-padding-inline-end);padding-block-start:var(--amplify-components-fieldcontrol-small-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-small-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-small-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-small-padding-inline-end)}.amplify-select--large{font-size:var(--amplify-components-fieldcontrol-large-font-size);-webkit-padding-before:var(--amplify-components-fieldcontrol-large-padding-block-start);-webkit-padding-after:var(--amplify-components-fieldcontrol-large-padding-block-end);-webkit-padding-start:var(--amplify-components-fieldcontrol-large-padding-inline-start);-webkit-padding-end:var(--amplify-components-fieldcontrol-large-padding-inline-end);padding-block-start:var(--amplify-components-fieldcontrol-large-padding-block-start);padding-block-end:var(--amplify-components-fieldcontrol-large-padding-block-end);padding-inline-start:var(--amplify-components-fieldcontrol-large-padding-inline-start);padding-inline-end:var(--amplify-components-fieldcontrol-large-padding-inline-end)}.amplify-select--error{border-color:var(--amplify-components-fieldcontrol-error-border-color)}.amplify-select--error:focus{border-color:var(--amplify-components-fieldcontrol-error-border-color);box-shadow:var(--amplify-components-fieldcontrol-error-focus-box-shadow)}.amplify-select[disabled]{color:var(--amplify-components-fieldcontrol-disabled-color);cursor:var(--amplify-components-fieldcontrol-disabled-cursor);border-color:var(--amplify-components-fieldcontrol-disabled-border-color);background-color:var(--amplify-components-fieldcontrol-disabled-background-color)}.amplify-select--quiet{-webkit-border-before:var(--amplify-components-fieldcontrol-quiet-border-block-start);border-block-start:var(--amplify-components-fieldcontrol-quiet-border-block-start);-webkit-border-start:var(--amplify-components-fieldcontrol-quiet-border-inline-start);border-inline-start:var(--amplify-components-fieldcontrol-quiet-border-inline-start);-webkit-border-end:var(--amplify-components-fieldcontrol-quiet-border-inline-end);border-inline-end:var(--amplify-components-fieldcontrol-quiet-border-inline-end);border-radius:var(--amplify-components-fieldcontrol-quiet-border-radius)}.amplify-select--quiet:focus{border-block-end-color:var(--amplify-components-fieldcontrol-quiet-focus-border-block-end-color);box-shadow:var(--amplify-components-fieldcontrol-quiet-focus-box-shadow)}.amplify-select--quiet[aria-invalid=true]{border-block-end-color:var(--amplify-components-fieldcontrol-quiet-error-border-block-end-color)}.amplify-select--quiet[aria-invalid=true]:focus{box-shadow:var(--amplify-components-fieldcontrol-quiet-error-focus-box-shadow)}.amplify-select option{color:initial}.amplify-select option[disabled=""]{color:var(--amplify-components-select-option-disabled-color)}@-moz-document url-prefix(){.amplify-select option{background-color:var(--amplify-components-select-option-background-color);color:var(--amplify-components-select-option-color)}}.amplify-select--small{min-width:var(--amplify-components-select-small-min-width)}.amplify-select--large{min-width:var(--amplify-components-select-large-min-width)}.amplify-selectfield{flex-direction:var(--amplify-components-selectfield-flex-direction);--amplify-components-fieldcontrol-border-color:var(--amplify-components-selectfield-border-color);--amplify-components-fieldcontrol-color:var(--amplify-components-selectfield-color);--amplify-components-fieldcontrol-font-size:var(--amplify-components-selectfield-font-size);--amplify-components-fieldcontrol-focus-border-color:var(--amplify-components-selectfield-focus-border-color);--amplify-components-field-label-color:var(--amplify-components-selectfield-label-color)}.amplify-sliderfield{flex-direction:column}.amplify-sliderfield__label{justify-content:space-between;display:flex}.amplify-sliderfield__root{box-sizing:content-box;padding-block:var(--amplify-components-sliderfield-padding-block);touch-action:none;-webkit-user-select:none;user-select:none;--amplify-internal-sliderfield-root-height:var(--amplify-components-sliderfield-thumb-height);--amplify-internal-sliderfield-root-width:var(--amplify-components-sliderfield-thumb-height);align-items:center;display:flex;position:relative}.amplify-sliderfield__root[data-disabled]{cursor:not-allowed}.amplify-sliderfield__root--horizontal{height:var(--amplify-internal-sliderfield-root-height)}.amplify-sliderfield__root--vertical{width:var(--amplify-internal-sliderfield-root-width);flex-direction:column}.amplify-sliderfield__root--large{--amplify-internal-sliderfield-root-height:var(--amplify-components-sliderfield-large-thumb-height);--amplify-internal-sliderfield-root-width:var(--amplify-components-sliderfield-large-thumb-height)}.amplify-sliderfield__root--small{--amplify-internal-sliderfield-root-height:var(--amplify-components-sliderfield-small-thumb-height);--amplify-internal-sliderfield-root-width:var(--amplify-components-sliderfield-small-thumb-height)}.amplify-sliderfield__track{border-radius:var(--amplify-components-sliderfield-track-border-radius);background-color:var(--amplify-components-sliderfield-track-background-color);--amplify-internal-sliderfield-track-height:var(--amplify-components-sliderfield-track-height);--amplify-internal-sliderfield-track-min-width:var(--amplify-components-sliderfield-track-min-width);--amplify-internal-sliderfield-track-width:var(--amplify-components-sliderfield-track-height);--amplify-internal-sliderfield-track-min-height:var(--amplify-components-sliderfield-track-min-width);flex-grow:1;position:relative}.amplify-sliderfield__track--horizontal{height:var(--amplify-internal-sliderfield-track-height);min-width:var(--amplify-internal-sliderfield-track-min-width)}.amplify-sliderfield__track--vertical{width:var(--amplify-internal-sliderfield-track-width);min-height:var(--amplify-internal-sliderfield-track-min-height)}.amplify-sliderfield__track--large{--amplify-internal-sliderfield-track-height:var(--amplify-components-sliderfield-large-track-height);--amplify-internal-sliderfield-track-width:var(--amplify-components-sliderfield-large-track-height)}.amplify-sliderfield__track--small{--amplify-internal-sliderfield-track-height:var(--amplify-components-sliderfield-small-track-height);--amplify-internal-sliderfield-track-width:var(--amplify-components-sliderfield-small-track-height)}.amplify-sliderfield__range{border-radius:var(--amplify-components-sliderfield-range-border-radius);background-color:var(--amplify-components-sliderfield-range-background-color);position:absolute}.amplify-sliderfield__range[data-disabled]{background-color:var(--amplify-components-sliderfield-range-disabled-background-color)}.amplify-sliderfield__range--horizontal{height:100%}.amplify-sliderfield__range--vertical{width:100%}.amplify-sliderfield__thumb{width:var(--amplify-components-sliderfield-thumb-width);height:var(--amplify-components-sliderfield-thumb-height);background-color:var(--amplify-components-sliderfield-thumb-background-color);box-shadow:var(--amplify-components-sliderfield-thumb-box-shadow);border-radius:var(--amplify-components-sliderfield-thumb-border-radius);border-width:var(--amplify-components-sliderfield-thumb-border-width);border-color:var(--amplify-components-sliderfield-thumb-border-color);border-style:var(--amplify-components-sliderfield-thumb-border-style);display:block}.amplify-sliderfield__thumb:hover{background-color:var(--amplify-components-sliderfield-thumb-hover-background-color);border-color:var(--amplify-components-sliderfield-thumb-hover-border-color)}.amplify-sliderfield__thumb:focus{border-color:var(--amplify-components-sliderfield-thumb-focus-border-color);box-shadow:var(--amplify-components-sliderfield-thumb-focus-box-shadow)}.amplify-sliderfield__thumb[data-disabled]{background-color:var(--amplify-components-sliderfield-thumb-disabled-background-color);border-color:var(--amplify-components-sliderfield-thumb-disabled-border-color);box-shadow:var(--amplify-components-sliderfield-thumb-disabled-box-shadow)}.amplify-sliderfield__thumb--large{width:var(--amplify-components-sliderfield-large-thumb-width);height:var(--amplify-components-sliderfield-large-thumb-height)}.amplify-sliderfield__thumb--small{width:var(--amplify-components-sliderfield-small-thumb-width);height:var(--amplify-components-sliderfield-small-thumb-height)}.amplify-stepperfield{flex-direction:var(--amplify-components-stepperfield-flex-direction);--amplify-components-fieldcontrol-border-color:var(--amplify-components-stepperfield-border-color);--amplify-components-button-border-color:var(--amplify-components-stepperfield-border-color);--amplify-components-fieldcontrol-color:var(--amplify-components-stepperfield-input-color);--amplify-components-fieldcontrol-font-size:var(--amplify-components-stepperfield-input-font-size);--amplify-components-button-color:var(--amplify-components-stepperfield-button-color);--amplify-components-button-active-color:var(--amplify-components-stepperfield-button-active-color);--amplify-components-button-active-background-color:var(--amplify-components-stepperfield-button-active-background-color);--amplify-components-button-focus-color:var(--amplify-components-stepperfield-button-focus-color);--amplify-components-button-focus-background-color:var(--amplify-components-stepperfield-button-focus-background-color);--amplify-components-button-disabled-color:var(--amplify-components-stepperfield-button-disabled-color);--amplify-components-button-disabled-background-color:var(--amplify-components-stepperfield-button-disabled-background-color);--amplify-components-button-hover-color:var(--amplify-components-stepperfield-button-hover-color);--amplify-components-button-hover-background-color:var(--amplify-components-stepperfield-button-hover-background-color)}.amplify-stepperfield__button--decrease,.amplify-stepperfield__button--increase{background-color:var(--amplify-components-stepperfield-button-background-color)}.amplify-stepperfield__button--decrease--disabled,.amplify-stepperfield__button--increase--disabled{background-color:var(--amplify-components-stepperfield-button-disabled-background-color)}.amplify-stepperfield__button--decrease--quiet,.amplify-stepperfield__button--increase--quiet{border-width:0 0 var(--amplify-components-button-border-width)0;border-radius:0}.amplify-stepperfield__button--decrease[data-invalid=true]{-webkit-border-end:none;border-inline-end:none}.amplify-stepperfield__button--increase[data-invalid=true]{-webkit-border-start:none;border-inline-start:none}.amplify-stepperfield__input{-moz-appearance:textfield;text-align:var(--amplify-components-stepperfield-input-text-align)}.amplify-stepperfield__input::-webkit-outer-spin-button,.amplify-stepperfield__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.amplify-stepperfield__input:not(:focus,[aria-invalid=true]){-webkit-border-start:none;-webkit-border-end:none;border-inline:none}.amplify-switchfield{font-size:var(--amplify-components-switchfield-font-size);display:inline-block}.amplify-switchfield--small{font-size:var(--amplify-components-switchfield-small-font-size)}.amplify-switchfield--large{font-size:var(--amplify-components-switchfield-large-font-size)}.amplify-switch__wrapper{align-items:center;display:inline-flex}.amplify-switch__wrapper--start{flex-direction:row}.amplify-switch__wrapper--end{flex-direction:row-reverse}.amplify-switch__wrapper--top{flex-direction:column}.amplify-switch__wrapper--bottom{flex-direction:column-reverse}.amplify-switch-track{box-sizing:content-box;border-radius:var(--amplify-components-switchfield-track-border-radius);padding:var(--amplify-components-switchfield-track-padding);width:var(--amplify-components-switchfield-track-width);height:var(--amplify-components-switchfield-track-height);transition-duration:var(--amplify-components-switchfield-track-transition-duration);background-color:var(--amplify-components-switchfield-track-background-color);justify-content:flex-start;display:inline-flex}.amplify-switch-track--checked{background-color:var(--amplify-components-switchfield-track-checked-background-color)}.amplify-switch-track--disabled{opacity:var(--amplify-components-switchfield-disabled-opacity);cursor:not-allowed}.amplify-switch-track--focused{box-shadow:var(--amplify-components-switchfield-focused-shadow)}.amplify-switch-track--error{background-color:var(--amplify-components-switchfield-track-error-background-color)}.amplify-switch-thumb{background-color:var(--amplify-components-switchfield-thumb-background-color);transition-duration:var(--amplify-components-switchfield-thumb-transition-duration);border-radius:var(--amplify-components-switchfield-thumb-border-radius);width:var(--amplify-components-switchfield-thumb-width);height:var(--amplify-components-switchfield-thumb-width);border-color:var(--amplify-components-switchfield-thumb-border-color);overflow-wrap:break-word}.amplify-switch-thumb--checked{transform:var(--amplify-components-switchfield-thumb-checked-transform)}.amplify-switch-thumb--disabled{cursor:not-allowed}.amplify-switch-label{padding:var(--amplify-components-switchfield-label-padding);cursor:pointer}.amplify-table{border-collapse:var(--amplify-components-table-border-collapse);display:var(--amplify-components-table-display);width:var(--amplify-components-table-width);--amplify-internal-table-caption-font-size:var(--amplify-components-table-caption-font-size);--amplify-internal-table-th-font-size:var(--amplify-components-table-header-font-size);--amplify-internal-table-th-padding:var(--amplify-components-table-header-padding);--amplify-internal-table-td-font-size:var(--amplify-components-table-data-font-size);--amplify-internal-table-td-padding:var(--amplify-components-table-data-padding);--amplify-internal-table-td-border-width:var(--amplify-components-table-data-border-width)0px var(--amplify-components-table-data-border-width)0px;--amplify-internal-table-th-border-width:var(--amplify-components-table-header-border-width)0px var(--amplify-components-table-header-border-width)0px}.amplify-table--small{--amplify-internal-table-caption-font-size:var(--amplify-components-table-caption-small-font-size);--amplify-internal-table-th-font-size:var(--amplify-components-table-header-small-font-size);--amplify-internal-table-th-padding:var(--amplify-components-table-header-small-padding);--amplify-internal-table-td-font-size:var(--amplify-components-table-data-small-font-size);--amplify-internal-table-td-padding:var(--amplify-components-table-data-small-padding)}.amplify-table--large{--amplify-internal-table-caption-font-size:var(--amplify-components-table-caption-large-font-size);--amplify-internal-table-th-font-size:var(--amplify-components-table-header-large-font-size);--amplify-internal-table-th-padding:var(--amplify-components-table-header-large-padding);--amplify-internal-table-td-font-size:var(--amplify-components-table-data-large-font-size);--amplify-internal-table-td-padding:var(--amplify-components-table-data-large-padding)}.amplify-table--bordered{--amplify-internal-table-td-border-width:var(--amplify-components-table-data-border-width)var(--amplify-components-table-data-border-width)var(--amplify-components-table-data-border-width)var(--amplify-components-table-data-border-width);--amplify-internal-table-th-border-width:var(--amplify-components-table-header-border-width)var(--amplify-components-table-header-border-width)var(--amplify-components-table-header-border-width)var(--amplify-components-table-header-border-width)}.amplify-table__caption{caption-side:var(--amplify-components-table-caption-caption-side);color:var(--amplify-components-table-caption-color);display:var(--amplify-components-table-caption-display);font-size:var(--amplify-internal-table-caption-font-size);text-align:var(--amplify-components-table-caption-text-align);word-break:var(--amplify-components-table-caption-word-break)}.amplify-table__head{display:var(--amplify-components-table-head-display);vertical-align:var(--amplify-components-table-head-vertical-align)}.amplify-table__body{display:var(--amplify-components-table-body-display);vertical-align:var(--amplify-components-table-body-vertical-align)}.amplify-table__foot{display:var(--amplify-components-table-foot-display);vertical-align:var(--amplify-components-table-foot-vertical-align)}.amplify-table__row{display:var(--amplify-components-table-row-display);vertical-align:var(--amplify-components-table-row-vertical-align)}.amplify-table__th{border-color:var(--amplify-components-table-header-border-color);border-style:var(--amplify-components-table-header-border-style);border-width:var(--amplify-internal-table-th-border-width);color:var(--amplify-components-table-header-color);display:var(--amplify-components-table-header-display);font-size:var(--amplify-internal-table-th-font-size);font-weight:var(--amplify-components-table-header-font-weight);padding:var(--amplify-internal-table-th-padding);vertical-align:var(--amplify-components-table-header-vertical-align)}.amplify-table__th:first-child{border-left-width:var(--amplify-components-table-header-border-width)}.amplify-table__th:last-child{border-right-width:var(--amplify-components-table-header-border-width)}.amplify-table__td{border-color:var(--amplify-components-table-data-border-color);border-style:var(--amplify-components-table-data-border-style);border-width:var(--amplify-internal-table-td-border-width);color:var(--amplify-components-table-data-color);display:var(--amplify-components-table-data-display);font-size:var(--amplify-internal-table-td-font-size);font-weight:var(--amplify-components-table-data-font-weight);padding:var(--amplify-internal-table-td-padding);vertical-align:var(--amplify-components-table-data-vertical-align)}.amplify-table__td:first-child{border-left-width:var(--amplify-components-table-data-border-width)}.amplify-table__td:last-child{border-right-width:var(--amplify-components-table-data-border-width)}.amplify-table[data-variation=striped] .amplify-table__row:not(.amplify-table__head *):nth-child(2n+1){background-color:var(--amplify-components-table-row-striped-background-color)}.amplify-table[data-highlightonhover=true] .amplify-table__row:not(.amplify-table__head *):hover{background-color:var(--amplify-components-table-row-hover-background-color)}.amplify-tabs{background-color:var(--amplify-components-tabs-background-color);box-shadow:var(--amplify-components-tabs-box-shadow);border-width:0 0 var(--amplify-components-tabs-border-width)0;border-style:var(--amplify-components-tabs-border-style);border-color:var(--amplify-components-tabs-border-color);gap:var(--amplify-components-tabs-gap)}.amplify-tabs[data-indicator-position=top]{border-width:var(--amplify-components-tabs-border-width)0 0 0}.amplify-tabs-item{background-color:var(--amplify-components-tabs-item-background-color);box-sizing:border-box;color:var(--amplify-components-tabs-item-color);font-size:var(--amplify-components-tabs-item-font-size);font-weight:var(--amplify-components-tabs-item-font-weight);padding:var(--amplify-components-tabs-item-padding-vertical)var(--amplify-components-tabs-item-padding-horizontal);text-align:var(--amplify-components-tabs-item-text-align);transition:all var(--amplify-components-tabs-item-transition-duration);border-width:0 0 var(--amplify-components-tabs-item-border-width)0;border-style:var(--amplify-components-tabs-item-border-style);border-color:var(--amplify-components-tabs-item-border-color);margin-bottom:calc(-1*var(--amplify-components-tabs-item-border-width))}[data-indicator-position=top]>.amplify-tabs-item{border-width:var(--amplify-components-tabs-border-width)0 0 0;margin-top:calc(-1*var(--amplify-components-tabs-item-border-width));margin-bottom:0}.amplify-tabs-item[data-state=active]{color:var(--amplify-components-tabs-item-active-color);border-color:var(--amplify-components-tabs-item-active-border-color);background-color:var(--amplify-components-tabs-item-active-background-color);transition-property:none}.amplify-tabs-item:hover{color:var(--amplify-components-tabs-item-hover-color);cursor:pointer}.amplify-tabs-item:focus{color:var(--amplify-components-tabs-item-focus-color)}.amplify-tabs-item:focus-visible{outline:var(--amplify-components-tabs-item-border-width)var(--amplify-components-tabs-item-border-style)var(--amplify-components-tabs-item-border-color)}.amplify-tabs-item:active{color:var(--amplify-components-tabs-item-active-color)}.amplify-tabs-item[data-disabled]{background-color:var(--amplify-components-tabs-item-disabled-background-color);color:var(--amplify-components-tabs-item-disabled-color);cursor:not-allowed}.amplify-tabs-item[data-spacing=equal]{flex:1 1 0}.amplify-tabs-item[data-spacing=relative]{flex-grow:1}.amplify-textareafield{--amplify-components-fieldcontrol-color:var(--amplify-components-textareafield-color);--amplify-components-fieldcontrol-border-color:var(--amplify-components-textareafield-border-color);--amplify-components-fieldcontrol-focus-border-color:var(--amplify-components-textareafield-focus-border-color);flex-direction:column}.amplify-textfield{--amplify-components-fieldcontrol-color:var(--amplify-components-textfield-color);--amplify-components-fieldcontrol-border-color:var(--amplify-components-textfield-border-color);--amplify-components-fieldcontrol-font-size:var(--amplify-components-textfield-font-size);--amplify-components-fieldcontrol-focus-border-color:var(--amplify-components-textfield-focus-border-color);flex-direction:column}.amplify-togglebutton{--amplify-internal-togglebutton-background-color:initial;--amplify-internal-togglebutton-border-color:var(--amplify-components-togglebutton-border-color);--amplify-internal-togglebutton-color:var(--amplify-components-togglebutton-color);background-color:var(--amplify-internal-togglebutton-background-color);border-color:var(--amplify-internal-togglebutton-border-color);color:var(--amplify-internal-togglebutton-color);--amplify-internal-togglebutton-focus-background-color:var(--amplify-internal-togglebutton-background-color);--amplify-internal-togglebutton-focus-border-color:var(--amplify-components-togglebutton-focus-border-color);--amplify-internal-togglebutton-focus-color:var(--amplify-components-togglebutton-focus-color);--amplify-internal-togglebutton-hover-background-color:var(--amplify-components-togglebutton-hover-background-color);--amplify-internal-togglebutton-hover-border-color:var(--amplify-internal-togglebutton-border-color);--amplify-internal-togglebutton-hover-color:var(--amplify-internal-togglebutton-color);--amplify-internal-togglebutton-active-background-color:var(--amplify-components-togglebutton-active-background-color);--amplify-internal-togglebutton-disabled-background-color:var(--amplify-components-togglebutton-disabled-background-color);--amplify-internal-togglebutton-disabled-border-color:var(--amplify-components-togglebutton-disabled-border-color);--amplify-internal-togglebutton-disabled-color:var(--amplify-components-togglebutton-disabled-color)}.amplify-togglebutton:focus{background-color:var(--amplify-internal-togglebutton-focus-background-color);border-color:var(--amplify-internal-togglebutton-focus-border-color);color:var(--amplify-internal-togglebutton-focus-color)}.amplify-togglebutton:hover{background-color:var(--amplify-internal-togglebutton-hover-background-color);border-color:var(--amplify-internal-togglebutton-hover-border-color);color:var(--amplify-internal-togglebutton-hover-color)}.amplify-togglebutton:active{background-color:var(--amplify-internal-togglebutton-active-background-color)}.amplify-togglebutton:disabled{background-color:var(--amplify-internal-togglebutton-disabled-background-color);border-color:var(--amplify-internal-togglebutton-disabled-border-color);color:var(--amplify-internal-togglebutton-disabled-color)}.amplify-togglebutton--pressed{--amplify-internal-togglebutton-border-color:var(--amplify-components-togglebutton-pressed-border-color);--amplify-internal-togglebutton-background-color:var(--amplify-components-togglebutton-pressed-background-color);--amplify-internal-togglebutton-color:var(--amplify-components-togglebutton-pressed-color);--amplify-internal-togglebutton-hover-background-color:var(--amplify-components-togglebutton-pressed-hover-background-color);--amplify-internal-togglebutton-disabled-background-color:var(--amplify-components-togglebutton-pressed-background-color);--amplify-internal-togglebutton-disabled-border-color:var(--amplify-components-togglebutton-pressed-border-color);--amplify-internal-togglebutton-disabled-color:var(--amplify-components-togglebutton-pressed-color)}.amplify-togglebutton--primary{--amplify-internal-togglebutton-primary-background-color:var(--amplify-components-togglebutton-primary-background-color);--amplify-internal-togglebutton-background-color:var(--amplify-internal-togglebutton-primary-background-color);--amplify-internal-togglebutton-primary-border-color:var(--amplify-components-togglebutton-border-color);--amplify-internal-togglebutton-border-color:var(--amplify-internal-togglebutton-primary-border-color);--amplify-internal-togglebutton-primary-color:var(--amplify-components-togglebutton-color);--amplify-internal-togglebutton-color:var(--amplify-internal-togglebutton-primary-color);border-width:var(--amplify-components-togglebutton-primary-border-width);--amplify-internal-togglebutton-primary-focus-background-color:var(--amplify-components-togglebutton-primary-focus-background-color);--amplify-internal-togglebutton-primary-focus-border-color:var(--amplify-components-togglebutton-primary-focus-border-color);--amplify-internal-togglebutton-primary-focus-color:var(--amplify-components-togglebutton-primary-focus-color);--amplify-internal-togglebutton-primary-focus-box-shadow:var(--amplify-components-togglebutton-primary-focus-box-shadow);--amplify-internal-togglebutton-focus-background-color:var(--amplify-internal-togglebutton-primary-focus-background-color);--amplify-internal-togglebutton-focus-border-color:var(--amplify-internal-togglebutton-primary-focus-border-color);--amplify-internal-togglebutton-focus-color:var(--amplify-internal-togglebutton-primary-focus-color);--amplify-internal-togglebutton-primary-hover-background-color:var(--amplify-components-togglebutton-primary-hover-background-color);--amplify-internal-togglebutton-primary-hover-border-color:var(--amplify-internal-togglebutton-primary-border-color);--amplify-internal-togglebutton-primary-hover-color:var(--amplify-components-togglebutton-primary-hover-color);--amplify-internal-togglebutton-hover-background-color:var(--amplify-internal-togglebutton-primary-hover-background-color);--amplify-internal-togglebutton-hover-border-color:var(--amplify-internal-togglebutton-primary-hover-border-color);--amplify-internal-togglebutton-hover-color:var(--amplify-internal-togglebutton-primary-hover-color);--amplify-internal-togglebutton-primary-disabled-background-color:var(--amplify-components-togglebutton-primary-disabled-background-color);--amplify-internal-togglebutton-primary-disabled-border-color:var(--amplify-components-togglebutton-primary-disabled-border-color);--amplify-internal-togglebutton-primary-disabled-color:var(--amplify-components-togglebutton-primary-disabled-color);--amplify-internal-togglebutton-disabled-background-color:var(--amplify-internal-togglebutton-primary-disabled-background-color);--amplify-internal-togglebutton-disabled-border-color:var(--amplify-internal-togglebutton-primary-disabled-border-color);--amplify-internal-togglebutton-disabled-color:var(--amplify-internal-togglebutton-primary-disabled-color)}.amplify-togglebutton--primary:focus{box-shadow:var(--amplify-internal-togglebutton-primary-focus-box-shadow)}.amplify-togglebutton--pressed{--amplify-internal-togglebutton-primary-background-color:var(--amplify-components-togglebutton-primary-pressed-background-color);--amplify-internal-togglebutton-primary-border-color:var(--amplify-components-togglebutton-primary-pressed-border-color);--amplify-internal-togglebutton-primary-color:var(--amplify-components-togglebutton-primary-pressed-color);--amplify-internal-togglebutton-primary-focus-background-color:var(--amplify-components-togglebutton-primary-pressed-focus-background-color);--amplify-internal-togglebutton-primary-focus-border-color:var(--amplify-components-togglebutton-primary-pressed-focus-border-color);--amplify-internal-togglebutton-primary-focus-color:var(--amplify-components-togglebutton-primary-pressed-focus-color);--amplify-internal-togglebutton-primary-hover-background-color:var(--amplify-components-togglebutton-primary-pressed-hover-background-color);--amplify-internal-togglebutton-primary-hover-border-color:var(--amplify-components-togglebutton-primary-pressed-hover-border-color);--amplify-internal-togglebutton-primary-hover-color:var(--amplify-components-togglebutton-primary-pressed-hover-color);--amplify-internal-togglebutton-primary-disabled-background-color:var(--amplify-components-togglebutton-primary-pressed-background-color);--amplify-internal-togglebutton-primary-disabled-border-color:var(--amplify-components-togglebutton-primary-pressed-border-color);--amplify-internal-togglebutton-primary-disabled-color:var(--amplify-components-togglebutton-primary-pressed-color)}.amplify-togglebutton--pressed:hover{--amplify-internal-togglebutton-primary-focus-box-shadow:var(--amplify-components-togglebutton-primary-pressed-hover-box-shadow)}.amplify-togglebutton--link{--amplify-internal-togglebutton-link-background-color:var(--amplify-components-togglebutton-link-background-color);--amplify-internal-togglebutton-link-color:var(--amplify-components-togglebutton-link-color);--amplify-internal-togglebutton-background-color:var(--amplify-internal-togglebutton-link-background-color);--amplify-internal-togglebutton-color:var(--amplify-internal-togglebutton-link-color);--amplify-internal-togglebutton-link-focus-background-color:var(--amplify-components-togglebutton-link-focus-background-color);--amplify-internal-togglebutton-link-focus-color:var(--amplify-components-togglebutton-link-focus-color);--amplify-internal-togglebutton-focus-background-color:var(--amplify-internal-togglebutton-link-focus-background-color);--amplify-internal-togglebutton-focus-color:var(--amplify-internal-togglebutton-link-focus-color);--amplify-internal-togglebutton-link-hover-background-color:var(--amplify-components-togglebutton-link-hover-background-color);--amplify-internal-togglebutton-link-hover-color:var(--amplify-components-togglebutton-link-hover-color);--amplify-internal-togglebutton-hover-background-color:var(--amplify-internal-togglebutton-link-hover-background-color);--amplify-internal-togglebutton-hover-color:var(--amplify-internal-togglebutton-link-hover-color);--amplify-internal-togglebutton-link-disabled-color:var(--amplify-components-togglebutton-link-disabled-color);--amplify-internal-togglebutton-link-disabled-background-color:var(--amplify-components-togglebutton-link-disabled-background-color);--amplify-internal-togglebutton-disabled-color:var(--amplify-internal-togglebutton-link-disabled-color);--amplify-internal-togglebutton-disabled-background-color:var(--amplify-internal-togglebutton-link-disabled-background-color)}.amplify-togglebutton--pressed{--amplify-internal-togglebutton-link-color:var(--amplify-components-togglebutton-link-pressed-color);--amplify-internal-togglebutton-link-background-color:var(--amplify-components-togglebutton-link-pressed-background-color);--amplify-internal-togglebutton-link-focus-background-color:var(--amplify-components-togglebutton-link-pressed-focus-background-color);--amplify-internal-togglebutton-link-focus-color:var(--amplify-components-togglebutton-link-pressed-focus-color);--amplify-internal-togglebutton-link-hover-background-color:var(--amplify-components-togglebutton-link-pressed-hover-background-color);--amplify-internal-togglebutton-link-hover-color:var(--amplify-components-togglebutton-link-pressed-hover-color);--amplify-internal-togglebutton-link-disabled-color:var(--amplify-components-togglebutton-link-pressed-color)}.amplify-togglebuttongroup{align-items:var(--amplify-components-togglebuttongroup-align-items);align-content:var(--amplify-components-togglebuttongroup-align-content);justify-content:var(--amplify-components-togglebuttongroup-justify-content);gap:0}.amplify-togglebuttongroup .amplify-togglebutton:focus,.amplify-togglebuttongroup .amplify-togglebutton.amplify-togglebutton--pressed{z-index:2}.amplify-togglebuttongroup .amplify-togglebutton:not(:first-of-type){-webkit-margin-start:calc(-1*var(--amplify-components-button-border-width));border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1*var(--amplify-components-button-border-width))}@supports not (border-start-start-radius:0){.amplify-togglebuttongroup .amplify-togglebutton:not(:first-of-type){border-top-left-radius:0;border-bottom-left-radius:0}}.amplify-togglebuttongroup .amplify-togglebutton:not(:last-of-type){border-start-end-radius:0;border-end-end-radius:0}@supports not (border-end-end-radius:0){.amplify-togglebuttongroup .amplify-togglebutton:not(:last-of-type){border-top-right-radius:0;border-bottom-right-radius:0}}.amplify-inappmessaging-backdrop{background-color:var(--amplify-colors-overlay-50);z-index:1000;position:fixed;inset:0}.amplify-inappmessaging-backdrop-content-container{pointer-events:none;z-index:1001;justify-content:center;align-items:center;position:fixed;inset:0}.amplify-inappmessaging-backdrop-content{pointer-events:auto}.amplify-inappmessaging-bannermessage{box-shadow:var(--amplify-shadows-medium);height:var(--amplify-components-inappmessaging-banner-height);margin:var(--amplify-space-small);max-width:50%;width:var(--amplify-components-inappmessaging-banner-width);position:fixed}.amplify-inappmessaging-bannermessage--top{top:0}.amplify-inappmessaging-bannermessage--middle{margin:auto var(--amplify-space-small);top:0;bottom:0}.amplify-inappmessaging-bannermessage--bottom{bottom:0}.amplify-inappmessaging-bannermessage--left{left:0}.amplify-inappmessaging-bannermessage--center{margin:var(--amplify-space-small)auto;left:0;right:0}.amplify-inappmessaging-bannermessage--right{right:0}.amplify-inappmessaging-bannermessage--center-middle{margin:auto;inset:0}.amplify-inappmessaging-bannermessage--full-width{max-width:initial;width:calc(100% - 2*var(--amplify-space-small))}.amplify-inappmessaging-fullscreenmessage{height:var(--amplify-components-inappmessaging-dialog-height);min-height:var(--amplify-components-inappmessaging-dialog-min-height);min-width:var(--amplify-components-inappmessaging-dialog-min-width);width:var(--amplify-components-inappmessaging-dialog-width)}.amplify-inappmessaging-fullscreenmessage--fullscreen{height:auto;width:auto;z-index:1000;position:fixed;inset:0}.amplify-inappmessaging-messagelayout{background-color:var(--amplify-colors-background-primary);gap:var(--amplify-space-xxxs);max-width:100%;padding:var(--amplify-space-medium);flex-direction:column;flex-grow:1}.amplify-inappmessaging-messagelayout__button{width:100%;border-width:0}.amplify-inappmessaging-messagelayout__button,.amplify-inappmessaging-messagelayout__button:active,.amplify-inappmessaging-messagelayout__button:visited,.amplify-inappmessaging-messagelayout__button:hover,.amplify-inappmessaging-messagelayout__button:focus{background-color:var(--amplify-components-inappmessaging-button-background-color);border-radius:var(--amplify-components-inappmessaging-button-border-radius);color:var(--amplify-components-inappmessaging-button-color)}.amplify-inappmessaging-messagelayout__button--dark:active,.amplify-inappmessaging-messagelayout__button--dark:visited,.amplify-inappmessaging-messagelayout__button--light:active,.amplify-inappmessaging-messagelayout__button--light:visited{filter:brightness()}.amplify-inappmessaging-messagelayout__button--dark:hover,.amplify-inappmessaging-messagelayout__button--dark:focus{filter:brightness(120%)}.amplify-inappmessaging-messagelayout__button--light:hover,.amplify-inappmessaging-messagelayout__button--light:focus{filter:brightness(80%)}.amplify-inappmessaging-messagelayout__close-button,.amplify-inappmessaging-messagelayout__close-button:active,.amplify-inappmessaging-messagelayout__close-button:visited{color:var(--amplify-colors-neutral-80)}.amplify-inappmessaging-messagelayout__close-button:hover,.amplify-inappmessaging-messagelayout__close-button:focus{color:var(--amplify-colors-neutral-100)}.amplify-inappmessaging-messagelayout__content{flex-grow:1;overflow:hidden}.amplify-inappmessaging-messagelayout__content--horizontal{flex-direction:row}.amplify-inappmessaging-messagelayout__content--vertical{flex-direction:column;justify-content:center}.amplify-inappmessaging-messagelayout__header{font-size:var(--amplify-components-inappmessaging-header-font-size);font-weight:var(--amplify-components-inappmessaging-header-font-weight);flex-shrink:0}.amplify-inappmessaging-messagelayout__image-container{justify-content:center;align-items:center;display:flex;position:relative}.amplify-inappmessaging-messagelayout__image-container img{max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;position:absolute}.amplify-inappmessaging-messagelayout__image-container--horizontal{max-width:15%;min-width:15%}.amplify-inappmessaging-messagelayout__image-container--vertical{max-height:40%;min-height:40%}.amplify-inappmessaging-messagelayout__text-container{gap:var(--amplify-space-xxxs);flex-direction:column;overflow-y:auto}.amplify-inappmessaging-messagelayout__text-container--horizontal{flex-grow:1}.amplify-inappmessaging-messagelayout__text-container--vertical{flex-grow:0}.amplify-inappmessaging-modalmessage{height:initial;pointer-events:none;width:initial;z-index:1000;justify-content:center;align-items:center;position:fixed;inset:0}.amplify-inappmessaging-modalmessage__dialog{box-shadow:var(--amplify-shadows-medium);height:var(--amplify-components-inappmessaging-dialog-height);min-height:var(--amplify-components-inappmessaging-dialog-min-height);min-width:var(--amplify-components-inappmessaging-dialog-min-width);pointer-events:auto;width:var(--amplify-components-inappmessaging-dialog-width)}.amplify-inappmessaging-modalmessage__dialog--full-width{width:100%;margin:var(--amplify-space-small)}[data-label-position=start]{flex-direction:row}[data-label-position=end]{flex-direction:row-reverse}[data-label-position=top]{flex-direction:column}[data-label-position=bottom]{flex-direction:column-reverse}.amplify-visually-hidden{width:1px;height:1px;fill:#0000;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;margin:-1px;padding:0;position:absolute;overflow:hidden}.maplibregl-ctrl-geocoder,.maplibregl-ctrl-geocoder *,.maplibregl-ctrl-geocoder :after,.maplibregl-ctrl-geocoder :before{box-sizing:border-box}.maplibregl-ctrl-geocoder{width:100%;min-width:240px;z-index:1;background-color:#fff;border-radius:4px;font-family:Open Sans,Helvetica Neue,Arial,Helvetica,sans-serif;font-size:18px;line-height:24px;transition:width .25s,min-width .25s;position:relative}.maplibregl-ctrl-geocoder--input{font:inherit;width:100%;height:50px;color:#404040;color:#000000bf;text-overflow:ellipsis;white-space:nowrap;background-color:#0000;border:0;margin:0;padding:6px 45px;overflow:hidden}.maplibregl-ctrl-geocoder--input::-ms-clear{display:none}.maplibregl-ctrl-geocoder--input:focus{color:#404040;color:#000000bf;box-shadow:none;outline:thin dotted}.maplibregl-ctrl-geocoder .maplibregl-ctrl-geocoder--pin-right>*{z-index:2;display:none;position:absolute;top:7px;right:8px}.maplibregl-ctrl-geocoder,.maplibregl-ctrl-geocoder .suggestions{box-shadow:0 0 10px 2px #0000001a}.maplibregl-ctrl-geocoder.maplibregl-ctrl-geocoder--collapsed{width:50px;min-width:50px;transition:width .25s,min-width .25s}.maplibregl-ctrl-geocoder .suggestions{width:100%;z-index:1000;background-color:#fff;border-radius:4px;margin:0;padding:0;font-size:15px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;overflow:hidden}.maplibregl-ctrl-bottom-left .suggestions,.maplibregl-ctrl-bottom-right .suggestions{top:auto;bottom:100%}.maplibregl-ctrl-geocoder .suggestions>li>a{cursor:default;color:#404040;padding:6px 12px;display:block}.maplibregl-ctrl-geocoder .suggestions>.active>a,.maplibregl-ctrl-geocoder .suggestions>li>a:hover{color:#404040;cursor:pointer;background-color:#f3f3f3;text-decoration:none}.maplibregl-ctrl-geocoder--suggestion{flex-direction:row;align-items:center;display:flex}.maplibre-ctrl-geocoder--suggestion-icon{min-width:30px;min-height:24px;max-width:30px;max-height:24px;padding-right:12px}.maplibregl-ctrl-geocoder--suggestion-info{flex-direction:column;display:flex}.maplibregl-ctrl-geocoder--suggestion-match{font-weight:700}.maplibregl-ctrl-geocoder--suggestion-title,.maplibregl-ctrl-geocoder--suggestion-address{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.maplibregl-ctrl-geocoder--result{flex-direction:row;align-items:center;display:flex}.maplibre-ctrl-geocoder--result-icon{min-width:30px;min-height:24px;max-width:30px;max-height:24px;padding-right:12px}.maplibregl-ctrl-geocoder--result-title{font-weight:700}.maplibregl-ctrl-geocoder--result-title,.maplibregl-ctrl-geocoder--result-address{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.maplibregl-ctrl-geocoder--icon{vertical-align:middle;speak:none;fill:#757575;display:inline-block;top:15px}.maplibregl-ctrl-geocoder--icon-search{width:23px;height:23px;position:absolute;top:13px;left:12px}.maplibregl-ctrl-geocoder--button{cursor:pointer;background:#fff;border:none;margin:0;padding:0;line-height:1}.maplibregl-ctrl-geocoder--icon-close{width:20px;height:20px;margin-top:8px;margin-right:3px}.maplibregl-ctrl-geocoder--button:hover .maplibregl-ctrl-geocoder--icon-close{fill:#909090}.maplibregl-ctrl-geocoder--icon-loading{width:26px;height:26px;margin-top:5px;margin-right:0;animation:.8s cubic-bezier(.45,.05,.55,.95) infinite rotate}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media screen and (min-width:640px){.maplibregl-ctrl-geocoder.maplibregl-ctrl-geocoder--collapsed{width:36px;min-width:36px}.maplibregl-ctrl-geocoder{width:33.3333%;max-width:360px;font-size:15px;line-height:20px}.maplibregl-ctrl-geocoder .suggestions{font-size:13px}.maplibregl-ctrl-geocoder--icon{top:8px}.maplibregl-ctrl-geocoder--icon-close{width:16px;height:16px;margin-top:3px;margin-right:0}.maplibregl-ctrl-geocoder--icon-search{width:20px;height:20px;left:7px}.maplibregl-ctrl-geocoder--input{height:36px;padding:6px 35px}.maplibregl-ctrl-geocoder--icon-loading{width:26px;height:26px;margin-top:-2px;margin-right:-5px}.maplibre-gl-geocoder--error{color:#909090;text-align:center;padding:6px 12px;font-size:16px}}.maplibregl-ctrl-geocoder{text-align:initial}.mapboxgl-popup-tip{display:none}.maplibre-ctrl-geocoder--suggestion{color:#000;word-wrap:break-word;text-align:initial;background:#fff;border:2px solid #0000001f;border-radius:4px;margin:-10px -10px -15px;padding:20px}.maplibre-ctrl-geocoder--suggestion-title{font-weight:700}.mapboxgl-map,.maplibregl-map{-webkit-tap-highlight-color:#0000;font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;position:relative;overflow:hidden}.mapboxgl-canvas,.maplibregl-canvas{position:absolute;top:0;left:0}.mapboxgl-map:-webkit-full-screen,.maplibregl-map:-webkit-full-screen{height:100%;width:100%}.mapboxgl-map:fullscreen,.maplibregl-map:fullscreen{height:100%;width:100%}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass,.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer,.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active,.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right,.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;z-index:2;position:absolute}.mapboxgl-ctrl-top-left,.maplibregl-ctrl-top-left{top:0;left:0}.mapboxgl-ctrl-top-right,.maplibregl-ctrl-top-right{top:0;right:0}.mapboxgl-ctrl-bottom-left,.maplibregl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right,.maplibregl-ctrl-bottom-right{bottom:0;right:0}.mapboxgl-ctrl,.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl,.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.mapboxgl-ctrl-top-right .mapboxgl-ctrl,.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl,.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl,.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.mapboxgl-ctrl-group,.maplibregl-ctrl-group{background:#fff;border-radius:4px}.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px #0000001a}@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button,.maplibregl-ctrl-group button{box-sizing:border-box;cursor:pointer;height:29px;width:29px;background-color:#0000;border:0;outline:none;padding:0;display:block}.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon,.maplibregl-ctrl button .maplibregl-ctrl-icon{height:100%;width:100%;background-position:50%;background-repeat:no-repeat;display:block}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon,.maplibregl-ctrl-icon{background-color:#0000}.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl button::-moz-focus-inner,.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus,.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled,.maplibregl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}.mapboxgl-ctrl button:not(:disabled):hover,.maplibregl-ctrl button:not(:disabled):hover{background-color:#0000000d}.mapboxgl-ctrl-group button:focus:focus-visible,.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible),.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl-group button:focus:first-child,.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:focus:last-child,.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:focus:only-child,.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:2s linear infinite maplibregl-spin}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{cursor:pointer;height:23px;width:88px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;margin:0 0 -4px -4px;display:block;overflow:hidden}a.mapboxgl-ctrl-logo.mapboxgl-compact,a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-color:#0000;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib,.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:#ffffff80;margin:0;padding:0 5px}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact,.maplibregl-ctrl-attrib.maplibregl-compact{min-height:20px;background-color:#fff;border-radius:12px;margin:10px;padding:2px 24px 2px 0;position:relative}.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-attrib.maplibregl-compact-show{visibility:visible;padding:2px 28px 2px 8px}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib-button{box-sizing:border-box;cursor:pointer;height:24px;width:24px;background-color:#ffffff80;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;outline:none;display:none;position:absolute;top:0;right:0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:#0000000d}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;right:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;left:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.mapboxgl-ctrl-attrib a,.maplibregl-ctrl-attrib a{color:#000000bf;text-decoration:none}.mapboxgl-ctrl-attrib a:hover,.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-attrib-empty,.maplibregl-attrib-empty{display:none}.mapboxgl-ctrl-scale,.maplibregl-ctrl-scale{box-sizing:border-box;color:#333;background-color:#ffffffbf;border:2px solid #333;border-top:#333;padding:0 5px;font-size:10px}.mapboxgl-popup,.maplibregl-popup{pointer-events:none;will-change:transform;display:flex;position:absolute;top:0;left:0}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right,.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right,.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.mapboxgl-popup-anchor-left,.maplibregl-popup-anchor-left{flex-direction:row}.mapboxgl-popup-anchor-right,.maplibregl-popup-anchor-right{flex-direction:row-reverse}.mapboxgl-popup-tip,.maplibregl-popup-tip{height:0;width:0;z-index:1;border:10px solid #0000}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip,.maplibregl-popup-anchor-top .maplibregl-popup-tip{border-top:none;border-bottom-color:#fff;align-self:center}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{border-top:none;border-bottom-color:#fff;border-left:none;align-self:flex-start}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{border-top:none;border-bottom-color:#fff;border-right:none;align-self:flex-end}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{border-top-color:#fff;border-bottom:none;align-self:center}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{border-top-color:#fff;border-bottom:none;border-left:none;align-self:flex-start}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{border-top-color:#fff;border-bottom:none;border-right:none;align-self:flex-end}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-left .maplibregl-popup-tip{border-left:none;border-right-color:#fff;align-self:center}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:#fff;border-right:none;align-self:center}.mapboxgl-popup-close-button,.maplibregl-popup-close-button{cursor:pointer;background-color:#0000;border:0;border-radius:0 3px 0 0;position:absolute;top:0;right:0}.mapboxgl-popup-close-button:hover,.maplibregl-popup-close-button:hover{background-color:#0000000d}.mapboxgl-popup-content,.maplibregl-popup-content{pointer-events:auto;background:#fff;border-radius:3px;padding:15px 10px;position:relative;box-shadow:0 1px 2px #0000001a}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content,.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content,.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer,.maplibregl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *,.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer,.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer,.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.mapboxgl-marker,.maplibregl-marker{will-change:transform;position:absolute;top:0;left:0}.mapboxgl-user-location-dot,.maplibregl-user-location-dot{height:15px;width:15px;background-color:#1da1f2;border-radius:50%}.mapboxgl-user-location-dot:before,.maplibregl-user-location-dot:before{content:"";height:15px;width:15px;background-color:#1da1f2;border-radius:50%;animation:2s infinite maplibregl-user-location-dot-pulse;position:absolute}.mapboxgl-user-location-dot:after,.maplibregl-user-location-dot:after{box-sizing:border-box;content:"";height:19px;width:19px;border:2px solid #fff;border-radius:50%;position:absolute;top:-2px;left:-2px;box-shadow:0 0 3px #00000059}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.mapboxgl-user-location-dot-stale,.maplibregl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after,.maplibregl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle,.maplibregl-user-location-accuracy-circle{height:1px;width:1px;background-color:#1da1f233;border-radius:100%}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active,.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom,.maplibregl-boxzoom{height:0;opacity:.5;width:0;background:#fff;border:2px dotted #202020;position:absolute;top:0;left:0} \ No newline at end of file diff --git a/resources/js/amplify.js b/resources/js/amplify.js deleted file mode 100644 index 9619eaaaf806..000000000000 --- a/resources/js/amplify.js +++ /dev/null @@ -1,142 +0,0 @@ -(()=>{function e(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};function n(e){return e&&e.__esModule?e.default:e}var r={},o={},i=t.parcelRequire3974;null==i&&((i=function(e){if(e in r)return r[e].exports;if(e in o){var t=o[e];delete o[e];var n={id:e,exports:{}};return r[e]=n,t.call(n.exports,n,n.exports),n.exports}var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){o[e]=t},t.parcelRequire3974=i),i.register("65Cyg",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Sha256=void 0;var n=i("5p1Rg"),r=i("5hFca"),o=i("fRjTy"),a=i("cZl6p"),s=function(){function e(e){if(this.hash=new o.RawSha256,e){this.outer=new o.RawSha256;var t=function(e){var t=(0,a.convertToBuffer)(e);if(t.byteLength>r.BLOCK_SIZE){var n=new o.RawSha256;n.update(t),t=n.digest()}var i=new Uint8Array(r.BLOCK_SIZE);return i.set(t),i}(e),n=new Uint8Array(r.BLOCK_SIZE);n.set(t);for(var i=0;ir)),e(t.exports,"__generator",(()=>o)),e(t.exports,"__exportStar",(()=>i));function r(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]n.MAX_HASHABLE_LENGTH)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===n.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%n.BLOCK_SIZE>=n.BLOCK_SIZE-8){for(var o=this.bufferLength;o>>24&255,i[4*o+1]=this.state[o]>>>16&255,i[4*o+2]=this.state[o]>>>8&255,i[4*o+3]=this.state[o]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],u=t[5],l=t[6],c=t[7],d=0;d>>17|f<<15)^(f>>>19|f<<13)^f>>>10,p=((f=this.temp[d-15])>>>7|f<<25)^(f>>>18|f<<14)^f>>>3;this.temp[d]=(h+this.temp[d-7]|0)+(p+this.temp[d-16]|0)}var m=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&u^~s&l)|0)+(c+(n.KEY[d]+this.temp[d]|0)|0)|0,g=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&o^r&i^o&i)|0;c=l,l=u,u=s,s=a+m|0,a=i,i=o,o=r,r=m+g|0}t[0]+=r,t[1]+=o,t[2]+=i,t[3]+=a,t[4]+=s,t[5]+=u,t[6]+=l,t[7]+=c},e}();e.exports.RawSha256=r})),i.register("cZl6p",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.uint32ArrayFrom=e.exports.numToUint8=e.exports.isEmptyData=e.exports.convertToBuffer=void 0;var n=i("lpS1n");Object.defineProperty(e.exports,"convertToBuffer",{enumerable:!0,get:function(){return n.convertToBuffer}});var r=i("1M09v");Object.defineProperty(e.exports,"isEmptyData",{enumerable:!0,get:function(){return r.isEmptyData}});var o=i("4qBt2");Object.defineProperty(e.exports,"numToUint8",{enumerable:!0,get:function(){return o.numToUint8}});var a=i("3jvIW");Object.defineProperty(e.exports,"uint32ArrayFrom",{enumerable:!0,get:function(){return a.uint32ArrayFrom}})})),i.register("lpS1n",(function(e,t){var n=i("bqBrJ").Buffer;Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.convertToBuffer=void 0;var r=i("gAxfE"),o=void 0!==n&&n.from?function(e){return n.from(e,"utf8")}:r.fromUtf8;e.exports.convertToBuffer=function(e){return e instanceof Uint8Array?e:"string"==typeof e?o(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}})),i.register("bqBrJ",(function(t,n){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */var r,o;e(t.exports,"Buffer",(()=>r),(e=>r=e)),e(t.exports,"INSPECT_MAX_BYTES",(()=>o),(e=>o=e));var a=i("9Et26"),s=i("bDLoS"),u="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;r=d,o=50;var l=2147483647;function c(e){if(e>l)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,d.prototype),t}function d(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return f(e,t,n)}function f(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!d.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|y(e,t),r=c(n),o=r.write(e,t);o!==n&&(r=r.slice(0,o));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(H(e,Uint8Array)){var t=new Uint8Array(e);return g(t.buffer,t.byteOffset,t.byteLength)}return m(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(H(e,ArrayBuffer)||e&&H(e.buffer,ArrayBuffer))return g(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(H(e,SharedArrayBuffer)||e&&H(e.buffer,SharedArrayBuffer)))return g(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return d.from(r,t,n);var o=function(e){if(d.isBuffer(e)){var t=0|v(e.length),n=c(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||G(e.length)?c(0):m(e);if("Buffer"===e.type&&Array.isArray(e.data))return m(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return d.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function h(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return h(e),c(e<0?0:0|v(e))}function m(e){for(var t=e.length<0?0:0|v(e.length),n=c(t),r=0;r=l)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+l.toString(16)+" bytes");return 0|e}function y(e,t){if(d.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||H(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return V(e).length;default:if(o)return r?-1:z(e).length;t=(""+t).toLowerCase(),o=!0}}function b(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return U(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return O(this,t,n);case"latin1":case"binary":return N(this,t,n);case"base64":return x(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function w(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function S(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),G(n=+n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=d.from(t,r)),d.isBuffer(t))return 0===t.length?-1:C(e,t,n,r,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):C(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function C(e,t,n,r,o){var i,a=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,n/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var c=-1;for(i=n;is&&(n=s-u),i=n;i>=0;i--){for(var d=!0,f=0;fo&&(r=o):r=o;var i=t.length;r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function x(e,t,n){return 0===t&&n===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+d<=n)switch(d){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(u=(31&l)<<6|63&i)>127&&(c=u);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(u=(15&l)<<12|(63&i)<<6|63&a)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(u=(15&l)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,d=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),o+=d}return function(e){var t=e.length;if(t<=P)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rr.length?d.from(i).copy(r,o):Uint8Array.prototype.set.call(r,i,o);else{if(!d.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,o)}o+=i.length}return r},d.byteLength=y,d.prototype._isBuffer=!0,d.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;tt&&(e+=" ... "),""},u&&(d.prototype[u]=d.prototype.inspect),d.prototype.compare=function(e,t,n,r,o){if(H(e,Uint8Array)&&(e=d.from(e,e.offset,e.byteLength)),!d.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(i,a),u=this.slice(r,o),l=e.slice(t,n),c=0;c>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return E(this,e,t,n);case"utf8":case"utf-8":return A(this,e,t,n);case"ascii":case"latin1":case"binary":return _(this,e,t,n);case"base64":return I(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var P=4096;function O(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,n,r,o,i){if(!d.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function D(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,o){return t=+t,n>>>=0,o||D(e,0,n,4),s.write(e,t,n,r,23,4),n+4}function L(e,t,n,r,o){return t=+t,n>>>=0,o||D(e,0,n,8),s.write(e,t,n,r,52,8),n+8}d.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},d.prototype.readUint8=d.prototype.readUInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),this[e]},d.prototype.readUint16LE=d.prototype.readUInt16LE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]|this[e+1]<<8},d.prototype.readUint16BE=d.prototype.readUInt16BE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]<<8|this[e+1]},d.prototype.readUint32LE=d.prototype.readUInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},d.prototype.readUint32BE=d.prototype.readUInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},d.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},d.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},d.prototype.readInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},d.prototype.readInt16LE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},d.prototype.readInt16BE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},d.prototype.readInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},d.prototype.readInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},d.prototype.readFloatLE=function(e,t){return e>>>=0,t||R(e,4,this.length),s.read(this,e,!0,23,4)},d.prototype.readFloatBE=function(e,t){return e>>>=0,t||R(e,4,this.length),s.read(this,e,!1,23,4)},d.prototype.readDoubleLE=function(e,t){return e>>>=0,t||R(e,8,this.length),s.read(this,e,!0,52,8)},d.prototype.readDoubleBE=function(e,t){return e>>>=0,t||R(e,8,this.length),s.read(this,e,!1,52,8)},d.prototype.writeUintLE=d.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i>>=0,n>>>=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},d.prototype.writeUint8=d.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,1,255,0),this[t]=255&e,t+1},d.prototype.writeUint16LE=d.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeUint16BE=d.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeUint32LE=d.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},d.prototype.writeUint32BE=d.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},d.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},d.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},d.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},d.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},d.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},d.prototype.writeDoubleLE=function(e,t,n){return L(this,e,t,!0,n)},d.prototype.writeDoubleBE=function(e,t,n){return L(this,e,t,!1,n)},d.prototype.copy=function(e,t,n,r){if(!d.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function V(e){return a.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function W(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}function H(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function G(e){return e!=e}var q=function(){for(var e="0123456789abcdef",t=new Array(256),n=0;n<16;++n)for(var r=16*n,o=0;o<16;++o)t[r+o]=e[n]+e[o];return t}()})),i.register("9Et26",(function(t,n){var r,o;e(t.exports,"toByteArray",(()=>r),(e=>r=e)),e(t.exports,"fromByteArray",(()=>o),(e=>o=e)),r=function(e){var t,n,r=d(e),o=r[0],i=r[1],u=new s(function(e,t,n){return 3*(t+n)/4-n}(0,o,i)),l=0,c=i>0?o-4:o;for(n=0;n>16&255,u[l++]=t>>8&255,u[l++]=255&t;2===i&&(t=a[e.charCodeAt(n)]<<2|a[e.charCodeAt(n+1)]>>4,u[l++]=255&t);1===i&&(t=a[e.charCodeAt(n)]<<10|a[e.charCodeAt(n+1)]<<4|a[e.charCodeAt(n+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t);return u},o=function(e){for(var t,n=e.length,r=n%3,o=[],a=16383,s=0,u=n-r;su?u:s+a));1===r?(t=e[n-1],o.push(i[t>>2]+i[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+"="));return o.join("")};for(var i=[],a=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,c=u.length;l0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function f(e,t,n){for(var r,o,a=[],s=t;s>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return a.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63})),i.register("bDLoS",(function(t,n){ -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */var r,o;e(t.exports,"read",(()=>r),(e=>r=e)),e(t.exports,"write",(()=>o),(e=>o=e)),r=function(e,t,n,r,o){var i,a,s=8*o-r-1,u=(1<>1,c=-7,d=n?o-1:0,f=n?-1:1,h=e[t+d];for(d+=f,i=h&(1<<-c)-1,h>>=-c,c+=s;c>0;i=256*i+e[t+d],d+=f,c-=8);for(a=i&(1<<-c)-1,i>>=-c,c+=r;c>0;a=256*a+e[t+d],d+=f,c-=8);if(0===i)i=1-l;else{if(i===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),i-=l}return(h?-1:1)*a*Math.pow(2,i-r)},o=function(e,t,n,r,o,i){var a,s,u,l=8*i-o-1,c=(1<>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:i-1,p=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+d>=1?f/u:f*Math.pow(2,1-d))*u>=2&&(a++,u/=2),a+d>=c?(s=0,a=c):a+d>=1?(s=(t*u-1)*Math.pow(2,o),a+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,o),a=0));o>=8;e[n+h]=255&s,h+=p,s/=256,o-=8);for(a=a<0;e[n+h]=255&a,h+=p,a/=256,l-=8);e[n+h-p]|=128*m}})),i.register("gAxfE",(function(t,n){e(t.exports,"fromUtf8",(()=>a));var r=i("gx0RP"),o=i("cOjs6");const a=e=>"function"==typeof TextEncoder?(0,o.fromUtf8)(e):(0,r.fromUtf8)(e)})),i.register("gx0RP",(function(t,n){e(t.exports,"fromUtf8",(()=>r)),e(t.exports,"toUtf8",(()=>o));const r=e=>{const t=[];for(let n=0,r=e.length;n>6|192,63&r|128);else if(n+1>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}else t.push(r>>12|224,r>>6&63|128,63&r|128)}return Uint8Array.from(t)},o=e=>{let t="";for(let n=0,r=e.length;ne.toString(16))).join("%");t+=decodeURIComponent(o)}else t+=String.fromCharCode((15&r)<<12|(63&e[++n])<<6|63&e[++n])}return t}})),i.register("cOjs6",(function(t,n){function r(e){return(new TextEncoder).encode(e)}function o(e){return new TextDecoder("utf-8").decode(e)}e(t.exports,"fromUtf8",(()=>r)),e(t.exports,"toUtf8",(()=>o))})),i.register("1M09v",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.isEmptyData=void 0,e.exports.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}})),i.register("4qBt2",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.numToUint8=void 0,e.exports.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}})),i.register("3jvIW",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.uint32ArrayFrom=void 0,e.exports.uint32ArrayFrom=function(e){if(!Array.from){for(var t=new Uint32Array(e.length);0= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=c-d,E=Math.floor,A=String.fromCharCode;function _(e){throw new RangeError(S[e])}function I(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function k(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+I((e=e.replace(w,".")).split("."),t).join(".")}function x(e){for(var t,n,r=[],o=0,i=e.length;o=55296&&t<=56319&&o65535&&(t+=A((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=A(e)})).join("")}function P(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function O(e,t,n){var r=0;for(e=n?E(e/p):e>>1,e+=E(e/t);e>C*f>>1;r+=c)e=E(e/C);return E(r+(C+1)*e/(e+h))}function N(e){var t,n,r,o,i,a,s,u,h,p,y,b=[],w=e.length,S=0,C=g,A=m;for((n=e.lastIndexOf(v))<0&&(n=0),r=0;r=128&&_("not-basic"),b.push(e.charCodeAt(r));for(o=n>0?n+1:0;o=w&&_("invalid-input"),((u=(y=e.charCodeAt(o++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:c)>=c||u>E((l-S)/a))&&_("overflow"),S+=u*a,!(u<(h=s<=A?d:s>=A+f?f:s-A));s+=c)a>E(l/(p=c-h))&&_("overflow"),a*=p;A=O(S-i,t=b.length+1,0==i),E(S/t)>l-C&&_("overflow"),C+=E(S/t),S%=t,b.splice(S++,0,C)}return T(b)}function U(e){var t,n,r,o,i,a,s,u,h,p,y,b,w,S,C,I=[];for(b=(e=x(e)).length,t=g,n=0,i=m,a=0;a=t&&yE((l-n)/(w=r+1))&&_("overflow"),n+=(s-t)*w,t=s,a=0;al&&_("overflow"),y==t){for(u=n,h=c;!(u<(p=h<=i?d:h>=i+f?f:h-i));h+=c)C=u-p,S=c-p,I.push(A(P(p+C%S,0))),u=E(C/S);I.push(A(P(u,0))),i=O(n,w,r==o),n=0,++r}++n,++t}return I.join("")}if(s={version:"1.4.1",ucs2:{decode:x,encode:T},decode:N,encode:U,toASCII:function(e){return k(e,(function(e){return b.test(e)?"xn--"+U(e):e}))},toUnicode:function(e){return k(e,(function(e){return y.test(e)?N(e.slice(4).toLowerCase()):e}))}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",(function(){return s}));else if(o&&i)if(e.exports==o)i.exports=s;else for(u in s)s.hasOwnProperty(u)&&(o[u]=s[u]);else r.punycode=s}(this)})),i.register("6e4ym",(function(e,t){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,o,i){t=t||"&",o=o||"=";var a={};if("string"!=typeof e||0===e.length)return a;var s=/\+/g;e=e.split(t);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var l=e.length;u>0&&l>u&&(l=u);for(var c=0;c=0?(d=m.substr(0,g),f=m.substr(g+1)):(d=m,f=""),h=decodeURIComponent(d),p=decodeURIComponent(f),n(a,h)?r(a[h])?a[h].push(p):a[h]=[a[h],p]:a[h]=p}return a};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}})),i.register("9Pzgh",(function(e,t){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,a,s){return t=t||"&",a=a||"=",null===e&&(e=void 0),"object"==typeof e?o(i(e),(function(i){var s=encodeURIComponent(n(i))+a;return r(e[i])?o(e[i],(function(e){return s+encodeURIComponent(n(e))})).join(t):s+encodeURIComponent(n(e[i]))})).join(t):s?encodeURIComponent(n(s))+a+encodeURIComponent(n(e)):""};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e,t){if(e.map)return e.map(t);for(var n=[],r=0;ra));var r=i("7VLnb"),o=i("6M84l");const a=e=>"function"==typeof TextEncoder?(0,o.fromUtf8)(e):(0,r.fromUtf8)(e)})),i.register("7VLnb",(function(t,n){e(t.exports,"fromUtf8",(()=>r)),e(t.exports,"toUtf8",(()=>o));const r=e=>{const t=[];for(let n=0,r=e.length;n>6|192,63&r|128);else if(n+1>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}else t.push(r>>12|224,r>>6&63|128,63&r|128)}return Uint8Array.from(t)},o=e=>{let t="";for(let n=0,r=e.length;ne.toString(16))).join("%");t+=decodeURIComponent(o)}else t+=String.fromCharCode((15&r)<<12|(63&e[++n])<<6|63&e[++n])}return t}})),i.register("6M84l",(function(t,n){function r(e){return(new TextEncoder).encode(e)}function o(e){return new TextDecoder("utf-8").decode(e)}e(t.exports,"fromUtf8",(()=>r)),e(t.exports,"toUtf8",(()=>o))})),i.register("kVhRH",(function(t,n){e(t.exports,"locateWindow",(()=>o));const r={};function o(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:r}})),i.register("eUkfM",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.Sha256=void 0;var n=i("jnxnd"),r=i("3tk8r"),o=i("kVhRH"),a=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,i){(0,o.locateWindow)().crypto.subtle.importKey("raw",(0,n.convertToBuffer)(e),r.SHA_256_HMAC_ALGO,!1,["sign"]).then(t,i)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!(0,n.isEmptyData)(e)){var t=(0,n.convertToBuffer)(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return(0,o.locateWindow)().crypto.subtle.sign(r.SHA_256_HMAC_ALGO,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):(0,n.isEmptyData)(this.toHash)?Promise.resolve(r.EMPTY_DATA_SHA_256):Promise.resolve().then((function(){return(0,o.locateWindow)().crypto.subtle.digest(r.SHA_256_HASH,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e}();e.exports.Sha256=a})),i.register("jnxnd",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.uint32ArrayFrom=e.exports.numToUint8=e.exports.isEmptyData=e.exports.convertToBuffer=void 0;var n=i("dF44t");Object.defineProperty(e.exports,"convertToBuffer",{enumerable:!0,get:function(){return n.convertToBuffer}});var r=i("hvsEY");Object.defineProperty(e.exports,"isEmptyData",{enumerable:!0,get:function(){return r.isEmptyData}});var o=i("lL2sr");Object.defineProperty(e.exports,"numToUint8",{enumerable:!0,get:function(){return o.numToUint8}});var a=i("d4K4x");Object.defineProperty(e.exports,"uint32ArrayFrom",{enumerable:!0,get:function(){return a.uint32ArrayFrom}})})),i.register("dF44t",(function(e,t){var n=i("bqBrJ").Buffer;Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.convertToBuffer=void 0;var r=i("hbpSZ"),o=void 0!==n&&n.from?function(e){return n.from(e,"utf8")}:r.fromUtf8;e.exports.convertToBuffer=function(e){return e instanceof Uint8Array?e:"string"==typeof e?o(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}})),i.register("hvsEY",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.isEmptyData=void 0,e.exports.isEmptyData=function(e){return"string"==typeof e?0===e.length:0===e.byteLength}})),i.register("lL2sr",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.numToUint8=void 0,e.exports.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}})),i.register("d4K4x",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.uint32ArrayFrom=void 0,e.exports.uint32ArrayFrom=function(e){if(!Array.from){for(var t=new Uint32Array(e.length);0r)),e(t.exports,"__generator",(()=>o)),e(t.exports,"__exportStar",(()=>i));function r(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]r));function r(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||(t[n]=e[n])}})),i.register("kwfVC",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0})})),i.register("7cHvw",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0})})),i.register("d5Zms",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0})})),i.register("jIVfZ",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0})})),i.register("8jKKL",(function(e,t){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.isMsWindow=void 0;var n=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];e.exports.isMsWindow=function(e){if(function(e){return"MSInputMethodContext"in e&&"msCrypto"in e}(e)&&void 0!==e.msCrypto.subtle){var t=e.msCrypto,r=t.getRandomValues,o=t.subtle;return n.map((function(e){return o[e]})).concat(r).every((function(e){return"function"==typeof e}))}return!1}})),i.register("9kLsK",(function(e,t){})),i.register("43aOD",(function(t,n){var r;function o(e,t){return t=t||{},new Promise((function(n,r){var o=new XMLHttpRequest,i=[],a=[],s={},u=function(){return{ok:2==(o.status/100|0),statusText:o.statusText,status:o.status,url:o.responseURL,text:function(){return Promise.resolve(o.responseText)},json:function(){return Promise.resolve(o.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([o.response]))},clone:u,headers:{keys:function(){return i},entries:function(){return a},get:function(e){return s[e.toLowerCase()]},has:function(e){return e.toLowerCase()in s}}}};for(var l in o.open(t.method||"get",e,!0),o.onload=function(){o.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,n){i.push(t=t.toLowerCase()),a.push([t,n]),s[t]=s[t]?s[t]+","+n:n})),n(u())},o.onerror=r,o.withCredentials="include"==t.credentials,t.headers)o.setRequestHeader(l,t.headers[l]);o.send(t.body||null)}))}r=t.exports,Object.defineProperty(r,"__esModule",{value:!0,configurable:!0}),e(t.exports,"default",(()=>o))})),i.register("40w2c",(function(t,n){ -/** @license React v17.0.2 - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var r,o,a;e(t.exports,"Fragment",(()=>r),(e=>r=e)),e(t.exports,"jsx",(()=>o),(e=>o=e)),e(t.exports,"jsxs",(()=>a),(e=>a=e)),i("1oyVN");var s=i("8dQZc"),u=60103;if(r=60107,"function"==typeof Symbol&&Symbol.for){var l=Symbol.for;u=l("react.element"),r=l("react.fragment")}var c=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,d=Object.prototype.hasOwnProperty,f={key:!0,ref:!0,__self:!0,__source:!0};function h(e,t,n){var r,o={},i=null,a=null;for(r in void 0!==n&&(i=""+n),void 0!==t.key&&(i=""+t.key),void 0!==t.ref&&(a=t.ref),t)d.call(t,r)&&!f.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:u,type:e,key:i,ref:a,props:o,_owner:c.current}}o=h,a=h})),i.register("1oyVN",(function(e,t){ -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -"use strict";var n=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var i,a,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;ur),(e=>r=e));var o=i("8dQZc"),a=i("4x9RK");var s="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},u=a.useSyncExternalStore,l=o.useRef,c=o.useEffect,d=o.useMemo,f=o.useDebugValue;r=function(e,t,n,r,o){var i=l(null);if(null===i.current){var a={hasValue:!1,value:null};i.current=a}else a=i.current;i=d((function(){function e(e){if(!l){if(l=!0,i=e,e=r(e),void 0!==o&&a.hasValue){var t=a.value;if(o(t,e))return u=t}return u=e}if(t=u,s(i,e))return t;var n=r(e);return void 0!==o&&o(t,n)?t:(i=e,u=n)}var i,u,l=!1,c=void 0===n?null:n;return[function(){return e(t())},null===c?void 0:function(){return e(c())}]}),[t,n,r,o]);var h=u(e,i[0],i[1]);return c((function(){a.hasValue=!0,a.value=h}),[h]),f(h),h}})),i.register("4x9RK",(function(e,t){"use strict";e.exports=i("ls4f2")})),i.register("ls4f2",(function(t,n){ -/** - * @license React - * use-sync-external-store-shim.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var r;e(t.exports,"useSyncExternalStore",(()=>r),(e=>r=e));var o=i("8dQZc");var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},s=o.useState,u=o.useEffect,l=o.useLayoutEffect,c=o.useDebugValue;function d(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(e){return!0}}var f="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=s({inst:{value:n,getSnapshot:t}}),o=r[0].inst,i=r[1];return l((function(){o.value=n,o.getSnapshot=t,d(o)&&i({inst:o})}),[e,n,t]),u((function(){return d(o)&&i({inst:o}),e((function(){d(o)&&i({inst:o})}))}),[e]),c(n),n};r=void 0!==o.useSyncExternalStore?o.useSyncExternalStore:f})),i.register("1sdKR",(function(t,n){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */var r,o;e(t.exports,"Buffer",(()=>r),(e=>r=e)),e(t.exports,"INSPECT_MAX_BYTES",(()=>o),(e=>o=e));var a=i("8MpZU"),s=i("29R5P"),u="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;r=d,o=50;var l=2147483647;function c(e){if(e>l)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,d.prototype),t}function d(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return f(e,t,n)}function f(e,t,n){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!d.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|y(e,t),r=c(n),o=r.write(e,t);o!==n&&(r=r.slice(0,o));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(H(e,Uint8Array)){var t=new Uint8Array(e);return g(t.buffer,t.byteOffset,t.byteLength)}return m(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(H(e,ArrayBuffer)||e&&H(e.buffer,ArrayBuffer))return g(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(H(e,SharedArrayBuffer)||e&&H(e.buffer,SharedArrayBuffer)))return g(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return d.from(r,t,n);var o=function(e){if(d.isBuffer(e)){var t=0|v(e.length),n=c(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!=typeof e.length||G(e.length)?c(0):m(e);if("Buffer"===e.type&&Array.isArray(e.data))return m(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return d.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function h(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return h(e),c(e<0?0:0|v(e))}function m(e){for(var t=e.length<0?0:0|v(e.length),n=c(t),r=0;r=l)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+l.toString(16)+" bytes");return 0|e}function y(e,t){if(d.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||H(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return V(e).length;default:if(o)return r?-1:z(e).length;t=(""+t).toLowerCase(),o=!0}}function b(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return U(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return O(this,t,n);case"latin1":case"binary":return N(this,t,n);case"base64":return x(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function w(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function S(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),G(n=+n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=d.from(t,r)),d.isBuffer(t))return 0===t.length?-1:C(e,t,n,r,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):C(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function C(e,t,n,r,o){var i,a=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,n/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var c=-1;for(i=n;is&&(n=s-u),i=n;i>=0;i--){for(var d=!0,f=0;fo&&(r=o):r=o;var i=t.length;r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function x(e,t,n){return 0===t&&n===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+d<=n)switch(d){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(u=(31&l)<<6|63&i)>127&&(c=u);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(u=(15&l)<<12|(63&i)<<6|63&a)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(u=(15&l)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,d=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),o+=d}return function(e){var t=e.length;if(t<=P)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rr.length?d.from(i).copy(r,o):Uint8Array.prototype.set.call(r,i,o);else{if(!d.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,o)}o+=i.length}return r},d.byteLength=y,d.prototype._isBuffer=!0,d.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;tt&&(e+=" ... "),""},u&&(d.prototype[u]=d.prototype.inspect),d.prototype.compare=function(e,t,n,r,o){if(H(e,Uint8Array)&&(e=d.from(e,e.offset,e.byteLength)),!d.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(i,a),u=this.slice(r,o),l=e.slice(t,n),c=0;c>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return E(this,e,t,n);case"utf8":case"utf-8":return A(this,e,t,n);case"ascii":case"latin1":case"binary":return _(this,e,t,n);case"base64":return I(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var P=4096;function O(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,n,r,o,i){if(!d.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function D(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,o){return t=+t,n>>>=0,o||D(e,0,n,4),s.write(e,t,n,r,23,4),n+4}function L(e,t,n,r,o){return t=+t,n>>>=0,o||D(e,0,n,8),s.write(e,t,n,r,52,8),n+8}d.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},d.prototype.readUint8=d.prototype.readUInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),this[e]},d.prototype.readUint16LE=d.prototype.readUInt16LE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]|this[e+1]<<8},d.prototype.readUint16BE=d.prototype.readUInt16BE=function(e,t){return e>>>=0,t||R(e,2,this.length),this[e]<<8|this[e+1]},d.prototype.readUint32LE=d.prototype.readUInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},d.prototype.readUint32BE=d.prototype.readUInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},d.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},d.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||R(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},d.prototype.readInt8=function(e,t){return e>>>=0,t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},d.prototype.readInt16LE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},d.prototype.readInt16BE=function(e,t){e>>>=0,t||R(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},d.prototype.readInt32LE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},d.prototype.readInt32BE=function(e,t){return e>>>=0,t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},d.prototype.readFloatLE=function(e,t){return e>>>=0,t||R(e,4,this.length),s.read(this,e,!0,23,4)},d.prototype.readFloatBE=function(e,t){return e>>>=0,t||R(e,4,this.length),s.read(this,e,!1,23,4)},d.prototype.readDoubleLE=function(e,t){return e>>>=0,t||R(e,8,this.length),s.read(this,e,!0,52,8)},d.prototype.readDoubleBE=function(e,t){return e>>>=0,t||R(e,8,this.length),s.read(this,e,!1,52,8)},d.prototype.writeUintLE=d.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i>>=0,n>>>=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},d.prototype.writeUint8=d.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,1,255,0),this[t]=255&e,t+1},d.prototype.writeUint16LE=d.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeUint16BE=d.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeUint32LE=d.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},d.prototype.writeUint32BE=d.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},d.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},d.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},d.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},d.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},d.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},d.prototype.writeDoubleLE=function(e,t,n){return L(this,e,t,!0,n)},d.prototype.writeDoubleBE=function(e,t,n){return L(this,e,t,!1,n)},d.prototype.copy=function(e,t,n,r){if(!d.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function V(e){return a.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function W(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}function H(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function G(e){return e!=e}var q=function(){for(var e="0123456789abcdef",t=new Array(256),n=0;n<16;++n)for(var r=16*n,o=0;o<16;++o)t[r+o]=e[n]+e[o];return t}()})),i.register("8MpZU",(function(t,n){var r,o;e(t.exports,"toByteArray",(()=>r),(e=>r=e)),e(t.exports,"fromByteArray",(()=>o),(e=>o=e)),r=function(e){var t,n,r=d(e),o=r[0],i=r[1],u=new s(function(e,t,n){return 3*(t+n)/4-n}(0,o,i)),l=0,c=i>0?o-4:o;for(n=0;n>16&255,u[l++]=t>>8&255,u[l++]=255&t;2===i&&(t=a[e.charCodeAt(n)]<<2|a[e.charCodeAt(n+1)]>>4,u[l++]=255&t);1===i&&(t=a[e.charCodeAt(n)]<<10|a[e.charCodeAt(n+1)]<<4|a[e.charCodeAt(n+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t);return u},o=function(e){for(var t,n=e.length,r=n%3,o=[],a=16383,s=0,u=n-r;su?u:s+a));1===r?(t=e[n-1],o.push(i[t>>2]+i[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+"="));return o.join("")};for(var i=[],a=[],s="undefined"!=typeof Uint8Array?Uint8Array:Array,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,c=u.length;l0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function f(e,t,n){for(var r,o,a=[],s=t;s>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return a.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63})),i.register("29R5P",(function(t,n){ -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */var r,o;e(t.exports,"read",(()=>r),(e=>r=e)),e(t.exports,"write",(()=>o),(e=>o=e)),r=function(e,t,n,r,o){var i,a,s=8*o-r-1,u=(1<>1,c=-7,d=n?o-1:0,f=n?-1:1,h=e[t+d];for(d+=f,i=h&(1<<-c)-1,h>>=-c,c+=s;c>0;i=256*i+e[t+d],d+=f,c-=8);for(a=i&(1<<-c)-1,i>>=-c,c+=r;c>0;a=256*a+e[t+d],d+=f,c-=8);if(0===i)i=1-l;else{if(i===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),i-=l}return(h?-1:1)*a*Math.pow(2,i-r)},o=function(e,t,n,r,o,i){var a,s,u,l=8*i-o-1,c=(1<>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:i-1,p=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+d>=1?f/u:f*Math.pow(2,1-d))*u>=2&&(a++,u/=2),a+d>=c?(s=0,a=c):a+d>=1?(s=(t*u-1)*Math.pow(2,o),a+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,o),a=0));o>=8;e[n+h]=255&s,h+=p,s/=256,o-=8);for(a=a<0;e[n+h]=255&a,h+=p,a/=256,l-=8);e[n+h-p]|=128*m}})); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var a=function(e,t){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},a(e,t)};function s(e,t){function n(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var u=function(){return u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function h(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function p(){for(var e=[],t=0;t=s){var u=console.log.bind(console);t===m.ERROR&&console.error&&(u=console.error.bind(console)),t===m.WARN&&console.warn&&(u=console.warn.bind(console));var l="["+t+"] "+this._ts()+" "+this.name,c="";if(1===o.length&&"string"==typeof o[0])u(c=l+" - "+o[0]);else if(1===o.length)c=l+" "+o[0],u(l,o[0]);else if("string"==typeof o[0]){var d=o.slice(1);1===d.length&&(d=d[0]),c=l+" - "+o[0]+" "+d,u(l+" - "+o[0],d)}else c=l+" "+o,u(l,o);try{for(var h=f(this._pluggables),p=h.next();!p.done;p=h.next()){var g=p.value,y={message:c,timestamp:Date.now()};g.pushLogs([y])}}catch(e){n={error:e}}finally{try{p&&!p.done&&(r=h.return)&&r.call(h)}finally{if(n)throw n.error}}}},e.prototype.log=function(){for(var e=[],t=0;t-1)&&(r===x||k.warn("WARNING: "+e+" is protected and dispatching on it can have unintended consequences"));var o={channel:e,payload:u({},t),source:n,patternInfo:[]};try{this._toListeners(o)}catch(e){k.error(e)}},e.prototype.listen=function(e,t,n){var r,o=this;if(void 0===n&&(n="noname"),function(e){return void 0!==e.onHubCapsule}(t))k.warn("WARNING onHubCapsule is Deprecated. Please pass in a callback."),r=t.onHubCapsule.bind(t);else{if("function"!=typeof t)throw new Error("No callback supplied to Hub");r=t}if(e instanceof RegExp)this.patterns.push({pattern:e,callback:r});else{var i=this.listeners[e];i||(i=[],this.listeners[e]=i),i.push({name:n,callback:r})}return function(){o._remove(e,r)}},e.prototype._toListeners=function(e){var t=e.channel,n=e.payload,r=this.listeners[t];if(r&&r.forEach((function(r){k.debug("Dispatching to "+t+" with ",n);try{r.callback(e)}catch(e){k.error(e)}})),this.patterns.length>0){if(!n.message)return void k.warn("Cannot perform pattern matching without a message key");var o=n.message;this.patterns.forEach((function(t){var n=o.match(t.pattern);if(n){var r=h(n).slice(1),i=u(u({},e),{patternInfo:r});try{t.callback(i)}catch(e){k.error(e)}}}))}},e}(),P=new T("__default__"),O=new y("I18n"),N=function(){function e(e){this._options=null,this._lang=null,this._dict={},this._options=Object.assign({},e),this._lang=this._options.language,!this._lang&&"undefined"!=typeof window&&window&&window.navigator&&(this._lang=window.navigator.language),O.debug(this._lang)}return e.prototype.setLanguage=function(e){this._lang=e},e.prototype.get=function(e,t){if(void 0===t&&(t=void 0),!this._lang)return void 0!==t?t:e;var n=this._lang,r=this.getByLanguage(e,n);return r||(n.indexOf("-")>0&&(r=this.getByLanguage(e,n.split("-")[0])),r||(void 0!==t?t:e))},e.prototype.getByLanguage=function(e,t,n){if(void 0===n&&(n=null),!t)return n;var r=this._dict[t];return r?r[e]:n},e.prototype.putVocabulariesForLanguage=function(e,t){var n=this._dict[e];n||(n=this._dict[e]={}),Object.assign(n,t)},e.prototype.putVocabularies=function(e){var t=this;Object.keys(e).map((function(n){t.putVocabulariesForLanguage(n,e[n])}))},e}(),U=new y("I18n"),F=null,R=null,M=function(){function e(){}return e.configure=function(t){return U.debug("configure I18n"),t?(F=Object.assign({},F,t.I18n||t),e.createInstance(),F):F},e.getModuleName=function(){return"I18n"},e.createInstance=function(){U.debug("create I18n instance"),R||(R=new N(F))},e.setLanguage=function(t){return e.checkConfig(),R.setLanguage(t)},e.get=function(t,n){return e.checkConfig()?R.get(t,n):void 0===n?t:n},e.putVocabulariesForLanguage=function(t,n){return e.checkConfig(),R.putVocabulariesForLanguage(t,n)},e.putVocabularies=function(t){return e.checkConfig(),R.putVocabularies(t)},e.checkConfig=function(){return R||(R=new N(F)),!0},e}();S.register(M);var D,j,L,B=D={};function z(){throw new Error("setTimeout has not been defined")}function V(){throw new Error("clearTimeout has not been defined")}function W(e){if(j===setTimeout)return setTimeout(e,0);if((j===z||!j)&&setTimeout)return j=setTimeout,setTimeout(e,0);try{return j(e,0)}catch(t){try{return j.call(null,e,0)}catch(t){return j.call(this,e,0)}}}!function(){try{j="function"==typeof setTimeout?setTimeout:z}catch(e){j=z}try{L="function"==typeof clearTimeout?clearTimeout:V}catch(e){L=V}}();var H,G=[],q=!1,K=-1;function Z(){q&&H&&(q=!1,H.length?G=H.concat(G):K=-1,G.length&&Y())}function Y(){if(!q){var e=W(Z);q=!0;for(var t=G.length;t;){for(H=G,G=[];++K1)for(var n=1;n",'"',"`"," ","\r","\n","\t"]),ve=["'"].concat(ge),ye=["%","/","?",";","#"].concat(ve),be=["/","?","#"],we=/^[+a-z0-9A-Z_-]{0,63}$/,Se=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Ce={javascript:!0,"javascript:":!0},Ee={javascript:!0,"javascript:":!0},Ae={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function _e(e,t,n){if(e&&le.isObject(e)&&e instanceof ce)return e;var r=new ce;return r.parse(e,t,n),r}de=i("6e4ym"),fe=i("9Pzgh"),ce.prototype.parse=function(e,t,n){if(!le.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var r=e.indexOf("?"),o=-1!==r&&r127?w+="x":w+=b[S];if(!w.match(we)){var E=v.slice(0,p),A=v.slice(p+1),_=b.match(Se);_&&(E.push(_[1]),A.unshift(_[2])),A.length&&(a="/"+A.join(".")+a),this.hostname=E.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),g||(this.hostname=ue.toASCII(this.hostname));var I=this.port?":"+this.port:"",k=this.hostname||"";this.host=k+I,this.href+=this.host,g&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!Ce[l])for(p=0,y=ve.length;p0)&&n.host.split("@"))&&(n.auth=_.shift(),n.host=n.hostname=_.shift());return n.search=e.search,n.query=e.query,le.isNull(n.pathname)&&le.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!b.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var S=b.slice(-1)[0],C=(n.host||e.host||b.length>1)&&("."===S||".."===S)||""===S,E=0,A=b.length;A>=0;A--)"."===(S=b[A])?b.splice(A,1):".."===S?(b.splice(A,1),E++):E&&(b.splice(A,1),E--);if(!v&&!y)for(;E--;E)b.unshift("..");!v||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),C&&"/"!==b.join("/").substr(-1)&&b.push("");var _,I=""===b[0]||b[0]&&"/"===b[0].charAt(0);w&&(n.hostname=n.host=I?"":b.length?b.shift():"",(_=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=_.shift(),n.host=n.hostname=_.shift()));return(v=v||n.host&&b.length)&&!I&&b.unshift(""),b.length?n.pathname=b.join("/"):(n.pathname=null,n.path=null),le.isNull(n.pathname)&&le.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},ce.prototype.parseHost=function(){var e=this.host,t=pe.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};var Ie={clockOffset:0,getDateWithClockOffset:function(){return Ie.clockOffset?new Date((new Date).getTime()+Ie.clockOffset):new Date},getClockOffset:function(){return Ie.clockOffset},getHeaderStringFromDate:function(e){return void 0===e&&(e=Ie.getDateWithClockOffset()),e.toISOString().replace(/[:\-]|\.\d{3}/g,"")},getDateFromHeaderString:function(e){var t=h(e.match(/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2}).+/),7),n=t[1],r=t[2],o=t[3],i=t[4],a=t[5],s=t[6];return new Date(Date.UTC(Number(n),Number(r)-1,Number(o),Number(i),Number(a),Number(s)))},isClockSkewed:function(e){return Math.abs(e.getTime()-Ie.getDateWithClockOffset().getTime())>=3e5},isClockSkewError:function(e){if(!e.response||!e.response.headers)return!1;var t=e.response.headers;return Boolean(["BadRequestException","InvalidSignatureException"].includes(t["x-amzn-errortype"])&&(t.date||t.Date))},setClockOffset:function(e){Ie.clockOffset=e}},ke=new y("Signer"),xe="AWS4-HMAC-SHA256",Te=function(e,t){var n=new(0,ne.Sha256)(e);return n.update(t),n.digestSync()},Pe=function(e){var t=e||"",n=new(0,ne.Sha256);return n.update(t),se(n.digestSync())},Oe=function(e){return Object.keys(e).map((function(e){return e.toLowerCase()})).sort().join(";")},Ne=function(e){var t,n,r=J(e.url);return[e.method||"/",encodeURIComponent(r.pathname).replace(/%2F/gi,"/"),(n=r.query,n&&0!==n.length?n.split("&").map((function(e){var t=e.split("=");if(1===t.length)return e;var n=t[1].replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}));return t[0]+"="+n})).sort((function(e,t){var n=e.split("=")[0],r=t.split("=")[0];return n===r?ee)&&n}}(n),r)},Ze=new y("CognitoCredentials"),Ye=new Promise((function(e,t){return te().isBrowser?(window.gapi&&window.gapi.auth2?window.gapi.auth2:null)?(Ze.debug("google api already loaded"),e()):void setTimeout((function(){return e()}),2e3):(Ze.debug("not in the browser, directly resolved"),e())})),Qe=function(){function e(){this.initialized=!1,this.refreshGoogleToken=this.refreshGoogleToken.bind(this),this._refreshGoogleTokenImpl=this._refreshGoogleTokenImpl.bind(this)}return e.prototype.refreshGoogleToken=function(){return c(this,void 0,void 0,(function(){return d(this,(function(e){switch(e.label){case 0:return this.initialized?[3,2]:(Ze.debug("need to wait for the Google SDK loaded"),[4,Ye]);case 1:e.sent(),this.initialized=!0,Ze.debug("finish waiting"),e.label=2;case 2:return[2,this._refreshGoogleTokenImpl()]}}))}))},e.prototype._refreshGoogleTokenImpl=function(){var e=null;return te().isBrowser&&(e=window.gapi&&window.gapi.auth2?window.gapi.auth2:null),e?new Promise((function(t,n){e.getAuthInstance().then((function(e){e||(Ze.debug("google Auth undefined"),n(new He("google Auth undefined")));var r=e.currentUser.get();r.isSignedIn()?(Ze.debug("refreshing the google access token"),r.reloadAuthResponse().then((function(e){var n=e.id_token,r=e.expires_at;t({token:n,expires_at:r})})).catch((function(e){e&&"network_error"===e.error?n("Network error reloading google auth response"):n(new He("Failed to reload google auth response"))}))):n(new He("User is not signed in with Google"))})).catch((function(e){Ze.debug("Failed to refresh google token",e),n(new He("Failed to refresh google token"))}))})):(Ze.debug("no gapi auth2 available"),Promise.reject("no gapi auth2 available"))},e}(),$e=new y("CognitoCredentials"),Je=new Promise((function(e,t){return te().isBrowser?window.FB?($e.debug("FB SDK already loaded"),e()):void setTimeout((function(){return e()}),2e3):($e.debug("not in the browser, directly resolved"),e())})),Xe=function(){function e(){this.initialized=!1,this.refreshFacebookToken=this.refreshFacebookToken.bind(this),this._refreshFacebookTokenImpl=this._refreshFacebookTokenImpl.bind(this)}return e.prototype.refreshFacebookToken=function(){return c(this,void 0,void 0,(function(){return d(this,(function(e){switch(e.label){case 0:return this.initialized?[3,2]:($e.debug("need to wait for the Facebook SDK loaded"),[4,Je]);case 1:e.sent(),this.initialized=!0,$e.debug("finish waiting"),e.label=2;case 2:return[2,this._refreshFacebookTokenImpl()]}}))}))},e.prototype._refreshFacebookTokenImpl=function(){var e=null;if(te().isBrowser&&(e=window.FB),!e){var t="no fb sdk available";return $e.debug(t),Promise.reject(new He(t))}return new Promise((function(t,n){e.getLoginStatus((function(e){if(e&&e.authResponse){var r=e.authResponse,o=r.accessToken,i=1e3*r.expiresIn+(new Date).getTime();if(!o){a="the jwtToken is undefined";$e.debug(a),n(new He(a))}t({token:o,expires_at:i})}else{var a="no response from facebook when refreshing the jwt token";$e.debug(a),n(new He(a))}}),{scope:"public_profile,email"})}))},e}(),et=new Qe,tt=new Xe,nt=function(e,t){return nt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},nt(e,t)};function rt(e,t){function n(){this.constructor=e}nt(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function ot(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))}function it(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}var st=function(e,t){return st=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},st(e,t)};function ut(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}st(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var lt=function(){return lt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}var ht,pt,mt,gt,vt,yt,bt,wt,St,Ct,Et,At,_t,It,kt,xt,Tt,Pt,Ot,Nt,Ut,Ft,Rt,Mt,Dt,jt,Lt,Bt,zt,Vt,Wt,Ht,Gt,qt,Kt,Zt,Yt,Qt,$t,Jt,Xt,en,tn,nn,rn,on,an,sn,un,ln,cn,dn,fn,hn,pn,mn,gn,vn,yn,bn,wn;Object.create;(pt=ht||(ht={})).AUTHENTICATED_ROLE="AuthenticatedRole",pt.DENY="Deny",(mt||(mt={})).filterSensitiveLog=function(e){return lt({},e)},(gt||(gt={})).filterSensitiveLog=function(e){return lt({},e)},(vt||(vt={})).filterSensitiveLog=function(e){return lt({},e)},(yt||(yt={})).filterSensitiveLog=function(e){return lt({},e)},(bt||(bt={})).filterSensitiveLog=function(e){return lt({},e)},(wt||(wt={})).filterSensitiveLog=function(e){return lt({},e)},(St||(St={})).filterSensitiveLog=function(e){return lt({},e)},(Ct||(Ct={})).filterSensitiveLog=function(e){return lt({},e)},(Et||(Et={})).filterSensitiveLog=function(e){return lt({},e)},(At||(At={})).filterSensitiveLog=function(e){return lt({},e)},(It=_t||(_t={})).ACCESS_DENIED="AccessDenied",It.INTERNAL_SERVER_ERROR="InternalServerError",(kt||(kt={})).filterSensitiveLog=function(e){return lt({},e)},(xt||(xt={})).filterSensitiveLog=function(e){return lt({},e)},(Tt||(Tt={})).filterSensitiveLog=function(e){return lt({},e)},(Pt||(Pt={})).filterSensitiveLog=function(e){return lt({},e)},(Ot||(Ot={})).filterSensitiveLog=function(e){return lt({},e)},(Nt||(Nt={})).filterSensitiveLog=function(e){return lt({},e)},(Ut||(Ut={})).filterSensitiveLog=function(e){return lt({},e)},(Ft||(Ft={})).filterSensitiveLog=function(e){return lt({},e)},(Rt||(Rt={})).filterSensitiveLog=function(e){return lt({},e)},(Mt||(Mt={})).filterSensitiveLog=function(e){return lt({},e)},(Dt||(Dt={})).filterSensitiveLog=function(e){return lt({},e)},(jt||(jt={})).filterSensitiveLog=function(e){return lt({},e)},(Lt||(Lt={})).filterSensitiveLog=function(e){return lt({},e)},(Bt||(Bt={})).filterSensitiveLog=function(e){return lt({},e)},(zt||(zt={})).filterSensitiveLog=function(e){return lt({},e)},(Wt=Vt||(Vt={})).CONTAINS="Contains",Wt.EQUALS="Equals",Wt.NOT_EQUAL="NotEqual",Wt.STARTS_WITH="StartsWith",(Ht||(Ht={})).filterSensitiveLog=function(e){return lt({},e)},(Gt||(Gt={})).filterSensitiveLog=function(e){return lt({},e)},(Kt=qt||(qt={})).RULES="Rules",Kt.TOKEN="Token",(Zt||(Zt={})).filterSensitiveLog=function(e){return lt({},e)},(Yt||(Yt={})).filterSensitiveLog=function(e){return lt({},e)},(Qt||(Qt={})).filterSensitiveLog=function(e){return lt({},e)},($t||($t={})).filterSensitiveLog=function(e){return lt({},e)},(Jt||(Jt={})).filterSensitiveLog=function(e){return lt({},e)},(Xt||(Xt={})).filterSensitiveLog=function(e){return lt({},e)},(en||(en={})).filterSensitiveLog=function(e){return lt({},e)},(tn||(tn={})).filterSensitiveLog=function(e){return lt({},e)},(nn||(nn={})).filterSensitiveLog=function(e){return lt({},e)},(rn||(rn={})).filterSensitiveLog=function(e){return lt({},e)},(on||(on={})).filterSensitiveLog=function(e){return lt({},e)},(an||(an={})).filterSensitiveLog=function(e){return lt({},e)},(sn||(sn={})).filterSensitiveLog=function(e){return lt({},e)},(un||(un={})).filterSensitiveLog=function(e){return lt({},e)},(ln||(ln={})).filterSensitiveLog=function(e){return lt({},e)},(cn||(cn={})).filterSensitiveLog=function(e){return lt({},e)},(dn||(dn={})).filterSensitiveLog=function(e){return lt({},e)},(fn||(fn={})).filterSensitiveLog=function(e){return lt({},e)},(hn||(hn={})).filterSensitiveLog=function(e){return lt({},e)},(pn||(pn={})).filterSensitiveLog=function(e){return lt({},e)},(mn||(mn={})).filterSensitiveLog=function(e){return lt({},e)},(gn||(gn={})).filterSensitiveLog=function(e){return lt({},e)},(vn||(vn={})).filterSensitiveLog=function(e){return lt({},e)},(yn||(yn={})).filterSensitiveLog=function(e){return lt({},e)},(bn||(bn={})).filterSensitiveLog=function(e){return lt({},e)},(wn||(wn={})).filterSensitiveLog=function(e){return lt({},e)};var Sn=function(){function e(e){this.statusCode=e.statusCode,this.headers=e.headers||{},this.body=e.body}return e.isInstance=function(e){if(!e)return!1;var t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers},e}(); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var Cn=function(){return Cn=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}var An=function(){function e(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.substr(-1)?e.protocol+":":e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?"/"+e.path:e.path:"/"}return e.isInstance=function(e){if(!e)return!1;var t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers},e.prototype.clone=function(){var t,n=new e(Cn(Cn({},this),{headers:Cn({},this.headers)}));return n.query&&(n.query=(t=n.query,Object.keys(t).reduce((function(e,n){var r,o=t[n];return Cn(Cn({},e),((r={})[n]=Array.isArray(o)?function(){for(var e=[],t=0;t=300?[2,xn(e,t)]:[4,or(e.body,t)];case 1:return n=i.sent(),{},r=Gn(n,t),o=lt({$metadata:tr(e)},r),[2,Promise.resolve(o)]}}))}))},xn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r,o,i,a,s,u,l,c,d,f,h,p,m,g;return dt(this,(function(v){switch(v.label){case 0:return r=[lt({},e)],g={},[4,or(e.body,t)];case 1:switch(n=lt.apply(void 0,r.concat([(g.body=v.sent(),g)])),i="UnknownError",i=ir(e,n.body),i){case"ExternalServiceException":case"com.amazonaws.cognitoidentity#ExternalServiceException":return[3,2];case"InternalErrorException":case"com.amazonaws.cognitoidentity#InternalErrorException":return[3,4];case"InvalidIdentityPoolConfigurationException":case"com.amazonaws.cognitoidentity#InvalidIdentityPoolConfigurationException":return[3,6];case"InvalidParameterException":case"com.amazonaws.cognitoidentity#InvalidParameterException":return[3,8];case"NotAuthorizedException":case"com.amazonaws.cognitoidentity#NotAuthorizedException":return[3,10];case"ResourceConflictException":case"com.amazonaws.cognitoidentity#ResourceConflictException":return[3,12];case"ResourceNotFoundException":case"com.amazonaws.cognitoidentity#ResourceNotFoundException":return[3,14];case"TooManyRequestsException":case"com.amazonaws.cognitoidentity#TooManyRequestsException":return[3,16]}return[3,18];case 2:return a=[{}],[4,On(n,t)];case 3:return o=lt.apply(void 0,[lt.apply(void 0,a.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 4:return s=[{}],[4,Nn(n,t)];case 5:return o=lt.apply(void 0,[lt.apply(void 0,s.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 6:return u=[{}],[4,Un(n,t)];case 7:return o=lt.apply(void 0,[lt.apply(void 0,u.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 8:return l=[{}],[4,Fn(n,t)];case 9:return o=lt.apply(void 0,[lt.apply(void 0,l.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 10:return c=[{}],[4,Mn(n,t)];case 11:return o=lt.apply(void 0,[lt.apply(void 0,c.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 12:return d=[{}],[4,Dn(n,t)];case 13:return o=lt.apply(void 0,[lt.apply(void 0,d.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 14:return f=[{}],[4,jn(n,t)];case 15:return o=lt.apply(void 0,[lt.apply(void 0,f.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 16:return h=[{}],[4,Ln(n,t)];case 17:return o=lt.apply(void 0,[lt.apply(void 0,h.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 18:p=n.body,i=p.code||p.Code||i,o=lt(lt({},p),{name:""+i,message:p.message||p.Message||i,$fault:"client",$metadata:tr(e)}),v.label=19;case 19:return m=o.message||o.Message||i,o.message=m,delete o.Message,[2,Promise.reject(Object.assign(new Error(m),o))]}}))}))},Tn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r,o;return dt(this,(function(i){switch(i.label){case 0:return e.statusCode>=300?[2,Pn(e,t)]:[4,or(e.body,t)];case 1:return n=i.sent(),{},r=qn(n,t),o=lt({$metadata:tr(e)},r),[2,Promise.resolve(o)]}}))}))},Pn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r,o,i,a,s,u,l,c,d,f,h,p,m,g;return dt(this,(function(v){switch(v.label){case 0:return r=[lt({},e)],g={},[4,or(e.body,t)];case 1:switch(n=lt.apply(void 0,r.concat([(g.body=v.sent(),g)])),i="UnknownError",i=ir(e,n.body),i){case"ExternalServiceException":case"com.amazonaws.cognitoidentity#ExternalServiceException":return[3,2];case"InternalErrorException":case"com.amazonaws.cognitoidentity#InternalErrorException":return[3,4];case"InvalidParameterException":case"com.amazonaws.cognitoidentity#InvalidParameterException":return[3,6];case"LimitExceededException":case"com.amazonaws.cognitoidentity#LimitExceededException":return[3,8];case"NotAuthorizedException":case"com.amazonaws.cognitoidentity#NotAuthorizedException":return[3,10];case"ResourceConflictException":case"com.amazonaws.cognitoidentity#ResourceConflictException":return[3,12];case"ResourceNotFoundException":case"com.amazonaws.cognitoidentity#ResourceNotFoundException":return[3,14];case"TooManyRequestsException":case"com.amazonaws.cognitoidentity#TooManyRequestsException":return[3,16]}return[3,18];case 2:return a=[{}],[4,On(n,t)];case 3:return o=lt.apply(void 0,[lt.apply(void 0,a.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 4:return s=[{}],[4,Nn(n,t)];case 5:return o=lt.apply(void 0,[lt.apply(void 0,s.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 6:return u=[{}],[4,Fn(n,t)];case 7:return o=lt.apply(void 0,[lt.apply(void 0,u.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 8:return l=[{}],[4,Rn(n,t)];case 9:return o=lt.apply(void 0,[lt.apply(void 0,l.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 10:return c=[{}],[4,Mn(n,t)];case 11:return o=lt.apply(void 0,[lt.apply(void 0,c.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 12:return d=[{}],[4,Dn(n,t)];case 13:return o=lt.apply(void 0,[lt.apply(void 0,d.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 14:return f=[{}],[4,jn(n,t)];case 15:return o=lt.apply(void 0,[lt.apply(void 0,f.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 16:return h=[{}],[4,Ln(n,t)];case 17:return o=lt.apply(void 0,[lt.apply(void 0,h.concat([v.sent()])),{name:i,$metadata:tr(e)}]),[3,19];case 18:p=n.body,i=p.code||p.Code||i,o=lt(lt({},p),{name:""+i,message:p.message||p.Message||i,$fault:"client",$metadata:tr(e)}),v.label=19;case 19:return m=o.message||o.Message||i,o.message=m,delete o.Message,[2,Promise.reject(Object.assign(new Error(m),o))]}}))}))},On=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=Hn(n,t),[2,lt({name:"ExternalServiceException",$fault:"client",$metadata:tr(e)},r)]}))}))},Nn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=Kn(n,t),[2,lt({name:"InternalErrorException",$fault:"server",$metadata:tr(e)},r)]}))}))},Un=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=Zn(n,t),[2,lt({name:"InvalidIdentityPoolConfigurationException",$fault:"client",$metadata:tr(e)},r)]}))}))},Fn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=Yn(n,t),[2,lt({name:"InvalidParameterException",$fault:"client",$metadata:tr(e)},r)]}))}))},Rn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=Qn(n,t),[2,lt({name:"LimitExceededException",$fault:"client",$metadata:tr(e)},r)]}))}))},Mn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=$n(n,t),[2,lt({name:"NotAuthorizedException",$fault:"client",$metadata:tr(e)},r)]}))}))},Dn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=Jn(n,t),[2,lt({name:"ResourceConflictException",$fault:"client",$metadata:tr(e)},r)]}))}))},jn=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=Xn(n,t),[2,lt({name:"ResourceNotFoundException",$fault:"client",$metadata:tr(e)},r)]}))}))},Ln=function(e,t){return ct(void 0,void 0,void 0,(function(){var n,r;return dt(this,(function(o){return n=e.body,r=er(n,t),[2,lt({name:"TooManyRequestsException",$fault:"client",$metadata:tr(e)},r)]}))}))},Bn=function(e,t){return lt(lt(lt({},void 0!==e.CustomRoleArn&&null!==e.CustomRoleArn&&{CustomRoleArn:e.CustomRoleArn}),void 0!==e.IdentityId&&null!==e.IdentityId&&{IdentityId:e.IdentityId}),void 0!==e.Logins&&null!==e.Logins&&{Logins:Vn(e.Logins,t)})},zn=function(e,t){return lt(lt(lt({},void 0!==e.AccountId&&null!==e.AccountId&&{AccountId:e.AccountId}),void 0!==e.IdentityPoolId&&null!==e.IdentityPoolId&&{IdentityPoolId:e.IdentityPoolId}),void 0!==e.Logins&&null!==e.Logins&&{Logins:Vn(e.Logins,t)})},Vn=function(e,t){return Object.entries(e).reduce((function(e,t){var n,r=ft(t,2),o=r[0],i=r[1];return null===i?e:lt(lt({},e),((n={})[o]=i,n))}),{})},Wn=function(e,t){return{AccessKeyId:void 0!==e.AccessKeyId&&null!==e.AccessKeyId?e.AccessKeyId:void 0,Expiration:void 0!==e.Expiration&&null!==e.Expiration?new Date(Math.round(1e3*e.Expiration)):void 0,SecretKey:void 0!==e.SecretKey&&null!==e.SecretKey?e.SecretKey:void 0,SessionToken:void 0!==e.SessionToken&&null!==e.SessionToken?e.SessionToken:void 0}},Hn=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},Gn=function(e,t){return{Credentials:void 0!==e.Credentials&&null!==e.Credentials?Wn(e.Credentials):void 0,IdentityId:void 0!==e.IdentityId&&null!==e.IdentityId?e.IdentityId:void 0}},qn=function(e,t){return{IdentityId:void 0!==e.IdentityId&&null!==e.IdentityId?e.IdentityId:void 0}},Kn=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},Zn=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},Yn=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},Qn=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},$n=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},Jn=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},Xn=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},er=function(e,t){return{message:void 0!==e.message&&null!==e.message?e.message:void 0}},tr=function(e){var t;return{httpStatusCode:e.statusCode,requestId:null!==(t=e.headers["x-amzn-requestid"])&&void 0!==t?t:e.headers["x-amzn-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}},nr=function(e,t){return void 0===e&&(e=new Uint8Array),e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array)},rr=function(e,t,n,r,o){return ct(void 0,void 0,void 0,(function(){var i,a,s,u,l,c;return dt(this,(function(d){switch(d.label){case 0:return[4,e.endpoint()];case 1:return i=d.sent(),a=i.hostname,s=i.protocol,u=void 0===s?"https":s,l=i.port,c={protocol:u,hostname:a,port:l,method:"POST",path:n,headers:t},void 0!==r&&(c.hostname=r),void 0!==o&&(c.body=o),[2,new An(c)]}}))}))},or=function(e,t){return function(e,t){return nr(e,t).then((function(e){return t.utf8Encoder(e)}))}(e,t).then((function(e){return e.length?JSON.parse(e):{}}))},ir=function(e,t){var n,r,o=function(e){var t=e;return t.indexOf(":")>=0&&(t=t.split(":")[0]),t.indexOf("#")>=0&&(t=t.split("#")[1]),t},i=(n=e.headers,r="x-amzn-errortype",Object.keys(n).find((function(e){return e.toLowerCase()===r.toLowerCase()})));return void 0!==i?o(e.headers[i]):void 0!==t.code?o(t.code):void 0!==t.__type?o(t.__type):""};var ar=function(){return ar=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function gr(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function vr(){for(var e=[],t=0;t0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function Ir(){for(var e=[],t=0;t=10.0.0"},"typesVersions":{"<4.0":{"types/*":["types/ts3.4/*"]}},"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cognito-identity","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cognito-identity"}}');var jr={};Object.defineProperty(jr,"__esModule",{value:!0}),jr.WebCryptoSha256=jr.Ie11Sha256=void 0;!function(e,t){for(var n in e)"default"===n||t.hasOwnProperty(n)||(t[n]=e[n])}(i("aBigv"),jr);var Lr=i("kkLGi");Object.defineProperty(jr,"Ie11Sha256",{enumerable:!0,get:function(){return Lr.Sha256}});var Br=i("eUkfM");Object.defineProperty(jr,"WebCryptoSha256",{enumerable:!0,get:function(){return Br.Sha256}});function zr(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))}function Vr(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Hr(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var Gr=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,qr)},qr=function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()};function Kr(e){var t,n,r=[];try{for(var o=Hr(Object.keys(e).sort()),i=o.next();!i.done;i=o.next()){var a=i.value,s=e[a];if(a=Gr(a),Array.isArray(s))for(var u=0,l=s.length;u>=no;var l=o/4*3;i>>=a%ro;for(var c=Math.floor(a/ro),d=0;d>f)}}return new Uint8Array(n)}function ao(e){return new Promise((function(t,n){var r=new FileReader;r.onloadend=function(){var e;if(2!==r.readyState)return n(new Error("Reader aborted too early"));var o=null!==(e=r.result)&&void 0!==e?e:"",i=o.indexOf(","),a=i>-1?i+1:o.length;t(o.substring(a))},r.onabort=function(){return n(new Error("Read aborted"))},r.onerror=function(){return n(r.error)},r.readAsDataURL(e)}))}var so=function(){return so=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function fo(){for(var e=[],t=0;t>>((3&t)<<3)&255;return No}}for(var Uo,Fo,Ro={},Mo=[],Do=0;Do<256;++Do)Mo[Do]=(Do+256).toString(16).substr(1);Ro=function(e,t){var n=t||0,r=Mo;return[r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]]].join("")};var jo=0,Lo=0;po=function(e,t,n){var r=t&&n||0,o=t||[],i=(e=e||{}).node||Uo,a=void 0!==e.clockseq?e.clockseq:Fo;if(null==i||null==a){var s=To();null==i&&(i=Uo=[1|s[0],s[1],s[2],s[3],s[4],s[5]]),null==a&&(a=Fo=16383&(s[6]<<8|s[7]))}var u=void 0!==e.msecs?e.msecs:(new Date).getTime(),l=void 0!==e.nsecs?e.nsecs:Lo+1,c=u-jo+(l-Lo)/1e4;if(c<0&&void 0===e.clockseq&&(a=a+1&16383),(c<0||u>jo)&&void 0===e.nsecs&&(l=0),l>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");jo=u,Lo=l,Fo=a;var d=(1e4*(268435455&(u+=122192928e5))+l)%4294967296;o[r++]=d>>>24&255,o[r++]=d>>>16&255,o[r++]=d>>>8&255,o[r++]=255&d;var f=u/4294967296*1e4&268435455;o[r++]=f>>>8&255,o[r++]=255&f,o[r++]=f>>>24&15|16,o[r++]=f>>>16&255,o[r++]=a>>>8|128,o[r++]=255&a;for(var h=0;h<6;++h)o[r+h]=i[h];return t||Ro(o)};var Bo;var zo=Bo=function(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||To)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var i=0;i<16;++i)t[r+i]=o[i];return t||Ro(o)};zo.v1=po,zo.v4=Bo,ho=zo;var Vo=function(e){var t=e,n=e,r=function(e){return"TimeoutError"===e.name?10:5},o=function(e){return r(e)<=n};return Object.freeze({hasRetryTokens:o,retrieveRetryTokens:function(e){if(!o(e))throw new Error("No retry token available");var t=r(e);return n-=t,t},releaseRetryTokens:function(e){n+=null!=e?e:1,n=Math.min(n,t)}})},Wo=function(e,t){return Math.floor(Math.min(2e4,Math.random()*Math.pow(2,t)*e))},Ho=function(e){return!!e&&(_o(e)||Io(e)||ko(e)||xo(e))},Go="standard",qo=function(){function e(e,t){var n,r,o;this.maxAttemptsProvider=e,this.mode=Go,this.retryDecider=null!==(n=null==t?void 0:t.retryDecider)&&void 0!==n?n:Ho,this.delayDecider=null!==(r=null==t?void 0:t.delayDecider)&&void 0!==r?r:Wo,this.retryQuota=null!==(o=null==t?void 0:t.retryQuota)&&void 0!==o?o:Vo(yo)}return e.prototype.shouldRetry=function(e,t,n){return t0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&n[1]||""},e.getSecondMatch=function(e,t){var n=t.match(e);return n&&n.length>1&&n[2]||""},e.matchAndReturnConst=function(e,t,n){if(e.test(t))return n},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,n,r){void 0===r&&(r=!1);var o=e.getVersionPrecision(t),i=e.getVersionPrecision(n),a=Math.max(o,i),s=0,u=e.map([t,n],(function(t){var n=a-e.getVersionPrecision(t),r=t+new Array(n+1).join(".0");return e.map(r.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(r&&(s=a-Math.min(o,i)),a-=1;a>=s;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===s)return 0;a-=1}else if(u[0][a]1?o-1:0),a=1;a0){var a=Object.keys(n),u=s.default.find(a,(function(e){return t.isOS(e)}));if(u){var l=this.satisfies(n[u]);if(void 0!==l)return l}var c=s.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var d=this.satisfies(n[c]);if(void 0!==d)return d}}if(i>0){var f=Object.keys(o),h=s.default.find(f,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(o[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var n=this.getBrowserName().toLowerCase(),r=e.toLowerCase(),o=s.default.getBrowserTypeByAlias(r);return t&&o&&(r=o.toLowerCase()),r===n},t.compareVersion=function(e){var t=[0],n=e,r=!1,o=this.getBrowserVersion();if("string"==typeof o)return">"===e[0]||"<"===e[0]?(n=e.substr(1),"="===e[1]?(r=!0,n=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?n=e.substr(1):"~"===e[0]&&(r=!0,n=e.substr(1)),t.indexOf(s.default.compareVersions(o,n,r))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=l,e.exports=t.default},92:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,o=(r=n(17))&&r.__esModule?r:{default:r},i=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},n=o.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},n=o.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},n=o.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},n=o.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},n=o.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},n=o.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},n=o.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},n=o.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},n=o.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},n=o.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},n=o.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},n=o.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},n=o.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},n=o.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},n=o.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},n=o.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},n=o.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},n=o.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},n=o.default.getFirstMatch(i,e)||o.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},n=o.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},n=o.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},n=o.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},n=o.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},n=o.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},n=o.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},n=o.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},n=o.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},n=o.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t={name:"Android Browser"},n=o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},n=o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},n=o.default.getFirstMatch(i,e);return n&&(t.version=n),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:o.default.getFirstMatch(t,e),version:o.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,o=(r=n(17))&&r.__esModule?r:{default:r},i=n(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=o.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:i.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=o.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=o.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=o.default.getWindowsVersionName(t);return{name:i.OS_MAP.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:i.OS_MAP.iOS},n=o.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe:function(e){var t=o.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),n=o.default.getMacOSVersionName(t),r={name:i.OS_MAP.MacOS,version:t};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=o.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:i.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t=o.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=o.default.getAndroidVersionName(t),r={name:i.OS_MAP.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=o.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:i.OS_MAP.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=o.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||o.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||o.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:i.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=o.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=o.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:i.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:i.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=o.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,o=(r=n(17))&&r.__esModule?r:{default:r},i=n(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=o.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",n={type:i.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe:function(e){var t=o.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:i.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:i.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,o=(r=n(17))&&r.__esModule?r:{default:r},i=n(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:i.ENGINE_MAP.Blink};var t=o.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:i.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:i.ENGINE_MAP.Trident},n=o.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:i.ENGINE_MAP.Presto},n=o.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe:function(e){var t={name:i.ENGINE_MAP.Gecko},n=o.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:i.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:i.ENGINE_MAP.WebKit},n=o.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}];t.default=a,e.exports=t.default}});var Jo=function(e){for(var t=[],n=0,r=e.length;n>6|192,63&o|128);else if(n+1>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}else t.push(o>>12|224,o>>6&63|128,63&o|128)}return Uint8Array.from(t)},Xo=function(e){for(var t="",n=0,r=e.length;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function li(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function ci(e){var t,n,r={};if(e=e.replace(/^\?/,""))try{for(var o=ui(e.split("&")),i=o.next();!i.done;i=o.next()){var a=li(i.value.split("="),2),s=a[0],u=a[1],l=void 0===u?null:u;s=decodeURIComponent(s),l&&(l=decodeURIComponent(l)),s in r?Array.isArray(r[s])?r[s].push(l):r[s]=[r[s],l]:r[s]=l}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return r}var di,fi,hi,pi,mi={apiVersion:"2014-06-30",disableHostPrefix:!1,logger:{},regionInfoProvider:function(e,t){var n=void 0;switch(e){case"ap-northeast-1":n={hostname:"cognito-identity.ap-northeast-1.amazonaws.com",partition:"aws"};break;case"ap-northeast-2":n={hostname:"cognito-identity.ap-northeast-2.amazonaws.com",partition:"aws"};break;case"ap-south-1":n={hostname:"cognito-identity.ap-south-1.amazonaws.com",partition:"aws"};break;case"ap-southeast-1":n={hostname:"cognito-identity.ap-southeast-1.amazonaws.com",partition:"aws"};break;case"ap-southeast-2":n={hostname:"cognito-identity.ap-southeast-2.amazonaws.com",partition:"aws"};break;case"ca-central-1":n={hostname:"cognito-identity.ca-central-1.amazonaws.com",partition:"aws"};break;case"cn-north-1":n={hostname:"cognito-identity.cn-north-1.amazonaws.com.cn",partition:"aws-cn"};break;case"eu-central-1":n={hostname:"cognito-identity.eu-central-1.amazonaws.com",partition:"aws"};break;case"eu-north-1":n={hostname:"cognito-identity.eu-north-1.amazonaws.com",partition:"aws"};break;case"eu-west-1":n={hostname:"cognito-identity.eu-west-1.amazonaws.com",partition:"aws"};break;case"eu-west-2":n={hostname:"cognito-identity.eu-west-2.amazonaws.com",partition:"aws"};break;case"eu-west-3":n={hostname:"cognito-identity.eu-west-3.amazonaws.com",partition:"aws"};break;case"fips-us-east-1":n={hostname:"cognito-identity-fips.us-east-1.amazonaws.com",partition:"aws",signingRegion:"us-east-1"};break;case"fips-us-east-2":n={hostname:"cognito-identity-fips.us-east-2.amazonaws.com",partition:"aws",signingRegion:"us-east-2"};break;case"fips-us-gov-west-1":n={hostname:"cognito-identity-fips.us-gov-west-1.amazonaws.com",partition:"aws-us-gov",signingRegion:"us-gov-west-1"};break;case"fips-us-west-2":n={hostname:"cognito-identity-fips.us-west-2.amazonaws.com",partition:"aws",signingRegion:"us-west-2"};break;case"sa-east-1":n={hostname:"cognito-identity.sa-east-1.amazonaws.com",partition:"aws"};break;case"us-east-1":n={hostname:"cognito-identity.us-east-1.amazonaws.com",partition:"aws"};break;case"us-east-2":n={hostname:"cognito-identity.us-east-2.amazonaws.com",partition:"aws"};break;case"us-gov-west-1":n={hostname:"cognito-identity.us-gov-west-1.amazonaws.com",partition:"aws-us-gov"};break;case"us-west-1":n={hostname:"cognito-identity.us-west-1.amazonaws.com",partition:"aws"};break;case"us-west-2":n={hostname:"cognito-identity.us-west-2.amazonaws.com",partition:"aws"};break;default:ri.has(e)&&(n={hostname:ni.replace("{region}",e),partition:"aws"}),oi.has(e)&&(n={hostname:"cognito-identity.{region}.amazonaws.com.cn".replace("{region}",e),partition:"aws-cn"}),ii.has(e)&&(n={hostname:"cognito-identity.{region}.c2s.ic.gov".replace("{region}",e),partition:"aws-iso"}),ai.has(e)&&(n={hostname:"cognito-identity.{region}.sc2s.sgov.gov".replace("{region}",e),partition:"aws-iso-b"}),si.has(e)&&(n={hostname:"cognito-identity.{region}.amazonaws.com".replace("{region}",e),partition:"aws-us-gov"}),void 0===n&&(n={hostname:ni.replace("{region}",e),partition:"aws"})}return Promise.resolve(lt({signingService:"cognito-identity"},n))},serviceId:"Cognito Identity",urlParser:function(e){var t,n=new URL(e),r=n.hostname,o=n.pathname,i=n.port,a=n.protocol,s=n.search;return s&&(t=ci(s)),{hostname:r,port:i?parseInt(i):void 0,protocol:a,path:o,query:t}}},gi=lt(lt({},mi),{runtime:"browser",base64Decoder:io,base64Encoder:function(e){for(var t="",n=0;n>l]}t+="==".slice(0,4-s)}return t},bodyLengthChecker:function(e){if("string"==typeof e){for(var t=e.length,n=t-1;n>=0;n--){var r=e.charCodeAt(n);r>127&&r<=2047?t++:r>2047&&r<=65535&&(t+=2)}return t}return"number"==typeof e.byteLength?e.byteLength:"number"==typeof e.size?e.size:void 0} -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */,credentialDefaultProvider:function(e){return function(){return Promise.reject(new Error("Credential is missing"))}},defaultUserAgentProvider:(fi={serviceId:mi.serviceId,clientVersion:n(Dr).version},hi=fi.serviceId,pi=fi.clientVersion,function(){return Yo(void 0,void 0,void 0,(function(){var e,t,r,o,i,a,s,u,l;return Qo(this,(function(c){return e=(null===(r=null===window||void 0===window?void 0:window.navigator)||void 0===r?void 0:r.userAgent)?n($o).parse(window.navigator.userAgent):void 0,t=[["aws-sdk-js",pi],["os/"+((null===(o=null==e?void 0:e.os)||void 0===o?void 0:o.name)||"other"),null===(i=null==e?void 0:e.os)||void 0===i?void 0:i.version],["lang/js"],["md/browser",(null!==(s=null===(a=null==e?void 0:e.browser)||void 0===a?void 0:a.name)&&void 0!==s?s:"unknown")+"_"+(null!==(l=null===(u=null==e?void 0:e.browser)||void 0===u?void 0:u.version)&&void 0!==l?l:"unknown")]],hi&&t.push(["api/"+hi,pi]),[2,t]}))}))}),maxAttempts:3,region:(di="Region is missing",function(){return Promise.reject(di)}),requestHandler:new Zr,sha256:jr.Sha256,streamCollector:function(e){return"function"==typeof Blob&&e instanceof Blob?function(e){return zr(this,void 0,void 0,(function(){var t,n;return Vr(this,(function(r){switch(r.label){case 0:return[4,ao(e)];case 1:return t=r.sent(),n=io(t),[2,new Uint8Array(n)]}}))}))}(e):function(e){return zr(this,void 0,void 0,(function(){var t,n,r,o,i,a,s;return Vr(this,(function(u){switch(u.label){case 0:t=new Uint8Array(0),n=e.getReader(),r=!1,u.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return o=u.sent(),i=o.done,(a=o.value)&&(s=t,(t=new Uint8Array(s.length+a.length)).set(s),t.set(a,s.length)),r=i,[3,1];case 3:return[2,t]}}))}))}(e)},utf8Decoder:function(e){return"function"==typeof TextEncoder?ei(e):Jo(e)},utf8Encoder:function(e){return"function"==typeof TextDecoder?ti(e):Xo(e)}});var vi=function(){return vi=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=0&&!r.headers[":authority"]?(delete r.headers.host,r.headers[":authority"]=""):r.headers.host||(r.headers.host=r.hostname),[2,t(n)]):[2,t(n)]}))}))}}}(e),Ui)}}};function Ri(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function qi(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function Ki(){for(var e=[],t=0;t50;)delete la[ca.shift()];s="AWS4"+t.secretAccessKey,p.label=2;case 2:p.trys.push([2,7,8,9]),u=Gi([n,r,o,ua]),l=u.next(),p.label=3;case 3:return l.done?[3,6]:(c=l.value,[4,ha(e,s,c)]);case 4:s=p.sent(),p.label=5;case 5:return l=u.next(),[3,3];case 6:return[3,9];case 7:return d=p.sent(),f={error:d},[3,9];case 8:try{l&&!l.done&&(h=u.return)&&h.call(u)}finally{if(f)throw f.error}return[7];case 9:return[2,la[a]=s]}}))}))};function ha(e,t,n){var r=new e(t);return r.update(n),r.digest()}function pa(e,t,n){var r,o,i=e.headers,a={};try{for(var s=Gi(Object.keys(i).sort()),u=s.next();!u.done;u=s.next()){var l=u.value,c=l.toLowerCase();(c in ra||(null==t?void 0:t.has(c))||oa.test(c)||ia.test(c))&&(!n||n&&!n.has(c))||(a[c]=i[l].trim().replace(/\s+/g," "))}}catch(e){r={error:e}}finally{try{u&&!u.done&&(o=s.return)&&o.call(s)}finally{if(r)throw r.error}}return a}var ma=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,ga)},ga=function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()};function va(e){var t,n,r=e.query,o=void 0===r?{}:r,i=[],a={},s=function(e){if(e.toLowerCase()===ea)return"continue";i.push(e);var t=o[e];"string"==typeof t?a[e]=ma(e)+"="+ma(t):Array.isArray(t)&&(a[e]=t.slice(0).sort().reduce((function(t,n){return t.concat([ma(e)+"="+ma(n)])}),[]).join("&"))};try{for(var u=Gi(Object.keys(o).sort()),l=u.next();!l.done;l=u.next()){s(l.value)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(t)throw t.error}}return i.map((function(e){return a[e]})).filter((function(e){return e})).join("&")}var ya=function(e){return"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e)};function ba(e,t){var n=e.headers,r=e.body;return Wi(this,void 0,void 0,(function(){var e,o,i,a,s,u,l;return Hi(this,(function(c){switch(c.label){case 0:try{for(e=Gi(Object.keys(n)),o=e.next();!o.done;o=e.next())if((i=o.value).toLowerCase()===ta)return[2,n[i]]}catch(e){u={error:e}}finally{try{o&&!o.done&&(l=e.return)&&l.call(e)}finally{if(u)throw u.error}}return null!=r?[3,1]:[2,"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"];case 1:return"string"==typeof r||ArrayBuffer.isView(r)||ya(r)?((a=new t).update(r),s=se,[4,a.digest()]):[3,3];case 2:return[2,s.apply(void 0,[c.sent()])];case 3:return[2,sa]}}))}))}function wa(e,t){var n,r;e=e.toLowerCase();try{for(var o=Gi(Object.keys(t)),i=o.next();!i.done;i=o.next()){if(e===i.value.toLowerCase())return!0}}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return!1}function Sa(e){var t=e.headers,n=e.query,r=Vi(e,["headers","query"]);return zi(zi({},r),{headers:zi({},t),query:n?Ca(n):void 0})}function Ca(e){return Object.keys(e).reduce((function(t,n){var r,o=e[n];return zi(zi({},t),((r={})[n]=Array.isArray(o)?Ki(o):o,r))}),{})}function Ea(e,t){var n,r,o;void 0===t&&(t={});var i="function"==typeof e.clone?e.clone():Sa(e),a=i.headers,s=i.query,u=void 0===s?{}:s;try{for(var l=Gi(Object.keys(a)),c=l.next();!c.done;c=l.next()){var d=c.value,f=d.toLowerCase();"x-amz-"!==f.substr(0,6)||(null===(o=t.unhoistableHeaders)||void 0===o?void 0:o.has(f))||(u[d]=a[d],delete a[d])}}catch(e){n={error:e}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}return zi(zi({},e),{headers:a,query:u})}function Aa(e){var t,n;e="function"==typeof e.clone?e.clone():Sa(e);try{for(var r=Gi(Object.keys(e.headers)),o=r.next();!o.done;o=r.next()){var i=o.value;Xi.indexOf(i.toLowerCase())>-1&&delete e.headers[i]}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}return e}function _a(e){return function(e){if("number"==typeof e)return new Date(1e3*e);if("string"==typeof e)return Number(e)?new Date(1e3*Number(e)):new Date(e);return e}(e).toISOString().replace(/\.\d{3}Z$/,"Z")}var Ia=function(){function e(e){var t=e.applyChecksum,n=e.credentials,r=e.region,o=e.service,i=e.sha256,a=e.uriEscapePath,s=void 0===a||a;this.service=o,this.sha256=i,this.uriEscapePath=s,this.applyChecksum="boolean"!=typeof t||t,this.regionProvider=Ta(r),this.credentialProvider=Pa(n)}return e.prototype.presign=function(e,t){return void 0===t&&(t={}),Wi(this,void 0,void 0,(function(){var n,r,o,i,a,s,u,l,c,d,f,h,p,m,g,v,y,b,w,S,C,E,A,_;return Hi(this,(function(I){switch(I.label){case 0:return n=t.signingDate,r=void 0===n?new Date:n,o=t.expiresIn,i=void 0===o?3600:o,a=t.unsignableHeaders,s=t.unhoistableHeaders,u=t.signableHeaders,l=t.signingRegion,c=t.signingService,[4,this.credentialProvider()];case 1:return d=I.sent(),null==l?[3,2]:(h=l,[3,4]);case 2:return[4,this.regionProvider()];case 3:h=I.sent(),I.label=4;case 4:return f=h,p=ka(r),m=p.longDate,g=p.shortDate,i>604800?[2,Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future")]:(v=da(g,f,null!=c?c:this.service),y=Ea(Aa(e),{unhoistableHeaders:s}),d.sessionToken&&(y.query[Qi]=d.sessionToken),y.query["X-Amz-Algorithm"]=aa,y.query["X-Amz-Credential"]=d.accessKeyId+"/"+v,y.query[Zi]=m,y.query["X-Amz-Expires"]=i.toString(10),b=pa(y,a,u),y.query["X-Amz-SignedHeaders"]=xa(b),w=y.query,S=Yi,C=this.getSignature,E=[m,v,this.getSigningKey(d,f,g,c)],A=this.createCanonicalRequest,_=[y,b],[4,ba(e,this.sha256)]);case 5:return[4,C.apply(this,E.concat([A.apply(this,_.concat([I.sent()]))]))];case 6:return w[S]=I.sent(),[2,y]}}))}))},e.prototype.sign=function(e,t){return Wi(this,void 0,void 0,(function(){return Hi(this,(function(n){return"string"==typeof e?[2,this.signString(e,t)]:e.headers&&e.payload?[2,this.signEvent(e,t)]:[2,this.signRequest(e,t)]}))}))},e.prototype.signEvent=function(e,t){var n=e.headers,r=e.payload,o=t.signingDate,i=void 0===o?new Date:o,a=t.priorSignature,s=t.signingRegion,u=t.signingService;return Wi(this,void 0,void 0,(function(){var e,t,o,l,c,d,f,h,p,m,g;return Hi(this,(function(v){switch(v.label){case 0:return null==s?[3,1]:(t=s,[3,3]);case 1:return[4,this.regionProvider()];case 2:t=v.sent(),v.label=3;case 3:return e=t,o=ka(i),l=o.shortDate,c=o.longDate,d=da(l,e,null!=u?u:this.service),[4,ba({headers:{},body:r},this.sha256)];case 4:return f=v.sent(),(h=new this.sha256).update(n),m=se,[4,h.digest()];case 5:return p=m.apply(void 0,[v.sent()]),g=["AWS4-HMAC-SHA256-PAYLOAD",c,d,a,p,f].join("\n"),[2,this.signString(g,{signingDate:i,signingRegion:e,signingService:u})]}}))}))},e.prototype.signString=function(e,t){var n=void 0===t?{}:t,r=n.signingDate,o=void 0===r?new Date:r,i=n.signingRegion,a=n.signingService;return Wi(this,void 0,void 0,(function(){var t,n,r,s,u,l,c,d;return Hi(this,(function(f){switch(f.label){case 0:return[4,this.credentialProvider()];case 1:return t=f.sent(),null==i?[3,2]:(r=i,[3,4]);case 2:return[4,this.regionProvider()];case 3:r=f.sent(),f.label=4;case 4:return n=r,s=ka(o).shortDate,c=(l=this.sha256).bind,[4,this.getSigningKey(t,n,s,a)];case 5:return(u=new(c.apply(l,[void 0,f.sent()]))).update(e),d=se,[4,u.digest()];case 6:return[2,d.apply(void 0,[f.sent()])]}}))}))},e.prototype.signRequest=function(e,t){var n=void 0===t?{}:t,r=n.signingDate,o=void 0===r?new Date:r,i=n.signableHeaders,a=n.unsignableHeaders,s=n.signingRegion,u=n.signingService;return Wi(this,void 0,void 0,(function(){var t,n,r,l,c,d,f,h,p,m,g;return Hi(this,(function(v){switch(v.label){case 0:return[4,this.credentialProvider()];case 1:return t=v.sent(),null==s?[3,2]:(r=s,[3,4]);case 2:return[4,this.regionProvider()];case 3:r=v.sent(),v.label=4;case 4:return n=r,l=Aa(e),c=ka(o),d=c.longDate,f=c.shortDate,h=da(f,n,null!=u?u:this.service),l.headers[Ji]=d,t.sessionToken&&(l.headers[na]=t.sessionToken),[4,ba(l,this.sha256)];case 5:return p=v.sent(),!wa(ta,l.headers)&&this.applyChecksum&&(l.headers[ta]=p),m=pa(l,a,i),[4,this.getSignature(d,h,this.getSigningKey(t,n,f,u),this.createCanonicalRequest(l,m,p))];case 6:return g=v.sent(),l.headers[$i]=aa+" Credential="+t.accessKeyId+"/"+h+", SignedHeaders="+xa(m)+", Signature="+g,[2,l]}}))}))},e.prototype.createCanonicalRequest=function(e,t,n){var r=Object.keys(t).sort();return e.method+"\n"+this.getCanonicalPath(e)+"\n"+va(e)+"\n"+r.map((function(e){return e+":"+t[e]})).join("\n")+"\n\n"+r.join(";")+"\n"+n},e.prototype.createStringToSign=function(e,t,n){return Wi(this,void 0,void 0,(function(){var r,o;return Hi(this,(function(i){switch(i.label){case 0:return(r=new this.sha256).update(n),[4,r.digest()];case 1:return o=i.sent(),[2,aa+"\n"+e+"\n"+t+"\n"+se(o)]}}))}))},e.prototype.getCanonicalPath=function(e){var t=e.path;return this.uriEscapePath?"/"+encodeURIComponent(t.replace(/^\//,"")).replace(/%2F/g,"/"):t},e.prototype.getSignature=function(e,t,n,r){return Wi(this,void 0,void 0,(function(){var o,i,a,s,u;return Hi(this,(function(l){switch(l.label){case 0:return[4,this.createStringToSign(e,t,r)];case 1:return o=l.sent(),s=(a=this.sha256).bind,[4,n];case 2:return(i=new(s.apply(a,[void 0,l.sent()]))).update(o),u=se,[4,i.digest()];case 3:return[2,u.apply(void 0,[l.sent()])]}}))}))},e.prototype.getSigningKey=function(e,t,n,r){return fa(this.sha256,e,n,t,r||this.service)},e}(),ka=function(e){var t=_a(e).replace(/[\-:]/g,"");return{longDate:t,shortDate:t.substr(0,8)}},xa=function(e){return Object.keys(e).sort().join(";")},Ta=function(e){if("string"==typeof e){var t=Promise.resolve(e);return function(){return t}}return e},Pa=function(e){if("object"==typeof e){var t=Promise.resolve(e);return function(){return t}}return e};function Oa(e){var t,n=this,r=Na(e.credentials||e.credentialDefaultProvider(e)),o=e.signingEscapePath,i=void 0===o||o,a=e.systemClockOffset,s=void 0===a?e.systemClockOffset||0:a,u=e.sha256;return t=e.signer?Na(e.signer):function(){return Na(e.region)().then((function(t){return Wi(n,void 0,void 0,(function(){return Hi(this,(function(n){switch(n.label){case 0:return[4,e.regionInfoProvider(t)];case 1:return[2,[n.sent()||{},t]]}}))}))})).then((function(t){var n=qi(t,2),o=n[0],a=n[1],s=o.signingRegion,l=o.signingService;return e.signingRegion=e.signingRegion||s||a,e.signingName=e.signingName||l||e.serviceId,new Ia({credentials:r,region:e.signingRegion,service:e.signingName,sha256:u,uriEscapePath:i})}))},zi(zi({},e),{systemClockOffset:s,signingEscapePath:i,credentials:r,signer:t})}function Na(e){if("object"==typeof e){var t=Promise.resolve(e);return function(){return t}}return e}var Ua=function(){return Ua=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function Da(){for(var e=[],t=0;t0})).map((function(e){return null==e?void 0:e.replace(La,"_")})).join("/")},za={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},Va=function(e){return{applyToStack:function(t){var n;t.add((n=e,function(e,t){return function(r){return Fa(void 0,void 0,void 0,(function(){var o,i,a,s,u,l,c,d;return Ra(this,(function(f){switch(f.label){case 0:return o=r.request,An.isInstance(o)?(i=o.headers,a=(null===(c=null==t?void 0:t.userAgent)||void 0===c?void 0:c.map(Ba))||[],[4,n.defaultUserAgentProvider()]):[2,e(r)];case 1:return s=f.sent().map(Ba),u=(null===(d=null==n?void 0:n.customUserAgent)||void 0===d?void 0:d.map(Ba))||[],i["x-amz-user-agent"]=Da(s,a,u).join(" "),l=Da(s.filter((function(e){return e.startsWith("aws-sdk-")})),u).join(" "),"browser"!==n.runtime&&l&&(i[ja]=i[ja]?i[ja]+" "+l:l),[2,e(Ua(Ua({},r),{request:o}))]}}))}))}}),za)}}},Wa=function(e){function t(t){var n,r=this,o=lt(lt({},gi),t),i=Ei(o),a=Oa(wi(i)),s=Ko(a),u=Ua(Ua({},n=s),{customUserAgent:"string"==typeof n.customUserAgent?[[n.customUserAgent]]:n.customUserAgent});return(r=e.call(this,u)||this).config=u,r.middlewareStack.use(vo(r.config)),r.middlewareStack.use(Pi(r.config)),r.middlewareStack.use(Fi(r.config)),r.middlewareStack.use(Bi(r.config)),r.middlewareStack.use(Va(r.config)),r}return ut(t,e),t.prototype.destroy=function(){e.prototype.destroy.call(this)},t}(Sr);function Ha(e){var t=new Wa({region:e.region,customUserAgent:A()});return t.middlewareStack.add((function(e,t){return function(t){return e(function(e){return u(u({},e),{request:u(u({},e.request),{headers:u(u({},e.request.headers),{"cache-control":"no-store"})})})}(t))}}),{step:"build",name:"cacheControlMiddleWare"}),t}var Ga=new y("Credentials"),qa="undefined"!=typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("amplify_default"):"@@amplify_default",Ka=function(){function e(e){this._gettingCredPromise=null,this._refreshHandlers={},this.Auth=void 0,this.configure(e),this._refreshHandlers.google=et.refreshGoogleToken,this._refreshHandlers.facebook=tt.refreshFacebookToken}return e.prototype.getModuleName=function(){return"Credentials"},e.prototype.getCredSource=function(){return this._credentials_source},e.prototype.configure=function(e){if(!e)return this._config||{};this._config=Object.assign({},this._config,e);var t=this._config.refreshHandlers;return t&&(this._refreshHandlers=u(u({},this._refreshHandlers),t)),this._storage=this._config.storage,this._storage||(this._storage=(new Ve).getStorage()),this._storageSync=Promise.resolve(),"function"==typeof this._storage.sync&&(this._storageSync=this._storage.sync()),function(e,t,n){P.dispatch("core",{event:e,data:t,message:n},"Credentials",qa)}("credentials_configured",null,"Credentials has been configured successfully"),this._config},e.prototype.get=function(){return Ga.debug("getting credentials"),this._pickupCredentials()},e.prototype._getCognitoIdentityIdStorageKey=function(e){return"CognitoIdentityId-"+e},e.prototype._pickupCredentials=function(){return Ga.debug("picking up credentials"),this._gettingCredPromise&&this._gettingCredPromise.isPending()?Ga.debug("getting old cred promise"):(Ga.debug("getting new cred promise"),this._gettingCredPromise=ee(this._keepAlive())),this._gettingCredPromise},e.prototype._keepAlive=function(){return c(this,void 0,void 0,(function(){var e,t,n,r,o,i,a;return d(this,(function(s){switch(s.label){case 0:if(Ga.debug("checking if credentials exists and not expired"),(e=this._credentials)&&!this._isExpired(e)&&!this._isPastTTL())return Ga.debug("credentials not changed and not expired, directly return"),[2,Promise.resolve(e)];if(Ga.debug("need to get a new credential or refresh the existing one"),t=this.Auth,!(n=void 0===t?S.Auth:t)||"function"!=typeof n.currentUserCredentials)return[2,this._setCredentialsForGuest()];if(this._isExpired(e)||!this._isPastTTL())return[3,6];Ga.debug("ttl has passed but token is not yet expired"),s.label=1;case 1:return s.trys.push([1,5,,6]),[4,n.currentUserPoolUser()];case 2:return r=s.sent(),[4,n.currentSession()];case 3:return o=s.sent(),i=o.refreshToken,[4,new Promise((function(e,t){r.refreshSession(i,(function(n,r){return n?t(n):e(r)}))}))];case 4:return s.sent(),[3,6];case 5:return a=s.sent(),Ga.debug("Error attempting to refreshing the session",a),[3,6];case 6:return[2,n.currentUserCredentials()]}}))}))},e.prototype.refreshFederatedToken=function(e){Ga.debug("Getting federated credentials");var t=e.provider,n=e.user,r=e.token,o=e.identity_id,i=e.expires_at;i=1970===new Date(i).getFullYear()?1e3*i:i;var a=this;return Ga.debug("checking if federated jwt token expired"),i>(new Date).getTime()?(Ga.debug("token not expired"),this._setCredentialsFromFederation({provider:t,token:r,user:n,identity_id:o,expires_at:i})):a._refreshHandlers[t]&&"function"==typeof a._refreshHandlers[t]?(Ga.debug("getting refreshed jwt token from federation provider"),this._providerRefreshWithRetry({refreshHandler:a._refreshHandlers[t],provider:t,user:n})):(Ga.debug("no refresh handler for provider:",t),this.clear(),Promise.reject("no refresh handler for provider"))},e.prototype._providerRefreshWithRetry=function(e){var t=this,n=e.refreshHandler,r=e.provider,o=e.user;return Ke(n,[],1e4).then((function(e){return Ga.debug("refresh federated token sucessfully",e),t._setCredentialsFromFederation({provider:r,token:e.token,user:o,identity_id:e.identity_id,expires_at:e.expires_at})})).catch((function(e){return"string"==typeof e&&0===e.toLowerCase().lastIndexOf("network error",e.length)||t.clear(),Ga.debug("refresh federated token failed",e),Promise.reject("refreshing federation token failed: "+e)}))},e.prototype._isExpired=function(e){if(!e)return Ga.debug("no credentials for expiration check"),!0;Ga.debug("are these credentials expired?",e);var t=Date.now();return e.expiration.getTime()<=t},e.prototype._isPastTTL=function(){return this._nextCredentialsRefresh<=Date.now()},e.prototype._setCredentialsForGuest=function(){var e;return c(this,void 0,void 0,(function(){var t,n,r,o,i,a,s,u,l,f,h=this;return d(this,(function(p){switch(p.label){case 0:return Ga.debug("setting credentials for guest"),(null===(e=this._config)||void 0===e?void 0:e.identityPoolId)||(this._config=Object.assign({},this._config,Le(this._config||{}).Auth)),t=this._config,n=t.identityPoolId,r=t.region,o=t.mandatorySignIn,i=t.identityPoolRegion,o?[2,Promise.reject("cannot get guest credentials when mandatory signin enabled")]:n?i||r?(s=this,[4,this._getGuestIdentityId()]):(Ga.debug("region is not configured for getting the credentials"),[2,Promise.reject("region is not configured for getting the credentials")]):(Ga.debug("No Cognito Identity pool provided for unauthenticated access"),[2,Promise.reject("No Cognito Identity pool provided for unauthenticated access")]);case 1:return a=s._identityId=p.sent(),u=Ha({region:i||r}),l=void 0,a?l=Or({identityId:a,client:u})():(f=function(){return c(h,void 0,void 0,(function(){var e;return d(this,(function(t){switch(t.label){case 0:return[4,u.send(new Nr({IdentityPoolId:n}))];case 1:return e=t.sent().IdentityId,this._identityId=e,[2,Or({client:u,identityId:e})()]}}))}))},l=f().catch((function(e){return c(h,void 0,void 0,(function(){return d(this,(function(t){throw e}))}))}))),[2,this._loadCredentials(l,"guest",!1,null).then((function(e){return e})).catch((function(e){return c(h,void 0,void 0,(function(){var t,r=this;return d(this,(function(o){switch(o.label){case 0:return"ResourceNotFoundException"!==e.name||e.message!=="Identity '"+a+"' not found."?[3,2]:(Ga.debug("Failed to load guest credentials"),[4,this._removeGuestIdentityId()]);case 1:return o.sent(),t=function(){return c(r,void 0,void 0,(function(){var e;return d(this,(function(t){switch(t.label){case 0:return[4,u.send(new Nr({IdentityPoolId:n}))];case 1:return e=t.sent().IdentityId,this._identityId=e,[2,Or({client:u,identityId:e})()]}}))}))},l=t().catch((function(e){return c(r,void 0,void 0,(function(){return d(this,(function(t){throw e}))}))})),[2,this._loadCredentials(l,"guest",!1,null)];case 2:return[2,e]}}))}))}))]}}))}))},e.prototype._setCredentialsFromFederation=function(e){var t=e.provider,n=e.token,r=e.identity_id,o={google:"accounts.google.com",facebook:"graph.facebook.com",amazon:"www.amazon.com",developer:"cognito-identity.amazonaws.com"}[t]||t;if(!o)return Promise.reject("You must specify a federated provider");var i={};i[o]=n;var a=this._config,s=a.identityPoolId,u=a.region,l=a.identityPoolRegion;if(!s)return Ga.debug("No Cognito Federated Identity pool provided"),Promise.reject("No Cognito Federated Identity pool provided");if(!l&&!u)return Ga.debug("region is not configured for getting the credentials"),Promise.reject("region is not configured for getting the credentials");var c=Ha({region:l||u}),d=void 0;r?d=Or({identityId:r,logins:i,client:c})():d=Mr({logins:i,identityPoolId:s,client:c})();return this._loadCredentials(d,"federated",!0,e)},e.prototype._setCredentialsFromSession=function(e){var t=this;Ga.debug("set credentials from session");var n=e.getIdToken().getJwtToken(),r=this._config,o=r.region,i=r.userPoolId,a=r.identityPoolId,s=r.identityPoolRegion;if(!a)return Ga.debug("No Cognito Federated Identity pool provided"),Promise.reject("No Cognito Federated Identity pool provided");if(!s&&!o)return Ga.debug("region is not configured for getting the credentials"),Promise.reject("region is not configured for getting the credentials");var u={};u["cognito-idp."+o+".amazonaws.com/"+i]=n;var l=Ha({region:s||o}),f=c(t,void 0,void 0,(function(){var e,t,n,r,o,i,s,c,f,h;return d(this,(function(d){switch(d.label){case 0:return[4,this._getGuestIdentityId()];case 1:return(e=d.sent())?[3,3]:[4,l.send(new Nr({IdentityPoolId:a,Logins:u}))];case 2:n=d.sent().IdentityId,t=n,d.label=3;case 3:return[4,l.send(new xr({IdentityId:e||t,Logins:u}))];case 4:return r=d.sent(),o=r.Credentials,i=o.AccessKeyId,s=o.Expiration,c=o.SecretKey,f=o.SessionToken,h=r.IdentityId,this._identityId=h,e?(Ga.debug("The guest identity "+e+" has been successfully linked to the logins"),e===h&&Ga.debug("The guest identity "+e+" has become the primary identity"),[4,this._removeGuestIdentityId()]):[3,6];case 5:d.sent(),d.label=6;case 6:return[2,{accessKeyId:i,secretAccessKey:c,sessionToken:f,expiration:s,identityId:h}]}}))})).catch((function(e){return c(t,void 0,void 0,(function(){return d(this,(function(t){throw e}))}))}));return this._loadCredentials(f,"userPool",!0,null)},e.prototype._loadCredentials=function(e,t,n,r){var o=this,i=this;return new Promise((function(a,s){e.then((function(e){return c(o,void 0,void 0,(function(){var o,s,u,l,c;return d(this,(function(d){switch(d.label){case 0:if(Ga.debug("Load credentials successfully",e),this._identityId&&!e.identityId&&(e.identityId=this._identityId),i._credentials=e,i._credentials.authenticated=n,i._credentials_source=t,i._nextCredentialsRefresh=(new Date).getTime()+3e6,"federated"===t){o=Object.assign({id:this._credentials.identityId},r.user),s=r.provider,u=r.token,l=r.expires_at,c=r.identity_id;try{this._storage.setItem("aws-amplify-federatedInfo",JSON.stringify({provider:s,token:u,user:o,expires_at:l,identity_id:c}))}catch(e){Ga.debug("Failed to put federated info into auth storage",e)}}return"guest"!==t?[3,2]:[4,this._setGuestIdentityId(e.identityId)];case 1:d.sent(),d.label=2;case 2:return a(i._credentials),[2]}}))}))})).catch((function(t){if(t)return Ga.debug("Failed to load credentials",e),Ga.debug("Error loading credentials",t),void s(t)}))}))},e.prototype.set=function(e,t){return"session"===t?this._setCredentialsFromSession(e):"federation"===t?this._setCredentialsFromFederation(e):"guest"===t?this._setCredentialsForGuest():(Ga.debug("no source specified for setting credentials"),Promise.reject("invalid source"))},e.prototype.clear=function(){return c(this,void 0,void 0,(function(){return d(this,(function(e){return this._credentials=null,this._credentials_source=null,Ga.debug("removing aws-amplify-federatedInfo from storage"),this._storage.removeItem("aws-amplify-federatedInfo"),[2]}))}))},e.prototype._getGuestIdentityId=function(){return c(this,void 0,void 0,(function(){var e,t;return d(this,(function(n){switch(n.label){case 0:e=this._config.identityPoolId,n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this._storageSync];case 2:return n.sent(),[2,this._storage.getItem(this._getCognitoIdentityIdStorageKey(e))];case 3:return t=n.sent(),Ga.debug("Failed to get the cached guest identityId",t),[3,4];case 4:return[2]}}))}))},e.prototype._setGuestIdentityId=function(e){return c(this,void 0,void 0,(function(){var t,n;return d(this,(function(r){switch(r.label){case 0:t=this._config.identityPoolId,r.label=1;case 1:return r.trys.push([1,3,,4]),[4,this._storageSync];case 2:return r.sent(),this._storage.setItem(this._getCognitoIdentityIdStorageKey(t),e),[3,4];case 3:return n=r.sent(),Ga.debug("Failed to cache guest identityId",n),[3,4];case 4:return[2]}}))}))},e.prototype._removeGuestIdentityId=function(){return c(this,void 0,void 0,(function(){var e;return d(this,(function(t){return e=this._config.identityPoolId,Ga.debug("removing "+this._getCognitoIdentityIdStorageKey(e)+" from storage"),this._storage.removeItem(this._getCognitoIdentityIdStorageKey(e)),[2]}))}))},e.prototype.shear=function(e){return{accessKeyId:e.accessKeyId,sessionToken:e.sessionToken,secretAccessKey:e.secretAccessKey,identityId:e.identityId,authenticated:e.authenticated}},e}(),Za=new Ka(null);S.register(Za);var Ya,Qa,$a={};e($a,"default",(()=>as),(e=>as=e)),Ya=function(e,t){if("string"!=typeof e)throw new TypeError("argument str must be a string");for(var n={},r=t||{},o=e.split(";"),i=r.decode||Ja,a=0;a=0&&this.changeListeners.splice(t,1)},e}(),as=is,ss=$a.default,us=te().isBrowser,ls=function(){function e(e){void 0===e&&(e={}),this.cookies=new ss,this.store=us?window.localStorage:Object.create(null),this.cookies=e.req?new ss(e.req.headers.cookie):new ss,Object.assign(this.store,this.cookies.getAll())}return Object.defineProperty(e.prototype,"length",{get:function(){return Object.entries(this.store).length},enumerable:!0,configurable:!0}),e.prototype.clear=function(){var e=this;Array.from(new Array(this.length)).map((function(t,n){return e.key(n)})).forEach((function(t){return e.removeItem(t)}))},e.prototype.getItem=function(e){return this.getLocalItem(e)},e.prototype.getLocalItem=function(e){return Object.prototype.hasOwnProperty.call(this.store,e)?this.store[e]:null},e.prototype.getUniversalItem=function(e){return this.cookies.get(e)},e.prototype.key=function(e){return Object.keys(this.store)[e]},e.prototype.removeItem=function(e){this.removeLocalItem(e),this.removeUniversalItem(e)},e.prototype.removeLocalItem=function(e){delete this.store[e]},e.prototype.removeUniversalItem=function(e){this.cookies.remove(e,{path:"/"})},e.prototype.setItem=function(e,t){this.setLocalItem(e,t);var n=e.split(".").pop();["LastAuthUser","accessToken","refreshToken","idToken"].includes(null!=n?n:"")&&this.setUniversalItem(e,t,{expires:new Date(Date.now()+31536e6)})},e.prototype.setLocalItem=function(e,t){this.store[e]=t},e.prototype.setUniversalItem=function(e,t,n){void 0===n&&(n={}),this.cookies.set(e,t,u(u({},n),{path:"/",sameSite:!0,secure:!us||"localhost"!==window.location.hostname}))},e}();E.userAgent;var cs=function(e,t){return cs=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},cs(e,t)};function ds(e,t){function n(){this.constructor=e}cs(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var fs,hs,ps,ms,gs,vs,ys=function(){return ys=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function Cs(e){return e&&!!["provider"].find((function(t){return e.hasOwnProperty(t)}))}function Es(e){return e&&!!["customState"].find((function(t){return e.hasOwnProperty(t)}))}function As(e){return void 0!==e.redirectSignIn}(hs=fs||(fs={})).Cognito="COGNITO",hs.Google="Google",hs.Facebook="Facebook",hs.Amazon="LoginWithAmazon",hs.Apple="SignInWithApple",(ms=ps||(ps={})).NoConfig="noConfig",ms.MissingAuthConfig="missingAuthConfig",ms.EmptyUsername="emptyUsername",ms.InvalidUsername="invalidUsername",ms.EmptyPassword="emptyPassword",ms.EmptyCode="emptyCode",ms.SignUpError="signUpError",ms.NoMFA="noMFA",ms.InvalidMFA="invalidMFA",ms.EmptyChallengeResponse="emptyChallengeResponse",ms.NoUserSession="noUserSession",ms.Default="default",ms.DeviceConfig="deviceConfig",ms.NetworkError="networkError",ms.AutoSignInError="autoSignInError",(vs=gs||(gs={})).API_KEY="API_KEY",vs.AWS_IAM="AWS_IAM",vs.OPENID_CONNECT="OPENID_CONNECT",vs.AMAZON_COGNITO_USER_POOLS="AMAZON_COGNITO_USER_POOLS",vs.AWS_LAMBDA="AWS_LAMBDA"; -/*! - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -/*! - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */var _s,Is=function(){function e(e){var t=e||{},n=t.ValidationData,r=t.Username,o=t.Password,i=t.AuthParameters,a=t.ClientMetadata;this.validationData=n||{},this.authParameters=i||{},this.clientMetadata=a||{},this.username=r,this.password=o}var t=e.prototype;return t.getUsername=function(){return this.username},t.getPassword=function(){return this.password},t.getValidationData=function(){return this.validationData},t.getAuthParameters=function(){return this.authParameters},t.getClientMetadata=function(){return this.clientMetadata},e}(),ks=i("1sdKR"); -/*! - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */if("undefined"!=typeof window&&window.crypto&&(_s=window.crypto),!_s&&"undefined"!=typeof window&&window.msCrypto&&(_s=window.msCrypto),!_s&&void 0!==t&&t.crypto&&(_s=t.crypto),!_s)try{_s=i("9kLsK")}catch(e){}function xs(){if(_s){if("function"==typeof _s.getRandomValues)try{return _s.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof _s.randomBytes)try{return _s.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")}var Ts,Ps=function(){function e(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length}var t=e.prototype;return t.random=function(t){for(var n=[],r=0;r>>2]>>>24-o%4*8&255;r.push((i>>>4).toString(16)),r.push((15&i).toString(16))}return r.join("")}(this)},e}(),Os=(ne=i("iLAal"),Ns);function Ns(e,t){null!=e&&this.fromString(e,t)}function Us(){return new Ns(null)}var Fs="undefined"!=typeof navigator;Fs&&"Microsoft Internet Explorer"==navigator.appName?(Ns.prototype.am=function(e,t,n,r,o,i){for(var a=32767&t,s=t>>15;--i>=0;){var u=32767&this[e],l=this[e++]>>15,c=s*u+l*a;o=((u=a*u+((32767&c)<<15)+n[r]+(1073741823&o))>>>30)+(c>>>15)+s*l+(o>>>30),n[r++]=1073741823&u}return o},Ts=30):Fs&&"Netscape"!=navigator.appName?(Ns.prototype.am=function(e,t,n,r,o,i){for(;--i>=0;){var a=t*this[e++]+n[r]+o;o=Math.floor(a/67108864),n[r++]=67108863&a}return o},Ts=26):(Ns.prototype.am=function(e,t,n,r,o,i){for(var a=16383&t,s=t>>14;--i>=0;){var u=16383&this[e],l=this[e++]>>14,c=s*u+l*a;o=((u=a*u+((16383&c)<<14)+n[r]+o)>>28)+(c>>14)+s*l,n[r++]=268435455&u}return o},Ts=28),Ns.prototype.DB=Ts,Ns.prototype.DM=(1<>>16)&&(e=t,n+=16),0!=(t=e>>8)&&(e=t,n+=8),0!=(t=e>>4)&&(e=t,n+=4),0!=(t=e>>2)&&(e=t,n+=2),0!=(t=e>>1)&&(e=t,n+=1),n}function Ws(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(t,t),t},Ws.prototype.revert=function(e){var t=Us();return e.copyTo(t),this.reduce(t),t},Ws.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(e[n=t+this.m.t]+=this.m.am(0,r,e,t,0,this.m.t);e[n]>=e.DV;)e[n]-=e.DV,e[++n]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},Ws.prototype.mulTo=function(e,t,n){e.multiplyTo(t,n),this.reduce(n)},Ws.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},Ns.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},Ns.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},Ns.prototype.fromString=function(e,t){var n;if(16==t)n=4;else if(8==t)n=3;else if(2==t)n=1;else if(32==t)n=5;else{if(4!=t)throw new Error("Only radix 2, 4, 8, 16, 32 are supported");n=2}this.t=0,this.s=0;for(var r=e.length,o=!1,i=0;--r>=0;){var a=Bs(e,r);a<0?"-"==e.charAt(r)&&(o=!0):(o=!1,0==i?this[this.t++]=a:i+n>this.DB?(this[this.t-1]|=(a&(1<>this.DB-i):this[this.t-1]|=a<=this.DB&&(i-=this.DB))}this.clamp(),o&&Ns.ZERO.subTo(this,this)},Ns.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},Ns.prototype.dlShiftTo=function(e,t){var n;for(n=this.t-1;n>=0;--n)t[n+e]=this[n];for(n=e-1;n>=0;--n)t[n]=0;t.t=this.t+e,t.s=this.s},Ns.prototype.drShiftTo=function(e,t){for(var n=e;n=0;--n)t[n+a+1]=this[n]>>o|s,s=(this[n]&i)<=0;--n)t[n]=0;t[a]=s,t.t=this.t+a+1,t.s=this.s,t.clamp()},Ns.prototype.rShiftTo=function(e,t){t.s=this.s;var n=Math.floor(e/this.DB);if(n>=this.t)t.t=0;else{var r=e%this.DB,o=this.DB-r,i=(1<>r;for(var a=n+1;a>r;r>0&&(t[this.t-n-1]|=(this.s&i)<>=this.DB;if(e.t>=this.DB;r+=this.s}else{for(r+=this.s;n>=this.DB;r-=e.s}t.s=r<0?-1:0,r<-1?t[n++]=this.DV+r:r>0&&(t[n++]=r),t.t=n,t.clamp()},Ns.prototype.multiplyTo=function(e,t){var n=this.abs(),r=e.abs(),o=n.t;for(t.t=o+r.t;--o>=0;)t[o]=0;for(o=0;o=0;)e[n]=0;for(n=0;n=t.DV&&(e[n+t.t]-=t.DV,e[n+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(n,t[n],e,2*n,0,1)),e.s=0,e.clamp()},Ns.prototype.divRemTo=function(e,t,n){var r=e.abs();if(!(r.t<=0)){var o=this.abs();if(o.t0?(r.lShiftTo(u,i),o.lShiftTo(u,n)):(r.copyTo(i),o.copyTo(n));var l=i.t,c=i[l-1];if(0!=c){var d=c*(1<1?i[l-2]>>this.F2:0),f=this.FV/d,h=(1<=0&&(n[n.t++]=1,n.subTo(v,n)),Ns.ONE.dlShiftTo(l,v),v.subTo(i,i);i.t=0;){var y=n[--m]==c?this.DM:Math.floor(n[m]*f+(n[m-1]+p)*h);if((n[m]+=i.am(0,y,n,g,0,l))0&&n.rShiftTo(u,n),a<0&&Ns.ZERO.subTo(n,n)}}},Ns.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},Ns.prototype.addTo=function(e,t){for(var n=0,r=0,o=Math.min(e.t,this.t);n>=this.DB;if(e.t>=this.DB;r+=this.s}else{for(r+=this.s;n>=this.DB;r+=e.s}t.s=r<0?-1:0,r>0?t[n++]=r:r<-1&&(t[n++]=this.DV+r),t.t=n,t.clamp()},Ns.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)throw new Error("Only radix 2, 4, 8, 16, 32 are supported");t=2}var n,r=(1<0)for(s>s)>0&&(o=!0,i=Ls(n));a>=0;)s>(s+=this.DB-t)):(n=this[a]>>(s-=t)&r,s<=0&&(s+=this.DB,--a)),n>0&&(o=!0),o&&(i+=Ls(n));return o?i:"0"},Ns.prototype.negate=function(){var e=Us();return Ns.ZERO.subTo(this,e),e},Ns.prototype.abs=function(){return this.s<0?this.negate():this},Ns.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var n=this.t;if(0!=(t=n-e.t))return this.s<0?-t:t;for(;--n>=0;)if(0!=(t=this[n]-e[n]))return t;return 0},Ns.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+Vs(this[this.t-1]^this.s&this.DM)},Ns.prototype.mod=function(e){var t=Us();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(Ns.ZERO)>0&&e.subTo(t,t),t},Ns.prototype.equals=function(e){return 0==this.compareTo(e)},Ns.prototype.add=function(e){var t=Us();return this.addTo(e,t),t},Ns.prototype.subtract=function(e){var t=Us();return this.subTo(e,t),t},Ns.prototype.multiply=function(e){var t=Us();return this.multiplyTo(e,t),t},Ns.prototype.divide=function(e){var t=Us();return this.divRemTo(e,t,null),t},Ns.prototype.modPow=function(e,t,n){var r,o=e.bitLength(),i=zs(1),a=new Ws(t);if(o<=0)return i;r=o<18?1:o<48?3:o<144?4:o<768?5:6;var s=new Array,u=3,l=r-1,c=(1<1){var d=Us();for(a.sqrTo(s[1],d);u<=c;)s[u]=Us(),a.mulTo(d,s[u-2],s[u]),u+=2}var f,h,p=e.t-1,m=!0,g=Us();for(o=Vs(e[p])-1;p>=0;){for(o>=l?f=e[p]>>o-l&c:(f=(e[p]&(1<0&&(f|=e[p-1]>>this.DB+o-l)),u=r;0==(1&f);)f>>=1,--u;if((o-=u)<0&&(o+=this.DB,--p),m)s[f].copyTo(i),m=!1;else{for(;u>1;)a.sqrTo(i,g),a.sqrTo(g,i),u-=2;u>0?a.sqrTo(i,g):(h=i,i=g,g=h),a.mulTo(g,s[f],i)}for(;p>=0&&0==(e[p]&1<e)&&o}}(n))})((function(t){return new Promise((function(n,o){r.request(e,t,(function(e,t){e?o(e):n(t)}))}))}),[t],5e3).then((function(e){return n(null,e)})).catch((function(e){return n(e)}))},t.request=function(e,t,n){var r,o={"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityProviderService."+e,"X-Amz-User-Agent":hu.prototype.userAgent,"Cache-Control":"no-store"},i=Object.assign({},this.fetchOptions,{headers:o,method:"POST",mode:"cors",body:JSON.stringify(t)});fetch(this.endpoint,i).then((function(e){return r=e,e}),(function(e){if(e instanceof TypeError)throw new Error("Network error");throw e})).then((function(e){return e.json().catch((function(){return{}}))})).then((function(e){if(r.ok)return n(null,e);e;var t=(e.__type||e.code).split("#").pop(),o=new Error(e.message||e.Message||null);return o.name=t,o.code=t,n(o)})).catch((function(e){if(r&&r.headers&&r.headers.get("x-amzn-errortype"))try{var t=r.headers.get("x-amzn-errortype").split(":")[0],o=new Error(r.status?r.status.toString():null);return o.code=t,o.name=t,o.statusCode=r.status,n(o)}catch(t){return n(e)}else e instanceof Error&&"Network error"===e.message&&(e.code="NetworkError");return n(e)}))},e}(),Su={debug:function(){}},Cu=(Error,function(e){return e&&e.nonRetryable});function Eu(e,t,n,r){if(void 0===r&&(r=1),"function"!=typeof e)throw Error("functionToRetry must be a function");return Su.debug(e.name+" attempt #"+r+" with args: "+JSON.stringify(t)),e.apply(void 0,t).catch((function(o){if(Su.debug("error on "+e.name,o),Cu(o))throw Su.debug(e.name+" non retryable error",o),o;var i=n(r,t,o);if(Su.debug(e.name+" retrying in "+i+" ms"),!1!==i)return new Promise((function(e){return setTimeout(e,i)})).then((function(){return Eu(e,t,n,r+1)}));throw o}))}var Au=3e5;var _u=55,Iu=function(){function e(e,t){var n=e||{},r=n.UserPoolId,o=n.ClientId,i=n.endpoint,a=n.fetchOptions,s=n.AdvancedSecurityDataCollectionFlag;if(!r||!o)throw new Error("Both UserPoolId and ClientId are required.");if(r.length>_u||!/^[\w-]+_[0-9a-zA-Z]+$/.test(r))throw new Error("Invalid UserPoolId format.");var u=r.split("_")[0];this.userPoolId=r,this.clientId=o,this.client=new wu(u,i,a),this.advancedSecurityDataCollectionFlag=!1!==s,this.storage=e.Storage||(new lu).getStorage(),t&&(this.wrapRefreshSessionCallback=t)}var t=e.prototype;return t.getUserPoolId=function(){return this.userPoolId},t.getUserPoolName=function(){return this.getUserPoolId().split("_")[1]},t.getClientId=function(){return this.clientId},t.signUp=function(e,t,n,r,o,i){var a=this,s={ClientId:this.clientId,Username:e,Password:t,UserAttributes:n,ValidationData:r,ClientMetadata:i};this.getUserContextData(e)&&(s.UserContextData=this.getUserContextData(e)),this.client.request("SignUp",s,(function(t,n){if(t)return o(t,null);var r={Username:e,Pool:a,Storage:a.storage},i={user:new du(r),userConfirmed:n.UserConfirmed,userSub:n.UserSub,codeDeliveryDetails:n.CodeDeliveryDetails};return o(null,i)}))},t.getCurrentUser=function(){var e="CognitoIdentityServiceProvider."+this.clientId+".LastAuthUser",t=this.storage.getItem(e);if(t){var n={Username:t,Pool:this,Storage:this.storage};return new du(n)}return null},t.getUserContextData=function(e){if("undefined"!=typeof AmazonCognitoAdvancedSecurityData){var t=AmazonCognitoAdvancedSecurityData;if(this.advancedSecurityDataCollectionFlag){var n=t.getData(e,this.userPoolId,this.clientId);if(n)return{EncodedData:n}}return{}}},e}(),ku={};!function(e){if("function"==typeof define&&define.amd&&(define(e),!0),ku=e(),!!0){var t=window.Cookies,n=window.Cookies=e();n.noConflict=function(){return window.Cookies=t,n}}}((function(){function e(){for(var e=0,t={};e0;--n)t+=r[Math.round(Math.random()*(r.length-1))];return t},e.prototype._generateChallenge=function(e){var t=new(0,ne.Sha256);t.update(e);var n=t.digestSync(),r=ks.Buffer.from(n).toString("base64");return this._base64URL(r)},e.prototype._base64URL=function(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")},e.prototype._generateRandom=function(e){var t=new Uint8Array(e);if("undefined"!=typeof window&&window.crypto)window.crypto.getRandomValues(t);else for(var n=0;n18e4?(clearInterval(r),Gu("autoSignIn_failure",null,"Please confirm your account and use your credentials to sign in."),t._storage.removeItem("amplify-auto-sign-in")):t.signInAfterUserConfirmed(e,null,r)}),5e3)},e.prototype.signInAfterUserConfirmed=function(e,t,n){return bs(this,void 0,void 0,(function(){var r,o,i=this;return ws(this,(function(a){switch(a.label){case 0:r=this.createCognitoUser(e.getUsername()),a.label=1;case 1:return a.trys.push([1,3,,4]),[4,r.authenticateUser(e,this.authCallbacks(r,(function(r){Gu("autoSignIn",r,e.getUsername()+" has signed in successfully"),t&&P.remove("auth",t),n&&(clearInterval(n),i._storage.removeItem("amplify-polling-started")),i._storage.removeItem("amplify-auto-sign-in")}),(function(e){Vu.error(e),i._storage.removeItem("amplify-auto-sign-in")})))];case 2:return a.sent(),[3,4];case 3:return o=a.sent(),Vu.error(o),[3,4];case 4:return[2]}}))}))},e.prototype.confirmSignUp=function(e,t,n){var r=this;if(!this.userPool)return this.rejectNoUserPool();if(!e)return this.rejectAuthError(ps.EmptyUsername);if(!t)return this.rejectAuthError(ps.EmptyCode);var o,i=this.createCognitoUser(e),a=!n||"boolean"!=typeof n.forceAliasCreation||n.forceAliasCreation;return n&&n.clientMetadata?o=n.clientMetadata:this._config.clientMetadata&&(o=this._config.clientMetadata),new Promise((function(n,s){i.confirmRegistration(t,a,(function(t,o){t?s(t):(Gu("confirmSignUp",o,e+" has been confirmed successfully"),r.isTrueStorageValue("amplify-auto-sign-in")&&!r.autoSignInInitiated&&(Gu("autoSignIn_failure",null,ps.AutoSignInError),r._storage.removeItem("amplify-auto-sign-in")),n(o))}),o)}))},e.prototype.isTrueStorageValue=function(e){var t=this._storage.getItem(e);return!!t&&"true"===t},e.prototype.resendSignUp=function(e,t){if(void 0===t&&(t=this._config.clientMetadata),!this.userPool)return this.rejectNoUserPool();if(!e)return this.rejectAuthError(ps.EmptyUsername);var n=this.createCognitoUser(e);return new Promise((function(e,r){n.resendConfirmationCode((function(t,n){t?r(t):e(n)}),t)}))},e.prototype.signIn=function(e,t,n){if(void 0===n&&(n=this._config.clientMetadata),!this.userPool)return this.rejectNoUserPool();var r=null,o=null,i={};if("string"==typeof e)r=e,o=t;else{if(!e.username)return this.rejectAuthError(ps.InvalidUsername);void 0!==t&&Vu.warn("The password should be defined under the first parameter object!"),r=e.username,o=e.password,i=e.validationData}if(!r)return this.rejectAuthError(ps.EmptyUsername);var a=new Is({Username:r,Password:o,ValidationData:i,ClientMetadata:n});return o?this.signInWithPassword(a):this.signInWithoutPassword(a)},e.prototype.authCallbacks=function(e,t,n){var r=this,o=this;return{onSuccess:function(i){return bs(r,void 0,void 0,(function(){var r,a,s,u;return ws(this,(function(l){switch(l.label){case 0:Vu.debug(i),delete e.challengeName,delete e.challengeParam,l.label=1;case 1:return l.trys.push([1,4,5,9]),[4,this.Credentials.clear()];case 2:return l.sent(),[4,this.Credentials.set(i,"session")];case 3:return r=l.sent(),Vu.debug("succeed to get cognito credentials",r),[3,9];case 4:return a=l.sent(),Vu.debug("cannot get cognito credentials",a),[3,9];case 5:return l.trys.push([5,7,,8]),[4,this.currentUserPoolUser()];case 6:return s=l.sent(),o.user=s,Gu("signIn",s,"A user "+e.getUsername()+" has been signed in"),t(s),[3,8];case 7:return u=l.sent(),Vu.error("Failed to get the signed in user",u),n(u),[3,8];case 8:return[7];case 9:return[2]}}))}))},onFailure:function(t){Vu.debug("signIn failure",t),Gu("signIn_failure",t,e.getUsername()+" failed to signin"),n(t)},customChallenge:function(n){Vu.debug("signIn custom challenge answer required"),e.challengeName="CUSTOM_CHALLENGE",e.challengeParam=n,t(e)},mfaRequired:function(n,r){Vu.debug("signIn MFA required"),e.challengeName=n,e.challengeParam=r,t(e)},mfaSetup:function(n,r){Vu.debug("signIn mfa setup",n),e.challengeName=n,e.challengeParam=r,t(e)},newPasswordRequired:function(n,r){Vu.debug("signIn new password"),e.challengeName="NEW_PASSWORD_REQUIRED",e.challengeParam={userAttributes:n,requiredAttributes:r},t(e)},totpRequired:function(n,r){Vu.debug("signIn totpRequired"),e.challengeName=n,e.challengeParam=r,t(e)},selectMFAType:function(n,r){Vu.debug("signIn selectMFAType",n),e.challengeName=n,e.challengeParam=r,t(e)}}},e.prototype.signInWithPassword=function(e){var t=this;if(this.pendingSignIn)throw new Error("Pending sign-in attempt already in progress");var n=this.createCognitoUser(e.getUsername());return this.pendingSignIn=new Promise((function(r,o){n.authenticateUser(e,t.authCallbacks(n,(function(e){t.pendingSignIn=null,r(e)}),(function(e){t.pendingSignIn=null,o(e)})))})),this.pendingSignIn},e.prototype.signInWithoutPassword=function(e){var t=this,n=this.createCognitoUser(e.getUsername());return n.setAuthenticationFlowType("CUSTOM_AUTH"),new Promise((function(r,o){n.initiateAuth(e,t.authCallbacks(n,r,o))}))},e.prototype.getMFAOptions=function(e){return new Promise((function(t,n){e.getMFAOptions((function(e,r){if(e)return Vu.debug("get MFA Options failed",e),void n(e);Vu.debug("get MFA options success",r),t(r)}))}))},e.prototype.getPreferredMFA=function(e,t){var n=this,r=this;return new Promise((function(o,i){var a=n._config.clientMetadata,s=!!t&&t.bypassCache;e.getUserData((function(t,a){return bs(n,void 0,void 0,(function(){var n,s;return ws(this,(function(u){switch(u.label){case 0:if(!t)return[3,5];if(Vu.debug("getting preferred mfa failed",t),!this.isSessionInvalid(t))return[3,4];u.label=1;case 1:return u.trys.push([1,3,,4]),[4,this.cleanUpInvalidSession(e)];case 2:return u.sent(),[3,4];case 3:return n=u.sent(),i(new Error("Session is invalid due to: "+t.message+" and failed to clean up invalid session: "+n.message)),[2];case 4:return i(t),[2];case 5:return(s=r._getMfaTypeFromUserData(a))?(o(s),[2]):(i("invalid MFA Type"),[2])}}))}))}),{bypassCache:s,clientMetadata:a})}))},e.prototype._getMfaTypeFromUserData=function(e){var t=null,n=e.PreferredMfaSetting;if(n)t=n;else{var r=e.UserMFASettingList;if(r)0===r.length?t="NOMFA":Vu.debug("invalid case for getPreferredMFA",e);else t=e.MFAOptions?"SMS_MFA":"NOMFA"}return t},e.prototype._getUserData=function(e,t){var n=this;return new Promise((function(r,o){e.getUserData((function(t,i){return bs(n,void 0,void 0,(function(){var n;return ws(this,(function(a){switch(a.label){case 0:if(!t)return[3,5];if(Vu.debug("getting user data failed",t),!this.isSessionInvalid(t))return[3,4];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.cleanUpInvalidSession(e)];case 2:return a.sent(),[3,4];case 3:return n=a.sent(),o(new Error("Session is invalid due to: "+t.message+" and failed to clean up invalid session: "+n.message)),[2];case 4:return o(t),[2];case 5:r(i),a.label=6;case 6:return[2]}}))}))}),t)}))},e.prototype.setPreferredMFA=function(e,t){return bs(this,void 0,void 0,(function(){var n,r,o,i,a,s,u=this;return ws(this,(function(l){switch(l.label){case 0:return n=this._config.clientMetadata,[4,this._getUserData(e,{bypassCache:!0,clientMetadata:n})];case 1:switch(r=l.sent(),o=null,i=null,t){case"TOTP":case"SOFTWARE_TOKEN_MFA":return[3,2];case"SMS":case"SMS_MFA":return[3,3];case"NOMFA":return[3,4]}return[3,6];case 2:return i={PreferredMfa:!0,Enabled:!0},[3,7];case 3:return o={PreferredMfa:!0,Enabled:!0},[3,7];case 4:return a=r.UserMFASettingList,[4,this._getMfaTypeFromUserData(r)];case 5:if("NOMFA"===(s=l.sent()))return[2,Promise.resolve("No change for mfa type")];if("SMS_MFA"===s)o={PreferredMfa:!1,Enabled:!1};else{if("SOFTWARE_TOKEN_MFA"!==s)return[2,this.rejectAuthError(ps.InvalidMFA)];i={PreferredMfa:!1,Enabled:!1}}return a&&0!==a.length&&a.forEach((function(e){"SMS_MFA"===e?o={PreferredMfa:!1,Enabled:!1}:"SOFTWARE_TOKEN_MFA"===e&&(i={PreferredMfa:!1,Enabled:!1})})),[3,7];case 6:return Vu.debug("no validmfa method provided"),[2,this.rejectAuthError(ps.NoMFA)];case 7:return this,[2,new Promise((function(t,r){e.setUserMfaPreference(o,i,(function(o,i){if(o)return Vu.debug("Set user mfa preference error",o),r(o);Vu.debug("Set user mfa success",i),Vu.debug("Caching the latest user data into local"),e.getUserData((function(n,o){return bs(u,void 0,void 0,(function(){var o;return ws(this,(function(a){switch(a.label){case 0:if(!n)return[3,5];if(Vu.debug("getting user data failed",n),!this.isSessionInvalid(n))return[3,4];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.cleanUpInvalidSession(e)];case 2:return a.sent(),[3,4];case 3:return o=a.sent(),r(new Error("Session is invalid due to: "+n.message+" and failed to clean up invalid session: "+o.message)),[2];case 4:return[2,r(n)];case 5:return[2,t(i)]}}))}))}),{bypassCache:!0,clientMetadata:n})}))}))]}}))}))},e.prototype.disableSMS=function(e){return new Promise((function(t,n){e.disableMFA((function(e,r){if(e)return Vu.debug("disable mfa failed",e),void n(e);Vu.debug("disable mfa succeed",r),t(r)}))}))},e.prototype.enableSMS=function(e){return new Promise((function(t,n){e.enableMFA((function(e,r){if(e)return Vu.debug("enable mfa failed",e),void n(e);Vu.debug("enable mfa succeed",r),t(r)}))}))},e.prototype.setupTOTP=function(e){return new Promise((function(t,n){e.associateSoftwareToken({onFailure:function(e){Vu.debug("associateSoftwareToken failed",e),n(e)},associateSecretCode:function(e){Vu.debug("associateSoftwareToken sucess",e),t(e)}})}))},e.prototype.verifyTotpToken=function(e,t){return Vu.debug("verification totp token",e,t),new Promise((function(n,r){e.verifySoftwareToken(t,"My TOTP device",{onFailure:function(e){Vu.debug("verifyTotpToken failed",e),r(e)},onSuccess:function(t){Gu("signIn",e,"A user "+e.getUsername()+" has been signed in"),Gu("verify",e,"A user "+e.getUsername()+" has been verified"),Vu.debug("verifyTotpToken success",t),n(t)}})}))},e.prototype.confirmSignIn=function(e,t,n,r){var o=this;if(void 0===r&&(r=this._config.clientMetadata),!t)return this.rejectAuthError(ps.EmptyCode);var i=this;return new Promise((function(a,s){e.sendMFACode(t,{onSuccess:function(t){return bs(o,void 0,void 0,(function(){var n,r;return ws(this,(function(o){switch(o.label){case 0:Vu.debug(t),o.label=1;case 1:return o.trys.push([1,4,5,6]),[4,this.Credentials.clear()];case 2:return o.sent(),[4,this.Credentials.set(t,"session")];case 3:return n=o.sent(),Vu.debug("succeed to get cognito credentials",n),[3,6];case 4:return r=o.sent(),Vu.debug("cannot get cognito credentials",r),[3,6];case 5:return i.user=e,Gu("signIn",e,"A user "+e.getUsername()+" has been signed in"),a(e),[7];case 6:return[2]}}))}))},onFailure:function(e){Vu.debug("confirm signIn failure",e),s(e)}},n,r)}))},e.prototype.completeNewPassword=function(e,t,n,r){var o=this;if(void 0===n&&(n={}),void 0===r&&(r=this._config.clientMetadata),!t)return this.rejectAuthError(ps.EmptyPassword);var i=this;return new Promise((function(a,s){e.completeNewPasswordChallenge(t,n,{onSuccess:function(t){return bs(o,void 0,void 0,(function(){var n,r;return ws(this,(function(o){switch(o.label){case 0:Vu.debug(t),o.label=1;case 1:return o.trys.push([1,4,5,6]),[4,this.Credentials.clear()];case 2:return o.sent(),[4,this.Credentials.set(t,"session")];case 3:return n=o.sent(),Vu.debug("succeed to get cognito credentials",n),[3,6];case 4:return r=o.sent(),Vu.debug("cannot get cognito credentials",r),[3,6];case 5:return i.user=e,Gu("signIn",e,"A user "+e.getUsername()+" has been signed in"),a(e),[7];case 6:return[2]}}))}))},onFailure:function(e){Vu.debug("completeNewPassword failure",e),Gu("completeNewPassword_failure",e,o.user+" failed to complete the new password flow"),s(e)},mfaRequired:function(t,n){Vu.debug("signIn MFA required"),e.challengeName=t,e.challengeParam=n,a(e)},mfaSetup:function(t,n){Vu.debug("signIn mfa setup",t),e.challengeName=t,e.challengeParam=n,a(e)},totpRequired:function(t,n){Vu.debug("signIn mfa setup",t),e.challengeName=t,e.challengeParam=n,a(e)}},r)}))},e.prototype.sendCustomChallengeAnswer=function(e,t,n){var r=this;if(void 0===n&&(n=this._config.clientMetadata),!this.userPool)return this.rejectNoUserPool();if(!t)return this.rejectAuthError(ps.EmptyChallengeResponse);return new Promise((function(o,i){e.sendCustomChallengeAnswer(t,r.authCallbacks(e,o,i),n)}))},e.prototype.deleteUserAttributes=function(e,t){var n=this;return new Promise((function(r,o){n.userSession(e).then((function(n){e.deleteAttributes(t,(function(e,t){return e?o(e):r(t)}))}))}))},e.prototype.deleteUser=function(){return bs(this,void 0,void 0,(function(){var e,t,n=this;return ws(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,this._storageSync];case 1:return r.sent(),[3,3];case 2:throw e=r.sent(),Vu.debug("Failed to sync cache info into memory",e),new Error(e);case 3:return t=this._oAuthHandler&&"true"===this._storage.getItem("amplify-signin-with-hostedUI"),[2,new Promise((function(e,r){return bs(n,void 0,void 0,(function(){var n,o=this;return ws(this,(function(i){if(this.userPool){if(!(n=this.userPool.getCurrentUser()))return Vu.debug("Failed to get user from user pool"),[2,r(new Error("No current user."))];n.getSession((function(i,a){return bs(o,void 0,void 0,(function(){var o,a=this;return ws(this,(function(s){switch(s.label){case 0:if(!i)return[3,5];if(Vu.debug("Failed to get the user session",i),!this.isSessionInvalid(i))return[3,4];s.label=1;case 1:return s.trys.push([1,3,,4]),[4,this.cleanUpInvalidSession(n)];case 2:return s.sent(),[3,4];case 3:return o=s.sent(),r(new Error("Session is invalid due to: "+i.message+" and failed to clean up invalid session: "+o.message)),[2];case 4:return[2,r(i)];case 5:n.deleteUser((function(o,i){if(o)r(o);else{Gu("userDeleted",i,"The authenticated user has been deleted."),n.signOut(),a.user=null;try{a.cleanCachedItems()}catch(e){Vu.debug("failed to clear cached items")}t?a.oAuthSignOutRedirect(e,r):(Gu("signOut",a.user,"A user has been signed out"),e(i))}})),s.label=6;case 6:return[2]}}))}))}))}else Vu.debug("no Congito User pool"),r(new Error("Cognito User pool does not exist"));return[2]}))}))}))]}}))}))},e.prototype.updateUserAttributes=function(e,t,n){var r=this;void 0===n&&(n=this._config.clientMetadata);var o=[],i=this;return new Promise((function(a,s){i.userSession(e).then((function(i){for(var u in t)if("sub"!==u&&u.indexOf("_verified")<0){var l={Name:u,Value:t[u]};o.push(l)}e.updateAttributes(o,(function(e,n,o){if(e)return Gu("updateUserAttributes_failure",e,"Failed to update attributes"),s(e);var i=r.createUpdateAttributesResultList(t,null==o?void 0:o.CodeDeliveryDetailsList);return Gu("updateUserAttributes",i,"Attributes successfully updated"),a(n)}),n)}))}))},e.prototype.createUpdateAttributesResultList=function(e,t){var n={};return Object.keys(e).forEach((function(e){n[e]={isUpdated:!0};var r=null==t?void 0:t.find((function(t){return t.AttributeName===e}));r&&(n[e].isUpdated=!1,n[e].codeDeliveryDetails=r)})),n},e.prototype.userAttributes=function(e){var t=this;return new Promise((function(n,r){t.userSession(e).then((function(t){e.getUserAttributes((function(e,t){e?r(e):n(t)}))}))}))},e.prototype.verifiedContact=function(e){var t=this;return this.userAttributes(e).then((function(e){var n=t.attributesToObject(e),r={},o={};return n.email&&(n.email_verified?o.email=n.email:r.email=n.email),n.phone_number&&(n.phone_number_verified?o.phone_number=n.phone_number:r.phone_number=n.phone_number),{verified:o,unverified:r}}))},e.prototype.isErrorWithMessage=function(e){return"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,"message")},e.prototype.isTokenRevokedError=function(e){return this.isErrorWithMessage(e)&&"Access Token has been revoked"===e.message},e.prototype.isRefreshTokenRevokedError=function(e){return this.isErrorWithMessage(e)&&"Refresh Token has been revoked"===e.message},e.prototype.isUserDisabledError=function(e){return this.isErrorWithMessage(e)&&"User is disabled."===e.message},e.prototype.isUserDoesNotExistError=function(e){return this.isErrorWithMessage(e)&&"User does not exist."===e.message},e.prototype.isRefreshTokenExpiredError=function(e){return this.isErrorWithMessage(e)&&"Refresh Token has expired"===e.message},e.prototype.isSignedInHostedUI=function(){return this._oAuthHandler&&"true"===this._storage.getItem("amplify-signin-with-hostedUI")},e.prototype.isSessionInvalid=function(e){return this.isUserDisabledError(e)||this.isUserDoesNotExistError(e)||this.isTokenRevokedError(e)||this.isRefreshTokenRevokedError(e)||this.isRefreshTokenExpiredError(e)},e.prototype.cleanUpInvalidSession=function(e){return bs(this,void 0,void 0,(function(){var t=this;return ws(this,(function(n){switch(n.label){case 0:e.signOut(),this.user=null,n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.cleanCachedItems()];case 2:return n.sent(),[3,4];case 3:return n.sent(),Vu.debug("failed to clear cached items"),[3,4];case 4:return this.isSignedInHostedUI()?[2,new Promise((function(e,n){t.oAuthSignOutRedirect(e,n)}))]:(Gu("signOut",this.user,"A user has been signed out"),[2])}}))}))},e.prototype.currentUserPoolUser=function(e){var t=this;return this.userPool?new Promise((function(n,r){t._storageSync.then((function(){return bs(t,void 0,void 0,(function(){var t,o,i,a,s,u,l=this;return ws(this,(function(c){switch(c.label){case 0:return this.isOAuthInProgress()?(Vu.debug("OAuth signIn in progress, waiting for resolution..."),[4,new Promise((function(e){var t=setTimeout((function(){Vu.debug("OAuth signIn in progress timeout"),P.remove("auth",n),e()}),1e4);function n(r){var o=r.payload.event;"cognitoHostedUI"!==o&&"cognitoHostedUI_failure"!==o||(Vu.debug("OAuth signIn resolved: "+o),clearTimeout(t),P.remove("auth",n),e())}P.listen("auth",n)}))]):[3,2];case 1:c.sent(),c.label=2;case 2:if(!(t=this.userPool.getCurrentUser()))return Vu.debug("Failed to get user from user pool"),r("No current user"),[2];c.label=3;case 3:return c.trys.push([3,7,,8]),[4,this._userSession(t)];case 4:return o=c.sent(),(i=!!e&&e.bypassCache)?[4,this.Credentials.clear()]:[3,6];case 5:c.sent(),c.label=6;case 6:return a=this._config.clientMetadata,s=o.getAccessToken().decodePayload().scope,(void 0===s?"":s).split(" ").includes(Wu)?(t.getUserData((function(e,o){return bs(l,void 0,void 0,(function(){var i,a,s,u,l,c,d;return ws(this,(function(f){switch(f.label){case 0:if(!e)return[3,7];if(Vu.debug("getting user data failed",e),!this.isSessionInvalid(e))return[3,5];f.label=1;case 1:return f.trys.push([1,3,,4]),[4,this.cleanUpInvalidSession(t)];case 2:return f.sent(),[3,4];case 3:return i=f.sent(),r(new Error("Session is invalid due to: "+e.message+" and failed to clean up invalid session: "+i.message)),[2];case 4:return r(e),[3,6];case 5:n(t),f.label=6;case 6:return[2];case 7:for(a=o.PreferredMfaSetting||"NOMFA",s=[],u=0;u0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]-1};var bl;function wl(e){var t=-1,n=null==e?0:e.length;for(this.clear();++ts))return!1;var l=i.get(e),c=i.get(t);if(l&&c)return l==t&&c==e;var d=-1,f=!0,h=n&Vc?new Rc:void 0;for(i.set(e,t),i.set(t,e);++d-1&&e%1==0&&e-1&&e%1==0&&e<=jd};var Ld={};Ld["[object Float32Array]"]=Ld["[object Float64Array]"]=Ld["[object Int8Array]"]=Ld["[object Int16Array]"]=Ld["[object Int32Array]"]=Ld["[object Uint8Array]"]=Ld["[object Uint8ClampedArray]"]=Ld["[object Uint16Array]"]=Ld["[object Uint32Array]"]=!0,Ld["[object Arguments]"]=Ld["[object Array]"]=Ld["[object ArrayBuffer]"]=Ld["[object Boolean]"]=Ld["[object DataView]"]=Ld["[object Date]"]=Ld["[object Error]"]=Ld["[object Function]"]=Ld["[object Map]"]=Ld["[object Number]"]=Ld["[object Object]"]=Ld["[object RegExp]"]=Ld["[object Set]"]=Ld["[object String]"]=Ld["[object WeakMap]"]=!1,Rd=function(e){return _d(e)&&Dd(e.length)&&!!Ld[Ol(e)]};var Bd={};Bd=function(e){return function(t){return e(t)}};var zd=i("5fgva"),Vd=zd&&zd.isTypedArray,Wd=Vd?Bd(Vd):Rd;Md=Wd;var Hd=Object.prototype.hasOwnProperty;Sd=function(e,t){var n=hd(e),r=!n&&Ed(e),o=!n&&!r&&Od(e),i=!n&&!r&&!o&&Md(e),a=n||r||o||i,s=a?Cd(e.length,String):[],u=s.length;for(var l in e)!t&&!Hd.call(e,l)||a&&("length"==l||o&&("offset"==l||"parent"==l)||i&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Nd(l,u))||s.push(l);return s};var Gd={},qd={},Kd=Object.prototype;qd=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Kd)};var Zd={},Yd={};var Qd=(Yd=function(e,t){return function(n){return e(t(n))}})(Object.keys,Object);Zd=Qd;var $d=Object.prototype.hasOwnProperty;Gd=function(e){if(!qd(e))return Zd(e);var t=[];for(var n in Object(e))$d.call(e,n)&&"constructor"!=n&&t.push(n);return t};var Jd={};Jd=function(e){return null!=e&&Dd(e.length)&&!Pl(e)},wd=function(e){return Jd(e)?Sd(e):Gd(e)},cd=function(e){return dd(e,wd,md)};var Xd=1,ef=Object.prototype.hasOwnProperty;ld=function(e,t,n,r,o,i){var a=n&Xd,s=cd(e),u=s.length;if(u!=cd(t).length&&!a)return!1;for(var l=u;l--;){var c=s[l];if(!(a?c in t:ef.call(t,c)))return!1}var d=i.get(e),f=i.get(t);if(d&&f)return d==t&&f==e;var h=!0;i.set(e,t),i.set(t,e);for(var p=a;++l0){if(++t>=Cm)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(bm);wm=_m,mm=function(e,t){return wm(gm(e,t,Lh),e+"")};var Im={};Im=function(e,t,n){if(!Vl(n))return!1;var r=typeof t;return!!("number"==r?Jd(n)&&Nd(t,n.length):"string"==r&&t in n)&&ml(n[t],e)};var km=function(e){return mm((function(t,n){var r=-1,o=n.length,i=o>1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,a&&Im(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),t=Object(t);++r0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},Tm.__rest=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};var Pm={timeout:1e4};xm.waitFor=function(e,t,n){var r=Tm.__assign(Tm.__assign({},Pm),n);return new Promise((function(n,o){var i=!1,a=r.timeout===1/0?void 0:setTimeout((function(){u.unsubscribe(),o(new Error("Timeout of ".concat(r.timeout," ms exceeded")))}),r.timeout),s=function(){clearTimeout(a),i=!0,null==u||u.unsubscribe()},u=e.subscribe({next:function(e){t(e)&&(s(),n(e))},error:function(e){s(),o(e)},complete:function(){s(),o(new Error("Actor terminated without satisfying predicate"))}});i&&u.unsubscribe()}))};var Om=["+1","+7","+20","+27","+30","+31","+32","+33","+34","+36","+39","+40","+41","+43","+44","+45","+46","+47","+48","+49","+51","+52","+53","+54","+55","+56","+57","+58","+60","+61","+62","+63","+64","+65","+66","+81","+82","+84","+86","+90","+91","+92","+93","+94","+95","+98","+212","+213","+216","+218","+220","+221","+222","+223","+224","+225","+226","+227","+228","+229","+230","+231","+232","+233","+234","+235","+236","+237","+238","+239","+240","+241","+242","+243","+244","+245","+246","+248","+249","+250","+251","+252","+253","+254","+255","+256","+257","+258","+260","+261","+262","+263","+264","+265","+266","+267","+268","+269","+290","+291","+297","+298","+299","+345","+350","+351","+352","+353","+354","+355","+356","+357","+358","+359","+370","+371","+372","+373","+374","+375","+376","+377","+378","+379","+380","+381","+382","+385","+386","+387","+389","+420","+421","+423","+500","+501","+502","+503","+504","+505","+506","+507","+508","+509","+537","+590","+591","+593","+594","+595","+596","+597","+598","+599","+670","+672","+673","+674","+675","+676","+677","+678","+679","+680","+681","+682","+683","+685","+686","+687","+688","+689","+690","+691","+692","+850","+852","+853","+855","+856","+872","+880","+886","+960","+961","+962","+963","+964","+965","+966","+967","+968","+970","+971","+972","+973","+974","+975","+976","+977","+992","+993","+994","+995","+996","+998"],Nm={birthdate:{label:"Birthdate",placeholder:"Enter your Birthdate",type:"date",autocomplete:"bday",isRequired:!0},confirmation_code:{label:"Confirmation Code",placeholder:"Enter your Confirmation Code",type:"number",autocomplete:"one-time-code",isRequired:!0},confirm_password:{label:"Confirm Password",placeholder:"Please confirm your Password",type:"password",autocomplete:"new-password",isRequired:!0},email:{label:"Email",placeholder:"Enter your Email",type:"email",autocomplete:"username",isRequired:!0},family_name:{label:"Family Name",placeholder:"Enter your Family Name",type:"text",autocomplete:"family-name",isRequired:!0},given_name:{label:"Given Name",placeholder:"Enter your Given Name",type:"text",autocomplete:"given-name",isRequired:!0},middle_name:{label:"Middle Name",placeholder:"Enter your Middle Name",type:"text",autocomplete:"additional-name",isRequired:!0},name:{label:"Name",placeholder:"Enter your Name",type:"text",autocomplete:"name",isRequired:!0},nickname:{label:"Nickname",placeholder:"Enter your Nickname",type:"text",autocomplete:"tel",isRequired:!0},password:{label:"Password",placeholder:"Enter your Password",type:"password",autocomplete:"new-password",isRequired:!0},phone_number:{label:"Phone Number",placeholder:"Enter your Phone Number",type:"tel",autocomplete:"tel",dialCode:"+1",dialCodeList:Om,isRequired:!0},preferred_username:{label:"Preferred Username",placeholder:"Enter your Preferred Username",type:"text",isRequired:!0},profile:{label:"Profile",placeholder:"Add your Profile",type:"url",autocomplete:"url",isRequired:!0},website:{label:"Website",placeholder:"Add your Website",type:"url",autocomplete:"url",isRequired:!0},username:{label:"Username",placeholder:"Enter your Username",type:"text",autocomplete:"username",isRequired:!0}},Um=["^","$","*",".","[","]","{","}","(",")","?",'"',"!","@","#","%","&","/","\\",",",">","<","'",":",";","|","_","~","`","=","+","-"," "],Fm=function(e){var t;return null===(t=e.context.actorRef)||void 0===t?void 0:t.getSnapshot()},Rm=function(e){var t;return null===(t=Fm(e))||void 0===t?void 0:t.context},Mm=function(e){var t,n=e.packageName,r=e.version;(t="".concat(n,"/").concat(r))&&(fu.prototype.userAgent&&!fu.prototype.userAgent.includes(t)&&(fu.prototype.userAgent=fu.prototype.userAgent.concat(" ",t)),fu.prototype.userAgent&&""!==fu.prototype.userAgent||(fu.prototype.userAgent=t))},Dm=function(e){return el(void 0,void 0,void 0,(function(){return tl(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,(0,xm.waitFor)(e,(function(e){return Fm(e).matches("autoSignIn")}))];case 1:case 2:return t.sent(),[3,3];case 3:return[2]}}))}))},jm=function(e,t){return el(void 0,void 0,void 0,(function(){var n,r,o;return tl(this,(function(i){switch(i.label){case 0:switch(n=t.send,r=t.getSnapshot(),e.payload.event){case"tokenRefresh":return[3,1];case"autoSignIn":return[3,2];case"autoSignIn_failure":return[3,5];case"signOut":case"tokenRefresh_failure":return[3,7]}return[3,8];case 1:return r.matches("authenticated.idle")&&n("TOKEN_REFRESH"),[3,9];case 2:return r.matches("authenticated")?[3,4]:[4,Dm(t)];case 3:i.sent(),(null==(o=Fm(t.getSnapshot()))?void 0:o.matches("autoSignIn"))&&n({type:"AUTO_SIGN_IN",data:e.payload.data}),i.label=4;case 4:return[3,9];case 5:return[4,Dm(t)];case 6:return i.sent(),(null==(o=Fm(t.getSnapshot()))?void 0:o.matches("autoSignIn"))&&n({type:"AUTO_SIGN_IN_FAILURE",data:e.payload.data}),[3,9];case 7:return r.matches("authenticated.idle")&&n("SIGN_OUT"),[3,9];case 8:return[3,9];case 9:return[2]}}))}))},Lm=function(e,t){return void 0===t&&(t=jm),P.listen("auth",function(e,t){return function(n){t(n,e)}}(e,t),"authenticator-hub-handler")},Bm=function(e){return Um.some((function(t){return e.includes(t)}))},zm=function(e,t,n){return encodeURI("otpauth://totp/".concat(e,":").concat(t,"?secret=").concat(n,"&issuer=").concat(e))};function Vm(e){for(var t=[],n=1;n=e},message:"Password must have at least ".concat(e," characters")}}(n)),r&&t.push(Wm),o&&t.push(Hm),i&&t.push(Gm),a&&t.push(qm),t},Ym=function(e){return[Km(e)]},Qm=function(e){var t=e.value,n=e.validators,r=e.eventType,o=e.hasBlurred;return t?n.reduce((function(e,n){var i=n.validator,a=n.validationMode,s=n.message;if(function(e){var t=e.validationMode,n=e.eventType,r=e.hasBlurred;switch(t){case"onBlur":return"blur"===n;case"onChange":return"change"===n;case"onTouched":return"blur"===n||r}}({validationMode:a,eventType:r,hasBlurred:o}))return i(t)?e:nl(nl([],e,!0),[s],!1)}),[]):[]},$m=(Ju({},{"Account recovery requires verified contact information":"Zurücksetzen des Account benötigt einen verifizierten Account","Back to Sign In":"Zurück zur Anmeldung","Change Password":"Passwort ändern",Changing:"Ändern von",Code:"Code","Confirm Password":"Passwort bestätigen","Confirm Sign Up":"Registrierung bestätigen","Confirm SMS Code":"SMS-Code bestätigen","Confirm TOTP Code":"TOTP-Code bestätigen",Confirm:"Bestätigen","Confirmation Code":"Bestätigungs-Code",Confirming:"Wird bestätigt","Create a new account":"Einen neuen Account erstellen","Create Account":"Account erstellen","Creating Account":"Account wird erstellt","Dismiss alert":"Warnung verwerfen",Email:"Email","Enter your code":"Geben Sie Ihren Code ein","Enter your email":"Geben Sie Ihre Email ein","Enter your phone number":"Geben Sie Ihre Telefonnummer ein","Enter your username":"Geben Sie Ihren Benutzernamen ein","Forgot your password?":"Passwort vergessen? ","Hide password":"Passwort verbergen","It may take a minute to arrive":"Es kann eine Minute dauern, bis er ankommt",Loading:"Wird geladen","New password":"Neues Passwort",or:"oder",Password:"Passwort","Phone Number":"Telefonnummer","Resend Code":"Code erneut senden","Reset your Password":"Zurücksetzen des Passwort","Reset your password":"Zurücksetzen des passwort","Send code":"Code senden","Send Code":"Code senden",Sending:"Wird gesendet","Setup TOTP":"TOTP einrichten","Show password":"Passwort anzeigen","Sign in to your account":"Melden Sie sich mit Ihrem Account an","Sign In with Amazon":"Mit Amazon anmelden","Sign In with Apple":"Mit Apple anmelden","Sign In with Facebook":"Mit Facebook anmelden","Sign In with Google":"Mit Google anmelden","Sign in":"Anmelden","Sign In":"Anmelden","Signing in":"Wird angemeldet",Skip:"Überspringen",Submit:"Abschicken",Submitting:"Wird gesendet",Username:"Benutzername","Verify Contact":"Kontakt verifizieren",Verify:"Verifizieren","We Sent A Code":"Wir haben einen Code gesendet","We Texted You":"Wir haben Ihnen eine SMS-Textur","Your code is on the way. To log in, enter the code we sent you":"Ihr Code ist unterwegs. Um sich anzumelden, geben Sie den Code ein, den wir Ihnen gesendet haben","An account with the given email already exists.":"Ein Account mit dieser Email existiert bereits.","Confirm a Code":"Code bestätigen","Confirm Sign In":"Anmeldung bestätigen","Create account":"Hier registrieren","Enter your password":"Geben Sie Ihr Passwort ein","Forgot Password":"Passwort vergessen","Have an account? ":"Schon registriert? ","Incorrect username or password":"Falscher Benutzername oder falsches Passwort","Invalid password format":"Ungültiges Passwort-Format","Invalid phone number format":"Ungültiges Telefonummern-Format. Benutze eine Nummer im Format: +12345678900","It may take a minute to arrive.":"Es könnte eine Minute dauern, bis der Code eintrifft.","Lost your code? ":"Code verloren? ","New Password":"Neues Passwort","No account? ":"Kein Account? ","Password attempts exceeded":"Die maximale Anzahl der fehlerhaften Anmeldeversuche wurde erreicht","Reset password":"Passwort zurücksetzen","Sign Out":"Abmelden","Sign Up":"Registrieren","User already exists":"Dieser Benutzer existiert bereits","User does not exist":"Dieser Benutzer existiert nicht","Username cannot be empty":"Benutzername darf nicht leer sein","We Emailed You":"Email wurde versendet","Your code is on the way. To log in, enter the code we emailed to":"Ihr Bestätigungscode ist unterwegs. Um sich einzuloggen geben Sie den Code ein, den wir verschickt haben an","Your code is on the way. To log in, enter the code we texted to":"Ihr Bestätigungscode ist unterwegs. Um sich einzuloggen geben Sie den Code ein, den wir verschickt haben an"}),Ju({},{"Account recovery requires verified contact information":"Account recovery requires verified contact information","Back to Sign In":"Back to Sign In","Change Password":"Change Password",Changing:"Changing",Code:"Code","Confirm Password":"Confirm Password","Confirm Sign Up":"Confirm Sign Up","Confirm SMS Code":"Confirm SMS Code","Confirm TOTP Code":"Confirm TOTP Code",Confirm:"Confirm","Confirmation Code":"Confirmation Code",Confirming:"Confirming","Create a new account":"Create a new account","Create Account":"Create Account","Creating Account":"Creating Account","Dismiss alert":"Dismiss alert",Email:"Email","Enter your code":"Enter your code","Enter your email":"Enter your email","Enter your phone number":"Enter your phone number","Enter your username":"Enter your username","Forgot password?":"Forgot password?","Forgot your password?":"Forgot your password?","Hide password":"Hide password","It may take a minute to arrive":"It may take a minute to arrive",Loading:"Loading","New password":"New password",or:"or",Password:"Password","Phone Number":"Phone Number","Resend Code":"Resend Code","Reset your password":"Reset your password","Reset your Password":"Reset your Password","Send code":"Send code","Send Code":"Send Code",Sending:"Sending","Setup TOTP":"Setup TOTP","Show password":"Show password","Sign in to your account":"Sign in to your account","Sign In with Amazon":"Sign In with Amazon","Sign In with Apple":"Sign In with Apple","Sign In with Facebook":"Sign In with Facebook","Sign In with Google":"Sign In with Google","Sign in":"Sign in","Sign In":"Sign In","Signing in":"Signing in",Skip:"Skip",Submit:"Submit",Submitting:"Submitting",Username:"Username","Verify Contact":"Verify Contact",Verify:"Verify","We Emailed You":"We Emailed You","We Sent A Code":"We Sent A Code","We Texted You":"We Texted You","Your code is on the way. To log in, enter the code we emailed to":"Your code is on the way. To log in, enter the code we emailed to","Your code is on the way. To log in, enter the code we sent you":"Your code is on the way. To log in, enter the code we sent you","Your code is on the way. To log in, enter the code we texted to":"Your code is on the way. To log in, enter the code we texted to"}),Ju({},{"Account recovery requires verified contact information":"La recuperación de la cuenta requiere información de contacto verificada","Back to Sign In":"Volver a inicio de sesión","Change Password":"Cambiar contraseña",Changing:"Cambiando",Code:"Código","Confirm Password":"Confirmar contraseña","Confirm Sign Up":"Confirmar registro","Confirm SMS Code":"Confirmar el código de SMS","Confirm TOTP Code":"Confirmar código TOTP",Confirm:"Confirmar","Confirmation Code":"Código de confirmación",Confirming:"Confirmando","Create a new account":"Crear una cuenta nueva","Create Account":"Crear cuenta","Creating Account":"Creando cuenta","Dismiss alert":"Descartar alerta",Email:"Email","Enter your code":"Ingrese el código","Enter your email":"Escriba su Email","Enter your phone number":"Ingrese el número de teléfono","Enter your username":"Ingrese el nombre de usuario","Forgot your password?":"¿Olvidó su contraseña?","Hide password":"Ocultar contraseña","It may take a minute to arrive":"Es posible que tarde un minuto en llegar",Loading:"Cargando","New password":"Nueva contraseña",or:"o",Password:"Contraseña","Phone Number":"Número de teléfono","Resend Code":"Reenviar código","Reset your password":"Restablecer su contraseña","Reset your Password":"Restablecer su Contraseña","Send code":"Enviar código","Send Code":"Enviar código",Sending:"Enviando","Setup TOTP":"Configurar TOTP","Show password":"Mostrar contraseña","Sign in to your account":"Iniciar sesión en tu cuenta","Sign In with Amazon":"Iniciar Sesión con Amazon","Sign In with Apple":"Iniciar Sesión con Apple","Sign In with Facebook":"Iniciar Sesión con Facebook","Sign In with Google":"Iniciar Sesión con Google","Sign in":"Iniciar sesión","Sign In":"Iniciar Sesión","Signing in":"Iniciando sesión",Skip:"Omitir",Submit:"Enviar",Submitting:"Enviando",Username:"Nombre de usuario","Verify Contact":"Verificar contacto",Verify:"Verificar","We Emailed You":"Le hemos enviado un correo electrónico","We Sent A Code":"Hemos enviado un código","We Texted You":"Le hemos enviado un mensaje de texto","Your code is on the way. To log in, enter the code we emailed to":"El código está en camino. Para iniciar sesión, escriba el código que hemos enviado por correo electrónico a","Your code is on the way. To log in, enter the code we sent you":"El código está en camino. Para iniciar sesión, escriba el código que le hemos enviado","Your code is on the way. To log in, enter the code we texted to":"El código está en camino. Para iniciar sesión, escriba el código que hemos enviado por mensaje de texto a","An account with the given email already exists.":"Ya existe una cuenta con el correo ingresado.","Confirm a Code":"Confirmar un código","Confirm Sign In":"Confirmar inicio de sesión","Forgot Password":"Olvidé mi contraseña","Incorrect username or password.":"Nombre de usuario o contraseña incorrecta","Invalid password format":"Formato de contraseña inválido","Invalid phone number format":"Formato de número de teléfono inválido","Loading...":"Cargando...","New Password":"Nueva contraseña","Resend a Code":"Reenviar un código","Sign Out":"Cerrar sesión","Sign Up with Amazon":"Crear cuenta con Amazon","Sign Up with Apple":"Crear cuenta con Apple","Sign Up with Facebook":"Crear cuenta con Facebook","Sign Up with Google":"Crear cuenta con Google","Sign Up":"Crear cuenta","User already exists":"El usuario ya existe","User does not exist":"El usuario no existe","Username cannot be empty":"El nombre de usuario no puede estar vacío","Your passwords must match":"Las contraseñas deben coincidir"}),Ju({},{"Account recovery requires verified contact information":"La récupération du compte nécessite des informations de contact vérifiées","Back to Sign In":"Retour à la connexion","Change Password":"Modifier le mot de passe",Changing:"Modification en cours",Code:"Code","Confirm Password":"Confirmez le mot de passe","Confirm Sign Up":"Confirmer l'inscription","Confirm SMS Code":"Confirmer le code SMS","Confirm TOTP Code":"Confirmer le code TOTP",Confirm:"Confirmer","Confirmation Code":"Code de confirmation",Confirming:"Confirmation","Create a new account":"Créer un nouveau compte","Create Account":"Créer un compte","Creating Account":"Création d'un compte","Dismiss alert":"Supprimer l'alerte",Email:"Email","Enter your code":"Saisissez cotre code de confirmation","Enter your email":"Saisissez votre adresse email","Enter your phone number":"Saisissez votre numéro de téléphone","Enter your username":"Saisissez votre nom d'utilisateur","Forgot your password?":"Mot de passe oublié ? ","Hide password":"Masquer le mot de passe","It may take a minute to arrive":"Cela peut prendre une minute",Loading:"Chargement en cours","New password":"Nouveau mot de passe",or:"ou",Password:"Mot de passe","Phone Number":"Numéro de téléphone","Resend Code":"Renvoyer le code","Reset your Password":"Réinitialiser votre mot de passe","Reset your password":"Réinitialisez votre mot de passe","Send code":"Envoyer le code","Send Code":"M'envoyer un code",Sending:"Envoi en cours","Setup TOTP":"Configuration de TOTP","Show password":"Afficher le mot de passe","Sign in to your account":"Connexion à votre compte","Sign In with Amazon":"Se connecter avec Amazon","Sign In with Apple":"Se connecter avec Apple","Sign In with Facebook":"Se connecter avec Facebook","Sign In with Google":"Se connecter avec Google","Sign in":"Se connecter","Sign In":"Se connecter","Signing in":"Connexion en cours",Skip:"Passer",Submit:"Soumettre",Submitting:"Envoi en cours",Username:"Nom d'utilisateur","Verify Contact":"Vérifier le contact",Verify:"Vérifier","We Sent A Code":"Nous avons envoyé un code","We Texted You":"Nous vous avons envoyé un SMS","Your code is on the way. To log in, enter the code we sent you":"Votre code est en cours d'envoi. Pour vous connecter, saisissez le code que nous vous avons envoyé","An account with the given email already exists.":"Un utilisateur avec cette adresse email existe déjà.",Change:"Modifier","Confirm a Code":"Confirmer un code","Confirm Sign In":"Confirmer la connexion","Create account":"Créer un compte","Enter your password":"Saisissez votre mot de passe","Forgot Password":"Mot de passe oublié","Have an account? ":"Déjà un compte ? ",Hello:"Bonjour","Incorrect username or password":"Identifiant ou mot de passe incorrect","Invalid password format":"Format de mot de passe invalide","Invalid phone number format":"Format de numéro de téléphone invalide. Veuillez utiliser un format +12345678900","Loading...":"Chargement...","Lost your code? ":"Vous avez perdu votre code ? ","Network error":"Erreur réseau","New Password":"Nouveau mot de passe","No account? ":"Pas de compte ? ","Resend a Code":"Renvoyer un code","Reset password":"Réinitialisez votre mot de passe",Send:"Envoyer","Sign In with AWS":"Se connecter avec AWS","Sign Out":"Déconnexion","Sign Up":"S'inscrire",SMS:"SMS","User already exists":"L'utilisateur existe déjà","User does not exist":"L'utilisateur n'existe pas","Username cannot be empty":"Le nom d'utilisateur doit être renseigné","Username/client id combination not found.":"L'utilisateur n'existe pas","We Emailed You":"Nous vous avons envoyé un code","Your code is on the way. To log in, enter the code we emailed to":"Votre code est en route. Pour vous connecter entrez le code reçu sur cette adresse email","Your code is on the way. To log in, enter the code we texted to":"Votre code est en route. Pour vous connecter entrez le code reçu sur ce numéro de téléphone","It may take a minute to arrive.":"Cela peut prendre quelques minutes."}),Ju({},{"Account recovery requires verified contact information":"Il ripristino dell'account richiede informazioni di contatto verificate","Back to Sign In":"Torna alla schermata di accesso","Change Password":"Cambia la password",Changing:"Modifica in corso",Code:"Codice","Confirm Password":"Conferma la password","Confirm Sign Up":"Conferma registrazione","Confirm SMS Code":"Conferma codice SMS","Confirm TOTP Code":"Conferma codice TOTP",Confirm:"Conferma","Confirmation Code":"Codice di verifica",Confirming:"Conferma in corso","Create a new account":"Crea un nuovo account","Create Account":"Crea Account","Creating Account":"Creazione account in corso","Dismiss alert":"Ignora l'avviso",Email:"Email","Enter your code":"Inserisci il tuo codice","Enter your email":"Inserisci la tua e-mail","Enter your phone number":'Inserisci il tuo numero di telefono"',"Enter your username":"Inserisci il tuo nome utente","Forgot your password?":"Password dimenticata?","Hide password":"Nascondi password","It may take a minute to arrive":"L'arrivo potrebbe richiedere qualche minuto",Loading:"Caricamento in corso","New password":"Nuova password",or:"oppure",Password:"Password","Phone Number":"Numero di telefono","Resend Code":"Invia nuovamente il codice","Reset your Password":"Reimposta la tua Password","Reset your password":"Reimposta la tua password","Send code":"Invia codice","Send Code":"Invia codice",Sending:"Invio in corso","Setup TOTP":"Configura TOTP","Show password":"Mostra password","Sign in to your account":"Accedi al tuo account","Sign In with Amazon":"Accedi con Amazon","Sign In with Apple":"Accedi con Apple","Sign In with Facebook":"Accedi con Facebook","Sign In with Google":"Accedi con Google","Sign in":"Accedi","Sign In":"Accedi","Signing in":"Accesso in corso",Skip:"Salta",Submit:"Invia",Submitting:"Invio in corso",Username:"Nome utente","Verify Contact":"Verifica contatto",Verify:"Verifica","We Emailed You":"Ti abbiamo inviato un'e-mail","We Sent A Code":"Ti abbiamo inviato un codice","We Texted You":"Ti abbiamo inviato un SMS","Your code is on the way. To log in, enter the code we emailed to":"Il codice è in arrivo. Per effettuare l'accesso, immetti il codice che ti abbiamo inviato via e-mail","Your code is on the way. To log in, enter the code we sent you":"Il codice è in arrivo. Per accedere, immetti il codice che ti abbiamo inviato","Your code is on the way. To log in, enter the code we texted to":"Il codice è in arrivo. Per accedere, immetti il codice che abbiamo inviato tramite SMS","An account with the given email already exists.":"Questa email è già utilizzata da un altro account.","Confirm a Code":"Conferma un codice","Confirm Sign In":"Conferma l'accesso","Create account":"Crea account","Enter your password":"Inserisci la tua password","Forgot Password?":"Password dimenticata?","Have an account? ":"Già registrato?","Incorrect username or password":"Nome utente o password errati","Invalid password format":"Formato della password non valido","Invalid phone number format":"Formato del numero di telefono non valido","Lost your code?":"Codice smarrito?","New Password":"Nuova password","No account? ":"Non hai un account?","Password attempts exceeded":"Il numero massimo di tentativi di accesso falliti è stato raggiunto","Reset password":"Reimposta password","Sign Out":"Esci","Sign Up":"Registrati","User already exists":"Utente già esistente","User does not exist":"Utente inesistente","Username cannot be empty":"Il nome utente non può essere vuoto"}),Ju({},{"Account recovery requires verified contact information":"アカウントの復旧には確認済みの連絡先が必要です","Back to Sign In":"サインインに戻る","Change Password":"パスワードを変える ",Changing:"変更中",Code:"コード","Confirm Password":"パスワードの確認","Confirm Sign Up":"登録する","Confirm SMS Code":"SMS コードを確認","Confirm TOTP Code":"TOTP コードを確認",Confirm:"確定","Confirmation Code":"確認コード",Confirming:"確認中","Create a new account":"新しいアカウントを作る","Create Account":"アカウントを作る","Creating Account":"アカウントの作成中","Dismiss alert":"アラートを閉じる",Email:"メールアドレス","Enter your code":"コードを入力","Enter your email":"メールアドレスを入力","Enter your phone number":"電話番号を入力","Enter your username":"ユーザー名を入力 ","Forgot your password?":"パスワードを忘れましたか? ","Hide password":"パスワードを非表示","It may take a minute to arrive":"到着するまでに 1 分かかることがあります。",Loading:"ロード中","New password":"新しいパスワード",or:"又は",Password:"パスワード ","Phone Number":"電話番号","Resend Code":"コードを再送信","Reset your Password":"パスワードをリセット","Reset your password":"パスワードをリセットする","Send code":"コードを送信","Send Code":"コードを送信",Sending:"送信中","Setup TOTP":"TOTP をセットアップ","Show password":"パスワードを表示","Sign in to your account":"アカウントにサインイン ","Sign In with Amazon":"Amazonでサインイン","Sign In with Apple":"Apple でサインイン","Sign In with Facebook":"Facebookでサインイン","Sign In with Google":"Googleでサインイン","Sign In":"サインイン ","Sign in":"サインイン","Signing in":"サインイン中",Skip:"スキップ",Submit:"送信",Submitting:"送信中",Username:"ユーザー名 ","Verify Contact":"連絡先を確認",Verify:"確認","We Sent A Code":"コードが送信されました","We Texted You":"テキストが送信されました","Your code is on the way. To log in, enter the code we sent you":"コードが途中です。ログインするには、送信したコードを入力してください。","An account with the given email already exists.":"入力されたメールアドレスのアカウントが既に存在します","Confirm a Code":"コードを確認","Confirm Sign In":"サインインする","Create account":"アカウントを作る ","Enter your password":"パスワードを入力 ","Forgot Password":"パスワードを忘れた ","Have an account? ":"アカウントを持っていますか?","Incorrect username or password":"ユーザー名かパスワードが異なります ","Invalid password format":"パスワードの形式が無効です ","Invalid phone number format":"不正な電話番号の形式です。\n+12345678900 の形式で入力してください","It may take a minute to arrive.":"コードを受信するまで数分かかる場合があります。","Lost your code? ":"コードを失くしましたか?","New Password":"新しいパスワード","No account? ":"アカウントが無いとき ","Password attempts exceeded":"サインインの試行回数が上限に達しました","Reset password":"パスワードをリセット ","Sign Out":"サインアウト ","Sign Up":"登録 ","User already exists":"既にユーザーが存在しています ","User does not exist":"ユーザーが存在しません ","Username cannot be empty":"ユーザー名は入力必須です","We Emailed You":"コードを送信しました","Your code is on the way. To log in, enter the code we emailed to":"ログインするには、メールに記載されたコードを入力してください。送信先:","Your code is on the way. To log in, enter the code we texted to":"ログインするには、テキストメッセージに記載されたコードを入力してください。送信先:"}),Ju({},{"Account recovery requires verified contact information":"계정 복구를 위해 연락처 확인이 필요합니다","Back to Sign In":"로그인으로 돌아가기","Change Password":"비밀번호 변경하기",Changing:"변경중",Code:"코드","Confirm Password":"비밀번호 재확인","Confirm Sign Up":"회원가입 확인","Confirm SMS Code":"휴대폰 본인 확인","Confirm TOTP Code":"TOTP 인증번호 확인",Confirm:"확인","Confirmation Code":"인증번호",Confirming:"확인중","Create a new account":"회원가입","Create Account":"회원가입","Creating Account":"회원가입중","Dismiss alert":"알림 무시",Email:"이메일","Enter your code":"인증번호를 입력해주세요","Enter your email":"이메일 입력","Enter your phone number":"전화번호 입력","Enter your username":"아이디를 입력해주세요","Hide password":"비밀번호 숨기기","It may take a minute to arrive":"도착하는 데 1분 정도 걸릴 수 있습니다",Loading:"로딩중","New password":"새 비밀번호",or:"또는",Password:"비밀번호","Phone Number":"전화번호","Resend Code":"인증번호 재전송","Reset your password":"비밀번호 재설정","Reset your Password":"비밀번호 재설정","Send code":"인증코드 보내기","Send Code":"코드 전송",Sending:"전송중","Setup TOTP":"TOTP 설정하기","Show password":"비밀번호 보이기","Sign in to your account":"로그인","Sign In with Amazon":"Amazon 로그인","Sign In with Apple":"Apple 로그인","Sign In with Facebook":"Facebook 로그인","Sign In with Google":"Google 로그인","Sign in":"로그인","Sign In":"로그인","Signing in":"로그인중",Skip:"다음에 하기",Submit:"확인",Submitting:"확인중",Username:"아이디","Verify Contact":"연락처 확인",Verify:"인증","We Emailed You":"이메일을 보냄","We Sent A Code":"코드를 보냄","We Texted You":"문자 메시지를 보냄","Your code is on the way. To log in, enter the code we emailed to":"코드가 전송 중입니다. 로그인하려면 이메일로 전송한 코드를 입력하세요","Your code is on the way. To log in, enter the code we sent you":"코드가 전송 중입니다. 로그인하려면 전송한 코드를 입력하세요","Your code is on the way. To log in, enter the code we texted to":"코드가 전송 중입니다. 로그인하려면 문자 메시지로 전송한 코드를 입력하세요",Birthdate:"생년월일","Family Name":"성","Forgot your password?":"비밀번호를 잊으셨나요?","Given Name":"이름",Name:"성함",Nickname:"닉네임","Preferred Username":"닉네임",Profile:"프로필","Reset Password":"비밀번호 재설정",Website:"웹사이트"}),Ju({},{"Account recovery requires verified contact information":"Accountherstel vereist geverifieerde contactgegevens","Back to Sign In":"Terug naar inloggen","Change Password":"Wachtwoord wijzigen",Changing:"Wordt aangepast",Code:"Code","Confirm Password":"Bevestig Wachtwoord","Confirm Sign Up":"Bevestig inschrijving","Confirm SMS Code":"Bevestig SMS Code","Confirm TOTP Code":"Bevestig TOTP Code",Confirm:"Bevestig","Confirmation Code":"Bevestigingscode",Confirming:"Bevestigen","Create a new account":"Nieuw account aanmaken","Create Account":"Account aanmaken","Creating Account":"Account wordt aangemaakt","Dismiss alert":"Waarschuwing sluiten",Email:"E-mail","Enter your code":"Vul je code in","Enter your email":"Vul je e-mail in","Enter your phone number":"Vul je telefoonnummer in","Enter your username":"Vul je gebruikersnaam in","Forgot your password?":"Wachtwoord vergeten? ","Hide password":"Verberg wachtwoord","It may take a minute to arrive":"Het kan even duren voordat deze aankomt",Loading:"Laden","New password":"Nieuw wachtwoord",or:"of",Password:"Wachtwoord","Phone Number":"Telefoonnummer","Resend Code":"Verstuur code nogmaals","Reset your password":"Reset je wachtwoord","Reset your Password":"Wachtwoord resetten","Send code":"Verstuur code","Send Code":"Verstuur Code",Sending:"Versturen","Setup TOTP":"TOTP Instellingen","Show password":"Toon wachtwoord","Sign in to your account":"Inloggen op je account","Sign In with Amazon":"Inloggen met Amazon","Sign In with Apple":"Inloggen met Apple","Sign In with Facebook":"Inloggen met Facebook","Sign In with Google":"Inloggen met Google","Sign in":"Inloggen","Sign In":"Inloggen","Signing in":"Inloggen",Skip:"Overslaan",Submit:"Versturen",Submitting:"Wordt verstuurd",Username:"Gebruikersnaam","Verify Contact":"Verifieer Contact",Verify:"Verifieer","We Emailed You":"We hebben u een e-mail gestuurd","We Sent A Code":"We hebben een code gestuurd","We Texted You":"We hebben u een sms gestuurd","Your code is on the way. To log in, enter the code we emailed to":"Uw code is onderweg. Om in te loggen, voer de code in die we gemaild hebben naar","Your code is on the way. To log in, enter the code we sent you":"Uw code is onderweg. Om in te loggen, voer de code in die we u hebben gestuurd","Your code is on the way. To log in, enter the code we texted to":"Uw code is onderweg. Om in te loggen, voer de code in die we hebben gestuurd naar"}),Ju({},{"Account recovery requires verified contact information":"Odzyskanie konta wymaga zweryfikowanych danych kontaktowych","Back to Sign In":"Powrót do logowania","Change Password":"Zmień hasło",Changing:"Zmienianie",Code:"Kod","Confirm Password":"Potwierdź Hasło","Confirm Sign Up":"Potwierdź rejestrację","Confirm SMS Code":"Potwierdź kod SMS","Confirm TOTP Code":"Potwierdź hasło jednorazowe",Confirm:"Potwierdź","Confirmation Code":"Kod potwierdzenia",Confirming:"Potwierdzanie","Create a new account":"Utwórz nowe konto","Create Account":"Utwórz konto","Creating Account":"Tworzenie konta","Dismiss alert":"Odrzuć alert",Email:"E-mail","Enter your code":"Wprowadź swój kod","Enter your email":"Wpisz swój adres e-mail","Enter your phone number":"Wpisz swój numer telefonu","Enter your username":"Wprowadź swoją nazwę użytkownika","Forgot your password?":"Zapomniałeś hasła? ","Hide password":"Ukryj hasło","It may take a minute to arrive":"Może to chwilę potrwać",Loading:"Ładowanie","New password":"Nowe hasło",or:"albo",Password:"Hasło","Phone Number":"Numer telefonu","Resend Code":"Wyślij kod ponownie","Reset your password":"Zresetuj swoje hasło","Reset your Password":"Zresetuj swoje hasło","Send code":"Wyślij kod","Send Code":"Zresetuj hasło",Sending:"Wysyłanie","Setup TOTP":"Konfiguruj TOTP","Show password":"Pokaż hasło","Sign in to your account":"Zaloguj się na swoje konto","Sign In with Amazon":"Zaloguj z Amazon","Sign In with Apple":"Zaloguj z Apple","Sign In with Facebook":"Zaloguj z Facebook","Sign In with Google":"Zaloguj z Google","Sign In":"Logowanie","Sign in":"Zaloguj","Signing in":"Logowanie",Skip:"Pomiń",Submit:"Wyślij",Submitting:"Wysyłanie",Username:"Nazwa użytkownika","Verify Contact":"Weryfikacja danych kontaktowych",Verify:"Zweryfikuj",Birthdate:"Data urodzenia","Family Name":"Nazwisko","Given Name":"Pierwsze imię","Middle Name":"Drugie imię",Name:"Imię i nazwisko",Nickname:"Pseudonim","Preferred Username":"Preferowana nazwa użytkownika",Profile:"Profil",Website:"Strona internetowa","We Emailed You":"Wysłaliśmy Ci wiadomość e-mail","We Sent A Code":"Wysłaliśmy kod","We Texted You":"Wysłaliśmy Ci wiadomość SMS","Your code is on the way. To log in, enter the code we emailed to":"Twój kod został wysłany. Aby się zalogować, wprowadź kod wysłany na adres e-mail","Your code is on the way. To log in, enter the code we sent you":"Twój kod został wysłany. Aby się zalogować, wprowadź wysłany do Ciebie kod","Your code is on the way. To log in, enter the code we texted to":"Twój kod został wysłany. Aby się zalogować, wprowadź kod wysłany do Ciebie w wiadomości SMS pod numer"}),Ju({},{"Account recovery requires verified contact information":"A recuperação da conta requer informações de contato verificadas","Back to Sign In":"Voltar para Entrar","Change Password":"Mudar senha",Changing:"Mudando",Code:"Código","Confirm Password":"Confirme a Senha","Confirm Sign Up":"Confirmar inscrição","Confirm SMS Code":"Confirme o código SMS","Confirm TOTP Code":"Confirme o código TOTP",Confirm:"confirme","Confirmation Code":"Código de confirmação",Confirming:"Confirmando","Create a new account":"Criar uma nova conta","Create Account":"Criar Conta","Creating Account":"Criando conta","Dismiss alert":"Descartar alerta",Email:"O email","Enter your code":"Insira seu código","Enter your email":"Digite seu e-mail","Enter your phone number":"Digite seu número de telefone","Enter your username":"entre com seu nome de usuário","Forgot your password?":"Esqueceu sua senha? ","Hide password":"Esconder a senha","It may take a minute to arrive":"Pode levar um minuto para chegar",Loading:"Carregando","New password":"Nova Senha",or:"ou",Password:"Senha","Phone Number":"Número de telefone","Resend Code":"Reenviar código","Reset your password":"Redefina sua senha","Reset your Password":"Redefina sua senha","Send code":"Enviar código","Send Code":"Enviar código",Sending:"Enviando","Setup TOTP":"Configurar TOTP","Show password":"Mostrar senha","Sign in to your account":"Faça login em sua conta","Sign In with Amazon":"Entrar com a Amazon","Sign In with Apple":"Entrar com a Apple","Sign In with Facebook":"Entrar com o Facebook","Sign In with Google":"Faça login no Google","Sign in":"Entrar","Sign In":"Entrar","Signing in":"Entrando",Skip:"Pular",Submit:"Enviar",Submitting:"Enviando",Username:"Nome do usuário","Verify Contact":"Verificar contato",Verify:"Verificar","We Emailed You":"Enviamos um e-mail para você","We Sent A Code":"Enviamos um código","We Texted You":"Enviamos um SMS para você","Your code is on the way. To log in, enter the code we emailed to":"Seu código está a caminho. Para fazer login, insira o código para o qual enviamos um e-mail","Your code is on the way. To log in, enter the code we sent you":"Seu código está a caminho. Para fazer login, insira o código que enviamos para você","Your code is on the way. To log in, enter the code we texted to":"Seu código está a caminho. Para fazer login, insira o código para o qual enviamos uma mensagem de texto"}),Ju({},{"Account recovery requires verified contact information":"账户恢复需要验证过的联系方式","Back to Sign In":"回到登录","Change Password":"更改密码",Changing:"正在修改",Code:"确认码","Confirm Password":"确认密码","Confirm Sign Up":"确认注册","Confirm SMS Code":"确认短信验证码","Confirm TOTP Code":"确认 TOTP 代码",Confirm:"确认","Confirmation Code":"确认码",Confirming:"正在确认","Create a new account":"创建新账户","Create Account":"创建账户","Creating Account":"正在创建账户","Dismiss alert":"关闭警报",Email:"邮箱","Enter your code":"输入验证码","Enter your email":"输入电子邮件","Enter your phone number":"输入电话号码","Enter your username":"输入用户名","Forgot your password?":"忘记密码了?","Hide password":"隐藏密码","It may take a minute to arrive":"可能需要一分钟才能到达",Loading:"正在加载","New password":"新密码",or:"或者",Password:"密码","Phone Number":"电话","Resend Code":"重发验证码","Reset your password":"重置密码","Reset your Password":"重置密码","Send Code":"发送确认码","Send code":"发送验证码",Sending:"正在发送","Setup TOTP":"设置 TOTP","Show password":"显示密码","Sign in to your account":"登录账户","Sign In with Amazon":"通过 Amazon 登录","Sign In with Apple":"通过 Apple 登录","Sign In with Facebook":"通过 Facebook 登录","Sign In with Google":"通过 Google 登录","Sign in":"登录","Sign In":"登录","Signing in":"正在登录",Skip:"跳过",Submit:"提交",Submitting:"正在提交",Username:"用户名","Verify Contact":"验证联系方式",Verify:"验证","We Emailed You":"我们给您发送了电子邮件","We Sent A Code":"我们发送了代码","We Texted You":"我们给您发送了短信","Your code is on the way. To log in, enter the code we emailed to":"您的代码正在发送中。要登录,请输入我们通过电子邮件发送给以下人员的代码:","Your code is on the way. To log in, enter the code we sent you":"您的代码正在发送中。要登录,请输入我们发送给您的代码","Your code is on the way. To log in, enter the code we texted to":"您的代码正在发送中。要登录,请输入我们通过短信发送给以下人员的代码:","Confirm a Code":"确认码","Confirm Sign In":"确认登录","Forgot Password":"忘记密码","Incorrect username or password":"用户名或密码错误","Invalid password format":"密码格式错误","Invalid phone number format":"电话格式错误,请使用格式 +12345678900","New Password":"新密码","Resend a Code":"重发确认码","Sign Out":"退出","Sign Up":"注册","User already exists":"用户已经存在","User does not exist":"用户不存在"}),Ju({},{"Account recovery requires verified contact information":"För att återställa kontot behöver du ett verifierat konto","Back to Sign In":"Tillbaka till inloggningen","Change Password":"Byt lösenord",Changing:"Ändra",Code:"Kod","Confirm Password":"Bekräfta lösenord","Confirm Sign Up":"Bekräfta registrering","Confirm SMS Code":"Bekräfta SMS-kod","Confirm TOTP Code":"Bekräfta TOTP-kod",Confirm:"Bekräfta","Confirmation Code":"Verifikationskod",Confirming:"Bekräftar","Create a new account":"Skapa ett nytt konto","Create Account":"Skapa konto","Creating Account":"Skapar konto","Dismiss alert":"Avvisa varning",Email:"E-post","Enter your code":"Skriv din kod","Enter your email":"Fyll i din e-post","Enter your phone number":"Ange ditt telefonnummer","Enter your username":"Ange ditt användarnamn","Forgot your password?":"Glömt ditt lösenord? ","Hide password":"Dölj lösenord","It may take a minute to arrive":"Det kan ta en minut att komma fram",Loading:"Laddar","New password":"Nytt lösenord",or:"eller",Password:"Lösenord","Phone Number":"Telefonnummer","Resend Code":"Skicka koden igen","Reset your password":"Återställ ditt lösenord","Reset your Password":"Återställ ditt lösenord","Send code":"Skicka kod","Send Code":"Skicka kod",Sending:"Skickar","Setup TOTP":"Konfigurera TOTP","Show password":"Visa lösenord","Sign in to your account":"Logga in till ditt konto","Sign In with Amazon":"Logga in med Amazon","Sign In with Apple":"Logga in med Apple","Sign In with Facebook":"Logga in med Facebook","Sign In with Google":"Logga in med Google","Sign in":"Logga in","Sign In":"Logga in","Signing in":"Loggar in",Skip:"Hoppa över",Submit:"Skicka",Submitting:"Skickar in",Username:"Användarnamn","Verify Contact":"Verifiera kontakt",Verify:"Verifiera","We Sent A Code":"Vi skickade en kod","We Texted You":"Vi sms:ade dig","Your code is on the way. To log in, enter the code we emailed to":"Din kod är på väg. För att logga in, ange koden vi mejlade till","Your code is on the way. To log in, enter the code we sent you":"Din kod är på väg. För att logga in, ange koden vi skickade till dig","Your code is on the way. To log in, enter the code we texted to":"Din kod är på väg. För att logga in, ange koden vi sms:ade till","An account with the given email already exists.":"Det finns redan ett konto med denna e-postadress","Confirm a Code":"Bekräfta koden","Confirm Sign In":"Bekräfta inloggning","Create account":"Skapa konto","Enter your password":"Ange ditt lösenord","Forgot Password":"Glömt lösenordet","Have an account? ":"Redan registrerad? ","Incorrect username or password":"Felaktigt användarnamn eller lösenord","Invalid password format":"Ogiltigt lösenordsformat","Invalid phone number format":"Ogiltigt format för telefonnummer","Lost your code? ":"Förlorat koden? ","New Password":"Nytt lösenord","No account? ":"Inget konto? ","Password attempts exceeded":"Maximalt antal felaktiga inloggningsförsök har uppnåtts","Reset password":"Återställ lösenord","Sign Out":"Logga ut","Sign Up":"Registrering","User already exists":"Användaren finns redan","User does not exist":"Användaren finns inte","Username cannot be empty":"Användarnamnet kan inte vara tomt","We Emailed You":"Vi har skickat e-post till dig"}),Ju({},{"Account recovery requires verified contact information":"Pemulihan akun memerlukan informasi kontak terverifikasi","Back to Sign In":"Kembali ke Masuk","Change Password":"Ubah kata sandi",Changing:"Mengubah",Code:"Kode","Confirm Password":"Konfirmasi kata sandi","Confirm Sign Up":"Konfirmasi Pendaftaran","Confirm SMS Code":"Konfirmasi Kode SMS","Confirm TOTP Code":"Konfirmasi Kode TOTP",Confirm:"Konfirmasi","Confirmation Code":"Kode Konfirmasi",Confirming:"Mengkonfirmasi","Create a new account":"Buat akun baru","Create Account":"Buat Akun","Creating Account":"Membuat Akun","Dismiss alert":"Hentikan pemberitahuan",Email:"Email","Enter your code":"Masukkan kode anda","Enter your email":"Masukkan email anda","Enter your phone number":"Masukkan nomor telepon anda","Enter your username":"Masukkan nama akun anda","Forgot your password?":"Lupa kata sandi? ","Hide password":"Sembunyikan kata sandi","It may take a minute to arrive":"Mungkin perlu waktu satu menit untuk tiba",Loading:"Memuat","New password":"Kata sandi baru",or:"atau",Password:"Kata sandi","Phone Number":"Nomor telepon","Resend Code":"Kirim ulang kodenya","Reset your Password":"Reset Kata Sandi","Reset your password":"Ubah kata sandi anda","Send code":"Kirim kode","Send Code":"Kirim Kode",Sending:"Mengirim","Setup TOTP":"Siapkan TOTP","Show password":"Tampilkan kata sandi","Sign in to your account":"Masuk akun anda","Sign In with Amazon":"Masuk dengan Amazon","Sign In with Apple":"Masuk dengan Apple","Sign In with Facebook":"Masuk dengan Facebook","Sign In with Google":"Masuk dengan Google","Sign in":"Masuk","Sign In":"Masuk","Signing in":"Memasuki",Skip:"Lewati",Submit:"Ajukan",Submitting:"Mengajukan",Username:"Nama akun","Verify Contact":"Verifikasi Kontak",Verify:"Verifikasi","We Sent A Code":"Kami Mengirim Kode","We Texted You":"Kami mengirim SMS kepada Anda","Your code is on the way. To log in, enter the code we sent you":"Kode Anda segera hadir. Untuk masuk, masukkan kode yang kami kirimkan kepada Anda","An account with the given email already exists.":"Akun dengan email tersebut sudah terdaftar.","Attempt limit exceeded, please try after some time.":"Batas percobaan terlampaui, mohon coba lagi setelah beberapa waktu.","Cannot reset password for the user as there is no registered/verified email or phone_number":"Tidak dapat mengatur ulang kata sandi karena tidak ada email terdaftar / terverifikasi atau nomor telepon",Change:"Ubah","Confirm a Code":"Konfirmasi kode","Create account":"Buat akun","Enter your password":"Masukkan kata sandi anda","Forgot Password":"Lupa kata sandi","Have an account? ":"Sudah punya akun? ",Hello:"Halo","Incorrect username or password.":"Nama akun atau kata sandi salah.","Invalid phone number format":"Nomor telepon tidak sesuai dengan format.","Invalid verification code provided, please try again.":"Kode verifikasi tidak sesuai, mohon coba lagi.","It may take a minute to arrive.":"Mungkin perlu beberapa waktu untuk tiba.","Lost your code? ":"Kode anda hilang?",Name:"Nama","Network error":"Galat jaringan","No account? ":"Tidak ada akun?","Password did not conform with policy: Password not long enough":"Kata sandi tidak sesuai dengan aturan: Kata sandi kurang panjang","Resend a Code":"Renvoyer un code","Reset password":"Ubah kata sandi anda",Send:"Kirim","Sign In with AWS":"Masuk dengan AWS","Sign Up with Amazon":"Daftar dengan Amazon","Sign Up with AWS":"Daftar dengan AWS","Sign Up with Facebook":"Daftar dengan Facebook","Sign Up with Google":"Daftar dengan Google",SMS:"SMS","User already exists":"Akun sudah terdaftar","User does not exist.":"Akun tidak terdaftar.","User is disabled.":"Akun dinonaktifkan.","Username cannot be empty":"Nama akun tidak boleh kosong","Username/client id combination not found.":"Nama akun atau id tidak ditemukan.","We Emailed You":"Kami mengirimkanmu email","Your code is on the way. To log in, enter the code we emailed to":"Kode anda dalam pengiriman. Untuk masuk, masukkan kode yang kami emailkan ke","Your code is on the way. To log in, enter the code we texted to":"Kode anda dalam pengiriman. Untuk masuk, masukkan kode yang kami tuliskan ke","Your passwords must match":"Kata sandi harus sama"}),Ju({},{"Account recovery requires verified contact information":"Hesap kurtarma, doğrulanmış iletişim bilgilerini gerektirir","Back to Sign In":"Oturum Açmaya Geri Dön","Change Password":"Şifreyi Değiştir",Changing:"Değiştiriliyor",Code:"Kod","Confirm Password":"Şifreyi Doğrula","Confirm Sign Up":"Kayıt İşlemini Doğrula","Confirm SMS Code":"SMS Kodunu Doğrula","Confirm TOTP Code":"Tek Kullanımlık Şifreyi Doğrula",Confirm:"Doğrula","Confirmation Code":"Doğrulama Kodu",Confirming:"Doğrulanıyor","Create a new account":"Yeni bir hesap oluştur","Create Account":"Hesap Oluştur","Creating Account":"Hesap Oluşturuluyor","Dismiss alert":"Uyarıyı reddet",Email:"E-posta","Enter your code":"Kodu girin","Enter your email":"E-posta adresinizi girin","Enter your phone number":"Telefon numaranızı girin","Enter your username":"Kullanıcı adınızı girin","Forgot your password?":"Şifrenizi mi unuttunuz?","Hide password":"Şifreyi gizle","It may take a minute to arrive":"Kodun gelmesi bir dakika sürebilir",Loading:"Yükleniyor","New password":"Yeni şifre",or:"veya",Password:"Şifre","Phone Number":"Telefon Numarası","Resend Code":"Kodu Yeniden Gönder","Reset your password":"Şifrenizi sıfırlayın","Reset your Password":"Şifrenizi Sıfırlayın","Send code":"Kod gönder","Send Code":"Kod Gönder",Sending:"Gönderiliyor","Setup TOTP":"Tek kullanımlık şifre kurulumu yap","Show password":"Şifreyi göster","Sign in to your account":"Hesabınızda oturum açın","Sign In with Amazon":"Amazon ile Oturum Aç","Sign In with Apple":"Apple ile Oturum Aç","Sign In with Facebook":"Facebook ile Oturum Aç","Sign In with Google":"Google ile Oturum Aç","Sign in":"Oturum aç","Sign In":"Oturum Aç","Signing in":"Oturum açılıyor",Skip:"Atla",Submit:"Gönder",Submitting:"Gönderiliyor",Username:"Kullanıcı adı","Verify Contact":"Kişiyi Doğrula",Verify:"Doğrula","We Emailed You":"Size E-posta Gönderdik","We Sent A Code":"Bir Kod Gönderdik","We Texted You":"Size Mesaj Gönderdik","Your code is on the way. To log in, enter the code we emailed to":"Kodunuz yolda. Oturum açmak için, gönderdiğimiz e-postadaki kodu girin","Your code is on the way. To log in, enter the code we sent you":"Kodunuz yolda. Oturum açmak için, size gönderdiğimiz kodu girin","Your code is on the way. To log in, enter the code we texted to":"Kodunuz yolda. Oturum açmak için, gönderdiğimiz mesajdaki kodu girin","An account with the given email already exists.":"Bu e-postaya ait zaten bir hesap var.","Confirm Sign In":"Oturum Açmayı Doğrula","Have an account? ":"Hesabınız var mı? ","Incorrect username or password":"Yanlış kullanıcı adı ya da şifre","Invalid password format":"Geçersiz parola formatı","Invalid phone number format":"Geçersiz telefon numarası formatı","Lost your code? ":"Kodu mu kaybettiniz? ","No account? ":"Hesabınız yok mu? ","Password attempts exceeded":"Maksimum oturum açma girişimi aşıldı","Sign Out":"Çıkış yap","Sign Up":"Kayıt Ol","User already exists":"Bu kullanıcı zaten var","User does not exist":"Böyle bir kullanıcı mevcut değil","Username cannot be empty":"Kullanıcı adı boş olamaz"}),Ju({},{"Account recovery requires verified contact information":"Восстановление учетной записи требует проверки контактной информации","Back to Sign In":"Назад, чтобы войти","Change Password":"изменять пароль",Changing:"Изменение",Code:"Код","Confirm Password":"Подтверждение пароля","Confirm Sign Up":"Подтверждение зарегистрироваться","Confirm SMS Code":"Подтверждение CMC-Код","Confirm TOTP Code":"Подтверждение TOTP-Код",Confirm:"Подтверждать","Confirmation Code":"код подтверждения",Confirming:"подтверждение","Create a new account":"Создавать новую учетную запись","Create Account":"Создать учетную запись","Creating Account":"создание учетная запись","Dismiss alert":"Закрыть оповещение",Email:"электронная почта","Enter your code":"ввести ваш Код","Enter your email":"ввести ваш электронная почта","Enter your phone number":"ввести ваш номер телефона","Enter your username":"ввести ваш имя пользователя","Forgot your password?":"Забыли ваш пароль?","Hide password":"Скрывать пароль","It may take a minute to arrive":"Доставка может занять некоторое время",Loading:"Загрузка","New password":"Новый пароль",or:"или",Password:"Пароль","Phone Number":"Номер телефона","Resend Code":"Отправь еще раз Код","Reset your password":"сброс ваш пароль","Reset your Password":"сброс ваш Пароль","Send code":"Отправлять Код","Send Code":"Отправлять Код",Sending:"отправка","Setup TOTP":"Настраивать TOTP","Show password":"Показывать пароль","Sign in to your account":"знак в свой аккаунт","Sign In with Amazon":"знак в с Amazon","Sign In with Apple":"знак в с Apple","Sign In with Facebook":"знак в с Facebook","Sign In with Google":"знак в с Google","Sign in":"знак в","Sign In":"знак в","Signing in":"подписание в",Skip:"Пропускать",Submit:"Представлять на рассмотрение",Submitting:"Представив",Username:"Имя пользователя","Verify Contact":"Проверить контакт",Verify:"Проверить","We Emailed You":"Мы отправили вам электронное письмо","We Sent A Code":"Мы отправили код","We Texted You":"Мы отправили вам текстовое сообщение","Your code is on the way. To log in, enter the code we emailed to":"Ваш код отправлен. Чтобы войти в систему, введите код, который мы отправили по электронной почте","Your code is on the way. To log in, enter the code we sent you":"Ваш код отправлен. Чтобы войти в систему, введите код, который мы послали вам","Your code is on the way. To log in, enter the code we texted to":"Ваш код отправлен. Чтобы войти в систему, введите код, который мы отправили текстовым сообщением"}),Ju({},{"Account recovery requires verified contact information":"שחזור לקוח דורש עוד מידע","Back to Sign In":"חזור להרשמה","Change Password":"עדכון סיסמא",Changing:"מעדכן",Code:"קוד","Confirm Password":"אשר סיסמא","Confirm Sign Up":"אשר הרשמה","Confirm SMS Code":"אשר sms קוד","Confirm TOTP Code":"אשר totp קוד",Confirm:"אישור","Confirmation Code":"אישור קוד",Confirming:"מאשר","Create a new account":"צור משתמש חדש","Create Account":"צור משתמש","Creating Account":"יצירת משתמש","Dismiss alert":"הסר התראה",Email:"אימייל","Enter your code":"הכנס את הקוד","Enter your email":"הכנס את המייל שלך","Enter your phone number":"הכנס את מספר הטלפון שלך","Enter your username":"הכנס את שם המתמש שלך","Forgot your password?":"שחכת סיסמא ?","Hide password":"הסתר סיסמא",Loading:"טוען","New password":"סיסמא חדשה",or:"אוֹ",Password:"סיסמא","Phone Number":"מספר טלפון","Resend Code":"שלח קוד שוב","Reset your password":"אפס סיסמא","Reset your Password":"אפס סיסמא","Send code":"שלח קוד","Send Code":"שלח קוד",Sending:"שולח","Setup TOTP":"Setup TOTP","Show password":"הצג סיסמא","Sign in to your account":"התחבר לחשבון שלך","Sign In with Amazon":"Sign In with Amazon","Sign In with Apple":"Sign In with Apple","Sign In with Facebook":"Sign In with Facebook","Sign In with Google":"Sign In with Google","Sign in":"התחבר","Sign In":"התחבר","Signing in":"מתחבר",Skip:"דלג",Submit:"שלח",Submitting:"שולח",Username:"שם משתמש","Verify Contact":"אמת איש קשר",Verify:"אמת"}),Ju({},{"Account recovery requires verified contact information":"Відновлення облікового запису потребує контактної інформації","Back to Sign In":"Назад на сторінку входу","Change Password":"Змінити пароль",Changing:"Змінюємо",Code:"Код","Confirm Password":"Підтвердіть пароль","Confirm Sign Up":"Підтвердіть реєстрацію","Confirm SMS Code":"Підтвердіть SMS код","Confirm TOTP Code":"Підтвердіть TOTP код",Confirm:"Підтвердити","Confirmation Code":"Код підтвердження",Confirming:"Підтверджуємо","Create a new account":"Зареєструватися","Create Account":"Зареєструватися","Creating Account":"Реєструємо","Dismiss alert":"Відхилити сповіщення",Email:"Email","Enter your code":"Введіть код","Enter your email":"Введіть ваш email","Enter your phone number":"Введіть ваш номер телефону","Enter your username":"Введіть ваше імʼя користувача","Forgot password?":"Забули пароль?","Forgot your password?":"Забули ваш пароль?","Hide password":"Сховати пароль","It may take a minute to arrive":"Доставка може тривати хвилину",Loading:"Загружаємо","New password":"Новий пароль",or:"або",Password:"Пароль","Phone Number":"Номер Телефону","Resend Code":"Відправити код повторно","Reset your password":"Скинути пароль","Reset your Password":"Скинути пароль","Send code":"Відправити код","Send Code":"Відправити код",Sending:"Відправляємо","Setup TOTP":"Налаштувати TOTP","Show password":"Показати пароль","Sign in to your account":"Увійти у ваш обліковий запис","Sign In with Amazon":"Увійти з Amazon","Sign In with Apple":"Увійти з Apple","Sign In with Facebook":"Увійти з Facebook","Sign In with Google":"Увійти з Google","Sign in":"Увійти","Sign In":"Увійти","Signing in":"Входимо",Skip:"Пропустити",Submit:"Відправити",Submitting:"Відправляємо",Username:"Імʼя користувача","Verify Contact":"Підтвердити Контакт",Verify:"Підтвердити","We Emailed You":"Ми відправили вам Email","We Sent A Code":"Ми відправили код","We Texted You":"Ми відправили вам текстове повідомлення","Your code is on the way. To log in, enter the code we emailed to":"Ваш код вже в дорозі. Щоб увійти, введіть код, що ми відправили вам на Email","Your code is on the way. To log in, enter the code we sent you":"Ваш код вже в дорозі. Щоб увійти, введіть код, що ми вам відправили","Your code is on the way. To log in, enter the code we texted to":"Ваш код вже в дорозі. Щоб увійти, введіть код, що ми відправили вам текстовим повідомленням","An account with the given email already exists.":"Обліковий запис з цим Email вже існує.","Confirm a Code":"Підтвердіть код","Confirm Sign In":"Підтвердіть вхід","Forgot Password":"Забули пароль","Incorrect username or password.":"Невірне імʼя користувача або пароль","Invalid password format":"Невірний формат паролю","Invalid phone number format":"Невірний формат номеру телефону","Loading...":"Загружаємо...","New Password":"Новий пароль","Resend a Code":"Відправити код повторно","Reset Password":"Скинути пароль","Sign Out":"Вийти","Sign Up with Amazon":"Зареєструватися з Amazon","Sign Up with Apple":"Зареєструватися з Apple","Sign Up with Facebook":"Зареєструватися з Facebook","Sign Up with Google":"Зареєструватися з Google","Sign Up":"Зареєструватися","User already exists":"Користувач вже існує","User does not exist":"Такий користувач не існує","Username cannot be empty":"Імʼя користувача не може бути пустим","Your passwords must match":"Паролі мають збігатися"}),Ju({},{BACK_SIGN_IN:"Back to Sign In",BIRTHDATE:"Birthdate",CHANGE_PASSWORD:"Change Password",CHANGING_PASSWORD:"Changing",CODE:"Code",CODE_ARRIVAL:"It may take a minute to arrive",CODE_EMAILED:"Your code is on the way. To log in, enter the code we emailed to",CODE_SENT:"Your code is on the way. To log in, enter the code we sent you",CODE_TEXTED:"Your code is on the way. To log in, enter the code we texted to",CONFIRM_PASSWORD:"Confirm Password",CONFIRM_RESET_PASSWORD_HEADING:"Reset your Password",CONFIRM_SIGNUP_HEADING:"Confirm Sign Up",CONFIRM_SMS:"Confirm SMS Code",CONFIRM_TOTP:"Confirm TOTP Code",CONFIRM:"Confirm",CONFIRMATION_CODE:"Confirmation Code",CONFIRMING:"Confirming",CREATE_ACCOUNT:"Create Account",CREATING_ACCOUNT:"Creating Account",EMAIL_ADDRESS:"Email",ENTER_CODE:"Enter your code",ENTER_USERNAME:"Enter your username",FAMILY_NAME:"Family Name",GIVEN_NAME:"Given Name",FORGOT_PASSWORD:"Forgot Password?",FORGOT_YOUR_PASSWORD:"Forgot your password?",HIDE_PASSWORD:"Hide password",LOADING:"Loading",LOGIN_NAME:"Username",MIDDLE_NAME:"Middle Name",NAME:"Name",NICKNAME:"Nickname",NEW_PASSWORD:"New password",OR:"or",PASSWORD:"Password",PHONE_NUMBER:"Phone Number",PREFERRED_USERNAME:"Preferred Username",PROFILE:"Profile",RESEND_CODE:"Resend Code",RESET_PASSWORD_HEADING:"Reset your password",RESET_PASSWORD:"Reset Password",SEND_CODE:"Send code",SENDING:"Sending",SETUP_TOTP:"Setup TOTP",SHOW_PASSWORD:"Show password",SIGN_IN_BUTTON:"Sign in",SIGN_IN_TAB:"Sign In",SIGN_IN_WITH_AMAZON:"Sign In with Amazon",SIGN_IN_WITH_APPLE:"Sign In with Apple",SIGN_IN_WITH_FACEBOOK:"Sign In with Facebook",SIGN_IN_WITH_GOOGLE:"Sign In with Google",SIGN_IN:"Sign in to your account",SIGN_UP_BUTTON:"Create a new account",SIGNING_IN_BUTTON:"Signing in",SKIP:"Skip",SUBMIT:"Submit",SUBMITTING:"Submitting",UPPERCASE_COPY:"COPY",VERIFY_CONTACT:"Verify Contact",VERIFY_HEADING:"Account recovery requires verified contact information",VERIFY:"Verify",WE_EMAILED:"We Emailed You",WE_SENT_CODE:"We Sent A Code",WE_TEXTED:"We Texted You",WEBSITE:"Website"})),Jm=Ju({},$m);function Xm(e){return M.get(e)}$u=i("8dQZc");const eg=()=>{const[e,t]=$u.useState({error:void 0,isLoading:!0,user:void 0}),n=$u.useCallback((()=>Qu(void 0,void 0,void 0,(function*(){t((e=>Object.assign(Object.assign({},e),{isLoading:!0})));try{const e=yield Ku.currentAuthenticatedUser();t({user:e,isLoading:!1})}catch(e){t({error:e,isLoading:!1})}}))),[]),r=$u.useCallback((({payload:e})=>{switch(e.event){case"signIn":case"signUp":case"autoSignIn":t({user:e.data,isLoading:!1});break;case"signOut":t({user:void 0,isLoading:!1});break;case"tokenRefresh_failure":case"signIn_failure":t({error:e.data,isLoading:!1});break;case"autoSignIn_failure":t({error:new Error(e.message),isLoading:!1});break;case"tokenRefresh":n()}}),[n]);return $u.useEffect((()=>{const e=P.listen("auth",r,"useAuth");return n(),e}),[r,n]),Object.assign(Object.assign({},e),{fetch:n})};var tg={}; -/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/!function(){"use strict";var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r