From efd26ce19db47d76d98365223304e1a05e9ddcbb Mon Sep 17 00:00:00 2001 From: marc Date: Sun, 9 Mar 2025 20:00:54 +0100 Subject: [PATCH] Initial commit --- .envrc | 1 + .gitignore | 1 + .projectile | 0 README.org | 26 + custom-python.nix | 35 + flake.nix | 53 + folkugat_web/__init__.py | 0 folkugat_web/api/__init__.py | 6 + folkugat_web/api/_router.py | 4 + folkugat_web/api/auth.py | 34 + folkugat_web/api/index.py | 18 + folkugat_web/api/sessions/__init__.py | 1 + folkugat_web/api/sessions/editor.py | 42 + folkugat_web/api/sessions/index.py | 48 + folkugat_web/api/sessions/sessio.py | 41 + folkugat_web/api/tema/__init__.py | 1 + folkugat_web/api/tema/editor.py | 23 + folkugat_web/api/tema/index.py | 84 + folkugat_web/api/temes/__init__.py | 1 + folkugat_web/api/temes/index.py | 29 + folkugat_web/assets/static/css/main.css | 1028 + folkugat_web/assets/static/favicon.ico | Bin 0 -> 15406 bytes .../static/favicon/android-chrome-192x192.png | Bin 0 -> 35587 bytes .../static/favicon/android-chrome-512x512.png | Bin 0 -> 130163 bytes .../static/favicon/apple-touch-icon.png | Bin 0 -> 31644 bytes .../assets/static/favicon/favicon-16x16.png | Bin 0 -> 768 bytes .../assets/static/favicon/favicon-32x32.png | Bin 0 -> 2165 bytes .../assets/static/favicon/favicon.ico | Bin 0 -> 15406 bytes .../assets/static/favicon/favicon.png | Bin 0 -> 107551 bytes folkugat_web/assets/static/img/folkugat.svg | 47 + folkugat_web/assets/static/js/htmx.min.js | 1 + folkugat_web/assets/static/js/pdf/pdf.mjs | 16883 +++++ folkugat_web/assets/static/js/pdf/pdf.mjs.map | 1 + .../assets/static/js/pdf/pdf.sandbox.mjs | 241 + .../assets/static/js/pdf/pdf.sandbox.mjs.map | 1 + .../assets/static/js/pdf/pdf.worker.mjs | 56973 ++++++++++++++++ .../assets/static/js/pdf/pdf.worker.mjs.map | 1 + folkugat_web/assets/static/js/pdf_viewer.js | 106 + folkugat_web/assets/static/site.webmanifest | 1 + folkugat_web/assets/static/src/tw.css | 3 + .../assets/templates/fragments/content.html | 7 + .../assets/templates/fragments/footer.html | 10 + .../assets/templates/fragments/header.html | 5 + .../assets/templates/fragments/marquee.html | 22 + .../assets/templates/fragments/menu.html | 35 + .../templates/fragments/nota/footer.html | 32 + .../templates/fragments/nota/input.html | 20 + .../assets/templates/fragments/nota/nota.html | 5 + .../templates/fragments/pdf_viewer.html | 40 + .../fragments/sessions/live/start.html | 6 + .../fragments/sessions/live/stop.html | 6 + .../templates/fragments/sessions/pagina.html | 25 + .../templates/fragments/sessions/sessio.html | 33 + .../fragments/sessions/session_date.html | 24 + .../fragments/sessions/session_list.html | 28 + .../fragments/sessions/session_row.html | 44 + .../sessions/session_row_editing.html | 96 + .../fragments/tema/editor/lyric.html | 35 + .../fragments/tema/editor/title.html | 26 + .../assets/templates/fragments/tema/link.html | 21 + .../templates/fragments/tema/links.html | 27 + .../templates/fragments/tema/lyric.html | 25 + .../templates/fragments/tema/lyrics.html | 24 + .../templates/fragments/tema/pagina.html | 34 + .../templates/fragments/tema/title.html | 13 + .../templates/fragments/temes/pagina.html | 24 + .../templates/fragments/temes/result.html | 44 + folkugat_web/assets/templates/icons/link.svg | 4 + folkugat_web/assets/templates/icons/notes.svg | 5 + folkugat_web/assets/templates/icons/pdf.svg | 4 + .../assets/templates/icons/spotify.svg | 3 + .../assets/templates/icons/youtube.svg | 3 + folkugat_web/assets/templates/index.html | 38 + folkugat_web/config/__init__.py | 0 folkugat_web/config/auth.py | 11 + folkugat_web/config/calendari.py | 21 + folkugat_web/config/date.py | 23 + folkugat_web/config/db.py | 10 + folkugat_web/config/directories.py | 10 + folkugat_web/config/nota.py | 1 + folkugat_web/config/search.py | 8 + folkugat_web/dal/__init__.py | 0 folkugat_web/dal/sql/__init__.py | 1 + folkugat_web/dal/sql/_connection.py | 23 + folkugat_web/dal/sql/ddl.py | 8 + folkugat_web/dal/sql/sessions.py | 194 + folkugat_web/dal/sql/temes/__init__.py | 0 folkugat_web/dal/sql/temes/_conversion.py | 38 + folkugat_web/dal/sql/temes/ddl.py | 40 + folkugat_web/dal/sql/temes/query.py | 49 + folkugat_web/dal/sql/temes/write.py | 44 + folkugat_web/data.py | 105 + folkugat_web/fragments/__init__.py | 0 folkugat_web/fragments/live.py | 45 + folkugat_web/fragments/nota.py | 35 + folkugat_web/fragments/sessions.py | 144 + folkugat_web/fragments/tema.py | 73 + folkugat_web/fragments/temes.py | 54 + folkugat_web/log.py | 6 + folkugat_web/main.py | 57 + folkugat_web/model/__init__.py | 0 folkugat_web/model/pagines.py | 6 + folkugat_web/model/search.py | 21 + folkugat_web/model/sessions.py | 35 + folkugat_web/model/sql.py | 74 + folkugat_web/model/temes.py | 123 + folkugat_web/services/__init__.py | 0 folkugat_web/services/auth.py | 48 + folkugat_web/services/ngrams.py | 19 + folkugat_web/services/sessions.py | 80 + folkugat_web/services/temes/__init__.py | 0 folkugat_web/services/temes/query.py | 8 + folkugat_web/services/temes/search.py | 57 + folkugat_web/services/temes/write.py | 62 + folkugat_web/templates.py | 5 + folkugat_web/typing.py | 6 + folkugat_web/utils.py | 6 + tailwind.config.js | 34 + 118 files changed, 78086 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 .projectile create mode 100644 README.org create mode 100644 custom-python.nix create mode 100644 flake.nix create mode 100644 folkugat_web/__init__.py create mode 100644 folkugat_web/api/__init__.py create mode 100644 folkugat_web/api/_router.py create mode 100644 folkugat_web/api/auth.py create mode 100644 folkugat_web/api/index.py create mode 100644 folkugat_web/api/sessions/__init__.py create mode 100644 folkugat_web/api/sessions/editor.py create mode 100644 folkugat_web/api/sessions/index.py create mode 100644 folkugat_web/api/sessions/sessio.py create mode 100644 folkugat_web/api/tema/__init__.py create mode 100644 folkugat_web/api/tema/editor.py create mode 100644 folkugat_web/api/tema/index.py create mode 100644 folkugat_web/api/temes/__init__.py create mode 100644 folkugat_web/api/temes/index.py create mode 100644 folkugat_web/assets/static/css/main.css create mode 100644 folkugat_web/assets/static/favicon.ico create mode 100644 folkugat_web/assets/static/favicon/android-chrome-192x192.png create mode 100644 folkugat_web/assets/static/favicon/android-chrome-512x512.png create mode 100644 folkugat_web/assets/static/favicon/apple-touch-icon.png create mode 100644 folkugat_web/assets/static/favicon/favicon-16x16.png create mode 100644 folkugat_web/assets/static/favicon/favicon-32x32.png create mode 100644 folkugat_web/assets/static/favicon/favicon.ico create mode 100644 folkugat_web/assets/static/favicon/favicon.png create mode 100644 folkugat_web/assets/static/img/folkugat.svg create mode 100644 folkugat_web/assets/static/js/htmx.min.js create mode 100644 folkugat_web/assets/static/js/pdf/pdf.mjs create mode 100644 folkugat_web/assets/static/js/pdf/pdf.mjs.map create mode 100644 folkugat_web/assets/static/js/pdf/pdf.sandbox.mjs create mode 100644 folkugat_web/assets/static/js/pdf/pdf.sandbox.mjs.map create mode 100644 folkugat_web/assets/static/js/pdf/pdf.worker.mjs create mode 100644 folkugat_web/assets/static/js/pdf/pdf.worker.mjs.map create mode 100644 folkugat_web/assets/static/js/pdf_viewer.js create mode 100644 folkugat_web/assets/static/site.webmanifest create mode 100644 folkugat_web/assets/static/src/tw.css create mode 100644 folkugat_web/assets/templates/fragments/content.html create mode 100644 folkugat_web/assets/templates/fragments/footer.html create mode 100644 folkugat_web/assets/templates/fragments/header.html create mode 100644 folkugat_web/assets/templates/fragments/marquee.html create mode 100644 folkugat_web/assets/templates/fragments/menu.html create mode 100644 folkugat_web/assets/templates/fragments/nota/footer.html create mode 100644 folkugat_web/assets/templates/fragments/nota/input.html create mode 100644 folkugat_web/assets/templates/fragments/nota/nota.html create mode 100644 folkugat_web/assets/templates/fragments/pdf_viewer.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/live/start.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/live/stop.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/pagina.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/sessio.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/session_date.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/session_list.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/session_row.html create mode 100644 folkugat_web/assets/templates/fragments/sessions/session_row_editing.html create mode 100644 folkugat_web/assets/templates/fragments/tema/editor/lyric.html create mode 100644 folkugat_web/assets/templates/fragments/tema/editor/title.html create mode 100644 folkugat_web/assets/templates/fragments/tema/link.html create mode 100644 folkugat_web/assets/templates/fragments/tema/links.html create mode 100644 folkugat_web/assets/templates/fragments/tema/lyric.html create mode 100644 folkugat_web/assets/templates/fragments/tema/lyrics.html create mode 100644 folkugat_web/assets/templates/fragments/tema/pagina.html create mode 100644 folkugat_web/assets/templates/fragments/tema/title.html create mode 100644 folkugat_web/assets/templates/fragments/temes/pagina.html create mode 100644 folkugat_web/assets/templates/fragments/temes/result.html create mode 100644 folkugat_web/assets/templates/icons/link.svg create mode 100644 folkugat_web/assets/templates/icons/notes.svg create mode 100644 folkugat_web/assets/templates/icons/pdf.svg create mode 100644 folkugat_web/assets/templates/icons/spotify.svg create mode 100644 folkugat_web/assets/templates/icons/youtube.svg create mode 100644 folkugat_web/assets/templates/index.html create mode 100644 folkugat_web/config/__init__.py create mode 100644 folkugat_web/config/auth.py create mode 100644 folkugat_web/config/calendari.py create mode 100644 folkugat_web/config/date.py create mode 100644 folkugat_web/config/db.py create mode 100644 folkugat_web/config/directories.py create mode 100644 folkugat_web/config/nota.py create mode 100644 folkugat_web/config/search.py create mode 100644 folkugat_web/dal/__init__.py create mode 100644 folkugat_web/dal/sql/__init__.py create mode 100644 folkugat_web/dal/sql/_connection.py create mode 100644 folkugat_web/dal/sql/ddl.py create mode 100644 folkugat_web/dal/sql/sessions.py create mode 100644 folkugat_web/dal/sql/temes/__init__.py create mode 100644 folkugat_web/dal/sql/temes/_conversion.py create mode 100644 folkugat_web/dal/sql/temes/ddl.py create mode 100644 folkugat_web/dal/sql/temes/query.py create mode 100644 folkugat_web/dal/sql/temes/write.py create mode 100644 folkugat_web/data.py create mode 100644 folkugat_web/fragments/__init__.py create mode 100644 folkugat_web/fragments/live.py create mode 100644 folkugat_web/fragments/nota.py create mode 100644 folkugat_web/fragments/sessions.py create mode 100644 folkugat_web/fragments/tema.py create mode 100644 folkugat_web/fragments/temes.py create mode 100644 folkugat_web/log.py create mode 100644 folkugat_web/main.py create mode 100644 folkugat_web/model/__init__.py create mode 100644 folkugat_web/model/pagines.py create mode 100644 folkugat_web/model/search.py create mode 100644 folkugat_web/model/sessions.py create mode 100644 folkugat_web/model/sql.py create mode 100644 folkugat_web/model/temes.py create mode 100644 folkugat_web/services/__init__.py create mode 100644 folkugat_web/services/auth.py create mode 100644 folkugat_web/services/ngrams.py create mode 100644 folkugat_web/services/sessions.py create mode 100644 folkugat_web/services/temes/__init__.py create mode 100644 folkugat_web/services/temes/query.py create mode 100644 folkugat_web/services/temes/search.py create mode 100644 folkugat_web/services/temes/write.py create mode 100644 folkugat_web/templates.py create mode 100644 folkugat_web/typing.py create mode 100644 folkugat_web/utils.py create mode 100644 tailwind.config.js diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..cffc922 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake . --impure diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e3ebff7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/**.pyc diff --git a/.projectile b/.projectile new file mode 100644 index 0000000..e69de29 diff --git a/README.org b/README.org new file mode 100644 index 0000000..915df82 --- /dev/null +++ b/README.org @@ -0,0 +1,26 @@ +#+title: Readme + +* Tasques +** TODO Refactor organitzatiu +* Idees +** Jams +*** Properes jams +**** Data i lloc de les properes jams +**** Info dels temes que es tocaràn (a la slow jam) +*** Live jam +**** Quin tema està sonant ara +*** Historial de jams +**** Veure a cada jam passada quins temes s'han tocat +** Temes +*** Navegació +**** Cerca de temes +***** Per nom, tonalitat, compàs, tipus, (shazam!?!?!) +***** Per tocats recentment +**** Informació +***** Nom +***** Tonalitat i compàs +***** Vegades que s'ha tocat +* Referències +Fonts d'inspiració i altres materials de referència per fer la web de folkugat +** Simple Site +https://github.com/tataraba/simplesite diff --git a/custom-python.nix b/custom-python.nix new file mode 100644 index 0000000..a6493ff --- /dev/null +++ b/custom-python.nix @@ -0,0 +1,35 @@ +{ pkgs }: +rec { + # Custom python package + jinja2-fragments = pkgs.python311Packages.buildPythonPackage rec { + pname = "jinja2_fragments"; + version = "1.2.1"; + + format = "wheel"; + src = pkgs.python311Packages.fetchPypi rec { + inherit pname version format; + sha256 = "c9255e5aadd2cb4e3fbd27530370af0b728a522f139455008febc5145d819f84"; + dist = python; + python = "py3"; + }; + + propagatedBuildInputs = [ + ]; + }; + + pytailwindcss = pkgs.python311Packages.buildPythonPackage rec { + pname = "pytailwindcss"; + version = "0.2.0"; + + format = "wheel"; + src = pkgs.python311Packages.fetchPypi rec { + inherit pname version format; + sha256 = "30e7bd3b78de19a39a7e66329db02d393ee540f010924397b4d780e85041fae4"; + dist = python; + python = "py3"; + }; + + propagatedBuildInputs = [ + ]; + }; +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..0bdd488 --- /dev/null +++ b/flake.nix @@ -0,0 +1,53 @@ +{ + description = "Development flake for the HTMX folkugat web"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: let + + pkgs = nixpkgs.legacyPackages.${system}; + + python = pkgs.python311; + pythonPackages = pkgs.python311Packages; + + # custom-python = import ./custom-python.nix { inherit pkgs; }; + + projectDependencies = with pythonPackages; [ + # API + fastapi + jinja2 + uvicorn + # Auth + pyjwt + # Search + levenshtein + # Test + pytest + ]; + + in { + devShells.default = pkgs.mkShell { + nativeBuildInputs = [ pkgs.bashInteractive ]; + buildInputs = with pkgs; [ + # Core python dependencies + python + pythonPackages.pip + pythonPackages.virtualenv + # Other dependencies + nodePackages_latest.tailwindcss + # IDE tools + pythonPackages.pylsp-mypy + pythonPackages.isort + pythonPackages.autopep8 + nodePackages.pyright + # Development tools + black + pythonPackages.ipython + pythonPackages.pytest + pythonPackages.setuptools + ] ++ projectDependencies; + + }; + }); +} diff --git a/folkugat_web/__init__.py b/folkugat_web/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/api/__init__.py b/folkugat_web/api/__init__.py new file mode 100644 index 0000000..0b302bc --- /dev/null +++ b/folkugat_web/api/__init__.py @@ -0,0 +1,6 @@ +from ._router import router +from .auth import * +from .index import * +from .sessions import * +from .tema import * +from .temes import * diff --git a/folkugat_web/api/_router.py b/folkugat_web/api/_router.py new file mode 100644 index 0000000..dbb4396 --- /dev/null +++ b/folkugat_web/api/_router.py @@ -0,0 +1,4 @@ +from fastapi import APIRouter +from fastapi.responses import HTMLResponse + +router = APIRouter(default_response_class=HTMLResponse) diff --git a/folkugat_web/api/auth.py b/folkugat_web/api/auth.py new file mode 100644 index 0000000..523184c --- /dev/null +++ b/folkugat_web/api/auth.py @@ -0,0 +1,34 @@ +from typing import Annotated, Optional + +from fastapi import Cookie, Form, Request +from folkugat_web.api import router +from folkugat_web.config import auth as config +from folkugat_web.fragments import nota +from folkugat_web.services import auth as service + + +@router.get("/api/nota") +def nota_input(request: Request, value: Optional[str] = None): + return nota.input(request, value) + + +@router.post("/api/nota") +def login(request: Request, value: Annotated[Optional[str], Form()] = None, + nota_folkugat: Annotated[Optional[str], Cookie()] = None): + logged_in = service.logged_in(nota_folkugat) + new_login = service.login(value) + if new_login and not logged_in: + response = nota.nota(request) + response.set_cookie(key=config.COOKIE_NAME, + value=service.build_token(), + max_age=config.COOKIE_MAX_AGE) + else: + response = nota.footer(request, value, logged_in) + return response + + +@router.post("/api/logout") +def logout(request: Request): + response = nota.nota(request) + response.delete_cookie(key=config.COOKIE_NAME) + return response diff --git a/folkugat_web/api/index.py b/folkugat_web/api/index.py new file mode 100644 index 0000000..c653d5b --- /dev/null +++ b/folkugat_web/api/index.py @@ -0,0 +1,18 @@ +from fastapi import Request +from folkugat_web.api import router +from folkugat_web.services import auth +from folkugat_web.templates import templates + + +@router.get("/") +def index(request: Request, logged_in: auth.LoggedIn): + return templates.TemplateResponse( + "index.html", + { + "request": request, + "page_title": "Folkugat", + "content": "/api/content/sessions", + "logged_in": logged_in, + "animate": True, + } + ) diff --git a/folkugat_web/api/sessions/__init__.py b/folkugat_web/api/sessions/__init__.py new file mode 100644 index 0000000..66b414f --- /dev/null +++ b/folkugat_web/api/sessions/__init__.py @@ -0,0 +1 @@ +from . import editor, index, sessio diff --git a/folkugat_web/api/sessions/editor.py b/folkugat_web/api/sessions/editor.py new file mode 100644 index 0000000..a6d8fef --- /dev/null +++ b/folkugat_web/api/sessions/editor.py @@ -0,0 +1,42 @@ +import datetime +from typing import Annotated, Optional + +from fastapi import Form, Request +from folkugat_web.api import router +from folkugat_web.fragments import sessions +from folkugat_web.services import auth + + +@router.post("/api/sessions/editor/") +def insert_row(request: Request, _: auth.RequireLogin): + return sessions.sessions_editor_insert_row(request) + + +@router.get("/api/sessions/editor/{session_id}/") +def editor_row(request: Request, session_id: int, _: auth.RequireLogin): + return sessions.sessions_editor_row(request, session_id=session_id) + + +@router.put("/api/sessions/editor/{session_id}/") +def modify_session( + request: Request, session_id: int, + _: auth.RequireLogin, + date: Annotated[datetime.date, Form()], + start_time: Annotated[datetime.time, Form()], + end_time: Annotated[datetime.time, Form()], + venue_name: Annotated[Optional[str], Form()] = None, + venue_url: Annotated[Optional[str], Form()] = None, +): + session_date = sessions.model.Session(id=session_id, date=date, start_time=start_time, end_time=end_time, + venue=sessions.model.SessionVenue(name=venue_name, url=venue_url)) + return sessions.sessions_editor_post_row(request, session_date) + + +@router.delete("/api/sessions/editor/{session_id}/") +def delete_date(session_id: int, _: auth.RequireLogin): + return sessions.sessions_editor_delete_row(session_id) + + +@router.get("/api/sessions/editor/{session_id}/edita") +def editor_row_editing(request: Request, session_id: int, _: auth.RequireLogin): + return sessions.sessions_editor_row_editing(request, session_id) diff --git a/folkugat_web/api/sessions/index.py b/folkugat_web/api/sessions/index.py new file mode 100644 index 0000000..5cbb33c --- /dev/null +++ b/folkugat_web/api/sessions/index.py @@ -0,0 +1,48 @@ +from fastapi import Request +from folkugat_web.api import router +from folkugat_web.config import calendari as calendari_conf +from folkugat_web.fragments import live, sessions +from folkugat_web.services import auth +from folkugat_web.templates import templates + + +@router.get("/sessions") +def page(request: Request, logged_in: auth.LoggedIn): + return templates.TemplateResponse( + "index.html", + { + "request": request, + "page_title": "Folkugat", + "content": "/api/content/sessions", + "logged_in": logged_in, + "animate": False, + } + ) + + +@router.get("/api/content/sessions") +def content(request: Request, logged_in: auth.LoggedIn): + return sessions.sessions_pagina(request, logged_in) + + +@router.get("/api/sessions/upcoming") +def calendari( + request: Request, + logged_in: auth.LoggedIn, + limit: int = calendari_conf.CALENDARI_PAGING_CONFIG.initial_items, +): + return sessions.sessions_calendari(request=request, limit=limit, logged_in=logged_in) + + +@router.get("/api/sessions/history") +def history( + request: Request, + logged_in: auth.LoggedIn, + limit: int = calendari_conf.HISTORY_PAGING_CONFIG.initial_items, +): + return sessions.sessions_historial(request=request, limit=limit, logged_in=logged_in) + + +@router.get("/api/sessions/live") +def get_live(request: Request): + return live.sessio_en_directe(request) diff --git a/folkugat_web/api/sessions/sessio.py b/folkugat_web/api/sessions/sessio.py new file mode 100644 index 0000000..9c26b01 --- /dev/null +++ b/folkugat_web/api/sessions/sessio.py @@ -0,0 +1,41 @@ +from fastapi import Request +from folkugat_web.api import router +from folkugat_web.fragments import live, sessions +from folkugat_web.services import auth +from folkugat_web.templates import templates + + +@router.get("/sessio/{session_id}") +def page( + request: Request, + session_id: int, + logged_in: auth.LoggedIn, +): + return templates.TemplateResponse( + "index.html", + { + "request": request, + "page_title": "Folkugat", + "content": f"/api/content/sessio/{session_id}", + "logged_in": logged_in, + } + ) + + +@router.get("/api/content/sessio/{session_id}") +def contingut( + request: Request, + session_id: int, + logged_in: auth.LoggedIn, +): + return sessions.sessio(request, session_id, logged_in) + + +@router.put("/api/sessio/{session_id}/live") +def set_live(request: Request, session_id: int, _: auth.RequireLogin): + return live.start_live_session(request=request, session_id=session_id) + + +@router.delete("/api/sessio/{session_id}/live") +def stop_live(request: Request, session_id: int, _: auth.RequireLogin): + return live.stop_live_session(request=request, session_id=session_id) diff --git a/folkugat_web/api/tema/__init__.py b/folkugat_web/api/tema/__init__.py new file mode 100644 index 0000000..aba1bbe --- /dev/null +++ b/folkugat_web/api/tema/__init__.py @@ -0,0 +1 @@ +from . import editor, index diff --git a/folkugat_web/api/tema/editor.py b/folkugat_web/api/tema/editor.py new file mode 100644 index 0000000..a456f10 --- /dev/null +++ b/folkugat_web/api/tema/editor.py @@ -0,0 +1,23 @@ +from fastapi import Request +from folkugat_web.api import router +from folkugat_web.fragments import tema +from folkugat_web.services import auth + + +@router.get("/api/tema/{tema_id}/editor/title") +def title_editor( + request: Request, + logged_in: auth.RequireLogin, + tema_id: int, +): + return tema.title_editor(request=request, logged_in=logged_in, tema_id=tema_id) + + +@router.get("/api/tema/{tema_id}/editor/lyric/{lyric_idx}") +def lyric_editor( + request: Request, + logged_in: auth.RequireLogin, + tema_id: int, + lyric_idx: int, +): + return tema.lyric_editor(request=request, logged_in=logged_in, tema_id=tema_id, lyric_idx=lyric_idx) diff --git a/folkugat_web/api/tema/index.py b/folkugat_web/api/tema/index.py new file mode 100644 index 0000000..f735999 --- /dev/null +++ b/folkugat_web/api/tema/index.py @@ -0,0 +1,84 @@ +from typing import Annotated + +from fastapi import Request +from fastapi.params import Form +from fastapi.responses import HTMLResponse +from folkugat_web.api import router +from folkugat_web.fragments import tema, temes +from folkugat_web.model import temes as model +from folkugat_web.services import auth +from folkugat_web.services.temes import write as temes_w +from folkugat_web.templates import templates + + +@router.get("/tema/{tema_id}") +def page(request: Request, logged_in: auth.LoggedIn, tema_id: int): + return templates.TemplateResponse( + "index.html", + { + "request": request, + "page_title": "Folkugat", + "content": f"/api/tema/{tema_id}", + "logged_in": logged_in, + } + ) + + +@router.get("/api/tema/{tema_id}") +def contingut(request: Request, logged_in: auth.LoggedIn, tema_id: int): + return temes.tema(request, tema_id, logged_in) + + +@router.get("/api/tema/{tema_id}/title") +def title(request: Request, logged_in: auth.LoggedIn, tema_id: int): + return tema.title(request=request, tema_id=tema_id, logged_in=logged_in) + + +@router.put("/api/tema/{tema_id}/title") +def set_title( + request: Request, + logged_in: auth.RequireLogin, + tema_id: int, + title: Annotated[str, Form()], +): + new_tema = temes_w.update_title(tema_id=tema_id, title=title) + return tema.title(request=request, tema=new_tema, logged_in=logged_in) + + +@router.get("/api/tema/{tema_id}/lyric/{lyric_idx}") +def lyric(request: Request, logged_in: auth.LoggedIn, tema_id: int, lyric_idx: int): + return tema.lyric(request=request, logged_in=logged_in, tema_id=tema_id, lyric_idx=lyric_idx) + + +@router.put("/api/tema/{tema_id}/lyric/{lyric_idx}") +def set_lyric( + request: Request, + logged_in: auth.RequireLogin, + tema_id: int, + lyric_idx: int, + title: Annotated[str, Form()], + lyric: Annotated[str, Form()], +): + new_lyric = model.Lyrics(title=title, content=lyric.strip()) + temes_w.update_lyric(tema_id=tema_id, lyric_idx=lyric_idx, lyric=new_lyric) + return tema.lyric(request=request, logged_in=logged_in, tema_id=tema_id, lyric_idx=lyric_idx) + + +@router.post("/api/tema/{tema_id}/lyric") +def add_lyric( + request: Request, + logged_in: auth.RequireLogin, + tema_id: int, +): + new_tema = temes_w.add_lyric(tema_id=tema_id) + lyric_idx = len(new_tema.lyrics) - 1 + return tema.lyric_editor(request=request, logged_in=logged_in, tema_id=tema_id, lyric_idx=lyric_idx) + + +@router.delete("/api/tema/{tema_id}/lyric/{lyric_idx}") +def delete_lyric( + tema_id: int, + lyric_idx: int, +): + temes_w.delete_lyric(tema_id=tema_id, lyric_idx=lyric_idx) + return HTMLResponse() diff --git a/folkugat_web/api/temes/__init__.py b/folkugat_web/api/temes/__init__.py new file mode 100644 index 0000000..20acda4 --- /dev/null +++ b/folkugat_web/api/temes/__init__.py @@ -0,0 +1 @@ +from . import index diff --git a/folkugat_web/api/temes/index.py b/folkugat_web/api/temes/index.py new file mode 100644 index 0000000..359cfbc --- /dev/null +++ b/folkugat_web/api/temes/index.py @@ -0,0 +1,29 @@ +from fastapi import Request +from folkugat_web.api import router +from folkugat_web.fragments import temes +from folkugat_web.services import auth +from folkugat_web.templates import templates + + +@router.get("/temes") +def page(request: Request, logged_in: auth.LoggedIn): + return templates.TemplateResponse( + "index.html", + { + "request": request, + "page_title": "Folkugat", + "content": "/api/content/temes", + "logged_in": logged_in, + "animate": False, + } + ) + + +@router.get("/api/content/temes") +def content(request: Request, logged_in: auth.LoggedIn): + return temes.temes_pagina(request, logged_in) + + +@router.get("/api/temes/busca") +def busca(request: Request, query: str, logged_in: auth.LoggedIn): + return temes.temes_busca(request, query, logged_in) diff --git a/folkugat_web/assets/static/css/main.css b/folkugat_web/assets/static/css/main.css new file mode 100644 index 0000000..76752a4 --- /dev/null +++ b/folkugat_web/assets/static/css/main.css @@ -0,0 +1,1028 @@ +/* +! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +*/ + +html { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +.static { + position: static; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.-left-6 { + left: -1.5rem; +} + +.-top-5 { + top: -1.25rem; +} + +.m-0 { + margin: 0px; +} + +.m-1 { + margin: 0.25rem; +} + +.m-12 { + margin: 3rem; +} + +.m-2 { + margin: 0.5rem; +} + +.m-3 { + margin: 0.75rem; +} + +.m-4 { + margin: 1rem; +} + +.m-6 { + margin: 1.5rem; +} + +.mx-1 { + margin-left: 0.25rem; + margin-right: 0.25rem; +} + +.mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; +} + +.mx-3 { + margin-left: 0.75rem; + margin-right: 0.75rem; +} + +.mx-4 { + margin-left: 1rem; + margin-right: 1rem; +} + +.my-1 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.my-2 { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} + +.my-3 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; +} + +.mb-3 { + margin-bottom: 0.75rem; +} + +.ml-auto { + margin-left: auto; +} + +.mt-1 { + margin-top: 0.25rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mt-3 { + margin-top: 0.75rem; +} + +.inline-block { + display: inline-block; +} + +.flex { + display: flex; +} + +.h-4\/5 { + height: 80%; +} + +.h-80 { + height: 20rem; +} + +.h-full { + height: 100%; +} + +.h-px { + height: 1px; +} + +.min-h-\[400px\] { + min-height: 400px; +} + +.w-1\/2 { + width: 50%; +} + +.w-80 { + width: 20rem; +} + +.w-full { + width: 100%; +} + +.max-w-3xl { + max-width: 48rem; +} + +.max-w-4xl { + max-width: 56rem; +} + +.max-w-5xl { + max-width: 64rem; +} + +.max-w-xl { + max-width: 36rem; +} + +.max-w-xs { + max-width: 20rem; +} + +.flex-1 { + flex: 1 1 0%; +} + +.flex-auto { + flex: 1 1 auto; +} + +.flex-none { + flex: none; +} + +.grow { + flex-grow: 1; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +.animate-fade-in-one { + animation: fadeIn 1s ease-in 0.3s 1 normal forwards; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +.animate-fade-in-three { + animation: fadeIn 1s ease-in 0.9s 1 normal forwards; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +.animate-fade-in-two { + animation: fadeIn 1s ease-in 0.6s 1 normal forwards; +} + +@keyframes grow { + 0% { + width: 0%; + } + + 100% { + width: 100%; + } +} + +.animate-grow { + animation: grow 0.3s ease-in 0s 1 normal forwards; +} + +@keyframes marquee { + 0% { + transform: translateX(0%); + } + + 100% { + transform: translateX(-100%); + } +} + +.animate-marquee { + animation: marquee 25s linear infinite; +} + +.flex-row { + flex-direction: row; +} + +.flex-col { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + +.items-start { + align-items: flex-start; +} + +.items-center { + align-items: center; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.overflow-hidden { + overflow: hidden; +} + +.whitespace-nowrap { + white-space: nowrap; +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.border { + border-width: 1px; +} + +.border-0 { + border-width: 0px; +} + +.border-solid { + border-style: solid; +} + +.border-none { + border-style: none; +} + +.border-beige { + --tw-border-opacity: 1; + border-color: rgb(178 124 9 / var(--tw-border-opacity)); +} + +.border-yellow-50 { + --tw-border-opacity: 1; + border-color: rgb(254 252 232 / var(--tw-border-opacity)); +} + +.bg-beige { + --tw-bg-opacity: 1; + background-color: rgb(178 124 9 / var(--tw-bg-opacity)); +} + +.bg-brown { + --tw-bg-opacity: 1; + background-color: rgb(62 56 52 / var(--tw-bg-opacity)); +} + +.bg-yellow-50 { + --tw-bg-opacity: 1; + background-color: rgb(254 252 232 / var(--tw-bg-opacity)); +} + +.p-0 { + padding: 0px; +} + +.p-1 { + padding: 0.25rem; +} + +.p-12 { + padding: 3rem; +} + +.p-2 { + padding: 0.5rem; +} + +.p-4 { + padding: 1rem; +} + +.px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; +} + +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.pl-10 { + padding-left: 2.5rem; +} + +.pl-5 { + padding-left: 1.25rem; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} + +.font-bold { + font-weight: 700; +} + +.capitalize { + text-transform: capitalize; +} + +.text-beige { + --tw-text-opacity: 1; + color: rgb(178 124 9 / var(--tw-text-opacity)); +} + +.text-brown { + --tw-text-opacity: 1; + color: rgb(62 56 52 / var(--tw-text-opacity)); +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.text-yellow-50 { + --tw-text-opacity: 1; + color: rgb(254 252 232 / var(--tw-text-opacity)); +} + +.opacity-0 { + opacity: 0; +} + +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.duration-200 { + transition-duration: 200ms; +} + +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +@media (min-width: 450px) { + .min-\[450px\]\:flex-row { + flex-direction: row; + } +} + +@media (min-width: 640px) { + .sm\:text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; + } + + .sm\:text-8xl { + font-size: 6rem; + line-height: 1; + } +} diff --git a/folkugat_web/assets/static/favicon.ico b/folkugat_web/assets/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f6806f5af2737c508665a1b2a6a8583d29a7924f GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/folkugat_web/assets/static/favicon/android-chrome-192x192.png b/folkugat_web/assets/static/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..b79d89bbb9607d4c780e0dbd28c4cbfa219ea6d4 GIT binary patch literal 35587 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 literal 0 HcmV?d00001 diff --git a/folkugat_web/assets/static/favicon/android-chrome-512x512.png b/folkugat_web/assets/static/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..e6ae479722c088dddcb6449aec1ef3ef9c3379fc GIT binary patch literal 130163 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 l@E;6HXn0cdWsrquNk2wzS~ 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 z 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�Fc{AzgUbcb@xEVN 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 literal 0 HcmV?d00001 diff --git a/folkugat_web/assets/static/favicon/favicon-16x16.png b/folkugat_web/assets/static/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..44f5c4f76a0866e6ce6d36f16e15916eaae7e461 GIT binary patch literal 768 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 literal 0 HcmV?d00001 diff --git a/folkugat_web/assets/static/favicon/favicon.png b/folkugat_web/assets/static/favicon/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..64e01cabec86cedae218751340ddb412ad105538 GIT binary patch literal 107551 zcmb4q1yfv2*X`i$7J>$MNJwy(;O-8=g1dVN9w0bDgUjGDxCer}ySuw{4|(422i&5j zrs`BNr@MFe-fOS5I!sYs0uA{sG6)1hladru27#bmUO$NNz>~HccvTPx>br%gsG^jp zD7n3(otcHTDF{Rt;}gR#*`*v1-^NUs!^oVIZ<$RPydG*3pC0oaVFtlSUfyjrEh_BPiV^4R2G8MJ%XEerjA9M z4Bujmp-gub`2=r?9y3bQQ`1i4I^X}k=ynnO>_5t)Sl)PiQ+Y70;J?alZ~F0R>n+=b zlxJ;`c$9yu&FXq%QIS{s7CPIl2}9z#l(4o43qo_|7`v%|fX;8Pp-dfPvH}dDaI=JZ zD0K9IF+S7sx&}9mgT?0~i@_5FtSU!;K9WgPAT01-WF*8uFRy>UTMFWUCrI{^T24R& zXI?*0B6O+lz(WLQDLHY39TX@`Eci0h^Cl3893&+stm;00nC{`NI(7H5GSU)fa{OJ* z6f4$0JR4dV6{*ZXxD+Kttkke}dYWbax&WdM4w99nfJ&O5pVm%-K(w2L^*#viYwxbd z8j3+{7ZnOoglZEc4pRN{%3L91uPmhc#T!Sy?$M^-tpBdzCe3Sv|0Zq3XV@bH0Tn*5 z!;tOG|HoJG65M;a*MH$x`EbA5!r#X&G}`iKJiz^fCR424>VoOp@H>3DGUIEQ8EVx zM7Fm3NT0(q<%4WASg`8IAJm;us=-;Ra~1312~0DTC$Qu6*GAU=0ml&&zvJS&jnf8wX9fq^%;yTR}{D=__iP{^u zLmF==`@eo4vt1nMkS4Y=8p|L_L9+2fGx12=(aMA@3_&wY@04<%OQNTnUM~`&!c*>} z!gm!UA`}OsRxVwmh;s=ieBnGsBfwHr#Fb=Wb*}CqU&n*;a}i&8nq(10{M&@>zTVp` zs=(Gc{J*)ma*IC@ph0++0>zeK;H=VUmo=3L19v5V3JckukKP2JL4*18mWg7n#8gyN zXocD%(N$_&OW9b`trTNKp&Vz>yqcI_NH8h{5+aL;x24FHRaHOcfNg-VXWiI|0O61f zw15jT2k#e=BV-YOXX6{n))(GviX>8Jfe-y2_z+M63!ne~H@})T5&zrYRBflshM5X( zj0e#~I_i2xo~ghOzzw{vlw^eUj#33Y^j{P5T@bp^C*@edJxBkl`B^K9#YA~wQrtuG z(B(y#)+Sa~QuZ^ti8){hST4XYM(Q^xs`j_H@uxMo{xX$P%vL~*WQ+&;=L+?aYs`!F zg?v>%Y*$Qx{+u66R{vB&0r$y2N^qP&4Y90i34SuJ1$I+5uv#Wen-q9i=aRE`ORZh$ zoZaW@#it{sW!0?$#Lbw$D_y2W#5cuOkA4KD?<_(0?tMBc|5he%E{kFzub<84Mtiawf_P>?)uC8Y=e~~o(`dqj+>?uYDJB$!~Xy0oueq0Q8KK84(9Mwl7Qhy$( zz0w?&BUEo$srl9?LHlW$au0X4_y?5Y$h?XeNuuMgy@da5!JpVD=0<{VhPf+S$F+7F zru`Jt!4-B2JE4wdAp|cwK2D+!9ItzJryq5-RJN?E>p{2baLWR3mF9Y?D39nS-aN-% zJ3regjxi4+coM5tSx5}CR0WRu*QO|dHmjmLv z(qF00NFz1#EdO6H6%EAcu+gU)DOl;fQ4p_1KkdwDa3w*xLmu?TD{7!-@o}JVGZZ#1 zl|T(dH*>J{UZa%6Dm8v%h7)mU|F%_^IkAhVAVTRb?faWHPqA%&#ZM-^=Ps;hFNvt7Hzkc$}W(?8i4 zNeI5K%CAo+Ed>-V+50M!m4fYq`$wq+C-@zb!GHHXaL)v<+0x0H?zBKEW=f z-Eg*rp3vuXnHnyLAbt~%rGLq?jk$jVaf+OFjC$8o$S}6Obe`0wma6>pK|Cj11XM5- zT}t*RRY zF0w3_?%rqa!1Hi!R6dWlL7j*cK>>@<)$ zr+vEbZKfoFVlIu;&pLf*EfE`4i9<(WIL%$T(9`Il>0iTp$z~x0qc2T-nIe3xI{$_! z$Mhv;VRoFap)!xVsd|F6Op}_<0D%;0-G{2FbzgfSlgF}+-Wc{Wk~4>(c%Rb8ov2Hi z#|Z^zT{`2OpG!;oC#K7~&SVyn62VV?xyeeM(8fG9*pCen6aPy>o|9CPOP{zib=>tSufukE;1wxqBumhdRumsKg$r4@4{rlwm{!z}l#^KZ}ykW3RaXQ}x=ZUocjeN;GjskDcrpKovnX%r0nFL=f^Pk|et%?0c$eX)%WM1Jx@IL%Pmc z_ku;!WzGL8bVapPHN|b7dzu=>ctSHjthW^3-NJgsg`-}clavqMJOALs1h=BCbi~Ix zjN;{${ljLG-}$|o$pILClO{=kFiA|Pu|9kPz&F6int^lP=T15*R>h zw)$SFWDJbuVqF{4LLZ_`Ak&b=-D=tG<>(Mqy31d?gRrieV0qyUKchLQX+KUcB&dB+ zK(WH!UA)qw-tWw^%hH9YL|SN>|KgneuTX)m)YJqF*;V*V-%#94s`10q>) zD0QY@eR_=CioFH@>eABR{AgBim-7AQT!1kY-_;RQrNUZh=i=swuejB3F~<)f%5K3od^Hw6 z6EsZxQbxv~38)A8z8o4ETUnlB;$L<9Am95*IqWQGQQ%(2A{|cof!3qMKwp%W>S?ct zmV)jK$QojGzY9XmE$L&(ez2?l-~O{|6TevkN2SIev9Xc+Jwlr^`H4iBiM>XOrlO zb8cYhW`wYw(;vsBEotnTM?(Qd(OD`}HyDGobnrFR6);zOI6vg zFo5@Oi!Gr;rFk7YT9`Zn5dKNzwRn!!;chALwfB%B93nIlFogL?WwR8g^0{|MB4p^D z^@P`fESK7fl)XCUw>_KJo;%Y4oM#gHv0PB)ee z|6s#QU0E*w=VFTqE4pdVvwi+LAZx9!|Ar1@R!A4&()zZ8o05KL4aiFYm)$r4RR8whGCXRZgXG>M z0RKlx$~HM_q~sB6f6V{70t^oQynN73MH;l;Rh4>HIa5BMB{GgElx9q8JXL8P#-l-9 zCph3IY(a?^f}cR!Phh=b{Tb=M-K!E{u7ofs@e2y}p|Y3{tD%mn+3bLo-i6m<$+^XhxNpf)rerXBbQ`DRU%@ zJLd=DF34Is8^cC@u`2rC zj*x|jE1=8s#uED;%a@N?_Ido1gvsDqV8+M_d%45a)*H3D-g17#u(Y}!Tszm9m>GkvS$nc}fT)93hv(D{aI~3gqs#=6D?OPQ_a7Pn$zgz%g__CwV#;U3AT~? zTbze8(1?}|V}$Mwb1&OzsUj+0;O@C<&WelHzI@T#xjYr|eC(IRz+Cb}Y?o;oyr)Z{KyZ!SGCy{V_)ChOm_~=woH2??$!%bmO#3S8bd)e ziI;-bQRB=$gD7W&<*XfHnI{2E^bZ@7m)ZNrPo+W`BNRRI%*i!=azn)$lt$0+X>n^d zcrcpl%r_sqgP@HL(M!+YvT>WD{gTC_fx1Dva-HiG)6JU0PVpz;)3lje-VdHpFRdCIw?izGoG2!1^et0wQ%XyJF#oVqYZX9k4X&JWiw;Od!Y-)zwuG)d>+|{q6t?Qn! z4MWSrw75%KEmsBdK1D3EWC7W27RJ=Wk?*uPl&`FqFr4QX^6B9Hl$G>3tqs)P(tiGr zcWYrqRD6cC1^RjvU@=+f)T)Om%zRdc=}g5FvZM5K>x=E}BmQs*H_Xj27V8SmkOZCL zM>0A|hMFM@4Ir{g8L-1($^+{k3LI(8MWOWMc(C0tR1>YDI&bx!wB`}#1k zPezd)A5{yw5qLkvAp5=<2!HM}vIssrG$CuucXg#7Cm&H67q6L!4SW^-OHYpc<4 z4b$dObM?pE?WKuZO9vi_FOf%KJ}zzHI?Ef7REuR-lD6CwVRrD`H%XQ8yIjt1z>(trhv~Lx`^j3GczNYS2q>LHF%{LxfA9lYV!UnUnjz^tCx2{iybUF+<`uuE*7XF^ z@;jPZPxo*SfndO!;E(Rwz)^%Q7lKhSs~ z`YOG_5QVTgm@>-~U;8VHJ6*qm&clhGS7!Dss#2<>dfD8E((SgPJe_(OGkSfibO?j? zUhcFWh>4fatOfcukB+Jb@}=u2vM{Tn5j!&D~2R+R@AmaEO6hK3Zyw1W;6LF z_1sa0qtKA0;D!=F|z`A zwGos@x@x2}Fi5^N?C9I#+JpBLD>Pqi!<}5f-$w)g4A4)KUTx(1Ulxtu3$5mFJK>do zJnVRUz$YK5e$?Jaq`H|hvM>m53;`+d7hs#L(@r>*!nlD6q-t;c$NS}EiucC2%^bMg zbs0Q7@${@ev;Hf|Q2s&H6_jhEwdBzjGk;dhafmZ-ph?goy5>Sa`anaO5c*6Wcy1<3 zq~{LnPq4bP>NF?yM#Eq&9^_uU2W!J`i(h@HVhL%6De0|n=~*=3C;t_vrh=@$fCskS zc3D{NG$++2ko*2=Z=eJ_Wl$9CeT0LnwBcHCV)A;PV-Is^zRF zRVmJC`rmex{K+ohjI}HK)8wzc}A%(0g2oYt2%5*iJsqo0suP?5plCZk zI~jcL@Aqy4APl9*xMWuEToUPa-t_*s}D)@ITx;47Ut)0t4ld%m6j=Tv5W|DX(SY?6+{$ z!{~{2>Y3jufBLNKh6e*xm3@>XqOG3ePvpi5N2fP>OQlUI955vkKUtI^EzcY*T>;{@1 zE`4V&J8;LETDkPxVkkH|yzwhFBX_pz#&KWie9EpICq!M6#m+}U&4h~@^UHjS>NUeydUH~ds?l7zUOG``^@7265*1PJI~h8fq~=0O7Uh-L zh^UAjYrP{Mn(?r?Ud?}j-ht{t3e%Vq`5D#(8Z7|! zrzX9*h9rJKbqL)Aw{ncK%augKdBxpU7UTxF7zQ`66+msI?qfn*vtS!_pI2BcEk%<3WUA4#wjL(3+FY|GOvIm#c z_blBxaoFl1!Bq?cJE3X3g(HY{QjMz`^j2GaiFq{n^ZUS!th91yKJz-}9&=(oJbo(+ zypH_*eEHD_?`aZbo60E3MVTI%3d((O`nTLeX$vHET|$)K_`Y2!hbX6$+uL-og9C(peK#~75KSs?G>FKvgpx;6UAB@$;_UU_KK~I zM#Q29Q$H4QwVf_d!^NF2_py5CP4syfFlXS$@G3QY{1t3@^09xJ?9y>0$3ok8EjD%x zhbC#IcY6HJ#z2%CLz0m{2CfFf^J!yF0e&4cEJlj)O&z9j0Y1k&~@_+$u}L>vsl zR!ly}y&NQM;Ov-@mdo?vWXX-<-b_h}OwR3@C!9*Y|1Mpg^o6<{6XmyMf`GApO$VyS>ro2km+ejXLC@Ek`};Jh`!1-o zOtQMYlxn@=NI{S(h(0aclr=Mv^Dbpi79)Nr`dJD4PH{p?>EmGSQYIAN#QY*?F)nI# z@n_vOs{f(pg55-YloQUC;0s1jqyW)|yT5t$dKmoM1i#uPy zxy#yy!TpnDV)%5;R$F!b*O%;$yo+pw2--{;iCKE@tmBll5h#G;O8eLu;cw4P^$iQA z?b3~*fEK3R^A;oWL#e%(k*y=^d(fnP_(gV<`Bq&XmtpUtkGd3{OYJ z7H;H9c!E0m$R2bipY#sfvrI4MkNFN7OJDeb_0F>PU6A^wE7CdOT!-iK>65$ZMfM8T zS_H2Z?Lf6#qqCm=L@T5Qa>Qs_TWOa#68)6ZbPg`ApfK7|rai6!SfF_2fNK7c#<3sq z|C?S`vX}ligB$OtZ15b~_^L@$^+r+7MZph-*DTj>kz0)mo*n_(eff#|e7W^LIg8Nn zoPupR7N`m}yNfyWj(Q?K#`l%y=9y~dymPUklr-mJG-&jSs%k-3ues*ibw)5U2}+;) zR{{Rm4Q#pKPkWRy=`>6(#q)mI@>)bFVhXIKbNAN(YfXKJQy@Q(s)?wmz2FKiREI%0 zK0dMDYu+XM60i$Zs2*S~^?cu!RdU3dr?VZ1C;z-wR*iZ)hYsBYUNSqhwW-)tc6_c2 znfzD!K!$TVtkzc6dRHMmiQ9IcARiTm!yy=O+~T7ih$AN{;Gd$r4oP^?Dai&Lg7>J! z1a~aL+;jq5?$kmxDt__9Rlg-E-ke!n7$2yG-r^?gKz{^Km;Xw#_x_ONVqnup_My(z zuBEhGI;lRbY{QWE12fnq>88|)hP8G~E)=nvzIfo3>&c?t$ZGJMI^TUo*Yr-g2Vuz; z!*qY_Hz`4wP)N5gY(0hs+PsyUpPjizb*Z)Q;k>4~d_ZBmR{h`MLMb}~%iIsD)+lJu ze_fq=_4U>QKj0fX!J~qkXm*@p?045CXB&91UCW|WxptNX%?oDTq|Aru2$0PLV& zlA6lf`D6WGkTD{l!oCOo6@2Z~Ol+qlfP|+vQJ>`zzT;R?s2X60A=O4q2YITarz}8a zOeK3Du@`+iZYZzk@>TV1?07_HfX1ZiN9=o+kfm$Mv} zgf1MLos~!k+aZ)8lu6u*wnw$q)D++RG`!Kkc*By&BDak&jJLo)^<(wl^hx0Rx)bF2 zdvQo?ceW*GwX_Lb%L*}QnFK~`t@S5H8_(z8GjH4wT%wLjNOg666!&0f;T_Q9^EsR~ zj3Y^pSmh)zEt~4&1DSU%yFvNVHu{rPutL$baX@gLYoncPWSX5os{C#G6)Mro=8x^U z6@$Inv{Yj0;394rXYCIh9{H?ewiXni${7u>{rI)MhZ9bv9Z!ARsp^LTYa&p$$1N!#m2Q> zIr+KJHX9Nd_!;FX2orwAFe8gg&ULm3M$<$+)wh3;{+*+NwY%rr=X&!?jl!ZxrQ9yj z;9bm8=fxiX}zzwaoo-BC8MHm>3G2VeSUd&V6~C{<5MUO=a|6 zH=Lg7SAD9($C6fx+io$!%x`XOA3nm>QuxP>Bb_{W%_ON~6@n3$gHI7+M<7Yhmk-NP z++;+``eQ1E*D=@*-OkBWn_^8WNdg9QohOX`$m8b7SMXal4u%-*CNP&th zZ>y-v%DY3!o_^O(w&ygEuB)rd=5c*UwCrOrTK@AJ?GF0vmj+G{-^4gE)bm>P`MU*@ z2QY}c65@46fa*360}!6rUnIP>4wwc~&@t=St0$pCmK?COtY*q=XxDDXQ;UgGF?nn~ zwWueL!CNzHQc4-F$lO@Ai??Q%Kda^;R{h%&FPhp!4{{zhm)`NlLXbj7DW4#f@!6{L zn4`c&EX_l~{H@i;U^Flpj6DKe8wRSlq|_umVi^nG6q|if_#zS6VM+A&bg+t+^y8o9 z7jOtVM3q3elbafD(I`+E<3o!*{mj)`&ufk4+K!*ZqAg7dk%yY_$L(h7Y}q>FRWhvVFq~rd3bysQ*7|FA z{>Y>4{f5>qa}lX8(@XCg9@V>j-K*NidDEf+3zEjUg5BdNEKtCWG10`Gq~fg)kn*S8 z`1w5MYaTlvq|Z?(0rGnUiY}GR=d;=l%)9Rr2VET~8f~W{=C3*oer2y*Gr_P2gK|1k zNxOsrw;}C~!;|`qN0k*y*YRgI-fOEZhqX45UH zZy5pi!}6o)^KVEIoflErdc)QITUYI3lMZmHuzqSjuUB8gOz%7upteJrb)G`;YfCn< z5Bp!}_;xmeF<9r@zS@h>Nq(Mgtj{armHGNX!rJvOeC8KRs`d|w-FvA%_E|YMgo5_l z%r!7CS4(<-TFbu5j_dxJ6| z>#leaWwvh}S@|HFZd9+03ChaDC&+2=_#^yeP+baYh>baj!#<+OZ-S)7U}QM`;Hax{|@1+%5S}YKCFa5dxQ4 z4GkgG2!Vq4g=3J7GeG+r7_dj0mf@1g#h#{mO&;`TSn^`mOGeWtan!TPai93^a#pBk zOHD5zEtse4aksss?}g>zL*eHI9V0(rC9EJ$%M=c8b*WnkCN?%T5s0FyudN|;anl~7 zZ?tz>R*6rXG7xB`_8Yw_lkHmq{XR;E?Q_)xR|4vx?p`hvJ>|(*%K!pjWA6&Y8&=Z) zZ48HWAnwQZb`0U5b2$5z7)jyasQm;fdkoNCeuA}-^Q!%+R){->V0ECbC;J3r!rWR<6Gb*AU|$IIWu~~p4tN?(h`O@en&X;W!`u} zvpxV$xYpo)mEv7R)&6gZGAd5){j0FT>XNdj^wygx(-k12I51Wqhx(d``4W>eW^B-A z%=N00kix@ex9#RFIWm_#5QJ09|up2bXvmG?RQm5lDU>1=Ezt< z^5fqsbiW;yGcYjy?C}q-X8^~b(cV6a`jKS!1``e1Tqm)P0vnwaqr&@Xzkup5H>#;a zusDG;SH}V9@Wyxs#!5Mp^HR~=`xM%LII5j*lv%)FX8=mtYJp7Do&L&_yY5vJ+dv`m zr&YlZq@uV<8jfx~J`fNTK$O#T=azSDn+;!v9cxs2Ax-cOZM~lAc65q`3VrxI8AjU` zw{dcnLY1S(p9KIEtI)#x&YLH6&Os+2PfZ@ z3LkrUeFlW#!gn-@zL6P8y9l1xw*$b`bCtJY)I@_PHF!`cjdn6)Dx6%3cdnLMF9F_) z;NYYM<@1hJ`z~(y0q7Tj4i4|rV9JfMtBCR$Pm{-7;yki#c;-B zjhbU*z}RI?vG&`?SG!5R%OfF`@=sIpH&;5{#x$e}vvzqaJt0>zG5dhU;k6NG#%z;O zsLqdM8N^Wx((y@4@^j~##mnAQC|aS7i>6PGN9+Xeg>WeKI>K{>P`}JHRe!gMl*`y* z1%IdQQ#JCz0i#!brYikFRy%0}u`aK7)?X-RX>!wjaLz|C)2}-!J@>Fl$X2Bqj`2V~ zKMYojeofS4v-7(1v*V8v{*B-_g~b|oZ+n@gJdhx-PJ%-9>+1k4XHh3*%Nh5>h2lZz zD5x^G^R-|XA)z{EU?B+w{ni&qF=YLPvQ|I)h%e^pMW1&0J< zoO_xsYR%}}YO#}teK8Xz|E;@024M}*mm^A{g+U-w%u2%GeUyQbyoiN1`(g})alH@b?QDInq_CM;th(N&2|zK?0WB^@6gF7* zr9pKm(;X*A`!Q+xm7?%!n2;w6CQV!HmQx2s(_!t|3Yy9OY!d&a&LPNgQFAc=61N-@ zepBhDAZ}Yyw1+cd^-2PE9ZTqmpAICRa>izaWwPy9JEha&1O1$$kTHp;5lw>$9D1fY z+ui}_%-=`+3x$G%2y!eK%GGyK_$Dt0zY)C{0PH1ZjC8>k~4N#jjR+!^po{VCq)f(q5?w_MndeyhZ# z%XDIdE#r+qe!pAeFabYQ`0jJ|NX~B3l*{y#8mt`{1%VN8LXqh$_z-dlXicXI;Z$%3 zJ#Tvrhya!&WbvKxC*?zb`GFR;pyjxhi)d=wa8=lHDFwCzlNXV2^>X&>3Du|}NOdb^ zXJmUI1rxL{tn%9f)F`G>n+NH=$3Z5`eYoY@-tvqA&$c6$e;l9}1wcMlB5Gt?i+JE| zsbLePrMlkUUy*k3#NXQ+c zpF8Wl#S&!UzFKNMF|>R~#KMLO<$qTS`jhQrQlujHr&v^fB`fwbROHTX(BT_8oi{lo zW9)GxHWDX;Mil3A!ewf=-#QHgoblV!(ewFP zmqgQ{Tq4?cGF&`C@)cPjZBvsP!L7$_4il0EdETsN?6n1&Wu+I0BhtKbU3t(BzgVFv|cbnTE|9JATMYNB*ss*>Qbn z$y%2aGE)qt_?F3U;y1G)NgPwI3uJoALt*S-jS|*j#%7`KA>)sr`2x{Ws{onQLx=%> z!*EgnrAk^BOL=Olm(|@j)6@bfqacPNRs^scq5Y1{(BX`R_-E|E?)rDllkzin(W?vE;ke!`8yQo?83Y+qn@>a9lm%E_?X+wzWh#Z7ar?J^YM~EDD-uT|ywn4z`FwgiMEt7fGGg40 z^cSavvK(4Q_@kgQ1}a}WHY@6AMb=%bDlwvK@)}0EI@{Tw@2wXJ7?8&p#y%h4rHd0N zi~_!3$>A63KXRYxyO=mh`S`LDJm)l$eyF)g4<)*he;SZIzrTiapIDyf#9!GwKPZ~9 z@gl-je-n^XTwL*1JN4v3m*%(QFXR;m8)jM9M0n5M7y61^Z~cYv*k-AuKO4tZUv!A_ zw+NOsJ{Hr#{v?UiZ>sjfAF@UfwLr5my)Z^`{4!RFtie!21Ls^Wv$)>Sa+P3R+w7$* zC$0{V*#Rvo1P3+Q*GX=5mBp8hQAz#V-M(IpSkA90Ju~51BVO>#KlV||9Ct?nIcZbj z-breClNO*-UsPfZZimrdH~?p)fCgY)T&rpBn<0*Io4s_{=-Hxb3$054$UQOMYy`ka zvkQ*w{lM;C;e_Kq(db5fTK*9Qxt^j96hC66leJr}l2P(K0?>1O{flq4TgCYgKKSoc z%|GAAY_(?e+Kf2#W8>uIl7`Mo=b{cEn>_JXUni-u%N$~Yhb0=>&aUAkw}1K2Zm?ua z$&l=#8!3O5a}hNK{cGrF8_yHBh*JEfYiy@vK(Fq<)m+kk+3y>e+?gi+MnTnwLgt^^ z0eLb#o$0R?*^vzY9StOD=Cj{r8VN}bL$||7>j%8E@rUsy+1dS|))ZwoNBHgA`px9f zG__X42Q&7xe_le@cdrJ}iF4XaRb{rjU_eVX2U?Z7SxqZpQcM%lUTd*vXmr@%<5N~L zBjjBsywbBjI*l4$yGQGfQf?$M8eC|d{9To-)Sr0wTokaLP+{acGXr?dNDi3jPB7UEv=u04M$5smaxMkDY%*?OB9`M6swo zF(wzwhF~z6GfvnY|7mTMX9RO9CDj^Trj(zP4d=0B&y`DllzONT@J#@NXxVJy; z44U%p4Os1vHrM83iS7*H*LVAavuAm+i18AT{lc#ue7HG@wa>`uI5Ii8nlNJLbzO1* zdFH&c&fPgSTT1MIh?ia>Nw+P&Q{q>8@^oYj`Dbz-U3mh#5B|x?-;!(12YmG>kfpn_ z?C77N9iNVjagqe#5goH=`Bc&b@5aikk@IRRP2c{+#(t=}7n*S}_o-DGJ@s?~7yADC zm~;gDWb|4XtBdPe!W>JZRYt(6sXB;;S|9#OJgKL(Q-jLVFNi!xCP!VmXjcTySC?N+ zSmGY!wO+>S@i8jFP=zKHuwW_kFu<6%tNna{uG2%ak1sfk?e)TX@$I_Xu?5w3;7(IB zuFShse$j&++x1zE44ogp$X>rX-dqSniVJR!q}cO8LcAg`Ws!_wKw$DCg$!uFiyOf; zZc(7VkSFJ+NMfJCiB{m1UOUc|Sg_ljDw4#|(j{crFJ;mBm|!|zk7&S};BeN6a91GoK45WIy=^Juy~3&&)HJ zf5z2-l{|NC*LK$tdE|UmTG_r~*Jv2bA#(lnij^lPc$ypKt7g~(kLBdtZ|6AEV$O;A>zMR!g>n=y^mwMeh5l2L{{c^X)97-?IkOe}3%gy^#L$5rg!=15D;8hA{ zzISCMV?8QN)8k>i58=01)ODoi1`NCJ0l@A-Mcl}Ujn0pa#5+Rs^2D#aw%F)?>>u{e z&+iJ?4Hrinze(^c+N~XS?nCZJpl%m&O0sZlP4|{}Z*~0b{1+RWEuVLXuu*8FxFsNa zXq_^6^#ZL)Jn=gmjQU%79=JRGV%j3d`St$QN)S|}1~h%6cmMBU!&62inP?wIdY!vV zUH@;1ff?jjpYt`EH?ghBN3SuIG4vlD9Fn)>;OwiX4GraqTHcG%Gj)AccWHv?Yr1AjFh!FzuS1KIe$4l&`1cNYg4e&t!FQ=cMB zhX_6bj_0@J*sd&a!zZq6cF{Mfg{iNIfHLh~QM_Wo-F;-v#tk%bsjOQ5PT6cl7I(=b z6fZzSbt}2*&c>z5(_05$B@2PRX5mU`hnrPth|=l9xcoY%a24S z{rn*K-Oej<;iqMW!K-^yG(UaMUhS@qycT&yJ;q6B1osk5F$j08YtvZk_uZq{slS)x{RkX zWRM~m5ZHPdLNF>ex`4}d-GNN&hZUhaHOUkx(y2v37`xfvoH}>0ScG&oRh=jQ>D@lx zc!b)HmXC3fN{PvS<+6D8Jd&Lm-+?(IE%{>=mESn~YvAb0Z6Xjqg7CB3$^n$l2l)FX zMF!z+B2-~dK)&M}542hx&)#i#&m;sayT>PhHuB94ik~-2wy=2LXBjK&nX+v@xEK2H ztI^#f#N6#_7E=Gg-I{H)IdmU@FAKE7-zgJ@4=H9mq(&P}QfgI2*!PO+E)Q-kUI|vo z(F&ujlf=5R=K3sC(=EW4wvcG2*-%kwIu(e<4ECJ>P(dRgG_bPTS+F=Rm1Hrb(Mj6S zXc2ijFNq{Y9kyj7P7$Uo1_hsg}3N_IXhqS_B zz&DYUDT0CrzWthhe=;^+TvK|Bn%|OtuYoUU`aI>jR^_uiVSbe{DhEAe%Cq=Yx*{FN zdrPIUO0!_&$BFF<31|-Q6-VlzWra=(>*a*CH4b?=saV%}xOl?fQVVeMuF+mVZQiiU$R4@a$veOLli4@s)*c98* zP%~mSxalNn(XtU>;@kY-zncQ_jCY~eHXVl3Tt0tvT-{PF8;)3*fMOcxp9OXzxyZ$m}&k3=*b4x9I^50hl5r$FYa7_Ne^2x^MyH*c)rNwlP+0#$ebrrg z)CPf;aSSKG;&wpc3|qYv;?WHFd1p_BGa8u55?#{D)u_WKdC2hp5+C{8I(n907Tm?Mf~(&JqFn z!oD~aGUWjnks7w)@C|2$p6ZC-`OzmGHPaK)jHioAq02=eiATNhnw_<{i)+*7Gh0{s z8S1CW(NjgJ)haIJ#1~HOBwK+i@^4gO5zrFQ;!tM8M zbm;CJNzN9Pm!taltWAj`z`QEdqqFng0gcO0#gFlWH!E;wg{iNWg!6q!WTJWIHl@5S zr&H=xwIo;l%0wxn0m0V#C2|&IfE{md$?7z)Zz(Q?Iw^MI(sJVA=d5{>v<;L73tTUf z$rEyDzR7nAd)x8is}S513wUo#a?Yb!qq#o5if`97ZvDR?D}UCcvQ~|eI4X6+QztkR zd9b6fX=kiG2tuzWG5AOBEVK2lWJiPAm)wtQf~VDFVs9LjZ{!#gs=<47EXjNePA#9p zpSAf8`eK_q%kwVI)Luz{fa!Y?wA)a%{X_`g6GvY}?0f&s2Aq00Yl78^_$a)lzEIot zZ1HA<6u1*1w>gjIeBrV>KyNBl8)t6J5A{R74cxcIZs~bw{7?KBxXmsF^a8*GiMs}y zSrF_$p>~zjQ8L>DXzIt3K~AvkuT5TJ9f#k{^eya91oq}XP?l$-SO9b8`1;<;%Zpgx zq6-4OqZ`Gb)P+y@Gfkw(=RbjSPEhdLHg4CXF)x90J|(=p4R6Rz+FnqUYxo#+?Pq7Z zg42|%w@6e~YMavw$k9qi+L%U@MW{C-dT^-&p$AsRZS^8@tG`d>usQP{;P<6VNP2L%m-dpyUfNnf;pQ6-Y)`K7B3!(da({da zT)gszhf8lf`y0@S8i9=D3Dr3P*ez?UVm)5jRiEqo)|%6zV!z2jEK z3WdAkgmPQ!U&GYd_MgXqqQ1=nZ_i39qks#4x4#@Z!r0?Ltd|lKR##mEgVk86)OZ!N* z3_N_Iue$Hl=3EbSQ1xVH&F$O(z}j6D>F*e6bBO2pPMM>?eMi>mF<>qXwnIas!FsTj z5U6TS~Qkg>zB3!sxSK%mZUx~N(|yEb_tTF5k()>9j3{7VB8L*{H5@%;8;m1qiRB9O2(|7*DxN2&A@u3Xp$z^o2jM zcl$n!4tJ9lgl&DAQTv{Me0V}KHy(qVZhUVgtAy!L+8x2@gd$kv!2B0&m?kEp;(=w~ zLR$af%4o-0n6-Cx=A)sn_ z?APKQz@&Jg{*q4w3}fOTA)7UT@R%4>O03(i?pPCOXirs3U3Qq#g3@PK%M~td;l3Dz!u0%~7l5bz z$J;O2eCcLQ=nv$*rOssK!=gPj=u$&DbykB5_-?V&bbAr1MzAnvF?|Q8D*6uN8%>z* z3QYVB%^aRmdyl&Zv@3tE0Uec>hyNEW9~vyx!X1xLp-Z_FR(jYyxL2Cq65FZ%8e30=_>5P(eD-rBQi4m zy0ez!{NXNT*zT^7?+{~VP)pea~kN%IibA_rXk$1w@ zCcX|5>*nA_t061dyX3nYM4Pm7_e(1pGKtD6EMzvlA-WJ*8g{fDIo0#lDT8lF_J4{h9}qq2jcd0sbn zVsR3UUin-Uw-oFnexwuO)-z687oVy3o;#RZkM=i>18=%Cw(IqEYbY2?pGwh$K0+2I zYHQUd6aco4jcXZ)$E~4f5H`>}3-Wn1TZz?+J>6-e_Gx@2Ayif~6psny-UtLPx2?ove1EDV9i9as{Di0 zK+k7(coi2R>Egt(tWnYPYURqFlqq}cmCV|F*%xEqr%;SG)Q+t*IOh;n;=(?LhOlh;>cLWe9N_x(R1u0~ zkK}}ii?+xYOh6ai@Pjjfg1v^768Br5mKAFtEM|%>+lykBgE9a70t3b8_x9BrNa{c& zF^Xz+_vew`1nn0ws{I15__%^rn=^KNU|$szS=SDWEwPS=UiNXhtI>?(Jm7QuakBZ> z==uF6z{d2oA}q2qpFol8Tr z0l{-f0Q29f$SYD}B;6K#FHwBSpl=reJ6N;uu!;JPrMSMZ)*@xCZRYD6mhec2b?HS7 z%N=&g@eag@-g9B!K6x}QF?0ms@IXEyJ?G`Ow^L#$w+q*Uc^HU5R-rWFH0pO%U@tZx*a_sp z>rKg6&5LLAFHFC;=${c6X^#18w6&~%q8d35J;pa#YAY;xEEp1q4Rer2pnNAqQNI*i z!6X;f4qb!q;i#f<+*Zo$|c8}7bv%~X1?5|_-8IaOkP#WMqm`po)RA+A;TaErx(8G>lU7V z`_nDUdmOLF#b3s@T{5OFOj?}hlmx9=OML^+~5Fdw}sMe+S)fb;kLDgvqa*mio z!On)}OD@dIe3Ng}Spk?fmR)SkKC)6lGwSl|!%Xi|9fyToxEMdojm{|r}ee3vsj8!JM|m-jP% zwR(L_dx^Kb(I!eH)SYSVHDcS~W2Vv|!plJG^_XHMCP zaHvTfc^}7nV7f@JX=$>tii~ypa}>w7e_oYHmV^+>*I7)Snrv2HRZ3L1>)J?B`+p-+ zd^)roID!_fGW9fRR`vB?cWEBQi=Akcp_+STBT(~qt*%>pQ8$wG{juj$FGn*W7&366 zyZ<77j>@NT2vT5E_a$m>|GK)Rh|C6 zE$K(Srsd8(I7L zFJ~|idRycZWRqW6*G#GBF5X{uz8O%3+K)efqjhnS5pj*e+u6@}s z2}@0EFvRW&qc~!?T;EUelz3ojwgb58%Y+ur*3(VG>6 zEIG8Q4(>O-w3N88nO!DPZZ>1j+f3otA|+_W=Wc`-R5-br2+MiGsNZua-{{9353*MW z1!-ZCPjJAxwh|axFtry+JTFY~AW&r#?l6=dXw%=1-KOEe z!zGrluJqRd8VP4f#EKTv*aZw3($TWC-3K4Z;Ro=fqqo&~4yrjskbZKl zQ5~10ywHJ=^^h2(rYBld#tGBnNvZurnZWyYF+#0PWvisH*~K6!$4T`eo`-pOW4wof zubC(+tN3RZJW#BI0`E+#SSSVuW0#A8HV<_hM4p^m?E)}sSeT9p$Nb66jT_}1`%g#3 zNr%TGv}Em~8#ug13LZb-RYs1msSj+m2xE~QTuSO|YXLrTa0!0@f| zY4J}iuuz_d2cZGpzXmCUjrXvJD*&iMTRQMt+P-pz#+wg-UBo%E5hE5y2FK`yH>a{- zumGV6ucJbToJ8FV+2j0(=* zj&6J9L%Im%j%c7e#czX4%noRvD`@oyhX*J;EErCx7hZd0emsD-wdm3I_Bn1eq7jzk z&#QQhOe&zdXl|uZ*XDDRMR{G3#SWafZ}=|h_4#YBImme_*JW@@ix-NJd@^gceDB-y zn#3j5UCkBY>aP68jwn`|k&a8&wMDerFzzN17C=FL`*;x)AhyO zL?MKaSkK+hHYX!e#Gs$25kJ!51Zv-xU4O|58xEp7Q2^ zdk6_^x{%6XB4=B912l&|U8A6dV@pK7dmM*qdk^78Rpr;#d` z+t>>4o-L_#snh;_TP=_r+*oadIvp275{LfX>hX{q>(ps~fB!F#{bCv+b;^rCPYTD? z1+~k>-5hlz51k}1pZL_JXUtDDL128=gY^VAOb0iuQc$8n z7zf_)XWw{0Zg}x=(wP&E;PGGva6%hfTj%ow*e;9~ock&k~8j8$1?V1)` zJx3;OdoBuOu2tDP7?M}a{Aa$&XUVC_mMvS~tz=s3X4;I}E0cW{$iZFPZV|5fEoVTQ zjAqQ=J}{Ut+BCypKU%*~W1lh?=;Dgp2r?pZ7_dNIO%_M-pPy!aj8?RCq;jOmd z#I;Az7(Q8M9Oom^gV%wnL53k~`EigRz6)A7 zMUQCv`qhu42J?Q@yb#R9Hy(*lt0g#q92IYMQ|6~bg#*D;2i%vHlNxkk@mD$&OD;#T zKB&~W!n@vtTcrFp?;XAui~EuAO1VP#dHQ%}=@f>Pt`U>>>9;v842b7XHzI1i6aD(M z+KGxI=Evs}6KODzsKvUo4p5vce&*-%4<&peGxz!pf%#m|Q9G5VB+XZ(RLxa1o}@^L zgdLj>;6p`G+2h-N@Q9{RHR!k>`4_D}RqJv+u@lEB6%M zz&5Na@Wsbr1*nu=c?0_uF4s+CM%c6yf#$pzeNRQ*0B>Y~hL_TV6oy63e+Ad(vLq#D znSy4DNcd)PWJe4h=pXizz83B`J^DSum%jL^l~1Mr9z_R>zgZT$4vlLGj7n=N538p#lAv6R zJ*_qc-tYhlJ=dk@G*OC#KzA4mu@J<$VBX#KsIWok;e^o$N8;OFSj=Vm+W05ZIr8N+ z8APEK{dDi?FE?^H+smk`)!fKxnjB@jY)Jx}F{YTEH#FHesmZ(r+}^fU@jVQh`1FyL zj&#apjPbh~LM$y`FQpAX-}+d7iZ~Yp?zw8Ca1A$DYxSc4FS!>Abz=VGn;3pt466a> zIK=5qa#nMb%;EFyik2+vP zJYoTk!|f-W*JkXzB~~uq8F$4?t*qTqvp?NU#NuH89f!kS!H|EIyz*xgUcckd z@4k|gHF8SsRwCHoH4%OUMAbKC7uUpda_(qvpx`_%ru?~`k!T7w47-j2php*-C{T0> zMoMi>vy|+>hKW}?qm%*5G3~AHt3br)lcN9mfzFhOiwWiH7j_Hmz-hnLyBA$wa&CuT z?A<5;_7wgEFR!Wg)N~k=BjnV|qa9D2Llp#ss`Q943R3`I=niQTe#(;_YGN_E109ZG z|C%9~iu3@WHT8uO+S0Dtv=!6VW*qXR9vin3+FL~R?Rve@QoA%2wI)rWZM(9JGyN*O zv?=uVI5x=<+KdMUVXG|ZOC?W->^wA^QR7D5%X|!82&Un@O2@#HX zs5IdIT*@7252KAzV>%1Hke@iVXCUNU7lgK_&#&N&>aDYe&^F#aYcIYbJO5I&ElX1$ zk9cVXs`La{s`Oe|W@jE#p2Mb2owM>s&BDq>|0XFM1wsxkKmpC$gp}77&3)N5ir%vK z=&~RvVng~VC8wH>zGl#Yn<N-2P_jX~dhvHZJs^}xA8Go;0gy2vXoR%GzC~z|98cY2O-1`8E zOzX>7g%M<*WPDw%Ed(KdUSDbW=l?{nw^B@a7DGOz&Q_LKS$jJxIc@p@)r%?i=rt&e z+S?pY(>O=(<|LN9DvShQoz^)pUTS7zBC@NfS-okPs&W^!n<(X5r61867o%LDSqezrKf0hH7=wb9WK@eU7M;meSWf1F`V|E zVdQ82?5IKCMj1%8GQXvAuy^IUe9{f|;Dk^TNvccv6*JbxL&R+q-Y~#IsSN8&CPYo{ zBj+PrpI%#;xFTdWR`QnXAGu=#)~TeF2y^^zM5d17rY1)|YP)wLp4)_Eru~(Dp7qBH zl?>SBd;it!Y>EM}pM6-=ijP!~E+*Cx_o@;HWbvwCe&@Y#>Vc@4EQv#16s_|>!L0qf zZku1IVXughT}C{W^_R6>#ByR1T0}l@;LYg<-}xlBRsCQ(7fw$|z@N2Fd>qZz4sQ|t z=)Qvo*vB8eN6z&CLIN7FO4A8scTIKQao zRfC5$mBXqc8k*qm1u52YmrFgA8m5FfPd%vcig6{?iZ17xr(Kbqip_FAhYoK}^Wh-> zF3m_RQ~Y+~1n^ON2j#N7vwqruj-@1TTi;Ett6AXG*PwUedoIXUW6TZGZ2W%ppV*X@ zr9>oX94pfA+9ER3*q*U3gd~D##E97dhq}&3PT~`5PJUGuu;_MAlM-Kt0$~E+0W#NC zwCzJkc4N!>2Uwz%uom}G%JTqZp;2E+yTf#Mjkl{oIJ66AG`V*LMAmM{e4e>|A_m$i zPE3F_jC4~A$^-ybupL$;K8IZx=PM?_GAi65W%Wv5i8}s$9d}(Oq0EOLr9zsx>h}~4 zZnu{!4WEJQtu~cTS@9@s77T!lHq*{ncxyU%mgxn4^@yw+gmg7zVD~#JP-xT1P+w)O zZi3pidPuCkeo46;)2%t9+%lm5`bojm6S*5o#Z1_FT?1w@P0Xah{nzSb0q&d}j}B1x z8Ki*|Tj`iXPJ6xV*kyXP#ja#*sr<|Vh{h&syw|&y>o)}w9TOy*@wTt60y(pi$}M}~*a@9K-`KN^ewT+5C!n)(0fVpG7Iws!W4dPky~ z(uU1E51&&C)x-3(if^vJjE*@Gwnc261D1=pAJ`B!4Zl{}z+If>$ICeyv|PQ%KHjJ1 z_vzMuja4;2IRUrxDJp9K%~2+rRIQrm1&1x~oGD?4pxEQJ+i7$R@G&_s=FIZp#r@Tb zD&%3oj~V&2ENIfCZ?b=OKW@$Znk!9<{qy9Z1S2d{2;LVsNJBSpJ}uoCQe06a<h zXCn0R+v^_hfK}>7Iv|^*KITxBizER5#m_enM(iZ`)wwL@gV+zAV8l~9g?c1LOMBR0 zO`l05h2I=tx5er1iVA%IJL@Ggl^T%@o6+ViXjI#1M;9SZEYaNh88dtiV_!ow4T{@1 znNTjawCczp3z)FCa#EeOR$x*y^j%16eLqe`1>e3^$XliWQ{o4Gn$`D5_2tfB^h()m zqWgyNC>VbZjsz8f2P_?BYnjAlYp3}N;=`bzeqQX4h}Y+h@TPqUs{J|m9fgJ8K+L%BlHfT~aYYOc70!Kgxqr-*?P|R9u#^u1C-AF&b_1;&i&6_^V7I|F~PUNfUX!C_Q7QdvO zJh90L$^s=x<(oawgmo?1A@%b1%MrH4qc0H%wf=6!H5@}sV|F4?Xb@>(83!qK9P%@v z{O#`m-~EyE-|6k;ulu0MH{H#b|2BMOq5tLF-r*gi=y;n^ex5~Z-Or#}XHpmg;N6zV zKh4@e-+K0n3ZKvYSI-nT6a$^<2`rd(8=+QuqqAAIGjG$r81)tPbRhYqC4aNZ(y#qU z8a9SRwfo)Vlze!Xo=msR{2`{VnQXu@hvx013GjnS+uArbP9B>8(k-hLW#|9bb+2Ey z4GCzkSlI=F%AsbHWk#~RQTq5Vl3$25phk$E&D_X^(N?L20yEyC36u9?By5R$H0aSJ zkeWSOe1g6ZE49H0COdHx8>a^sP?bh)82wkL)l{yv6ntjS-bLhWOJ_alRA*^&HU71b za<6A#qzoR2H0<~gpNzA2ow6;@#q~t+>dP0Di(MaMdtk)48>@)&OL$@F+fD-C@bEzAUwmYp zqnb^Ot@8XShX12dca{Xv-#Ray??x!TT%UA24Jg9d=ZcvKy1ixU->HvD zCFwFzN)OKFl!mZKV6*)sNpy+N8>tJq7q-Jmm5%G10$sFHD=WR8&oFtZtofq33Suru zx7l|%qOv}b25W!wkmHnGL}Oq};C*jxG@}lBFv|Me4tWCY+YbS>j8FrV$4qDPIo^_S zZ7`P4GKtWsSw0EZmT|g+bBPP#&)tp>uXU5a zIi!^FTb22DdO!wFXJDj@jt&{+unm^U|KKOmE$pDa8-vV9Ih3DbAPXzC>{-C?8T-k0 z^%$BmE@>aLjFVw(|1{%^g29aSXfdr%Rdn`47Ww~KfR~49xuU>&!n5!%Q^BHqLl=-q zwcb=w+Q)@PK)RccW`1E773hrPrg4A7jag#JV3K$y(=CaV#)YN8C(rXq3-h5|?0H!YyuSBg&s%V4C zZFv-OA25uVHHlF- z)((JU31+U6yuc%hSLu;S+stLD0L3boDJtyTNHOtn*J7|%<%5U3^+30t_T9()U)-E) z9@GOhbXlz?(x|sSbG4V`7J`&GKf-aYBS(K@6aZ^c>N{}mVrLR>rH8*Tzd!Nrvc(`7EyKL&a<7IT`$xjGgz@&LEI4eM~ zBO?xf{8`_$xsCA|F5ARx;F_%>EH>T10VYZZNa>-!omJ_fpb_{r3#P;K*UhI3MU#Ih zzD3_kt}y=l;c~X#+el47$}7N|95knSSW9dwvoxos?F+K(u#R;{yCDCx48sz?W)H&O zdje%Uu{l5QUyk!(CVit1Q$gHAg^AH-hXnB#F%^;FFyu&JkZY(meU_Ny&$gprLOMQ* zSBu;rb;s+rW+!xNbNkl2{UDgCJ&W*1e_{3MD-#Z(u9YcR?vW=xzxf>gtmH3NG|p;p z+8}Pq0XM*w&WXK+(A1Zofs=7(jKY+-4iu4p6U|G=&&rr8-+WI^ye*Kz2~{IBD_S^v zzE?TF$iA@u&GhGw`m4CD_k&02---V|Yv4x$bBtj@#wt7t69XelIin9c?*p!}`222( zyH$euxoy-Bko+>Wh&*uzQZfv<>3l``p{iG0Rm!_%>Md?H2ohK9cuSp|^uS`&zcvb1 z8(gxCQ>Kdv&F`)!O?$Z7WFlX+cO2lLZ9L~#U?cc5eL9i}qT2Ja7~7Aoh7pWxA$sSEhy+#j7zE{D<|cIt049?eSw>P1!Nti*RQZ$KXBP z23u?kQ%{{E``dI=uu1LuamCHSv*`@p)_Cx?;`|bWDE8*i!HWtX^=Z{vS%JCO+cxD& zAMPO$+t95};hK)n0Xi2s=x1>C9fX{qQ z1n?SmYxxkmk~}=%Y^dW&$}QxEl|rv&g#F2k{TBhN zjQT3LH18AGk8&bva1#qSpZ4GctAw4SAEB{-nLgAIKz`YM<0F1$*W{9Xp8Iuo$CZxE zR5_k0PG{aV`%aTSsIW5l^`Yso9H>(>f8jOW3zBdxv+-ZHUSxKDbrUfWx)g1g3WjpN z{^S%O1&YsbBT3(rAJ_i`aqNT=WrG5*xo<0K9&fj7VZn1YUgA7y8~Ewp=AU;6dW}=O zpuzcPM=tbr823WT|lJ@U)hLwp#6e^FZ+AIgdut$JLOH*nSaXs|68$58CagMZP`EFWiJ1FFK|po0%%ZJ}bw&QHZ=X=rZx0gy!w04t`J;HzJ?K?!~$Cx$AIDTs3Xaf{k(FVt)!N z9#VPq&ZZx05y`Z0`OFgzcA(NdwV^STc1;%d)U3)jaH^P4+TTn#@cB-)6)9J6;?G0R z1_iFxghy1R&Q5(iyg1mNWC6mI{zY`XWHGW3Xp`Rik#2>rF|wW;2^$c2ttM_>5>*%g z;MRHa0VB-XqJU9Qi!b{I%Q+yfsf7P(8X6W}g#>f&KSzgUyvlrtAH)8Nvhoq0S63`8 zJ8OcTeC}1omAKs)_nGs>$$i>8RX2?!Yzy#FaW|`L!jZ+pn#slCVHF~to_d7SES_#v z1~Wt595NqrQ7K%r2eiPD?rRq9MlvD#bmkjO7M$~)mBa*Z;%8|)UUnJK7sy`vrWoh+ z=I;-b)J{Z_QTyij!#teYa>t=_qWfBzxl|fq6^gx^Nqrg>lWbD|8krAoOS)w%rSxc^ z0$`JQ6;W4SA6eu2X+Z7e0zIIQd)8B;pd24uR&>;K?^hJS3bU5Nh+1Gp#i z=NjK?ci;=f?9b~@vcMRwRqQ~k05VZrp1go%`L6$oKs(JD7~* z_B>oh%;J9snK@5dsd9gzr7^$0G(zYjL22?38VMw4rJY(=3#p~!gmh_;Q?DLz8;yRACfm}l$%M<%@BRBZOPYZzc#en_54sH}{(n_ZVu17eencP6sNSZuWZWn{h0By( zCoD%ZDn-u6nqT7ZvJLRfX^RP)WcZo0xp37lMwQ`?&#K1zkw0)X)*}2(HE3DoaXU@B z#IPyzq_{hS8~&vkeD<7UAAbd!_tTdwmS#APiV}DIC;YNM$L~BtO3YhE9=HpIO{80r zY+5q%l0xyL?q&q68y6W=Yx4f$u->+08kJq~A_v%Y(P6D@+BI8nG1L?Mlf-dCea$-sKNxFES#;6b_u z#o?9G-Bu*(6{Iv(A+>GBl0!?lnpakgDSH{?&>T;it68tAY1Rn~7hF9Li3xV><}n>D z)syeOK0f(M!K71LCFtAl@)nf--TF~iq=FV7hDb6_dX)d7#$nfi76>srSbi>=`3*&I z48si#)_c2Xl@+UOD%mEG1`BZ3$M;A%Y?^~Ne7&p($beJd;|FRKHd2A8u*Y{t^;^83 zZ7hR-i^8uxk+hqW)oG>hP#x~2L@YcF2Ql4F?1d&J(O^ET9jfpK?s>w~ldW1W`_cmT zX}i2{@S7vWG=xT}SD%b~ZC@6nbcRe)LW~m2juZeUNj;9b*4GTnt6n{l)lYn&uYyQx zNq-?y#adwg$Ir``Nh-b&z9D*afY4S9;t=3hYG)1?bNhxMjRxWSp_Eh3UiaLt(=v0iw`rb) zAHwZ9JXJT@?bQ;GHUIQ}RN3t9EW8@wPiGIX&g(Dn6}c2astV#}Aw`##M%>(ROG`VALvdAC`-|>& zsLySdS;>)M&5SV8f$zS|yq0dT(TDIrb_iuiqX_1tN13h`lkLav9F#LNH`b{nkA?EW zI6)Zip2ku#e=0XT6dIvwOet@BJBM^gdI@a+zBQ$9MO$2lZzCdwr70qXg*S`mdO4#!SGxLP8peowBf1kzUnP%K&B7}FH^okc$aiq7HdxrxKD2(x9+fT7{x4>W~OVuz=CJ{^RR>Bmg;jx(4_9W zI&1idB&d%8IlZ|-=@Pe$(h#o-5LrvqE-VkBVEi+W6A|z;6tQloC6+iD+qVfn)x_)> zaS7P_4)x>x^Da&EV40@mgP^}fjZ6y=;~38{C@|E4HePw^O*-n!%o;L5^OqYoHgV=^ z9FUoIS3%M<8KSmVV}x_V$N^S zlpZ)5QUqL(#_F(pJHR%(nP=5|p;J4`^m1v*i`*VWW$;`m8Ci^m87 z4f1+2`Y9E84)Lsi*A4GYj^;J{2hIaV!*}E)ge62SG04uAt<~N`Iv&#O<+kB zXdeSwv={rdbHQLiSY{)huxa#t6b@v&p}m5~srWrh@$3Dl+lTZumC_fZMZbMCucl&9 zGxexfN>H?y%q%=dpA{ak1T231R>-yP1pg6p8WbhYB+tWIm7)%L3W?d1=?8-jL1${L z>)@R;>>VsqGsaj%?0!}|9kpu`jpX`jU04-ej}PRRe}O)(_~-l$Z4|jO0EVMv`iKf8 zqFkPzx7vU6Adid{WO-U_E`1jM=qEzyZam{+l)zs=;Paylw>)D0iaBxZ7%jdAyWCJy zG7zsKeQX_A%j?d5S5A zyJnH^(Wf6AZJZ8n`+@PBem4XwD*$>k{jn_;9_v*uAE-SEkn-7nRSce^4~iJAC|AYr2gL{{2_nx1Q<3ydu$I85O}jv zQPU}ZgJzbd!3%8O)v|k;tJf8PwWYw;npvJ^dt^Chblg1f-{ieW%G>(Qgf#++9Bn+wr!fv4X+b|lH zglq2>Zfqbz#WdY60WVa8ih1RR#RvVN*lRwNc91~e@BdVp{a9FWEZ&(H)!(Q9=K zc)&UfdLa=+IcGjEwD5bUs~d9g#lhd0pr5=d)jydO-RtJ0gA;$ob#mGq1KCfg%2u>Y zvn$oBTwI3z+<-fkQ~8Mycuy2}wh0qvN5Y{ZpgXnjc4%QIBpf{Dl7}VgsWKf+peMgQ z44bCOY%=j?_n#;fygIx8DK z`1SAz)N5DI@RxYgH=0lxL|e)aj>8{FG0Qx#p>X4ee}}QK@aFA7#1ug|SX>|}QX0gF zE;n-1)m|8atWqzt_F|GglgWQGw8+BTGh}Qlq{>WYI4cBYO8P zA=_AgCFRL;DF(F+^e4O8?0BAb5=@*H%A~`IkEw>YcW7=*sZvP}zJy!e4Rm?TO{0;a zU3aJnH{adKe(#}}xT$Q!07P)JlkTj(xicg$NX-ODk#g)1w}cW5oG+bR`##`o%_G{g z{gaEk>YhKNI%fa|F6NAVu+d{%z_SKGPs89Sezk%%zN_4IXb}VscC3r^4D~Gy)+u{? z==HO_edsGxu|6sDGF(yrC(oZI#&M3(A#{YH4DI`&4rI5{7n&^;#eW}6=AvFvT-9;3?_f&6K_ycrV}?A}FbPIK9>Qe#a=+Yx{T!I5pCkvJKH5rjZ)tIdyu zP}H`%yD5bT?Jaz%EwQXxKPLvGbl82#QN{Y}KL(P?1>Pn9UFy>!r~D_! zz7;dyXnDjxz#_J8?n@4>NtNP9?Os7dHVoCo`Snq z5~IrOtmn~!tx;ypywrVV+iMQo?yn+rmv1;{V-MP>vFAQQ12u2LGw)p#6uu$F<#$-d zR+^J4YTz8e^bHu2>8;X!R|v#oV7SO3zU>|Hrcr`gG_DCT(`Q8gw$#B}^mK0Qddp67!?V za#?<&FjsblDsWd@U|R?sD)PD<+8f+h@ed#86~RfN5UoOzFaF z%ky9)8UYB$2ozkXNR2@P2!6eSCT<29cuRz!G<3x#5AL?br&+WvtUN>9AbQ$m8F?{w zrO@3wOh^-5Wp#U@1WCtObAj!Y{B=kHU#4(8q2q+K_w?qwM@mz%k4SRBb|Ajl%?Q>_ zN4XA%m{si0qRxHf#`SXYHK%h0;a7LggVE#^7npfX@C(7es8BG?G(jQ_yzGNB!8?PI z2de~xZ(x?LRmk}DP1X<3En%I;&8m?vLeMW`S#}520Beb6WJrB4s^!Ju&A{^>0Kw3+ zh)S+n2GQ}W$q)zMAb^UaAJkon-s>a!Z#4buX2@2{Lg#5j(#bx@{*umief+hED}I>c zYl80nd96iqAl7i_fu6{ZBdoTvij|uUfTiw)9R8?6$F?0o&GlQ5os$^@33s!NGO9!6 zkupZ^tPk4Sv#)|&Utxc_ghgwO6sAGC+j`F3;7EGKUM7??hTQayVo<6Zk-wkRxuXWA zilI5mduK4$|qj}XRDZ?BBfQ}WPx`J73YFUlul?pCy$-posa{t zCe(q*&(nu1&1IDt=|m<}6pb+ZybG2Qu|dW!T>SP#W^( zll^&7mjC|F1T<>b9792cMF&nZ*aD%v@K|m8(?y&2r;&R^;Gd9}AmiIQmZt~uI0 zl~z{XvslWlhM_;R7N?NObtWTdMVIPbaa)7k{?XhlE&47%VqZNnTd`^DgWnBLafY7D zdZl)P;je}NCVfnSbs-4%3)DlAlEo)@U<#z8k&m{~NxMlZ${jz*m)c669riy&gL*-e ze~Y@G=Dw)KUTn#fv!w~5q*t4Y(V7YnLbNF4U~G_bWwp7AB(_gEHA6zpsc!5^Xh znUBwk0x?TB$d4yPw;t`Imr4f9XRA>_buPlg?+V>ngT+aE4vtjDr1O#TFiL^W7eW zzniTue+WpSz&fq`rqmg&0CazpcPEp`Uk>B&d7ek%Cir6sr?RS-2ipY~skIM0bkJ{` z6&7V&=TV5xf7d)a=C@VgFO9R25=?h&A~$hOG@QjbEOqi|Ke)Nw|Ln(OJF(Ul@U>;|gHH=uP0N-PHfna7`ESh-;vr+a0*!;f93 zfRW?+=DEFpHqT;IqS7QH{~?XFfy``ME6CyFKKJ_hK~`)>-4Apvp-2y67p@+mZg z;QnFc3{EH0d37E$@hxAD3q}tn=s=tQ4P<-+_NkhZ;!?Ett=a_v-(gZ4%a8g!O(NnJ z%c6L)fp7FAOvBE}S;uPwXjQ@aV3ft??wNeajeAL{c1QDKR_D*_^9zPh-YVxSEM&V% zv|??cNlF6@7lV_oy2hIG!DqB!@3pqFc0rK8qH_Q=)snL(bytlUGl_HM-425*NUD8Y z^GYWqiUhB9IwdH)-I>F;g37OCpJ0|)7nZ`5M3hJ5y)2w=|p6b6MAOC1>-oM?_u5y9kir$A)KcpS;lIz)}u;7#UR(;Q2o=wSws)!^K14Da(mgLC&}&0K#;l#nW4Q|%aMDfw`@9{g4@#23 z_nIXV>w(=SK>UgIVmF>7j>+oGQ#&YJ?HwfEvOrtex*>yG`DTjnz{|qy3%U_c{6C>- zq@tLBGpbxyd)x%&qteu|M;1b$i(>!ZX$Bbt1k!f|w<)^&Xjsi9X~_ zKr7xI>=M($;ms}w<6+RageYwAT)(0U9($gl(Q3Y=@p)9QZ#?h?vtdk7p~uHH-g@wbSwSXV=?7@Mvd+{$LU+lGh6p*@}aEg@v2)5dUJlntK7iIo(9r5NE7iUn7{z!h>djVWDu_AARpPOHV&&IX7bGz$-otU}h{P{S1GWuSYMCI}c zkE1xS(EQC4yCDwoyZXyWBrX{(!i&TkfKqy4Ktf_+d6@gI*|1Nlwnp(HJNO{%} zuvzKiT$fT=KFz|3Yv$Z&z!_qH4s)q)#s~f|GFdl&;@c39EI}y}?E$P;g ziVe&8oc}?9Fgx`}$iZ>Wt2OT?^-f&i8D&OW+h0MWuuxd^PI%s&cwT}q>O{~tZy_=r zCEw`>uvP9=X((8GVc~l&cPNWLKvk$eH5n7W-4UG(V`8X)Rxa>Us_0FX(TI3#dL1k8 z5@F~r$Q8$HAM2aZoK!?Sc;>3GLBr`gkx*XcNYz_Dk8f9vS+49oKUg2mN;iUjmFYgV zk&8ng%Sv!V=LfF+-?4k*=HU1isqm7IBc3XPVskVoZirf2-;?O~j+YuRzd~0CwvvSx zKT7ITV`)4})A6jkb8uHdAxTHW>#Tc@mw-ciBDUBqv^5%A`0#MbDk5`sb2pIi^ za6g;XhIDC{-FnZl4nEhOd;QfNjP|vMB_|K7l2-+Zz5M|Wf1)sJzM`NU2y&}Wi|d2K zWe-1Fcb4m$?Kwn28W6P>!t8vg_* zPWnrDhZ6?BRrz#oQPB6(v28CBafNiG&5(#lU2}7NW zT;k)BS?eZ@8rndDm+$k%-mi>qYp3Lo%@$3J zv(MOTWjiDsPzC*lfSD(Nh-_o|;-uDpVeZI|#9%dRfUS+k!MZ`+clM~heV?`V-nif8 zYoL_UmD^Auu(udXBLq$At{HaN%KSPBjQQGy28S0vlgjQJe(uCc7`73(uhym!v}9p77AY8Zt1wE(2X!BvEM>wODP%;NUeR4Uq__(pmF3k z?m+B+#M^FsnVj`g@C79eytjEnN8frd?2R*Vht@YVe(6!a-aK-3Occd!u&eZ{w8$$W zh64!2;bKwzL^fm)%2PqR(3`ypjC^nE3qqQ1`nCt1FV~4{$`7IL&-$Wo^l@}?O=|WF z(0m*y>5S44aPp7G*z(jEDB*bUunHQ1a{cl##_5DoSgm|1HxcZ#7WuLB;*^NA9$}@^ zNV&yd2e+F9un~w8-|1O$GCp8EdGvdH-pBnFBt;?p__d z4nor>j4CJ*4#I?2k%}kg(83{81+XyE50U^L)B&l_y27|qhHLfuW>umT^Zw@4y-5#W zZmyse_v^-4qZKmCF~i95Z%`Y^qcG4|{&MX~IjVz<+sLQ7@K%&pA&L|E4-$Lv&J*&i zFr{^q=NZQ~c#Tw4Y7=t#5Q9z!MJ1nnml8El`bq9YmQy$W}%sMhHOL6`28y zgN66;jVJ)LW+obuLoOx5<=;gJ3n|b1hh1s1^ifC`k+PWZC$(0!#B>F9NR)ikhlg0& zjAOsh_6UJ#9U{~cjTP)5ZDci%t7ECcbxE>9uiM^F;yDMfy-$<50TxMKMM(%JU-$oV z+w(2{S*~fmHWpn~c_-65ekS?Y4V@104upp@OdK42W0kBHWT1vK^er%hggclVt`q@7 z;wiC4)xN8Gj;M<7t%o1U!wTZO{~`Ow<)(plegH09Fp{ZT;%Bd#+M{6wO$Bvs1_X^|0 zBYM3l9)|Nq$$1~!p!SEOEHy14{GN%!LM2VL8xycIAUS^xzN;4LjCS+yv8J=-VyyTx zL!ege6GBk?Ezh_wUV1iWxx96A8okE&*9n5MyrKaXdrXX5^!3=Zc%1SdkutT7Lek zc@jf6paW)r-3gwdb<&Dc`L|YsJl*yQ7Nk8KJU2~}u^Ek*c=k{2mxL7VAA+6M`g*SP z4M~jcV1ROZ5xZ-Pg5iP}ZKh;lHU^o zR0h&1@oP5C{PCS>Yhlj;zf>6Eg13pm;IHh~e`_5%{DHbZDvvfgpa+ljGV3h9^oQB7 zW(V8#I!`k3r(xrVNQtC%hh0Rpjw%6uILQWv#4 zk!KRDOmcH}i}U%z!Y%IOT5|tx>%G#gulI3YI9OGSh9CJ@mBob^c07uMBJSif>y;D* zB5ZP?zoK(E)grCLX+{3MiJ;Mt;$+)aK25#;d$?JnCId9+R0fSuA?np>Fq+oVz;ktO zkRjYm6u{pi5&-*yJ$sBkM=Rrww?om;k$ z+236XhdMnE1Wjl$veWmoKe{^-%%K59dZITJ04u6z&ivBD>$gs%+rl6CNLej&tAE?2 z_XL5c>a$BE21+?0c0sFMO8_jCjUU9I`1SXPK>|%703XyOXGZ|{7ZEVzYH<>Vr9jMZ zD24&2^fJ$Q7-;D_#|aI?mg|q}%39;?=Y2u+CZDXpl^Se#89j#j=<@kB2eOqF)X65ir9UCY8!z!XZYyzpZ{9E=W!jeC_RXx%DH(`Xm$Gk*4|)17d@f zO?dWBoOW7$pFVyIQozjzLYUF!+1O{Xg-r6sjHz`7m-2X z=#S{7wC--@_Gcs*1Ze{Yk%r6iOf^m~)fbMZn`LVJ8VqEG-1Z$<`rTEAAX|TR-(>=K zAHWhVV^%|?^MU)uI(K^fwvm1ZHD2)}HLX0vICvVR`|J3l< zpPk7mE)rEtq6mP7@@EIYKy?81{Y6i*g^V#OurK0E0A{xnP=edKE%-fjnVOo4?$;(p zJ#b5`jsNL8Li}-Bn#n6hm^)9;l9X!o6c@&-zV;<7IHZ87964kF3-dB}*A z|1bWR|1x3yw+$Tii&A}$pQFsb#Z8PUcGP~r8$%v8tQ>RCPh~3}kM(XxSnDv6Ieo8> zwIseF9I1o0Yxm~S5g?<20^t{qN6p_(SI#>{A!jzvG{25tu!IAp~D@_#^kM zcl~SD+7U>3k>if-HKT-1mT{kJa4~s2F#J7Uui6p<%L@$AOz~mw3-<)SYK0P7zN>*> z!ui55{Y{RyHF;`_9Eel!TiI)~ z)YNAnVN?Yha<8!?gW17TQw@q6waF15Zmk%hGHS+tw}vLBUKAP?Wug!tovQ>0dka|s zdPQ3Tux0(_1rBqEs=;d?PTZouyl6lFU3zN_MT3YDX2VPARdHU;Yr}UrG)Xd4EnkXc z=psI3TY7B#>=Jo&xB(w}F)uyi-39V3o{Cp7y~-sy-Om=L5xDVNDJ# zFwJg=21!mzeql8`-sX}~Mg&?^THt~XrHC^0eb@`@yDTxV@E-$cQJj8lbOQDk%(?&J z01j&g|5$q?J5?MwfG9u5Bq2Igm9>(dvr5s~Ay;8t%-WAQV&_p%i~9Fc-hdiMq zV0O5&zi_a;+0qBHTLw-jYx?HxJ6|Z6gIevOu#;yp&C>6;Rg!|^?^#{G*qiqB=Z;U= zWl|;+y|yGenho>^BfQw@M9?*C*J0t!1~OCFRS73tDr4%(ofkJdEP}tXR`S3OxRpZ= z!>BXsB+Lr%0hvTbYvl_t@|g`h7z%g_36k~lp%33KNa*zl(YK#li#x4MO5wsh6MWpx zO~?7>a+V^CL2epS4UsW7r^8#S7e?QxuehSOLeYBkcGqy|M*=8u&i=C*ZTevEHd9o% zAL~Ztq+quFGYp??T<{q+Z2bz+2A!_#(#WrYQ4->9-@M@K`Jaw{hv)T!^YWRec^FJy z_+A&-<{x*zx)Yx{il%WkeT|ZuZ=h_D`lN5dfgXMYq_%gONOb&OyrTa5PPG2jcVEOE ze_P)vKL7NtfkESoQExoarP9&z0IB#JF(zY&&;HF!iX;XV8DjJ@BR2S)ufkb{<7iHO zw542Rn*Rz!6&30}6!L2s{V=xb#MpiZ(1f`nKx~soJ@Q}gqibd$VjGNeqn~9B&EV#n zDvAaM#o;#3lZ1Z~$h^o6ATq+r=7IHjhcBbx9Azka`91h_Fp zi{w=sr?dc71^kp`!d>!D@iYUZ=^<#G{De%lxasG=M|y^~)KdZE6cBL5e?>>~%T_cZ3wN3*yjM70xCMnP0HtV85IxcX zOhCi+yEf$oyf-ZgU59Dl2RNJJ(UT2~6Rox6S|QInLi}Bw(a%+1iFqfiIIArsks%e> zc^rwb=1AQF1B}f_9tm+6#h343JjvEHEO4tqbDbmEHa`T34lzT-iEz0cM&_UYo};VC za>3q19{qeve&qPrnd>4{{{hmuz}oY-7Ed%cD!B&t+)?awrnwP2GR$nY3txrJ7}hlF z+}mh1THD}?rTeqp1eBe@9|D^4gh7C2jQl(VltZwvA{9TbiMHe!l7Ce z$9xyFo6zn0TWAYQ<3S&pF#-~eH8#=JsnPcJ zRO=kXk!3dh9(4G+2b^1XG){b~dnppj3I5q#8;68h1!u_?21<1f@%r7en2Y=X-+Mrb z7jl6Idmnam#}^eLICp)rSacv*KM8-8edK%fZ4%+A5Qq#ipc7hbd;bg3JOYiTmZL_4hHZ2KeOGVS?Ysx>F)!@^<#6c<<(5OJls<1K z?L}p}{05p+mfdD?+6n-ifnym6+w7l_PB*iH(v-6DgL*g#BDB01a7WVvPmAOWFwb$_ z&CzvJQamtJlCGm$sle_M)M#g=l}s5E3zPMI3p%^-3FaB?LKV(TJSx~~NL8sbHzQbG zzD1SYJlM!`?O!v9xhh^m;?hKJXtU@PJ5@a-8_sZBy8Xp)t*{Kty-6%%5G-DBLOaL8 zvGL7pG6ayG2&;eTKC2H8&t6 zJXDm=D)cst#p*pt{lP2vtbsshXx!fM9QMD*3KqMNDf7dO6bi;|^mspxB#s`r_b|6u z%UjWP!ak@n++|X-^JDOe!3sF9XlP#gDL4c;LqL1qCX`~LUp)ex2A5NHx+S$r(emLp zrFAZk|2}cr^@qk_ezCwMr{|$nvFaz@o<3UvSZ2vma$USrttj=H_$`JMDqOebSI3MP z>yT9e8yZ@=Y)NlW>wg4$E%8oAoPaVuf>sW~=BGYwYlkJWj%#ZmkVJwR!ml+mq~l0k zi#YGN{xUcP&BA^FLdfK0)tK5E-boQn#1v4=OyCT`(hOJq>lYI4ZD(3ulN1x7nk_}( zpn5dPeAP+J2p$zKKNfJqDQhZ>YO3_6a1&5|os$_m=~*{bnjnfET$W(+D3Mf0Xc) zD_`VP=dK->Fe&LL_26pHwug!P`8t+70$C>9xn&V$V)@d`=s%pIq9R7Ot42m0m zXA~*LVGQzY0bcKwYAVGWUN}!)$s$dx2m$mVc*ylRA{xdx<85)Q0mRDuM9}rJM%h@) zwb!XHEG{pF06_xV4Mxcs>l3_s%-?$%m(ku^XnHU20Gee1hz*Kqy zt9>z06$NI(&nx0Fd4R#Ej(*uVa4wk;eU|p`^ed-wqL;W0EXMt_I3+sS*3=VmLi&a$ z_7)jm5q7RD1hV=byy>$8T71nOVyM5ye-sz_jOWqv<1o$G20af}t%TvP^;Suu&v}rq z^hS3?tUPvmX>T_|WGAb8e)D{o=OSClJoDKnxbA;MzqExARJ}WroW_&sittCiQRkhh zI_&tNpYN&-m;+%{-aDAwFw4y)Dh`IjtpVPDeog0*v=r?L$DIBi`j&Adj?|PrEz-eY zu$-GiFK(pYw6it8l+;BW5SD9lr?#rFb+PqhT6wz0(7J`_fP;blV^5S7-iLzN+3OyI zbm%e{sv&A~mTH$3g$B6$uh)Amu`IL0a9Qt&kS?1B8-!l$$5u~G3I_(J5!JtwyU};` z^TYT|RGHTq_bLJE%A7zoLM@oqPt%mWlp2lnE&RqE^gK^l<*V}27*cTZm&pT*T;Jo6 z4tQq2a?~2kc`^Ayt@s3YWq6C(lGI3od8L0+GLmR1J-M;9xqUt_#|0Q@l`%)PbIru( zd09yE*UqH(zWmnAU%_-C?y?wcz#m+v$9{OOJLTNZ6aZ^wi`&%PSN~gSSFkPhNDQf7 zx2}mS{|NHoBRySViHKcOOACd)xPb2xe~>ZFF=KOaa#%UYTjVv_z@CS^u-0cd!L&B{ zj)3KBs7CG z2B?aWX(#03$ubdrJj{uGz;o(x^s)6t6@ZK3?GeBK_kf_ZXSryxLVq-%Ic7?Pqh?`N zL?X~NyJ?*9?O+M>ZO)BaAbZn*7y#AJE+jTpy4pNE03xsZl;R8*lW{%)j_`Rj92WB_ zy#1PcXa_9mH@$E_;5jpduK(vatI#b(Fi!(e_8GAB@el!UU3?((QoCS4?MD&Q&siy~ z&+vz0RxEIu`Mo#Q=M;3ElbeJvL2(klP1|ud(GaF0=&zRiqM2os3_jmLqdpLUNaT{+ z^y^)E8yZTOxMQ>0S3Ghs{TecoJ!BC^2z1BkqDm-1Zad{{06rkTlg!SI+-#Ya7A*b; zdN8RH88pkr_#Dx(0sEKO9GQr?xI<0e?%@fVOpuLu4F+A)KyF5|qxAIX^=fHpy>)c`(&aTyy=9TTC{PzBw-`i%`brUgRI@^$cdYKzRXcU^`~Zq>3?j4w`f4h zq85uy{tn9F2WZ_*^NQ5c)Q|Upm&#E)jmK-J+DHX!@5!ejq{E_z&!4PA-0ur_EUS7j zeD8%en<-{f^bGXlDv)X8z^sZsUJFWP-V?>kD`*|P42^{7nVheBYoJToJ;`PB&>XWP zCGwY}Jb&mgW}6$H6eAfQ{%~P6&9{cODc{IO`w^4#EbU}>ZuWYQekJxsujB#7^Uvf5 z$Do>3ksi+S-!by69jsRi#k-5I0A`KJ4_6*d)lJeh3G40LCQ~ZVF;F-FRmkw?x&u^; z`Zg_;f_(oFpe%2kdz6|OZ>&H|+X#9JOf5sHv(C+5M&L2^oB6)ACX^t2%kV$s@B2@Q zbk>){B~?_h9S6b`v;E4et4>MD%Imc|2=w}Wgz0M{hVK^vIJ7;3>!SZ;rmqiV(L0BJ z<~zZT#9Uig-w90q{TKlBujlSnH(b?BOXAB>;uXj=~1&pX5O_bM?PUe1{`7s<_hMUU@Igq%z8{O7GE zHfcyHUc{Tr5`g*R^kS|=Vp5zrXTcT@qJwYGas8Jod(|o+42rmLsji{c$G-G9vBps} zV@b80$;YYHW)0S8NIQn0s@|<9~@Ang6uhywn%JO^h>J;pVP3||N1)!IZAAc)^z&!=tb`quIiK_Dm+B|XhmWwvaLE@vv^>Cg*x zcK@+lJi<-Es3Dnh<91(;(Kx}XDTT`-^DJzp_!k`rJM$j=3VyQo<_kWSjDF+JFr86I zghm6yZR%9JD^*23IF;wzO)bL_g26J z5$hU=lC73{zfFgEac@7ZCllw(1%UKj^q+AnYVV|x$5e|QzAX$SM{H`J$3HE_oGno? z^FjFv&larp2m)5%W@HfPY!G2n;7l>$n$VOiKIHcS-R1>GBsL0utk8){ss;RaFc0IS zTn|J;OFA-Q`u-7fFR&rsQ8=qO4HC*I+S-zwt1+WA@F~aBSVhNgum0S~s=qs28jV$R zZZJg*pqU^Fk~(V=kjwVxY(-wWNAxm8^P4Yo7fH^%9+vgdPFG_`VIA_T;T1fbm3!!* zD$#UqO`Xu;F<@ib{`BR#Nf*1Okp%HbYfBOVfqO}g$s06+zTE}4T*jfm#+nFQ-t}=m z55~m_sC~aJ*0_?(r;!dtDW&}SI9mm=dL7bAz>)@Z{l!gxnmghuZioz`o<|XkSo5)- zoKWdfuxk!hjPn43Y*1Z16;?-xfz3+y)%+qyEaiFwr4|rmoOTsvv!vKW)A%@Xo-Gsg zeb}W-)S?VsSq=yjWDp>ho304WXZjT-1EfCm z8^ECIc-v-TzSE{X+>MzJk#d@2)kAm=rL($S+WkqIpx?+c6AjuSCn~I}u$GQ2Ph4Hw z{Ywn1kIuqc%t&IRSe|*=(ijj)n+0(S!xw_qpL%ns2YqAJ8pZ7iUiJ%J|GP=D$yQNk zcl>nzRHI3syGF8yYS4V-rJjGD>5H6UjlCm=wT9Av3hZ&$Dp6|vW|^gfKD>B)pL?N^ zh^^*LWnlg~kQ0g|EQ#AJ!(zVG?1Z+pR`?J3Kkfqx0VM5=QfYdEUbU9eN;W^NY{k12 zXPxM|E%yA3$5H4QiGhhviPGv_q>~KXpw?aZw?wx2rO{Cw%%5i~SAm(8kO`QwC2qjg zGKPESHb6tZq8-!X1D>gzQ1%G{;L`9n0M&YOq*4EUik9OO4!G@pt_Pi%YhdOBy)!&W z)>2=HM-{#@;obH9AyQRz+75m?J=6D`k9i51E0uboFa=wc83-d3?Uk`IqLXg8o|I6|-sl6i- zs4}6LV+AM^6HmEEH*zvEN^`%Oyo&ao^9WZ47nqYG0v?T~{qtSM3S_yc{CT1^7zl%oIQ)<&hc6`Mc3rdgE;v!R!M2HjfT+rhxV_Eyff{*PXw0Gki70y zp4Yy}AIh$cPX~H13iIynUC{Qc;(#@`)qbpid(g}xTJ60-0k{YS{!o4`vFvh}Ihr(^`7VyH{+gGHmIlVr5kedeo z!JZE65iq%>8$_(P(OJ;`gz4!lG1^DNb8!8oF~@swVoDSVFHTd#vY2_+oz!vA8tF=W zA0EreT6+0o0}(7pMU_o|{1f40q8hh*X6`w2l;Ah1wcbXN$92Zfq#`brFVk7Un|XN} zLi#4sLBzyL-*olk!>HJxxVL^%td;)PWBI6bj|=jM-|yGd!G_01Kb0-l3;!P z2Z1n)2-Sh*Js&{`1P_myg1l^7W`Il3X@+v%y=2Syhl={by4-*54LY=2LcO{)IozF} zq)msE9;T1%;cQ;AWOj@I%24aRjx~k24(Mc3j- zZ|@Y!mXu$Ax)B7s0;aQq_W;Sq%+7Kgl=&|#8nTWE$5G*Pusq1jR5?C&;%ygDn$QC`m&chAbFiJkaIZga zsDF;J2_0mIQYz6D7!ajYM~N(DvD0UuW<74jhcpR8C@0aj56J2B29e<2jOREiW z4Df|kwCFhx5(p;H$1M1nTgOW|b*4tnFL@kJq@?_C|iU#5}HzI9315ZM|tSIL- zQ_)VBhOt$N&yQYLKZBv0|2{>~^8^av31_d#n#k$q}>crEP z@q%2tP{16}{WuZ8&2!<5)i9Vty9N(Q75n=Q$%YM=PIB;_g}DqyhRFFv5C<3b*Q&tU z6;@GnphsG;9_9h1j=pGs)({myD6tTOn8uy1L0SHPKpr?dUPc;`;0y#TqO$Yo`kI=n z;#Vq+cm5>qV%Gn=0{zU&ijJjg)7eLHX$q!c68jVMoE!It6C;ylnUqS}Rk*Z~ow(Hy zF*;xVj(2aIB(yv>ibUdv(}zwp`E@C_mH&>MEc50G5y~!DM~55#@ST5!F#4*cS(g*}rfB@3d`D72oaN2M9vq9HmK5ai9`V%pQ@ z76e8jSZ;{>m6Dp;wu|sF&vMX|BK4taU_dHRKcq7gd~a)WCuET3aqGPis5@QmVuVXM zlJRYZ{=Hv6Xr9wuC(7%LWsLKdz2e`tKfvz8elxZ!@#CrZK;W(%e9czLF_et-GICGaos(qcZ$XA8kNAN@> z52LbsCC1=))si`phK|lYs8#Y~O_=qpB$<1Cxk6M2Lf~)a)p)1c{t+ZS`6HBrwpoPIqPjiodg1pS2G@%|%GwW8$|evZmH(i#n_%s4C)u3>v+=@+@FjnILZ z0{<0Mli*M6Xp3HGGml#%^756RAHhE57%E7$npF=vQpcbcapACs zvUVhJ>17-$o99rn6z8t?u3II2eB|bo1rhI|_a0^QuSo6nm+rynmgX!LsGG-K+JK_dc}vT~}U!X1z)7 z^RZV9P7P@YR;o1uu3N1n9hchpJ?NMNW5rCN%SpG{KLVdLw)j+{eR@P*I$-aMVBFn)D01H`^nDm=e!cU}7L{d;3GSOv-6h zrFlWLP2HpfI~_)hxCM0ICKVWmU=?=5W!a0YJiXiBvf!^-MR%7lCx22`ndu-7pV z1mv;z0dPv*)IFQ|-#eSADH=%hWk3TgU1fupVA0!G3y1+=1-z;IJ305pYV{A2mjBQ| z_W&S`)hKl=7drpTANDRw3pRGXHcSZS*dz=yzqtXLdVPad#q6fO@INN+pg8G<=H?>C zqtLb~r&9{Blfk8)1`k+_zX_1GUe_-ux8}VSDYKoFFU&YYea&7**n)O9D zdGiny?~Ut1e|BcC_L%2TcH#F$9?`E!51!)dt+1cIgtfP4z)k}hO9>?@(F|44TJlxu zqSG3Kf?p)WJxrjzS_+zTfctzisO}DU%=goicW@?l+_%nHMs$63>+=8LX{#+(L32CD zvSszrP`e2BTcqy|r86sU_Kr!YlL29CKauSH7~>QlE%ZwGD`7}La@ynUd@DAgFPK3* zeDl#-w>k%3^!Q783@q?(PjsIRm^rz5mCz(fFZCM?Y`fp zE`^sKbFoOF7fMT`C&anG1e#Y61iNkz5ckU4Z6OZhs$i1b-B&$G}> zVrE|zYZLm+h_;Vcx3-UN&L!hZlOO246{g+0_piUrfeZ(Oq*y@5LU?(xvC}gnITS;W zVO9>+Y%Oo13SqDb16)c9&~vgWLNSqYOl(gggqivWhdGRrxs?IbnGiMch=_5Fe`(G$ zEpg3%$*uCME!A5W>O5esT2@!uH269HURg0dz6Tb#`$r|-+dJGRD>!A^a>EW(M*83; zIGoIKtOfld1A1?-RyQ@QdD?86T>~Dc_dMb7e6~^hvvYdB5-4$Oi9i!*(-qZ~yRZvv zNT0mxWr<%IO|yNcceX6QRQ6Wad*J|5xn8jxyGDEIFC*wVl2rC71Gm4_OHw1eOtV)&Jd!>qRVhHhEloW`7Ny&bi;y)H}^ zGwV%FNodjA&qpiIw4LZW)b{IX7+rEjS@Xq;hy>{;o+v)r0>}mO0v7 z9p{ztyp_)~(9vTn^!eUUw+sBwKY7ZfDTqL1N2wz44DQ{t9!@w5hF<;@THGcH!sQah zSZ;tyvmV5F!@_pJd znX~J61-O|>#|x?T-5N6X$R#SVl^jbhT^$`hjxYF-b@Y43^@XW^tDY_rKug^S158`c z(3Pj;UkB&E+u!|k*5Q|1fn>zeXGa039ny@KX~O>}uu`F^`~y4mb&fXbRMAIq8=m#R z$N}}{y1;?)6H!TIMr)6gV)ic=eW*R8_aCZQ#$&~Z772_ey;$Bm7a7b_Jw&@On$6z3 zA?VBVegkVo6!CvbDGh`k?F_i5M zlPsgEc+@;q(cVwmCEVFsc`8L0GRImvvY$LSDsSw5*~6Kv*5`&uWFr|C=l{gOE#hu3 z7%Nid=A+8o|YRXSljo3aHbU-N6*4<41X7fhZm$l<%O2UB)t`-!V*>;N|)r< z-nL}U1mrPw-SPu^=hu6Kqpp`a00VCJbyTg;!0~`XLxzhG~POvlpBP5Xmx-RmvXHES`Buf8V z-c0>%?#86+z{>3I|D8hDHUmrS%gJs9SGt6J^gBUVFaZ@oodsD)FU=+4uV4V_=n>;v zE>#pTe5vH0=3(;TL#CqoP5NUpGVT{zM!FyksD5*kHi}FnDSKXeOSKg%yesK9H`Zl_ z=!WAu5db|c3NTju2Mxv+4n*~D72}Skf0Zn|5rHfrUt|cZY+dQ5Zx0?jW{wTf&S}je ztKLy9iD;)h&G+{_Rmia20Z#PljR}|$#Nfj4oY&GdaQ1F8+oh1BNyU?IPcT#RLPLS9 zYp=pj>ix8}Axxnu>boBM0r2l|`1}RpN*$y-7REuS=f4hWt^H#|-N`VX^3g*+703b2 z(2uC%XB94*Nf_BV^uKJ*h!|`cq;A_wM}O^f4c;?@rZ5yzBvZ;JN77w_?(cVZGm_Fn z9y5_xqVMnub%%1a1B)m4N> zZMZm$Tj5l!Ib+=toazhr$y|ilTy3~+$^RN?Gp{j8{~)PCzk%#18$&?t-gU&Q{UYvU1U#O4{v2Mn->IarRg6gqJq$h$t|V1VD}^*CVF17K|Q zM<56tskt}pE$dWN9*hJQ>!Q8^5N&<9TtkTn=!VL=bfY6j0gik!}fr#7YpD0CemW2$+uL_{`;WsFZTLB(j=S=kbt zsTjcVv&+If0zLEV)6+R6ijL3EmUWv>L_jOVD#X>-{8dWx?`nH)<|BS?Y-cizMpSy3 zC^io$qiJ6-NnDMv9i;PX^TKT*TV$n%YA3dqxA^b$nw_BBPFP(Eo{2DD#OKOkt5LHimixg_{{=fD8<=r<*<&WU=}>Kk=#XAjP>!8Y<(LsLAb}jL=2+y+w-bVHYv$t}Fc2j@A^iC|Rvt=@kTwH*M)*U0 zt0H!2=$2xwr0E^X%Ss_7OC_8_UIx@^H0s^)kQmB5jT%r5G;!AZB|ZA7WNaoc@yr!C zWD&?g6p(Y{TkDxx-b<W)5_h1p~GjJ#)*vr$M!aRLC4rnbD74J z`ipWj4yE2!z*6N_t5axRHFGnG3TqYHYeugwKZwyP$Vo{lpi__#LqfddLDmOz`Qx{6hOY0#i~=u2e%mEt=ASb84v59Y2Cgx zq*{O4@@@B^z;dcJ^i2(M$_r0uZLW+=aV3tp$F%5qmO7P~L( zxsyF1EjQyz7ti_`eSQXK{uDAXPW7g<8)1_ivcs zQCU~8P|g-SVkoYSzwk<`+Vki4Y$Lb!5p&1|V-yNfD|ED{g^b=2PYlJ`a`sa27C9%M zQl@|Fp#S#5t|NJLg;oE;(c@JUYvFLe4Rh66ds1FCJ??8r;8{2(aRH z9hb!zH6o@Ic#XmV+EK=h93b0~op@1`Tz*BbdmwdhDPf38>0!(N)6l(pCll>s6w1O& zdOqg?O>K*RYop!pHm{&YoLOljjHxiL!XJXU-LbJT1e{Oy*qxG43dMH9*lxR)k&y(; z_D%OmJk=Kju|u~Aj9RIxW(_Fy|26ydiZFogZ%-84FAX46&?M+xIDOb8b-BVTTgwt%Zrp&&G)M_N61f4T9UB`$8o04p69IN^^wnAY|YTXy;aKz(ki{8jANSt`Jnt zpv^~bf6h0t#w^v0zW2BZ=~H44yxVDB+xkZC>vqzqv=SoZU&$_2{r_G7uNyh5hf_@C ze-dOc-gZ9!>`V5AyvY=E`Si>h4GLemc5VSX{Ei=g18&hVVOME;KZ)#}?->8ci;Vo^ z&kix?Fgc$e{crYqmw&}iOKwtCHCTWmk z{&c8hH!{}w&0qoG$Qm}g#BgEvzDiO=sLOOU*i2?~q(G59 zaMO6t?5<$g?*J^_H#}3qa6s%}l!So%Ljn3+EH;mU%wZi^#S#8N0uj50%OvF{EKAh?yf(;Z= zSlz~bqSQ}(u$~jg4iD46pVl6mcCHC1ITXL5m>Q0VG2fh998E+0-lf`c%wet>To#V4 z)xp|nc;kO43UMyFI_J#p@7LY{;MJZwlqWzM1Ab@eY#M&e#LY0^a-bAZ{7SO9J`$s1 zSYC$CtOQs!xfNFaZrOPJEFShwAYWn)>bLtYh2-3%YX%2%zToM#(b|Xd^N@=GBsX7M zV6gVVV^sm5A09FQR=o_r;2mbp9$&G18x+W(bdZ{J3_b4Z5m*;pHhLuq#(vUVae?>q zhsNu1sf%Nk65X?H4>p@}43EM5b6S5lq{cG%>dy@WHu*uWhF#j!!=pjC+iWM*+X4dQ3;qvBU47Yb@}7EcC)s zLd42Z2|^5VSEt75xqYEUQpMcWwL)2_fqa)f($jBip;pkPAJ;~{^$&4h-mhnTxo35& zCP~w6k)EK>7tZJAia(h8eBi(0ghyVKJuGc{SRrgP$3fb?8V|#^Z}lPCK4}3<#a~X? zD=I4;O0|`y;Y*S1#9ULPMz2z##7-ri%$GW3pVXQn&8ckNHGOTljUKnkUd$!aM`x#3 zDIq>L!ApBCN^kgbS40QT&^i8xK(?UjI$UZsWq8g^Mp9C#0xC>tWCz19|GgwQa~9>} zT#k7|%JcUjCGapBQfelK)~9X?w#tL=&^qPwj^sJ1HUD>daO}fn`fzvg;L5VRsLyk? zy56o=Bz*rC)#NX4)?#}F+g@x?OZiN0-n2h1vmtSP{7{s99FzWIxd1DXk2-@k{AuiM zt#XTEe`ImCAzyRtpnV5fnyJCuOKhgfqSN77alsaNSY+eAVjC@cVkEuqg(3p#D6c9o zJ;87e{io1~r$;;Iz%ccO^N+=gf5N+p#TiTrrIo3nQouUX*IPLINOqC&i};JDbrtKl zz`LA*i%r(G4cgb5S6^Q*LI2AHArB3#D={$E;E!?Y zkh2qzo8cbXIMXBH$_fHtFHeCxlmS(kyuhbD>kJUxf2g1eLDsrdpO5d9v>z43f3>N9 zqtDw9@XUW`@q1)hFBjfK(zC{~|M4}_p@rz5B&q(%^5=NHFJZN3%{M2klg>Fd8z1$M z`XjzWs@+v}XoMlxJUlP?ZN0B)mK@9z5IH7M@(Dz!*X*zJ?r^{BOND#E6W8UnL9zSSd{Ja_LrrWkS^(v?vU>8?(Xi8?vRp@?(UQpX^`&j6iI2M z;k|vn@9$5JV>y;xuIrwe&w0*_u1ae1rHsZ;D5`Z3DJ2hQK)V%ET1aA;V)GPR&e4;I z?&gjx$PlcP+x~m9R3oi=TJp=%JijV#CAcPcszAeVRVPdk&WkJ*gOeI~Zm?y~fj z#7_raA^n$n9eH*Tj2i!gN0qV`6zHEIU)?4IpTGaiCepdD{rDlru>&z5U1V_UlM1Uo zQQV(tAakjd^M@vDA=N?0U1J!$&eDo|3*Kwsfp~`Ar^;QQY|X8TU-ldPfQA%MkDtJ( zd{G)p!zGp*_y`=t;|C-^6Ta-v(Cs> zF+?Bgi0FtydU&G)x=PaS3Q1>_!sh43>gYoT!% z6@2mo?6P*F?7)!h{>&Rg`>03y;5vc0@T!sv!?*87ulE037n&2X_`sdz?xGpv-mqky z_}3I>k7EPhGX2s$}{Fe7yZZ|)MR}*E&q9TpWHEl5kzc`b4H;mbccIuGDz9Na8%s{et-mD zZN6MZ2XvO?fo`xP>%!wJM}H9#Ht5v96Lu~CUb|^651UQmmCZs@jArMh!gd2bwu>r{ zeh4$XSYoXgA8ImI^YC7#)dpBjB{@@Y!~<(2B|cw9%PNDmOc;I&FnquhoCnV5>nQ`x z#{>t!+`z4?1RWL_QJ>Q+p7EKII#(eQL2jbI_gv0@(@+1bDWP!rc6EvLugPfWVALck z6K8@`A0|alZ(Xm6 zcQ=i2HlfSygm+^L7%q7M;7G{;^^{UNW4jPtn61{*+AwO#nu|KE%R!-P-nR#|e+fa6 ze&h^532mSd<1`(zW`gw1&u*+~IRV}8RkBW@Vru7T_3^z{z&Q!zr?;HvPML28nZw$; z>fGXP;p)f-QeQL%#~%;?M%=U{_*i_2kVjT^*?;OT0pMU|jdXm6_ScK6rpLtv(<;?r zl)@4z$fvcCztXanb;YwRP)z(Q5rO7!o ztc@B-xbX1L+2aIB$3=DTb3<*^h2$&Jtm)}!{JXotjFiKWF(KSv@W8{BYNr&EAG7R| zNnEL$4u~Pkm*1WFP{#n(Lc0IBokZB~577L{roPj1NCR4!% z3kfVA5jn#O7L23#$%?1<@_Fc&cF65{k&_x&{;fbJ7^P=Rm)b;`-)NOF{x-FlG9;l< z`*!X&337vLZt4WBoi%5H@xc|0x|*fq`PeOpOgV2hcAVV#Zyr1d!tlGDUh#}a zhD}2S2^W5WOoae@9)*66r)4qJ3aU`L!$z=2h4ZLTxr3&$g>j&m6Z18Xd}W^OEp37Y zlzd7D7!0(&l6bz(T#e8ZE$t^iJbYG-w1MREc_^EIC_M!`s}dmZ25QW68$yAyRxXHp zJmDl@-a{*BdP_)7CA;;MgGsJh5xx(eWQ5bx+b*fgGatHE*2?Ih^nI7&7-jn|Ld^Rp zF?=LLD`_e(1usaqG+j~uIf|*Oyh4|Y;%xv^0w~FQWfU2xRfugF!q_QTZw-Uqkepq- z9c~reNWyz-meL*)=s`i}u{ho|P{Z=_88vK%73FT@-!e+5L3x4!G4ePM_0|%4wKt3q zEwHvl!*I78Q3`)tEf)PB1P)1v^;Zwq_!(GkYj(LLbW-Oqyf;?eecajES<`_Wg<8&K z7%r$~C{ae%mQa8qm-DN>XVZ5#G@liQ}^zuDJSc1$i{?j)B6 z;v6&R0t%lH9`TmQn}Rvy6B3~OP>lt82-52{lxaQv*g|01N#jGtgv{}L zb1)@4cX-g5ao3!+hkv2M+7MiY8@QKm5pL*ES=sP_1}5mM{*g=J_NRRDbW4V>QqX9# zm`Mi`&J3rPeUZ`lLmj(d_eB2L*5`wZQxci^cN{p2=dw!jU9rM$g@&m3ah~(E(QM_e zYwelLLj;qNWQMN42K$EWO*|bEq`u_B?R$EH2KV+o;to2b#IQGW0`0OY;2UFpEj{LJ zo+qbk?}uLDfBtqOGT_xNbK)&_0zZ;qgIjD&%iO=b!CT znQ&29dhWN38W7F;z$R=k04sCJc~t@~&~Q3!!(Gm$t2!7Ms&r~!8}KylUM^(d1MN;c zbMjFAJIVdSNgIp_OWN&Cx4FQd*y{3ZB^7~-EmT~>^9LrB9AviVhR#%qtU3`YMnt-4^5ZvSSV4mdDN^6o*(dOK%LIRcazkR`!XO<5$=j zsg{X*h>`^~ca%PofoR@4;fa9PLb|$T`xP*Aj7q3WH>J0o-S$|6^v3Ln^00A9HMh*u zVRx(I+AMKnj)P7`?@C_<)SeLNrr@1Lmo-6yFQYcBB*&k89IY-It)a)tA{2Qq-V^ZK zj+dmY(Rrr)8p=_Mt{>q04tMzTxn<-SA1R0pLv0g^MUs-ZrJ?juPcN4P|8zq9(uy0w z)~M*`iyJOnEgwQ&vT=tRBtQ()3CwV+3T(4CSjcV2ItMCDqg_gLbFsSi4SA z(~@C;7TCV4B8isJlb;0Q7HRT+LOFPHsEIaGHRev@f94HJ95Qa*5{vC);(hqy90G0m zTP6eCFTZ{81!pOQvvqo3c;1NAA7$`%Xli_*WLz|$W#K#9^S6GSprIb1u}l#z?NI&l z3pysjqIGfYoX&AuTSv>ICFr>Nxy?;OLK`99cRHn5Ovx-*KPfT&nMb&&zt}xKZHXtB zeli$uNiI`1a59gkDz<>4=Bi;ltSiu@Tuzw#<2b6LdEYzik8xWP9PpHX`5F;M-C?NL z%Xhp;KM8;TrCO_hvDO~?_c9_zyT>mtsuz{|(*sqNU7s=XA`j-@aga$6DdLNky-wrL zRO(LTK{3JHR{2dDBTgUuAU-t&gUx) zA1>R*ko(^+u1Q^1`qd}?rm=|66<*|PbV6%}4yNow2Ja&0be-Vo*mSa$nnzR-6E^JI z;J3@5vb|zGZa0tvcq9*eyuF}M!gRe-dHy;fMroS1e~tQVg*zg*R>pj|1!H~c!h#LV zAD1FOF`UZua&~CrvdQiD;uMu8TjU?~u2tOsEGh5$mY>+(Lh11X>L#+Ure$FGEV<+d z=OV5UScZg|5q6q68O5q;*Z^TWwmA8n@eN{8rV)KzjZXqp!@=Rg66~6 zc%v$YHZUF3>hnV;4Lc@rv8XnBbQ9LSrqkZ!r=NkwN~~!I3IW6KG-aR`7Ya~vI(sx$XMp9CtI!X zN$Rz1k%Xeq2XbCtKR+W0Wi8*R;oB7)Z{F!sb)bVfMbCsytX@ zvkF5ANrK}eo*&Pqvt)J8RwMHXze#9?^s8PIUyy(jeoyQH2$?rE5*+j(e_xzMIz^}& znLsHaJLJJrB6FjSa1#hR*66EGlyKE~LgVd+3F=3PtD+1MgXKhwHOjCSQm?h@p@6u9 zp~2~UP`pt(0tnz7$yjj?yS$bInK(pa1ayBYu0eksQ^}~s69z3GyfEB;hBG*pN%KUb z(^H~uilla7K?V^ILd&kg!df2_w<3Z~_{(&(bJh*>#5$6MgzRcGjc`LN{vzPq!+|P+ z5FGJ7zSVU`j4I~Yb~VF>I>vO49JHgjP6ySRy1-kSDj3PF#AU+?(F%D8OyONx1|C6G*OYs|!B}qkM&bGEuYUiJuBPiqmz){8se7~DBswU480U(SUHqBdy9sM%6UWj- zs;b5hnXL@0a&_q2%*|<{h3gaAk>xOoInD3$1 zL#8p>x2IOU9Gzp%sa>JhPsd=N<@3KNd;e+K`qkhZU%Ax|&svs8x1l5qm06SO3sYFt z7@eK+M@59vdlq`Y>tmS2Gqq(0ZDl1RhMk%XR6DKgGmo+0=iURap;;bK9`yA0$md`7 zTo9y4o31{40-KZ~x?=$$lE=_!j=Gds`Ce4JZA_8m^Qc9f4o4c@EMHEh-Yi+v;&X7xql3Nuvk zY@t~u`Uyq&?SdeQgr=${0C*?SK#k1N*z8m!Pc4<#rvyGS#Y$WV{YqSwiAvtss2dGF1?srJacGB(1j4?-PfFUT5NP zvoPpqU?H+vVk5aKn^fT$0(dL>Vm2WB$1(%7SIlL8mJTgH&UmQKPapq zanTzRc1C6D7ee~niLg95uB3jfpV#zx?k#Qaoz^!vNwQ--evM#-CoO4ruZdjU!)?_#YC6bg5c^B9!I*Jz|)S(3QbTS*zokDiu> z^NCTN5ub=$P|ZISpVHO2VP!H*w#tq_s=YCkKT_kt3|6n~?ZSOY|8-CHQr*=rqbxg@ zq)OjNt?q9&wtyQ_UZ3KMo8yw%i_CqE`r`Z|e(*`J_SFVWM^C5g@sN3X3x%T$OEqj+ zN#du#`=DRw;h%%Hpouk`Q7ek>3Tyh9Y0iFtG1@I}pwV!8(=+JbVIe57B)~d9Nj75` zuC|B;bksl#kdwn$9xS)c{ zl~ocjE#<10yVQu6?oPX?!Oz{(!>Dyy;puj%^Xli#`^Q7j!ipeCReZJYj(jV$^!Wg50(0QpBn}QoW4tN|B~4s56>Ow@&Bp#D}+%Qjk4B zfreY!q9ZSL(Ml9GVRoukU@yzGo*OLRA^Aa9JhOocR1X?J{6j;v4$sy6V!C5_?Z^7e z_v6%K>R!^3^FKmcylb${N^#wJ7S_7g`e$^ob^N(9xfp=hzP;SMZ;WbFr1uQ@;G6r3 z@>KnRdXhv}g#dzqRbP3Z|5F3Qm9!->^!5_V)1Q%?+b2GTilp^X{h&oZ`=7F;pBCiBa!Ggw9CZ?FkyqC0g25-!U7i=%&9_-#~AQsLE)On;q7;^vQJ zv>g~A21-Gp$?n-HwZntf#v{H7GEgwqmf79Hy}UErJ)J29y_33$Ph-dU>I4;(!uwzZ zBmb@tHMh!ZeuXl=$nNK2^BCl~n|-o9-`9jpJs!i2AgHD$dA6b_IW_uH3~?u9TP^iN z#U_Qo#Sq2OwC~RoEDJ(VJ!uPc#a^A1wt-%e_fVT*1Uh6DH$e*P07j54M?kQvPC&~? zgM`_^tQ3{vl07=Vb}>5ot7Fr!k^B5vZXRlZVWJ?vXjpEBi{4^b#P>g!D2=)N1$^oj zRA|c6UFcz1K6}uYjKEOaK38XsksVKvcchIGLX4JfO%Fbl2G+9VRxf;ge0t>EFGVP zp|dBhL>~XJh31bGWRxUfA&|=Q@r6iwB0j=*l$J-l;Ar$=sfdecAe^Uhsf8;LyyEMM zV6w(DR8=uCG6`32n$<)5d7#aWEUkI+HpVp#FT0f>Q!$9zsWgX;00-oo&|fvuEFE3x zo{}1V<9Ml=m)mxk+aGcy;@JlW7vKc5ggtne{rhgfz{LyXi!6nqaTX@kPt^ETJ0YQ5H2!0^Kko73^dTYqj za)J#|(zy|8+FcV9P8#Ls0FHffM!G8|be`lioDhxdcs@|B{y4RKF^2QUj%>nU@hG9$ zdYniOh$41Kols1oc4tV|WYdYT?6?ZP|*WR@r*ArSk9-y6(9Je0 z^yq%}gV;nj@k=+XU*cl+*=wMmjpi=b7xiQEHr|j1X~nI((|;%q&&s4zPyQv#GtWSR zWlRKYK{zUkdjCM3izlbxgQ^`gr?chyY{wlTlcTln{)M>^3kKzDbk%5pOZ7#m!2?F@ zDa8m0LbgTrc4k_@r}H@(^t9gYcsWdnXW9~XDM!-JdlT^d9Ugc8o#@cHxt{)A@vS_c zn0l5bMS8M)&DIg9YIh&IyIN;&BJLYjFm@BYKJP>H46OCAwEP214o9U_ze;Z%;=CN4 z-O{T$bHdl#UO^U}obIQO-g7VZH;Fri#IaQ( z>je34&1>c(=4`q-f6Ez<$&M2}%&(^MFR5a#Cny-3h`vtmA2CyxI^9dZ>kv}iZWbsY zAjuOAX-5|J3zDH+N zYN1czK?HLo@Pzz9Lp$u^W6EDqjfmv8hT6&%Tq&W(a8$7(t`X0p{3KrwhuI-Un1>1O znS8c`>guZ3XrSJCkJyuqo6i&&=Qc93Bp(4lCvOyCtk89@iI=U*dR#CvCMW31EP>6E_Z9QmH*Vp`C@;K z7cuz-Fd35VIEv+SMrj)-Z?|oonah{?W@vyvRD;M}3^(2xt9#d&ed97%W&owJI-9jf z+vAG{@ue@qK6B&PBhPR1AE(QzDKX2~hpO%~MLlImS@$icL zdu{ZjQizdJm@8f?6Lq@~gj$Q~j%Uu0V8@1;bZ$QF8_+JAGOWPGP^Z^Dk|nTb2BKX> zo7w&&x8O36#x-^$jT?I5fEG6T?!r0g=k10`jBc(w5*JeStIc%@n<^?}^Ids-=@tI;iZ1sssuR_$D6?R1fC2Sn4)6}WE=d_-_SAi3J|=xjc$Sn`_RATIyMY1 zwche!3C+B~_{W~u!MOZ7`^Y(tER8Wlz@!S>6%{EN^bi6fxFSKgffc_DR~|MU&PpAc z!T$F68Fo6baQ|dPIH$);Koa-*Z+#!MZ{lwE2k+!mqK~{^i zqDUvU0i&-U3rrkQTnB2R2+H!Y1M_eUjzK+IsY|s6E2rGGc{t(&vnELr0Ns%V*_d$7 zn^`o+jTnmZ!V6;Lx9XF^YIHEz?e;bU1XT-TkN%lwf0C>^l9ITqt<)!PqngCDp{+}f zhmq2dWb7P@LzjRGKl3w)QB8eA1Heow5|n3Q98Fe+~RfgLCE-J>n4umZS7dqZj z@7DqR2jm1STWd(!WX7edM9$vM|IX;K6_|s6Iz%$I>WikgjHPNfQbtON^`yzNE^4|{ z0`^?U)*{i3q^W?&_K#Scr6&*#1?&Dh(4DQAL@2Hsemm{TKfrOLyDo@m{2m0gCP0o# zsByUJ3iDkjT+`1YignUDB@eEzagp^}zg4PTg=B9P>$wlZxX@gGl}(hZI(qDUu}H;+ z4$4`kOpgZdI^&3EPy8Tza+~XpTGVRs0BnBQyb|v=LT$kQ{++|E-}$$51{jw|5#gl# za{uRjm)p`SU*g2?BwlzStZTC@)N~%%W!;4GbugD-Zb4n-gYNNhW4e<_y{5oH_pOj? zJwZe{n=k#PD1QthWv9Kxuzba-u`vvnOrgW;y9VE%BkP|W^huf$YiMd2tezsxG=cIr z$ygfrHXHw;x!=!z`Q7CHeLV_Lh&0CSo8}&==DBkR9DgD7pzJ?; ztCY2p$Zn_39LwXg6d)9vE82l!0I$F28AfmY;FwLEDBKWXhKMX*Q|_^jDD1!(Jq^!! zjCDDi+NITag=|B2%|=*IxW(`y2Hgl$h7&k|7KN6Jband)DR;TMzV^})F89kUHCLOv zYrHgJi-Wg;4<JWdXJ3xB_WalqVx&(O`6k>if`np~r=c8APp zYtOK=M1oz`vMoO!JoE0@0n;ie9e4nSiA7gGJaN6KNmy2y--{`-`ACY~M|1t)+4{c9 zxmCwsD6UpC_J#`%<2@P-7`j6a`}<_)=F9cBv$Un7?42>&%2XC$J&jkZ^bt%he$X_n zyt}WCfyYtoGp3UH&ub6qFqHB?m2L`lwbosnu?udRVqCYM;J6iLy3q&np+e8tb#f>} zm5w&T1K|IK_3_whvKu7K*AQ4PDnT7AT zQi;=0@?(9J?#RkfE6ya^v?tek>SEA^t0Om>D&Z-QpAQ?=|Sm zD5-#&q*#Ir9ot=?@_s1x!M5lm+<9zj>hq@M;(-tUGMcf&V@kS{n?v%OCBXUWY9Jdo zE(S^s86`@znvY))EJ*!C!c5^xS*-qqSh5 zz%|V%Ikwl)`zI22-lZ&DRd*?KS?g3z1EA61O8o??(C+eBG_;4@kIa!VgMwG z`o*$FFwH&eoKjiSD{k*3Rb1+jQl`DFu7d1z{|>-?9&N+x2|;t(9L}dLEG#wG+qdc` zb8j5_`LbZS7$~tVTnpo?Ls>L({3zv%#tTwLPyHwWJ6`9@KTDOh!or!}F-k<#KG{*q zk)6Lz6euh&YL5ObkXSSJ9eDQ~7S!2$0oM~M*70++w(!IRG%PRMne$L@KJzLReNnRZ zrCaNd_E|$#32qN0`ziIJq(dYC4K$0XmixJm#&A#(J=bI`(6HNV@t(`AJ3vALSJDo3GLHMy9@XQ0}P?l|(fy+qjtOml3RJUYxJ)K0V(#8;ha6`c?R}mBaF-4cv0|ZK?_Il*Y?E=Q%0zbzuc>%5RQt zG57xrsRm|e;N~&V@HcA&pDZ4Spb4-Zf%`Ll?TjF!=&g6kP|G9z=B+!OO3?9sl+!4+ z=dg>(jS&Jz^TRw3_Gnrfisef%#do>iu>0P9mP@9T7*)eV-Gh)UYYyJwtEksaHMDWH zUYj>Dh0yK-Hi!AUuV=0Mrqv^Kb%)hvLA+0-#0kzOs1nnR&_!BJ5FxR)w!%*e;fzZ7 z?@(q$dzQx;kjMX(G=Wp|0U@I?)0xw@RZ}G)(W`Vw(Des0%)yt+X!|(s*!y;$vHDUH zlb>PI{i2$QVdly9o9(nFhnMmg>6)-!C+@l%$_;HFE}lbGBDoix?fd(~PUvh2Kh;I- zdO{T2tyHq*hy!Sjr&Fr};l({YIqXuaM9%&R$%42YgpsPuFGR?r@Y9Wcb2(mzMyQ^0v>ic_ycp03t^ zVU)jN2;n=+IkQc0y5=$j_X;xo1>^k8KpwyZaukbMnwY0D;r-u&(O#{Ft8oz6P6TUk zLY74$wdbI;6E6;&yRK;-z&_~Fh#tUJVq7Ip!1_Uax$y{8!1)ZZ@QjM)wI29zhYCG) zv^2MO$$%;xkqPmF&94(s4ydd)cuLYDy*9XC7=I$tsHJ+@FUni_u|?1HTpQ2nU>Z?T zILT_|Ba)`(L2QBWTxPH~R>|Vkw~o|>>&fXKN~0(GkuWLYJ%4p!i;qfz|0!DP2^OpG zeQ{{_gwIvjS!L~|uRHR$9kFH0hGDA*LviF*sAmXTvw}sF*8YU}4Osl(X=XHHX2y7o zy*Tut8=?Z89AqIG!%t&Rt`np!!}?6Z9uJ*>75%D;>t+TBv~ zuA0Ky$E20Ly(hX5-QexGij&^9Rr3@rWa+m0&!X*=AV0c6Of%@HHjkg0LzQCP{{IA? z*dBIt`4FeURI1Y8B_(%9C16E8hFN?3ojKZIGEnY%K@0wdPk+XbbWZsuZJ3*wPWTh5 zaEH4mKr_7ezaqC8jv2~X6D?_4DTHpF#niMP|6iCzQ#cadYFaQ)oD#JEMu2;#C4qGY z>r5?*7+|Y)N-mj5NYU+G{d+PygPsx?1HIHv&=AOtz(3F3`;mFxwFLICltacW{emWB zB$N<80M=}NhW|C|pKyAtl4rV243m+`jz3G&jmf@6KC^Y?enk@q^$tj~8K|B?fsPUd zCe2dRC@1nhUhWLXUKKMP%boWj$U4;39L>=!0uW8!h>$23lpR`YnOJG$+li-yw zoVohu=`FTn>|?SqW#2z}^-G}LJHk1N5&S--%$I>xa6ie$TuVw=yZ(_oUU`7Pa)ug= z#sN##-c#}aAmAp`mxMZnhzr2%$b({xQF~O>`EE;XA6u1K071v@HQ-9c! zo#1-@n>3B?zhJ68LVCzS8~z+;1VFVF2teh-I$5=h#63^v5Z73o z1NpjrCrQY8v51(QJ$eR{j-l4A9K_r7qc{pRo@Z9|mDSMd=Y8OprXIukY-J`1^Q|On$>>2X#Fug!OYZ_Lqz0*BKV|v>2H~QCt^hV+U6YG8e*f8Gx zGcc%r%&xNRqt(|7hWh_OZNIPC4 z&$I1xJ&Nt#{(iUpvcdl}t41_ZTSYPPdkOXM>VG0Wp&ZG_F~TP<%N-xM4TQe$Go-R~ zd#Xm7X#k1XB(iHm1{=W+(j-jT^Z$v;A?+yhNsce1>~@X(&?x%`auyKP>RaxW*Kr_| z|3l5}F4tk*F#Ps+#p!BqQUkjHW5zw+czo?O%g=$dTMz&g=!N8p^5xW#xM>U3hUb4i z$UzZ)rAvSn!Ak)uY^F@N;x6cICL!d@EH9UC8z5g~^3C0GWa;iLAi`uvk7vdCURs=! z@u@-4T6a7Q$&cgs|Mb3=tlJ0VDR zN|EQl>Ip*Wd?3}G+U7B4SU3u^pg_bAc-M0H?00xa?~;awu!ONE3A1y)`Y0MkA}-R& zSyk`wK@PyuY(Z}@Y|b>X*U!L+CbyYMi2+&(RNu2P$(ZMQ$>TVjZ*sB$u=1#q!;`Ia zrsF}QH7RTVL!Gv?&_1T=D3te;fLm((m2XEB*cos5y=GSDU)E;nhUauuJVGv%1grw? z5X1pE@MGJVZ=yijKN3?mVBZ$s<8=SVPn_rAq9Du1K0z9-fCP0DpWmVnYJpN&QL*FZ zWN9tPGSzK$G%)KS%*OBQ)f7>$v#x?|sY%R3B`cy8{7F%shG_!9OCyJnjI*#NX*`ld z9U=@$fQ-b2N#fSwpALh+y$@qUdx2=$r5}Nk+O>kpsWp|13)Oo4pdy*X-GcPZgTv&v z5)?arYHN2_)d-GQa>l}ft(Xz1=Hv+MsWj?JTKl8jNlucg5)zYnVaHn~wdL$gv(Ls- z&sMennN`%5iU(us+grfGlBTjupqRYeR^Gw=F2AGNFSneHHylCKeH%nxbAc-$g8eL6gt1z*mGI{LgSUh+bl{d&`^Sc>j;XPsmFXPm0&&yHPSP zO@B%nKLDN}dZ2O2d=Zcfc1-}p;b{vz= zgGsKf;%7*>mIpcBpB^K6iHB<8bF--wNf-8SF>ycRtUKl0|DKeq><>N1@h~znO0Lgv zLyJ?8SC>1%#&I#$0ZT2*O@+4v1{d)#;F)R+IvJPUfg!%0$FeG2&Gl&6iOG+NP9dZ4 z+Str>_ZAcQSvrBR!X>Y~tnA%34ee*tL35a@hU9(S8Q?JTdhB-tHdAT0As|FOobB0buq+tUkmn_GNsur zutBJ#8v_w;SaIpP$S91T)Fh}F@@}l>uu35oAEXU@OiQ?7N6ro;m^?wHeiP@aSbE-B zbY*~DiPbH4vqinAOBzAV$M@ojH1>H|a1lSlgNbOmnecVq$!r-*?c`rlHo0jZDD$!#v@*OJyEhs|Wi236M`?k|Ig4 zR9^?tK|-}0Yjhph+)Z4x&L#81&SMEM`TdN5Z(}~>IW@z|4fh?k0+bm)5ds8k4C9IvHnuV zXE>;~|9kW$r7K$#e|2$;)3#Ea#&0O$5SyiRXmj6 zZ#P)s_|zpH!GA6Yy-=c+i>74N@Ssb@uqme`5#BL~vZ6XtZm z&ZA%R@oL;{?IfYRe&X1&_*dL(Sgf{0(*cy)xmV1~OrT)`6(arRJl6 zrgx+_TyVpGFL>&~Y-e*eh{rNlxyU!{zdwV&wkud<1t_92Gm(YMTXJG@ChYI`f+JjW z?E4-XN;v-`({^M*>O!rCJF_ENUzmDCoMfAw$d`4hZRW9HCPmVvFOEC$zQsprkP8ed>+cx4+0d+u<{=#*`7Ei~z$@lBaRQYLVL zRkD)z_(r(7g5>LRrypu+Dj$cI*-_ly!bXBiA?BiSD_6j zgK9kAm49rVE$Pu-ZaSe`Nlt= zlN_-J$A)w~9bIFW<~@hW2-jNsqZ|sfjghaPY+>^(h|l%(?|kJ1xr5nyhCwcY_rvl< zWDIRk9aLVXH9AV?TLiW{K>o#5{^+hrn}hJuD}5KuER`v!B+}?%LxxoOvShS@#0yNF zZ~Qpdh&PV=xJsJI;HnOGI{n?&U5*Bi>1Kqciol(gl>|+wbFhY&j$RZQF11z&6hb(| z-1N6~XkKK6R#%%dG>EuZn_Vt=tb&q?7VCG^`FJ>FmJw{Sun!u$(1eK3?xqtd%g<3 z!v}41nVKl;Y-EyH{U;qoS-!tw-F^R`@41grsGra?7lJ>YPX=P5Rxs|U*@j}#K<8mz zO&kFNmXr0dt6Q?zXU1 z<@8qoPK10u@Ot5l|G@I}1?OR)#pja?%0Sy@#GJV1O{M6%hP#8)c|Q7=`Ebzr<+dM) zS}K4mpbB8io6cVmTIJtTQkM_-(VOr{jds?N-t7jPT({c0thwDfg&sNv#!!iMa;)uc zrvImPV&jS*D&0GJ*X)s8Uz08RBA1YMRsMV{C1AXI2jgsMI$DIxUp8@$AJStvTLBHk z^B+Y6giA4`3=x5O3w!7>bQ0duG*V{&j1NCB=Dfc2aK!eCaWt&|2IOi!UZQTE4&mCl zN{aUM+g}J93+aQXy)48n$6&h#MpvPl2oBXdKBlt_*ThOwV)9A!p*7k`XOWfC2I$@h zGv9&`m#h)Gz~2gU%`jchFAzH{gYoUriIgV?%TU;DeW5!K^ncPi(-eQ%l+7vnZ;Fs2 zWjOoGW`SCxAXwrooi{3BGri|E;JSxO;%;yMjH0E&P7fZAN8li&Ha6C%J|*sOUmASW z@s8j~xy%ug$=yRnl$L)-HR|}gZ5c@htuc}X+#^gV73?g9;0XR*88&75cZ5Bn8_|=R zJ5T<#7C$4Mm-I0 z(X8PK7Opq#hwS%jq)i8O%Zx5m?RB`SU|K0RpWI|Y1O@?I-%pnTs3#!1hP zU@{}9Lrf9s2Z}WN+8ZY-{;l1uZd!7ySUPtH8KEjCBaHc<5jDDq3xZi$B3m;7`Xghxl`?wH83l1QA|B!7nw@|pX z{LlPO(w|2edjy@d;B93onukS|xpzRrg;$Na;r%cUXV%3< zI8#&X#sezBIj9G)4sqbA#b5JO7RZ!z6INhr>IX4>mCEbSX9Y0@TVgxe*>=W7{f_?N z_ov!Pn*-omL#w!}uJ2Yzb5};Y|3dMvl(-2jsmz($OiSk|6;l@@Q}oG;Q^}UI%pFFz zR~~`3*|T6w8Y-j%PM@!*;!k$i#^H8kN$%F9stpY_TNh3KnU5i#K;Hs#yQMA$a`SF) zUONFL(Fkqt5z=MRIP4C5hDsyZakwPVYoSCm39S55R`ul9@oV-UE=3*6V}u1{h~sA~ zSDBU6nOqW&esI`?LygzwYKhNy(|$MRV+%&IXlF2&@20DF9AIICLhaieW`!vg3bpY7Sg|-Ju3g5>KaH1NS*x(9HlAe0bmoHF&7B z6eo{o`#{-1$|?>d#<>3fv4x4vPT!%ybKGvQ4Y&cn&;qY_1L%J6%$kdmncER+e_F1A z>!SpRg(7#wr8~XTkdhNqE{8JtsBZX^ocZ%uXJHW$R|`CV28`;Ye{AcCB7sma<`^Zb z=4w3%zRY{jnNyXn4?yHne>t1Nw-*(*9J_&NMn2x)LXvv;rvN$dFir9J|GWT`B5`dW zk3OUJ`c=hW(M3AZ)m7x;sHz*sZ1@AZFB6D5{PK)X9X72FcoJDpCBd=mK?21ZG8q)v zL1Y4~`$>>uxd6BwB$hHT2i7X9D)o;3G8LL7yPIa1)KkD9ijjtjUZ=HUKr8VV**Sbr z)R2h=UqQ)c^rGm}K)!-_2M(PkYekiGtbqk!DJ)q~WS1SEp zf*0egkEwAb8ub^(HT6%V|H`TRnj`kWE=L%CBh3>p_kViLG1gsSLg6YzDJ%MyONI&#}+a zOenHfSih$WdTQESB2%$(rVYh?ZaFiK*$Rsdn~x$5C}hlSrJm%mo-0*2!)V+Q18)_4 z435|uAuz!V@-Ws_8b49T>GB-nw4WZBnNWQnbVG`hSqHS%eEjbdVPgE4e?#+f z#d5r*@0lvpnb|mu2WigpIx+?TTCtZ6O3;|7SHx)HD*cb?7d0QiPXJ~@EI1W`i!TSR zkGg5x2`pr*MLmZ)pJ9>G$a}(^!zItJ>Ss8V~6r3uNhmy`N1M z?rcF-5^ENrags-b$VARsQ*C+c0|+pw+5!@BE}b0hAb6<%OrdC<7=Jj;2FI{H;y%j_ z4&_OPw7*|<`E}VM{E>Age!L?$auK>iQF-8YayeAU`WNHl#iLRnf%;l`vSs$6e#t_n z_%aBf&tNN%HPVW%uw*`D1AEq^Oq1?peZ0OQmwCFQ*ynd~Dp3x4e zTBAJ{BqGkQqWE6b&hgaplBhZu)DaQwu4eo=p^!Qa^mOei4i|_pn3i-8!0EPnHB`m#N zCD+bGyw%r#q4B{Xzj2R!6I<<_&B+}ZguDxwkA|9@zZxBE@#Oj$4sphJ)()$J9 zgnyzvjWrZ1Ea9M`Vkz1X9F=R|D3SE7K!rMP6@YWV^oN%vmSNUoKI;ERP)g- z+USe)hd6zeA3mLoTJ7mNj6ZjHtXgTwfdvoR-Sq#gZ5b?#_M%eDG!4{NP&i&d{G~*G zyK0K3v&dJ~pzw5Yz{HG)C8uRvC=;wdk|w6>Xg2!z%j6bBrcaQiZj}gk zdL{qt+eOmxCm7 z^*z)m0^D>*Hb7kmHWVfJ5TFM}9!jt~G1YlwA2gFQK(h$jB`Ag)kTOtW$6!Ipnca=p z@%qZvm=OVN9s{jw4@BT4qCPc7=kB!l-}A7gi!DiY({xa%@Q3kL&A!J%-s(g|AlrR2 zn%obd@v9+PKL#+8=Y9As16BJ*9CDE!{C7gH-XaDGBs)kTnb2djebFQzO$woCpyC+6 zwT#h@yGRQ8p^gzzTdmXB1egylyy}smKG30*@DTjxd7pKl^ea`Gn-1vAJ7cV?@EPMf z5*i6h^`8(MH;dI=q6Q@-Cb;54&c*HGRFc!x=vp<-8utIe@`6P?BK#-NIP8pP0o+gl zD0~y!TB80W#*AYhIVkUzZmmZ?0*c5XC!mJVnqt7 zo*$V4-+08l9j9B%{_`4ul9zZkVduIFIThVy>wXI|RL|oVihYV}7Wcv#2>lU#MN1Xq zmsBzQ@OM}S80IOu#FOZdQpOs_01|9|hQXO!vXup57g43U+iZ^fJsX``L7Kdan=vr- zzSo`;K)&Www?ELT19rY6k~mb%*$JAjHAlQj8rPKt?`x!xqkT^BWRos1TKTV^{M5H1Y-7K43Pv zJx?Cm{X5^<8*}z=RX*4~1Bdnj^TZ(GO68)DV(Im$ zE>)Fd7PhQ||Jw^|0~VQIs^?YHr#DKM5r|!LX29jnHb~Ly;panal^c_mC(bbV&@I`s zN0#h62$-`7|B1AgKjD(c%DbV}xTWP-`=r^b*hoV~c~U7y$GC zc>3yqD8BdWp}R!7K{{j!k?xj|lul`+yB6sd=|)l-=>|!qLusU>Te{y_KHuN__s-tA zbK{9~&U3HW?7T6ie`njY$;eokqgcEM?aCx|l!zs$9UBs2r4Q7(lG-b#Kxf3D-NaPb z_t=D$UaIFBVi<3k94M!1m`-oOiGdj>rep5_H{vt`G%WF67oS{{3DftBM7vEA(Dy$hY-qf*(ISfr6+4tPx1vMG11<>ut+ zrZ{>PuAtkO?ADo_dhUgoj+@&>2F}J992&xlB+`zPgb;CLD-AFh(Fdxx6i6_A4;clK zf*|7{b7-EKBm}^-%QU@>jy_79G7Z%P&o7%Bo@50mF>7S!4aok!bzs|O=iTlLp|Lrz z4j;{H&rYXX_qk^HrBT?s%~7?e-@KfW;wch4O!m{W*F4GSpM~l-h@(AX!3T34dpG%? zS69!U{bH#|o2NKOY#UffQ6iif({-~NABTL=5u@$;$gZdFOeX{X?io$3NW$}Pufgzw z0o10@ZVFu;OPY))DrDUmV>?TQkcym2ZtEkGdWDZC{oQ>W4es-wih=mq)(o-&sJPn) z)o2tZSUZJp!5i3>=$j|k#qkAlBbWYFOciZ(kubjbjcOnm1c{QS|B^QyuV%Q{#F>0$ z&Pgd-Cc>M^;+<}h8SrrJR77iuROU+O*!zua6$!+AXF&f)t=xjPa&E${^vnaS4PR8Z z{dz&~LY zZTKde=*>dT$yCqnA++yNS^9e%n=R^wnvj1l?AuK|S>aLkQ1|(~|2!QuQ&3_Ok{9Z2( zvY|&aU+4!p!9w7qt4+FaBTlR6GC?=RQ`|2+6&3U3ISJSSyaYevFmqgw`6>jS=F%w) ztOvT>CcU-+mStV(^0Yx=%OMIhp7649k;zCbde|=NPRxYn7np%V_D641HP3x?K^gF)4McHNWP+ksgg4E=VLJ z_Us?4SEBA{-tOORR7A(LEC=11##>hepmN;X*xY!{sLeir7NA{G3$dynvHJm^9uzca zQ+5b{ypuBse`yKI*^r@NV~v455fliJH~MyCNnBdf8UYwZTN1wQR7A#s#jjCliBqg9 zep|E~Q(*Xp{G?q5^~3c{W>};=Y9793bJzo;#Nm>3b(DB;RTQ-DphEwTRnm~lCprtT zb?os@Q1a}Vm)CHEfNYhl<4qBKE4fi*XhBS6+8hMDubAC^$1AA4T+9EP*aIUkvpaf0 zMt5=90yHa767{>YpE6Kc(R3Z*rHYiI&)ui6s-=2oy$z1|Bom+xwM~uze$y48CU^V}}0}A`-y%~m?m^m{`GK+=~Oq5Wo zwgBMXsL=K5heRF?ZBv)0-L0~A=RR8HHO#`~#tUE>vVr7|QZarge7JeBB4S%|eBwVl zU0vN_XfTG4o&4hKtksMHywxmF9_9iV-v(S93UiclJtACf`HTYGK{FhiNWTv4(XE(f z4Okt1U|K}Zx!LMf*q1HY)FQ&e*ZC}LXzT1vYb_wLBDJ~eRInkvc#o@Ct0s0(v>C#W zz`b?-@X+NxB}QT)hTL&9Q#MnUGMveO>X*&G-H!Neyq&KIo~lF?$*--GR zG^--Du2^c2!#1?>m0398gI~O7i*=`!D$N3+v_F_eT;s zb^_NzQt(u3ul{^)!`Ek&hBU#!0&pv}4m0*sa~{l8ZB&(o-?5`RcSJoqd4K*RfE%T2 zyP#W+Fll^+DB$x7a(H%HyPLX`{&wz|UTVM)b^Nczq5UPK#HmknqwL=!x?cMZJ8p;Sf2kgSpPlI2b9lHcsyz^wOFtDQVy3xRgU0%||S>)COUss1gZ@ATKX#@{KBvRy;}!!oJW6vCQ_>hY2|lG6uO+h>NsJ{UCl1pJc}9;SpPU_PbQ)l zkESR^w9py2xpXAel`yKWVtB`VvgEd*ht6|t9IB0=rf91_6gg?1ARhC_fp2lEmfg^w zk5i@4}Ry3F0Xsn`p6RbTC7Y_b5CcqT3@mKl;EoxyTF5! z#9pxSE!vH7V#YChY<>%YFqmkrbEm8F$GdAf{ce%$FDB!1l#6pzw}0)~+bXJ zzh8Mg3mb1dwdWa)sdfkt2GMltm*ts*w>|&9F<@m~>hKq4egXG-96jys=i0#rD>_&C z4Cm?NHN`eDl{XtoG2$K--xg}%DB>}CJn8!RZhKT2OC|dswYHZ57GsCg+!ayjWZU7@ zo?AHJG482(=jDx$x2S>2kgFo_V5qwgl6Z)ehGT))%(14%QO-n9X_;hk`7{5^k`JV+ zuKs7^9r8M}C>TmzCYNDcj+7w_$$u@s4DF^zqMN?y`GO;T_iymE#p!A9*Hr!!Ka_J6 zDBjy|5vvSUc80kKsPCqa)BYwlpk3iU92vN+bD@DH!hds`t?=pcLZdYbl5=;$;O;hP zqDWKyf6r_|XsEEJ1g@u!2|{PQO?D-HF0kWb+e4t18J;_Fq_!otHq%vi8&sRhvhR)z zU!g!K1=lbM!fp~>&7$eZ4ue$WU!7B&F*Hw+fHx^JjlXx1O~a1a!@`G z{_4)N_@mk|v|H-g5l&ZXma z+Otc(afoWZ-lxQy@$7cA`}NOgR;FfSw>((u{%EdgY2)Zq_5lY|Lt2tug8qmCDJ8Nm z1Z!3)DJfC{>4ejUQgw6>yc?Km_t0A8htl!3{b{Gjw|;OpFrLL_&;)W=A@8(!=)iVk z7C#D$xGz7jUX2ihu~*)?IQH&=2hR|5^CI*+Rf;|9g7xYAfI_Y>_7jOjjr5@mcSP8d{8O0RQ_JzQ_CzJ&z5aGa9V!4=k5TlY4pQ{Kc z=gL31DH%4SEhy^oKQoS&ET_%}Y|lX(5UpHuO&E@&*GjRD5W4b)!_~W8jUZy{clv!t zZ`8~xQxE>6;ZktNhi3~)+}v8qYhJgz6w{TD+W3))b-#6gXULS!1sPycjwW>$2>gSD zOC!v-%`tv{gH)X5t}8WYcWKI5DSVe3jFyj`+K?hrrgJdC%S#Xzt2Co#nCj-R^+@oF zM|j|y)jVaNYZ~3aJNCk-FOa6!tkfpH;>OORtEJET@rx*${PphF-*_08#{{2{sINvnnvezN<`eJF%>MoiZ zcs^Sem-8LCIjb45mGLyUcnET7@UfQYtc|r)i-IG6DO^@Rp1Quf?*Il+OpEcBZAiz_ zJ+~YP+JuEV+|zao$4KFa=-pu*1~vCX26*ueCqRn=+0_OkLkkc6Si6=2%%w~qE0h_G zNy~(8Aey|TTeN8OvP$*f#t%jz!w`?WlG(DmoWw&2!!%c;g8x+-Uth zAUnM76+BR^7-!?gY;duIF%}~*vpIY|jBvcLB9r)*la;HXp!7}}QNTW9tr&-r{7up% zcvz*@d?7Rcp&Ph4U;K)AzE ztEa{@*6{xrf>wd1rKd%`x=YFTz3c+pG z^%$B?@Q5Hm;jPSo91Y!?cGL4#9RqK1j`kZj&O$svb&Hvng69%)U-9kPcy0atBG;oy z5L9*y36HzOEg7T+L{P+BHiZ(SXuX? zxa_py+Hj#u%k2=n$M5l5917bW(p7lL~%$DRCGN;lAi z0yIbmTn7Lu@rJ(|P~V^}TcK7Cv(b?z7!qi1T`Ria$9&mjJJ~*yV`$yTuW-35WwGB@feZ zyzL@fzh*4C+4ONoQ2w0kBOKoY4>N+`o2g9I3#GX~A9)s@TeNkHr9L)4^AL0vs_MOr zX_Uk;>J6?<_uRQ;_%%COk+e)uAR9ZC`Vf&HoAyJ|{b8I_)!EclA6twY{;N6!@8Ki0 zQ2C^M%vZ~D(rLbnHcJ30?i5;9a>DFVZ%_Ib(wug;%%D5IG)R>zRoZXw6T`VKUGqUF>N=DH|qp5fo zta(v0A6SjFQ$MIM9JjKgyXNx8>R*<}6I(l7E*k(c_?9-FIg@qqwv9AT6c;y1tRd79T!OP|t)km}s3c6(o zHR5)mP)%F0jHiM3pLzORN9OV9iGFOjvkHubW)=0XGmgx4vYK>#LX%pI9;#ECFZ)LN z)Wd6TANQ9EjTRjlzYDeH-TEYs@hqBfM|KdG#E41dauJS`xOyf5;}btTOWX*6Dwn@60IK@k52;u6V1(fkWhsqq(*KP7{+X4TU=j|yD4BNg zXjs~;=*3IwY_DLzOV253??C#}{pe@!5P?$DShflBkGl0wg*b{>^`mmG-H+rbUUe=Ez^34UfuNeO(No#9CRJ}-xgH>n%i z#J8!`lUclOBQ0=7n(sQhi`dRX04x#H6~s1ZdgkYKLyr#{Z=(B4QQ1W?%s=jwPNql3 zCBJtUR8H%-gzKf$uY!B^p=n=%@BnScYakdc&$@77284R=*j#Dy_6pf#-EzztZe5sz zU_*v_bylo&+Y>Q>ph3A$=ZloC`_Mi_vB|rPINpggG;0nyFGvjgCi?AhWdbl1kudVE zEa*>ar^P4KD>zUBh{)NUST;okT=xD%QQ_nx6C?p5=}Bj zdih?NT~`UX2zvoM()Cqv#1sFj6vh%YTL1kk7F%|h{{uLl1U$lf5}4=?_RNa59j#cI zwnY?e6%u^EWM|gb*Wd8IJr;fKBE0|bi?=-;|J(gKnO$!e zebU|o>g2$kY&5UQSA-xY@z}&4h`A@xrAPmJ!-G?-fqVZYkm@;mvm^}0S|SH^Q?zn3 zo9k9RrQyaVxc3W~7-YI_OZ7!1L^|C<0SKz}8v^B?!APUzbVe*R!Jkx#)~2;IeI?6d z;ExS})?byRCq8t@z1au=zRR8n^-70D+mvxk7QRdLnoIuLjrb}8@K&kq!nPq*zE3am zlAvg=2+yAz$KI@?@g1kN#w($S2?!tbIve=77ioZZxCi$Yj7(4hd_q5M^8br22F9Hz zZ=--`g&y@0T*z^3B`lpq`x!Ouvfd_YgcsryBWg90*cul$=#BF9!Jsn~2w&&ziuyk- zz*_pb(YMKdgjxJ9(-u~I#dVbaOeElEbALYYN1%Ie4~>U^18yv`HvuK5po=PZ=i03E z_Wezj^rdVp62%Ezgn|A&32#rn8HefkqS!~t)K-p-6_W1ORHreMVu3$LrL7Lg z(A5d29cq2n_R=JX2x5GG!8~spxcJsLJ4W~y+RvEoYZ8*;Ed>5WAE=?hHUxHo>+Q{X z!6(G-2LSulXNSR$vpis!8L_%}x(TkUIHqk91@zham!GfTPW)zzE3CXlwEqk!kQr&U zukL~7_oLdbJ-Nxs`eP+Jor`Jq$=q>ZkT?D@gRThSl6JE93%{GGqI)Fk={+>hztt)? z-F3mmv4f!wp00};@Ro`WHidU^ES4*8v-led`rYQf7wg@3e9IyBfWuN@^!WF&^3u+E z$S+hP++zQav>YiOuXzD&Jz^l%V>JOO2lL$Kjk}ITmH0 zigi#@rH=49KSdM^x(L0**`soa>_3BpCS-Va%14*<@m6|7PTJk49y7;^=pmvWrx)>? zuVvoEfV2N7)%95Kcz=mo7T?E9rXR&sPQ+5Q5r)(t5aa0zhGGe)%9H|KTii3i_EJPk z1d5owBx(;Fu1&<-q39g(uk^XeX%|7BRCqQzUkFK$G|^GQRm<>f{Dwtkf7#yl*xz1M zEVlffN@g{3#A#7$Iw-TCeBml}J*sb3YIpFot^<3&&a$Q+Gr(tj^5#`omr1n|GHP=NR{3pt6Po2k2gn0J^x_E67Y< z_DWtqVaevK#?V#u&S>}vpKSI?|MNE!jdOhM@{4O?jal!=H1%sASOGb3?IEC!ec8Bt ztnb|`BDoka+LX1=j>MiA;9c^JS6X0OkwYP(z~S!v`$>#3_}J2inSLAiURipl3H=~# zoIf0f$236E?xQZDv5x{6ikjvkWV2T?2T*h4&-=gk!RnHJ@J%&+*k1X_VgJ3wJN#Gg zXPX(us9IW|+LHDGv78>m(^R@KPja9^#@-tk z71C5YXzA}1n{j$wvufdJDX6YpEY@7(hA(kd-}&j8D|y7kH;+??>>E1*B>LZ#@_>d( z%K>xO*hwuaXsFHBycqi~{)Lzc-U*uRzwag})U3>d`ES`^FD=SfIjlh2A&Ae>KoQ!E z;?lMUVVD%?O83<--o!MQnLrNZMqt9k-jxxu_C>xzb%2UBVXU_gfN+Uj{y$<0EH+<8bGHxxq4FZt^sL zWPyZ;O6Ce@f_tuaVFMh(aV?9!f7OSjLQ;$!IS!8m@aYN4qHS zME1B*_U;*=AGH>$@C_5iW~iAlZUOJ21afO1cJB=GOf*>1c~M?4m?Yh0R#A7gByh{% z53_zD*3-6d!zUhan8VJ)C6CUt(55e#!^i6tZcE;+_QdyGqi!RAvHb$G z|JdI=-Wcp{4vAtfQ#4vFs(u9jo>?*sH&Wu2$ra@otTyyKe$27YQgiVKgG>uF*T;44 zb4EDw?d|1+z{bxt(WKT+py?3^T(g;32C~V{knkT`K$JbX`z#zH#e?%;*kNh7JIqTN zcSPneljw~F{WI+G@b%lP%BI2d3vhA!EtO*c0(X?n4sKD&iHRY8CkSh|oYvCDuJ)^j z=RF8ZzT8~gUkNE?biVeU@VRiyd`*Z`77xn zwXOk-CbF&^IG9Q*uki6Y347mvU@viQ*X0@V$IfjZc@Vw6PErXmPz3e}j}m~arRdA1 z@1DPZb+5qywq{!V>3fmAR%+6K***VBCEgDbS_d8{e&Ce}{|Mo?mutjA#(vslXn=9L z=y08|a@Su5!*{=N59{zhF1i-RQ!W>PNtE|ae+(j}fe)sb!NC2-S`S*S?Tn%#25i=h z)Ei3I9bUg~mEfFRTVH3VrUV`>&1NeySiB}P?^{D<2kt1NGh&bD4WxvE*h)R*>sf0+ zcV#fwP?H7AEx<4fgA~oRKJt^0iSm*KFwWjV1Yp{(dfe&Oel1vI@4E$Uxd+$ycFZo~ zb04;TeSq3P2~#%;@0C}3G8$_@xe)bIqZ59OO((*qWv5OWVfG3(FuY;(H>20OahD~Y z0@!f6*OVvyzvk@x;3mX91&@63P+btfRY~V8{@`Nz*o1-V8a!lqmt9C{Nu;gWcDz?o z6v;)qUQReRFT)YU6;YW5rqz%&-^jXPRGmXCb!ZR}uv>*a8DAs4S#{td^wPwD9) zH!w&I`Sw0nPQ5|T)o;J$X!@Q>_>zfu%zfOUA-}Az{T=B$)QNvC2zfnGu+`&s#03x` zH+}WCpi~F18hZP-;GrZafmA)24 zG`mr~`TpEb@2p4~=tuez;m$oFU8uQ{G^v+S%(>J+DCRpbPda6187ruytBpFL2HFIC zFu&d`Le=ByDum-;$qfHP0fPr*E4S$L=x{uTg9S7BW&B|Xhw8gOuDLy($Qn723h=g+ z4(bt+;hCiiBuG2@ia7iSd!g|!ZDofbl^lvg{wqUgqmga=3pS}ihr8Z&OUPwNjuMv3 z&MSd!uAmPYsd|@ifQGcaw~$=mC|2LkXWMtttGyHlb`-Yh{3^Oyu;`y$^CWrA@4Q6> zIob`5WB0Yvz~rfNXa^>>fA)Ey1x8GE8gIu{-3l`qAof)+$phuy}I zput~fJ0YtV)I3ossl|zQRqxn^VYEosDKd14Vw=_Pg-hELfM%iB>2^P62T1^Y30Cry zFGBJie{|6ZgIwBj;4)&XHbwJcGz~)7**Nc!4}i@3EmKo~R$be)u!?iU9SPL|F8uX; z82)xpgjc^MzzG8mpd1cAQ;b&{K9@#bgG3PPwI?1FE~fKSiuWs$00e08_N+Cv(DUF; zW7-=@C#Ak;J82J!e(=c96oFB`JibCr7{U~6q|m74Z<)UN-q;Sq@omJaLdEN&f?2~+ z{dF{WOI}2d=U`)e`i@}G(5+PeJot-JTPIiMY;%i6JqT&=$D%s$c%(k>yMqTX4}{O8 zXg|zFPr|1 z$HhXDb9QR2FbbrfdbB*~uA#MaY=C?`+I3M%ycX3p5OHssPu`quM|+e1)>i*|wxw6D ziro|sil@}(l0xfVSz0<<%h{7Gr}_}>vlUex?1u`NtZr5Sv8RG#fi4QAER?3un~R#x z+1ZtDl+Ic3t|MU_|1HAx5d1G5Ax*gJ2gs|CIVEF#5{Uy4$C*&d_mTl&JUXnlR z>CH75GU;ZZhn{QH<%Hel>=EolVSZDUyJHGL2kyuRm&GANen}FjXl}HQ^uNibpS|S* zJfKmNaM4I#^`;nKT-Ae&+dv8kYs5yRk}r(amW&`W@N${FXb>G@zZBgkY2z;_|- zG{_I%>8szq1H;h2BxN$#Stn8&S!Cr+xkY`L(t;?->#=1d+$p7m8tgkxP+s7e zuuac%#FmAV+ZtIm#0}(9_qdDjWH0~nA@S^uw*>Kvh_~NVpq%`u%YG?EWhXgWRSPuj z<@m?knJ^|I@+G+;haEE8;eq8$E(NviGTyIM6TnGW`_c*Se{UG!V z5B+g}^Y}$)O7cY6qNBW^<<1FsmujN;qF;^YL=_p%0mQM>#8gp;UcFNv4KDoR}AsA!1&V%Vqb^w zpxgKcA`R;JRk!fDtzE8yVvWK0$Vt;0zK8&l^@WM9WbWR)l$HLMBVK7x?;g5AirFp8}>I>sa_jEZQoH^$!D{#f(J8@}$pfpMF zfuHtp4hFRmTX|bz11eh&m#iuQv21wty|)0?bgPjlBy`9uzhTb_dE!ORpSq z^)d^s!%B2`^WtruUEpU|kc)n!iaxsR<@NKn+nWCtFY-9&~_ds2~CPV?LP5T|}KdmYyI zIk~Q zuO=6Z6YFHfGh{1qdaroIkNiAr^4{9+ZF;Z(Y#C3ugACIp;K{L4jUbf7Y5XG?M9Gtr zk`a$Xi`++yJHDrFae$kqG6$LM1DhSB8lfm%74~LUE)(`QjqQEGd=qWoj)VY}%v5zf zyZ{AX52YC*ym7wcB_6`L(%9RCvvjk>&rnr#H^GEW@~gMHN>3lW(@|3}e{RVMpXF;9 zruL}3FM770I9I=XJ6s(POjBNv;;-zC3XPRXB4h8Eyu!R3?~D&_%1KPqXfcyK|IFsP z;4q&IFK55$o!Z+p7{8~(@4O;bc6iP~OUNq$dc9%)FbaxMp&z0%2<@FJ3m(*kJF2rI zayG@kzv|*CH1~P$^<8*-_jC@tHn^r4j$nlZRLsBu62?qarQ1L`fmW$498f;F}`o zd>&PTkg?Eb0**&5jn(qKK3#wROgbY9qL`QG)%Rq57v9Pn;-zE`N}6s z7^4VRz;hCs2lC-OKs8K~^pN@9%zG~0Y!LwfwMCV1Q<>C>d0J*~KF!h2XE{ik&?hN7 zQ&YpD^4NBjfcZKjvt>`95+HJe4@v>u8XFGZNDOAQ!XKmzk`!@U3_F@(!WR684cQzw>yG0g+4nu% zrYoNU)77HB$BfDMzQ}AOn^{2=DVGxb0GqTtZ?JCX-A9SS0-SIksye; zlUc7Ky?M=wYI~*tW?9FWw^DTqW^o44+^3RHW;=e~kS>aGbk%f>5r)cYYs*k46XWdJtzrBP<|kfACrx%#JRSe~|X z@f%G~2M~R0Tcp!E@PRH6*Mk2g1-Qwg8QzNVaClt=Vgc3c-cwUn-k#3`U|hCxM%;B# zog=El z0xu@vYDWsy`&fO-&ezkO$=dkgTy7{7RR%TKAvx>?Y~M+x5F+pNt zvYFodm8KX0%01>8mddc&m{N&3J05Ee_i5_gybla3)2d3F?%`O@YK4YfUeaAO{I!9O5%A^c+w# zR}|AL7X=C+4m6)*tXR{w{7Boo#sM&4(w@K>;2r$p`k^{$jFCaDQ&gStHe}WI(sCCS z=8Ps-*wo-BO21cv)Cnlw;h^>wfc8lNKPqDW2s6i<78yZW^Dw&(0M5G0ar~a{-}uHI z0;pws6Yo@*=NkO8>h!H>rT>XV!R8aUq7V$0(}Eu$@y6bqxfHJ)vAL5Nr1~DhcznM; z$9gf6Ntl^NyD|lR5*Z~DVyvp7e7z7k#0=^wDEx1rkXuV5!$1*PE4&;!9HVvV^PZ`~4AL1dA@StZM=)mZyL!E$BdqS3-v+sUm@aZ=*T z7!iDm5eaHa@-x`-r>Ux&cf;v&Ss24k<~A3ZiIv0&u_qnc(0=lVkYng>?FXdeeuxo% zUYKGTt8<~e05%eKplY%FSA5w2DSCW|`9=&)W)PTOhx$wpD3%UdD%iTR6(9-8n2?pf zkd;$>vH{rn<>kYA3nOpd=Z;V*Q}?UW|0eK|XLS|B6h@q`Y2`_TjncL%Ohd4=G|X(w zX45Ja7Vvzg>4En5QL4n+Kh|-{|5mf>4`a*5{S5fruji-a*&u|YBwLLvfp?(Hr0-9U z<_5F9dHK4{Ze^BY=V>VjsWUcI-Dj#!^?O=qt`r&Aiml53u!wU#4_!e z?YG39v(*0e{QIo@=>x971GA0j*D#2`q8dY%@h0d&nrTc?T5yUmrZu$N=5t;`!MCUB zWJGf(cweghPAL2X!-_gElJ+1E$AqxW!OgZ`zE=8AQ|;$yh`51-X-^q0eFc3m>Z_WB>RI|gYP2Oz&9R5W`O$Km&NrqB=IkA``+XVg2MS@1dL(Njs>=nf^n6? z==%mjev}TTJq1TJ!B*&j%2*M{XqhZvkN$fkgdRPnT1rggVK{r~KhGYFyT%EED~PxP zm!%vy zPr62q(f{|%orSFoQHa*pe3#Q=v6RsNwHB1TII|(eIf_~6W|8aDt8?+r8b)@2J$?P- z*RUe)v(q4o$md3E6^#G&6b15~<-QO)GYX`jjSV3<(4A?PYM4J`8U*6 zK6O5C%6OcD!a1niwo!2pokmxI65M&gi676xxzXnPvAtDyO$xEzq#4|{*VW;6A0bFG z2jbG!#Y&y0QFt!A53x{A(IS+nv%6&iJ7X%J%s#l)GXr!B9?#tUshJ`EbjGt=&=-RH z@QEAz#80cIPTnZ65C7cQYLFdFAaSKM3ieJy;;nb@4pi%>*gM9n7D1u7(}k(>JT|?69i;z$_|&ld z=TI08Jl0py*pg~fP6ei40VkekYVBSSiZAFzQfZUA2f}2qL6uN7X%SBAnvtgmIEDE= zyokm!e>g6wKw~hiX_3fG4UiIp?lB` z2K%RJ4W^u+724jcF+5)r{Tb# zVf#X=)j76C7(P^zWx{SCP0C@AlkvYky5}?X_~Szk6BVxPK|ZiTMIL-%=O-U%nRxBZ~4^1L6rvHA-~h0J0S!Bww#2yU#pk`U{L(--4NSy`w_>|B~gljc2 z^>}}gdB+gQaYek1y?GgFF*g=(^IxO7O5fRT5&P=Ei=#_q%67h!zGNTX=8}8T2GRth z`sWT+|B)koiD;Z+Q`cf>e46kPbK&|)iHAlbrOGK5LUJKwnvO!!P{4lvqW@pF&czA% zs{oGIjV9>o|5;w_f55uD!-#%f(hpha@=3eKfhApPSWlB5yo^3cH~M078R>LREyf*s z9a2d+R*_$`nqc~0@6y4f{Kkh<7%MkQBVTw!z_2m{Z|X^?Q2L);vYMX)u7eze@|S+z_@lzg%N~tmC}jB-+}Rl77)s@(a_J%|Gh(%ll9+= z$zOCpWs*&B=HolICK2YLukrs4`h@&@3kku2y2rpS9Jp;}0yG^TVxCi%C1I7(c{G@r z_(tE1@qb!?iJ#Ax9NIOQy%V7{YBAXP(PLdKHUw?M#U1+d^J1Kc!EOp#oa?u1idB!^;q1=9KqO@37iJ zui5weS^NRmCj9ZvCGTXZPXxC!*Lt@ZMx7Q=K5f%Fd<-t1vudWegtQ`n7^RC=6K|vo ztooZ^Eoe4!G4Elg$Ag7lc`;ybZXhSGarwK5QK%(KY2m9g(oT7;6ub8pA4zVRYzkle z*WSnGDZJ^%lyhI?7|EWwrq?BrR`irm5#&>~LTjqZDI3=JVrEbM*JTpLFt9URz-7q9 zS%HV=Fwbq(kReAv0TL13Nx#XtVO!17&%Qq$QzLwO96KQm&HkO=70F;87F`h{GRF&Q zWGKgPyn|0TV*GIQm>g!4B9DhYm!TvtyI2dKI-R8;p4?uwDcwffi~pLk%L|B27!1e# z1Lu{t&B~bqQ7wWDVm7{I2%^LQr#2kh1Y{$B``8EZ<`E+g@MQYs(*Pa`yWyj_XMpd| zE@acDRI8wpGAx+-OTi815v5vrJOsLLGJkDghLYq%`nXPvnR=m|s-<+j4(?h$B(uOV z@~2JH!dKfCQX!b(Y%mituL1Vy2l z$~|3du?kI;ff>@eSRpF7Dl1LO3bQdQ2SS6p=|_ zz0?c8f)6!1@w9i~bJr^19La`X3(0DdsW+4^Hi9g)pB{_;1*=hnX&0M5rdA?zK7%qC zl>U}9BneN3fA<&6;}qndW-G1lQabYskHY&rX27(Nwqg)b75>;1s1gK~R(vZ!AdTKW`Z>WD>pnQHT9Y$({{A zE~$3JULsJnHCuqLZ%O-xBLNzyyzG!I{zZhp!GL$+1dr5aKVMmc~la z&9I*+=Lkx&s08Kj8;C&pUMU$GXmd}ult9R>M047Oz}5_o62X}1ul)S9#$aTPx0 zAZEPbGX;OA?a|Ex!M5id=BLF*b17TCSd2RU^>Rkg>HpV?w-Zs_Zz~nC$ob|CE!1Ca zDOax|_b>+}*~D`(2FD~kgRQ9$zl!(r5O<{kH+Z;xUGlHH+Y?d39Ihh*ZIJ!s%U?lk zH}Fi7f3MeE9wb|QR%PsceDz8_cdvNCM_NqKaHnHEZO4;V;LC}@<9B{V-gytX6;saC z0OW*>h|70B7S)T{L^F(<1LU%BxX0bt-oz0jSa|`V@=-`MRNNg%Cc;58lIy%Cx&}_5 z91Q7HQs5MqL3Y)w`$r=A`jjz;>r=cYP0JGv(1~vnWADD)ltf-ySXA6Xkvc0L5#^;Pd#UJPF(@fF2`6__i zLA`=uQEsWECjcpK$ZK}skgLU^Taz6>*2q21K@p=*o%trSA<(2hCA{$++p!bPb!R#r z0OcR4JmUGKJVsZarrXN<0rt`8*J*ybnY57zPHfD*fsQr%FLia*h8e%Q%6?eVj%hc3 z+9uO#Vm#U3iSl9`1gVW*a(7DSdc_LmOQpX7lgAZUuwW8%L~A?@H)#-TJe|fmM5?S9V-I3aor%u3D*2%7$1~pooHg{G4=M z+^qJ*owG6-mVpX~G=t%u)*WiNY-6qFg4A%;HJj(bKfAH%kKjeK-3Q!o9r*tMDfL~F zS=3J$#zc}ytcs~+!kAy@$Ni_r08+M*UzruJmUf4oM19J&=|G+Mg7s>#64+HoQTnQ)S0v+gr7yGliUY_=j!(gpMx)BLT+*Oc^0%KFNa=2bz+Dt zV&aGv7$t1z2zmWf3NR+?vAxib#oJVcT*`%LMFmklQ>@3pk0>Bjf4aSTabj`<-_b`F6SDRx?|hE^RM^6_+CMMsF5=RN)k zur9}{zcnHaP5&l>GLE?;%zo%1Xp)}t8m#&uvDwQOMe_c;6AvjWk_q(U3Fm;vog1Xu zgR3UNN(ochH(nBloBbKAYr1bKp&c`kMAl(h-Os=_k*3c0*Q?=Yl?sT44xn?=uOvT(i5UFX6)Ba&WBu&a#%=;ev(!vao+imxmdlX;U`#VEaee`@i5=KjZxuZ{B3`KQN+4D-Dl;QT| zAzNGv{boH|MoD_y#WtF7w`xYDvoN zRKC~F(K8#xjG#Ih%=#@_$*?Swb)A1{DGxi;TIj3{^Q+EHy1fHS1WK{(xrq6KIIFYn zg*pJIKzPE+sp!f5eIuowQ&!NDFFDL><(ecuh}~lvQ?ec;fy7E>?5|~P<;U|^q%wU( z;{9En6_jQ&iXImSniGDjmf!lgup+B4x?h>bjS8K~rQni(04G673I!xA5 z*rT;S`t8(yX}Dnrj~g8G`bf|^=~Kv1n2MjbHKXPIH0KvNj4ILcdZlU_RI&2 zckwLe)li!#y7~sHg))fmUPk>qdXuW&*sQbqdg%fkYKw43qs2MFjTd^mOkrO<46qMY zj~Q>uPTX87xm{3Q64JKxfQ4w26CLxQKdSCnuL|rq z6gZwDXP4X{I@OqEqGGDXN7cs1lZxZow)u^?vA|-r>sz@k%){Uc!^@mnyfjgE+4Qm) zGSmXMW*IjF7T^D)>8irwT!QT28r*`rySux)y9Rf63l72E-Q8_)f;$9v2<|}=*x~N( zBMX$2^{9VQ#~ua7**7R*|E<$;I9j2;9mE=l*X z;S2(3Gqa){%T}%fA8$i8QO^CSmi&vTRP&7T?RoO@o~(P4ZecVfIJ2P4y|IZA2vjd%!*L*B8x z6wFTmyq{eUB#ZpsR{j+q{we|I%SxX0N-)QP&aCBuN2Vdj-F~w`U?VkS*MtHnI!I={ zLCSl6mQT0k|D&y--V#LK#RJ!0LbA*|n!4{nJN@4LnT!I42J}r!l<{z2jA8QW0$aW9 z(Y1#jjme91jj|rpQrT9y&r%dYG6k_;^$_=4mtJ0o(D$sQmtW12eZ8eNUa&xz5@U~` ze`cMf&IP2)h5Y;LH)=VXbwW@g+W6DYL|gIJcI(dno>R|r0mv?7sjo@VL86Zz7Y5#L zc*~FPS5xB)<8W}c+7l}aP1j)X76^0TGUOEWh04$K;85^kX{ExZUw>+QXd|$L%}skO^OXp=8PQQ*u(DOn}*xJp@B?T=zDt&-Q`lL`r~-ao>D0e%#Jv8hy|+cSkCk8YAS}xXjVRIczg8-38N%IHX*C>>qvRrvBApM9 zu}9vEDx}v5(eBDAknM`r=hKkyN`Q6ADZE`}dmUwI90}^T=fLe);+=B^ImH)0u?3*m zFk^LV1T2=GC)~ZM29oS*g+9OZ?u9u=msIZqAP+nZ6C`)gmOr$B6W#RqGZ;aZ5-L~HeH$-3E<1Vl zmCIH^&N_yfGJdipg6{R_I|}x@=BBT7L5Wb*hlCnK$YW!1^*x*IwJea~UwguU>BN5+ z=k!5Qh+@|Kzxbt@q$L@Q*Fpv4s}cB*ufW+mL|;7MZDJM6;yGN_$qFuCNKk*BA)K|@ zQqSm?G6zoPm`JsUJeh^_N-o9{RixZ;pq98BSEIKT_57pBuZdyZf3#O|w&`+k?+hu- zGc=Mfu4NjRB^98OEg{B&>-s42Sh% z*}>KN)2t}A+$mwzV0;+&35uXn<4Qp=NLdi|3Cmn zHl1ngTAOxxn2Nd7Vb5+Hr;@1rvjKn45QFQ(k;M^W(0p-a!fWlD^SPoUPFcduKYJ_G zN*L0f7+D9B7D)!!B#BE zqfY0Xsa*b}hQowW5J0FkRdo>K&KL=1Q#%hD%3c+j`5f!QC&ndI_W_hYFojkW1KW@w zL^GFLM1fIIbo1Yg2JK)sIa@fGj&^q7`{7ZyLvUmM5471U98O_L961&>Le248Z}n{|$VESHVWl zgSek86hC9@PQ78U8sxGZsv@e+@?b_lg`Vf;j(OffDlqvCf1q?k8L3zFdf-IJ(q|3& z`_Qzlu~l;?|Lg1#NdUGK+NisQ*s;$LroMCmZi*v(Jv%xQ!70ZY?w7pD-E4i@V*e5w zyZ!HfT#ls&(5dYwXt-{ngyRsF4|ig6`zAC78+!xt4SM9T*jW}bacI6=GXD}l_Iw${_J~i9-S{Ho|bKL}K&7!1Tj^;E) zT_V+}vqNqozIl#Vy-6W)&Uu-YcOy3Q@5cvkV*EUT7B^4wME+Lsm}T2N@@vk;+`aFI zjuY-K54>up{S>?U7*1t#Wo+Bfr-Y`P=Vj$hpr>Dg%#*w6ES$zPV0@+HHr!$ymFO20EL$!h}J2Q5{t%V>s_*8rHaW+K*&*KJA%kZVDHPRkJ)Jc165K=LAbZHs(jnP^JWO z)yGm&USEV>nm~LNA1%G)&BemFT)v2b$G!xaO?^3DFnF_h5VR{|5Sso;z74ciasTUt|#aN<|Lm%Euiv_}x*_~e1m z!Wwx}`O7Of5$U397NV+t=D)wldO7`eIS{Y^6X=Mv1q21NwPRIJ1SCY_;~2brInvwv zK-Omb7q%+ymZrJPMDe?82adi@PHm+r6?JIH;5ytwN~S+P6(!yr!LCpK6U zNQt8}N2R3Pc4r@AZOcx({7ltm1ZW^1Aq@Z!W^uZRDJU?B$4ei5rPt)JxCrw)X-b0K z`9?fi&@oc`CRH{1(@@K}cg3i0RYmn`-;5=cP)nLWzQyb3jb|X5d|VZl?w>bm;!E5h zF0882JjI&gX%+vpEwC4n-9V5(t*}M-&b=a6{+Ix7!*@_WHGwH#1P@H3y?sLDjSU)t zac1tt@zP{g%vmz_`)zH?HT{9Erjd6lcLCeMl)|h?Ptl1XUeCr%J7#8$#a_7A%QI(jJJ_*W&7+rx26|gaS=gyx`&9kC^#@enTOOkG!bXaj${&1^n}?@Uv6>j21rCpdZl?ck#`d z$!L0+9!4*LS2B=;4C02fFs4|R>oFpOh2%PnLXbl}zpESL(T7^l6rI7IQB<>wqsy!? zi+^a+>eN!|pU^_V<}?s&NIjep+)`{WP`-!sQCv_e4V=|ID2R)SGIlGMcZ@!gWX=IP z9ik_XPBgibbLod{ha|nt14G6QPmY}kn-IQ(be!k&w*P0VR~m16kr8n8JzOykoATlL z%Voz>p5q;)vZey$Mmg3+lEm+abQEMBD*r%z4i5j7!Ir1`u8TzNizXTnv*dV@w{1fQ z6Z-d|i;jf}rAE(j7<9c;GuR6zDV#DdPKG&%AnLlR_e+Q0z22bk2H?daER?lLP@Cl7 zbdf%Gpx<%yHQu`e;@cLXZohOXYG5>`teFu3}{bHeYk5s9YFQ` zDOC<-S)Pj}0=RL4Ii{_D1IEgM{{|NEaJ+&UrivtX)g?d<7aIGebYhV2OC2w1Uh7uz zW>kIHF$+%KXXJnV(@p_K6JK1pMsUA=X7^I9)#rk5hzXJKZZu090*V0a&~QyY2C`3$6R3g+Xhp(c?Y8o84AN1@#y?; zg5UMlGiCVb!pcDo(BHK@VQnO4XXa3Rb*$`o2PSM~s`Lvc)<-7Sv{904Me@03y{1kk z;^DN72%s#h_#r*p792*7fz*UUgq&P9`d8z8F-J4q4A9%@`0=?gscyYq`*;6q5lwuR zu#z!SWc-z@HympGy=hN{HsXXJ=?xpS!P)ToZ`Q7i7bFos`<(~y`#_Ey<|mhGGT-}9kHB2VLi?)sN2=9YLxID-y7@p^_@XHsBU1rl z0RMEsTVYm0_<5J$jD@>JkZzfl;~*{PJZv^wwi%8r01)Yo0YSsuN13WsAVtq9c=ql@ zeWL%hAnhBmY{BF_UdyXo5HcKo;|@47_X zOfq3zW`;FnG!cNZ_Scah@bG_-6l+%eDTs|I@-1cUNu*!Ybm}S|G!kUxT*HZzev~MJ z_tFe=ZdLe5kv6iyW`pBEl(CfDj2hpuaRLk&l`Adn6|&a1`E)oh?v^P`o(Gr(eSI8J2zDw{n{I74qDCP#Vpjl^lgr zU6v?_?c_(btyL#HwO2gALZt$roYbK(58ABlFKq9991mCCjNLD z$Q2Iz4Ke5S+F9+InfeWdX+T24V(f0;C+MLx$OJ12$^hyiyyD@Sv1vx{LmO*m<1{a+ z3;xoecf87dfA%Jye+;1EEoqhP{{aV8hI`nK^T5o~PZRm}lU89~eZUk$xLD`r8>wzW zh7^kl2D&7*JlWTt0Ll2+i~D-*5;GbI1X%XTxupAEzim|z@JT9oL5n5t4`9!T2lqk- z@IinoA%5FNfi*w^O#%7ArwGh_K|pNfRHlyVgP8H?BRRg~li-A2zyA^2hHi?gA#UQfVI9s$k7<$ zqZ(!ZlXHiDUx%p=F%w!IhJa{gPXfD{u`;<;BFr0i|Gl&!NZ8svAF>P5$~U&4N}dbW zgb2J?vdt?`=!#a!4+>ZG`u_*nL?*HX4l-mf5ymnx4)r zf-5@zarVNXr(B^FC+N+lv!#y|IhTe}G%hk4^sY)(CH`WJ8MF*ohpjLjl}52=7C*`~ zA7p~2v}S_#N!8ueM9Bp+W`S6JUcuqQ#$D@h2W6?0TPFd6))``v7!bL};%Y=VY%!Rl zrCjc5?+iinoC$8_+gu@HH2s~L{WB(_?o=qm?(I(gV;gna--=$H5vL|@$EQFrvHu%Z z(YAiB7P^xn)ERVW@P>bxuGTk3JLqo?>Oz`;6SlpC(h2ts-QrodAF?&7Kg^H2!@pNk zu9gZW;~FJ(MN2r&%rZk3aVQ;e)1tuxPD@J zluWIlQ#V9fwvdxsUSP7Eb6o{Rl@Q!6O7@0P82adnn0FxPgrXNgGKuDJ0d}}`{5mem z&f6-U#VQX~^+$VO7m*Wjw4eQ$`SOrr@_u;m2+#(M&(OPaVo^(%;m6zB?;-!M1pv+d zD!8zR9{U4JkALADJ2<&`4e2DylV}C7-;EuD5fQVbOAkVQ!Rm&5V7@0fEQaPX6Ojdt z0)S&*g+!v9Ga$B80|q@YH$ca>$t(6=>+e)66Y@|hpeVwx;wh9;+Zp!wsIg6(sa;bM zF)o3-O=jNMcggIUf-8uj&K4ljWe^?bEx~oR{W8eCp9j|RsAl$}DB`?z3*%pdIW_6I zW5wnx*f8heo%ynYb?{vtveNj8pGGeoP<)N>a&nc8`RF*+-f#4d8(S27B(Eo0pUt`V z2gF9gR5jzrwhKRe)%FvC7c|>-H8tE<`?urQ*HSBB)HS@aHXb*1Ri}WV@CyfAPoyvx zaDf<{E3(!$yLkEAlXQ^L*zP3j(G<2QEpi5N znd)QjktIt_ua~Z|BRfcdR-1p5Q&l0)V1oS{!@TepVUJ+{lkez~-%f|;`vpY2@vd|< z@<9(#=%#gl9}e(%WvK89)O4aA-8{rm2->(EK6f`J(@B&j-U~5t4T^W+)sHfkE|+)| z#@I*1Bw&mD_WPWlBStoWYlMY#uJ{@}+=J{`0B0=@4v((Dc0zaISfKVAY)}yJ1ZG0?a176&LoWu+7*8I1-XkcY0n zamH^xcv1H!_CPKdnn7!VoOB9)8BcAKx|{>ICwZW}i&8psu<*NiHG=E8H2_9;OD=m| zvQ$uBFmOFG&R5-4WrtlCvkc%1d25~cy3}h}XGJM>gARCN96VnHV1aq1;VAuiUb3=S zLk00v`hz*R{*$zYW$*%1dh{X-WZ=F-CH~R_eZ$-ZUT{N|f;rNLS4WLeAcLlOu+``P zcFify#6{QybtZPj`NX)KW^44H(H4E^BnNcyB}sRQ4zpS>ZM)AFhVRJs=C7MokazG@ z&64hN)7`PKm^{aHHZ%`yt^-9ve#0U5Q}jpfe98Z+SmJQc-k8m4deCAi2sMhtNc~=F z?4un-gqroi!evS%3))ka?-_Wt>ncAuhaFxusRM(_^+qDduad8Af6Nx$6=h}pL20gE0wPQt~k2dH`>e__58xt-R z#fW&?(lcTgv={W#ff@BSYZ?Tf_dxOnpHx{Tml`&7`4;7_}Ep*)41e zO9w9Lf0BKwfbo7J#U$xIQJFf_C^rFj5x}($0S_oIR zk;rSgB#AZ}ZZZWdsVkyC|YZG^5|TYw#RM7S=j@C~!My zBg`ZV*I1Qn^O141zC1y}7bY`YQuX+8k5Q;cn9DIN2fw6=$i{5IlehtxkE%3m0X1MZ zSPh(1w%328JCHd^@?cL{wv`Mrf5CtF-XFc^Co2<*zE9ENRa@UP0pkBO@q_NiH`>lGosTSJ6j1^C&c11 z74*)ca~8`y;c+DgSnj%3Nujy(CeBS`{bZ@p0Mtq@homq?5R`!POrfCZ43%fyLbYbL z^zJ3_ErlottgTj_k?t-9n@~ZLNP+v*;mJEp=ri-it_BSvU$715ZfEdo8`64XR*5C~ zh{1G*&u3-Tfre9-@*?c zS!VpwEwnJn*-5P+j>24cAfwQq6<3>T&+t#SAMGm06^g;&7uk|r&vuA5B789ZiIMr7 zK%uyc;*KrIw8t&^B7(TEX-6R(R=fYmWBV)b&i46fT>1>6vqikN4SIEButTfvY%1X1+S!-){}3=6TgaO2tg zF+riA%l_tNAQ+cF-E|eIi}u^FrT8hy8yN& zV}AAFb?g*xVNk0-`7s1Pv*L<>BeX6Hu~(iMPQ|{%DS^wltL?O2OBwFxou{aB1b`o` z-NF?2s`KV?v(GS(ylUpC=js~Fa!3+qaaJPVek#?yJij>CoVb6L08|fithhoKcYy~R z$;Oe(@71g6 zicKhv3l7wtB@hOT=De*Po5OnR;*DH_(F+yPLs>Xk@RUxp`#!MR|@Ery@4z* z@7Aw}bXmYoqzC-t{PxVf-W0jlQbhn3+vxRvZ!xL%2fGt4{6`m6k3@^a!uQ+f7@ac^ z?8TY*bye%&Bx!4RC>fsUY`Al$5$#Fuo{SsI1lF^6b6dCcR>>5tLzL=GNzZSRX)JRl z`Z#(I$aB6qL!Y#wu*Y-xUEW;$P9!t^-_{f~yp#opf@#xGS{AaWsi?)f(kj9YvU;Rf z*?2U**3o%X1Un=Px+;>N!ZEq`pqOi)GazAfUq~0-qk?Z8Eu4plX7n>D^XTPCP(-GT z^(90QDApy!FlRpwu zr1<1+)GXUBzao)27V7r8z-x8fh$Fz84&3<3lOGnebE-HQhC5n9%H9W z2b*EV`(f%6y+reLGWNHWdZ!$uXcJTy7a=}&#U9Ra#A9oye00CVszhIT@n%SK$xji# z`k~NZJDIr>u`8j%`0RaG4dXg<=h&^*;rWs^~*B2nouzEl`t`>6}J z=2hv9qCrcEabwSKyn!7n*5r=ALsTW!v}R8nG@yNEJk^(_z4{ncevGQ)2!;J7zvanY zRd=ZeUe@){^|%ox`15CIBM!!hPd6dTNUI0t-?--%?7eT3dD!Vif_pv(JleSt=7QsA zFSl&-P=iAEbkc(G7T~1s?bA|yLp|2-`O;q~Kn5%>@~sl?>Wi@)LgAeZsC7x9{yNFp zYf$S^F|NQjceCvWRK6k77)Tm7tKTL3cgGFngQBxERM}Ig`lPBbfWoj_Kv2Y{HFEyh zVds|huw>f{f9i#P$52%9*?J$;-oL+U%pZe;trCa>v>7k67pX*Bx#>x)@r>A=%iU(e zX;x|BMJZo+QbCt{kZwXdxU?Myosd4A(>w%<=<4RyiuCpnZIZM4cP~9-e?Cu%0j+BL z0vLnAA&;tk{=u@*gil453uBN5BjWI^p6vs}UE1n&_PS?uyR?C2!5!lgWC{gEim(C} zcKhX{`RwTM>!B#P;LQCO`$gVbn~0{wf!z;nrbtj)5ELYm!?#I?)lmJ~bxA~mSt)t+ zH@Q4DnK$m*G0dF5!UF%ZLqUKn@*+b(6Vt<$U?*cxkn)&;a;*=&kFd2HAb1s0p{oX9Op{)_+eZe?Y% zN$(s87@Ic)36DkQYTjB}(z>oALn@=20d9!58ovDO_J`kjCinF#AA77Uerv|H2X9s$ z!JeHZ#bX!#Dl+=h?i(O#c48~s*BtDpOhPy{6lI2&Ecf+!;w-O<+E-TL(*ncDD#SU# zLxn)cKGkct^a{YIxI4zztIzyFjfdRvcgJ+>eB!ku3ZzP0(-Po85ih=6LHde(o@DA` za0cSXSeN$ZQXUGuaRnCw`e+2}zbt}YGT<})Dx39)zS;zDoN{bBSPODTk67MI8WT## zwgWU0HD2jV16-qc_y4be`4-uZo*-tj?2GQ7y&$p}>GG^60b@_K#VG@Nj4`!RhXmvK zM5)Z)gP*}DcIn~4mLn|mhm;^PU%uc2>6W9@EDzPq_kEg7ph{$W>P5l*ZCy?$*V$bf zVv}h=0HXL<39qs7(oL@X-pZ5Y$SLJZjT$8DH@3=3(EIemNis5sHv8QEXaO25La%<; zm&&kn)WbFz(mwTHVHB6#yYor&Qt-~>vA*d>izKfY9u@~2GrJ%`!N9B)1#+d?(?+^d zF@IOqWF{N;rQPvPZqv!`U>tOCWn!>WZ(7B)A>mxpi%Qwnk8m0!BILM?@_GJU!^7L2ClV{h&dl1 z2C;E+e+JvtS;WnYdCu42Jkk=hiaoMzTSY=NWC6P zFVXQ|EcQnvz!r~t>EK=yu{-BRJ>ZR)#IT?LSnfnl z#-27UJanVgPP0Yu?r0c&Ad187tw^lYF z<-o&-`^?R4QyY7soGd$Ye%4L!)hL->2@ zN2G~V2Z=i}y=f5-F}~i$_F~GWc=ogm;lD7!rlZp#a{|(`S!g#yLsjfP(#H~mt0hG6 ztgLsTSvk{%B+eRkxc|O4M+U8}ZOPf%tocjTS(Z;)D5#w%RqU_$ZI}l&;t(%w>0Fu& zm!)~vk~%U1e%wxh2Y$>D360cdFh2v7Uno!UXua_`&zpuii%h?g^}ddoIg<-=3rD_Y^PboGd%uOrg!SMNNp3AyE5&?^q=wGaOi*YGp#)*pNB zfQNDw$(0Ei|F}~EHH@Kh!|mb5+_WHg&kr&LG_=yq`z*giz9F-CW=%!y8ad1M0<^4baD9N*&fu~RLYRN4L2$#M$OU%e;oxLmy!X5X!@@R+h( z4GI@?f^WUoh9C^Hg$kh$0!XJ^1S!4Q#18puX64m-%f&Ak+%FcTkdfyvuBiu*ur;l= zq6tw9GEcU&e0c1&9RbI7N`_#5|9KK}d^i;e0}HdPo0`(A&nQQ@gMZcxI?=ms(X(oc ztcroXF;IInY&?F+|De^cXNfEzZWHEw2bK$m$;+9r()v*!K!@MTmT(V*Wq4r@I^w|@ z8UED>%)hQ{k{KjW$?e8wWCtGWY`H7DuM_?jc)d?OSEFV>z z9mO~&<`xC#w`F{I8oymKxbB0sE$>xO@89#G>T1}>L z&?UOf&}V<%@;v^X3NHv{MG@wr_TH^_9>@(HkRlcwz^^K^b-r8~2qGMVUofo1v$c+W z%cSPwa2ou%3xpJHy8vBU>z|y0G2b9i4|$SH@p(WQD?L%XDIE6RC2ipEYTCDgQP+5M zp$5fY)Gpk6pA-nmJaQo~IRj?mSdY<(A*ap1m5O(i;Cmh^x8wpg)-?1n9FX8h_=A(} zo^z;p&2GV-=8#5pY}~#Sed;khUW}&kg)%r9% zG;LvBv<;~j2LCdFpE*sky!8cis$QZBN3H1kuk?7eTHRH>uHe~wZ-$1qEd3XT0>)V< z`aIi=^lTs^U|W4rgL-cJa2_I*&0OY*V|4io%-V3{?EsJ$<}dRIJ;$jmnFM$OS;j=! z@xiND)|I|JyeHVh1uTnhW8ka7rAUA<$teA>kc^o}RUvBeYaJ$fm+}+Zg$zi*gV7uc zru;WbsxCpwA|Y<#A7fe8w~BK1H&at9CpYmDN(q>ia-M<4^ohFvd8LyWvm$!cG5)_; zX=&e#H;yX=5#*IZ8Wi5Y-w2UL9qvHyAZv5)sxIeQ`^TuZ@g)0g(!TauKO=%LlZIP9 z@EM^2AM0$G6uO5oE(8rHK_OFjYYht_o%LvvQeuFGhh1aUm~`EERFt6 znl+d9+VV5{hM~XHu>_HGOSsF}Z7YysLq$v7;y}}&!N zkY)RLKGpJ^5xg_xoWt#-wVd)Z)73fjqe9!Z@p&#lSCyjru8Ljl9kU$Gs!M}w4da^p6QU$PSk#TQ?oHWfZ=uhrdK~2`h}QX9n-^v z8;iy*-o_dFJC=-F@AY!!Hii@?!V>m#^DG;Z#LS7R*qIUFV*g$vQ()hm>0wN#y$A-V zmu5!er5|Q;q$={? z8ga^-iQS`x=Vc6R5eGomS@PRfKC>4tbjfd*ATD+_JZ$R=H-#J2n^`ce(Xr{DB1C z0CS(Z#3u(QdKF-1=ro-_Vym5w{s8*a!92g({KH~oE5N>X{*Q&45vWQ_cpz9YidjiUi-0#ka!i)%e3{|Y@Ifwd^!##> z&9q!KHnc2jY=GA_cu&v1XFt4iK^G5S4hKihj^Qi;gmHeQNFpmDJ4g!Kp%{&Khte>q zJMtqROW8SG^H}LFD-!6~ZI!C#&a0cT*<=t-E}EL#>Laz4&_|Tp`h@W)2VLNS zZ6R=hrjZ0^y>pQ$#Fuv2ZU#<)u?lJ?`${ACvV*hc5qI0)LwmPVjtu1dQGfOGeVCR3oV?7gP zP%;>p{3TX()K`~Hn4oDkMyqh_D!+`@+5T%y#tD6Zh-c9)X^`qO%9b3?GP-ZGt{fL` zn6sgPEo?=N4CvV=HkubypS3C6)tRg#zw@@##%vSlADv3aHY%RCw0(C7Jp6cLrt8^Nu5J!V+L@Y{?Yu`QJEfNW+)#1=0*y+xZ1-Til>RY2_T8!hPKFXg!B@LzBSf%vK!y6apWZJDycEu!{U)it*R{18J!Xp?!_-*>0?zsOdGDsSTj^b-9 zJS7{G;M!BYJ&@DOtct_;zbr5~i<9rX(<1MZ+wa%nAADQb5Zpqbb3CM}P8qZ%pj?XI zKQuBg{QLEZN4@{CR>tSN26r#_LT)=*>NC@agWWy1OOni+U*@K3fZY&<%q6cJ?&27~ z5z!(ZI^vdP43Nn`?p{XlM^!8lq*&$-g6%XtsuUePr&`BZ7JVyiG562@13H1GzP^Z zNTq|uE*07jy=DBf*ivPKIr7KU*+w(T^Y7ecSHA2!SW-LUmHrG3zTx-n&&Md?}xT0{1It+U6xn+v6( zJCnrH!j`gh>pyS3#eAxq1{kxKzT}l1#GqN4Ws(lZ8J;I76C~BlJM+w}5uAdQMN`~5 zC7LPB&HvR393c(9W0hQ?d&U$Pt!>IyPMxTjI2Xyj6{2p9fGc&q%;?R8AzS~&148q> zB&Yd|*#4Ubkvi}}6cERg6~}VSE*7YP!m8d{p z=WV*!^gDhRZDSY#m9U~~IFJB)HinfLO^K1@m^V4@5&!?S0NERQpw5(=gV{Q2;a=dM zin$+7(jB8#=wJUxZ~g6fhXCkpU|HH~yke)rt zkA~R-OFqb9vTJYE6K}?+Rs2zIz^@tN*V;&dSwS=&J}PS=l0V;%Zznb3$-l31To6Q$ zxb6jqJ6b@>(L>8ln(2;_Nf+ZV%fFadn(P4Or7Ho0+XZIXAx156jHp2EgK6s6+?=gtMR$(w6^l?#*~h=M>v{GWHzB=< z9%e<@bo3qA1M)4K1q7x3cQto9JONhD-am)C7+2ejqP&>07qVAM`y492;1BKwg2f|e zHm7f}iL%u}HB=~B1a9NfDbfqkO~q(At~;C|0CEoP>_tu@@Kpa`Nav`DZGr#Eeia0~ zT0(hoq)5-)pLIOJmi{OJb@tNr?!fU@?u`tWbs_QT-Gd3J5_0aWh@cM}sGH^p4lP~z zkETTXOqD@7X}8^pHCGR-82iRd7D+7=>S(=oao}=e$lw1UtBJuRx^c-KT_%|peNiAX zEg`FokQF^G)4Db(8<7J9oW;)VB`K3yAK@e>EVUwgs|;mq{&6)v7V`SVBCTOvJct{4 zDW6Of2-0#U%YMY4pAiH8uI{H*mna5%XFq~}T`W2NZz(?DEFarvUB-R0wX9gf1*kf_ zGW5KZ+l{6MrzfC%Iy3aNSfFhjx_xKw>IRneg}NY{}E-x{8R7mrnJ-|I)?i+?WkZraA>UlYb33@#pT$;$?yyS5b6785$NI485S{#Z;#?Vo#i zBBa%dU7;MnR}OsM{8O0J3PNGv{>s!8Rwy5H>tziUlYq`||4rO4@md9l(Q_7&^^W%} z%XvzuZY#B?m8$+@Y@i7zDAC?!8y26cShVG966IpCUslXceiZ}Hu6cr2Giuch_ey1h*KokC0LH8s#ywU0_Vs7LKQrJS1pNrjokoKu$+GNC|y{M%BhL+YmO zF6BV{Kx3U4>^*Jui`Xz%LPGKM@*wPnh0)-kJa-g4h1;w1*V*mD6ETYD6uEA(s5)d3 zH;kYwVdiH9uI*p?=-e4_2zzrR;6OEjkS9b?!k*7>dtAWZdafk?D@^FiHGRq!q z+7ON)nw}#Bw1>x@M)#1s5X+~OhVG8cDn`Fyim$^!K0U1mAxLAby!VL{qCasRv}aN7 z_za7oQt0!ESna&N>W{pCzLHy=q?S$yD6M|}<6z&~8B`>+Hw>2Gu5;K`DkDmb4V`c= z`*HuT%YpSM|FDCSL*FQaswJyN_r^FW2~HR&3&@b!@LGz+OGwE`RQQ}&Sowaq4>uV&EyhAQ-Tpt2}?IzZKBUvSJ!ZvNqW%Ohf!@JiuF9iy<7hg; zOaLW-8_2qltj?QX+tO!%A}0LJh7BN<7l^2jFM~rRbrzSM;bjHKj7flG}y`DF8=N=AvhKP8VCtw)R*Lg<0a1l#idlS zM&N&4q5E9Mb39oU8h1Z=Kibmz&%_y^9u3Xd&~0ArfGdGGJq^c6%!f#c5UI&^-p0=O$WQU+P&2ZQy%?(p4?b?h)5ynAeXxf>>?#o zSDguUztRUQQxlE**}78XMEV$}H1tj!@e=iw?;EYqFWq8C6&`_69g%f~@IQ2tGKqAm zps4`qBMkkb6CA2T|81{`MHZZ`5-8%Y`q_^yamW%k-6ffdJz@Udf{GXVq8gFFgf8$? z2(iZtq(`Yy^+)eRKuFq3e-@*dodpSSI7C`V`%9DI@QEsM-=uK)c5q(tr|m1rTxMfd z7sGsf9&woI#pY3-qn*T9V}P*j_1Wrwi2!p`QVYBbkI%F>xRE*_N>NibKYV`_8z96R1cn{AM8H=356@D*6<TMS00YlMLF zmL|B>0m)+e&X3>?lM|L2A98l<~N!(7>rz<5AWmNhibBzA7Tcsk~%CJk`f ztz7Ds6^+ZRuTXsgu5H~Y-CxAP*>S<~8NsK3S&m62XbPw6{s^sSS9|L(vhRMf37Z3e z^g7n^Gu3l-9%xdGl~q3jd9M1d4xs>ot;*5v3eMOexW4hri42uyH#-f5mAvE^H;mj7}X0h|01{5H__`_WG9k0XbT ze%MFp@2mNrVBOU*E_)Gpw^{q1)T=t@U4wECUo8!NYeK#XF?j%;y6v^W-?;;6S2CIT zL3>ogcKS$JvZGg1F-t=nzEFU|{3!D*h!6yLPBBdy--G6Z9iG??X-A@3DbJ$}(MU`9 z#xi@Ef-Az-KxOPdu7`qapk%P>sjodLccz|7%Np_9GW!%8yro&9Jl|Q}V52>}hYr2$ zG{$chj+KwDk;%VrsT9yRd8t=g5_5fI+x(?lVzy$}`cwK-)HGKL6A#m1(yxJUq6sRf z^@Y<`%-0Z{hNV(fQg^dryDLi~Jr;q|*VMvGhxoe^G)cB#t*=G1MHP0rVk-q?zM{7L zRaV3>L-*}hO~>ETX_gNUfax!_%qt`=N|>WU#c{_+b(udr>BDTvgb(iaeNZ``!trG0+kkS8DkbQspl@bt zRKr=DNf#oVJ@|(Z1sT4SPi6XIi;74jc6D+DCj;=)dXWxe;xp&prwbwy@2#RuM(pa% zWkB>r-xLZAm{%?ko6{&HafH6U4k^SqQB-~rDK$&^^NI({`a!-D1sGl_l{!#+bWY#y z9z)_I5BhF}#OJsyS8<$+2C}92l{k#Alo5)goA*a}ZrY*u){s32VGuRK!EWdzL#~&Q zAB_D~yn>-Uk>4uDF4jfS31{`8(a(Q9Q7*UMhEaX3l1+z66kmOl)53XUCL0j+Uo}m~ zmMzI69}NjWKs_dsRiKv16(9M5h`ajXI7R)$i3OmxmbcvX*3cLw*vQcDLUMm8_m&Q2 zSptu@muG~UkAtWOaUh=%z~z$LNEhGOGXd62j$Fny&y)N(x^bx#d_V~8$B}t4ijh20 zkJkN<9Y0O)`{!!S)>;Jcy&AoFbZh3iJdpNG3oTPA2ZtD&^MAKvLS*L#_LTq~ z!o)zE|GQAT`bNQlm0JzHjj&llhzQZKH!xM>{;+GgTEs1Rq?YYO2~Q<$g`DC*-AwLP znx>0t=d-E_fVJT&cYe9obZ&dzk!lPYGNvxhJnPv2k2a#C1&(;!{igprt(O$Ey+^{A z%{~Fz9#YQpTLfOno%ASS)B1SYsqfGQw!ova7TU5jz5f4d&1RAbV{!U(eScLH!F*8s zPg_?V*5v#3M~g^Eh=2$Rb4ZHP0s>zK8zEhiN(qy8bcrYe0!oiD5#4|hlaOu;rDJp| zNQcDe_&r14|K8_%{=Bber|E*V^yzoTL7qI4FXKe6VLfHKp_B? zd;yyIxlplpu8V0{fb4Bd18=g7`VKRf<9}VXr|&4Iv0O<7y8$xfNfTV4>D@wV##(b;YlSZ60~50=MCasdD!Js?n=T9knFVAC=hJF9T?ju8x^5So z9*nu!DNKC~+kOG;mKBA=hjA6Ei8Cu3r`oZ0qC|Al2!uCLb0eaS-x znMw~bWj!)ZAW)8+oDJhnh4eb>fLQ9Y&bI&QDHJKsKadPa{IMBjsKf5%CC_lJn@2=n z$XikZ5ErdcgOtQViH6J}P*-#Y~_T*=YL zDxY04?Y5-6@=VLsB1wUEyQ|?_0wY))L*vs9U!+#Ow-|H#+m|L0NG0(g@4&hRq1pqu5q@Xx}xIy?Gc)wsAp6=H%SaJa-lj+ zRzVuSws%uZhpC2?mK1tEi*qLTwOQKR2!WyN-HJu7njj_NdBN&*a(i#Y4Iq(0BW1F! zzEJ!aSHdFC1i3XOeBDmS6zjg@{o}?J80uk9K8>g-^JbW49XA=~9IFvZT|P1)Fj~kt z0qIVQ<7RBi>d*PO7a6p9p4u+y($P*cxi{F*keylBg@T1QwPc2TA2NWS0Vn!U@5&6b z;hM>%oGE8-#b3hs&4LUQi^Xf`-AZ8w!aqp3NUHhoN%;>LsdQdrg0PE+xv&0lH=dZ4=d zepxgtGpm^rP2IL}#Y(Fo+lyg^--%wkL)4b%c{Zdwfy+a46y16^Kd zK#R4bgWjUfCu_qSu+vhxfiFMbIQ`Ibwu{rQ7N%bPFVcdl!?v>K52)tn=9?m!fjJNr zf?RAs|00k&pkulJMi*i=Zp9=1FGcEh^x<2S_fRmSVTbOz=xUuXG8y``wN%STZ02rZIS>|a{c zXcFJ#5m0SAt5M)fZ69^~h>DMc)l!5Ec-6YKP4iRhZI+*3xawfF`FPmqI7=i7fR?wq z8uspBGv@FZ=W!M(qKPP?N*;3xHRj}vW93TN(8<Cr;LDN#dQ9wEaJTJdPZU%?r){4lZl`{P z4`>ArJ$Lv}WrdFcTthn!Ax^fXhp2`0nozXun#GTDvpIFd(^OoKg+6~*IRE*N6$Cl9 za|F8hvB}N(++P%v;PW*q$3@Pv_{iO+m7CP}S5RPRv0sUQow2%vDWX z0*;3`w8`acuA+0nDbufYO|sk309ImTGs)nOY{$ zzw$OVtQ=S|lM>=XNJD3)p->vU9*my@oSTLsxV+$WSvPM(t{E#+L%xFKhVN*36sV9&9F1WsPw6f7lc+d0+l!Fos2BEHnt)yn9yVT8n6-7D)U5 z$jANcv%zR}u|rMRf-;EZ-&m+`;KML3&v{It>qpy5pRSt~-81^Aal=U=cq0Nxe81<6 z#-z#&-djwkTFt^!rH8*nc7{ap|I=Pw`0sjk4fd~z*mML&pr(Gv|L)RxkidaeVA#UO z%%rtTtvQ16o_@QGI&d=vd1|%hcE&A+t#g;KwT`R|uF{(kuE&@OQ+1InzXR-(5j+M4 z{H}Dx-akr>4Pd;;$06}Hu_>~Zw)D>1CrRQy2%Zd8E^Um^es(aewGpU#&stl`Q(JVF zmrE=d^^*CeL`=DK>sts#xO{F)ab)BvjO6#(P~IlwS2;a85X!Ax;%Bp1V|5Pz(!W$% z0ZHd$1UA62=~xy}%@Lm996O#0bp@c#9+`u2p|zFx$y)yB;Sd;aZ2p8aZHQ^%&0s`g z0_E;Kd#HP()?a!9&H#;+!1M+auK)pM%BgB|mk46n!K;qD**_ndp^L(~{MWxDdMuWK z5|(QCfV+gk*XWg;pAXK5Ts>pe8|(e+&RjHgRltCb6cDy>}r z?hv9%w&2q+{OY1qb+#X<=_1!ylL&GVPS@#Z#|~oYX4SeVTW$RuME%-azf?m~=F*Hr zCI7G7d#+n-Q3ypH*80&VwSfOZCI5yim_K_?1Sf^c@2!2Cye{CzkfFlq@S@vUxqk=! zz}&+axa}0d~~NgfJ(E3{5o9)2vihvp;bcT zG=kI9C%m(iwxM}tDCKA`L4A)ym5u z-od|1eEUMTv=&=5$_X{txC+hFXYta_K>cuMRlNc$!kM`A7&?e#$T(%&4a-1@#`{-~ zuehLLE?}36@7IPgw`);BVGZ-*s>(*frix z$21rvxj@*@Ocn~zNtEH3mMy5B*G`<3W|-}TsIk{?wRdj2#SWb$zydSMX!wZ~<{M^I zVPoxsHVf{?@3DFtgI9OD9xX`Na#Zd=XK4L#WQn}8@O|J(G+W=OAA3uuvG+P{wUTm| zs~K#&ExV!fE6N(#c)cpLBbt(B5hUuhZvOkaPsp;?&gTx>2Jx6dj|roIBUi3bAD07J zaKCcu7m`Cr^~AexH9N_TVisv|$Sh|>0VZ~xtNjy-ptOD-7|EqiXBWLR{$WUMchAlM zV^+$ibd&;-Nj0v&_YFC(EGAp2Hoht)%J4L8AHDiygYWkHT_^Y?vZKC64d%n!aeR)> zcV^I>JM@zUrKp?yb5PSqvD%g_NA}W`!uCmth0nKkP+PsfLp_U2urcg+& z{x2o|MGi-#HOm>@EIeX>6$v_n1QpM4oIRTwX$#}LVZdhlzTS6=v9oe&Zz82z}5d(Kr~W>s#e}8%(4C)S`0h(oprGi1?`VXplIM zs{`_!-yO3uUNt%aCY4`Nte{tJZ%1F-vSA?-B;0Vv2@!VW6oaTRa?W827j#+#@!$GP z^E<*te@)a&29Z;6ZClMgyAxsB4C_GQsQ^m~7sY6g90-p4E~w{B`>l#)xndc2^vjss zZ`kKBfwGxErQY*Vyp`#X<}#m%lID2aAksng6?e}sf&eY^Gdzn>W9^Lsmv@+SMli~b zn2yfxiX@9cw}+91^r0-a~c$1c=j`%FfYjILuhP`3AGJDz7<()57FDL-k?Xu6(JR=707}o_B=H5BBuztOds#$N;WP_A0KdpU(3dKC0t)^iB zY#78q!n+>3C%M0Vyh}uFY?EhuE|qCPw81!w?d(!fqanjQxB;*4-Z7?MhpmdyKwsbJ|7B%JT83vt{;;beOm z_voVxapAF%!Zdd>mIz3fY=t*+*3w6nEVtv2HWQ&b&Is|3v%2)iE1Y~c7Yf@wW}2E- z_g6q5ig38Ps_`iWii|)!NnMU6DE)rwlj8G%5xEK&%aSmD*@+poWE#&z7FBy+PKdq0 zIMr`WakEZio<$;79|DIzJSf4Y00t+gMyBu8m7S5%qRTiB*@B`XTu)D{|KT%6F!-gS zr`t3dP)&RL@ye}6rCi@^)Cy_!Lr5er5tR+_vRBAFqm2(4yzV9%H01Bx)6taL%g07@ zncZ`bqa^!8!LYfZNpH!*iuy3&8U@*l%oU?@ZD+o$n4P*5oNzNi>4XM9gd)|uFM?4*`qM$S@v zo!1srgZh*V{YzgPlOB(>E4Mu)3rZz+QOva$#|OW+6ZI+I4c|*0zjKwmby={||xjgs#U5v4sTh#gSLQp?B2@YIYI-1L^t!r2qf` literal 0 HcmV?d00001 diff --git a/folkugat_web/assets/static/img/folkugat.svg b/folkugat_web/assets/static/img/folkugat.svg new file mode 100644 index 0000000..c35ec72 --- /dev/null +++ b/folkugat_web/assets/static/img/folkugat.svg @@ -0,0 +1,47 @@ + + + + diff --git a/folkugat_web/assets/static/js/htmx.min.js b/folkugat_web/assets/static/js/htmx.min.js new file mode 100644 index 0000000..6b1a3c4 --- /dev/null +++ b/folkugat_web/assets/static/js/htmx.min.js @@ -0,0 +1 @@ +(function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else if(typeof module==="object"&&module.exports){module.exports=t()}else{e.htmx=e.htmx||t()}})(typeof self!=="undefined"?self:this,function(){return function(){"use strict";var z={onLoad:t,process:mt,on:D,off:X,trigger:ee,ajax:or,find:C,findAll:R,closest:A,values:function(e,t){var r=Bt(e,t||"post");return r.values},remove:O,addClass:q,removeClass:T,toggleClass:L,takeClass:H,defineExtension:dr,removeExtension:vr,logAll:E,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,inlineScriptNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",useTemplateFragments:false,scrollBehavior:"smooth",defaultFocusScroll:false,getCacheBusterParam:false},parseInterval:v,_:e,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){var t=new WebSocket(e,[]);t.binaryType=z.config.wsBinaryType;return t},version:"1.8.6"};var r={addTriggerHandler:ft,bodyContains:re,canAccessLocalStorage:S,filterValues:Wt,hasAttribute:o,getAttributeValue:J,getClosestMatch:h,getExpressionVars:rr,getHeaders:_t,getInputValues:Bt,getInternalData:K,getSwapSpecification:Gt,getTriggerSpecs:Xe,getTarget:se,makeFragment:f,mergeObjects:ne,makeSettleInfo:Zt,oobSwap:V,selectAndSwap:Oe,settleImmediately:At,shouldCancel:Ve,triggerEvent:ee,triggerErrorEvent:Q,withExtensions:wt};var n=["get","post","put","delete","patch"];var i=n.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function v(e){if(e==undefined){return undefined}if(e.slice(-2)=="ms"){return parseFloat(e.slice(0,-2))||undefined}if(e.slice(-1)=="s"){return parseFloat(e.slice(0,-1))*1e3||undefined}if(e.slice(-1)=="m"){return parseFloat(e.slice(0,-1))*1e3*60||undefined}return parseFloat(e)||undefined}function G(e,t){return e.getAttribute&&e.getAttribute(t)}function o(e,t){return e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function J(e,t){return G(e,t)||G(e,"data-"+t)}function u(e){return e.parentElement}function $(){return document}function h(e,t){while(e&&!t(e)){e=u(e)}return e?e:null}function a(e,t,r){var n=J(t,r);var i=J(t,"hx-disinherit");if(e!==t&&i&&(i==="*"||i.split(" ").indexOf(r)>=0)){return"unset"}else{return n}}function Z(t,r){var n=null;h(t,function(e){return n=a(t,e,r)});if(n!=="unset"){return n}}function d(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function s(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function l(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=$().createDocumentFragment()}return i}function f(e){if(z.config.useTemplateFragments){var t=l("",0);return t.querySelector("template").content}else{var r=s(e);switch(r){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return l(""+e+"
",1);case"col":return l(""+e+"
",2);case"tr":return l(""+e+"
",2);case"td":case"th":return l(""+e+"
",3);case"script":return l("
"+e+"
",1);default:return l(e,0)}}}function te(e){if(e){e()}}function g(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function p(e){return g(e,"Function")}function m(e){return g(e,"Object")}function K(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function x(e){var t=[];if(e){for(var r=0;r=0}function re(e){if(e.getRootNode&&e.getRootNode()instanceof ShadowRoot){return $().body.contains(e.getRootNode().host)}else{return $().body.contains(e)}}function b(e){return e.trim().split(/\s+/)}function ne(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function w(e){try{return JSON.parse(e)}catch(e){St(e);return null}}function S(){var e="htmx:localStorageTest";try{localStorage.setItem(e,e);localStorage.removeItem(e);return true}catch(e){return false}}function e(e){return Qt($().body,function(){return eval(e)})}function t(t){var e=z.on("htmx:load",function(e){t(e.detail.elt)});return e}function E(){z.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function C(e,t){if(t){return e.querySelector(t)}else{return C($(),e)}}function R(e,t){if(t){return e.querySelectorAll(t)}else{return R($(),e)}}function O(e,t){e=M(e);if(t){setTimeout(function(){O(e)},t)}else{e.parentElement.removeChild(e)}}function q(e,t,r){e=M(e);if(r){setTimeout(function(){q(e,t)},r)}else{e.classList&&e.classList.add(t)}}function T(e,t,r){e=M(e);if(r){setTimeout(function(){T(e,t)},r)}else{if(e.classList){e.classList.remove(t);if(e.classList.length===0){e.removeAttribute("class")}}}}function L(e,t){e=M(e);e.classList.toggle(t)}function H(e,t){e=M(e);Y(e.parentElement.children,function(e){T(e,t)});q(e,t)}function A(e,t){e=M(e);if(e.closest){return e.closest(t)}else{do{if(e==null||d(e,t)){return e}}while(e=e&&u(e));return null}}function N(e,t){if(t.indexOf("closest ")===0){return[A(e,t.substr(8))]}else if(t.indexOf("find ")===0){return[C(e,t.substr(5))]}else if(t.indexOf("next ")===0){return[I(e,t.substr(5))]}else if(t.indexOf("previous ")===0){return[k(e,t.substr(9))]}else if(t==="document"){return[document]}else if(t==="window"){return[window]}else{return $().querySelectorAll(t)}}var I=function(e,t){var r=$().querySelectorAll(t);for(var n=0;n=0;n--){var i=r[n];if(i.compareDocumentPosition(e)===Node.DOCUMENT_POSITION_FOLLOWING){return i}}};function ie(e,t){if(t){return N(e,t)[0]}else{return N($().body,e)[0]}}function M(e){if(g(e,"String")){return C(e)}else{return e}}function P(e,t,r){if(p(t)){return{target:$().body,event:e,listener:t}}else{return{target:M(e),event:t,listener:r}}}function D(t,r,n){pr(function(){var e=P(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=p(r);return e?r:n}function X(t,r,n){pr(function(){var e=P(t,r,n);e.target.removeEventListener(e.event,e.listener)});return p(r)?r:n}var ae=$().createElement("output");function F(e,t){var r=Z(e,t);if(r){if(r==="this"){return[oe(e,t)]}else{var n=N(e,r);if(n.length===0){St('The selector "'+r+'" on '+t+" returned no matches!");return[ae]}else{return n}}}}function oe(e,t){return h(e,function(e){return J(e,t)!=null})}function se(e){var t=Z(e,"hx-target");if(t){if(t==="this"){return oe(e,"hx-target")}else{return ie(e,t)}}else{var r=K(e);if(r.boosted){return $().body}else{return e}}}function B(e){var t=z.config.attributesToSettle;for(var r=0;r0){o=e.substr(0,e.indexOf(":"));t=e.substr(e.indexOf(":")+1,e.length)}else{o=e}var r=$().querySelectorAll(t);if(r){Y(r,function(e){var t;var r=i.cloneNode(true);t=$().createDocumentFragment();t.appendChild(r);if(!U(o,e)){t=r}var n={shouldSwap:true,target:e,fragment:t};if(!ee(e,"htmx:oobBeforeSwap",n))return;e=n.target;if(n["shouldSwap"]){Ce(o,e,e,t,a)}Y(a.elts,function(e){ee(e,"htmx:oobAfterSwap",n)})});i.parentNode.removeChild(i)}else{i.parentNode.removeChild(i);Q($().body,"htmx:oobErrorNoTarget",{content:i})}return e}function _(e,t,r){var n=Z(e,"hx-select-oob");if(n){var i=n.split(",");for(let e=0;e0){var t=e.id.replace("'","\\'");var r=i.querySelector(e.tagName+"[id='"+t+"']");if(r&&r!==i){var n=e.cloneNode();j(e,r);a.tasks.push(function(){j(e,n)})}}})}function ue(e){return function(){T(e,z.config.addedClass);mt(e);ht(e);fe(e);ee(e,"htmx:load")}}function fe(e){var t="[autofocus]";var r=d(e,t)?e:e.querySelector(t);if(r!=null){r.focus()}}function ce(e,t,r,n){le(e,r,n);while(r.childNodes.length>0){var i=r.firstChild;q(i,z.config.addedClass);e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE&&i.nodeType!==Node.COMMENT_NODE){n.tasks.push(ue(i))}}}function he(e,t){var r=0;while(r-1){var t=e.replace(/]*>|>)([\s\S]*?)<\/svg>/gim,"");var r=t.match(/]*>|>)([\s\S]*?)<\/title>/im);if(r){return r[2]}}}function Oe(e,t,r,n,i){i.title=Re(n);var a=f(n);if(a){_(r,a,i);a=Ee(r,a);W(a);return Ce(e,r,t,a,i)}}function qe(e,t,r){var n=e.getResponseHeader(t);if(n.indexOf("{")===0){var i=w(n);for(var a in i){if(i.hasOwnProperty(a)){var o=i[a];if(!m(o)){o={value:o}}ee(r,a,o)}}}else{ee(r,n,[])}}var Te=/\s/;var Le=/[\s,]/;var He=/[_$a-zA-Z]/;var Ae=/[_$a-zA-Z0-9]/;var Ne=['"',"'","/"];var Ie=/[^\s]/;function ke(e){var t=[];var r=0;while(r0){var o=t[0];if(o==="]"){n--;if(n===0){if(a===null){i=i+"true"}t.shift();i+=")})";try{var s=Qt(e,function(){return Function(i)()},function(){return true});s.source=i;return s}catch(e){Q($().body,"htmx:syntax:error",{error:e,source:i});return null}}}else if(o==="["){n++}if(Me(o,a,r)){i+="(("+r+"."+o+") ? ("+r+"."+o+") : (window."+o+"))"}else{i=i+o}a=t.shift()}}}function c(e,t){var r="";while(e.length>0&&!e[0].match(t)){r+=e.shift()}return r}var De="input, textarea, select";function Xe(e){var t=J(e,"hx-trigger");var r=[];if(t){var n=ke(t);do{c(n,Ie);var f=n.length;var i=c(n,/[,\[\s]/);if(i!==""){if(i==="every"){var a={trigger:"every"};c(n,Ie);a.pollInterval=v(c(n,/[,\[\s]/));c(n,Ie);var o=Pe(e,n,"event");if(o){a.eventFilter=o}r.push(a)}else if(i.indexOf("sse:")===0){r.push({trigger:"sse",sseEvent:i.substr(4)})}else{var s={trigger:i};var o=Pe(e,n,"event");if(o){s.eventFilter=o}while(n.length>0&&n[0]!==","){c(n,Ie);var l=n.shift();if(l==="changed"){s.changed=true}else if(l==="once"){s.once=true}else if(l==="consume"){s.consume=true}else if(l==="delay"&&n[0]===":"){n.shift();s.delay=v(c(n,Le))}else if(l==="from"&&n[0]===":"){n.shift();var u=c(n,Le);if(u==="closest"||u==="find"||u==="next"||u==="previous"){n.shift();u+=" "+c(n,Le)}s.from=u}else if(l==="target"&&n[0]===":"){n.shift();s.target=c(n,Le)}else if(l==="throttle"&&n[0]===":"){n.shift();s.throttle=v(c(n,Le))}else if(l==="queue"&&n[0]===":"){n.shift();s.queue=c(n,Le)}else if((l==="root"||l==="threshold")&&n[0]===":"){n.shift();s[l]=c(n,Le)}else{Q(e,"htmx:syntax:error",{token:n.shift()})}}r.push(s)}}if(n.length===f){Q(e,"htmx:syntax:error",{token:n.shift()})}c(n,Ie)}while(n[0]===","&&n.shift())}if(r.length>0){return r}else if(d(e,"form")){return[{trigger:"submit"}]}else if(d(e,'input[type="button"]')){return[{trigger:"click"}]}else if(d(e,De)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function Fe(e){K(e).cancelled=true}function Be(e,t,r){var n=K(e);n.timeout=setTimeout(function(){if(re(e)&&n.cancelled!==true){if(!We(r,yt("hx:poll:trigger",{triggerSpec:r,target:e}))){t(e)}Be(e,t,r)}},r.pollInterval)}function je(e){return location.hostname===e.hostname&&G(e,"href")&&G(e,"href").indexOf("#")!==0}function Ue(t,r,e){if(t.tagName==="A"&&je(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"){r.boosted=true;var n,i;if(t.tagName==="A"){n="get";i=G(t,"href")}else{var a=G(t,"method");n=a?a.toLowerCase():"get";if(n==="get"){}i=G(t,"action")}e.forEach(function(e){ze(t,function(e,t){lr(n,i,e,t)},r,e,true)})}}function Ve(e,t){if(e.type==="submit"||e.type==="click"){if(t.tagName==="FORM"){return true}if(d(t,'input[type="submit"], button')&&A(t,"form")!==null){return true}if(t.tagName==="A"&&t.href&&(t.getAttribute("href")==="#"||t.getAttribute("href").indexOf("#")!==0)){return true}}return false}function _e(e,t){return K(e).boosted&&e.tagName==="A"&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function We(e,t){var r=e.eventFilter;if(r){try{return r(t)!==true}catch(e){Q($().body,"htmx:eventFilter:error",{error:e,source:r.source});return true}}return false}function ze(i,a,e,o,s){var l=K(i);var t;if(o.from){t=N(i,o.from)}else{t=[i]}if(o.changed){l.lastValue=i.value}Y(t,function(r){var n=function(e){if(!re(i)){r.removeEventListener(o.trigger,n);return}if(_e(i,e)){return}if(s||Ve(e,i)){e.preventDefault()}if(We(o,e)){return}var t=K(e);t.triggerSpec=o;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(i)<0){t.handledFor.push(i);if(o.consume){e.stopPropagation()}if(o.target&&e.target){if(!d(e.target,o.target)){return}}if(o.once){if(l.triggeredOnce){return}else{l.triggeredOnce=true}}if(o.changed){if(l.lastValue===i.value){return}else{l.lastValue=i.value}}if(l.delayed){clearTimeout(l.delayed)}if(l.throttle){return}if(o.throttle){if(!l.throttle){a(i,e);l.throttle=setTimeout(function(){l.throttle=null},o.throttle)}}else if(o.delay){l.delayed=setTimeout(function(){a(i,e)},o.delay)}else{a(i,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:o.trigger,listener:n,on:r});r.addEventListener(o.trigger,n)})}var Ge=false;var Je=null;function $e(){if(!Je){Je=function(){Ge=true};window.addEventListener("scroll",Je);setInterval(function(){if(Ge){Ge=false;Y($().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(e){Ze(e)})}},200)}}function Ze(t){if(!o(t,"data-hx-revealed")&&y(t)){t.setAttribute("data-hx-revealed","true");var e=K(t);if(e.initHash){ee(t,"revealed")}else{t.addEventListener("htmx:afterProcessNode",function(e){ee(t,"revealed")},{once:true})}}}function Ke(e,t,r){var n=b(r);for(var i=0;i=0){var t=tt(n);setTimeout(function(){Ye(s,r,n+1)},t)}};t.onopen=function(e){n=0};K(s).webSocket=t;t.addEventListener("message",function(e){if(Qe(s)){return}var t=e.data;wt(s,function(e){t=e.transformResponse(t,null,s)});var r=Zt(s);var n=f(t);var i=x(n.children);for(var a=0;a0){ee(u,"htmx:validation:halted",i);return}t.send(JSON.stringify(l));if(Ve(e,u)){e.preventDefault()}})}else{Q(u,"htmx:noWebSocketSourceError")}}function tt(e){var t=z.config.wsReconnectDelay;if(typeof t==="function"){return t(e)}if(t==="full-jitter"){var r=Math.min(e,6);var n=1e3*Math.pow(2,r);return n*Math.random()}St('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function rt(e,t,r){var n=b(r);for(var i=0;iz.config.historyCacheSize){i.shift()}while(i.length>0){try{localStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){Q($().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function Ot(e){if(!S()){return null}var t=w(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r=200&&this.status<400){ee($().body,"htmx:historyCacheMissLoad",o);var e=f(this.response);e=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;var t=Ct();var r=Zt(t);var n=Re(this.response);if(n){var i=C("title");if(i){i.innerHTML=n}else{window.document.title=n}}Se(t,e,r);At(r.tasks);Et=a;ee($().body,"htmx:historyRestore",{path:a,cacheMiss:true,serverResponse:this.response})}else{Q($().body,"htmx:historyCacheMissLoadError",o)}};e.send()}function It(e){Tt();e=e||location.pathname+location.search;var t=Ot(e);if(t){var r=f(t.content);var n=Ct();var i=Zt(n);Se(n,r,i);At(i.tasks);document.title=t.title;window.scrollTo(0,t.scroll);Et=e;ee($().body,"htmx:historyRestore",{path:e,item:t})}else{if(z.config.refreshOnHistoryMiss){window.location.reload(true)}else{Nt(e)}}}function kt(e){var t=F(e,"hx-indicator");if(t==null){t=[e]}Y(t,function(e){var t=K(e);t.requestCount=(t.requestCount||0)+1;e.classList["add"].call(e.classList,z.config.requestClass)});return t}function Mt(e){Y(e,function(e){var t=K(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.classList["remove"].call(e.classList,z.config.requestClass)}})}function Pt(e,t){for(var r=0;r=0}function Gt(e,t){var r=t?t:Z(e,"hx-swap");var n={swapStyle:K(e).boosted?"innerHTML":z.config.defaultSwapStyle,swapDelay:z.config.defaultSwapDelay,settleDelay:z.config.defaultSettleDelay};if(K(e).boosted&&!zt(e)){n["show"]="top"}if(r){var i=b(r);if(i.length>0){n["swapStyle"]=i[0];for(var a=1;a0?l.join(":"):null;n["scroll"]=f;n["scrollTarget"]=u}if(o.indexOf("show:")===0){var c=o.substr(5);var l=c.split(":");var h=l.pop();var u=l.length>0?l.join(":"):null;n["show"]=h;n["showTarget"]=u}if(o.indexOf("focus-scroll:")===0){var d=o.substr("focus-scroll:".length);n["focusScroll"]=d=="true"}}}}return n}function Jt(e){return Z(e,"hx-encoding")==="multipart/form-data"||d(e,"form")&&G(e,"enctype")==="multipart/form-data"}function $t(t,r,n){var i=null;wt(r,function(e){if(i==null){i=e.encodeParameters(t,n,r)}});if(i!=null){return i}else{if(Jt(r)){return Vt(n)}else{return Ut(n)}}}function Zt(e){return{tasks:[],elts:[e]}}function Kt(e,t){var r=e[0];var n=e[e.length-1];if(t.scroll){var i=null;if(t.scrollTarget){i=ie(r,t.scrollTarget)}if(t.scroll==="top"&&(r||i)){i=i||r;i.scrollTop=0}if(t.scroll==="bottom"&&(n||i)){i=i||n;i.scrollTop=i.scrollHeight}}if(t.show){var i=null;if(t.showTarget){var a=t.showTarget;if(t.showTarget==="window"){a="body"}i=ie(r,a)}if(t.show==="top"&&(r||i)){i=i||r;i.scrollIntoView({block:"start",behavior:z.config.scrollBehavior})}if(t.show==="bottom"&&(n||i)){i=i||n;i.scrollIntoView({block:"end",behavior:z.config.scrollBehavior})}}}function Yt(e,t,r,n){if(n==null){n={}}if(e==null){return n}var i=J(e,t);if(i){var a=i.trim();var o=r;if(a==="unset"){return null}if(a.indexOf("javascript:")===0){a=a.substr(11);o=true}else if(a.indexOf("js:")===0){a=a.substr(3);o=true}if(a.indexOf("{")!==0){a="{"+a+"}"}var s;if(o){s=Qt(e,function(){return Function("return ("+a+")")()},{})}else{s=w(a)}for(var l in s){if(s.hasOwnProperty(l)){if(n[l]==null){n[l]=s[l]}}}}return Yt(u(e),t,r,n)}function Qt(e,t,r){if(z.config.allowEval){return t()}else{Q(e,"htmx:evalDisallowedError");return r}}function er(e,t){return Yt(e,"hx-vars",true,t)}function tr(e,t){return Yt(e,"hx-vals",false,t)}function rr(e){return ne(er(e),tr(e))}function nr(t,r,n){if(n!==null){try{t.setRequestHeader(r,n)}catch(e){t.setRequestHeader(r,encodeURIComponent(n));t.setRequestHeader(r+"-URI-AutoEncoded","true")}}}function ir(t){if(t.responseURL&&typeof URL!=="undefined"){try{var e=new URL(t.responseURL);return e.pathname+e.search}catch(e){Q($().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function ar(e,t){return e.getAllResponseHeaders().match(t)}function or(e,t,r){e=e.toLowerCase();if(r){if(r instanceof Element||g(r,"String")){return lr(e,t,null,null,{targetOverride:M(r),returnPromise:true})}else{return lr(e,t,M(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:M(r.target),swapOverride:r.swap,returnPromise:true})}}else{return lr(e,t,null,null,{returnPromise:true})}}function sr(e){var t=[];while(e){t.push(e);e=e.parentElement}return t}function lr(e,t,n,r,i,f){var c=null;var h=null;i=i!=null?i:{};if(i.returnPromise&&typeof Promise!=="undefined"){var d=new Promise(function(e,t){c=e;h=t})}if(n==null){n=$().body}var v=i.handler||fr;if(!re(n)){return}var g=i.targetOverride||se(n);if(g==null||g==ae){Q(n,"htmx:targetError",{target:J(n,"hx-target")});return}if(!f){var p=function(){return lr(e,t,n,r,i,true)};var m={target:g,elt:n,path:t,verb:e,triggeringEvent:r,etc:i,issueRequest:p};if(ee(n,"htmx:confirm",m)===false){return}}var x=n;var a=K(n);var y=Z(n,"hx-sync");var b=null;var w=false;if(y){var S=y.split(":");var E=S[0].trim();if(E==="this"){x=oe(n,"hx-sync")}else{x=ie(n,E)}y=(S[1]||"drop").trim();a=K(x);if(y==="drop"&&a.xhr&&a.abortable!==true){return}else if(y==="abort"){if(a.xhr){return}else{w=true}}else if(y==="replace"){ee(x,"htmx:abort")}else if(y.indexOf("queue")===0){var C=y.split(" ");b=(C[1]||"last").trim()}}if(a.xhr){if(a.abortable){ee(x,"htmx:abort")}else{if(b==null){if(r){var R=K(r);if(R&&R.triggerSpec&&R.triggerSpec.queue){b=R.triggerSpec.queue}}if(b==null){b="last"}}if(a.queuedRequests==null){a.queuedRequests=[]}if(b==="first"&&a.queuedRequests.length===0){a.queuedRequests.push(function(){lr(e,t,n,r,i)})}else if(b==="all"){a.queuedRequests.push(function(){lr(e,t,n,r,i)})}else if(b==="last"){a.queuedRequests=[];a.queuedRequests.push(function(){lr(e,t,n,r,i)})}return}}var o=new XMLHttpRequest;a.xhr=o;a.abortable=w;var s=function(){a.xhr=null;a.abortable=false;if(a.queuedRequests!=null&&a.queuedRequests.length>0){var e=a.queuedRequests.shift();e()}};var O=Z(n,"hx-prompt");if(O){var q=prompt(O);if(q===null||!ee(n,"htmx:prompt",{prompt:q,target:g})){te(c);s();return d}}var T=Z(n,"hx-confirm");if(T){if(!confirm(T)){te(c);s();return d}}var L=_t(n,g,q);if(i.headers){L=ne(L,i.headers)}var H=Bt(n,e);var A=H.errors;var N=H.values;if(i.values){N=ne(N,i.values)}var I=rr(n);var k=ne(N,I);var M=Wt(k,n);if(e!=="get"&&!Jt(n)){L["Content-Type"]="application/x-www-form-urlencoded"}if(z.config.getCacheBusterParam&&e==="get"){M["org.htmx.cache-buster"]=G(g,"id")||"true"}if(t==null||t===""){t=$().location.href}var P=Yt(n,"hx-request");var D=K(n).boosted;var l={boosted:D,parameters:M,unfilteredParameters:k,headers:L,target:g,verb:e,errors:A,withCredentials:i.credentials||P.credentials||z.config.withCredentials,timeout:i.timeout||P.timeout||z.config.timeout,path:t,triggeringEvent:r};if(!ee(n,"htmx:configRequest",l)){te(c);s();return d}t=l.path;e=l.verb;L=l.headers;M=l.parameters;A=l.errors;if(A&&A.length>0){ee(n,"htmx:validation:halted",l);te(c);s();return d}var X=t.split("#");var F=X[0];var B=X[1];var j=null;if(e==="get"){j=F;var U=Object.keys(M).length!==0;if(U){if(j.indexOf("?")<0){j+="?"}else{j+="&"}j+=Ut(M);if(B){j+="#"+B}}o.open("GET",j,true)}else{o.open(e.toUpperCase(),t,true)}o.overrideMimeType("text/html");o.withCredentials=l.withCredentials;o.timeout=l.timeout;if(P.noHeaders){}else{for(var V in L){if(L.hasOwnProperty(V)){var _=L[V];nr(o,V,_)}}}var u={xhr:o,target:g,requestConfig:l,etc:i,boosted:D,pathInfo:{requestPath:t,finalRequestPath:j||t,anchor:B}};o.onload=function(){try{var e=sr(n);u.pathInfo.responsePath=ir(o);v(n,u);Mt(W);ee(n,"htmx:afterRequest",u);ee(n,"htmx:afterOnLoad",u);if(!re(n)){var t=null;while(e.length>0&&t==null){var r=e.shift();if(re(r)){t=r}}if(t){ee(t,"htmx:afterRequest",u);ee(t,"htmx:afterOnLoad",u)}}te(c);s()}catch(e){Q(n,"htmx:onLoadError",ne({error:e},u));throw e}};o.onerror=function(){Mt(W);Q(n,"htmx:afterRequest",u);Q(n,"htmx:sendError",u);te(h);s()};o.onabort=function(){Mt(W);Q(n,"htmx:afterRequest",u);Q(n,"htmx:sendAbort",u);te(h);s()};o.ontimeout=function(){Mt(W);Q(n,"htmx:afterRequest",u);Q(n,"htmx:timeout",u);te(h);s()};if(!ee(n,"htmx:beforeRequest",u)){te(c);s();return d}var W=kt(n);Y(["loadstart","loadend","progress","abort"],function(t){Y([o,o.upload],function(e){e.addEventListener(t,function(e){ee(n,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ee(n,"htmx:beforeSend",u);o.send(e==="get"?null:$t(o,n,M));return d}function ur(e,t){var r=t.xhr;var n=null;var i=null;if(ar(r,/HX-Push:/i)){n=r.getResponseHeader("HX-Push");i="push"}else if(ar(r,/HX-Push-Url:/i)){n=r.getResponseHeader("HX-Push-Url");i="push"}else if(ar(r,/HX-Replace-Url:/i)){n=r.getResponseHeader("HX-Replace-Url");i="replace"}if(n){if(n==="false"){return{}}else{return{type:i,path:n}}}var a=t.pathInfo.finalRequestPath;var o=t.pathInfo.responsePath;var s=Z(e,"hx-push-url");var f=Z(e,"hx-replace-url");var c=K(e).boosted;var l=null;var u=null;if(s){l="push";u=s}else if(f){l="replace";u=f}else if(c){l="push";u=o||a}if(u){if(u==="false"){return{}}if(u==="true"){u=o||a}if(t.pathInfo.anchor&&u.indexOf("#")===-1){u=u+"#"+t.pathInfo.anchor}return{type:l,path:u}}else{return{}}}function fr(s,l){var u=l.xhr;var f=l.target;var n=l.etc;if(!ee(s,"htmx:beforeOnLoad",l))return;if(ar(u,/HX-Trigger:/i)){qe(u,"HX-Trigger",s)}if(ar(u,/HX-Location:/i)){Tt();var e=u.getResponseHeader("HX-Location");var c;if(e.indexOf("{")===0){c=w(e);e=c["path"];delete c["path"]}or("GET",e,c).then(function(){Lt(e)});return}if(ar(u,/HX-Redirect:/i)){location.href=u.getResponseHeader("HX-Redirect");return}if(ar(u,/HX-Refresh:/i)){if("true"===u.getResponseHeader("HX-Refresh")){location.reload();return}}if(ar(u,/HX-Retarget:/i)){l.target=$().querySelector(u.getResponseHeader("HX-Retarget"))}var h=ur(s,l);var i=u.status>=200&&u.status<400&&u.status!==204;var d=u.response;var t=u.status>=400;var r=ne({shouldSwap:i,serverResponse:d,isError:t},l);if(!ee(f,"htmx:beforeSwap",r))return;f=r.target;d=r.serverResponse;t=r.isError;l.target=f;l.failed=t;l.successful=!t;if(r.shouldSwap){if(u.status===286){Fe(s)}wt(s,function(e){d=e.transformResponse(d,u,s)});if(h.type){Tt()}var a=n.swapOverride;if(ar(u,/HX-Reswap:/i)){a=u.getResponseHeader("HX-Reswap")}var c=Gt(s,a);f.classList.add(z.config.swappingClass);var o=function(){try{var e=document.activeElement;var t={};try{t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null}}catch(e){}var n=Zt(f);Oe(c.swapStyle,f,s,d,n);if(t.elt&&!re(t.elt)&&t.elt.id){var r=document.getElementById(t.elt.id);var i={preventScroll:c.focusScroll!==undefined?!c.focusScroll:!z.config.defaultFocusScroll};if(r){if(t.start&&r.setSelectionRange){try{r.setSelectionRange(t.start,t.end)}catch(e){}}r.focus(i)}}f.classList.remove(z.config.swappingClass);Y(n.elts,function(e){if(e.classList){e.classList.add(z.config.settlingClass)}ee(e,"htmx:afterSwap",l)});if(ar(u,/HX-Trigger-After-Swap:/i)){var a=s;if(!re(s)){a=$().body}qe(u,"HX-Trigger-After-Swap",a)}var o=function(){Y(n.tasks,function(e){e.call()});Y(n.elts,function(e){if(e.classList){e.classList.remove(z.config.settlingClass)}ee(e,"htmx:afterSettle",l)});if(h.type){if(h.type==="push"){Lt(h.path);ee($().body,"htmx:pushedIntoHistory",{path:h.path})}else{Ht(h.path);ee($().body,"htmx:replacedInHistory",{path:h.path})}}if(l.pathInfo.anchor){var e=C("#"+l.pathInfo.anchor);if(e){e.scrollIntoView({block:"start",behavior:"auto"})}}if(n.title){var t=C("title");if(t){t.innerHTML=n.title}else{window.document.title=n.title}}Kt(n.elts,c);if(ar(u,/HX-Trigger-After-Settle:/i)){var r=s;if(!re(s)){r=$().body}qe(u,"HX-Trigger-After-Settle",r)}};if(c.settleDelay>0){setTimeout(o,c.settleDelay)}else{o()}}catch(e){Q(s,"htmx:swapError",l);throw e}};if(c.swapDelay>0){setTimeout(o,c.swapDelay)}else{o()}}if(t){Q(s,"htmx:responseError",ne({error:"Response Status Error Code "+u.status+" from "+l.pathInfo.requestPath},l))}}var cr={};function hr(){return{init:function(e){return null},onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function dr(e,t){if(t.init){t.init(r)}cr[e]=ne(hr(),t)}function vr(e){delete cr[e]}function gr(e,r,n){if(e==undefined){return r}if(r==undefined){r=[]}if(n==undefined){n=[]}var t=J(e,"hx-ext");if(t){Y(t.split(","),function(e){e=e.replace(/ /g,"");if(e.slice(0,7)=="ignore:"){n.push(e.slice(7));return}if(n.indexOf(e)<0){var t=cr[e];if(t&&r.indexOf(t)<0){r.push(t)}}})}return gr(u(e),r,n)}function pr(e){if($().readyState!=="loading"){e()}else{$().addEventListener("DOMContentLoaded",e)}}function mr(){if(z.config.includeIndicatorStyles!==false){$().head.insertAdjacentHTML("beforeend","")}}function xr(){var e=$().querySelector('meta[name="htmx-config"]');if(e){return w(e.content)}else{return null}}function yr(){var e=xr();if(e){z.config=ne(z.config,e)}}pr(function(){yr();mr();var e=$().body;mt(e);var t=$().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){var t=e.target;var r=K(t);if(r&&r.xhr){r.xhr.abort()}});window.onpopstate=function(e){if(e.state&&e.state.htmx){It();Y(t,function(e){ee(e,"htmx:restored",{document:$(),triggerEvent:ee})})}};setTimeout(function(){ee(e,"htmx:load",{})},0)});return z}()}); diff --git a/folkugat_web/assets/static/js/pdf/pdf.mjs b/folkugat_web/assets/static/js/pdf/pdf.mjs new file mode 100644 index 0000000..aa2be7d --- /dev/null +++ b/folkugat_web/assets/static/js/pdf/pdf.mjs @@ -0,0 +1,16883 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 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 + */ + +/******/ var __webpack_modules__ = ({ + +/***/ 640: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + AnnotationLayer: () => (/* binding */ AnnotationLayer), + FreeTextAnnotationElement: () => (/* binding */ FreeTextAnnotationElement), + InkAnnotationElement: () => (/* binding */ InkAnnotationElement), + StampAnnotationElement: () => (/* binding */ StampAnnotationElement) +}); + +// EXTERNAL MODULE: ./src/shared/util.js +var util = __webpack_require__(266); +// EXTERNAL MODULE: ./src/display/display_utils.js +var display_utils = __webpack_require__(473); +// EXTERNAL MODULE: ./src/display/annotation_storage.js +var annotation_storage = __webpack_require__(780); +;// CONCATENATED MODULE: ./src/shared/scripting_utils.js +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} +function scaleAndClamp(x) { + return Math.max(0, Math.min(255, 255 * x)); +} +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_rgb([g]) { + g = scaleAndClamp(g); + return [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_rgb(color) { + return color.map(scaleAndClamp); + } + static RGB_HTML(color) { + return `#${color.map(makeColorComp).join("")}`; + } + static T_HTML() { + return "#00000000"; + } + static T_rgb() { + return [null]; + } + 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_rgb([c, y, m, k]) { + return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))]; + } + static CMYK_HTML(components) { + const rgb = this.CMYK_RGB(components).slice(1); + return this.RGB_HTML(rgb); + } + 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]; + } +} + +// EXTERNAL MODULE: ./src/display/xfa_layer.js +var xfa_layer = __webpack_require__(160); +;// CONCATENATED MODULE: ./src/display/annotation_layer.js + + + + + +const DEFAULT_TAB_INDEX = 1000; +const DEFAULT_FONT_SIZE = 9; +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); + case "Sig": + return new SignatureWidgetAnnotationElement(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 { + #hasBorder = false; + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + 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.parent = parameters.parent; + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + if (createQuadrilaterals) { + this._createQuadrilaterals(); + } + } + static _hasPopupData({ + titleObj, + contentsObj, + richText + }) { + return !!(titleObj?.str || contentsObj?.str || richText?.str); + } + get hasPopupData() { + return AnnotationElement._hasPopupData(this.data); + } + _createContainer(ignoreBorder) { + const { + data, + parent: { + page, + viewport + } + } = this; + const container = document.createElement("section"); + container.setAttribute("data-annotation-id", data.id); + if (!(this instanceof WidgetAnnotationElement)) { + container.tabIndex = DEFAULT_TAB_INDEX; + } + container.style.zIndex = this.parent.zIndex++; + if (this.data.popupRef) { + container.setAttribute("aria-haspopup", "dialog"); + } + if (data.noRotate) { + container.classList.add("norotate"); + } + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + if (!data.rect || this instanceof PopupAnnotationElement) { + const { + rotation + } = data; + if (!data.hasOwnCanvas && rotation !== 0) { + this.setRotation(rotation, container); + } + return container; + } + const { + width, + height + } = getRectDims(data.rect); + 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 (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } else if (this instanceof RadioButtonWidgetAnnotationElement) { + const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`; + 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 || null; + if (borderColor) { + this.#hasBorder = true; + container.style.borderColor = util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + container.style.left = `${100 * (rect[0] - pageX) / pageWidth}%`; + container.style.top = `${100 * (rect[1] - pageY) / pageHeight}%`; + const { + rotation + } = data; + if (data.hasOwnCanvas || rotation === 0) { + container.style.width = `${100 * width / pageWidth}%`; + container.style.height = `${100 * height / pageHeight}%`; + } else { + this.setRotation(rotation, container); + } + return container; + } + setRotation(angle, container = this.container) { + if (!this.data.rect) { + return; + } + const { + pageWidth, + pageHeight + } = this.parent.viewport.rawDims; + const { + width, + height + } = getRectDims(this.data.rect); + let elementWidth, elementHeight; + if (angle % 180 === 0) { + elementWidth = 100 * width / pageWidth; + elementHeight = 100 * height / pageHeight; + } else { + elementWidth = 100 * height / pageWidth; + elementHeight = 100 * width / pageHeight; + } + container.style.width = `${elementWidth}%`; + container.style.height = `${elementHeight}%`; + container.setAttribute("data-main-rotation", (360 - angle) % 360); + } + get _commonActions() { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + const colorType = color[0]; + const colorArray = color.slice(1); + event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray); + this.annotationStorage.setValue(this.data.id, { + [styleName]: ColorConverters[`${colorType}_rgb`](colorArray) + }); + }; + return (0,util.shadow)(this, "_commonActions", { + display: event => { + const { + display + } = event.detail; + const hidden = display % 2 === 1; + this.container.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + noView: hidden, + noPrint: display === 1 || display === 2 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + noPrint: !event.detail.print + }); + }, + hidden: event => { + const { + hidden + } = event.detail; + this.container.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + noPrint: hidden, + noView: hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + event.target.disabled = event.detail.readonly; + }, + required: event => { + this._setRequired(event.target, event.detail.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); + }, + rotation: event => { + const angle = event.detail.rotation; + this.setRotation(angle); + this.annotationStorage.setValue(this.data.id, { + rotation: angle + }); + } + }); + } + _dispatchEventFromSandbox(actions, jsEvent) { + const commonActions = this._commonActions; + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + 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) { + const eventProxy = { + detail: { + [actionName]: detail + }, + target: element + }; + action(eventProxy); + delete storedData[actionName]; + } + } + } + _createQuadrilaterals() { + if (!this.container) { + return; + } + const { + quadPoints + } = this.data; + if (!quadPoints) { + return; + } + const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect; + if (quadPoints.length === 1) { + const [, { + x: trX, + y: trY + }, { + x: blX, + y: blY + }] = quadPoints[0]; + if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) { + return; + } + } + const { + style + } = this.container; + let svgBuffer; + if (this.#hasBorder) { + const { + borderColor, + borderWidth + } = style; + style.borderWidth = 0; + svgBuffer = ["url('data:image/svg+xml;utf8,", ``, ``]; + this.container.classList.add("hasBorder"); + } + const width = rectTrX - rectBlX; + const height = rectTrY - rectBlY; + const { + svgFactory + } = this; + const svg = svgFactory.createElement("svg"); + svg.classList.add("quadrilateralsContainer"); + svg.setAttribute("width", 0); + svg.setAttribute("height", 0); + const defs = svgFactory.createElement("defs"); + svg.append(defs); + const clipPath = svgFactory.createElement("clipPath"); + const id = `clippath_${this.data.id}`; + clipPath.setAttribute("id", id); + clipPath.setAttribute("clipPathUnits", "objectBoundingBox"); + defs.append(clipPath); + for (const [, { + x: trX, + y: trY + }, { + x: blX, + y: blY + }] of quadPoints) { + const rect = svgFactory.createElement("rect"); + const x = (blX - rectBlX) / width; + const y = (rectTrY - trY) / height; + const rectWidth = (trX - blX) / width; + const rectHeight = (trY - blY) / height; + rect.setAttribute("x", x); + rect.setAttribute("y", y); + rect.setAttribute("width", rectWidth); + rect.setAttribute("height", rectHeight); + clipPath.append(rect); + svgBuffer?.push(``); + } + if (this.#hasBorder) { + svgBuffer.push(`')`); + style.backgroundImage = svgBuffer.join(""); + } + this.container.append(svg); + this.container.style.clipPath = `url(#${id})`; + } + _createPopup() { + const { + container, + data + } = this; + container.setAttribute("aria-haspopup", "dialog"); + const popup = new PopupAnnotationElement({ + data: { + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + parentRect: data.rect, + borderStyle: 0, + id: `popup_${data.id}`, + rotation: data.rotation + }, + parent: this.parent, + elements: [this] + }); + this.parent.div.append(popup.render()); + } + 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.querySelector(`[data-element-id="${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 { + exportValue + } = domElement; + const id = domElement.getAttribute("data-element-id"); + if (id === skipId) { + continue; + } + if (!GetElementsByNameSet.has(domElement)) { + continue; + } + fields.push({ + id, + exportValue, + domElement + }); + } + return fields; + } + show() { + if (this.container) { + this.container.hidden = false; + } + this.popup?.maybeShow(); + } + hide() { + if (this.container) { + this.container.hidden = true; + } + this.popup?.forceHide(); + } + getElementsToTriggerPopup() { + return this.container; + } + addHighlightArea() { + const triggers = this.getElementsToTriggerPopup(); + if (Array.isArray(triggers)) { + for (const element of triggers) { + element.classList.add("highlightArea"); + } + } else { + triggers.classList.add("highlightArea"); + } + } + get _isEditable() { + return false; + } + _editOnDoubleClick() { + if (!this._isEditable) { + return; + } + const { + annotationEditorType: mode, + data: { + id: editId + } + } = this; + this.container.addEventListener("dblclick", () => { + this.linkService.eventBus?.dispatch("switchannotationeditormode", { + source: this, + mode, + editId + }); + }); + } +} +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters, options = null) { + super(parameters, { + isRenderable: true, + ignoreBorder: !!options?.ignoreBorder, + createQuadrilaterals: true + }); + this.isTooltipOnly = parameters.data.isTooltipOnly; + } + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + link.setAttribute("data-element-id", data.id); + let isBound = false; + if (data.url) { + linkService.addLinkAttributes(link, data.url, data.newWindow); + isBound = true; + } else if (data.action) { + this._bindNamedAction(link, data.action); + isBound = true; + } else if (data.attachment) { + this.#bindAttachment(link, data.attachment, data.attachmentDest); + isBound = true; + } else if (data.setOCGState) { + this.#bindSetOCGState(link, data.setOCGState); + isBound = true; + } else if (data.dest) { + this._bindLink(link, data.dest); + isBound = true; + } else { + if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + this._bindJSAction(link, data); + isBound = true; + } + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + isBound = true; + } else if (this.isTooltipOnly && !isBound) { + this._bindLink(link, ""); + isBound = true; + } + } + this.container.classList.add("linkAnnotation"); + if (isBound) { + this.container.append(link); + } + return this.container; + } + #setInternalLink() { + this.container.setAttribute("data-internal-link", ""); + } + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + return false; + }; + if (destination || destination === "") { + this.#setInternalLink(); + } + } + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + this.#setInternalLink(); + } + #bindAttachment(link, attachment, dest = null) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest); + return false; + }; + this.#setInternalLink(); + } + #bindSetOCGState(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeSetOCGState(action); + return false; + }; + this.#setInternalLink(); + } + _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; + } + this.#setInternalLink(); + } + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + this.#setInternalLink(); + 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 = () => { + 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.querySelector(`[data-element-id="${id}"]`); + if (!domElement) { + continue; + } else if (!GetElementsByNameSet.has(domElement)) { + (0,util.warn)(`_bindResetFormAction - element not allowed: ${id}`); + 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) { + super(parameters, { + isRenderable: true + }); + } + render() { + this.container.classList.add("textAnnotation"); + const image = document.createElement("img"); + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.setAttribute("data-l10n-id", "pdfjs-text-annotation-type"); + image.setAttribute("data-l10n-args", JSON.stringify({ + type: this.data.name + })); + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + this.container.append(image); + return this.container; + } +} +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + return this.container; + } + showElementAndHideCanvas(element) { + if (this.data.hasOwnCanvas) { + if (element.previousSibling?.nodeName === "CANVAS") { + element.previousSibling.hidden = true; + } + element.hidden = false; + } + } + _getKeyModifier(event) { + return util.FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey; + } + _setEventListener(element, elementData, 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 => { + if (baseName === "blur") { + if (!elementData.focused || !event.relatedTarget) { + return; + } + elementData.focused = false; + } else if (baseName === "focus") { + if (elementData.focused) { + return; + } + elementData.focused = true; + } + if (!valueGetter) { + return; + } + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event) + } + }); + }); + } + } + _setEventListeners(element, elementData, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + if (eventName === "Focus" || eventName === "Blur") { + elementData ||= { + focused: false + }; + } + this._setEventListener(element, elementData, baseName, eventName, getter); + if (eventName === "Focus" && !this.data.actions?.Blur) { + this._setEventListener(element, elementData, "blur", "Blur", null); + } else if (eventName === "Blur" && !this.data.actions?.Focus) { + this._setEventListener(element, elementData, "focus", "Focus", null); + } + } + } + } + _setBackgroundColor(element) { + const color = this.data.backgroundColor || null; + element.style.backgroundColor = color === null ? "transparent" : util.Util.makeHexColor(color[0], color[1], color[2]); + } + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontColor + } = this.data.defaultAppearanceData; + const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE; + const style = element.style; + let computedFontSize; + const BORDER_SIZE = 2; + const roundToOneDecimal = x => Math.round(10 * x) / 10; + if (this.data.multiLine) { + const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); + const numberOfLines = Math.round(height / (util.LINE_FACTOR * fontSize)) || 1; + const lineHeight = height / numberOfLines; + computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / util.LINE_FACTOR)); + } else { + const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); + computedFontSize = Math.min(fontSize, roundToOneDecimal(height / util.LINE_FACTOR)); + } + style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`; + style.color = util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + } + _setRequired(element, isRequired) { + if (isRequired) { + element.setAttribute("required", true); + } else { + element.removeAttribute("required"); + } + element.setAttribute("aria-required", isRequired); + } +} +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !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.classList.add("textWidgetAnnotation"); + let element = null; + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let textContent = storedData.value || ""; + const maxLen = storage.getValue(id, { + charLimit: this.data.maxLen + }).charLimit; + if (maxLen && textContent.length > maxLen) { + textContent = textContent.slice(0, maxLen); + } + let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join("\n") || null; + if (fieldFormattedValues && this.data.comb) { + fieldFormattedValues = fieldFormattedValues.replaceAll(/\s+/g, ""); + } + const elementData = { + userValue: textContent, + formattedValue: fieldFormattedValues, + lastCommittedValue: null, + commitKey: 1, + focused: false + }; + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = fieldFormattedValues ?? textContent; + if (this.data.doNotScroll) { + element.style.overflowY = "hidden"; + } + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", fieldFormattedValues ?? textContent); + if (this.data.doNotScroll) { + element.style.overflowX = "hidden"; + } + } + if (this.data.hasOwnCanvas) { + element.hidden = true; + } + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = this.data.readOnly; + element.name = this.data.fieldName; + element.tabIndex = DEFAULT_TAB_INDEX; + this._setRequired(element, this.data.required); + if (maxLen) { + element.maxLength = maxLen; + } + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + elementData.formattedValue = null; + }); + 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.focused) { + return; + } + const { + target + } = event; + if (elementData.userValue) { + target.value = elementData.userValue; + } + elementData.lastCommittedValue = target.value; + elementData.commitKey = 1; + elementData.focused = true; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + this.showElementAndHideCanvas(jsEvent.target); + 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); + }, + charLimit: event => { + const { + charLimit + } = event.detail; + const { + target + } = event; + if (charLimit === 0) { + target.removeAttribute("maxLength"); + return; + } + target.setAttribute("maxLength", charLimit); + let value = elementData.userValue; + if (!value || value.length <= charLimit) { + return; + } + value = value.slice(0, charLimit); + target.value = elementData.userValue = value; + storage.setValue(id, { + value + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: target.selectionStart, + selEnd: target.selectionEnd + } + }); + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + elementData.commitKey = 1; + let commitKey = -1; + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter" && !this.data.multiLine) { + commitKey = 2; + } else if (event.key === "Tab") { + elementData.commitKey = 3; + } + if (commitKey === -1) { + return; + } + const { + value + } = event.target; + if (elementData.lastCommittedValue === value) { + return; + } + elementData.lastCommittedValue = value; + 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 => { + if (!elementData.focused || !event.relatedTarget) { + return; + } + elementData.focused = false; + const { + value + } = event.target; + elementData.userValue = value; + if (elementData.lastCommittedValue !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: elementData.commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + _blurListener(event); + }); + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + elementData.lastCommittedValue = null; + 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, elementData, [["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.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`; + } + } else { + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; + if (this.data.hasOwnCanvas) { + element.hidden = true; + } + } + this._setTextStyle(element); + this._setBackgroundColor(element); + this._setDefaultPropertiesFromJS(element); + this.container.append(element); + return this.container; + } +} +class SignatureWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: !!parameters.data.hasOwnCanvas + }); + } +} +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.classList.add("buttonWidgetAnnotation", "checkBox"); + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + this._setRequired(element, this.data.required); + element.type = "checkbox"; + element.name = data.fieldName; + if (value) { + element.setAttribute("checked", true); + } + 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, null, [["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.append(element); + return this.container; + } +} +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + render() { + this.container.classList.add("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.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + this._setRequired(element, this.data.required); + element.type = "radio"; + element.name = data.fieldName; + if (value) { + element.setAttribute("checked", true); + } + 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, null, [["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.append(element); + return this.container; + } +} +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + constructor(parameters) { + super(parameters, { + ignoreBorder: parameters.data.hasAppearance + }); + } + render() { + const container = super.render(); + container.classList.add("buttonWidgetAnnotation", "pushButton"); + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + const linkElement = container.lastChild; + if (this.enableScripting && this.hasJSActions && linkElement) { + this._setDefaultPropertiesFromJS(linkElement); + linkElement.addEventListener("updatefromsandbox", jsEvent => { + this._dispatchEventFromSandbox({}, jsEvent); + }); + } + return container; + } +} +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + render() { + this.container.classList.add("choiceWidgetAnnotation"); + const storage = this.annotationStorage; + const id = this.data.id; + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + const selectElement = document.createElement("select"); + GetElementsByNameSet.add(selectElement); + selectElement.setAttribute("data-element-id", id); + selectElement.disabled = this.data.readOnly; + this._setRequired(selectElement, this.data.required); + selectElement.name = this.data.fieldName; + selectElement.tabIndex = DEFAULT_TAB_INDEX; + let addAnEmptyEntry = this.data.combo && this.data.options.length > 0; + 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 (storedData.value.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + addAnEmptyEntry = false; + } + selectElement.append(optionElement); + } + let removeEmptyEntry = null; + if (addAnEmptyEntry) { + const noneOptionElement = document.createElement("option"); + noneOptionElement.value = " "; + noneOptionElement.setAttribute("hidden", true); + noneOptionElement.setAttribute("selected", true); + selectElement.prepend(noneOptionElement); + removeEmptyEntry = () => { + noneOptionElement.remove(); + selectElement.removeEventListener("input", removeEmptyEntry); + removeEmptyEntry = null; + }; + selectElement.addEventListener("input", removeEmptyEntry); + } + const getValue = isExport => { + const name = isExport ? "value" : "textContent"; + const { + options, + multiple + } = selectElement; + if (!multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + let selectedValues = getValue(false); + 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) { + removeEmptyEntry?.(); + 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(true) + }); + selectedValues = getValue(false); + }, + 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(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + storage.setValue(id, { + value: null, + items: [] + }); + selectedValues = getValue(false); + }, + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const selectChild = selectElement.children[index]; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + if (selectChild) { + selectChild.before(optionElement); + } else { + selectElement.append(optionElement); + } + storage.setValue(id, { + value: getValue(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + 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.append(optionElement); + } + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + storage.setValue(id, { + value: getValue(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + 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(true) + }); + selectedValues = getValue(false); + }, + editable(event) { + event.target.disabled = !event.detail.editable; + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(true); + storage.setValue(id, { + value: exportValue + }); + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: selectedValues, + changeEx: exportValue, + willCommit: false, + commitKey: 1, + keyDown: false + } + }); + }); + this._setEventListeners(selectElement, null, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"], ["input", "Validate"]], event => event.target.value); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(true) + }); + }); + } + if (this.data.combo) { + this._setTextStyle(selectElement); + } else {} + this._setBackgroundColor(selectElement); + this._setDefaultPropertiesFromJS(selectElement); + this.container.append(selectElement); + return this.container; + } +} +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + const { + data, + elements + } = parameters; + super(parameters, { + isRenderable: AnnotationElement._hasPopupData(data) + }); + this.elements = elements; + } + render() { + this.container.classList.add("popupAnnotation"); + const popup = new PopupElement({ + container: this.container, + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText, + rect: this.data.rect, + parentRect: this.data.parentRect || null, + parent: this.parent, + elements: this.elements, + open: this.data.open + }); + const elementIds = []; + for (const element of this.elements) { + element.popup = popup; + elementIds.push(element.data.id); + element.addHighlightArea(); + } + this.container.setAttribute("aria-controls", elementIds.map(id => `${util.AnnotationPrefix}${id}`).join(",")); + return this.container; + } +} +class PopupElement { + #boundKeyDown = this.#keyDown.bind(this); + #boundHide = this.#hide.bind(this); + #boundShow = this.#show.bind(this); + #boundToggle = this.#toggle.bind(this); + #color = null; + #container = null; + #contentsObj = null; + #dateObj = null; + #elements = null; + #parent = null; + #parentRect = null; + #pinned = false; + #popup = null; + #rect = null; + #richText = null; + #titleObj = null; + #wasVisible = false; + constructor({ + container, + color, + elements, + titleObj, + modificationDate, + contentsObj, + richText, + parent, + rect, + parentRect, + open + }) { + this.#container = container; + this.#titleObj = titleObj; + this.#contentsObj = contentsObj; + this.#richText = richText; + this.#parent = parent; + this.#color = color; + this.#rect = rect; + this.#parentRect = parentRect; + this.#elements = elements; + this.#dateObj = display_utils.PDFDateString.toDateObject(modificationDate); + this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup()); + for (const element of this.trigger) { + element.addEventListener("click", this.#boundToggle); + element.addEventListener("mouseenter", this.#boundShow); + element.addEventListener("mouseleave", this.#boundHide); + element.classList.add("popupTriggerArea"); + } + for (const element of elements) { + element.container?.addEventListener("keydown", this.#boundKeyDown); + } + this.#container.hidden = true; + if (open) { + this.#toggle(); + } + } + render() { + if (this.#popup) { + return; + } + const { + page: { + view + }, + viewport: { + rawDims: { + pageWidth, + pageHeight, + pageX, + pageY + } + } + } = this.#parent; + const popup = this.#popup = document.createElement("div"); + popup.className = "popup"; + if (this.#color) { + const baseColor = popup.style.outlineColor = util.Util.makeHexColor(...this.#color); + if (CSS.supports("background-color", "color-mix(in srgb, red 30%, white)")) { + popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`; + } else { + const BACKGROUND_ENLIGHT = 0.7; + popup.style.backgroundColor = util.Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c))); + } + } + const header = document.createElement("span"); + header.className = "header"; + const title = document.createElement("h1"); + header.append(title); + ({ + dir: title.dir, + str: title.textContent + } = this.#titleObj); + popup.append(header); + if (this.#dateObj) { + const modificationDate = document.createElement("span"); + modificationDate.classList.add("popupDate"); + modificationDate.setAttribute("data-l10n-id", "pdfjs-annotation-date-string"); + modificationDate.setAttribute("data-l10n-args", JSON.stringify({ + date: this.#dateObj.toLocaleDateString(), + time: this.#dateObj.toLocaleTimeString() + })); + header.append(modificationDate); + } + const contentsObj = this.#contentsObj; + const richText = this.#richText; + if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) { + xfa_layer.XfaLayer.render({ + xfaHtml: richText.html, + intent: "richText", + div: popup + }); + popup.lastChild.classList.add("richText", "popupContent"); + } else { + const contents = this._formatContents(contentsObj); + popup.append(contents); + } + let useParentRect = !!this.#parentRect; + let rect = useParentRect ? this.#parentRect : this.#rect; + for (const element of this.#elements) { + if (!rect || util.Util.intersect(element.data.rect, rect) !== null) { + rect = element.data.rect; + useParentRect = true; + break; + } + } + const normalizedRect = util.Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]); + const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5; + const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0; + const popupLeft = normalizedRect[0] + parentWidth; + const popupTop = normalizedRect[1]; + const { + style + } = this.#container; + style.left = `${100 * (popupLeft - pageX) / pageWidth}%`; + style.top = `${100 * (popupTop - pageY) / pageHeight}%`; + this.#container.append(popup); + } + _formatContents({ + str, + dir + }) { + const p = document.createElement("p"); + p.classList.add("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.append(document.createTextNode(line)); + if (i < ii - 1) { + p.append(document.createElement("br")); + } + } + return p; + } + #keyDown(event) { + if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) { + return; + } + if (event.key === "Enter" || event.key === "Escape" && this.#pinned) { + this.#toggle(); + } + } + #toggle() { + this.#pinned = !this.#pinned; + if (this.#pinned) { + this.#show(); + this.#container.addEventListener("click", this.#boundToggle); + this.#container.addEventListener("keydown", this.#boundKeyDown); + } else { + this.#hide(); + this.#container.removeEventListener("click", this.#boundToggle); + this.#container.removeEventListener("keydown", this.#boundKeyDown); + } + } + #show() { + if (!this.#popup) { + this.render(); + } + if (!this.isVisible) { + this.#container.hidden = false; + this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000; + } else if (this.#pinned) { + this.#container.classList.add("focused"); + } + } + #hide() { + this.#container.classList.remove("focused"); + if (this.#pinned || !this.isVisible) { + return; + } + this.#container.hidden = true; + this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000; + } + forceHide() { + this.#wasVisible = this.isVisible; + if (!this.#wasVisible) { + return; + } + this.#container.hidden = true; + } + maybeShow() { + if (!this.#wasVisible) { + return; + } + this.#wasVisible = false; + this.#container.hidden = false; + } + get isVisible() { + return this.#container.hidden === false; + } +} +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + this.textContent = parameters.data.textContent; + this.textPosition = parameters.data.textPosition; + this.annotationEditorType = util.AnnotationEditorType.FREETEXT; + } + render() { + this.container.classList.add("freeTextAnnotation"); + if (this.textContent) { + const content = document.createElement("div"); + content.classList.add("annotationTextContent"); + content.setAttribute("role", "comment"); + for (const line of this.textContent) { + const lineSpan = document.createElement("span"); + lineSpan.textContent = line; + content.append(lineSpan); + } + this.container.append(content); + } + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + this._editOnDoubleClick(); + return this.container; + } + get _isEditable() { + return this.data.hasOwnCanvas; + } +} +class LineAnnotationElement extends AnnotationElement { + #line = null; + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("lineAnnotation"); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const line = this.#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.append(line); + this.container.append(svg); + if (!data.popupRef && this.hasPopupData) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#line; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class SquareAnnotationElement extends AnnotationElement { + #square = null; + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("squareAnnotation"); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const square = this.#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.append(square); + this.container.append(svg); + if (!data.popupRef && this.hasPopupData) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#square; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class CircleAnnotationElement extends AnnotationElement { + #circle = null; + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("circleAnnotation"); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const circle = this.#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.append(circle); + this.container.append(svg); + if (!data.popupRef && this.hasPopupData) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#circle; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class PolylineAnnotationElement extends AnnotationElement { + #polyline = null; + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + render() { + this.container.classList.add(this.containerClassName); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + 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.#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.append(polyline); + this.container.append(svg); + if (!data.popupRef && this.hasPopupData) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#polyline; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } +} +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("caretAnnotation"); + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + return this.container; + } +} +class InkAnnotationElement extends AnnotationElement { + #polylines = []; + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + this.annotationEditorType = util.AnnotationEditorType.INK; + } + render() { + this.container.classList.add(this.containerClassName); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + 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); + this.#polylines.push(polyline); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + if (!data.popupRef && this.hasPopupData) { + this._createPopup(); + } + svg.append(polyline); + } + this.container.append(svg); + return this.container; + } + getElementsToTriggerPopup() { + return this.#polylines; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + this.container.classList.add("highlightAnnotation"); + return this.container; + } +} +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + this.container.classList.add("underlineAnnotation"); + return this.container; + } +} +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + this.container.classList.add("squigglyAnnotation"); + return this.container; + } +} +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + this.container.classList.add("strikeoutAnnotation"); + return this.container; + } +} +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("stampAnnotation"); + if (!this.data.popupRef && this.hasPopupData) { + this._createPopup(); + } + return this.container; + } +} +class FileAttachmentAnnotationElement extends AnnotationElement { + #trigger = null; + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0,display_utils.getFilenameFromUrl)(filename, true); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + render() { + this.container.classList.add("fileAttachmentAnnotation"); + const { + container, + data + } = this; + let trigger; + if (data.hasAppearance || data.fillAlpha === 0) { + trigger = document.createElement("div"); + } else { + trigger = document.createElement("img"); + trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? "paperclip" : "pushpin"}.svg`; + if (data.fillAlpha && data.fillAlpha < 1) { + trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`; + } + } + trigger.addEventListener("dblclick", this.#download.bind(this)); + this.#trigger = trigger; + const { + isMac + } = util.FeatureTest.platform; + container.addEventListener("keydown", evt => { + if (evt.key === "Enter" && (isMac ? evt.metaKey : evt.ctrlKey)) { + this.#download(); + } + }); + if (!data.popupRef && this.hasPopupData) { + this._createPopup(); + } else { + trigger.classList.add("popupTriggerArea"); + } + container.append(trigger); + return container; + } + getElementsToTriggerPopup() { + return this.#trigger; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } + #download() { + this.downloadManager?.openOrDownloadData(this.content, this.filename); + } +} +class AnnotationLayer { + #accessibilityManager = null; + #annotationCanvasMap = null; + #editableAnnotations = new Map(); + constructor({ + div, + accessibilityManager, + annotationCanvasMap, + page, + viewport + }) { + this.div = div; + this.#accessibilityManager = accessibilityManager; + this.#annotationCanvasMap = annotationCanvasMap; + this.page = page; + this.viewport = viewport; + this.zIndex = 0; + } + #appendElement(element, id) { + const contentElement = element.firstChild || element; + contentElement.id = `${util.AnnotationPrefix}${id}`; + this.div.append(element); + this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false); + } + async render(params) { + const { + annotations + } = params; + const layer = this.div; + (0,display_utils.setLayerDimensions)(layer, this.viewport); + const popupToElements = new Map(); + const elementParams = { + data: null, + layer, + linkService: params.linkService, + downloadManager: params.downloadManager, + imageResourcesPath: params.imageResourcesPath || "", + renderForms: params.renderForms !== false, + svgFactory: new display_utils.DOMSVGFactory(), + annotationStorage: params.annotationStorage || new annotation_storage.AnnotationStorage(), + enableScripting: params.enableScripting === true, + hasJSActions: params.hasJSActions, + fieldObjects: params.fieldObjects, + parent: this, + elements: null + }; + for (const data of annotations) { + if (data.noHTML) { + continue; + } + const isPopupAnnotation = data.annotationType === util.AnnotationType.POPUP; + if (!isPopupAnnotation) { + const { + width, + height + } = getRectDims(data.rect); + if (width <= 0 || height <= 0) { + continue; + } + } else { + const elements = popupToElements.get(data.id); + if (!elements) { + continue; + } + elementParams.elements = elements; + } + elementParams.data = data; + const element = AnnotationElementFactory.create(elementParams); + if (!element.isRenderable) { + continue; + } + if (!isPopupAnnotation && data.popupRef) { + const elements = popupToElements.get(data.popupRef); + if (!elements) { + popupToElements.set(data.popupRef, [element]); + } else { + elements.push(element); + } + } + if (element.annotationEditorType > 0) { + this.#editableAnnotations.set(element.data.id, element); + } + const rendered = element.render(); + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + this.#appendElement(rendered, data.id); + } + this.#setAnnotationCanvasMap(); + } + update({ + viewport + }) { + const layer = this.div; + this.viewport = viewport; + (0,display_utils.setLayerDimensions)(layer, { + rotation: viewport.rotation + }); + this.#setAnnotationCanvasMap(); + layer.hidden = false; + } + #setAnnotationCanvasMap() { + if (!this.#annotationCanvasMap) { + return; + } + const layer = this.div; + for (const [id, canvas] of this.#annotationCanvasMap) { + const element = layer.querySelector(`[data-annotation-id="${id}"]`); + if (!element) { + continue; + } + const { + firstChild + } = element; + if (!firstChild) { + element.append(canvas); + } else if (firstChild.nodeName === "CANVAS") { + firstChild.replaceWith(canvas); + } else { + firstChild.before(canvas); + } + } + this.#annotationCanvasMap.clear(); + } + getEditableAnnotations() { + return Array.from(this.#editableAnnotations.values()); + } + getEditableAnnotation(id) { + return this.#editableAnnotations.get(id); + } +} + + +/***/ }), + +/***/ 780: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ AnnotationStorage: () => (/* binding */ AnnotationStorage), +/* harmony export */ PrintAnnotationStorage: () => (/* binding */ PrintAnnotationStorage), +/* harmony export */ SerializableEmpty: () => (/* binding */ SerializableEmpty) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(682); +/* harmony import */ var _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(825); + + + +const SerializableEmpty = Object.freeze({ + map: null, + hash: "", + transfer: undefined +}); +class AnnotationStorage { + #modified = false; + #storage = new Map(); + constructor() { + this.onSetModified = null; + this.onResetModified = null; + this.onAnnotationEditor = 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); + } + remove(key) { + this.#storage.delete(key); + if (this.#storage.size === 0) { + this.resetModified(); + } + if (typeof this.onAnnotationEditor === "function") { + for (const value of this.#storage.values()) { + if (value instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor) { + return; + } + } + this.onAnnotationEditor(null); + } + } + 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(); + } + if (value instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor && typeof this.onAnnotationEditor === "function") { + this.onAnnotationEditor(value.constructor._type); + } + } + has(key) { + return this.#storage.has(key); + } + getAll() { + return this.#storage.size > 0 ? (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#storage) : null; + } + setAll(obj) { + for (const [key, val] of Object.entries(obj)) { + this.setValue(key, val); + } + } + 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 print() { + return new PrintAnnotationStorage(this); + } + get serializable() { + if (this.#storage.size === 0) { + return SerializableEmpty; + } + const map = new Map(), + hash = new _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_2__.MurmurHash3_64(), + transfer = []; + const context = Object.create(null); + let hasBitmap = false; + for (const [key, val] of this.#storage) { + const serialized = val instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor ? val.serialize(false, context) : val; + if (serialized) { + map.set(key, serialized); + hash.update(`${key}:${JSON.stringify(serialized)}`); + hasBitmap ||= !!serialized.bitmap; + } + } + if (hasBitmap) { + for (const value of map.values()) { + if (value.bitmap) { + transfer.push(value.bitmap); + } + } + } + return map.size > 0 ? { + map, + hash: hash.hexdigest(), + transfer + } : SerializableEmpty; + } +} +class PrintAnnotationStorage extends AnnotationStorage { + #serializable; + constructor(parent) { + super(); + const { + map, + hash, + transfer + } = parent.serializable; + const clone = structuredClone(map, transfer ? { + transfer + } : null); + this.#serializable = { + map: clone, + hash, + transfer + }; + } + get print() { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Should not call PrintAnnotationStorage.print"); + } + get serializable() { + return this.#serializable; + } +} + + +/***/ }), + +/***/ 406: +/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ PDFDataRangeTransport: () => (/* binding */ PDFDataRangeTransport), +/* harmony export */ PDFWorker: () => (/* binding */ PDFWorker), +/* harmony export */ build: () => (/* binding */ build), +/* harmony export */ getDocument: () => (/* binding */ getDocument), +/* harmony export */ version: () => (/* binding */ version) +/* harmony export */ }); +/* unused harmony exports DefaultCanvasFactory, DefaultCMapReaderFactory, DefaultFilterFactory, DefaultStandardFontDataFactory, LoopbackPort, PDFDocumentLoadingTask, PDFDocumentProxy, PDFPageProxy, PDFWorkerUtil, RenderTask */ +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(780); +/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(473); +/* harmony import */ var _font_loader_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(742); +/* harmony import */ var display_node_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(738); +/* harmony import */ var _canvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(250); +/* harmony import */ var _worker_options_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(368); +/* harmony import */ var _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(694); +/* harmony import */ var _metadata_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(472); +/* harmony import */ var _optional_content_config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(890); +/* harmony import */ var _transport_stream_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(92); +/* harmony import */ var display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(171); +/* harmony import */ var display_network__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(474); +/* harmony import */ var display_node_stream__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(498); +/* harmony import */ var _xfa_text_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(521); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([display_node_utils__WEBPACK_IMPORTED_MODULE_4__, display_node_stream__WEBPACK_IMPORTED_MODULE_13__]); +([display_node_utils__WEBPACK_IMPORTED_MODULE_4__, display_node_stream__WEBPACK_IMPORTED_MODULE_13__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + + + + + + + + + + + + + + + +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +const DELAYED_CLEANUP_TIMEOUT = 5000; +const DefaultCanvasFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeCanvasFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCanvasFactory; +const DefaultCMapReaderFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeCMapReaderFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCMapReaderFactory; +const DefaultFilterFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeFilterFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMFilterFactory; +const DefaultStandardFontDataFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeStandardFontDataFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMStandardFontDataFactory; +function getDocument(src) { + if (typeof src === "string" || src instanceof URL) { + src = { + url: src + }; + } else if ((0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isArrayBuffer)(src)) { + src = { + data: src + }; + } + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, need parameter object."); + } + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + const task = new PDFDocumentLoadingTask(); + const { + docId + } = task; + const url = src.url ? getUrlProp(src.url) : null; + const data = src.data ? getDataProp(src.data) : null; + const httpHeaders = src.httpHeaders || null; + const withCredentials = src.withCredentials === true; + const password = src.password ?? null; + const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null; + const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE; + let worker = src.worker instanceof PDFWorker ? src.worker : null; + const verbosity = src.verbosity; + const docBaseUrl = typeof src.docBaseUrl === "string" && !(0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null; + const cMapUrl = typeof src.cMapUrl === "string" ? src.cMapUrl : null; + const cMapPacked = src.cMapPacked !== false; + const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory; + const standardFontDataUrl = typeof src.standardFontDataUrl === "string" ? src.standardFontDataUrl : null; + const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory; + const ignoreErrors = src.stopAtErrors !== true; + const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1; + const isEvalSupported = src.isEvalSupported !== false; + const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS; + const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1; + const disableFontFace = typeof src.disableFontFace === "boolean" ? src.disableFontFace : _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS; + const fontExtraProperties = src.fontExtraProperties === true; + const enableXfa = src.enableXfa === true; + const ownerDocument = src.ownerDocument || globalThis.document; + const disableRange = src.disableRange === true; + const disableStream = src.disableStream === true; + const disableAutoFetch = src.disableAutoFetch === true; + const pdfBug = src.pdfBug === true; + const length = rangeTransport ? rangeTransport.length : src.length ?? NaN; + const useSystemFonts = typeof src.useSystemFonts === "boolean" ? src.useSystemFonts : !_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && !disableFontFace; + const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : CMapReaderFactory === _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(cMapUrl, document.baseURI) && (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(standardFontDataUrl, document.baseURI); + const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({ + ownerDocument + }); + const filterFactory = src.filterFactory || new DefaultFilterFactory({ + docId, + ownerDocument + }); + const styleElement = null; + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.setVerbosityLevel)(verbosity); + const transportFactory = { + canvasFactory, + filterFactory + }; + if (!useWorkerFetch) { + transportFactory.cMapReaderFactory = new CMapReaderFactory({ + baseUrl: cMapUrl, + isCompressed: cMapPacked + }); + transportFactory.standardFontDataFactory = new StandardFontDataFactory({ + baseUrl: standardFontDataUrl + }); + } + if (!worker) { + const workerParams = { + verbosity, + port: _worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + const fetchDocParams = { + docId, + apiVersion: '4.0.189', + data, + password, + disableAutoFetch, + rangeChunkSize, + length, + docBaseUrl, + enableXfa, + evaluatorOptions: { + maxImageSize, + disableFontFace, + ignoreErrors, + isEvalSupported, + isOffscreenCanvasSupported, + canvasMaxAreaInBytes, + fontExtraProperties, + useSystemFonts, + cMapUrl: useWorkerFetch ? cMapUrl : null, + standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null + } + }; + const transportParams = { + ignoreErrors, + isEvalSupported, + disableFontFace, + fontExtraProperties, + enableXfa, + ownerDocument, + disableAutoFetch, + pdfBug, + styleElement + }; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + const workerIdPromise = _fetchDocument(worker, fetchDocParams); + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + if (rangeTransport) { + networkStream = new _transport_stream_js__WEBPACK_IMPORTED_MODULE_10__.PDFDataTransportStream({ + length, + initialData: rangeTransport.initialData, + progressiveDone: rangeTransport.progressiveDone, + contentDispositionFilename: rangeTransport.contentDispositionFilename, + disableRange, + disableStream + }, rangeTransport); + } else if (!data) { + const createPDFNetworkStream = params => { + if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) { + return new display_node_stream__WEBPACK_IMPORTED_MODULE_13__.PDFNodeStream(params); + } + return (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(params.url) ? new display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__.PDFFetchStream(params) : new display_network__WEBPACK_IMPORTED_MODULE_12__.PDFNetworkStream(params); + }; + networkStream = createPDFNetworkStream({ + url, + length, + httpHeaders, + withCredentials, + rangeChunkSize, + disableRange, + disableStream + }); + } + resolve(networkStream); + }); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(docId, workerId, worker.port); + const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} +async function _fetchDocument(worker, source) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", source, source.data ? [source.data.buffer] : null); + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + return workerId; +} +function getUrlProp(val) { + if (val instanceof URL) { + return val.href; + } + try { + return new URL(val, window.location).href; + } catch { + if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && typeof val === "string") { + return val; + } + } + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); +} +function getDataProp(val) { + if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && typeof Buffer !== "undefined" && val instanceof Buffer) { + throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`."); + } + if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) { + return val; + } + if (typeof val === "string") { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.stringToBytes)(val); + } + if (typeof val === "object" && !isNaN(val?.length) || (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isArrayBuffer)(val)) { + return new Uint8Array(val); + } + throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property."); +} +class PDFDocumentLoadingTask { + static #docId = 0; + constructor() { + this._capability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this._transport = null; + this._worker = null; + this.docId = `d${PDFDocumentLoadingTask.#docId++}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + } + get promise() { + return this._capability.promise; + } + async destroy() { + this.destroyed = true; + try { + if (this._worker?.port) { + this._worker._pendingDestroy = true; + } + await this._transport?.destroy(); + } catch (ex) { + if (this._worker?.port) { + delete this._worker._pendingDestroy; + } + throw ex; + } + this._transport = null; + if (this._worker) { + this._worker.destroy(); + this._worker = null; + } + } +} +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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + } + 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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } + abort() {} +} +class PDFDocumentProxy { + constructor(pdfInfo, transport) { + this._pdfInfo = pdfInfo; + this._transport = transport; + } + get annotationStorage() { + return this._transport.annotationStorage; + } + get filterFactory() { + return this._transport.filterFactory; + } + get numPages() { + return this._pdfInfo.numPages; + } + get fingerprints() { + return this._pdfInfo.fingerprints; + } + get isPureXfa() { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isPureXfa", !!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(); + } + 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(); + } + saveDocument() { + return this._transport.saveDocument(); + } + 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; + } + getFieldObjects() { + return this._transport.getFieldObjects(); + } + hasJSActions() { + return this._transport.hasJSActions(); + } + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } +} +class PDFPageProxy { + #delayedCleanupTimeout = null; + #pendingCleanup = false; + constructor(pageIndex, pageInfo, transport, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._transport = transport; + this._stats = pdfBug ? new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this._maybeCleanupAfterRender = false; + this._intentStates = 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_js__WEBPACK_IMPORTED_MODULE_2__.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + getAnnotations({ + intent = "display" + } = {}) { + const intentArgs = this._transport.getRenderingIntent(intent); + return this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + } + getJSActions() { + return this._transport.getPageJSActions(this._pageIndex); + } + get filterFactory() { + return this._transport.filterFactory; + } + get isPureXfa() { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isPureXfa", !!this._transport._htmlForXfa); + } + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + render({ + canvasContext, + viewport, + intent = "display", + annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE, + transform = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null, + printAnnotationStorage = null + }) { + this._stats?.time("Overall"); + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage); + this.#pendingCleanup = false; + this.#abortDelayedCleanup(); + 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 intentPrint = !!(intentArgs.renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT); + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + this._stats?.time("Page Request"); + this._pumpOperatorList(intentArgs); + } + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + if (this._maybeCleanupAfterRender || intentPrint) { + this.#pendingCleanup = true; + } + this.#tryCleanup(!intentPrint); + if (error) { + internalRenderTask.capability.reject(error); + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) + }); + } else { + internalRenderTask.capability.resolve(); + } + this._stats?.timeEnd("Rendering"); + this._stats?.timeEnd("Overall"); + }; + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: this._transport.canvasFactory, + filterFactory: this._transport.filterFactory, + 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.destroyed) { + complete(); + return; + } + this._stats?.time("Rendering"); + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } + getOperatorList({ + intent = "display", + annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE, + printAnnotationStorage = null + } = {}) { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); + } + } + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, 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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + (intentState.renderTasks ||= new Set()).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + this._stats?.time("Page Request"); + this._pumpOperatorList(intentArgs); + } + return intentState.opListReadCapability.promise; + } + streamTextContent({ + includeMarkedContent = false, + disableNormalization = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + includeMarkedContent: includeMarkedContent === true, + disableNormalization: disableNormalization === 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_js__WEBPACK_IMPORTED_MODULE_14__.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._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(); + this.#pendingCleanup = false; + this.#abortDelayedCleanup(); + return Promise.all(waitOn); + } + cleanup(resetStats = false) { + this.#pendingCleanup = true; + const success = this.#tryCleanup(false); + if (resetStats && success) { + this._stats &&= new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.StatTimer(); + } + return success; + } + #tryCleanup(delayed = false) { + this.#abortDelayedCleanup(); + if (!this.#pendingCleanup || this.destroyed) { + return false; + } + if (delayed) { + this.#delayedCleanupTimeout = setTimeout(() => { + this.#delayedCleanupTimeout = null; + this.#tryCleanup(false); + }, DELAYED_CLEANUP_TIMEOUT); + 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.#pendingCleanup = false; + return true; + } + #abortDelayedCleanup() { + if (this.#delayedCleanupTimeout) { + clearTimeout(this.#delayedCleanupTimeout); + this.#delayedCleanupTimeout = null; + } + } + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + if (!intentState) { + return; + } + this._stats?.timeEnd("Page Request"); + 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; + intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots; + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + if (operatorListChunk.lastChunk) { + this.#tryCleanup(true); + } + } + _pumpOperatorList({ + renderingIntent, + cacheKey, + annotationStorageSerializable + }) { + const { + map, + transfer + } = annotationStorageSerializable; + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: map + }, transfer); + 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(true); + } + 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 (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + if (reason instanceof _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException) { + let delay = RENDERING_CANCELLED_TIMEOUT; + if (reason.extraDelay > 0 && reason.extraDelay < 1000) { + delay += reason.extraDelay; + } + intentState.streamReaderCancelTimeout = setTimeout(() => { + intentState.streamReaderCancelTimeout = null; + this._abortOperatorList({ + intentState, + reason, + force: true + }); + }, delay); + return; + } + } + intentState.streamReader.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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; + } +} +class LoopbackPort { + #listeners = new Set(); + #deferred = Promise.resolve(); + postMessage(obj, transfer) { + const event = { + data: structuredClone(obj, transfer ? { + transfer + } : null) + }; + this.#deferred.then(() => { + for (const listener of this.#listeners) { + listener.call(this, event); + } + }); + } + addEventListener(name, listener) { + this.#listeners.add(listener); + } + removeEventListener(name, listener) { + this.#listeners.delete(listener); + } + terminate() { + this.#listeners.clear(); + } +} +const PDFWorkerUtil = { + isWorkerDisabled: false, + fakeWorkerId: 0 +}; +{ + if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) { + PDFWorkerUtil.isWorkerDisabled = true; + _worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerSrc ||= "./pdf.worker.mjs"; + } + PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { + let base; + try { + base = new URL(baseUrl); + if (!base.origin || base.origin === "null") { + return false; + } + } catch { + return false; + } + const other = new URL(otherUrl, base); + return base.origin === other.origin; + }; + PDFWorkerUtil.createCDNWrapper = function (url) { + const wrapper = `await import("${url}");`; + return URL.createObjectURL(new Blob([wrapper])); + }; +} +class PDFWorker { + static #workerPorts; + constructor({ + name = null, + port = null, + verbosity = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.getVerbosityLevel)() + } = {}) { + this.name = name; + this.destroyed = false; + this.verbosity = verbosity; + this._readyCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + if (port) { + if (PDFWorker.#workerPorts?.has(port)) { + throw new Error("Cannot use more than one PDFWorker per port."); + } + (PDFWorker.#workerPorts ||= new WeakMap()).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 _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler("main", "worker", port); + this._messageHandler.on("ready", function () {}); + this._readyCapability.resolve(); + this._messageHandler.send("configure", { + verbosity: this.verbosity + }); + } + _initialize() { + if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker.#mainThreadWorkerMessageHandler) { + let { + workerSrc + } = PDFWorker; + try { + if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { + workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); + } + const worker = new Worker(workerSrc, { + type: "module" + }); + const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.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 { + this._setupFakeWorker(); + } + }); + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + sendTest(); + return; + } catch { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.info)("The worker has been disabled."); + } + } + this._setupFakeWorker(); + } + _setupFakeWorker() { + if (!PDFWorkerUtil.isWorkerDisabled) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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 _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.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."); + } + const cachedPort = this.#workerPorts?.get(params.port); + if (cachedPort) { + if (cachedPort._pendingDestroy) { + throw new Error("PDFWorker.fromPort - the worker is being destroyed.\n" + "Please remember to await `PDFDocumentLoadingTask.destroy()`-calls."); + } + return cachedPort; + } + return new PDFWorker(params); + } + static get workerSrc() { + if (_worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerSrc) { + return _worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerSrc; + } + throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); + } + static get #mainThreadWorkerMessageHandler() { + try { + return globalThis.pdfjsWorker?.WorkerMessageHandler || null; + } catch { + return null; + } + } + static get _setupFakeWorkerGlobal() { + const loader = async () => { + if (this.#mainThreadWorkerMessageHandler) { + return this.#mainThreadWorkerMessageHandler; + } + const worker = await import(/* webpackIgnore: true */ this.workerSrc); + return worker.WorkerMessageHandler; + }; + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_setupFakeWorkerGlobal", loader()); + } +} +class WorkerTransport { + #methodPromises = new Map(); + #pageCache = new Map(); + #pagePromises = new Map(); + #passwordCapability = null; + constructor(messageHandler, loadingTask, networkStream, params, factory) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader_js__WEBPACK_IMPORTED_MODULE_3__.FontLoader({ + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + this.canvasFactory = factory.canvasFactory; + this.filterFactory = factory.filterFactory; + this.cMapReaderFactory = factory.cMapReaderFactory; + this.standardFontDataFactory = factory.standardFontDataFactory; + this.destroyed = false; + this.destroyCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.downloadInfoCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this.setupMessageHandler(); + } + #cacheSimpleMethod(name, data = null) { + const cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, data); + this.#methodPromises.set(name, promise); + return promise; + } + get annotationStorage() { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "annotationStorage", new _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationStorage()); + } + getRenderingIntent(intent, annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) { + let renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.DISPLAY; + let annotationStorageSerializable = _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.SerializableEmpty; + switch (intent) { + case "any": + renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANY; + break; + case "display": + break; + case "print": + renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT; + break; + default: + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getRenderingIntent - invalid intent: ${intent}`); + } + switch (annotationMode) { + case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.DISABLE: + renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_DISABLE; + break; + case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE: + break; + case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE_FORMS: + renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_FORMS; + break; + case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE_STORAGE: + renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_STORAGE; + const annotationStorage = renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage; + annotationStorageSerializable = annotationStorage.serializable; + break; + default: + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + if (isOpList) { + renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.OPLIST; + } + return { + renderingIntent, + cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`, + annotationStorageSerializable + }; + } + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + this.destroyed = true; + this.destroyCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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.#methodPromises.clear(); + this.filterFactory.destroy(); + this._networkStream?.cancelAllRequests(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(value instanceof ArrayBuffer, "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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(value instanceof ArrayBuffer, "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 _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(ex.message, ex.code); + break; + case "InvalidPDFException": + reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.InvalidPDFException(ex.message); + break; + case "MissingPDFException": + reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(ex.message); + break; + case "UnexpectedResponseException": + reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException(ex.message, ex.status); + break; + case "UnknownErrorException": + reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(ex.message, ex.details); + break; + default: + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("DocException - expected a valid Error."); + } + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this.#passwordCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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 _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; + } + const inspectFont = params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null; + const font = new _font_loader_js__WEBPACK_IMPORTED_MODULE_3__.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + inspectFont + }); + 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": + case "Pattern": + 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; + } + if (pageProxy._intentStates.size === 0) { + imageData?.bitmap?.close(); + return; + } + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + if (imageData) { + let length; + if (imageData.bitmap) { + const { + width, + height + } = imageData; + length = width * height * 4; + } else { + length = imageData.data?.length || 0; + } + if (length > _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MAX_IMAGE_SIZE_TO_CACHE) { + pageProxy._maybeCleanupAfterRender = 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("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); + }); + } + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + saveDocument() { + if (this.annotationStorage.size <= 0) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + const { + map, + transfer + } = this.annotationStorage.serializable; + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: map, + filename: this._fullReader?.filename ?? null + }, transfer).finally(() => { + this.annotationStorage.resetModified(); + }); + } + 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.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 + }); + } + getFieldObjects() { + return this.#cacheSimpleMethod("GetFieldObjects"); + } + hasJSActions() { + return this.#cacheSimpleMethod("HasJSActions"); + } + 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); + } + getDocJSActions() { + return this.#cacheSimpleMethod("GetDocJSActions"); + } + 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_js__WEBPACK_IMPORTED_MODULE_9__.OptionalContentConfig(results); + }); + } + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + getMetadata() { + const name = "GetMetadata", + cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, null).then(results => { + return { + info: results[0], + metadata: results[1] ? new _metadata_js__WEBPACK_IMPORTED_MODULE_8__.Metadata(results[1]) : null, + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null + }; + }); + this.#methodPromises.set(name, promise); + return promise; + } + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + async startCleanup(keepLoadedFonts = false) { + if (this.destroyed) { + return; + } + await this.messageHandler.sendWithPromise("Cleanup", null); + 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.#methodPromises.clear(); + this.filterFactory.destroy(true); + } + get loadingParams() { + const { + disableAutoFetch, + enableXfa + } = this._params; + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "loadingParams", { + disableAutoFetch, + enableXfa + }); + } +} +class PDFObjects { + #objs = Object.create(null); + #ensureObj(objId) { + return this.#objs[objId] ||= { + capability: new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(), + 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() { + for (const objId in this.#objs) { + const { + data + } = this.#objs[objId]; + data?.bitmap?.close(); + } + this.#objs = Object.create(null); + } +} +class RenderTask { + #internalRenderTask = null; + constructor(internalRenderTask) { + this.#internalRenderTask = internalRenderTask; + this.onContinue = null; + } + get promise() { + return this.#internalRenderTask.capability.promise; + } + cancel(extraDelay = 0) { + this.#internalRenderTask.cancel(null, extraDelay); + } + get separateAnnots() { + const { + separateAnnots + } = this.#internalRenderTask.operatorList; + if (!separateAnnots) { + return false; + } + const { + annotationCanvasMap + } = this.#internalRenderTask; + return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0; + } +} +class InternalRenderTask { + static #canvasInUse = new WeakSet(); + constructor({ + callback, + params, + objs, + commonObjs, + annotationCanvasMap, + operatorList, + pageIndex, + canvasFactory, + filterFactory, + 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.filterFactory = filterFactory; + 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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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, + background + } = this.params; + this.gfx = new _canvas_js__WEBPACK_IMPORTED_MODULE_5__.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, { + optionalContentConfig + }, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + this.graphicsReadyCallback?.(); + } + cancel(error = null, extraDelay = 0) { + this.running = false; + this.cancelled = true; + this.gfx?.endDrawing(); + InternalRenderTask.#canvasInUse.delete(this._canvas); + this.callback(error || new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay)); + } + operatorListChanged() { + if (!this.graphicsReady) { + this.graphicsReadyCallback ||= this._continueBound; + return; + } + 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(); + InternalRenderTask.#canvasInUse.delete(this._canvas); + this.callback(); + } + } + } +} +const version = '4.0.189'; +const build = '50f52b43a'; + +__webpack_async_result__(); +} catch(e) { __webpack_async_result__(e); } }); + +/***/ }), + +/***/ 822: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ BaseCMapReaderFactory: () => (/* binding */ BaseCMapReaderFactory), +/* harmony export */ BaseCanvasFactory: () => (/* binding */ BaseCanvasFactory), +/* harmony export */ BaseFilterFactory: () => (/* binding */ BaseFilterFactory), +/* harmony export */ BaseSVGFactory: () => (/* binding */ BaseSVGFactory), +/* harmony export */ BaseStandardFontDataFactory: () => (/* binding */ BaseStandardFontDataFactory) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); + +class BaseFilterFactory { + constructor() { + if (this.constructor === BaseFilterFactory) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Cannot initialize BaseFilterFactory."); + } + } + addFilter(maps) { + return "none"; + } + addHCMFilter(fgColor, bgColor) { + return "none"; + } + addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) { + return "none"; + } + destroy(keepHCM = false) {} +} +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_createCanvas` called."); + } +} +class BaseCMapReaderFactory { + constructor({ + baseUrl = null, + isCompressed = true + }) { + if (this.constructor === BaseCMapReaderFactory) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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 ? _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType.BINARY : _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_fetchData` called."); + } +} +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_fetchData` called."); + } +} +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Cannot initialize BaseSVGFactory."); + } + } + create(width, height, skipDimensions = false) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + const svg = this._createSVG("svg:svg"); + svg.setAttribute("version", "1.1"); + if (!skipDimensions) { + 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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_createSVG` called."); + } +} + + +/***/ }), + +/***/ 250: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + CanvasGraphics: () => (/* binding */ CanvasGraphics) +}); + +// EXTERNAL MODULE: ./src/shared/util.js +var util = __webpack_require__(266); +// EXTERNAL MODULE: ./src/display/display_utils.js +var display_utils = __webpack_require__(473); +;// CONCATENATED MODULE: ./src/display/pattern_helper.js + + +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" +}; +function applyBoundingBox(ctx, bbox) { + if (!bbox) { + 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, (0,display_utils.getCurrentTransform)(ctx)) || [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(...owner.baseTransform); + if (this.matrix) { + tmpCtx.transform(...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); + pattern.setTransform(domMatrix); + } 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) { + const k = y < y1 ? 0 : (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((0,display_utils.getCurrentTransform)(ctx)); + } 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(...owner.baseTransform); + if (this.matrix) { + ctx.transform(...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 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 = (0,display_utils.getCurrentTransform)(graphics.ctx); + 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((0,display_utils.getCurrentTransform)(graphics.ctx), [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"); + pattern.setTransform(domMatrix); + return pattern; + } +} + +;// CONCATENATED MODULE: ./src/shared/image_utils.js + +function convertToRGBA(params) { + switch (params.kind) { + case ImageKind.GRAYSCALE_1BPP: + return convertBlackAndWhiteToRGBA(params); + case ImageKind.RGB_24BPP: + return convertRGBToRGBA(params); + } + return null; +} +function convertBlackAndWhiteToRGBA({ + src, + srcPos = 0, + dest, + width, + height, + nonBlackColor = 0xffffffff, + inverseDecode = false +}) { + const black = util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + let destPos = 0; + 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 + }; +} +function convertRGBToRGBA({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height +}) { + let i = 0; + const len32 = src.length >> 2; + const src32 = new Uint32Array(src.buffer, srcPos, len32); + if (FeatureTest.isLittleEndian) { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff000000; + dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000; + dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000; + dest[destPos + 3] = s3 >>> 8 | 0xff000000; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000; + } + } else { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff; + dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff; + dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff; + dest[destPos + 3] = s3 << 8 | 0xff; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff; + } + } + return { + srcPos, + destPos + }; +} +function grayToRGBA(src, dest) { + if (FeatureTest.isLittleEndian) { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x10101 | 0xff000000; + } + } else { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x1010100 | 0x000000ff; + } + } +} + +;// CONCATENATED MODULE: ./src/display/canvas.js + + + + +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const EXECUTION_TIME = 15; +const EXECUTION_STEPS = 10; +const MAX_SIZE_TO_COMPILE = 1000; +const FULL_CHUNK_HEIGHT = 16; +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(); + }; +} +class CachedCanvases { + constructor(canvasFactory) { + this.canvasFactory = canvasFactory; + this.cache = Object.create(null); + } + getCanvas(id, width, height) { + let canvasEntry; + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; + } + 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] = (0,display_utils.getCurrentTransform)(ctx); + 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 (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]); + const path = new Path2D(); + 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; + } + path.moveTo(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; + } + path.lineTo(p % width1, p / width1 | 0); + if (!points[p]) { + --count; + } + } while (p0 !== p); + --i; + } + data = null; + points = null; + const drawOutline = function (c) { + c.save(); + c.scale(1 / width, -1 / height); + c.translate(0, -height); + c.fill(path); + 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 = "none"; + 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); + const p3 = util.Util.applyTransform([rect[0], rect[3]], transform); + const p4 = util.Util.applyTransform([rect[2], rect[1]], transform); + this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]); + this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]); + this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]); + this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[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 = PathType.FILL, transform = null) { + const box = [this.minX, this.minY, this.maxX, this.maxY]; + if (pathType === 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 = PathType.FILL, transform = null) { + return util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); + } +} +function putBinaryImageData(ctx, imgData) { + 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; + 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; + const white = 0xffffffff; + const black = util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + 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) { + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === util.ImageKind.RGB_24BPP) { + 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; + } + 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 + } = convertBlackAndWhiteToRGBA({ + src, + srcPos, + dest, + width, + height: thisChunkHeight, + nonBlackColor: 0 + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font", "filter"]; + for (const property of properties) { + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } +} +function resetCtxToDefault(ctx) { + ctx.strokeStyle = ctx.fillStyle = "#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; + } + if (!util.isNodeJS) { + const { + filter + } = ctx; + if (filter !== "none" && filter !== "") { + ctx.filter = "none"; + } + } +} +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; + const composeFn = subtype === "Luminosity" ? composeSMaskLuminosity : 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, filterFactory, { + optionalContentConfig, + markedContentStack = null + }, 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.filterFactory = filterFactory; + 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 = 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.pageColors = pageColors; + this._cachedScaleForStroking = [-1, 0]; + 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 savedFillStyle = this.ctx.fillStyle; + this.ctx.fillStyle = background || "#ffffff"; + this.ctx.fillRect(0, 0, width, height); + this.ctx.fillStyle = savedFillStyle; + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; + this.ctx.save(); + this.ctx.transform(...(0,display_utils.getCurrentTransform)(this.compositeCtx)); + } + this.ctx.save(); + resetCtxToDefault(this.ctx); + if (transform) { + this.ctx.transform(...transform); + this.outputScaleX = transform[0]; + this.outputScaleY = transform[0]; + } + this.ctx.transform(...viewport.transform); + this.viewportScale = viewport.scale; + this.baseTransform = (0,display_utils.getCurrentTransform)(this.ctx); + } + 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; + } + } + } + #restoreInitialState() { + 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; + } + } + endDrawing() { + this.#restoreInitialState(); + 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(); + this.#drawFilter(); + } + #drawFilter() { + if (this.pageColors) { + const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background); + if (hcmFilterId !== "none") { + const savedFilter = this.ctx.filter; + this.ctx.filter = hcmFilterId; + this.ctx.drawImage(this.ctx.canvas, 0, 0); + this.ctx.filter = savedFilter; + } + } + } + _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 = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + if (heightScale > 2 && paintHeight > 1) { + newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2; + heightScale /= paintHeight / newHeight; + } + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); + 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 = (0,display_utils.getCurrentTransform)(ctx); + let cache, cacheKey, scaled, maskCanvas; + if ((img.bitmap || img.data) && img.count > 1) { + const mainKey = img.bitmap || img.data.buffer; + cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), 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); + 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 [minX, minY, maxX, maxY] = util.Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas); + const drawnWidth = Math.round(maxX - minX) || 1; + const drawnHeight = Math.round(maxY - minY) || 1; + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight); + const fillCtx = fillCanvas.context; + const offsetX = minX; + const offsetY = minY; + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform(...maskToCanvas); + if (!scaled) { + scaled = this._scaleImage(maskCanvas.canvas, (0,display_utils.getCurrentTransformInverse)(fillCtx)); + scaled = scaled.img; + if (cache && isPatternFill) { + cache.set(cacheKey, scaled); + } + } + fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0,display_utils.getCurrentTransform)(fillCtx), img.interpolate); + drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + const inverse = util.Util.transform((0,display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]); + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, 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[0] = -1; + } + 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 (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[0], value[1]); + break; + case "CA": + this.current.strokeAlpha = value; + break; + case "ca": + this.current.fillAlpha = value; + this.ctx.globalAlpha = value; + 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.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value); + break; + } + } + } + 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); + this.suspendedCtx = this.ctx; + this.ctx = scratchCanvas.context; + const ctx = this.ctx; + ctx.setTransform(...(0,display_utils.getCurrentTransform)(this.suspendedCtx)); + 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[0] = -1; + this._cachedGetSinglePixelWidth = null; + } + } + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking[0] = -1; + 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 = (0,display_utils.getCurrentTransform)(ctx); + 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 = 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, (0,display_utils.getCurrentTransformInverse)(ctx), 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 = 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, (0,display_utils.getCurrentTransformInverse)(ctx), 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 (const path of paths) { + ctx.setTransform(...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"; + const typeface = fontObj.systemFontInfo?.css || `"${name}", ${fontObj.fallbackName}`; + let bold = "normal"; + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + const italic = fontObj.italic ? "italic" : "normal"; + 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(...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 ||= []; + paths.push({ + transform: (0,display_utils.getCurrentTransform)(ctx), + x, + y, + fontSize, + addToPath + }); + } + } + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10); + 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(...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, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL); + patternTransform = (0,display_utils.getCurrentTransform)(ctx); + 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; + if (font.isInvalidPDFjsFont) { + const chars = []; + let width = 0; + for (const glyph of glyphs) { + chars.push(glyph.unicode); + width += glyph.width; + } + ctx.fillText(chars.join(""), 0, 0); + current.x += width * widthAdvanceScale * textHScale; + ctx.restore(); + this.compose(); + return undefined; + } + 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); + } + } + } + const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : 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[0] = -1; + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform(...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(...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 || (0,display_utils.getCurrentTransform)(this.ctx); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, { + optionalContentConfig: this.optionalContentConfig, + markedContentStack: this.markedContentStack + }); + } + }; + pattern = new 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 = util.Util.makeHexColor(r, g, b); + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + setFillRGBColor(r, g, b) { + const color = 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 = getShadingPattern(this.getObject(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, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.SHADING); + const inv = (0,display_utils.getCurrentTransformInverse)(ctx); + if (inv) { + const { + width, + height + } = ctx.canvas; + const [x0, y0, x1, y1] = util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv); + 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(...matrix); + } + this.baseTransform = (0,display_utils.getCurrentTransform)(this.ctx); + 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((0,display_utils.getCurrentTransform)(this.ctx), 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 = (0,display_utils.getCurrentTransform)(currentCtx); + if (group.matrix) { + currentCtx.transform(...group.matrix); + } + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + let bounds = util.Util.getAxialAlignedBoundingBox(group.bbox, (0,display_utils.getCurrentTransform)(currentCtx)); + 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); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform(...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 = (0,display_utils.getCurrentTransform)(this.ctx); + this.restore(); + this.ctx.save(); + this.ctx.setTransform(...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); + } + } + beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { + this.#restoreInitialState(); + resetCtxToDefault(this.ctx); + this.ctx.save(); + this.save(); + if (this.baseTransform) { + this.ctx.setTransform(...this.baseTransform); + } + 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((0,display_utils.getCurrentTransform)(this.ctx)); + 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; + this.annotationCanvasMap.set(id, canvas); + this.annotationCanvas.savedCtx = this.ctx; + this.ctx = context; + this.ctx.save(); + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + resetCtxToDefault(this.ctx); + } else { + resetCtxToDefault(this.ctx); + 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(...transform); + this.transform(...matrix); + } + endAnnotation() { + if (this.annotationCanvas) { + this.ctx.restore(); + this.#drawFilter(); + this.ctx = this.annotationCanvas.savedCtx; + delete this.annotationCanvas.savedCtx; + delete this.annotationCanvas; + } + } + 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 = (0,display_utils.getCurrentTransform)(ctx); + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + const mask = this._createMaskCanvas(img); + ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]); + 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 (const image of images) { + const { + data, + width, + height, + transform + } = image; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; + maskCtx.save(); + const img = this.getObject(data, image); + putBinaryImageMask(maskCtx, img); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + ctx.save(); + ctx.transform(...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); + } + applyTransferMapsToCanvas(ctx) { + if (this.current.transferMaps !== "none") { + ctx.filter = this.current.transferMaps; + ctx.drawImage(ctx.canvas, 0, 0); + ctx.filter = "none"; + } + return ctx.canvas; + } + applyTransferMapsToBitmap(imgData) { + if (this.current.transferMaps === "none") { + return imgData.bitmap; + } + const { + bitmap, + width, + height + } = imgData; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + tmpCtx.filter = this.current.transferMaps; + tmpCtx.drawImage(bitmap, 0, 0); + tmpCtx.filter = "none"; + return tmpCanvas.canvas; + } + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + if (!util.isNodeJS) { + const { + filter + } = ctx; + if (filter !== "none" && filter !== "") { + ctx.filter = "none"; + } + } + ctx.scale(1 / width, -1 / height); + let imgToPaint; + if (imgData.bitmap) { + imgToPaint = this.applyTransferMapsToBitmap(imgData); + } else if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData); + imgToPaint = this.applyTransferMapsToCanvas(tmpCtx); + } + const scaled = this._scaleImage(imgToPaint, (0,display_utils.getCurrentTransformInverse)(ctx)); + ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0,display_utils.getCurrentTransform)(ctx), imgData.interpolate); + drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + this.compose(); + this.restore(); + } + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + const ctx = this.ctx; + let imgToPaint; + if (imgData.bitmap) { + imgToPaint = imgData.bitmap; + } else { + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData); + imgToPaint = this.applyTransferMapsToCanvas(tmpCtx); + } + for (const entry of map) { + ctx.save(); + ctx.transform(...entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + 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 = (0,display_utils.getCurrentTransform)(this.ctx); + 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[0] === -1) { + const { + lineWidth + } = this.current; + const { + a, + b, + c, + d + } = this.ctx.getTransform(); + let scaleX, scaleY; + if (b === 0 && c === 0) { + const normX = Math.abs(a); + const normY = Math.abs(d); + if (normX === normY) { + if (lineWidth === 0) { + scaleX = scaleY = 1 / normX; + } else { + const scaledLineWidth = normX * lineWidth; + scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1; + } + } else 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(a * d - b * c); + const normX = Math.hypot(a, b); + const normY = Math.hypot(c, d); + 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[0] = scaleX; + this._cachedScaleForStroking[1] = 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; + } + const dashes = ctx.getLineDash(); + if (saveRestore) { + ctx.save(); + } + ctx.scale(scaleX, scaleY); + if (dashes.length > 0) { + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(dashes.map(x => x / scale)); + ctx.lineDashOffset /= scale; + } + ctx.stroke(); + if (saveRestore) { + ctx.restore(); + } + } + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + return true; + } +} +for (const op in util.OPS) { + if (CanvasGraphics.prototype[op] !== undefined) { + CanvasGraphics.prototype[util.OPS[op]] = CanvasGraphics.prototype[op]; + } +} + + +/***/ }), + +/***/ 473: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ DOMCMapReaderFactory: () => (/* binding */ DOMCMapReaderFactory), +/* harmony export */ DOMCanvasFactory: () => (/* binding */ DOMCanvasFactory), +/* harmony export */ DOMFilterFactory: () => (/* binding */ DOMFilterFactory), +/* harmony export */ DOMSVGFactory: () => (/* binding */ DOMSVGFactory), +/* harmony export */ DOMStandardFontDataFactory: () => (/* binding */ DOMStandardFontDataFactory), +/* harmony export */ PDFDateString: () => (/* binding */ PDFDateString), +/* harmony export */ PageViewport: () => (/* binding */ PageViewport), +/* harmony export */ PixelsPerInch: () => (/* binding */ PixelsPerInch), +/* harmony export */ RenderingCancelledException: () => (/* binding */ RenderingCancelledException), +/* harmony export */ StatTimer: () => (/* binding */ StatTimer), +/* harmony export */ getColorValues: () => (/* binding */ getColorValues), +/* harmony export */ getCurrentTransform: () => (/* binding */ getCurrentTransform), +/* harmony export */ getCurrentTransformInverse: () => (/* binding */ getCurrentTransformInverse), +/* harmony export */ getFilenameFromUrl: () => (/* binding */ getFilenameFromUrl), +/* harmony export */ getPdfFilenameFromUrl: () => (/* binding */ getPdfFilenameFromUrl), +/* harmony export */ getRGB: () => (/* binding */ getRGB), +/* harmony export */ getXfaPageViewport: () => (/* binding */ getXfaPageViewport), +/* harmony export */ isDataScheme: () => (/* binding */ isDataScheme), +/* harmony export */ isPdfFile: () => (/* binding */ isPdfFile), +/* harmony export */ isValidFetchUrl: () => (/* binding */ isValidFetchUrl), +/* harmony export */ noContextMenu: () => (/* binding */ noContextMenu), +/* harmony export */ setLayerDimensions: () => (/* binding */ setLayerDimensions) +/* harmony export */ }); +/* unused harmony export deprecated */ +/* harmony import */ var _base_factory_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(822); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(266); + + +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; +} +class DOMFilterFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseFilterFactory { + #_cache; + #_defs; + #docId; + #document; + #hcmFilter; + #hcmKey; + #hcmUrl; + #hcmHighlightFilter; + #hcmHighlightKey; + #hcmHighlightUrl; + #id = 0; + constructor({ + docId, + ownerDocument = globalThis.document + } = {}) { + super(); + this.#docId = docId; + this.#document = ownerDocument; + } + get #cache() { + return this.#_cache ||= new Map(); + } + get #defs() { + if (!this.#_defs) { + const div = this.#document.createElement("div"); + const { + style + } = div; + style.visibility = "hidden"; + style.contain = "strict"; + style.width = style.height = 0; + style.position = "absolute"; + style.top = style.left = 0; + style.zIndex = -1; + const svg = this.#document.createElementNS(SVG_NS, "svg"); + svg.setAttribute("width", 0); + svg.setAttribute("height", 0); + this.#_defs = this.#document.createElementNS(SVG_NS, "defs"); + div.append(svg); + svg.append(this.#_defs); + this.#document.body.append(div); + } + return this.#_defs; + } + addFilter(maps) { + if (!maps) { + return "none"; + } + let value = this.#cache.get(maps); + if (value) { + return value; + } + let tableR, tableG, tableB, key; + if (maps.length === 1) { + const mapR = maps[0]; + const buffer = new Array(256); + for (let i = 0; i < 256; i++) { + buffer[i] = mapR[i] / 255; + } + key = tableR = tableG = tableB = buffer.join(","); + } else { + const [mapR, mapG, mapB] = maps; + const bufferR = new Array(256); + const bufferG = new Array(256); + const bufferB = new Array(256); + for (let i = 0; i < 256; i++) { + bufferR[i] = mapR[i] / 255; + bufferG[i] = mapG[i] / 255; + bufferB[i] = mapB[i] / 255; + } + tableR = bufferR.join(","); + tableG = bufferG.join(","); + tableB = bufferB.join(","); + key = `${tableR}${tableG}${tableB}`; + } + value = this.#cache.get(key); + if (value) { + this.#cache.set(maps, value); + return value; + } + const id = `g_${this.#docId}_transfer_map_${this.#id++}`; + const url = `url(#${id})`; + this.#cache.set(maps, url); + this.#cache.set(key, url); + const filter = this.#createFilter(id); + this.#addTransferMapConversion(tableR, tableG, tableB, filter); + return url; + } + addHCMFilter(fgColor, bgColor) { + const key = `${fgColor}-${bgColor}`; + if (this.#hcmKey === key) { + return this.#hcmUrl; + } + this.#hcmKey = key; + this.#hcmUrl = "none"; + this.#hcmFilter?.remove(); + if (!fgColor || !bgColor) { + return this.#hcmUrl; + } + const fgRGB = this.#getRGB(fgColor); + fgColor = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.makeHexColor(...fgRGB); + const bgRGB = this.#getRGB(bgColor); + bgColor = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.makeHexColor(...bgRGB); + this.#defs.style.color = ""; + if (fgColor === "#000000" && bgColor === "#ffffff" || fgColor === bgColor) { + return this.#hcmUrl; + } + const map = new Array(256); + for (let i = 0; i <= 255; i++) { + const x = i / 255; + map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + } + const table = map.join(","); + const id = `g_${this.#docId}_hcm_filter`; + const filter = this.#hcmHighlightFilter = this.#createFilter(id); + this.#addTransferMapConversion(table, table, table, filter); + this.#addGrayConversion(filter); + const getSteps = (c, n) => { + const start = fgRGB[c] / 255; + const end = bgRGB[c] / 255; + const arr = new Array(n + 1); + for (let i = 0; i <= n; i++) { + arr[i] = start + i / n * (end - start); + } + return arr.join(","); + }; + this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter); + this.#hcmUrl = `url(#${id})`; + return this.#hcmUrl; + } + addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) { + const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`; + if (this.#hcmHighlightKey === key) { + return this.#hcmHighlightUrl; + } + this.#hcmHighlightKey = key; + this.#hcmHighlightUrl = "none"; + this.#hcmHighlightFilter?.remove(); + if (!fgColor || !bgColor) { + return this.#hcmHighlightUrl; + } + const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this)); + let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]); + let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]); + let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this)); + if (bgGray < fgGray) { + [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB]; + } + this.#defs.style.color = ""; + const getSteps = (fg, bg, n) => { + const arr = new Array(256); + const step = (bgGray - fgGray) / n; + const newStart = fg / 255; + const newStep = (bg - fg) / (255 * n); + let prev = 0; + for (let i = 0; i <= n; i++) { + const k = Math.round(fgGray + i * step); + const value = newStart + i * newStep; + for (let j = prev; j <= k; j++) { + arr[j] = value; + } + prev = k + 1; + } + for (let i = prev; i < 256; i++) { + arr[i] = arr[prev - 1]; + } + return arr.join(","); + }; + const id = `g_${this.#docId}_hcm_highlight_filter`; + const filter = this.#hcmHighlightFilter = this.#createFilter(id); + this.#addGrayConversion(filter); + this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter); + this.#hcmHighlightUrl = `url(#${id})`; + return this.#hcmHighlightUrl; + } + destroy(keepHCM = false) { + if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) { + return; + } + if (this.#_defs) { + this.#_defs.parentNode.parentNode.remove(); + this.#_defs = null; + } + if (this.#_cache) { + this.#_cache.clear(); + this.#_cache = null; + } + this.#id = 0; + } + #addGrayConversion(filter) { + const feColorMatrix = this.#document.createElementNS(SVG_NS, "feColorMatrix"); + feColorMatrix.setAttribute("type", "matrix"); + feColorMatrix.setAttribute("values", "0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"); + filter.append(feColorMatrix); + } + #createFilter(id) { + const filter = this.#document.createElementNS(SVG_NS, "filter"); + filter.setAttribute("color-interpolation-filters", "sRGB"); + filter.setAttribute("id", id); + this.#defs.append(filter); + return filter; + } + #appendFeFunc(feComponentTransfer, func, table) { + const feFunc = this.#document.createElementNS(SVG_NS, func); + feFunc.setAttribute("type", "discrete"); + feFunc.setAttribute("tableValues", table); + feComponentTransfer.append(feFunc); + } + #addTransferMapConversion(rTable, gTable, bTable, filter) { + const feComponentTransfer = this.#document.createElementNS(SVG_NS, "feComponentTransfer"); + filter.append(feComponentTransfer); + this.#appendFeFunc(feComponentTransfer, "feFuncR", rTable); + this.#appendFeFunc(feComponentTransfer, "feFuncG", gTable); + this.#appendFeFunc(feComponentTransfer, "feFuncB", bTable); + } + #getRGB(color) { + this.#defs.style.color = color; + return getRGB(getComputedStyle(this.#defs).getPropertyValue("color")); + } +} +class DOMCanvasFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.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; + } +} +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,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.stringToBytes)(request.responseText); + } + if (data) { + resolve(data); + return; + } + } + reject(new Error(request.statusText)); + }; + request.send(null); + }); +} +class DOMCMapReaderFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } +} +class DOMStandardFontDataFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); + } +} +class DOMSVGFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } +} +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 = (viewBox[3] - viewBox[1]) * scale; + height = (viewBox[2] - viewBox[0]) * scale; + } else { + offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; + offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; + width = (viewBox[2] - viewBox[0]) * scale; + height = (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; + } + get rawDims() { + const { + viewBox + } = this; + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.shadow)(this, "rawDims", { + pageWidth: viewBox[2] - viewBox[0], + pageHeight: viewBox[3] - viewBox[1], + pageX: viewBox[0], + pageY: viewBox[1] + }); + } + 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 _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([x, y], this.transform); + } + convertToViewportRectangle(rect) { + const topLeft = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([rect[0], rect[1]], this.transform); + const bottomRight = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([rect[2], rect[3]], this.transform); + return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; + } + convertToPdfPoint(x, y) { + return _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyInverseTransform([x, y], this.transform); + } +} +class RenderingCancelledException extends _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.BaseException { + constructor(msg, extraDelay = 0) { + super(msg, "RenderingCancelledException"); + this.extraDelay = extraDelay; + } +} +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, onlyStripPath = false) { + if (!onlyStripPath) { + [url] = url.split(/[#?]/, 1); + } + return url.substring(url.lastIndexOf("/") + 1); +} +function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") { + if (typeof url !== "string") { + return defaultFilename; + } + if (isDataScheme(url)) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.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 {} + } + } + return suggestedFilename || defaultFilename; +} +class StatTimer { + started = Object.create(null); + times = []; + time(name) { + if (name in this.started) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Timer is already running for ${name}`); + } + this.started[name] = Date.now(); + } + timeEnd(name) { + if (!(name in this.started)) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.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 { + name + } of this.times) { + longest = Math.max(name.length, longest); + } + for (const { + name, + start, + end + } of this.times) { + outBuf.push(`${name.padEnd(longest)} ${end - start}ms\n`); + } + return outBuf.join(""); + } +} +function isValidFetchUrl(url, baseUrl) { + try { + const { + protocol + } = baseUrl ? new URL(url, baseUrl) : new URL(url); + return protocol === "http:" || protocol === "https:"; + } catch { + return false; + } +} +function noContextMenu(e) { + e.preventDefault(); +} +function deprecated(details) { + console.log("Deprecated API usage: " + details); +} +let pdfDateStringRegex; +class PDFDateString { + static toDateObject(input) { + if (!input || typeof input !== "string") { + return null; + } + 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)); + } +} +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 + }); +} +function getRGB(color) { + if (color.startsWith("#")) { + const colorRGB = parseInt(color.slice(1), 16); + return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff]; + } + if (color.startsWith("rgb(")) { + return color.slice(4, -1).split(",").map(x => parseInt(x)); + } + if (color.startsWith("rgba(")) { + return color.slice(5, -1).split(",").map(x => parseInt(x)).slice(0, 3); + } + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Not a valid color format: "${color}"`); + return [0, 0, 0]; +} +function getColorValues(colors) { + const span = document.createElement("span"); + span.style.visibility = "hidden"; + document.body.append(span); + for (const name of colors.keys()) { + span.style.color = name; + const computedColor = window.getComputedStyle(span).color; + colors.set(name, getRGB(computedColor)); + } + span.remove(); +} +function getCurrentTransform(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform(); + return [a, b, c, d, e, f]; +} +function getCurrentTransformInverse(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform().invertSelf(); + return [a, b, c, d, e, f]; +} +function setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) { + if (viewport instanceof PageViewport) { + const { + pageWidth, + pageHeight + } = viewport.rawDims; + const { + style + } = div; + const useRound = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.FeatureTest.isCSSRoundSupported; + const w = `var(--scale-factor) * ${pageWidth}px`, + h = `var(--scale-factor) * ${pageHeight}px`; + const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`, + heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`; + if (!mustFlip || viewport.rotation % 180 === 0) { + style.width = widthStr; + style.height = heightStr; + } else { + style.width = heightStr; + style.height = widthStr; + } + } + if (mustRotate) { + div.setAttribute("data-main-rotation", viewport.rotation); + } +} + + +/***/ }), + +/***/ 331: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + AnnotationEditorLayer: () => (/* binding */ AnnotationEditorLayer) +}); + +// EXTERNAL MODULE: ./src/shared/util.js +var util = __webpack_require__(266); +// EXTERNAL MODULE: ./src/display/editor/editor.js +var editor_editor = __webpack_require__(682); +// EXTERNAL MODULE: ./src/display/editor/tools.js +var tools = __webpack_require__(812); +// EXTERNAL MODULE: ./src/display/annotation_layer.js + 1 modules +var annotation_layer = __webpack_require__(640); +;// CONCATENATED MODULE: ./src/display/editor/freetext.js + + + + +class FreeTextEditor extends editor_editor.AnnotationEditor { + #boundEditorDivBlur = this.editorDivBlur.bind(this); + #boundEditorDivFocus = this.editorDivFocus.bind(this); + #boundEditorDivInput = this.editorDivInput.bind(this); + #boundEditorDivKeydown = this.editorDivKeydown.bind(this); + #color; + #content = ""; + #editorDivId = `${this.id}-editor`; + #fontSize; + #initialData = null; + static _freeTextDefaultContent = ""; + static _internalPadding = 0; + static _defaultColor = null; + static _defaultFontSize = 10; + static get _keyboardManager() { + const proto = FreeTextEditor.prototype; + const arrowChecker = self => self.isEmpty(); + const small = tools.AnnotationEditorUIManager.TRANSLATE_SMALL; + const big = tools.AnnotationEditorUIManager.TRANSLATE_BIG; + return (0,util.shadow)(this, "_keyboardManager", new tools.KeyboardManager([[["ctrl+s", "mac+meta+s", "ctrl+p", "mac+meta+p"], proto.commitOrRemove, { + bubbles: true + }], [["ctrl+Enter", "mac+meta+Enter", "Escape", "mac+Escape"], proto.commitOrRemove], [["ArrowLeft", "mac+ArrowLeft"], proto._translateEmpty, { + args: [-small, 0], + checker: arrowChecker + }], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], proto._translateEmpty, { + args: [-big, 0], + checker: arrowChecker + }], [["ArrowRight", "mac+ArrowRight"], proto._translateEmpty, { + args: [small, 0], + checker: arrowChecker + }], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], proto._translateEmpty, { + args: [big, 0], + checker: arrowChecker + }], [["ArrowUp", "mac+ArrowUp"], proto._translateEmpty, { + args: [0, -small], + checker: arrowChecker + }], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], proto._translateEmpty, { + args: [0, -big], + checker: arrowChecker + }], [["ArrowDown", "mac+ArrowDown"], proto._translateEmpty, { + args: [0, small], + checker: arrowChecker + }], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], proto._translateEmpty, { + args: [0, big], + checker: arrowChecker + }]])); + } + static _type = "freetext"; + static _editorType = util.AnnotationEditorType.FREETEXT; + constructor(params) { + super({ + ...params, + name: "freeTextEditor" + }); + this.#color = params.color || FreeTextEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor; + this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize; + } + static initialize(l10n) { + editor_editor.AnnotationEditor.initialize(l10n, { + strings: ["pdfjs-free-text-default-content"] + }); + const style = getComputedStyle(document.documentElement); + this._internalPadding = parseFloat(style.getPropertyValue("--freetext-padding")); + } + static updateDefaultParams(type, value) { + switch (type) { + case util.AnnotationEditorParamsType.FREETEXT_SIZE: + FreeTextEditor._defaultFontSize = value; + break; + case util.AnnotationEditorParamsType.FREETEXT_COLOR: + FreeTextEditor._defaultColor = value; + break; + } + } + updateParams(type, value) { + switch (type) { + case util.AnnotationEditorParamsType.FREETEXT_SIZE: + this.#updateFontSize(value); + break; + case util.AnnotationEditorParamsType.FREETEXT_COLOR: + this.#updateColor(value); + break; + } + } + static get defaultPropertiesToUpdate() { + return [[util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor]]; + } + get propertiesToUpdate() { + return [[util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]]; + } + #updateFontSize(fontSize) { + const setFontsize = size => { + this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`; + this.translate(0, -(size - this.#fontSize) * this.parentScale); + this.#fontSize = size; + this.#setEditorDimensions(); + }; + const savedFontsize = this.#fontSize; + this.addCommands({ + cmd: () => { + setFontsize(fontSize); + }, + undo: () => { + setFontsize(savedFontsize); + }, + mustExec: true, + type: util.AnnotationEditorParamsType.FREETEXT_SIZE, + overwriteIfSameType: true, + keepUndo: true + }); + } + #updateColor(color) { + const savedColor = this.#color; + this.addCommands({ + cmd: () => { + this.#color = this.editorDiv.style.color = color; + }, + undo: () => { + this.#color = this.editorDiv.style.color = savedColor; + }, + mustExec: true, + type: util.AnnotationEditorParamsType.FREETEXT_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + _translateEmpty(x, y) { + this._uiManager.translateSelectedEditors(x, y, true); + } + getInitialTranslation() { + const scale = this.parentScale; + return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale]; + } + rebuild() { + if (!this.parent) { + return; + } + super.rebuild(); + if (this.div === null) { + return; + } + if (!this.isAttachedToDOM) { + this.parent.add(this); + } + } + enableEditMode() { + if (this.isInEditMode()) { + return; + } + this.parent.setEditingState(false); + this.parent.updateToolbar(util.AnnotationEditorType.FREETEXT); + super.enableEditMode(); + this.overlayDiv.classList.remove("enabled"); + this.editorDiv.contentEditable = true; + this._isDraggable = false; + this.div.removeAttribute("aria-activedescendant"); + this.editorDiv.addEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.addEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.addEventListener("blur", this.#boundEditorDivBlur); + this.editorDiv.addEventListener("input", this.#boundEditorDivInput); + } + disableEditMode() { + if (!this.isInEditMode()) { + return; + } + this.parent.setEditingState(true); + super.disableEditMode(); + this.overlayDiv.classList.add("enabled"); + this.editorDiv.contentEditable = false; + this.div.setAttribute("aria-activedescendant", this.#editorDivId); + this._isDraggable = true; + this.editorDiv.removeEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.removeEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.removeEventListener("blur", this.#boundEditorDivBlur); + this.editorDiv.removeEventListener("input", this.#boundEditorDivInput); + this.div.focus({ + preventScroll: true + }); + this.isEditing = false; + this.parent.div.classList.add("freetextEditing"); + } + focusin(event) { + if (!this._focusEventsAllowed) { + return; + } + super.focusin(event); + if (event.target !== this.editorDiv) { + this.editorDiv.focus(); + } + } + onceAdded() { + if (this.width) { + this.#cheatInitialRect(); + return; + } + this.enableEditMode(); + this.editorDiv.focus(); + if (this._initialOptions?.isCentered) { + this.center(); + } + this._initialOptions = null; + } + isEmpty() { + return !this.editorDiv || this.editorDiv.innerText.trim() === ""; + } + remove() { + this.isEditing = false; + if (this.parent) { + this.parent.setEditingState(true); + this.parent.div.classList.add("freetextEditing"); + } + super.remove(); + } + #extractText() { + const divs = this.editorDiv.getElementsByTagName("div"); + if (divs.length === 0) { + return this.editorDiv.innerText; + } + const buffer = []; + for (const div of divs) { + buffer.push(div.innerText.replace(/\r\n?|\n/, "")); + } + return buffer.join("\n"); + } + #setEditorDimensions() { + const [parentWidth, parentHeight] = this.parentDimensions; + let rect; + if (this.isAttachedToDOM) { + rect = this.div.getBoundingClientRect(); + } else { + const { + currentLayer, + div + } = this; + const savedDisplay = div.style.display; + div.style.display = "hidden"; + currentLayer.div.append(this.div); + rect = div.getBoundingClientRect(); + div.remove(); + div.style.display = savedDisplay; + } + if (this.rotation % 180 === this.parentRotation % 180) { + this.width = rect.width / parentWidth; + this.height = rect.height / parentHeight; + } else { + this.width = rect.height / parentWidth; + this.height = rect.width / parentHeight; + } + this.fixAndSetPosition(); + } + commit() { + if (!this.isInEditMode()) { + return; + } + super.commit(); + this.disableEditMode(); + const savedText = this.#content; + const newText = this.#content = this.#extractText().trimEnd(); + if (savedText === newText) { + return; + } + const setText = text => { + this.#content = text; + if (!text) { + this.remove(); + return; + } + this.#setContent(); + this._uiManager.rebuild(this); + this.#setEditorDimensions(); + }; + this.addCommands({ + cmd: () => { + setText(newText); + }, + undo: () => { + setText(savedText); + }, + mustExec: false + }); + this.#setEditorDimensions(); + } + shouldGetKeyboardEvents() { + return this.isInEditMode(); + } + enterInEditMode() { + this.enableEditMode(); + this.editorDiv.focus(); + } + dblclick(event) { + this.enterInEditMode(); + } + keydown(event) { + if (event.target === this.div && event.key === "Enter") { + this.enterInEditMode(); + event.preventDefault(); + } + } + editorDivKeydown(event) { + FreeTextEditor._keyboardManager.exec(this, event); + } + editorDivFocus(event) { + this.isEditing = true; + } + editorDivBlur(event) { + this.isEditing = false; + } + editorDivInput(event) { + this.parent.div.classList.toggle("freetextEditing", this.isEmpty()); + } + disableEditing() { + this.editorDiv.setAttribute("role", "comment"); + this.editorDiv.removeAttribute("aria-multiline"); + } + enableEditing() { + this.editorDiv.setAttribute("role", "textbox"); + this.editorDiv.setAttribute("aria-multiline", true); + } + render() { + if (this.div) { + return this.div; + } + let baseX, baseY; + if (this.width) { + baseX = this.x; + baseY = this.y; + } + super.render(); + this.editorDiv = document.createElement("div"); + this.editorDiv.className = "internal"; + this.editorDiv.setAttribute("id", this.#editorDivId); + this.editorDiv.setAttribute("data-l10n-id", "pdfjs-free-text"); + this.enableEditing(); + editor_editor.AnnotationEditor._l10nPromise.get("pdfjs-free-text-default-content").then(msg => this.editorDiv?.setAttribute("default-content", msg)); + this.editorDiv.contentEditable = true; + const { + style + } = this.editorDiv; + style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`; + style.color = this.#color; + this.div.append(this.editorDiv); + this.overlayDiv = document.createElement("div"); + this.overlayDiv.classList.add("overlay", "enabled"); + this.div.append(this.overlayDiv); + (0,tools.bindEvents)(this, this.div, ["dblclick", "keydown"]); + if (this.width) { + const [parentWidth, parentHeight] = this.parentDimensions; + if (this.annotationElementId) { + const { + position + } = this.#initialData; + let [tx, ty] = this.getInitialTranslation(); + [tx, ty] = this.pageTranslationToScreen(tx, ty); + const [pageWidth, pageHeight] = this.pageDimensions; + const [pageX, pageY] = this.pageTranslation; + let posX, posY; + switch (this.rotation) { + case 0: + posX = baseX + (position[0] - pageX) / pageWidth; + posY = baseY + this.height - (position[1] - pageY) / pageHeight; + break; + case 90: + posX = baseX + (position[0] - pageX) / pageWidth; + posY = baseY - (position[1] - pageY) / pageHeight; + [tx, ty] = [ty, -tx]; + break; + case 180: + posX = baseX - this.width + (position[0] - pageX) / pageWidth; + posY = baseY - (position[1] - pageY) / pageHeight; + [tx, ty] = [-tx, -ty]; + break; + case 270: + posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth; + posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight; + [tx, ty] = [-ty, tx]; + break; + } + this.setAt(posX * parentWidth, posY * parentHeight, tx, ty); + } else { + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + } + this.#setContent(); + this._isDraggable = true; + this.editorDiv.contentEditable = false; + } else { + this._isDraggable = false; + this.editorDiv.contentEditable = true; + } + return this.div; + } + #setContent() { + this.editorDiv.replaceChildren(); + if (!this.#content) { + return; + } + for (const line of this.#content.split("\n")) { + const div = document.createElement("div"); + div.append(line ? document.createTextNode(line) : document.createElement("br")); + this.editorDiv.append(div); + } + } + get contentDiv() { + return this.editorDiv; + } + static deserialize(data, parent, uiManager) { + let initialData = null; + if (data instanceof annotation_layer.FreeTextAnnotationElement) { + const { + data: { + defaultAppearanceData: { + fontSize, + fontColor + }, + rect, + rotation, + id + }, + textContent, + textPosition, + parent: { + page: { + pageNumber + } + } + } = data; + if (!textContent || textContent.length === 0) { + return null; + } + initialData = data = { + annotationType: util.AnnotationEditorType.FREETEXT, + color: Array.from(fontColor), + fontSize, + value: textContent.join("\n"), + position: textPosition, + pageIndex: pageNumber - 1, + rect, + rotation, + id, + deleted: false + }; + } + const editor = super.deserialize(data, parent, uiManager); + editor.#fontSize = data.fontSize; + editor.#color = util.Util.makeHexColor(...data.color); + editor.#content = data.value; + editor.annotationElementId = data.id || null; + editor.#initialData = initialData; + return editor; + } + serialize(isForCopying = false) { + if (this.isEmpty()) { + return null; + } + if (this.deleted) { + return { + pageIndex: this.pageIndex, + id: this.annotationElementId, + deleted: true + }; + } + const padding = FreeTextEditor._internalPadding * this.parentScale; + const rect = this.getRect(padding, padding); + const color = editor_editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color); + const serialized = { + annotationType: util.AnnotationEditorType.FREETEXT, + color, + fontSize: this.#fontSize, + value: this.#content, + pageIndex: this.pageIndex, + rect, + rotation: this.rotation, + structTreeParentId: this._structTreeParentId + }; + if (isForCopying) { + return serialized; + } + if (this.annotationElementId && !this.#hasElementChanged(serialized)) { + return null; + } + serialized.id = this.annotationElementId; + return serialized; + } + #hasElementChanged(serialized) { + const { + value, + fontSize, + color, + rect, + pageIndex + } = this.#initialData; + return serialized.value !== value || serialized.fontSize !== fontSize || serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex; + } + #cheatInitialRect(delayed = false) { + if (!this.annotationElementId) { + return; + } + this.#setEditorDimensions(); + if (!delayed && (this.width === 0 || this.height === 0)) { + setTimeout(() => this.#cheatInitialRect(true), 0); + return; + } + const padding = FreeTextEditor._internalPadding * this.parentScale; + this.#initialData.rect = this.getRect(padding, padding); + } +} + +// EXTERNAL MODULE: ./src/display/display_utils.js +var display_utils = __webpack_require__(473); +;// CONCATENATED MODULE: ./src/display/editor/ink.js + + + + + +class InkEditor extends editor_editor.AnnotationEditor { + #baseHeight = 0; + #baseWidth = 0; + #boundCanvasPointermove = this.canvasPointermove.bind(this); + #boundCanvasPointerleave = this.canvasPointerleave.bind(this); + #boundCanvasPointerup = this.canvasPointerup.bind(this); + #boundCanvasPointerdown = this.canvasPointerdown.bind(this); + #canvasContextMenuTimeoutId = null; + #currentPath2D = new Path2D(); + #disableEditing = false; + #hasSomethingToDraw = false; + #isCanvasInitialized = false; + #observer = null; + #realWidth = 0; + #realHeight = 0; + #requestFrameCallback = null; + static _defaultColor = null; + static _defaultOpacity = 1; + static _defaultThickness = 1; + static _type = "ink"; + static _editorType = util.AnnotationEditorType.INK; + constructor(params) { + super({ + ...params, + name: "inkEditor" + }); + this.color = params.color || null; + this.thickness = params.thickness || null; + this.opacity = params.opacity || null; + this.paths = []; + this.bezierPath2D = []; + this.allRawPaths = []; + this.currentPath = []; + this.scaleFactor = 1; + this.translationX = this.translationY = 0; + this.x = 0; + this.y = 0; + this._willKeepAspectRatio = true; + } + static initialize(l10n) { + editor_editor.AnnotationEditor.initialize(l10n); + } + static updateDefaultParams(type, value) { + switch (type) { + case util.AnnotationEditorParamsType.INK_THICKNESS: + InkEditor._defaultThickness = value; + break; + case util.AnnotationEditorParamsType.INK_COLOR: + InkEditor._defaultColor = value; + break; + case util.AnnotationEditorParamsType.INK_OPACITY: + InkEditor._defaultOpacity = value / 100; + break; + } + } + updateParams(type, value) { + switch (type) { + case util.AnnotationEditorParamsType.INK_THICKNESS: + this.#updateThickness(value); + break; + case util.AnnotationEditorParamsType.INK_COLOR: + this.#updateColor(value); + break; + case util.AnnotationEditorParamsType.INK_OPACITY: + this.#updateOpacity(value); + break; + } + } + static get defaultPropertiesToUpdate() { + return [[util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor], [util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]]; + } + get propertiesToUpdate() { + return [[util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor], [util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]]; + } + #updateThickness(thickness) { + const savedThickness = this.thickness; + this.addCommands({ + cmd: () => { + this.thickness = thickness; + this.#fitToContent(); + }, + undo: () => { + this.thickness = savedThickness; + this.#fitToContent(); + }, + mustExec: true, + type: util.AnnotationEditorParamsType.INK_THICKNESS, + overwriteIfSameType: true, + keepUndo: true + }); + } + #updateColor(color) { + const savedColor = this.color; + this.addCommands({ + cmd: () => { + this.color = color; + this.#redraw(); + }, + undo: () => { + this.color = savedColor; + this.#redraw(); + }, + mustExec: true, + type: util.AnnotationEditorParamsType.INK_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + #updateOpacity(opacity) { + opacity /= 100; + const savedOpacity = this.opacity; + this.addCommands({ + cmd: () => { + this.opacity = opacity; + this.#redraw(); + }, + undo: () => { + this.opacity = savedOpacity; + this.#redraw(); + }, + mustExec: true, + type: util.AnnotationEditorParamsType.INK_OPACITY, + overwriteIfSameType: true, + keepUndo: true + }); + } + rebuild() { + if (!this.parent) { + return; + } + super.rebuild(); + if (this.div === null) { + return; + } + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + if (!this.isAttachedToDOM) { + this.parent.add(this); + this.#setCanvasDims(); + } + this.#fitToContent(); + } + remove() { + if (this.canvas === null) { + return; + } + if (!this.isEmpty()) { + this.commit(); + } + this.canvas.width = this.canvas.height = 0; + this.canvas.remove(); + this.canvas = null; + if (this.#canvasContextMenuTimeoutId) { + clearTimeout(this.#canvasContextMenuTimeoutId); + this.#canvasContextMenuTimeoutId = null; + } + this.#observer.disconnect(); + this.#observer = null; + super.remove(); + } + setParent(parent) { + if (!this.parent && parent) { + this._uiManager.removeShouldRescale(this); + } else if (this.parent && parent === null) { + this._uiManager.addShouldRescale(this); + } + super.setParent(parent); + } + onScaleChanging() { + const [parentWidth, parentHeight] = this.parentDimensions; + const width = this.width * parentWidth; + const height = this.height * parentHeight; + this.setDimensions(width, height); + } + enableEditMode() { + if (this.#disableEditing || this.canvas === null) { + return; + } + super.enableEditMode(); + this._isDraggable = false; + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + } + disableEditMode() { + if (!this.isInEditMode() || this.canvas === null) { + return; + } + super.disableEditMode(); + this._isDraggable = !this.isEmpty(); + this.div.classList.remove("editing"); + this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown); + } + onceAdded() { + this._isDraggable = !this.isEmpty(); + } + isEmpty() { + return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0; + } + #getInitialBBox() { + const { + parentRotation, + parentDimensions: [width, height] + } = this; + switch (parentRotation) { + case 90: + return [0, height, height, width]; + case 180: + return [width, height, width, height]; + case 270: + return [width, 0, height, width]; + default: + return [0, 0, width, height]; + } + } + #setStroke() { + const { + ctx, + color, + opacity, + thickness, + parentScale, + scaleFactor + } = this; + ctx.lineWidth = thickness * parentScale / scaleFactor; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.miterLimit = 10; + ctx.strokeStyle = `${color}${(0,tools.opacityToHex)(opacity)}`; + } + #startDrawing(x, y) { + this.canvas.addEventListener("contextmenu", display_utils.noContextMenu); + this.canvas.addEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.addEventListener("pointermove", this.#boundCanvasPointermove); + this.canvas.addEventListener("pointerup", this.#boundCanvasPointerup); + this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown); + this.isEditing = true; + if (!this.#isCanvasInitialized) { + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.thickness ||= InkEditor._defaultThickness; + this.color ||= InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor; + this.opacity ??= InkEditor._defaultOpacity; + } + this.currentPath.push([x, y]); + this.#hasSomethingToDraw = false; + this.#setStroke(); + this.#requestFrameCallback = () => { + this.#drawPoints(); + if (this.#requestFrameCallback) { + window.requestAnimationFrame(this.#requestFrameCallback); + } + }; + window.requestAnimationFrame(this.#requestFrameCallback); + } + #draw(x, y) { + const [lastX, lastY] = this.currentPath.at(-1); + if (this.currentPath.length > 1 && x === lastX && y === lastY) { + return; + } + const currentPath = this.currentPath; + let path2D = this.#currentPath2D; + currentPath.push([x, y]); + this.#hasSomethingToDraw = true; + if (currentPath.length <= 2) { + path2D.moveTo(...currentPath[0]); + path2D.lineTo(x, y); + return; + } + if (currentPath.length === 3) { + this.#currentPath2D = path2D = new Path2D(); + path2D.moveTo(...currentPath[0]); + } + this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y); + } + #endPath() { + if (this.currentPath.length === 0) { + return; + } + const lastPoint = this.currentPath.at(-1); + this.#currentPath2D.lineTo(...lastPoint); + } + #stopDrawing(x, y) { + this.#requestFrameCallback = null; + x = Math.min(Math.max(x, 0), this.canvas.width); + y = Math.min(Math.max(y, 0), this.canvas.height); + this.#draw(x, y); + this.#endPath(); + let bezier; + if (this.currentPath.length !== 1) { + bezier = this.#generateBezierPoints(); + } else { + const xy = [x, y]; + bezier = [[xy, xy.slice(), xy.slice(), xy]]; + } + const path2D = this.#currentPath2D; + const currentPath = this.currentPath; + this.currentPath = []; + this.#currentPath2D = new Path2D(); + const cmd = () => { + this.allRawPaths.push(currentPath); + this.paths.push(bezier); + this.bezierPath2D.push(path2D); + this.rebuild(); + }; + const undo = () => { + this.allRawPaths.pop(); + this.paths.pop(); + this.bezierPath2D.pop(); + if (this.paths.length === 0) { + this.remove(); + } else { + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + this.#fitToContent(); + } + }; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + #drawPoints() { + if (!this.#hasSomethingToDraw) { + return; + } + this.#hasSomethingToDraw = false; + const thickness = Math.ceil(this.thickness * this.parentScale); + const lastPoints = this.currentPath.slice(-3); + const x = lastPoints.map(xy => xy[0]); + const y = lastPoints.map(xy => xy[1]); + const xMin = Math.min(...x) - thickness; + const xMax = Math.max(...x) + thickness; + const yMin = Math.min(...y) - thickness; + const yMax = Math.max(...y) + thickness; + const { + ctx + } = this; + ctx.save(); + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } + ctx.stroke(this.#currentPath2D); + ctx.restore(); + } + #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) { + const prevX = (x0 + x1) / 2; + const prevY = (y0 + y1) / 2; + const x3 = (x1 + x2) / 2; + const y3 = (y1 + y2) / 2; + path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3); + } + #generateBezierPoints() { + const path = this.currentPath; + if (path.length <= 2) { + return [[path[0], path[0], path.at(-1), path.at(-1)]]; + } + const bezierPoints = []; + let i; + let [x0, y0] = path[0]; + for (i = 1; i < path.length - 2; i++) { + const [x1, y1] = path[i]; + const [x2, y2] = path[i + 1]; + const x3 = (x1 + x2) / 2; + const y3 = (y1 + y2) / 2; + const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3]; + const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3]; + bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]); + [x0, y0] = [x3, y3]; + } + const [x1, y1] = path[i]; + const [x2, y2] = path[i + 1]; + const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3]; + const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3]; + bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]); + return bezierPoints; + } + #redraw() { + if (this.isEmpty()) { + this.#updateTransform(); + return; + } + this.#setStroke(); + const { + canvas, + ctx + } = this; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.clearRect(0, 0, canvas.width, canvas.height); + this.#updateTransform(); + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } + } + commit() { + if (this.#disableEditing) { + return; + } + super.commit(); + this.isEditing = false; + this.disableEditMode(); + this.setInForeground(); + this.#disableEditing = true; + this.div.classList.add("disabled"); + this.#fitToContent(true); + this.makeResizable(); + this.parent.addInkEditorIfNeeded(true); + this.moveInDOM(); + this.div.focus({ + preventScroll: true + }); + } + focusin(event) { + if (!this._focusEventsAllowed) { + return; + } + super.focusin(event); + this.enableEditMode(); + } + canvasPointerdown(event) { + if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) { + return; + } + this.setInForeground(); + event.preventDefault(); + if (event.type !== "mouse") { + this.div.focus(); + } + this.#startDrawing(event.offsetX, event.offsetY); + } + canvasPointermove(event) { + event.preventDefault(); + this.#draw(event.offsetX, event.offsetY); + } + canvasPointerup(event) { + event.preventDefault(); + this.#endDrawing(event); + } + canvasPointerleave(event) { + this.#endDrawing(event); + } + #endDrawing(event) { + this.canvas.removeEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.removeEventListener("pointermove", this.#boundCanvasPointermove); + this.canvas.removeEventListener("pointerup", this.#boundCanvasPointerup); + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + if (this.#canvasContextMenuTimeoutId) { + clearTimeout(this.#canvasContextMenuTimeoutId); + } + this.#canvasContextMenuTimeoutId = setTimeout(() => { + this.#canvasContextMenuTimeoutId = null; + this.canvas.removeEventListener("contextmenu", display_utils.noContextMenu); + }, 10); + this.#stopDrawing(event.offsetX, event.offsetY); + this.addToAnnotationStorage(); + this.setInBackground(); + } + #createCanvas() { + this.canvas = document.createElement("canvas"); + this.canvas.width = this.canvas.height = 0; + this.canvas.className = "inkEditorCanvas"; + this.canvas.setAttribute("data-l10n-id", "pdfjs-ink-canvas"); + this.div.append(this.canvas); + this.ctx = this.canvas.getContext("2d"); + } + #createObserver() { + this.#observer = new ResizeObserver(entries => { + const rect = entries[0].contentRect; + if (rect.width && rect.height) { + this.setDimensions(rect.width, rect.height); + } + }); + this.#observer.observe(this.div); + } + get isResizable() { + return !this.isEmpty() && this.#disableEditing; + } + render() { + if (this.div) { + return this.div; + } + let baseX, baseY; + if (this.width) { + baseX = this.x; + baseY = this.y; + } + super.render(); + this.div.setAttribute("data-l10n-id", "pdfjs-ink"); + const [x, y, w, h] = this.#getInitialBBox(); + this.setAt(x, y, 0, 0); + this.setDims(w, h); + this.#createCanvas(); + if (this.width) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.setAspectRatio(this.width * parentWidth, this.height * parentHeight); + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.setDims(this.width * parentWidth, this.height * parentHeight); + this.#redraw(); + this.div.classList.add("disabled"); + } else { + this.div.classList.add("editing"); + this.enableEditMode(); + } + this.#createObserver(); + return this.div; + } + #setCanvasDims() { + if (!this.#isCanvasInitialized) { + return; + } + const [parentWidth, parentHeight] = this.parentDimensions; + this.canvas.width = Math.ceil(this.width * parentWidth); + this.canvas.height = Math.ceil(this.height * parentHeight); + this.#updateTransform(); + } + setDimensions(width, height) { + const roundedWidth = Math.round(width); + const roundedHeight = Math.round(height); + if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) { + return; + } + this.#realWidth = roundedWidth; + this.#realHeight = roundedHeight; + this.canvas.style.visibility = "hidden"; + const [parentWidth, parentHeight] = this.parentDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + this.fixAndSetPosition(); + if (this.#disableEditing) { + this.#setScaleFactor(width, height); + } + this.#setCanvasDims(); + this.#redraw(); + this.canvas.style.visibility = "visible"; + this.fixDims(); + } + #setScaleFactor(width, height) { + const padding = this.#getPadding(); + const scaleFactorW = (width - padding) / this.#baseWidth; + const scaleFactorH = (height - padding) / this.#baseHeight; + this.scaleFactor = Math.min(scaleFactorW, scaleFactorH); + } + #updateTransform() { + const padding = this.#getPadding() / 2; + this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding); + } + static #buildPath2D(bezier) { + const path2D = new Path2D(); + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + if (i === 0) { + path2D.moveTo(...first); + } + path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]); + } + return path2D; + } + static #toPDFCoordinates(points, rect, rotation) { + const [blX, blY, trX, trY] = rect; + switch (rotation) { + case 0: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] += blX; + points[i + 1] = trY - points[i + 1]; + } + break; + case 90: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = points[i + 1] + blX; + points[i + 1] = x + blY; + } + break; + case 180: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] = trX - points[i]; + points[i + 1] += blY; + } + break; + case 270: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = trX - points[i + 1]; + points[i + 1] = trY - x; + } + break; + default: + throw new Error("Invalid rotation"); + } + return points; + } + static #fromPDFCoordinates(points, rect, rotation) { + const [blX, blY, trX, trY] = rect; + switch (rotation) { + case 0: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] -= blX; + points[i + 1] = trY - points[i + 1]; + } + break; + case 90: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = points[i + 1] - blY; + points[i + 1] = x - blX; + } + break; + case 180: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] = trX - points[i]; + points[i + 1] -= blY; + } + break; + case 270: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = trY - points[i + 1]; + points[i + 1] = trX - x; + } + break; + default: + throw new Error("Invalid rotation"); + } + return points; + } + #serializePaths(s, tx, ty, rect) { + const paths = []; + const padding = this.thickness / 2; + const shiftX = s * tx + padding; + const shiftY = s * ty + padding; + for (const bezier of this.paths) { + const buffer = []; + const points = []; + for (let j = 0, jj = bezier.length; j < jj; j++) { + const [first, control1, control2, second] = bezier[j]; + const p10 = s * first[0] + shiftX; + const p11 = s * first[1] + shiftY; + const p20 = s * control1[0] + shiftX; + const p21 = s * control1[1] + shiftY; + const p30 = s * control2[0] + shiftX; + const p31 = s * control2[1] + shiftY; + const p40 = s * second[0] + shiftX; + const p41 = s * second[1] + shiftY; + if (j === 0) { + buffer.push(p10, p11); + points.push(p10, p11); + } + buffer.push(p20, p21, p30, p31, p40, p41); + points.push(p20, p21); + if (j === jj - 1) { + points.push(p40, p41); + } + } + paths.push({ + bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation), + points: InkEditor.#toPDFCoordinates(points, rect, this.rotation) + }); + } + return paths; + } + #getBbox() { + let xMin = Infinity; + let xMax = -Infinity; + let yMin = Infinity; + let yMax = -Infinity; + for (const path of this.paths) { + for (const [first, control1, control2, second] of path) { + const bbox = util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second); + xMin = Math.min(xMin, bbox[0]); + yMin = Math.min(yMin, bbox[1]); + xMax = Math.max(xMax, bbox[2]); + yMax = Math.max(yMax, bbox[3]); + } + } + return [xMin, yMin, xMax, yMax]; + } + #getPadding() { + return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0; + } + #fitToContent(firstTime = false) { + if (this.isEmpty()) { + return; + } + if (!this.#disableEditing) { + this.#redraw(); + return; + } + const bbox = this.#getBbox(); + const padding = this.#getPadding(); + this.#baseWidth = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]); + this.#baseHeight = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]); + const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor); + const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor); + const [parentWidth, parentHeight] = this.parentDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + this.setAspectRatio(width, height); + const prevTranslationX = this.translationX; + const prevTranslationY = this.translationY; + this.translationX = -bbox[0]; + this.translationY = -bbox[1]; + this.#setCanvasDims(); + this.#redraw(); + this.#realWidth = width; + this.#realHeight = height; + this.setDims(width, height); + const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0; + this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding); + } + static deserialize(data, parent, uiManager) { + if (data instanceof annotation_layer.InkAnnotationElement) { + return null; + } + const editor = super.deserialize(data, parent, uiManager); + editor.thickness = data.thickness; + editor.color = util.Util.makeHexColor(...data.color); + editor.opacity = data.opacity; + const [pageWidth, pageHeight] = editor.pageDimensions; + const width = editor.width * pageWidth; + const height = editor.height * pageHeight; + const scaleFactor = editor.parentScale; + const padding = data.thickness / 2; + editor.#disableEditing = true; + editor.#realWidth = Math.round(width); + editor.#realHeight = Math.round(height); + const { + paths, + rect, + rotation + } = data; + for (let { + bezier + } of paths) { + bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation); + const path = []; + editor.paths.push(path); + let p0 = scaleFactor * (bezier[0] - padding); + let p1 = scaleFactor * (bezier[1] - padding); + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const p10 = scaleFactor * (bezier[i] - padding); + const p11 = scaleFactor * (bezier[i + 1] - padding); + const p20 = scaleFactor * (bezier[i + 2] - padding); + const p21 = scaleFactor * (bezier[i + 3] - padding); + const p30 = scaleFactor * (bezier[i + 4] - padding); + const p31 = scaleFactor * (bezier[i + 5] - padding); + path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]); + p0 = p30; + p1 = p31; + } + const path2D = this.#buildPath2D(path); + editor.bezierPath2D.push(path2D); + } + const bbox = editor.#getBbox(); + editor.#baseWidth = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]); + editor.#baseHeight = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]); + editor.#setScaleFactor(width, height); + return editor; + } + serialize() { + if (this.isEmpty()) { + return null; + } + const rect = this.getRect(0, 0); + const color = editor_editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle); + return { + annotationType: util.AnnotationEditorType.INK, + color, + thickness: this.thickness, + opacity: this.opacity, + paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect), + pageIndex: this.pageIndex, + rect, + rotation: this.rotation, + structTreeParentId: this._structTreeParentId + }; + } +} + +;// CONCATENATED MODULE: ./src/display/editor/stamp.js + + + + +class StampEditor extends editor_editor.AnnotationEditor { + #bitmap = null; + #bitmapId = null; + #bitmapPromise = null; + #bitmapUrl = null; + #bitmapFile = null; + #bitmapFileName = ""; + #canvas = null; + #observer = null; + #resizeTimeoutId = null; + #isSvg = false; + #hasBeenAddedInUndoStack = false; + static _type = "stamp"; + static _editorType = util.AnnotationEditorType.STAMP; + constructor(params) { + super({ + ...params, + name: "stampEditor" + }); + this.#bitmapUrl = params.bitmapUrl; + this.#bitmapFile = params.bitmapFile; + } + static initialize(l10n) { + editor_editor.AnnotationEditor.initialize(l10n); + } + static get supportedTypes() { + const types = ["apng", "avif", "bmp", "gif", "jpeg", "png", "svg+xml", "webp", "x-icon"]; + return (0,util.shadow)(this, "supportedTypes", types.map(type => `image/${type}`)); + } + static get supportedTypesStr() { + return (0,util.shadow)(this, "supportedTypesStr", this.supportedTypes.join(",")); + } + static isHandlingMimeForPasting(mime) { + return this.supportedTypes.includes(mime); + } + static paste(item, parent) { + parent.pasteEditor(util.AnnotationEditorType.STAMP, { + bitmapFile: item.getAsFile() + }); + } + #getBitmapFetched(data, fromId = false) { + if (!data) { + this.remove(); + return; + } + this.#bitmap = data.bitmap; + if (!fromId) { + this.#bitmapId = data.id; + this.#isSvg = data.isSvg; + } + if (data.file) { + this.#bitmapFileName = data.file.name; + } + this.#createCanvas(); + } + #getBitmapDone() { + this.#bitmapPromise = null; + this._uiManager.enableWaiting(false); + if (this.#canvas) { + this.div.focus(); + } + } + #getBitmap() { + if (this.#bitmapId) { + this._uiManager.enableWaiting(true); + this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone()); + return; + } + if (this.#bitmapUrl) { + const url = this.#bitmapUrl; + this.#bitmapUrl = null; + this._uiManager.enableWaiting(true); + this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone()); + return; + } + if (this.#bitmapFile) { + const file = this.#bitmapFile; + this.#bitmapFile = null; + this._uiManager.enableWaiting(true); + this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone()); + return; + } + const input = document.createElement("input"); + input.type = "file"; + input.accept = StampEditor.supportedTypesStr; + this.#bitmapPromise = new Promise(resolve => { + input.addEventListener("change", async () => { + if (!input.files || input.files.length === 0) { + this.remove(); + } else { + this._uiManager.enableWaiting(true); + const data = await this._uiManager.imageManager.getFromFile(input.files[0]); + this.#getBitmapFetched(data); + } + resolve(); + }); + input.addEventListener("cancel", () => { + this.remove(); + resolve(); + }); + }).finally(() => this.#getBitmapDone()); + input.click(); + } + remove() { + if (this.#bitmapId) { + this.#bitmap = null; + this._uiManager.imageManager.deleteId(this.#bitmapId); + this.#canvas?.remove(); + this.#canvas = null; + this.#observer?.disconnect(); + this.#observer = null; + if (this.#resizeTimeoutId) { + clearTimeout(this.#resizeTimeoutId); + this.#resizeTimeoutId = null; + } + } + super.remove(); + } + rebuild() { + if (!this.parent) { + if (this.#bitmapId) { + this.#getBitmap(); + } + return; + } + super.rebuild(); + if (this.div === null) { + return; + } + if (this.#bitmapId) { + this.#getBitmap(); + } + if (!this.isAttachedToDOM) { + this.parent.add(this); + } + } + onceAdded() { + this._isDraggable = true; + this.div.focus(); + } + isEmpty() { + return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile); + } + get isResizable() { + return true; + } + render() { + if (this.div) { + return this.div; + } + let baseX, baseY; + if (this.width) { + baseX = this.x; + baseY = this.y; + } + super.render(); + this.div.hidden = true; + if (this.#bitmap) { + this.#createCanvas(); + } else { + this.#getBitmap(); + } + if (this.width) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + } + return this.div; + } + #createCanvas() { + const { + div + } = this; + let { + width, + height + } = this.#bitmap; + const [pageWidth, pageHeight] = this.pageDimensions; + const MAX_RATIO = 0.75; + if (this.width) { + width = this.width * pageWidth; + height = this.height * pageHeight; + } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) { + const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height); + width *= factor; + height *= factor; + } + const [parentWidth, parentHeight] = this.parentDimensions; + this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight); + this._uiManager.enableWaiting(false); + const canvas = this.#canvas = document.createElement("canvas"); + div.append(canvas); + div.hidden = false; + this.#drawBitmap(width, height); + this.#createObserver(); + if (!this.#hasBeenAddedInUndoStack) { + this.parent.addUndoableEditor(this); + this.#hasBeenAddedInUndoStack = true; + } + this._uiManager._eventBus.dispatch("reporttelemetry", { + source: this, + details: { + type: "editing", + subtype: this.editorType, + data: { + action: "inserted_image" + } + } + }); + this.addAltTextButton(); + if (this.#bitmapFileName) { + canvas.setAttribute("aria-label", this.#bitmapFileName); + } + } + #setDimensions(width, height) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + this.setDims(width, height); + if (this._initialOptions?.isCentered) { + this.center(); + } else { + this.fixAndSetPosition(); + } + this._initialOptions = null; + if (this.#resizeTimeoutId !== null) { + clearTimeout(this.#resizeTimeoutId); + } + const TIME_TO_WAIT = 200; + this.#resizeTimeoutId = setTimeout(() => { + this.#resizeTimeoutId = null; + this.#drawBitmap(width, height); + }, TIME_TO_WAIT); + } + #scaleBitmap(width, height) { + const { + width: bitmapWidth, + height: bitmapHeight + } = this.#bitmap; + let newWidth = bitmapWidth; + let newHeight = bitmapHeight; + let bitmap = this.#bitmap; + while (newWidth > 2 * width || newHeight > 2 * height) { + const prevWidth = newWidth; + const prevHeight = newHeight; + if (newWidth > 2 * width) { + newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2); + } + if (newHeight > 2 * height) { + newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2); + } + const offscreen = new OffscreenCanvas(newWidth, newHeight); + const ctx = offscreen.getContext("2d"); + ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight); + bitmap = offscreen.transferToImageBitmap(); + } + return bitmap; + } + #drawBitmap(width, height) { + width = Math.ceil(width); + height = Math.ceil(height); + const canvas = this.#canvas; + if (!canvas || canvas.width === width && canvas.height === height) { + return; + } + canvas.width = width; + canvas.height = height; + const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(width, height); + const ctx = canvas.getContext("2d"); + ctx.filter = this._uiManager.hcmFilter; + ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height); + } + getImageForAltText() { + return this.#canvas; + } + #serializeBitmap(toUrl) { + if (toUrl) { + if (this.#isSvg) { + const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId); + if (url) { + return url; + } + } + const canvas = document.createElement("canvas"); + ({ + width: canvas.width, + height: canvas.height + } = this.#bitmap); + const ctx = canvas.getContext("2d"); + ctx.drawImage(this.#bitmap, 0, 0); + return canvas.toDataURL(); + } + if (this.#isSvg) { + const [pageWidth, pageHeight] = this.pageDimensions; + const width = Math.round(this.width * pageWidth * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + const height = Math.round(this.height * pageHeight * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + const offscreen = new OffscreenCanvas(width, height); + const ctx = offscreen.getContext("2d"); + ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height); + return offscreen.transferToImageBitmap(); + } + return structuredClone(this.#bitmap); + } + #createObserver() { + this.#observer = new ResizeObserver(entries => { + const rect = entries[0].contentRect; + if (rect.width && rect.height) { + this.#setDimensions(rect.width, rect.height); + } + }); + this.#observer.observe(this.div); + } + static deserialize(data, parent, uiManager) { + if (data instanceof annotation_layer.StampAnnotationElement) { + return null; + } + const editor = super.deserialize(data, parent, uiManager); + const { + rect, + bitmapUrl, + bitmapId, + isSvg, + accessibilityData + } = data; + if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) { + editor.#bitmapId = bitmapId; + } else { + editor.#bitmapUrl = bitmapUrl; + } + editor.#isSvg = isSvg; + const [parentWidth, parentHeight] = editor.pageDimensions; + editor.width = (rect[2] - rect[0]) / parentWidth; + editor.height = (rect[3] - rect[1]) / parentHeight; + if (accessibilityData) { + editor.altTextData = accessibilityData; + } + return editor; + } + serialize(isForCopying = false, context = null) { + if (this.isEmpty()) { + return null; + } + const serialized = { + annotationType: util.AnnotationEditorType.STAMP, + bitmapId: this.#bitmapId, + pageIndex: this.pageIndex, + rect: this.getRect(0, 0), + rotation: this.rotation, + isSvg: this.#isSvg, + structTreeParentId: this._structTreeParentId + }; + if (isForCopying) { + serialized.bitmapUrl = this.#serializeBitmap(true); + serialized.accessibilityData = this.altTextData; + return serialized; + } + const { + decorative, + altText + } = this.altTextData; + if (!decorative && altText) { + serialized.accessibilityData = { + type: "Figure", + alt: altText + }; + } + if (context === null) { + return serialized; + } + context.stamps ||= new Map(); + const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null; + if (!context.stamps.has(this.#bitmapId)) { + context.stamps.set(this.#bitmapId, { + area, + serialized + }); + serialized.bitmap = this.#serializeBitmap(false); + } else if (this.#isSvg) { + const prevData = context.stamps.get(this.#bitmapId); + if (area > prevData.area) { + prevData.area = area; + prevData.serialized.bitmap.close(); + prevData.serialized.bitmap = this.#serializeBitmap(false); + } + } + return serialized; + } +} + +;// CONCATENATED MODULE: ./src/display/editor/annotation_editor_layer.js + + + + + + +class AnnotationEditorLayer { + #accessibilityManager; + #allowClick = false; + #annotationLayer = null; + #boundPointerup = this.pointerup.bind(this); + #boundPointerdown = this.pointerdown.bind(this); + #editorFocusTimeoutId = null; + #editors = new Map(); + #hadPointerDown = false; + #isCleaningUp = false; + #isDisabling = false; + #uiManager; + static _initialized = false; + static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor].map(type => [type._editorType, type])); + constructor({ + uiManager, + pageIndex, + div, + accessibilityManager, + annotationLayer, + viewport, + l10n + }) { + const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()]; + if (!AnnotationEditorLayer._initialized) { + AnnotationEditorLayer._initialized = true; + for (const editorType of editorTypes) { + editorType.initialize(l10n); + } + } + uiManager.registerEditorTypes(editorTypes); + this.#uiManager = uiManager; + this.pageIndex = pageIndex; + this.div = div; + this.#accessibilityManager = accessibilityManager; + this.#annotationLayer = annotationLayer; + this.viewport = viewport; + this.#uiManager.addLayer(this); + } + get isEmpty() { + return this.#editors.size === 0; + } + updateToolbar(mode) { + this.#uiManager.updateToolbar(mode); + } + updateMode(mode = this.#uiManager.getMode()) { + this.#cleanup(); + if (mode === util.AnnotationEditorType.INK) { + this.addInkEditorIfNeeded(false); + this.disableClick(); + } else { + this.enableClick(); + } + if (mode !== util.AnnotationEditorType.NONE) { + const { + classList + } = this.div; + for (const editorType of AnnotationEditorLayer.#editorTypes.values()) { + classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType); + } + this.div.hidden = false; + } + } + addInkEditorIfNeeded(isCommitting) { + if (!isCommitting && this.#uiManager.getMode() !== util.AnnotationEditorType.INK) { + return; + } + if (!isCommitting) { + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.setInBackground(); + return; + } + } + } + const editor = this.#createAndAddNewEditor({ + offsetX: 0, + offsetY: 0 + }, false); + editor.setInBackground(); + } + setEditingState(isEditing) { + this.#uiManager.setEditingState(isEditing); + } + addCommands(params) { + this.#uiManager.addCommands(params); + } + togglePointerEvents(enabled = false) { + this.div.classList.toggle("disabled", !enabled); + } + enable() { + this.togglePointerEvents(true); + const annotationElementIds = new Set(); + for (const editor of this.#editors.values()) { + editor.enableEditing(); + if (editor.annotationElementId) { + annotationElementIds.add(editor.annotationElementId); + } + } + if (!this.#annotationLayer) { + return; + } + const editables = this.#annotationLayer.getEditableAnnotations(); + for (const editable of editables) { + editable.hide(); + if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) { + continue; + } + if (annotationElementIds.has(editable.data.id)) { + continue; + } + const editor = this.deserialize(editable); + if (!editor) { + continue; + } + this.addOrRebuild(editor); + editor.enableEditing(); + } + } + disable() { + this.#isDisabling = true; + this.togglePointerEvents(false); + const hiddenAnnotationIds = new Set(); + for (const editor of this.#editors.values()) { + editor.disableEditing(); + if (!editor.annotationElementId || editor.serialize() !== null) { + hiddenAnnotationIds.add(editor.annotationElementId); + continue; + } + this.getEditableAnnotation(editor.annotationElementId)?.show(); + editor.remove(); + } + if (this.#annotationLayer) { + const editables = this.#annotationLayer.getEditableAnnotations(); + for (const editable of editables) { + const { + id + } = editable.data; + if (hiddenAnnotationIds.has(id) || this.#uiManager.isDeletedAnnotationElement(id)) { + continue; + } + editable.show(); + } + } + this.#cleanup(); + if (this.isEmpty) { + this.div.hidden = true; + } + const { + classList + } = this.div; + for (const editorType of AnnotationEditorLayer.#editorTypes.values()) { + classList.remove(`${editorType._type}Editing`); + } + this.#isDisabling = false; + } + getEditableAnnotation(id) { + return this.#annotationLayer?.getEditableAnnotation(id) || null; + } + setActiveEditor(editor) { + const currentActive = this.#uiManager.getActive(); + if (currentActive === editor) { + return; + } + this.#uiManager.setActiveEditor(editor); + } + enableClick() { + this.div.addEventListener("pointerdown", this.#boundPointerdown); + this.div.addEventListener("pointerup", this.#boundPointerup); + } + disableClick() { + this.div.removeEventListener("pointerdown", this.#boundPointerdown); + this.div.removeEventListener("pointerup", this.#boundPointerup); + } + attach(editor) { + this.#editors.set(editor.id, editor); + const { + annotationElementId + } = editor; + if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) { + this.#uiManager.removeDeletedAnnotationElement(editor); + } + } + detach(editor) { + this.#editors.delete(editor.id); + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + if (!this.#isDisabling && editor.annotationElementId) { + this.#uiManager.addDeletedAnnotationElement(editor); + } + } + remove(editor) { + this.detach(editor); + this.#uiManager.removeEditor(editor); + editor.div.remove(); + editor.isAttachedToDOM = false; + if (!this.#isCleaningUp) { + this.addInkEditorIfNeeded(false); + } + } + changeParent(editor) { + if (editor.parent === this) { + return; + } + if (editor.annotationElementId) { + this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId); + editor_editor.AnnotationEditor.deleteAnnotationElement(editor); + editor.annotationElementId = null; + } + this.attach(editor); + editor.parent?.detach(editor); + editor.setParent(this); + if (editor.div && editor.isAttachedToDOM) { + editor.div.remove(); + this.div.append(editor.div); + } + } + add(editor) { + this.changeParent(editor); + this.#uiManager.addEditor(editor); + this.attach(editor); + if (!editor.isAttachedToDOM) { + const div = editor.render(); + this.div.append(div); + editor.isAttachedToDOM = true; + } + editor.fixAndSetPosition(); + editor.onceAdded(); + this.#uiManager.addToAnnotationStorage(editor); + } + moveEditorInDOM(editor) { + if (!editor.isAttachedToDOM) { + return; + } + const { + activeElement + } = document; + if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) { + editor._focusEventsAllowed = false; + this.#editorFocusTimeoutId = setTimeout(() => { + this.#editorFocusTimeoutId = null; + if (!editor.div.contains(document.activeElement)) { + editor.div.addEventListener("focusin", () => { + editor._focusEventsAllowed = true; + }, { + once: true + }); + activeElement.focus(); + } else { + editor._focusEventsAllowed = true; + } + }, 0); + } + editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true); + } + addOrRebuild(editor) { + if (editor.needsToBeRebuilt()) { + editor.parent ||= this; + editor.rebuild(); + } else { + this.add(editor); + } + } + addUndoableEditor(editor) { + const cmd = () => editor._uiManager.rebuild(editor); + const undo = () => { + editor.remove(); + }; + this.addCommands({ + cmd, + undo, + mustExec: false + }); + } + getNextId() { + return this.#uiManager.getId(); + } + #createNewEditor(params) { + const editorType = AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode()); + return editorType ? new editorType.prototype.constructor(params) : null; + } + pasteEditor(mode, params) { + this.#uiManager.updateToolbar(mode); + this.#uiManager.updateMode(mode); + const { + offsetX, + offsetY + } = this.#getCenterPoint(); + const id = this.getNextId(); + const editor = this.#createNewEditor({ + parent: this, + id, + x: offsetX, + y: offsetY, + uiManager: this.#uiManager, + isCentered: true, + ...params + }); + if (editor) { + this.add(editor); + } + } + deserialize(data) { + return AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager) || null; + } + #createAndAddNewEditor(event, isCentered) { + const id = this.getNextId(); + const editor = this.#createNewEditor({ + parent: this, + id, + x: event.offsetX, + y: event.offsetY, + uiManager: this.#uiManager, + isCentered + }); + if (editor) { + this.add(editor); + } + return editor; + } + #getCenterPoint() { + const { + x, + y, + width, + height + } = this.div.getBoundingClientRect(); + const tlX = Math.max(0, x); + const tlY = Math.max(0, y); + const brX = Math.min(window.innerWidth, x + width); + const brY = Math.min(window.innerHeight, y + height); + const centerX = (tlX + brX) / 2 - x; + const centerY = (tlY + brY) / 2 - y; + const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX]; + return { + offsetX, + offsetY + }; + } + addNewEditor() { + this.#createAndAddNewEditor(this.#getCenterPoint(), true); + } + setSelected(editor) { + this.#uiManager.setSelected(editor); + } + toggleSelected(editor) { + this.#uiManager.toggleSelected(editor); + } + isSelected(editor) { + return this.#uiManager.isSelected(editor); + } + unselect(editor) { + this.#uiManager.unselect(editor); + } + pointerup(event) { + const { + isMac + } = util.FeatureTest.platform; + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + if (event.target !== this.div) { + return; + } + if (!this.#hadPointerDown) { + return; + } + this.#hadPointerDown = false; + if (!this.#allowClick) { + this.#allowClick = true; + return; + } + if (this.#uiManager.getMode() === util.AnnotationEditorType.STAMP) { + this.#uiManager.unselectAll(); + return; + } + this.#createAndAddNewEditor(event, false); + } + pointerdown(event) { + if (this.#hadPointerDown) { + this.#hadPointerDown = false; + return; + } + const { + isMac + } = util.FeatureTest.platform; + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + if (event.target !== this.div) { + return; + } + this.#hadPointerDown = true; + const editor = this.#uiManager.getActive(); + this.#allowClick = !editor || editor.isEmpty(); + } + findNewParent(editor, x, y) { + const layer = this.#uiManager.findParent(x, y); + if (layer === null || layer === this) { + return false; + } + layer.changeParent(editor); + return true; + } + destroy() { + if (this.#uiManager.getActive()?.parent === this) { + this.#uiManager.commitOrRemove(); + this.#uiManager.setActiveEditor(null); + } + if (this.#editorFocusTimeoutId) { + clearTimeout(this.#editorFocusTimeoutId); + this.#editorFocusTimeoutId = null; + } + for (const editor of this.#editors.values()) { + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + editor.setParent(null); + editor.isAttachedToDOM = false; + editor.div.remove(); + } + this.div = null; + this.#editors.clear(); + this.#uiManager.removeLayer(this); + } + #cleanup() { + this.#isCleaningUp = true; + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.remove(); + } + } + this.#isCleaningUp = false; + } + render({ + viewport + }) { + this.viewport = viewport; + (0,display_utils.setLayerDimensions)(this.div, viewport); + for (const editor of this.#uiManager.getEditors(this.pageIndex)) { + this.add(editor); + } + this.updateMode(); + } + update({ + viewport + }) { + this.#uiManager.commitOrRemove(); + this.viewport = viewport; + (0,display_utils.setLayerDimensions)(this.div, { + rotation: viewport.rotation + }); + this.updateMode(); + } + get pageDimensions() { + const { + pageWidth, + pageHeight + } = this.viewport.rawDims; + return [pageWidth, pageHeight]; + } +} + + +/***/ }), + +/***/ 682: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ AnnotationEditor: () => (/* binding */ AnnotationEditor) +/* harmony export */ }); +/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(812); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(266); +/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(473); + + + +class AnnotationEditor { + #allResizerDivs = null; + #altText = ""; + #altTextDecorative = false; + #altTextButton = null; + #altTextTooltip = null; + #altTextTooltipTimeout = null; + #altTextWasFromKeyBoard = false; + #keepAspectRatio = false; + #resizersDiv = null; + #savedDimensions = null; + #boundFocusin = this.focusin.bind(this); + #boundFocusout = this.focusout.bind(this); + #focusedResizerName = ""; + #hasBeenClicked = false; + #isEditing = false; + #isInEditMode = false; + #isResizerEnabledForKeyboard = false; + #moveInDOMTimeout = null; + _initialOptions = Object.create(null); + _uiManager = null; + _focusEventsAllowed = true; + _l10nPromise = null; + #isDraggable = false; + #zIndex = AnnotationEditor._zIndex++; + static _borderLineWidth = -1; + static _colorManager = new _tools_js__WEBPACK_IMPORTED_MODULE_0__.ColorManager(); + static _zIndex = 1; + static SMALL_EDITOR_SIZE = 0; + static get _resizerKeyboardManager() { + const resize = AnnotationEditor.prototype._resizeWithKeyboard; + const small = _tools_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorUIManager.TRANSLATE_SMALL; + const big = _tools_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorUIManager.TRANSLATE_BIG; + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.shadow)(this, "_resizerKeyboardManager", new _tools_js__WEBPACK_IMPORTED_MODULE_0__.KeyboardManager([[["ArrowLeft", "mac+ArrowLeft"], resize, { + args: [-small, 0] + }], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], resize, { + args: [-big, 0] + }], [["ArrowRight", "mac+ArrowRight"], resize, { + args: [small, 0] + }], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], resize, { + args: [big, 0] + }], [["ArrowUp", "mac+ArrowUp"], resize, { + args: [0, -small] + }], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], resize, { + args: [0, -big] + }], [["ArrowDown", "mac+ArrowDown"], resize, { + args: [0, small] + }], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], resize, { + args: [0, big] + }], [["Escape", "mac+Escape"], AnnotationEditor.prototype._stopResizingWithKeyboard]])); + } + constructor(parameters) { + if (this.constructor === AnnotationEditor) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.unreachable)("Cannot initialize AnnotationEditor."); + } + this.parent = parameters.parent; + this.id = parameters.id; + this.width = this.height = null; + this.pageIndex = parameters.parent.pageIndex; + this.name = parameters.name; + this.div = null; + this._uiManager = parameters.uiManager; + this.annotationElementId = null; + this._willKeepAspectRatio = false; + this._initialOptions.isCentered = parameters.isCentered; + this._structTreeParentId = null; + const { + rotation, + rawDims: { + pageWidth, + pageHeight, + pageX, + pageY + } + } = this.parent.viewport; + this.rotation = rotation; + this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360; + this.pageDimensions = [pageWidth, pageHeight]; + this.pageTranslation = [pageX, pageY]; + const [width, height] = this.parentDimensions; + this.x = parameters.x / width; + this.y = parameters.y / height; + this.isAttachedToDOM = false; + this.deleted = false; + } + get editorType() { + return Object.getPrototypeOf(this).constructor._type; + } + static get _defaultLineColor() { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText")); + } + static deleteAnnotationElement(editor) { + const fakeEditor = new FakeEditor({ + id: editor.parent.getNextId(), + parent: editor.parent, + uiManager: editor._uiManager + }); + fakeEditor.annotationElementId = editor.annotationElementId; + fakeEditor.deleted = true; + fakeEditor._uiManager.addToAnnotationStorage(fakeEditor); + } + static initialize(l10n, options = null) { + AnnotationEditor._l10nPromise ||= new Map(["pdfjs-editor-alt-text-button-label", "pdfjs-editor-alt-text-edit-button-label", "pdfjs-editor-alt-text-decorative-tooltip", "pdfjs-editor-resizer-label-topLeft", "pdfjs-editor-resizer-label-topMiddle", "pdfjs-editor-resizer-label-topRight", "pdfjs-editor-resizer-label-middleRight", "pdfjs-editor-resizer-label-bottomRight", "pdfjs-editor-resizer-label-bottomMiddle", "pdfjs-editor-resizer-label-bottomLeft", "pdfjs-editor-resizer-label-middleLeft"].map(str => [str, l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`))])); + if (options?.strings) { + for (const str of options.strings) { + AnnotationEditor._l10nPromise.set(str, l10n.get(str)); + } + } + if (AnnotationEditor._borderLineWidth !== -1) { + return; + } + const style = getComputedStyle(document.documentElement); + AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue("--outline-width")) || 0; + } + static updateDefaultParams(_type, _value) {} + static get defaultPropertiesToUpdate() { + return []; + } + static isHandlingMimeForPasting(mime) { + return false; + } + static paste(item, parent) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.unreachable)("Not implemented"); + } + get propertiesToUpdate() { + return []; + } + get _isDraggable() { + return this.#isDraggable; + } + set _isDraggable(value) { + this.#isDraggable = value; + this.div?.classList.toggle("draggable", value); + } + get isEnterHandled() { + return true; + } + center() { + const [pageWidth, pageHeight] = this.pageDimensions; + switch (this.parentRotation) { + case 90: + this.x -= this.height * pageHeight / (pageWidth * 2); + this.y += this.width * pageWidth / (pageHeight * 2); + break; + case 180: + this.x += this.width / 2; + this.y += this.height / 2; + break; + case 270: + this.x += this.height * pageHeight / (pageWidth * 2); + this.y -= this.width * pageWidth / (pageHeight * 2); + break; + default: + this.x -= this.width / 2; + this.y -= this.height / 2; + break; + } + this.fixAndSetPosition(); + } + addCommands(params) { + this._uiManager.addCommands(params); + } + get currentLayer() { + return this._uiManager.currentLayer; + } + setInBackground() { + this.div.style.zIndex = 0; + } + setInForeground() { + this.div.style.zIndex = this.#zIndex; + } + setParent(parent) { + if (parent !== null) { + this.pageIndex = parent.pageIndex; + this.pageDimensions = parent.pageDimensions; + } else { + this.#stopResizing(); + } + this.parent = parent; + } + focusin(event) { + if (!this._focusEventsAllowed) { + return; + } + if (!this.#hasBeenClicked) { + this.parent.setSelected(this); + } else { + this.#hasBeenClicked = false; + } + } + focusout(event) { + if (!this._focusEventsAllowed) { + return; + } + if (!this.isAttachedToDOM) { + return; + } + const target = event.relatedTarget; + if (target?.closest(`#${this.id}`)) { + return; + } + event.preventDefault(); + if (!this.parent?.isMultipleSelection) { + this.commitOrRemove(); + } + } + commitOrRemove() { + if (this.isEmpty()) { + this.remove(); + } else { + this.commit(); + } + } + commit() { + this.addToAnnotationStorage(); + } + addToAnnotationStorage() { + this._uiManager.addToAnnotationStorage(this); + } + setAt(x, y, tx, ty) { + const [width, height] = this.parentDimensions; + [tx, ty] = this.screenToPageTranslation(tx, ty); + this.x = (x + tx) / width; + this.y = (y + ty) / height; + this.fixAndSetPosition(); + } + #translate([width, height], x, y) { + [x, y] = this.screenToPageTranslation(x, y); + this.x += x / width; + this.y += y / height; + this.fixAndSetPosition(); + } + translate(x, y) { + this.#translate(this.parentDimensions, x, y); + } + translateInPage(x, y) { + this.#translate(this.pageDimensions, x, y); + this.div.scrollIntoView({ + block: "nearest" + }); + } + drag(tx, ty) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.x += tx / parentWidth; + this.y += ty / parentHeight; + if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) { + const { + x, + y + } = this.div.getBoundingClientRect(); + if (this.parent.findNewParent(this, x, y)) { + this.x -= Math.floor(this.x); + this.y -= Math.floor(this.y); + } + } + let { + x, + y + } = this; + const [bx, by] = this.#getBaseTranslation(); + x += bx; + y += by; + this.div.style.left = `${(100 * x).toFixed(2)}%`; + this.div.style.top = `${(100 * y).toFixed(2)}%`; + this.div.scrollIntoView({ + block: "nearest" + }); + } + #getBaseTranslation() { + const [parentWidth, parentHeight] = this.parentDimensions; + const { + _borderLineWidth + } = AnnotationEditor; + const x = _borderLineWidth / parentWidth; + const y = _borderLineWidth / parentHeight; + switch (this.rotation) { + case 90: + return [-x, y]; + case 180: + return [x, y]; + case 270: + return [x, -y]; + default: + return [-x, -y]; + } + } + fixAndSetPosition() { + const [pageWidth, pageHeight] = this.pageDimensions; + let { + x, + y, + width, + height + } = this; + width *= pageWidth; + height *= pageHeight; + x *= pageWidth; + y *= pageHeight; + switch (this.rotation) { + case 0: + x = Math.max(0, Math.min(pageWidth - width, x)); + y = Math.max(0, Math.min(pageHeight - height, y)); + break; + case 90: + x = Math.max(0, Math.min(pageWidth - height, x)); + y = Math.min(pageHeight, Math.max(width, y)); + break; + case 180: + x = Math.min(pageWidth, Math.max(width, x)); + y = Math.min(pageHeight, Math.max(height, y)); + break; + case 270: + x = Math.min(pageWidth, Math.max(height, x)); + y = Math.max(0, Math.min(pageHeight - width, y)); + break; + } + this.x = x /= pageWidth; + this.y = y /= pageHeight; + const [bx, by] = this.#getBaseTranslation(); + x += bx; + y += by; + const { + style + } = this.div; + style.left = `${(100 * x).toFixed(2)}%`; + style.top = `${(100 * y).toFixed(2)}%`; + this.moveInDOM(); + } + static #rotatePoint(x, y, angle) { + switch (angle) { + case 90: + return [y, -x]; + case 180: + return [-x, -y]; + case 270: + return [-y, x]; + default: + return [x, y]; + } + } + screenToPageTranslation(x, y) { + return AnnotationEditor.#rotatePoint(x, y, this.parentRotation); + } + pageTranslationToScreen(x, y) { + return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation); + } + #getRotationMatrix(rotation) { + switch (rotation) { + case 90: + { + const [pageWidth, pageHeight] = this.pageDimensions; + return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0]; + } + case 180: + return [-1, 0, 0, -1]; + case 270: + { + const [pageWidth, pageHeight] = this.pageDimensions; + return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0]; + } + default: + return [1, 0, 0, 1]; + } + } + get parentScale() { + return this._uiManager.viewParameters.realScale; + } + get parentRotation() { + return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360; + } + get parentDimensions() { + const { + parentScale, + pageDimensions: [pageWidth, pageHeight] + } = this; + const scaledWidth = pageWidth * parentScale; + const scaledHeight = pageHeight * parentScale; + return _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.FeatureTest.isCSSRoundSupported ? [Math.round(scaledWidth), Math.round(scaledHeight)] : [scaledWidth, scaledHeight]; + } + setDims(width, height) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`; + if (!this.#keepAspectRatio) { + this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`; + } + this.#altTextButton?.classList.toggle("small", width < AnnotationEditor.SMALL_EDITOR_SIZE || height < AnnotationEditor.SMALL_EDITOR_SIZE); + } + fixDims() { + const { + style + } = this.div; + const { + height, + width + } = style; + const widthPercent = width.endsWith("%"); + const heightPercent = !this.#keepAspectRatio && height.endsWith("%"); + if (widthPercent && heightPercent) { + return; + } + const [parentWidth, parentHeight] = this.parentDimensions; + if (!widthPercent) { + style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`; + } + if (!this.#keepAspectRatio && !heightPercent) { + style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`; + } + } + getInitialTranslation() { + return [0, 0]; + } + #createResizers() { + if (this.#resizersDiv) { + return; + } + this.#resizersDiv = document.createElement("div"); + this.#resizersDiv.classList.add("resizers"); + const classes = this._willKeepAspectRatio ? ["topLeft", "topRight", "bottomRight", "bottomLeft"] : ["topLeft", "topMiddle", "topRight", "middleRight", "bottomRight", "bottomMiddle", "bottomLeft", "middleLeft"]; + for (const name of classes) { + const div = document.createElement("div"); + this.#resizersDiv.append(div); + div.classList.add("resizer", name); + div.setAttribute("data-resizer-name", name); + div.addEventListener("pointerdown", this.#resizerPointerdown.bind(this, name)); + div.addEventListener("contextmenu", _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.noContextMenu); + div.tabIndex = -1; + } + this.div.prepend(this.#resizersDiv); + } + #resizerPointerdown(name, event) { + event.preventDefault(); + const { + isMac + } = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.FeatureTest.platform; + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + this.#toggleAltTextButton(false); + const boundResizerPointermove = this.#resizerPointermove.bind(this, name); + const savedDraggable = this._isDraggable; + this._isDraggable = false; + const pointerMoveOptions = { + passive: true, + capture: true + }; + this.parent.togglePointerEvents(false); + window.addEventListener("pointermove", boundResizerPointermove, pointerMoveOptions); + const savedX = this.x; + const savedY = this.y; + const savedWidth = this.width; + const savedHeight = this.height; + const savedParentCursor = this.parent.div.style.cursor; + const savedCursor = this.div.style.cursor; + this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor; + const pointerUpCallback = () => { + this.parent.togglePointerEvents(true); + this.#toggleAltTextButton(true); + this._isDraggable = savedDraggable; + window.removeEventListener("pointerup", pointerUpCallback); + window.removeEventListener("blur", pointerUpCallback); + window.removeEventListener("pointermove", boundResizerPointermove, pointerMoveOptions); + this.parent.div.style.cursor = savedParentCursor; + this.div.style.cursor = savedCursor; + this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight); + }; + window.addEventListener("pointerup", pointerUpCallback); + window.addEventListener("blur", pointerUpCallback); + } + #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) { + const newX = this.x; + const newY = this.y; + const newWidth = this.width; + const newHeight = this.height; + if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) { + return; + } + this.addCommands({ + cmd: () => { + this.width = newWidth; + this.height = newHeight; + this.x = newX; + this.y = newY; + const [parentWidth, parentHeight] = this.parentDimensions; + this.setDims(parentWidth * newWidth, parentHeight * newHeight); + this.fixAndSetPosition(); + }, + undo: () => { + this.width = savedWidth; + this.height = savedHeight; + this.x = savedX; + this.y = savedY; + const [parentWidth, parentHeight] = this.parentDimensions; + this.setDims(parentWidth * savedWidth, parentHeight * savedHeight); + this.fixAndSetPosition(); + }, + mustExec: true + }); + } + #resizerPointermove(name, event) { + const [parentWidth, parentHeight] = this.parentDimensions; + const savedX = this.x; + const savedY = this.y; + const savedWidth = this.width; + const savedHeight = this.height; + const minWidth = AnnotationEditor.MIN_SIZE / parentWidth; + const minHeight = AnnotationEditor.MIN_SIZE / parentHeight; + const round = x => Math.round(x * 10000) / 10000; + const rotationMatrix = this.#getRotationMatrix(this.rotation); + const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y]; + const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation); + const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y]; + let getPoint; + let getOpposite; + let isDiagonal = false; + let isHorizontal = false; + switch (name) { + case "topLeft": + isDiagonal = true; + getPoint = (w, h) => [0, 0]; + getOpposite = (w, h) => [w, h]; + break; + case "topMiddle": + getPoint = (w, h) => [w / 2, 0]; + getOpposite = (w, h) => [w / 2, h]; + break; + case "topRight": + isDiagonal = true; + getPoint = (w, h) => [w, 0]; + getOpposite = (w, h) => [0, h]; + break; + case "middleRight": + isHorizontal = true; + getPoint = (w, h) => [w, h / 2]; + getOpposite = (w, h) => [0, h / 2]; + break; + case "bottomRight": + isDiagonal = true; + getPoint = (w, h) => [w, h]; + getOpposite = (w, h) => [0, 0]; + break; + case "bottomMiddle": + getPoint = (w, h) => [w / 2, h]; + getOpposite = (w, h) => [w / 2, 0]; + break; + case "bottomLeft": + isDiagonal = true; + getPoint = (w, h) => [0, h]; + getOpposite = (w, h) => [w, 0]; + break; + case "middleLeft": + isHorizontal = true; + getPoint = (w, h) => [0, h / 2]; + getOpposite = (w, h) => [w, h / 2]; + break; + } + const point = getPoint(savedWidth, savedHeight); + const oppositePoint = getOpposite(savedWidth, savedHeight); + let transfOppositePoint = transf(...oppositePoint); + const oppositeX = round(savedX + transfOppositePoint[0]); + const oppositeY = round(savedY + transfOppositePoint[1]); + let ratioX = 1; + let ratioY = 1; + let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY); + [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight); + if (isDiagonal) { + const oldDiag = Math.hypot(savedWidth, savedHeight); + ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight); + } else if (isHorizontal) { + ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth; + } else { + ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight; + } + const newWidth = round(savedWidth * ratioX); + const newHeight = round(savedHeight * ratioY); + transfOppositePoint = transf(...getOpposite(newWidth, newHeight)); + const newX = oppositeX - transfOppositePoint[0]; + const newY = oppositeY - transfOppositePoint[1]; + this.width = newWidth; + this.height = newHeight; + this.x = newX; + this.y = newY; + this.setDims(parentWidth * newWidth, parentHeight * newHeight); + this.fixAndSetPosition(); + } + async addAltTextButton() { + if (this.#altTextButton) { + return; + } + const altText = this.#altTextButton = document.createElement("button"); + altText.className = "altText"; + const msg = await AnnotationEditor._l10nPromise.get("pdfjs-editor-alt-text-button-label"); + altText.textContent = msg; + altText.setAttribute("aria-label", msg); + altText.tabIndex = "0"; + altText.addEventListener("contextmenu", _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.noContextMenu); + altText.addEventListener("pointerdown", event => event.stopPropagation()); + const onClick = event => { + this.#altTextButton.hidden = true; + event.preventDefault(); + this._uiManager.editAltText(this); + }; + altText.addEventListener("click", onClick, { + capture: true + }); + altText.addEventListener("keydown", event => { + if (event.target === altText && event.key === "Enter") { + this.#altTextWasFromKeyBoard = true; + onClick(event); + } + }); + this.#setAltTextButtonState(); + this.div.append(altText); + if (!AnnotationEditor.SMALL_EDITOR_SIZE) { + const PERCENT = 40; + AnnotationEditor.SMALL_EDITOR_SIZE = Math.min(128, Math.round(altText.getBoundingClientRect().width * (1 + PERCENT / 100))); + } + } + async #setAltTextButtonState() { + const button = this.#altTextButton; + if (!button) { + return; + } + if (!this.#altText && !this.#altTextDecorative) { + button.classList.remove("done"); + this.#altTextTooltip?.remove(); + return; + } + button.classList.add("done"); + AnnotationEditor._l10nPromise.get("pdfjs-editor-alt-text-edit-button-label").then(msg => { + button.setAttribute("aria-label", msg); + }); + let tooltip = this.#altTextTooltip; + if (!tooltip) { + this.#altTextTooltip = tooltip = document.createElement("span"); + tooltip.className = "tooltip"; + tooltip.setAttribute("role", "tooltip"); + const id = tooltip.id = `alt-text-tooltip-${this.id}`; + button.setAttribute("aria-describedby", id); + const DELAY_TO_SHOW_TOOLTIP = 100; + button.addEventListener("mouseenter", () => { + this.#altTextTooltipTimeout = setTimeout(() => { + this.#altTextTooltipTimeout = null; + this.#altTextTooltip.classList.add("show"); + this._uiManager._eventBus.dispatch("reporttelemetry", { + source: this, + details: { + type: "editing", + subtype: this.editorType, + data: { + action: "alt_text_tooltip" + } + } + }); + }, DELAY_TO_SHOW_TOOLTIP); + }); + button.addEventListener("mouseleave", () => { + if (this.#altTextTooltipTimeout) { + clearTimeout(this.#altTextTooltipTimeout); + this.#altTextTooltipTimeout = null; + } + this.#altTextTooltip?.classList.remove("show"); + }); + } + tooltip.innerText = this.#altTextDecorative ? await AnnotationEditor._l10nPromise.get("pdfjs-editor-alt-text-decorative-tooltip") : this.#altText; + if (!tooltip.parentNode) { + button.append(tooltip); + } + const element = this.getImageForAltText(); + element?.setAttribute("aria-describedby", tooltip.id); + } + #toggleAltTextButton(enabled = false) { + if (!this.#altTextButton) { + return; + } + if (!enabled && this.#altTextTooltipTimeout) { + clearTimeout(this.#altTextTooltipTimeout); + this.#altTextTooltipTimeout = null; + } + this.#altTextButton.disabled = !enabled; + } + altTextFinish() { + if (!this.#altTextButton) { + return; + } + this.#altTextButton.hidden = false; + this.#altTextButton.focus({ + focusVisible: this.#altTextWasFromKeyBoard + }); + this.#altTextWasFromKeyBoard = false; + } + getClientDimensions() { + return this.div.getBoundingClientRect(); + } + get altTextData() { + return { + altText: this.#altText, + decorative: this.#altTextDecorative + }; + } + set altTextData({ + altText, + decorative + }) { + if (this.#altText === altText && this.#altTextDecorative === decorative) { + return; + } + this.#altText = altText; + this.#altTextDecorative = decorative; + this.#setAltTextButtonState(); + } + render() { + this.div = document.createElement("div"); + this.div.setAttribute("data-editor-rotation", (360 - this.rotation) % 360); + this.div.className = this.name; + this.div.setAttribute("id", this.id); + this.div.setAttribute("tabIndex", 0); + this.setInForeground(); + this.div.addEventListener("focusin", this.#boundFocusin); + this.div.addEventListener("focusout", this.#boundFocusout); + const [parentWidth, parentHeight] = this.parentDimensions; + if (this.parentRotation % 180 !== 0) { + this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`; + this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`; + } + const [tx, ty] = this.getInitialTranslation(); + this.translate(tx, ty); + (0,_tools_js__WEBPACK_IMPORTED_MODULE_0__.bindEvents)(this, this.div, ["pointerdown"]); + return this.div; + } + pointerdown(event) { + const { + isMac + } = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.FeatureTest.platform; + if (event.button !== 0 || event.ctrlKey && isMac) { + event.preventDefault(); + return; + } + this.#hasBeenClicked = true; + this.#setUpDragSession(event); + } + #setUpDragSession(event) { + if (!this._isDraggable) { + return; + } + const isSelected = this._uiManager.isSelected(this); + this._uiManager.setUpDragSession(); + let pointerMoveOptions, pointerMoveCallback; + if (isSelected) { + pointerMoveOptions = { + passive: true, + capture: true + }; + pointerMoveCallback = e => { + const [tx, ty] = this.screenToPageTranslation(e.movementX, e.movementY); + this._uiManager.dragSelectedEditors(tx, ty); + }; + window.addEventListener("pointermove", pointerMoveCallback, pointerMoveOptions); + } + const pointerUpCallback = () => { + window.removeEventListener("pointerup", pointerUpCallback); + window.removeEventListener("blur", pointerUpCallback); + if (isSelected) { + window.removeEventListener("pointermove", pointerMoveCallback, pointerMoveOptions); + } + this.#hasBeenClicked = false; + if (!this._uiManager.endDragSession()) { + const { + isMac + } = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.FeatureTest.platform; + if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) { + this.parent.toggleSelected(this); + } else { + this.parent.setSelected(this); + } + } + }; + window.addEventListener("pointerup", pointerUpCallback); + window.addEventListener("blur", pointerUpCallback); + } + moveInDOM() { + if (this.#moveInDOMTimeout) { + clearTimeout(this.#moveInDOMTimeout); + } + this.#moveInDOMTimeout = setTimeout(() => { + this.#moveInDOMTimeout = null; + this.parent?.moveEditorInDOM(this); + }, 0); + } + _setParentAndPosition(parent, x, y) { + parent.changeParent(this); + this.x = x; + this.y = y; + this.fixAndSetPosition(); + } + getRect(tx, ty) { + const scale = this.parentScale; + const [pageWidth, pageHeight] = this.pageDimensions; + const [pageX, pageY] = this.pageTranslation; + const shiftX = tx / scale; + const shiftY = ty / scale; + const x = this.x * pageWidth; + const y = this.y * pageHeight; + const width = this.width * pageWidth; + const height = this.height * pageHeight; + switch (this.rotation) { + case 0: + return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY]; + case 90: + return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY]; + case 180: + return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY]; + case 270: + return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY]; + default: + throw new Error("Invalid rotation"); + } + } + getRectInCurrentCoords(rect, pageHeight) { + const [x1, y1, x2, y2] = rect; + const width = x2 - x1; + const height = y2 - y1; + switch (this.rotation) { + case 0: + return [x1, pageHeight - y2, width, height]; + case 90: + return [x1, pageHeight - y1, height, width]; + case 180: + return [x2, pageHeight - y1, width, height]; + case 270: + return [x2, pageHeight - y2, height, width]; + default: + throw new Error("Invalid rotation"); + } + } + onceAdded() {} + isEmpty() { + return false; + } + enableEditMode() { + this.#isInEditMode = true; + } + disableEditMode() { + this.#isInEditMode = false; + } + isInEditMode() { + return this.#isInEditMode; + } + shouldGetKeyboardEvents() { + return this.#isResizerEnabledForKeyboard; + } + needsToBeRebuilt() { + return this.div && !this.isAttachedToDOM; + } + rebuild() { + this.div?.addEventListener("focusin", this.#boundFocusin); + this.div?.addEventListener("focusout", this.#boundFocusout); + } + serialize(isForCopying = false, context = null) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.unreachable)("An editor must be serializable"); + } + static deserialize(data, parent, uiManager) { + const editor = new this.prototype.constructor({ + parent, + id: parent.getNextId(), + uiManager + }); + editor.rotation = data.rotation; + const [pageWidth, pageHeight] = editor.pageDimensions; + const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight); + editor.x = x / pageWidth; + editor.y = y / pageHeight; + editor.width = width / pageWidth; + editor.height = height / pageHeight; + return editor; + } + remove() { + this.div.removeEventListener("focusin", this.#boundFocusin); + this.div.removeEventListener("focusout", this.#boundFocusout); + if (!this.isEmpty()) { + this.commit(); + } + if (this.parent) { + this.parent.remove(this); + } else { + this._uiManager.removeEditor(this); + } + this.#altTextButton?.remove(); + this.#altTextButton = null; + this.#altTextTooltip = null; + if (this.#moveInDOMTimeout) { + clearTimeout(this.#moveInDOMTimeout); + this.#moveInDOMTimeout = null; + } + this.#stopResizing(); + } + get isResizable() { + return false; + } + makeResizable() { + if (this.isResizable) { + this.#createResizers(); + this.#resizersDiv.classList.remove("hidden"); + (0,_tools_js__WEBPACK_IMPORTED_MODULE_0__.bindEvents)(this, this.div, ["keydown"]); + } + } + keydown(event) { + if (!this.isResizable || event.target !== this.div || event.key !== "Enter") { + return; + } + this._uiManager.setSelected(this); + this.#savedDimensions = { + savedX: this.x, + savedY: this.y, + savedWidth: this.width, + savedHeight: this.height + }; + const children = this.#resizersDiv.children; + if (!this.#allResizerDivs) { + this.#allResizerDivs = Array.from(children); + const boundResizerKeydown = this.#resizerKeydown.bind(this); + const boundResizerBlur = this.#resizerBlur.bind(this); + for (const div of this.#allResizerDivs) { + const name = div.getAttribute("data-resizer-name"); + div.setAttribute("role", "spinbutton"); + div.addEventListener("keydown", boundResizerKeydown); + div.addEventListener("blur", boundResizerBlur); + div.addEventListener("focus", this.#resizerFocus.bind(this, name)); + AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => div.setAttribute("aria-label", msg)); + } + } + const first = this.#allResizerDivs[0]; + let firstPosition = 0; + for (const div of children) { + if (div === first) { + break; + } + firstPosition++; + } + const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4); + if (nextFirstPosition !== firstPosition) { + if (nextFirstPosition < firstPosition) { + for (let i = 0; i < firstPosition - nextFirstPosition; i++) { + this.#resizersDiv.append(this.#resizersDiv.firstChild); + } + } else if (nextFirstPosition > firstPosition) { + for (let i = 0; i < nextFirstPosition - firstPosition; i++) { + this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild); + } + } + let i = 0; + for (const child of children) { + const div = this.#allResizerDivs[i++]; + const name = div.getAttribute("data-resizer-name"); + AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => child.setAttribute("aria-label", msg)); + } + } + this.#setResizerTabIndex(0); + this.#isResizerEnabledForKeyboard = true; + this.#resizersDiv.firstChild.focus({ + focusVisible: true + }); + event.preventDefault(); + event.stopImmediatePropagation(); + } + #resizerKeydown(event) { + AnnotationEditor._resizerKeyboardManager.exec(this, event); + } + #resizerBlur(event) { + if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) { + this.#stopResizing(); + } + } + #resizerFocus(name) { + this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : ""; + } + #setResizerTabIndex(value) { + if (!this.#allResizerDivs) { + return; + } + for (const div of this.#allResizerDivs) { + div.tabIndex = value; + } + } + _resizeWithKeyboard(x, y) { + if (!this.#isResizerEnabledForKeyboard) { + return; + } + this.#resizerPointermove(this.#focusedResizerName, { + movementX: x, + movementY: y + }); + } + #stopResizing() { + this.#isResizerEnabledForKeyboard = false; + this.#setResizerTabIndex(-1); + if (this.#savedDimensions) { + const { + savedX, + savedY, + savedWidth, + savedHeight + } = this.#savedDimensions; + this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight); + this.#savedDimensions = null; + } + } + _stopResizingWithKeyboard() { + this.#stopResizing(); + this.div.focus(); + } + select() { + this.makeResizable(); + this.div?.classList.add("selectedEditor"); + } + unselect() { + this.#resizersDiv?.classList.add("hidden"); + this.div?.classList.remove("selectedEditor"); + if (this.div?.contains(document.activeElement)) { + this._uiManager.currentLayer.div.focus(); + } + } + updateParams(type, value) {} + disableEditing() { + if (this.#altTextButton) { + this.#altTextButton.hidden = true; + } + } + enableEditing() { + if (this.#altTextButton) { + this.#altTextButton.hidden = false; + } + } + enterInEditMode() {} + getImageForAltText() { + return null; + } + get contentDiv() { + return this.div; + } + get isEditing() { + return this.#isEditing; + } + set isEditing(value) { + this.#isEditing = value; + if (!this.parent) { + return; + } + if (value) { + this.parent.setSelected(this); + this.parent.setActiveEditor(this); + } else { + this.parent.setActiveEditor(null); + } + } + setAspectRatio(width, height) { + this.#keepAspectRatio = true; + const aspectRatio = width / height; + const { + style + } = this.div; + style.aspectRatio = aspectRatio; + style.height = "auto"; + } + static get MIN_SIZE() { + return 16; + } +} +class FakeEditor extends AnnotationEditor { + constructor(params) { + super(params); + this.annotationElementId = params.annotationElementId; + this.deleted = true; + } + serialize() { + return { + id: this.annotationElementId, + deleted: true, + pageIndex: this.pageIndex + }; + } +} + + +/***/ }), + +/***/ 812: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ AnnotationEditorUIManager: () => (/* binding */ AnnotationEditorUIManager), +/* harmony export */ ColorManager: () => (/* binding */ ColorManager), +/* harmony export */ KeyboardManager: () => (/* binding */ KeyboardManager), +/* harmony export */ bindEvents: () => (/* binding */ bindEvents), +/* harmony export */ opacityToHex: () => (/* binding */ opacityToHex) +/* harmony export */ }); +/* unused harmony export CommandManager */ +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(473); + + +function bindEvents(obj, element, names) { + for (const name of names) { + element.addEventListener(name, obj[name].bind(obj)); + } +} +function opacityToHex(opacity) { + return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, "0"); +} +class IdManager { + #id = 0; + getId() { + return `${_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorPrefix}${this.#id++}`; + } +} +class ImageManager { + #baseId = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.getUuid)(); + #id = 0; + #cache = null; + static get _isSVGFittingCanvas() { + const svg = `data:image/svg+xml;charset=UTF-8,`; + const canvas = new OffscreenCanvas(1, 3); + const ctx = canvas.getContext("2d"); + const image = new Image(); + image.src = svg; + const promise = image.decode().then(() => { + ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3); + return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0; + }); + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_isSVGFittingCanvas", promise); + } + async #get(key, rawData) { + this.#cache ||= new Map(); + let data = this.#cache.get(key); + if (data === null) { + return null; + } + if (data?.bitmap) { + data.refCounter += 1; + return data; + } + try { + data ||= { + bitmap: null, + id: `image_${this.#baseId}_${this.#id++}`, + refCounter: 0, + isSvg: false + }; + let image; + if (typeof rawData === "string") { + data.url = rawData; + const response = await fetch(rawData); + if (!response.ok) { + throw new Error(response.statusText); + } + image = await response.blob(); + } else { + image = data.file = rawData; + } + if (image.type === "image/svg+xml") { + const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas; + const fileReader = new FileReader(); + const imageElement = new Image(); + const imagePromise = new Promise((resolve, reject) => { + imageElement.onload = () => { + data.bitmap = imageElement; + data.isSvg = true; + resolve(); + }; + fileReader.onload = async () => { + const url = data.svgUrl = fileReader.result; + imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url; + }; + imageElement.onerror = fileReader.onerror = reject; + }); + fileReader.readAsDataURL(image); + await imagePromise; + } else { + data.bitmap = await createImageBitmap(image); + } + data.refCounter = 1; + } catch (e) { + console.error(e); + data = null; + } + this.#cache.set(key, data); + if (data) { + this.#cache.set(data.id, data); + } + return data; + } + async getFromFile(file) { + const { + lastModified, + name, + size, + type + } = file; + return this.#get(`${lastModified}_${name}_${size}_${type}`, file); + } + async getFromUrl(url) { + return this.#get(url, url); + } + async getFromId(id) { + this.#cache ||= new Map(); + const data = this.#cache.get(id); + if (!data) { + return null; + } + if (data.bitmap) { + data.refCounter += 1; + return data; + } + if (data.file) { + return this.getFromFile(data.file); + } + return this.getFromUrl(data.url); + } + getSvgUrl(id) { + const data = this.#cache.get(id); + if (!data?.isSvg) { + return null; + } + return data.svgUrl; + } + deleteId(id) { + this.#cache ||= new Map(); + const data = this.#cache.get(id); + if (!data) { + return; + } + data.refCounter -= 1; + if (data.refCounter !== 0) { + return; + } + data.bitmap = null; + } + isValidId(id) { + return id.startsWith(`image_${this.#baseId}_`); + } +} +class CommandManager { + #commands = []; + #locked = false; + #maxSize; + #position = -1; + constructor(maxSize = 128) { + this.#maxSize = maxSize; + } + add({ + cmd, + undo, + mustExec, + type = NaN, + overwriteIfSameType = false, + keepUndo = false + }) { + if (mustExec) { + cmd(); + } + if (this.#locked) { + return; + } + const save = { + cmd, + undo, + type + }; + if (this.#position === -1) { + if (this.#commands.length > 0) { + this.#commands.length = 0; + } + this.#position = 0; + this.#commands.push(save); + return; + } + if (overwriteIfSameType && this.#commands[this.#position].type === type) { + if (keepUndo) { + save.undo = this.#commands[this.#position].undo; + } + this.#commands[this.#position] = save; + return; + } + const next = this.#position + 1; + if (next === this.#maxSize) { + this.#commands.splice(0, 1); + } else { + this.#position = next; + if (next < this.#commands.length) { + this.#commands.splice(next); + } + } + this.#commands.push(save); + } + undo() { + if (this.#position === -1) { + return; + } + this.#locked = true; + this.#commands[this.#position].undo(); + this.#locked = false; + this.#position -= 1; + } + redo() { + if (this.#position < this.#commands.length - 1) { + this.#position += 1; + this.#locked = true; + this.#commands[this.#position].cmd(); + this.#locked = false; + } + } + hasSomethingToUndo() { + return this.#position !== -1; + } + hasSomethingToRedo() { + return this.#position < this.#commands.length - 1; + } + destroy() { + this.#commands = null; + } +} +class KeyboardManager { + constructor(callbacks) { + this.buffer = []; + this.callbacks = new Map(); + this.allKeys = new Set(); + const { + isMac + } = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest.platform; + for (const [keys, callback, options = {}] of callbacks) { + for (const key of keys) { + const isMacKey = key.startsWith("mac+"); + if (isMac && isMacKey) { + this.callbacks.set(key.slice(4), { + callback, + options + }); + this.allKeys.add(key.split("+").at(-1)); + } else if (!isMac && !isMacKey) { + this.callbacks.set(key, { + callback, + options + }); + this.allKeys.add(key.split("+").at(-1)); + } + } + } + } + #serialize(event) { + if (event.altKey) { + this.buffer.push("alt"); + } + if (event.ctrlKey) { + this.buffer.push("ctrl"); + } + if (event.metaKey) { + this.buffer.push("meta"); + } + if (event.shiftKey) { + this.buffer.push("shift"); + } + this.buffer.push(event.key); + const str = this.buffer.join("+"); + this.buffer.length = 0; + return str; + } + exec(self, event) { + if (!this.allKeys.has(event.key)) { + return; + } + const info = this.callbacks.get(this.#serialize(event)); + if (!info) { + return; + } + const { + callback, + options: { + bubbles = false, + args = [], + checker = null + } + } = info; + if (checker && !checker(self, event)) { + return; + } + callback.bind(self, ...args)(); + if (!bubbles) { + event.stopPropagation(); + event.preventDefault(); + } + } +} +class ColorManager { + static _colorsMapping = new Map([["CanvasText", [0, 0, 0]], ["Canvas", [255, 255, 255]]]); + get _colors() { + const colors = new Map([["CanvasText", null], ["Canvas", null]]); + (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.getColorValues)(colors); + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_colors", colors); + } + convert(color) { + const rgb = (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.getRGB)(color); + if (!window.matchMedia("(forced-colors: active)").matches) { + return rgb; + } + for (const [name, RGB] of this._colors) { + if (RGB.every((x, i) => x === rgb[i])) { + return ColorManager._colorsMapping.get(name); + } + } + return rgb; + } + getHexCode(name) { + const rgb = this._colors.get(name); + if (!rgb) { + return name; + } + return _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util.makeHexColor(...rgb); + } +} +class AnnotationEditorUIManager { + #activeEditor = null; + #allEditors = new Map(); + #allLayers = new Map(); + #altTextManager = null; + #annotationStorage = null; + #commandManager = new CommandManager(); + #currentPageIndex = 0; + #deletedAnnotationsElementIds = new Set(); + #draggingEditors = null; + #editorTypes = null; + #editorsToRescale = new Set(); + #filterFactory = null; + #focusMainContainerTimeoutId = null; + #idManager = new IdManager(); + #isEnabled = false; + #isWaiting = false; + #lastActiveElement = null; + #mode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE; + #selectedEditors = new Set(); + #pageColors = null; + #boundBlur = this.blur.bind(this); + #boundFocus = this.focus.bind(this); + #boundCopy = this.copy.bind(this); + #boundCut = this.cut.bind(this); + #boundPaste = this.paste.bind(this); + #boundKeydown = this.keydown.bind(this); + #boundOnEditingAction = this.onEditingAction.bind(this); + #boundOnPageChanging = this.onPageChanging.bind(this); + #boundOnScaleChanging = this.onScaleChanging.bind(this); + #boundOnRotationChanging = this.onRotationChanging.bind(this); + #previousStates = { + isEditing: false, + isEmpty: true, + hasSomethingToUndo: false, + hasSomethingToRedo: false, + hasSelectedEditor: false + }; + #translation = [0, 0]; + #translationTimeoutId = null; + #container = null; + #viewer = null; + static TRANSLATE_SMALL = 1; + static TRANSLATE_BIG = 10; + static get _keyboardManager() { + const proto = AnnotationEditorUIManager.prototype; + const arrowChecker = self => { + return self.#container.contains(document.activeElement) && self.hasSomethingToControl(); + }; + const textInputChecker = (_self, { + target: el + }) => { + if (el instanceof HTMLInputElement) { + const { + type + } = el; + return type !== "text" && type !== "number"; + } + return true; + }; + const small = this.TRANSLATE_SMALL; + const big = this.TRANSLATE_BIG; + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_keyboardManager", new KeyboardManager([[["ctrl+a", "mac+meta+a"], proto.selectAll, { + checker: textInputChecker + }], [["ctrl+z", "mac+meta+z"], proto.undo, { + checker: textInputChecker + }], [["ctrl+y", "ctrl+shift+z", "mac+meta+shift+z", "ctrl+shift+Z", "mac+meta+shift+Z"], proto.redo, { + checker: textInputChecker + }], [["Backspace", "alt+Backspace", "ctrl+Backspace", "shift+Backspace", "mac+Backspace", "mac+alt+Backspace", "mac+ctrl+Backspace", "Delete", "ctrl+Delete", "shift+Delete", "mac+Delete"], proto.delete, { + checker: textInputChecker + }], [["Enter", "mac+Enter"], proto.addNewEditorFromKeyboard, { + checker: self => self.#container.contains(document.activeElement) && !self.isEnterHandled + }], [[" ", "mac+ "], proto.addNewEditorFromKeyboard, { + checker: self => self.#container.contains(document.activeElement) + }], [["Escape", "mac+Escape"], proto.unselectAll], [["ArrowLeft", "mac+ArrowLeft"], proto.translateSelectedEditors, { + args: [-small, 0], + checker: arrowChecker + }], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], proto.translateSelectedEditors, { + args: [-big, 0], + checker: arrowChecker + }], [["ArrowRight", "mac+ArrowRight"], proto.translateSelectedEditors, { + args: [small, 0], + checker: arrowChecker + }], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], proto.translateSelectedEditors, { + args: [big, 0], + checker: arrowChecker + }], [["ArrowUp", "mac+ArrowUp"], proto.translateSelectedEditors, { + args: [0, -small], + checker: arrowChecker + }], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], proto.translateSelectedEditors, { + args: [0, -big], + checker: arrowChecker + }], [["ArrowDown", "mac+ArrowDown"], proto.translateSelectedEditors, { + args: [0, small], + checker: arrowChecker + }], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], proto.translateSelectedEditors, { + args: [0, big], + checker: arrowChecker + }]])); + } + constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors) { + this.#container = container; + this.#viewer = viewer; + this.#altTextManager = altTextManager; + this._eventBus = eventBus; + this._eventBus._on("editingaction", this.#boundOnEditingAction); + this._eventBus._on("pagechanging", this.#boundOnPageChanging); + this._eventBus._on("scalechanging", this.#boundOnScaleChanging); + this._eventBus._on("rotationchanging", this.#boundOnRotationChanging); + this.#annotationStorage = pdfDocument.annotationStorage; + this.#filterFactory = pdfDocument.filterFactory; + this.#pageColors = pageColors; + this.viewParameters = { + realScale: _display_utils_js__WEBPACK_IMPORTED_MODULE_1__.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: 0 + }; + } + destroy() { + this.#removeKeyboardManager(); + this.#removeFocusManager(); + this._eventBus._off("editingaction", this.#boundOnEditingAction); + this._eventBus._off("pagechanging", this.#boundOnPageChanging); + this._eventBus._off("scalechanging", this.#boundOnScaleChanging); + this._eventBus._off("rotationchanging", this.#boundOnRotationChanging); + for (const layer of this.#allLayers.values()) { + layer.destroy(); + } + this.#allLayers.clear(); + this.#allEditors.clear(); + this.#editorsToRescale.clear(); + this.#activeEditor = null; + this.#selectedEditors.clear(); + this.#commandManager.destroy(); + this.#altTextManager.destroy(); + if (this.#focusMainContainerTimeoutId) { + clearTimeout(this.#focusMainContainerTimeoutId); + this.#focusMainContainerTimeoutId = null; + } + if (this.#translationTimeoutId) { + clearTimeout(this.#translationTimeoutId); + this.#translationTimeoutId = null; + } + } + get hcmFilter() { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "hcmFilter", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : "none"); + } + get direction() { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "direction", getComputedStyle(this.#container).direction); + } + editAltText(editor) { + this.#altTextManager?.editAltText(this, editor); + } + onPageChanging({ + pageNumber + }) { + this.#currentPageIndex = pageNumber - 1; + } + focusMainContainer() { + this.#container.focus(); + } + findParent(x, y) { + for (const layer of this.#allLayers.values()) { + const { + x: layerX, + y: layerY, + width, + height + } = layer.div.getBoundingClientRect(); + if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) { + return layer; + } + } + return null; + } + disableUserSelect(value = false) { + this.#viewer.classList.toggle("noUserSelect", value); + } + addShouldRescale(editor) { + this.#editorsToRescale.add(editor); + } + removeShouldRescale(editor) { + this.#editorsToRescale.delete(editor); + } + onScaleChanging({ + scale + }) { + this.commitOrRemove(); + this.viewParameters.realScale = scale * _display_utils_js__WEBPACK_IMPORTED_MODULE_1__.PixelsPerInch.PDF_TO_CSS_UNITS; + for (const editor of this.#editorsToRescale) { + editor.onScaleChanging(); + } + } + onRotationChanging({ + pagesRotation + }) { + this.commitOrRemove(); + this.viewParameters.rotation = pagesRotation; + } + addToAnnotationStorage(editor) { + if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) { + this.#annotationStorage.setValue(editor.id, editor); + } + } + #addFocusManager() { + window.addEventListener("focus", this.#boundFocus); + window.addEventListener("blur", this.#boundBlur); + } + #removeFocusManager() { + window.removeEventListener("focus", this.#boundFocus); + window.removeEventListener("blur", this.#boundBlur); + } + blur() { + if (!this.hasSelection) { + return; + } + const { + activeElement + } = document; + for (const editor of this.#selectedEditors) { + if (editor.div.contains(activeElement)) { + this.#lastActiveElement = [editor, activeElement]; + editor._focusEventsAllowed = false; + break; + } + } + } + focus() { + if (!this.#lastActiveElement) { + return; + } + const [lastEditor, lastActiveElement] = this.#lastActiveElement; + this.#lastActiveElement = null; + lastActiveElement.addEventListener("focusin", () => { + lastEditor._focusEventsAllowed = true; + }, { + once: true + }); + lastActiveElement.focus(); + } + #addKeyboardManager() { + window.addEventListener("keydown", this.#boundKeydown); + } + #removeKeyboardManager() { + window.removeEventListener("keydown", this.#boundKeydown); + } + #addCopyPasteListeners() { + document.addEventListener("copy", this.#boundCopy); + document.addEventListener("cut", this.#boundCut); + document.addEventListener("paste", this.#boundPaste); + } + #removeCopyPasteListeners() { + document.removeEventListener("copy", this.#boundCopy); + document.removeEventListener("cut", this.#boundCut); + document.removeEventListener("paste", this.#boundPaste); + } + addEditListeners() { + this.#addKeyboardManager(); + this.#addCopyPasteListeners(); + } + removeEditListeners() { + this.#removeKeyboardManager(); + this.#removeCopyPasteListeners(); + } + copy(event) { + event.preventDefault(); + this.#activeEditor?.commitOrRemove(); + if (!this.hasSelection) { + return; + } + const editors = []; + for (const editor of this.#selectedEditors) { + const serialized = editor.serialize(true); + if (serialized) { + editors.push(serialized); + } + } + if (editors.length === 0) { + return; + } + event.clipboardData.setData("application/pdfjs", JSON.stringify(editors)); + } + cut(event) { + this.copy(event); + this.delete(); + } + paste(event) { + event.preventDefault(); + const { + clipboardData + } = event; + for (const item of clipboardData.items) { + for (const editorType of this.#editorTypes) { + if (editorType.isHandlingMimeForPasting(item.type)) { + editorType.paste(item, this.currentLayer); + return; + } + } + } + let data = clipboardData.getData("application/pdfjs"); + if (!data) { + return; + } + try { + data = JSON.parse(data); + } catch (ex) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`paste: "${ex.message}".`); + return; + } + if (!Array.isArray(data)) { + return; + } + this.unselectAll(); + const layer = this.currentLayer; + try { + const newEditors = []; + for (const editor of data) { + const deserializedEditor = layer.deserialize(editor); + if (!deserializedEditor) { + return; + } + newEditors.push(deserializedEditor); + } + const cmd = () => { + for (const editor of newEditors) { + this.#addEditorToLayer(editor); + } + this.#selectEditors(newEditors); + }; + const undo = () => { + for (const editor of newEditors) { + editor.remove(); + } + }; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } catch (ex) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`paste: "${ex.message}".`); + } + } + keydown(event) { + if (!this.isEditorHandlingKeyboard) { + AnnotationEditorUIManager._keyboardManager.exec(this, event); + } + } + onEditingAction(details) { + if (["undo", "redo", "delete", "selectAll"].includes(details.name)) { + this[details.name](); + } + } + #dispatchUpdateStates(details) { + const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value); + if (hasChanged) { + this._eventBus.dispatch("annotationeditorstateschanged", { + source: this, + details: Object.assign(this.#previousStates, details) + }); + } + } + #dispatchUpdateUI(details) { + this._eventBus.dispatch("annotationeditorparamschanged", { + source: this, + details + }); + } + setEditingState(isEditing) { + if (isEditing) { + this.#addFocusManager(); + this.#addKeyboardManager(); + this.#addCopyPasteListeners(); + this.#dispatchUpdateStates({ + isEditing: this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE, + isEmpty: this.#isEmpty(), + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + hasSelectedEditor: false + }); + } else { + this.#removeFocusManager(); + this.#removeKeyboardManager(); + this.#removeCopyPasteListeners(); + this.#dispatchUpdateStates({ + isEditing: false + }); + this.disableUserSelect(false); + } + } + registerEditorTypes(types) { + if (this.#editorTypes) { + return; + } + this.#editorTypes = types; + for (const editorType of this.#editorTypes) { + this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate); + } + } + getId() { + return this.#idManager.getId(); + } + get currentLayer() { + return this.#allLayers.get(this.#currentPageIndex); + } + getLayer(pageIndex) { + return this.#allLayers.get(pageIndex); + } + get currentPageIndex() { + return this.#currentPageIndex; + } + addLayer(layer) { + this.#allLayers.set(layer.pageIndex, layer); + if (this.#isEnabled) { + layer.enable(); + } else { + layer.disable(); + } + } + removeLayer(layer) { + this.#allLayers.delete(layer.pageIndex); + } + updateMode(mode, editId = null, isFromKeyboard = false) { + if (this.#mode === mode) { + return; + } + this.#mode = mode; + if (mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE) { + this.setEditingState(false); + this.#disableAll(); + return; + } + this.setEditingState(true); + this.#enableAll(); + this.unselectAll(); + for (const layer of this.#allLayers.values()) { + layer.updateMode(mode); + } + if (!editId && isFromKeyboard) { + this.addNewEditorFromKeyboard(); + return; + } + if (!editId) { + return; + } + for (const editor of this.#allEditors.values()) { + if (editor.annotationElementId === editId) { + this.setSelected(editor); + editor.enterInEditMode(); + break; + } + } + } + addNewEditorFromKeyboard() { + this.currentLayer.addNewEditor(); + } + updateToolbar(mode) { + if (mode === this.#mode) { + return; + } + this._eventBus.dispatch("switchannotationeditormode", { + source: this, + mode + }); + } + updateParams(type, value) { + if (!this.#editorTypes) { + return; + } + if (type === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.CREATE) { + this.currentLayer.addNewEditor(); + return; + } + for (const editor of this.#selectedEditors) { + editor.updateParams(type, value); + } + for (const editorType of this.#editorTypes) { + editorType.updateDefaultParams(type, value); + } + } + enableWaiting(mustWait = false) { + if (this.#isWaiting === mustWait) { + return; + } + this.#isWaiting = mustWait; + for (const layer of this.#allLayers.values()) { + if (mustWait) { + layer.disableClick(); + } else { + layer.enableClick(); + } + layer.div.classList.toggle("waiting", mustWait); + } + } + #enableAll() { + if (!this.#isEnabled) { + this.#isEnabled = true; + for (const layer of this.#allLayers.values()) { + layer.enable(); + } + } + } + #disableAll() { + this.unselectAll(); + if (this.#isEnabled) { + this.#isEnabled = false; + for (const layer of this.#allLayers.values()) { + layer.disable(); + } + } + } + getEditors(pageIndex) { + const editors = []; + for (const editor of this.#allEditors.values()) { + if (editor.pageIndex === pageIndex) { + editors.push(editor); + } + } + return editors; + } + getEditor(id) { + return this.#allEditors.get(id); + } + addEditor(editor) { + this.#allEditors.set(editor.id, editor); + } + removeEditor(editor) { + if (editor.div.contains(document.activeElement)) { + if (this.#focusMainContainerTimeoutId) { + clearTimeout(this.#focusMainContainerTimeoutId); + } + this.#focusMainContainerTimeoutId = setTimeout(() => { + this.focusMainContainer(); + this.#focusMainContainerTimeoutId = null; + }, 0); + } + this.#allEditors.delete(editor.id); + this.unselect(editor); + if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) { + this.#annotationStorage?.remove(editor.id); + } + } + addDeletedAnnotationElement(editor) { + this.#deletedAnnotationsElementIds.add(editor.annotationElementId); + editor.deleted = true; + } + isDeletedAnnotationElement(annotationElementId) { + return this.#deletedAnnotationsElementIds.has(annotationElementId); + } + removeDeletedAnnotationElement(editor) { + this.#deletedAnnotationsElementIds.delete(editor.annotationElementId); + editor.deleted = false; + } + #addEditorToLayer(editor) { + const layer = this.#allLayers.get(editor.pageIndex); + if (layer) { + layer.addOrRebuild(editor); + } else { + this.addEditor(editor); + } + } + setActiveEditor(editor) { + if (this.#activeEditor === editor) { + return; + } + this.#activeEditor = editor; + if (editor) { + this.#dispatchUpdateUI(editor.propertiesToUpdate); + } + } + toggleSelected(editor) { + if (this.#selectedEditors.has(editor)) { + this.#selectedEditors.delete(editor); + editor.unselect(); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + return; + } + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + setSelected(editor) { + for (const ed of this.#selectedEditors) { + if (ed !== editor) { + ed.unselect(); + } + } + this.#selectedEditors.clear(); + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + isSelected(editor) { + return this.#selectedEditors.has(editor); + } + get firstSelectedEditor() { + return this.#selectedEditors.values().next().value; + } + unselect(editor) { + editor.unselect(); + this.#selectedEditors.delete(editor); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + } + get hasSelection() { + return this.#selectedEditors.size !== 0; + } + get isEnterHandled() { + return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled; + } + undo() { + this.#commandManager.undo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: true, + isEmpty: this.#isEmpty() + }); + } + redo() { + this.#commandManager.redo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + isEmpty: this.#isEmpty() + }); + } + addCommands(params) { + this.#commandManager.add(params); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: false, + isEmpty: this.#isEmpty() + }); + } + #isEmpty() { + if (this.#allEditors.size === 0) { + return true; + } + if (this.#allEditors.size === 1) { + for (const editor of this.#allEditors.values()) { + return editor.isEmpty(); + } + } + return false; + } + delete() { + this.commitOrRemove(); + if (!this.hasSelection) { + return; + } + const editors = [...this.#selectedEditors]; + const cmd = () => { + for (const editor of editors) { + editor.remove(); + } + }; + const undo = () => { + for (const editor of editors) { + this.#addEditorToLayer(editor); + } + }; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + commitOrRemove() { + this.#activeEditor?.commitOrRemove(); + } + hasSomethingToControl() { + return this.#activeEditor || this.hasSelection; + } + #selectEditors(editors) { + this.#selectedEditors.clear(); + for (const editor of editors) { + if (editor.isEmpty()) { + continue; + } + this.#selectedEditors.add(editor); + editor.select(); + } + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + selectAll() { + for (const editor of this.#selectedEditors) { + editor.commit(); + } + this.#selectEditors(this.#allEditors.values()); + } + unselectAll() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + return; + } + if (!this.hasSelection) { + return; + } + for (const editor of this.#selectedEditors) { + editor.unselect(); + } + this.#selectedEditors.clear(); + this.#dispatchUpdateStates({ + hasSelectedEditor: false + }); + } + translateSelectedEditors(x, y, noCommit = false) { + if (!noCommit) { + this.commitOrRemove(); + } + if (!this.hasSelection) { + return; + } + this.#translation[0] += x; + this.#translation[1] += y; + const [totalX, totalY] = this.#translation; + const editors = [...this.#selectedEditors]; + const TIME_TO_WAIT = 1000; + if (this.#translationTimeoutId) { + clearTimeout(this.#translationTimeoutId); + } + this.#translationTimeoutId = setTimeout(() => { + this.#translationTimeoutId = null; + this.#translation[0] = this.#translation[1] = 0; + this.addCommands({ + cmd: () => { + for (const editor of editors) { + if (this.#allEditors.has(editor.id)) { + editor.translateInPage(totalX, totalY); + } + } + }, + undo: () => { + for (const editor of editors) { + if (this.#allEditors.has(editor.id)) { + editor.translateInPage(-totalX, -totalY); + } + } + }, + mustExec: false + }); + }, TIME_TO_WAIT); + for (const editor of editors) { + editor.translateInPage(x, y); + } + } + setUpDragSession() { + if (!this.hasSelection) { + return; + } + this.disableUserSelect(true); + this.#draggingEditors = new Map(); + for (const editor of this.#selectedEditors) { + this.#draggingEditors.set(editor, { + savedX: editor.x, + savedY: editor.y, + savedPageIndex: editor.pageIndex, + newX: 0, + newY: 0, + newPageIndex: -1 + }); + } + } + endDragSession() { + if (!this.#draggingEditors) { + return false; + } + this.disableUserSelect(false); + const map = this.#draggingEditors; + this.#draggingEditors = null; + let mustBeAddedInUndoStack = false; + for (const [{ + x, + y, + pageIndex + }, value] of map) { + value.newX = x; + value.newY = y; + value.newPageIndex = pageIndex; + mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex; + } + if (!mustBeAddedInUndoStack) { + return false; + } + const move = (editor, x, y, pageIndex) => { + if (this.#allEditors.has(editor.id)) { + const parent = this.#allLayers.get(pageIndex); + if (parent) { + editor._setParentAndPosition(parent, x, y); + } else { + editor.pageIndex = pageIndex; + editor.x = x; + editor.y = y; + } + } + }; + this.addCommands({ + cmd: () => { + for (const [editor, { + newX, + newY, + newPageIndex + }] of map) { + move(editor, newX, newY, newPageIndex); + } + }, + undo: () => { + for (const [editor, { + savedX, + savedY, + savedPageIndex + }] of map) { + move(editor, savedX, savedY, savedPageIndex); + } + }, + mustExec: true + }); + return true; + } + dragSelectedEditors(tx, ty) { + if (!this.#draggingEditors) { + return; + } + for (const editor of this.#draggingEditors.keys()) { + editor.drag(tx, ty); + } + } + rebuild(editor) { + if (editor.parent === null) { + const parent = this.getLayer(editor.pageIndex); + if (parent) { + parent.changeParent(editor); + parent.addOrRebuild(editor); + } else { + this.addEditor(editor); + this.addToAnnotationStorage(editor); + editor.rebuild(); + } + } else { + editor.parent.addOrRebuild(editor); + } + } + get isEditorHandlingKeyboard() { + return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents(); + } + isActive(editor) { + return this.#activeEditor === editor; + } + getActive() { + return this.#activeEditor; + } + getMode() { + return this.#mode; + } + get imageManager() { + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "imageManager", new ImageManager()); + } +} + + +/***/ }), + +/***/ 171: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ PDFFetchStream: () => (/* binding */ PDFFetchStream) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253); + + +; +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 (value === undefined) { + continue; + } + headers.append(property, value); + } + return headers; +} +function getArrayBuffer(val) { + if (val instanceof Uint8Array) { + return val.buffer; + } + if (val instanceof ArrayBuffer) { + return val; + } + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getArrayBuffer - unexpected data format: ${val}`); + return new Uint8Array(val).buffer; +} +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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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) { + this._fullRequestReader?.cancel(reason); + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } +} +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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + 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_js__WEBPACK_IMPORTED_MODULE_1__.validateResponseStatus)(response.status)) { + throw (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.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_js__WEBPACK_IMPORTED_MODULE_1__.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_js__WEBPACK_IMPORTED_MODULE_1__.extractFilenameFromHeader)(getResponseHeader); + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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; + this.onProgress?.({ + loaded: this._loaded, + total: this._contentLength + }); + return { + value: getArrayBuffer(value), + done: false + }; + } + cancel(reason) { + this._reader?.cancel(reason); + 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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this._isStreamingSupported = !source.disableStream; + 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_js__WEBPACK_IMPORTED_MODULE_1__.validateResponseStatus)(response.status)) { + throw (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.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; + this.onProgress?.({ + loaded: this._loaded + }); + return { + value: getArrayBuffer(value), + done: false + }; + } + cancel(reason) { + this._reader?.cancel(reason); + this._abortController.abort(); + } +} + + +/***/ }), + +/***/ 742: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ FontFaceObject: () => (/* binding */ FontFaceObject), +/* harmony export */ FontLoader: () => (/* binding */ FontLoader) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); + +class FontLoader { + #systemFonts = new Set(); + constructor({ + ownerDocument = globalThis.document, + styleElement = null + }) { + this._document = ownerDocument; + this.nativeFontFaces = new Set(); + this.styleElement = null; + this.loadingRequests = []; + this.loadTestFontId = 0; + } + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.add(nativeFontFace); + this._document.fonts.add(nativeFontFace); + } + removeNativeFontFace(nativeFontFace) { + this.nativeFontFaces.delete(nativeFontFace); + this._document.fonts.delete(nativeFontFace); + } + insertRule(rule) { + if (!this.styleElement) { + this.styleElement = this._document.createElement("style"); + this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement); + } + const styleSheet = this.styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + this.nativeFontFaces.clear(); + this.#systemFonts.clear(); + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + async loadSystemFont({ + systemFontInfo: info, + _inspectFont + }) { + if (!info || this.#systemFonts.has(info.loadedName)) { + return; + } + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this.disableFontFace, "loadSystemFont shouldn't be called when `disableFontFace` is set."); + if (this.isFontLoadingAPISupported) { + const { + loadedName, + src, + style + } = info; + const fontFace = new FontFace(loadedName, src, style); + this.addNativeFontFace(fontFace); + try { + await fontFace.load(); + this.#systemFonts.add(loadedName); + _inspectFont?.(info); + } catch { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`); + this.removeNativeFontFace(fontFace); + } + return; + } + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Not implemented: loadSystemFont without the Font Loading API."); + } + async bind(font) { + if (font.attached || font.missingFile && !font.systemFontInfo) { + return; + } + font.attached = true; + if (font.systemFontInfo) { + await this.loadSystemFont(font); + return; + } + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + try { + await nativeFontFace.loaded; + } catch (ex) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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(font, request); + }); + } + } + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + get isSyncFontLoadingSupported() { + let supported = false; + if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) { + supported = true; + } else if (typeof navigator !== "undefined" && typeof navigator?.userAgent === "string" && /Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent)) { + supported = true; + } + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isSyncFontLoadingSupported", supported); + } + _queueLoadingCallback(callback) { + function completeRequest() { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + while (loadingRequests.length > 0 && loadingRequests[0].done) { + const otherRequest = loadingRequests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + const { + loadingRequests + } = this; + const request = { + done: false, + complete: completeRequest, + callback + }; + loadingRequests.push(request); + return request; + } + get _loadTestFont() { + const testFont = 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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_loadTestFont", testFont); + } + _prepareFontLoadEvent(font, 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) { + if (++called > 30) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + 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 [font.loadedName, loadTestFontId]) { + const span = this._document.createElement("span"); + span.textContent = "Hi"; + span.style.fontFamily = name; + div.append(span); + } + this._document.body.append(div); + isFontReady(loadTestFontId, () => { + div.remove(); + request.complete(); + }); + } +} +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + inspectFont = 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._inspectFont = inspectFont; + } + 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); + } + this._inspectFont?.(this); + return nativeFontFace; + } + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + const data = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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}}`; + } + this._inspectFont?.(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; + } + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + if (this.isEvalSupported && _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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); + } + }; + } +} + + +/***/ }), + +/***/ 472: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Metadata: () => (/* binding */ Metadata) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); + +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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#metadataMap); + } + has(name) { + return this.#metadataMap.has(name); + } +} + + +/***/ }), + +/***/ 474: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ PDFNetworkStream: () => (/* binding */ PDFNetworkStream) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253); + + +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; +function getArrayBuffer(xhr) { + const data = xhr.response; + if (typeof data !== "string") { + return data; + } + return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.stringToBytes)(data).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.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 = new XMLHttpRequest(); + 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 (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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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); + } + } +} +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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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_js__WEBPACK_IMPORTED_MODULE_1__.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_js__WEBPACK_IMPORTED_MODULE_1__.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_js__WEBPACK_IMPORTED_MODULE_1__.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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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_js__WEBPACK_IMPORTED_MODULE_1__.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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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(); + } +} + + +/***/ }), + +/***/ 253: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + createResponseStatusError: () => (/* binding */ createResponseStatusError), + extractFilenameFromHeader: () => (/* binding */ extractFilenameFromHeader), + validateRangeRequestCapabilities: () => (/* binding */ validateRangeRequestCapabilities), + validateResponseStatus: () => (/* binding */ validateResponseStatus) +}); + +// EXTERNAL MODULE: ./src/shared/util.js +var util = __webpack_require__(266); +;// CONCATENATED MODULE: ./src/display/content_disposition.js + +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 {} + } + 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].replaceAll(/\\(.)/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.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replaceAll("_", " "); + text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + try { + text = atob(text); + } catch {} + return textdecode(charset, text); + }); + } + return ""; +} + +// EXTERNAL MODULE: ./src/display/display_utils.js +var display_utils = __webpack_require__(473); +;// CONCATENATED MODULE: ./src/display/network_utils.js + + + +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 = getFilenameFromContentDispositionHeader(contentDisposition); + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch {} + } + 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; +} + + +/***/ }), + +/***/ 498: +/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ PDFNodeStream: () => (/* binding */ PDFNodeStream) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253); + + +; +let fs, http, https, url; +if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) { + fs = await import(/* webpackIgnore: true */ "fs"); + http = await import(/* webpackIgnore: true */ "http"); + https = await import(/* webpackIgnore: true */ "https"); + url = await import(/* webpackIgnore: true */ "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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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) { + this._fullRequestReader?.cancel(reason); + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } +} +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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this._headersCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + } + 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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + return this.read(); + } + this._loaded += chunk.length; + 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 _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + return this.read(); + } + this._loaded += chunk.length; + 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 _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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_js__WEBPACK_IMPORTED_MODULE_1__.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.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 (value === undefined) { + continue; + } + this._httpHeaders[property] = value; + } + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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 _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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 + })); + } +} + +__webpack_async_result__(); +} catch(e) { __webpack_async_result__(e); } }, 1); + +/***/ }), + +/***/ 738: +/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ NodeCMapReaderFactory: () => (/* binding */ NodeCMapReaderFactory), +/* harmony export */ NodeCanvasFactory: () => (/* binding */ NodeCanvasFactory), +/* harmony export */ NodeFilterFactory: () => (/* binding */ NodeFilterFactory), +/* harmony export */ NodeStandardFontDataFactory: () => (/* binding */ NodeStandardFontDataFactory) +/* harmony export */ }); +/* harmony import */ var _base_factory_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(822); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(266); + + +; +let fs, canvas, path2d_polyfill; +if (_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.isNodeJS) { + fs = await import(/* webpackIgnore: true */ "fs"); + try { + canvas = await import(/* webpackIgnore: true */ "canvas"); + } catch {} + try { + path2d_polyfill = await import(/* webpackIgnore: true */ "path2d-polyfill"); + } catch {} +} +; +const fetchData = function (url) { + return new Promise((resolve, reject) => { + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + resolve(new Uint8Array(data)); + }); + }); +}; +class NodeFilterFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseFilterFactory {} +class NodeCanvasFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCanvasFactory { + _createCanvas(width, height) { + return canvas.createCanvas(width, height); + } +} +class NodeCMapReaderFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } +} +class NodeStandardFontDataFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } +} + +__webpack_async_result__(); +} catch(e) { __webpack_async_result__(e); } }, 1); + +/***/ }), + +/***/ 890: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ OptionalContentConfig: () => (/* binding */ OptionalContentConfig) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(825); + + +const INTERNAL = Symbol("INTERNAL"); +class OptionalContentGroup { + #visible = true; + constructor(name, intent) { + this.name = name; + this.intent = intent; + } + get visible() { + return this.#visible; + } + _setVisible(internal, visible) { + if (internal !== INTERNAL) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Internal method `_setVisible` called."); + } + this.#visible = visible; + } +} +class OptionalContentConfig { + #cachedGetHash = null; + #groups = new Map(); + #initialHash = null; + #order = null; + constructor(data) { + this.name = null; + this.creator = null; + 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.values()) { + group._setVisible(INTERNAL, false); + } + } + for (const on of data.on) { + this.#groups.get(on)._setVisible(INTERNAL, true); + } + for (const off of data.off) { + this.#groups.get(off)._setVisible(INTERNAL, false); + } + this.#initialHash = this.getHash(); + } + #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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)("Optional content group not defined."); + return true; + } + if (group.type === "OCG") { + if (!this.#groups.has(group.id)) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`); + return true; + } + if (this.#groups.get(id).visible) { + return false; + } + } + return true; + } + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Unknown group type ${group.type}.`); + return true; + } + setVisibility(id, visible = true) { + if (!this.#groups.has(id)) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`); + return; + } + this.#groups.get(id)._setVisible(INTERNAL, !!visible); + this.#cachedGetHash = null; + } + get hasInitialVisibility() { + return this.#initialHash === null || this.getHash() === this.#initialHash; + } + getOrder() { + if (!this.#groups.size) { + return null; + } + if (this.#order) { + return this.#order.slice(); + } + return [...this.#groups.keys()]; + } + getGroups() { + return this.#groups.size > 0 ? (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#groups) : null; + } + getGroup(id) { + return this.#groups.get(id) || null; + } + getHash() { + if (this.#cachedGetHash !== null) { + return this.#cachedGetHash; + } + const hash = new _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_1__.MurmurHash3_64(); + for (const [id, group] of this.#groups) { + hash.update(`${id}:${group.visible}`); + } + return this.#cachedGetHash = hash.hexdigest(); + } +} + + +/***/ }), + +/***/ 739: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ renderTextLayer: () => (/* binding */ renderTextLayer), +/* harmony export */ updateTextLayer: () => (/* binding */ updateTextLayer) +/* harmony export */ }); +/* unused harmony export TextLayerRenderTask */ +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(473); + + +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +function getCtx(size, isOffscreenCanvasSupported) { + let ctx; + if (isOffscreenCanvasSupported && _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest.isOffscreenCanvasSupported) { + ctx = new OffscreenCanvas(size, size).getContext("2d", { + alpha: false + }); + } else { + const canvas = document.createElement("canvas"); + canvas.width = canvas.height = size; + ctx = canvas.getContext("2d", { + alpha: false + }); + } + return ctx; +} +function getAscent(fontFamily, isOffscreenCanvasSupported) { + const cachedAscent = ascentCache.get(fontFamily); + if (cachedAscent) { + return cachedAscent; + } + const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + ctx.canvas.width = ctx.canvas.height = 0; + 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.canvas.width = ctx.canvas.height = 0; + 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) { + const textDiv = document.createElement("span"); + const textDivProperties = { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + fontSize: 0 + }; + task._textDivs.push(textDiv); + const tx = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util.transform(task._transform, geom.transform); + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + if (style.vertical) { + angle += Math.PI / 2; + } + const fontFamily = task._fontInspectorEnabled && style.fontSubstitution || style.fontFamily; + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(fontFamily, task._isOffscreenCanvasSupported); + 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); + } + const scaleFactorStr = "calc(var(--scale-factor)*"; + const divStyle = textDiv.style; + if (task._container === task._rootContainer) { + divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`; + divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`; + } else { + divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`; + divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`; + } + divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`; + divStyle.fontFamily = fontFamily; + textDivProperties.fontSize = fontHeight; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName; + } + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + let shouldScaleText = false; + if (geom.str.length > 1) { + 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) { + textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width; + } + task._textDivProperties.set(textDiv, textDivProperties); + if (task._isReadableStream) { + task._layoutText(textDiv); + } +} +function layout(params) { + const { + div, + scale, + properties, + ctx, + prevFontSize, + prevFontFamily + } = params; + const { + style + } = div; + let transform = ""; + if (properties.canvasWidth !== 0 && properties.hasText) { + const { + fontFamily + } = style; + const { + canvasWidth, + fontSize + } = properties; + if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) { + ctx.font = `${fontSize * scale}px ${fontFamily}`; + params.prevFontSize = fontSize; + params.prevFontFamily = fontFamily; + } + const { + width + } = ctx.measureText(div.textContent); + if (width > 0) { + transform = `scaleX(${canvasWidth * scale / width})`; + } + } + if (properties.angle !== 0) { + transform = `rotate(${properties.angle}deg) ${transform}`; + } + if (transform.length > 0) { + style.transform = transform; + } +} +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) { + capability.resolve(); + return; + } + if (!task._isReadableStream) { + for (const textDiv of textDivs) { + task._layoutText(textDiv); + } + } + capability.resolve(); +} +class TextLayerRenderTask { + constructor({ + textContentSource, + container, + viewport, + textDivs, + textDivProperties, + textContentItemsStr, + isOffscreenCanvasSupported + }) { + this._textContentSource = textContentSource; + this._isReadableStream = textContentSource instanceof ReadableStream; + this._container = this._rootContainer = container; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._textDivProperties = textDivProperties || new WeakMap(); + this._canceled = false; + this._capability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this._layoutTextParams = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale: viewport.scale * (globalThis.devicePixelRatio || 1), + properties: null, + ctx: getCtx(0, isOffscreenCanvasSupported) + }; + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight]; + this._pageWidth = pageWidth; + this._pageHeight = pageHeight; + (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.setLayerDimensions)(container, viewport); + this._capability.promise.finally(() => { + this._layoutTextParams = null; + }).catch(() => {}); + } + get promise() { + return this._capability.promise; + } + cancel() { + this._canceled = true; + if (this._reader) { + this._reader.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException("TextLayer task cancelled.")).catch(() => {}); + this._reader = null; + } + this._capability.reject(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException("TextLayer task cancelled.")); + } + _processItems(items, styleCache) { + for (const item of items) { + if (item.str === undefined) { + if (item.type === "beginMarkedContentProps" || item.type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + this._container.classList.add("markedContent"); + if (item.id !== null) { + this._container.setAttribute("id", `${item.id}`); + } + parent.append(this._container); + } else if (item.type === "endMarkedContent") { + this._container = this._container.parentNode; + } + continue; + } + this._textContentItemsStr.push(item.str); + appendText(this, item, styleCache); + } + } + _layoutText(textDiv) { + const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv); + this._layoutTextParams.div = textDiv; + layout(this._layoutTextParams); + if (textDivProperties.hasText) { + this._container.append(textDiv); + } + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + this._container.append(br); + } + } + _render() { + const capability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + let styleCache = Object.create(null); + if (this._isReadableStream) { + 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._textContentSource.getReader(); + pump(); + } else if (this._textContentSource) { + const { + items, + styles + } = this._textContentSource; + this._processItems(items, styles); + capability.resolve(); + } else { + throw new Error('No "textContentSource" parameter specified.'); + } + capability.promise.then(() => { + styleCache = null; + render(this); + }, this._capability.reject); + } +} +function renderTextLayer(params) { + const task = new TextLayerRenderTask(params); + task._render(); + return task; +} +function updateTextLayer({ + container, + viewport, + textDivs, + textDivProperties, + isOffscreenCanvasSupported, + mustRotate = true, + mustRescale = true +}) { + if (mustRotate) { + (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.setLayerDimensions)(container, { + rotation: viewport.rotation + }); + } + if (mustRescale) { + const ctx = getCtx(0, isOffscreenCanvasSupported); + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const params = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale, + properties: null, + ctx + }; + for (const div of textDivs) { + params.properties = textDivProperties.get(div); + params.div = div; + layout(params); + } + } +} + + +/***/ }), + +/***/ 92: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ PDFDataTransportStream: () => (/* binding */ PDFDataTransportStream) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(473); + + +class PDFDataTransportStream { + constructor({ + length, + initialData, + progressiveDone = false, + contentDispositionFilename = null, + disableRange = false, + disableStream = false + }, pdfDataRangeTransport) { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); + this._queuedChunks = []; + this._progressiveDone = progressiveDone; + this._contentDispositionFilename = contentDispositionFilename; + if (initialData?.length > 0) { + const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer; + this._queuedChunks.push(buffer); + } + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isStreamingSupported = !disableStream; + this._isRangeSupported = !disableRange; + this._contentLength = 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({ + begin, + chunk + }) { + const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer; + if (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 !== begin) { + return false; + } + rangeReader._enqueue(buffer); + return true; + }); + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); + } + } + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + _onProgress(evt) { + if (evt.total === undefined) { + this._rangeReaders[0]?.onProgress?.({ + loaded: evt.loaded + }); + } else { + this._fullRequestReader?.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + } + } + _onProgressiveDone() { + this._fullRequestReader?.progressiveDone(); + this._progressiveDone = true; + } + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + getFullReader() { + (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.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) { + this._fullRequestReader?.cancel(reason); + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + this._pdfDataRangeTransport.abort(); + } +} +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { + this._stream = stream; + this._done = progressiveDone || false; + this._filename = (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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 = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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); + } +} + + +/***/ }), + +/***/ 368: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ GlobalWorkerOptions: () => (/* binding */ GlobalWorkerOptions) +/* harmony export */ }); +const GlobalWorkerOptions = Object.create(null); +GlobalWorkerOptions.workerPort = null; +GlobalWorkerOptions.workerSrc = ""; + + +/***/ }), + +/***/ 160: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ XfaLayer: () => (/* binding */ XfaLayer) +/* harmony export */ }); +/* harmony import */ var _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(521); + +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) { + html.setAttribute("value", storedData.value); + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } else if (option.attributes.hasOwnProperty("selected")) { + delete option.attributes.selected; + } + } + } + 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) { + continue; + } + switch (key) { + case "class": + if (value.length) { + html.setAttribute(key, value.join(" ")); + } + break; + case "dataId": + break; + case "id": + html.setAttribute("data-element-id", value); + break; + case "style": + Object.assign(html.style, value); + break; + case "textContent": + html.textContent = value; + break; + default: + if (!isHTMLAnchorElement || key !== "href" && key !== "newWindow") { + html.setAttribute(key, 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 isNotForRichText = intent !== "richText"; + const rootDiv = parameters.div; + rootDiv.append(rootHtml); + if (parameters.viewport) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + } + if (isNotForRichText) { + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + } + const textDivs = []; + if (root.children.length === 0) { + if (root.value) { + const node = document.createTextNode(root.value); + rootHtml.append(node); + if (isNotForRichText && _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__.XfaText.shouldBuildText(root.name)) { + textDivs.push(node); + } + } + return { + textDivs + }; + } + const stack = [[root, -1, rootHtml]]; + while (stack.length > 0) { + const [parent, i, html] = stack.at(-1); + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + const child = parent.children[++stack.at(-1)[1]]; + if (child === null) { + continue; + } + const { + name + } = child; + if (name === "#text") { + const node = document.createTextNode(child.value); + textDivs.push(node); + html.append(node); + continue; + } + const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name); + html.append(childHtml); + if (child.attributes) { + this.setAttributes({ + html: childHtml, + element: child, + storage, + intent, + linkService + }); + } + if (child.children?.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + const node = document.createTextNode(child.value); + if (isNotForRichText && _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__.XfaText.shouldBuildText(name)) { + textDivs.push(node); + } + childHtml.append(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; + } +} + + +/***/ }), + +/***/ 521: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ XfaText: () => (/* binding */ XfaText) +/* harmony export */ }); +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"); + } +} + + +/***/ }), + +/***/ 907: +/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ AbortException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException), +/* harmony export */ AnnotationEditorLayer: () => (/* reexport safe */ _display_editor_annotation_editor_layer_js__WEBPACK_IMPORTED_MODULE_4__.AnnotationEditorLayer), +/* harmony export */ AnnotationEditorParamsType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType), +/* harmony export */ AnnotationEditorType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType), +/* harmony export */ AnnotationEditorUIManager: () => (/* reexport safe */ _display_editor_tools_js__WEBPACK_IMPORTED_MODULE_5__.AnnotationEditorUIManager), +/* harmony export */ AnnotationLayer: () => (/* reexport safe */ _display_annotation_layer_js__WEBPACK_IMPORTED_MODULE_6__.AnnotationLayer), +/* harmony export */ AnnotationMode: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode), +/* harmony export */ CMapCompressionType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType), +/* harmony export */ DOMSVGFactory: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMSVGFactory), +/* harmony export */ FeatureTest: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest), +/* harmony export */ GlobalWorkerOptions: () => (/* reexport safe */ _display_worker_options_js__WEBPACK_IMPORTED_MODULE_7__.GlobalWorkerOptions), +/* harmony export */ ImageKind: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.ImageKind), +/* harmony export */ InvalidPDFException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.InvalidPDFException), +/* harmony export */ MissingPDFException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException), +/* harmony export */ OPS: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.OPS), +/* harmony export */ PDFDataRangeTransport: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.PDFDataRangeTransport), +/* harmony export */ PDFDateString: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PDFDateString), +/* harmony export */ PDFWorker: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.PDFWorker), +/* harmony export */ PasswordResponses: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordResponses), +/* harmony export */ PermissionFlag: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PermissionFlag), +/* harmony export */ PixelsPerInch: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PixelsPerInch), +/* harmony export */ PromiseCapability: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability), +/* harmony export */ RenderingCancelledException: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException), +/* harmony export */ UnexpectedResponseException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException), +/* harmony export */ Util: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util), +/* harmony export */ VerbosityLevel: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.VerbosityLevel), +/* harmony export */ XfaLayer: () => (/* reexport safe */ _display_xfa_layer_js__WEBPACK_IMPORTED_MODULE_8__.XfaLayer), +/* harmony export */ build: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.build), +/* harmony export */ createValidAbsoluteUrl: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.createValidAbsoluteUrl), +/* harmony export */ getDocument: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.getDocument), +/* harmony export */ getFilenameFromUrl: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getFilenameFromUrl), +/* harmony export */ getPdfFilenameFromUrl: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getPdfFilenameFromUrl), +/* harmony export */ getXfaPageViewport: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getXfaPageViewport), +/* harmony export */ isDataScheme: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isDataScheme), +/* harmony export */ isPdfFile: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isPdfFile), +/* harmony export */ noContextMenu: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.noContextMenu), +/* harmony export */ normalizeUnicode: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeUnicode), +/* harmony export */ renderTextLayer: () => (/* reexport safe */ _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__.renderTextLayer), +/* harmony export */ setLayerDimensions: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.setLayerDimensions), +/* harmony export */ shadow: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow), +/* harmony export */ updateTextLayer: () => (/* reexport safe */ _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__.updateTextLayer), +/* harmony export */ version: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.version) +/* harmony export */ }); +/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); +/* harmony import */ var _display_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(406); +/* harmony import */ var _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(473); +/* harmony import */ var _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(739); +/* harmony import */ var _display_editor_annotation_editor_layer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(331); +/* harmony import */ var _display_editor_tools_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(812); +/* harmony import */ var _display_annotation_layer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(640); +/* harmony import */ var _display_worker_options_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(368); +/* harmony import */ var _display_xfa_layer_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(160); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_display_api_js__WEBPACK_IMPORTED_MODULE_1__]); +_display_api_js__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; + + + + + + + + + +const pdfjsVersion = '4.0.189'; +const pdfjsBuild = '50f52b43a'; + +__webpack_async_result__(); +} catch(e) { __webpack_async_result__(e); } }); + +/***/ }), + +/***/ 694: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ MessageHandler: () => (/* binding */ MessageHandler) +/* harmony export */ }); +/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); + +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_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + switch (reason.name) { + case "AbortException": + return new _util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(reason.message); + case "MissingPDFException": + return new _util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(reason.message); + case "PasswordException": + return new _util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(reason.message, reason.code); + case "UnexpectedResponseException": + return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException(reason.message, reason.status); + case "UnknownErrorException": + return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(reason.message, reason.details); + default: + return new _util_js__WEBPACK_IMPORTED_MODULE_0__.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 = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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 = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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 = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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 = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(); + 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_js__WEBPACK_IMPORTED_MODULE_0__.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: new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(), + 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?.()); + }).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_js__WEBPACK_IMPORTED_MODULE_0__.assert)(streamController, "enqueue should have stream controller"); + if (streamController.isClosed) { + break; + } + streamController.controller.enqueue(data.chunk); + break; + case StreamKind.CLOSE: + (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.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_js__WEBPACK_IMPORTED_MODULE_0__.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?.(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?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]); + delete this.streamControllers[streamId]; + } + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } +} + + +/***/ }), + +/***/ 825: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ MurmurHash3_64: () => (/* binding */ MurmurHash3_64) +/* harmony export */ }); +/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266); + +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_js__WEBPACK_IMPORTED_MODULE_0__.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; + return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).padStart(8, "0"); + } +} + + +/***/ }), + +/***/ 266: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ AbortException: () => (/* binding */ AbortException), +/* harmony export */ AnnotationBorderStyleType: () => (/* binding */ AnnotationBorderStyleType), +/* harmony export */ AnnotationEditorParamsType: () => (/* binding */ AnnotationEditorParamsType), +/* harmony export */ AnnotationEditorPrefix: () => (/* binding */ AnnotationEditorPrefix), +/* harmony export */ AnnotationEditorType: () => (/* binding */ AnnotationEditorType), +/* harmony export */ AnnotationMode: () => (/* binding */ AnnotationMode), +/* harmony export */ AnnotationPrefix: () => (/* binding */ AnnotationPrefix), +/* harmony export */ AnnotationType: () => (/* binding */ AnnotationType), +/* harmony export */ BaseException: () => (/* binding */ BaseException), +/* harmony export */ CMapCompressionType: () => (/* binding */ CMapCompressionType), +/* harmony export */ FONT_IDENTITY_MATRIX: () => (/* binding */ FONT_IDENTITY_MATRIX), +/* harmony export */ FeatureTest: () => (/* binding */ FeatureTest), +/* harmony export */ FormatError: () => (/* binding */ FormatError), +/* harmony export */ IDENTITY_MATRIX: () => (/* binding */ IDENTITY_MATRIX), +/* harmony export */ ImageKind: () => (/* binding */ ImageKind), +/* harmony export */ InvalidPDFException: () => (/* binding */ InvalidPDFException), +/* harmony export */ LINE_FACTOR: () => (/* binding */ LINE_FACTOR), +/* harmony export */ MAX_IMAGE_SIZE_TO_CACHE: () => (/* binding */ MAX_IMAGE_SIZE_TO_CACHE), +/* harmony export */ MissingPDFException: () => (/* binding */ MissingPDFException), +/* harmony export */ OPS: () => (/* binding */ OPS), +/* harmony export */ PasswordException: () => (/* binding */ PasswordException), +/* harmony export */ PasswordResponses: () => (/* binding */ PasswordResponses), +/* harmony export */ PermissionFlag: () => (/* binding */ PermissionFlag), +/* harmony export */ PromiseCapability: () => (/* binding */ PromiseCapability), +/* harmony export */ RenderingIntentFlag: () => (/* binding */ RenderingIntentFlag), +/* harmony export */ TextRenderingMode: () => (/* binding */ TextRenderingMode), +/* harmony export */ UnexpectedResponseException: () => (/* binding */ UnexpectedResponseException), +/* harmony export */ UnknownErrorException: () => (/* binding */ UnknownErrorException), +/* harmony export */ Util: () => (/* binding */ Util), +/* harmony export */ VerbosityLevel: () => (/* binding */ VerbosityLevel), +/* harmony export */ assert: () => (/* binding */ assert), +/* harmony export */ bytesToString: () => (/* binding */ bytesToString), +/* harmony export */ createValidAbsoluteUrl: () => (/* binding */ createValidAbsoluteUrl), +/* harmony export */ getUuid: () => (/* binding */ getUuid), +/* harmony export */ getVerbosityLevel: () => (/* binding */ getVerbosityLevel), +/* harmony export */ info: () => (/* binding */ info), +/* harmony export */ isArrayBuffer: () => (/* binding */ isArrayBuffer), +/* harmony export */ isNodeJS: () => (/* binding */ isNodeJS), +/* harmony export */ normalizeUnicode: () => (/* binding */ normalizeUnicode), +/* harmony export */ objectFromMap: () => (/* binding */ objectFromMap), +/* harmony export */ setVerbosityLevel: () => (/* binding */ setVerbosityLevel), +/* harmony export */ shadow: () => (/* binding */ shadow), +/* harmony export */ string32: () => (/* binding */ string32), +/* harmony export */ stringToBytes: () => (/* binding */ stringToBytes), +/* harmony export */ unreachable: () => (/* binding */ unreachable), +/* harmony export */ warn: () => (/* binding */ warn) +/* harmony export */ }); +/* unused harmony exports AnnotationActionEventType, AnnotationFieldFlag, AnnotationFlag, AnnotationReplyType, BASELINE_FACTOR, DocumentActionEventType, getModificationDate, isArrayEqual, LINE_DESCENT_FACTOR, objectSize, PageActionEventType, stringToPDFString, stringToUTF8String, utf8StringToString */ +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +const MAX_IMAGE_SIZE_TO_CACHE = 10e6; +const LINE_FACTOR = 1.35; +const LINE_DESCENT_FACTOR = 0.35; +const BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + SAVE: 0x08, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 +}; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +const AnnotationEditorPrefix = "pdfjs_internal_editor_"; +const AnnotationEditorType = { + DISABLE: -1, + NONE: 0, + FREETEXT: 3, + STAMP: 13, + INK: 15 +}; +const AnnotationEditorParamsType = { + RESIZE: 1, + CREATE: 2, + FREETEXT_SIZE: 11, + FREETEXT_COLOR: 12, + FREETEXT_OPACITY: 13, + INK_COLOR: 21, + INK_THICKNESS: 22, + INK_OPACITY: 23 +}; +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 +}; +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 +}; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +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 +}; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +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 +}; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +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" +}; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +const CMapCompressionType = { + NONE: 0, + BINARY: 1 +}; +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, + beginAnnotation: 80, + endAnnotation: 81, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91 +}; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +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) { + 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?.length >= 2) { + url = `http://${url}`; + } + } + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch {} + } + } + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + if (_isValidProtocol(absoluteUrl)) { + return absoluteUrl; + } + } catch {} + return null; +} +function shadow(obj, prop, value, nonSerializable = false) { + Object.defineProperty(obj, prop, { + value, + enumerable: !nonSerializable, + 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; +}(); +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); + this.code = code; + } +} +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); + this.details = details; + } +} +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); + } +} +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); + } +} +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); + this.status = status; + } +} +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); + } +} +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); + } +} +function bytesToString(bytes) { + if (typeof bytes !== "object" || 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 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 { + 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"); + } + static get platform() { + if (typeof navigator !== "undefined" && typeof navigator?.platform === "string") { + return shadow(this, "platform", { + isMac: navigator.platform.includes("Mac") + }); + } + return shadow(this, "platform", { + isMac: false + }); + } + static get isCSSRoundSupported() { + return shadow(this, "isCSSRoundSupported", globalThis.CSS?.supports?.("width: round(1.5px, 1px)")); + } +} +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 = this.applyTransform(r, m); + const p2 = this.applyTransform(r.slice(2, 4), m); + const p3 = this.applyTransform([r[0], r[3]], m); + const p4 = this.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 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])]; + } +} +const PDFStringTranslateTable = (/* unused pure expression or super */ null && ([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 stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} +function isArrayBuffer(v) { + return typeof v === "object" && 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(""); +} +class PromiseCapability { + #settled = false; + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = data => { + this.#settled = true; + resolve(data); + }; + this.reject = reason => { + this.#settled = true; + reject(reason); + }; + }); + } + get settled() { + return this.#settled; + } +} +let NormalizeRegex = null; +let NormalizationMap = null; +function normalizeUnicode(str) { + if (!NormalizeRegex) { + NormalizeRegex = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu; + NormalizationMap = new Map([["ſt", "ſt"]]); + } + return str.replaceAll(NormalizeRegex, (_, p1, p2) => { + return p1 ? p1.normalize("NFKC") : NormalizationMap.get(p2); + }); +} +function getUuid() { + if (typeof crypto !== "undefined" && typeof crypto?.randomUUID === "function") { + return crypto.randomUUID(); + } + const buf = new Uint8Array(32); + if (typeof crypto !== "undefined" && typeof crypto?.getRandomValues === "function") { + crypto.getRandomValues(buf); + } else { + for (let i = 0; i < 32; i++) { + buf[i] = Math.floor(Math.random() * 255); + } + } + return bytesToString(buf); +} +const AnnotationPrefix = "pdfjs_internal_id_"; + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_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, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/async module */ +/******/ (() => { +/******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__"; +/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__"; +/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__"; +/******/ var resolveQueue = (queue) => { +/******/ if(queue && queue.d < 1) { +/******/ queue.d = 1; +/******/ queue.forEach((fn) => (fn.r--)); +/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn())); +/******/ } +/******/ } +/******/ var wrapDeps = (deps) => (deps.map((dep) => { +/******/ if(dep !== null && typeof dep === "object") { +/******/ if(dep[webpackQueues]) return dep; +/******/ if(dep.then) { +/******/ var queue = []; +/******/ queue.d = 0; +/******/ dep.then((r) => { +/******/ obj[webpackExports] = r; +/******/ resolveQueue(queue); +/******/ }, (e) => { +/******/ obj[webpackError] = e; +/******/ resolveQueue(queue); +/******/ }); +/******/ var obj = {}; +/******/ obj[webpackQueues] = (fn) => (fn(queue)); +/******/ return obj; +/******/ } +/******/ } +/******/ var ret = {}; +/******/ ret[webpackQueues] = x => {}; +/******/ ret[webpackExports] = dep; +/******/ return ret; +/******/ })); +/******/ __webpack_require__.a = (module, body, hasAwait) => { +/******/ var queue; +/******/ hasAwait && ((queue = []).d = -1); +/******/ var depQueues = new Set(); +/******/ var exports = module.exports; +/******/ var currentDeps; +/******/ var outerResolve; +/******/ var reject; +/******/ var promise = new Promise((resolve, rej) => { +/******/ reject = rej; +/******/ outerResolve = resolve; +/******/ }); +/******/ promise[webpackExports] = exports; +/******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {})); +/******/ module.exports = promise; +/******/ body((deps) => { +/******/ currentDeps = wrapDeps(deps); +/******/ var fn; +/******/ var getResult = () => (currentDeps.map((d) => { +/******/ if(d[webpackError]) throw d[webpackError]; +/******/ return d[webpackExports]; +/******/ })) +/******/ var promise = new Promise((resolve) => { +/******/ fn = () => (resolve(getResult)); +/******/ fn.r = 0; +/******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)))); +/******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue))); +/******/ }); +/******/ return fn.r ? promise : getResult(); +/******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue))); +/******/ queue && queue.d < 0 && (queue.d = 0); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module used 'module' so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(907); +/******/ __webpack_exports__ = globalThis.pdfjsLib = await __webpack_exports__; +/******/ var __webpack_exports__AbortException = __webpack_exports__.AbortException; +/******/ var __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer; +/******/ var __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType; +/******/ var __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType; +/******/ var __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager; +/******/ var __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer; +/******/ var __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode; +/******/ var __webpack_exports__CMapCompressionType = __webpack_exports__.CMapCompressionType; +/******/ var __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory; +/******/ var __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest; +/******/ var __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions; +/******/ var __webpack_exports__ImageKind = __webpack_exports__.ImageKind; +/******/ var __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException; +/******/ var __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException; +/******/ var __webpack_exports__OPS = __webpack_exports__.OPS; +/******/ var __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport; +/******/ var __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString; +/******/ var __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker; +/******/ var __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses; +/******/ var __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag; +/******/ var __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch; +/******/ var __webpack_exports__PromiseCapability = __webpack_exports__.PromiseCapability; +/******/ var __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException; +/******/ var __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException; +/******/ var __webpack_exports__Util = __webpack_exports__.Util; +/******/ var __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel; +/******/ var __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer; +/******/ var __webpack_exports__build = __webpack_exports__.build; +/******/ var __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl; +/******/ var __webpack_exports__getDocument = __webpack_exports__.getDocument; +/******/ var __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl; +/******/ var __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl; +/******/ var __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport; +/******/ var __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme; +/******/ var __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile; +/******/ var __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu; +/******/ var __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode; +/******/ var __webpack_exports__renderTextLayer = __webpack_exports__.renderTextLayer; +/******/ var __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions; +/******/ var __webpack_exports__shadow = __webpack_exports__.shadow; +/******/ var __webpack_exports__updateTextLayer = __webpack_exports__.updateTextLayer; +/******/ var __webpack_exports__version = __webpack_exports__.version; +/******/ export { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__CMapCompressionType as CMapCompressionType, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__PromiseCapability as PromiseCapability, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__renderTextLayer as renderTextLayer, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__updateTextLayer as updateTextLayer, __webpack_exports__version as version }; +/******/ + +//# sourceMappingURL=pdf.mjs.map \ No newline at end of file diff --git a/folkugat_web/assets/static/js/pdf/pdf.mjs.map b/folkugat_web/assets/static/js/pdf/pdf.mjs.map new file mode 100644 index 0000000..b88831e --- /dev/null +++ b/folkugat_web/assets/static/js/pdf/pdf.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.mjs","mappings":"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I,CAAR,EAAWA,CAAA,GAAI,EAApB,EAAwBA,CAAA,EAAxB,EAA6B;MAC3ByjF,GAAA,CAAIzjF,CAAJ,IAAS5c,IAAA,CAAKC,KAAL,CAAWD,IAAA,CAAKugG,MAAL,KAAgB,GAA3B,CAAT;IAD2B;EADxB;EAKP,OAAO5hB,aAAA,CAAc0hB,GAAd,CAAP;AAlBiB;AAqBnB,MAAM99F,gBAAA,GAAmB,oBAAzB;;;;;;;SCzhCA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,IAAI;UACJ;UACA;UACA,IAAI;UACJ;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,CAAC;UACD;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,EAAE;UACF;UACA,sGAAsG;UACtG;UACA;UACA;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA,EAAE;UACF;UACA;;;;;UChEA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;SEAA;SACA;SACA;SACA","sources":["webpack://pdf.js/src/shared/scripting_utils.js","webpack://pdf.js/src/display/annotation_layer.js","webpack://pdf.js/src/display/annotation_storage.js","webpack://pdf.js/src/display/api.js","webpack://pdf.js/src/display/base_factory.js","webpack://pdf.js/src/display/pattern_helper.js","webpack://pdf.js/src/shared/image_utils.js","webpack://pdf.js/src/display/canvas.js","webpack://pdf.js/src/display/display_utils.js","webpack://pdf.js/src/display/editor/freetext.js","webpack://pdf.js/src/display/editor/ink.js","webpack://pdf.js/src/display/editor/stamp.js","webpack://pdf.js/src/display/editor/annotation_editor_layer.js","webpack://pdf.js/src/display/editor/editor.js","webpack://pdf.js/src/display/editor/tools.js","webpack://pdf.js/src/display/fetch_stream.js","webpack://pdf.js/src/display/font_loader.js","webpack://pdf.js/src/display/metadata.js","webpack://pdf.js/src/display/network.js","webpack://pdf.js/src/display/content_disposition.js","webpack://pdf.js/src/display/network_utils.js","webpack://pdf.js/src/display/node_stream.js","webpack://pdf.js/src/display/node_utils.js","webpack://pdf.js/src/display/optional_content_config.js","webpack://pdf.js/src/display/text_layer.js","webpack://pdf.js/src/display/transport_stream.js","webpack://pdf.js/src/display/worker_options.js","webpack://pdf.js/src/display/xfa_layer.js","webpack://pdf.js/src/display/xfa_text.js","webpack://pdf.js/src/pdf.js","webpack://pdf.js/src/shared/message_handler.js","webpack://pdf.js/src/shared/murmurhash3.js","webpack://pdf.js/src/shared/util.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/webpack/runtime/async module","webpack://pdf.js/webpack/runtime/define property getters","webpack://pdf.js/webpack/runtime/hasOwnProperty shorthand","webpack://pdf.js/webpack/before-startup","webpack://pdf.js/webpack/startup","webpack://pdf.js/webpack/after-startup"],"sourcesContent":["/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static T_rgb() {\n return [null];\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_rgb([c, y, m, k]) {\n return [\n scaleAndClamp(1 - Math.min(1, c + k)),\n scaleAndClamp(1 - Math.min(1, m + k)),\n scaleAndClamp(1 - Math.min(1, y + k)),\n ];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\nexport { ColorConverters };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationEditorType,\n AnnotationPrefix,\n AnnotationType,\n FeatureTest,\n LINE_FACTOR,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n #hasBorder = false;\n\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n\n static _hasPopupData({ titleObj, contentsObj, richText }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLElement} A section element.\n */\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: { page, viewport },\n } = this;\n\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n\n // The accessibility manager will move the annotation in the DOM in\n // order to match the visual ordering.\n // But if an annotation is above an other one, then we must draw it\n // after the other one whatever the order is in the DOM, hence the\n // use of the z-index.\n container.style.zIndex = this.parent.zIndex++;\n\n if (this.data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const { rotation } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n\n const { width, height } = getRectDims(data.rect);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n container.style.borderColor = Util.makeHexColor(\n borderColor[0] | 0,\n borderColor[1] | 0,\n borderColor[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n const { rotation } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${(100 * width) / pageWidth}%`;\n container.style.height = `${(100 * height) / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n const { width, height } = getRectDims(this.data.rect);\n\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = (100 * width) / pageWidth;\n elementHeight = (100 * height) / pageHeight;\n } else {\n elementWidth = (100 * height) / pageWidth;\n elementHeight = (100 * width) / pageHeight;\n }\n\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] =\n ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n });\n };\n\n return shadow(this, \"_commonActions\", {\n display: event => {\n const { display } = event.detail;\n // See scripting/constants.js for the values of `Display`.\n // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print,\n });\n },\n hidden: event => {\n const { hidden } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle,\n });\n },\n });\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail,\n },\n target: element,\n };\n action(eventProxy);\n // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @memberof AnnotationElement\n */\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const { quadPoints } = this.data;\n if (!quadPoints) {\n return;\n }\n\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n\n if (quadPoints.length === 1) {\n const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\n if (\n rectTrX === trX &&\n rectTrY === trY &&\n rectBlX === blX &&\n rectBlY === blY\n ) {\n // The quadpoints cover the whole annotation rectangle, so no need to\n // create a quadrilateral.\n return;\n }\n }\n\n const { style } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const { borderColor, borderWidth } = style;\n style.borderWidth = 0;\n svgBuffer = [\n \"url('data:image/svg+xml;utf8,\",\n ``,\n ``,\n ];\n this.container.classList.add(\"hasBorder\");\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasClipPath\");\n }\n\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n\n const { svgFactory } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n\n for (const [, { x: trX, y: trY }, { x: blX, y: blY }] of quadPoints) {\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(\n ``\n );\n }\n\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @memberof AnnotationElement\n */\n _createPopup() {\n const { container, data } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n\n const popup = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n },\n parent: this.parent,\n elements: [this],\n });\n this.parent.div.append(popup.render());\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.querySelector(\n `[data-element-id=\"${id}\"]`\n );\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { exportValue } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n\n /**\n * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n *\n * @public\n * @memberof AnnotationElement\n * @returns {Array|HTMLElement} An array of elements or an\n * element.\n */\n getElementsToTriggerPopup() {\n return this.container;\n }\n\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n\n get _isEditable() {\n return false;\n }\n\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: { id: editId },\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n });\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n this.#setInternalLink();\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind attachments to the link element.\n * @param {Object} link\n * @param {Object} attachment\n * @param {str} [dest]\n */\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(\n attachment.content,\n attachment.filename,\n dest\n );\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind SetOCGState actions to the link element.\n * @param {Object} link\n * @param {Object} action\n */\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n otherClickAction?.();\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n }\n\n render() {\n this.container.classList.add(\"textAnnotation\");\n\n const image = document.createElement(\"img\");\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({ type: this.data.name })\n );\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.append(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n\n _getKeyModifier(event) {\n return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non-mouse events\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n\n if (!valueGetter) {\n return;\n }\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n },\n });\n });\n }\n }\n\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= { focused: false };\n }\n this._setEventListener(\n element,\n elementData,\n baseName,\n eventName,\n getter\n );\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n // Ensure that elementData will have the correct value.\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontColor } = this.data.defaultAppearanceData;\n const fontSize =\n this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n\n // We don't use the font, as specified in the PDF document, for the \n // element. Hence using the original `fontSize` could look bad, which is why\n // it's instead based on the field height.\n // If the height is \"big\" then it could lead to a too big font size\n // so in this case use the one we've in the pdf (hence the min).\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(lineHeight / LINE_FACTOR)\n );\n } else {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(height / LINE_FACTOR)\n );\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n parameters.data.hasOwnCanvas ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.classList.add(\"textWidgetAnnotation\");\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen,\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n\n let fieldFormattedValues =\n storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false,\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n this._setRequired(element, this.data.required);\n\n if (maxLen) {\n element.maxLength = maxLen;\n }\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n elementData.formattedValue = null;\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const { target } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n elementData.focused = true;\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue,\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const { charLimit } = event.detail;\n const { target } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, { value });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd,\n },\n });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n // If the key is one of Escape, Enter then the data are committed.\n // If we've a Tab then data will be committed on blur.\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n // When we've a multiline field, \"Enter\" key is a key as the other\n // hence we don't commit the data (Acrobat behaves the same way)\n // (see issue #15627).\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const { value } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n // Save the entered value\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n const { value } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n\n // We handle the event ourselves.\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n elementData,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const { options, multiple } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n let selectedValues = getValue(/* isExport */ false);\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n selectedValues = getValue(/* isExport */ false);\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(/* isExport */ true);\n storage.setValue(id, { value: exportValue });\n\n event.preventDefault();\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n null,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n [\"input\", \"Validate\"],\n ],\n event => event.target.value\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(/* isExport */ true) });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {\n // Just use the default font size...\n // it's a bit hard to guess what is a good size.\n }\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const { data, elements } = parameters;\n super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\n this.elements = elements;\n }\n\n render() {\n this.container.classList.add(\"popupAnnotation\");\n\n const popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n });\n\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n\n this.container.setAttribute(\n \"aria-controls\",\n elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n );\n\n return this.container;\n }\n}\n\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n\n #boundHide = this.#hide.bind(this);\n\n #boundShow = this.#show.bind(this);\n\n #boundToggle = this.#toggle.bind(this);\n\n #color = null;\n\n #container = null;\n\n #contentsObj = null;\n\n #dateObj = null;\n\n #elements = null;\n\n #parent = null;\n\n #parentRect = null;\n\n #pinned = false;\n\n #popup = null;\n\n #rect = null;\n\n #richText = null;\n\n #titleObj = null;\n\n #wasVisible = false;\n\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n\n // Attach the event listener to toggle the popup with the keyboard.\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // Since the popup is lazily created, we need to ensure that it'll be\n // created and displayed during reference tests.\n this.#parent.popupShow.push(async () => {\n if (this.#container.hidden) {\n this.#show();\n }\n });\n }\n }\n\n render() {\n if (this.#popup) {\n return;\n }\n\n const {\n page: { view },\n viewport: {\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n },\n } = this.#parent;\n const popup = (this.#popup = document.createElement(\"div\"));\n popup.className = \"popup\";\n\n if (this.#color) {\n const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n ...this.#color\n ));\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")\n ) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n // color-mix isn't supported in some browsers hence this version.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n // TODO: Use color-mix when it's supported everywhere.\n // Enlighten the color.\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(\n ...this.#color.map(c =>\n Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\n )\n );\n }\n }\n\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n popup.append(header);\n\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\n \"data-l10n-id\",\n \"pdfjs-annotation-date-string\"\n );\n modificationDate.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({\n date: this.#dateObj.toLocaleDateString(),\n time: this.#dateObj.toLocaleTimeString(),\n })\n );\n header.append(modificationDate);\n }\n\n const contentsObj = this.#contentsObj;\n const richText = this.#richText;\n if (\n richText?.str &&\n (!contentsObj?.str || contentsObj.str === richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(contentsObj);\n popup.append(contents);\n }\n\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n\n const normalizedRect = Util.normalizeRect([\n rect[0],\n view[3] - rect[1] + view[1],\n rect[2],\n view[3] - rect[3] + view[1],\n ]);\n\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect\n ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n\n const { style } = this.#container;\n style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n this.#container.append(popup);\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n this.#toggle();\n }\n }\n\n /**\n * Toggle the visibility of the popup.\n */\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n\n /**\n * Show the popup.\n */\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#container.hidden = false;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n\n /**\n * Hide the popup.\n */\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) - 1000;\n }\n\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this._editOnDoubleClick();\n\n return this.container;\n }\n\n get _isEditable() {\n return this.data.hasOwnCanvas;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"lineAnnotation\");\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = (this.#line = this.svgFactory.createElement(\"svg:line\"));\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.append(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#line;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"squareAnnotation\");\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = (this.#square = this.svgFactory.createElement(\"svg:rect\"));\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.append(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#square;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"circleAnnotation\");\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = (this.#circle =\n this.svgFactory.createElement(\"svg:ellipse\"));\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.append(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = (this.#polyline = this.svgFactory.createElement(\n this.svgElementName\n ));\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.append(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"caretAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = AnnotationEditorType.INK;\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"stampAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content,\n });\n }\n\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n\n const { container, data } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n // Unfortunately it seems that it's not clearly specified exactly what\n // names are actually valid, since Table 184 contains:\n // Conforming readers shall provide predefined icon appearances for at\n // least the following standard names: GraphPushPin, PaperclipTag.\n // Additional names may be supported as well. Default value: PushPin.\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${\n /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n }.svg`;\n\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(\n data.fillAlpha * 100\n )}%);`;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasFillAlpha\");\n }\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n\n const { isMac } = FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n\n container.append(trigger);\n return container;\n }\n\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n\n /**\n * Download the file attachment associated with this annotation.\n */\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Object> | null} [fieldObjects]\n * @property {Map} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n #accessibilityManager = null;\n\n #annotationCanvasMap = null;\n\n #editableAnnotations = new Map();\n\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n page,\n viewport,\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"showPopups\", {\n value: async () => {\n for (const show of this.popupShow) {\n await show();\n }\n },\n });\n this.popupShow = [];\n }\n }\n\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(\n this.div,\n element,\n contentElement,\n /* isRemovable = */ false\n );\n }\n\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n async render(params) {\n const { annotations } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null,\n };\n\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue; // Ignore empty annotations.\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n // Ignore popup annotations without a corresponding annotation.\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n\n if (!element.isRenderable) {\n continue;\n }\n\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n }\n\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n }\n\n this.#setAnnotationCanvasMap();\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @param {AnnotationLayerParameters} viewport\n * @memberof AnnotationLayer\n */\n update({ viewport }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, { rotation: viewport.rotation });\n\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\nexport {\n AnnotationLayer,\n FreeTextAnnotationElement,\n InkAnnotationElement,\n StampAnnotationElement,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n #modified = false;\n\n #storage = new Map();\n\n constructor() {\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Get the value for a given key.\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this.#storage.get(key);\n }\n\n /**\n * Remove a value from the storage.\n * @param {string} key\n */\n remove(key) {\n this.#storage.delete(key);\n\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n\n /**\n * Set the value for a given key\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n\n if (\n value instanceof AnnotationEditor &&\n typeof this.onAnnotationEditor === \"function\"\n ) {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n\n /**\n * Check if the storage contains the given key.\n * @param {string} key\n * @returns {boolean}\n */\n has(key) {\n return this.#storage.has(key);\n }\n\n /**\n * @returns {Object | null}\n */\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n\n /**\n * @param {Object} obj\n */\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n\n get size() {\n return this.#storage.size;\n }\n\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n\n for (const [key, val] of this.#storage) {\n const serialized =\n val instanceof AnnotationEditor\n ? val.serialize(/* isForCopying = */ false, context)\n : val;\n if (serialized) {\n map.set(key, serialized);\n\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n\n if (hasBitmap) {\n // We must transfer the bitmap data separately, since it can be changed\n // during serialization with SVG images.\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n\n return map.size > 0\n ? { map, hash: hash.hexdigest(), transfer }\n : SerializableEmpty;\n }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n\n constructor(parent) {\n super();\n const { map, hash, transfer } = parent.serializable;\n // Create a *copy* of the data, since Objects are passed by reference in JS.\n const clone = structuredClone(map, transfer ? { transfer } : null);\n\n this.#serializable = { map: clone, hash, transfer };\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n // eslint-disable-next-line getter-return\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this.#serializable;\n }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isNodeJS,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeFilterFactory\n : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n cMapUrl &&\n standardFontDataUrl &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\n canvasFactory,\n filterFactory,\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n });\n }\n\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n const createPDFNetworkStream = params => {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS\n ) {\n return new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n throw new Error(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = new PromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new PromiseCapability();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\n */\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this._transport.getXRefPrevValue();\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this._transport.getAnnotArray(pageIndex);\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree.\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n * normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n * Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n * to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n\n #pendingCleanup = false;\n\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n return this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n this._stats?.time(\"Overall\");\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render...\n this.#pendingCleanup = false;\n // ... and ensure that a delayed cleanup is always aborted.\n this.#abortDelayedCleanup();\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup immediately once rendering has finished.\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(/* delayed = */ !intentPrint);\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\"Not implemented: getOperatorList\");\n }\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(/* delayed = */ false);\n\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n * performance in documents with large images.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(/* delayed = */ false);\n }, DELAYED_CLEANUP_TIMEOUT);\n\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(/* delayed = */ true);\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n const { map, transfer } = annotationStorageSerializable;\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n },\n transfer\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(/* delayed = */ true);\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n * otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n #listeners = new Set();\n\n #deferred = Promise.resolve();\n\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? { transfer } : null),\n };\n\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (isNodeJS) {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.mjs\";\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts;\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = new PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n port\n ) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _initializeFromPort\");\n }\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker.#mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n const worker = new Worker(workerSrc, { type: \"module\" });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: fromPort\");\n }\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\n \"PDFWorker.fromPort - the worker is being destroyed.\\n\" +\n \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n );\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n // The worker was already loaded using e.g. a ` + +
+ + + + + + + +
+ + + + +
+
+ ? / ? +
+
diff --git a/folkugat_web/assets/templates/fragments/sessions/live/start.html b/folkugat_web/assets/templates/fragments/sessions/live/start.html new file mode 100644 index 0000000..7fdb560 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/live/start.html @@ -0,0 +1,6 @@ + diff --git a/folkugat_web/assets/templates/fragments/sessions/live/stop.html b/folkugat_web/assets/templates/fragments/sessions/live/stop.html new file mode 100644 index 0000000..08fc3d1 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/live/stop.html @@ -0,0 +1,6 @@ + diff --git a/folkugat_web/assets/templates/fragments/sessions/pagina.html b/folkugat_web/assets/templates/fragments/sessions/pagina.html new file mode 100644 index 0000000..0730345 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/pagina.html @@ -0,0 +1,25 @@ +{% include "fragments/menu.html" %} +
+

Calendari

+ {% if logged_in %} + + {% endif %} +
+
+

Historial

+
+
+
diff --git a/folkugat_web/assets/templates/fragments/sessions/sessio.html b/folkugat_web/assets/templates/fragments/sessions/sessio.html new file mode 100644 index 0000000..5674548 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/sessio.html @@ -0,0 +1,33 @@ +{% include "fragments/menu.html" %} +
+
+

+ {% set dn = date_names(session.date) %} + {{ dn.day_name }} {{ dn.day }} {{ dn.month_name }} de {{ dn.year }} +

+ {% if logged_in %} + {% if session.is_live %} + {% include "fragments/sessions/live/stop.html" %} + {% else %} + {% include "fragments/sessions/live/start.html" %} + {% endif %} + {% endif %} +
+

Horari i lloc

+ De {{ session.start_time.strftime("%H:%M") }} + a {{ session.end_time.strftime("%H:%M") }} + {% if session.venue.name %} + a + {% if session.venue.url %} + + {{ session.venue.name }} + + {% else %} + {{ session.venue.name }} + {% endif %} + {% endif %} +
+
+
diff --git a/folkugat_web/assets/templates/fragments/sessions/session_date.html b/folkugat_web/assets/templates/fragments/sessions/session_date.html new file mode 100644 index 0000000..df7eafb --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/session_date.html @@ -0,0 +1,24 @@ +

+ {% if session == None %} + L'últim Dimecres de cada mes + {% else %} + + {% set dn = date_names(session.date) %} + {{ dn.day_name }} {{ dn.day }} {{ dn.month_name }} + + de {{ session.start_time.strftime("%H:%M") }} + a {{ session.end_time.strftime("%H:%M") }} + {% if session.venue.name %} + a {{ session.venue.name }} + + + + + + + + + + {% endif %} + {% endif %} +

diff --git a/folkugat_web/assets/templates/fragments/sessions/session_list.html b/folkugat_web/assets/templates/fragments/sessions/session_list.html new file mode 100644 index 0000000..d87c238 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/session_list.html @@ -0,0 +1,28 @@ +
    +{% for session in sessions %} + {% include "fragments/sessions/session_row.html" %} +{% endfor %} +{% if more_sessions or less_sessions %} +
  1. + {% if more_sessions %} + + {% endif %} + {% if less_sessions %} + + {% endif %} +
  2. +{% endif %} +
diff --git a/folkugat_web/assets/templates/fragments/sessions/session_row.html b/folkugat_web/assets/templates/fragments/sessions/session_row.html new file mode 100644 index 0000000..341abda --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/session_row.html @@ -0,0 +1,44 @@ +
  • + +
    +
    + {% include "fragments/sessions/session_date.html" %} +
    +
    + + + + {% if logged_in %} + + + {% endif %} +
    +
    + {% if session.id == next_session_id %} +
    + Propera
    sessió +
    + {% endif %} +
  • diff --git a/folkugat_web/assets/templates/fragments/sessions/session_row_editing.html b/folkugat_web/assets/templates/fragments/sessions/session_row_editing.html new file mode 100644 index 0000000..4daf531 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/sessions/session_row_editing.html @@ -0,0 +1,96 @@ +
  • +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + + + +
    +
    + + +
    +
    +
    +
  • diff --git a/folkugat_web/assets/templates/fragments/tema/editor/lyric.html b/folkugat_web/assets/templates/fragments/tema/editor/lyric.html new file mode 100644 index 0000000..e8b31c0 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/editor/lyric.html @@ -0,0 +1,35 @@ +
    +
    + + + +
    +
    + +
    diff --git a/folkugat_web/assets/templates/fragments/tema/editor/title.html b/folkugat_web/assets/templates/fragments/tema/editor/title.html new file mode 100644 index 0000000..385dd21 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/editor/title.html @@ -0,0 +1,26 @@ +
    +
    + + + +
    +
    diff --git a/folkugat_web/assets/templates/fragments/tema/link.html b/folkugat_web/assets/templates/fragments/tema/link.html new file mode 100644 index 0000000..912a738 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/link.html @@ -0,0 +1,21 @@ +
  • + +
    +

    Partitura

    +

    Hola

    +
    +
  • diff --git a/folkugat_web/assets/templates/fragments/tema/links.html b/folkugat_web/assets/templates/fragments/tema/links.html new file mode 100644 index 0000000..d92e1e8 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/links.html @@ -0,0 +1,27 @@ +{% if logged_in or tema.links %} +

    Enllaços

    +
    +{% endif %} + +{% if tema.links %} +{% for link in tema.links %} + +{% endfor %} +{% endif %} + +{% if logged_in %} +
    + +
    +{% endif %} diff --git a/folkugat_web/assets/templates/fragments/tema/lyric.html b/folkugat_web/assets/templates/fragments/tema/lyric.html new file mode 100644 index 0000000..153d366 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/lyric.html @@ -0,0 +1,25 @@ +
    +
    + {{ lyric.title }} + {% if logged_in %} + + + {% endif %} +
    +
    +
    + {{ lyric.content.replace('\n', '
    ') | safe }} +
    +
    diff --git a/folkugat_web/assets/templates/fragments/tema/lyrics.html b/folkugat_web/assets/templates/fragments/tema/lyrics.html new file mode 100644 index 0000000..c64af98 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/lyrics.html @@ -0,0 +1,24 @@ +{% if logged_in or tema.lyrics %} +

    Lletra

    +{% endif %} + +{% if tema.lyrics %} +{% for lyric in tema.lyrics %} + {% set lyric_idx = loop.index0 %} + {% include "fragments/tema/lyric.html" %} +{% endfor %} +{% endif %} + +{% if logged_in %} +
    +
    + +
    +{% endif %} diff --git a/folkugat_web/assets/templates/fragments/tema/pagina.html b/folkugat_web/assets/templates/fragments/tema/pagina.html new file mode 100644 index 0000000..cf0b54e --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/pagina.html @@ -0,0 +1,34 @@ +{% include "fragments/menu.html" %} +
    +
    + {% include "fragments/tema/title.html" %} +
    + + + + + + + + + + + + + + {% include "fragments/tema/lyrics.html" %} + {% include "fragments/tema/links.html" %} + + + {% if tema.properties %} +

    Informació

    +
    + {% for property in tema.properties %} +

    + {{ property.field.value.capitalize() }}: {{ property.value }} +

    + {% endfor %} + {% endif %} +
    +
    +
    diff --git a/folkugat_web/assets/templates/fragments/tema/title.html b/folkugat_web/assets/templates/fragments/tema/title.html new file mode 100644 index 0000000..b358ab1 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/tema/title.html @@ -0,0 +1,13 @@ +
    +

    {{ tema.title }}

    + {% if logged_in %} + + {% endif %} +
    diff --git a/folkugat_web/assets/templates/fragments/temes/pagina.html b/folkugat_web/assets/templates/fragments/temes/pagina.html new file mode 100644 index 0000000..8f0d7cf --- /dev/null +++ b/folkugat_web/assets/templates/fragments/temes/pagina.html @@ -0,0 +1,24 @@ +{% include "fragments/menu.html" %} +
    +

    Temes

    + + +
    +
    +
    +
    +
    diff --git a/folkugat_web/assets/templates/fragments/temes/result.html b/folkugat_web/assets/templates/fragments/temes/result.html new file mode 100644 index 0000000..54bae48 --- /dev/null +++ b/folkugat_web/assets/templates/fragments/temes/result.html @@ -0,0 +1,44 @@ + diff --git a/folkugat_web/assets/templates/icons/link.svg b/folkugat_web/assets/templates/icons/link.svg new file mode 100644 index 0000000..5d9a63c --- /dev/null +++ b/folkugat_web/assets/templates/icons/link.svg @@ -0,0 +1,4 @@ + + + + diff --git a/folkugat_web/assets/templates/icons/notes.svg b/folkugat_web/assets/templates/icons/notes.svg new file mode 100644 index 0000000..235e37d --- /dev/null +++ b/folkugat_web/assets/templates/icons/notes.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/folkugat_web/assets/templates/icons/pdf.svg b/folkugat_web/assets/templates/icons/pdf.svg new file mode 100644 index 0000000..70b8914 --- /dev/null +++ b/folkugat_web/assets/templates/icons/pdf.svg @@ -0,0 +1,4 @@ + + + + diff --git a/folkugat_web/assets/templates/icons/spotify.svg b/folkugat_web/assets/templates/icons/spotify.svg new file mode 100644 index 0000000..0a4b50d --- /dev/null +++ b/folkugat_web/assets/templates/icons/spotify.svg @@ -0,0 +1,3 @@ + + + diff --git a/folkugat_web/assets/templates/icons/youtube.svg b/folkugat_web/assets/templates/icons/youtube.svg new file mode 100644 index 0000000..eb4395e --- /dev/null +++ b/folkugat_web/assets/templates/icons/youtube.svg @@ -0,0 +1,3 @@ + + + diff --git a/folkugat_web/assets/templates/index.html b/folkugat_web/assets/templates/index.html new file mode 100644 index 0000000..302a8ca --- /dev/null +++ b/folkugat_web/assets/templates/index.html @@ -0,0 +1,38 @@ + + + + + + + {{ page_title }} + + + + + + + + + + + + + + + + + + + + +
    + {% include "fragments/content.html" %} + {% include "fragments/footer.html" %} +
    + + diff --git a/folkugat_web/config/__init__.py b/folkugat_web/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/config/auth.py b/folkugat_web/config/auth.py new file mode 100644 index 0000000..7f21cc7 --- /dev/null +++ b/folkugat_web/config/auth.py @@ -0,0 +1,11 @@ +import os +import random +import string +from datetime import timedelta + + +SESSION_DURATION = timedelta(minutes=30) +COOKIE_NAME = "nota_folkugat" +COOKIE_MAX_AGE = int(SESSION_DURATION.total_seconds()) +ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD", "hola") +JWT_SECRET = os.getenv("JWT_SECRET", "".join(random.choice(string.ascii_letters) for _ in range(32))) diff --git a/folkugat_web/config/calendari.py b/folkugat_web/config/calendari.py new file mode 100644 index 0000000..79677e6 --- /dev/null +++ b/folkugat_web/config/calendari.py @@ -0,0 +1,21 @@ +import dataclasses + +CALENDAR_LIST_ID = "calendar-list" +HISTORY_LIST_ID = "history-list" + + +@dataclasses.dataclass +class PagingConfig: + initial_items: int + step: int + + +CALENDARI_PAGING_CONFIG = PagingConfig( + initial_items=3, + step=2 +) + +HISTORY_PAGING_CONFIG = PagingConfig( + initial_items=3, + step=2 +) diff --git a/folkugat_web/config/date.py b/folkugat_web/config/date.py new file mode 100644 index 0000000..09b43ad --- /dev/null +++ b/folkugat_web/config/date.py @@ -0,0 +1,23 @@ +DAY_NAMES_CAT = { + 0: "Dilluns", + 1: "Dimarts", + 2: "Dimecres", + 3: "Dijous", + 4: "Divendres", + 5: "Dissabte", + 6: "Diumenge", +} +MONTH_NAMES_CAT = { + 1: "de Gener", + 2: "de Febrer", + 3: "de Març", + 4: "d'Abril", + 5: "de Maig", + 6: "de Juny", + 7: "de Juliol", + 8: "de Agost", + 9: "de Setembre", + 10: "d'Octubre", + 11: "de Novembre", + 12: "de Desembre", +} diff --git a/folkugat_web/config/db.py b/folkugat_web/config/db.py new file mode 100644 index 0000000..84b8b98 --- /dev/null +++ b/folkugat_web/config/db.py @@ -0,0 +1,10 @@ +import os +from pathlib import Path + +from folkugat_web.log import logger + +DB_DIR = Path(os.getenv("DB_DIR", "/home/marc/tmp/folkugat")).resolve() +DB_FILE = DB_DIR / "folkugat.db" +DB_TEMES_DIR = DB_DIR / "temes" + +logger.info(f"Using DB_DIR: {DB_DIR}") diff --git a/folkugat_web/config/directories.py b/folkugat_web/config/directories.py new file mode 100644 index 0000000..055f55b --- /dev/null +++ b/folkugat_web/config/directories.py @@ -0,0 +1,10 @@ +from pathlib import Path + +from folkugat_web.log import logger + +APP_DIR = Path(__file__).resolve().parent.parent +ASSETS_DIR = APP_DIR / "assets" +STATIC_DIR = ASSETS_DIR / "static" +TEMPLATES_DIR = ASSETS_DIR / "templates" + +logger.info(f"Using APP_DIR: {APP_DIR}") diff --git a/folkugat_web/config/nota.py b/folkugat_web/config/nota.py new file mode 100644 index 0000000..0a80ffb --- /dev/null +++ b/folkugat_web/config/nota.py @@ -0,0 +1 @@ +LOGGED_IN_FOOTER = "😎" diff --git a/folkugat_web/config/search.py b/folkugat_web/config/search.py new file mode 100644 index 0000000..4a80fa4 --- /dev/null +++ b/folkugat_web/config/search.py @@ -0,0 +1,8 @@ +# Minimum ngram length to compute, search string shorther than this limit are ignored +MIN_NGRAM_LENGTH = 3 + +# Maximum number of insertions/deletions to check for when comparing strings +QUERY_NGRAM_RANGE = 2 + +# Maximum distance to show a match as the result of a search +SEARCH_DISTANCE_THRESHOLD = 0.25 diff --git a/folkugat_web/dal/__init__.py b/folkugat_web/dal/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/dal/sql/__init__.py b/folkugat_web/dal/sql/__init__.py new file mode 100644 index 0000000..3960367 --- /dev/null +++ b/folkugat_web/dal/sql/__init__.py @@ -0,0 +1 @@ +from ._connection import get_connection, Connection diff --git a/folkugat_web/dal/sql/_connection.py b/folkugat_web/dal/sql/_connection.py new file mode 100644 index 0000000..3038d09 --- /dev/null +++ b/folkugat_web/dal/sql/_connection.py @@ -0,0 +1,23 @@ +import sqlite3 +from contextlib import contextmanager +from typing import Iterator, Optional + +from folkugat_web.config.db import DB_FILE + +Connection = sqlite3.Connection + + +@contextmanager +def get_connection(con: Optional[Connection] = None) -> Iterator[Connection]: + if con: + yield con + else: + con = sqlite3.connect(DB_FILE) + try: + yield con + con.commit() + except Exception: + con.rollback() + raise + finally: + con.close() diff --git a/folkugat_web/dal/sql/ddl.py b/folkugat_web/dal/sql/ddl.py new file mode 100644 index 0000000..e84a6f6 --- /dev/null +++ b/folkugat_web/dal/sql/ddl.py @@ -0,0 +1,8 @@ +from folkugat_web.dal.sql import get_connection, sessions +from folkugat_web.dal.sql.temes import ddl as temes_ddl + + +def create_db(): + with get_connection() as con: + sessions.create_db(con) + temes_ddl.create_db(con) diff --git a/folkugat_web/dal/sql/sessions.py b/folkugat_web/dal/sql/sessions.py new file mode 100644 index 0000000..55a9eae --- /dev/null +++ b/folkugat_web/dal/sql/sessions.py @@ -0,0 +1,194 @@ +import datetime +from typing import Optional + +from folkugat_web.dal.sql import Connection, get_connection +from folkugat_web.model import sessions as model +from folkugat_web.model.sql import OrderCol, Range +from folkugat_web.typing import OptionalListOrValue as OLV + + +def create_db(con: Optional[Connection] = None): + with get_connection(con) as con: + create_sessions_table(con) + + +def drop_sessions_table(con: Connection): + query = "DROP TABLE IF EXISTS sessions" + cur = con.cursor() + cur.execute(query) + + +def create_sessions_table(con: Connection): + query = """ + CREATE TABLE IF NOT EXISTS sessions ( + id INTEGER PRIMARY KEY, + date TEXT NOT NULL, + start_time TEXT NOT NULL, + end_time TEXT NOT NULL, + venue_name TEXT, + venue_url TEXT, + is_live BOOLEAN DEFAULT false + ) + """ + cur = con.cursor() + cur.execute(query) + + +def _session_to_row(sessio: model.Session) -> dict: + return { + 'id': sessio.id, + 'date': sessio.date, + 'start_time': sessio.start_time.isoformat(), + 'end_time': sessio.end_time.isoformat(), + 'venue_name': sessio.venue.name, + 'venue_url': sessio.venue.url, + 'is_live': sessio.is_live, + } + + +def _row_to_session(row: tuple) -> model.Session: + return model.Session( + id=row[0], + date=datetime.date.fromisoformat(row[1]), + start_time=datetime.time.fromisoformat(row[2]), + end_time=datetime.time.fromisoformat(row[3]), + venue=model.SessionVenue( + name=row[4], + url=row[5], + ), + is_live=row[6], + ) + + +def insert_session(session: model.Session, con: Optional[Connection] = None): + query = """ + INSERT INTO sessions + (id, date, start_time, end_time, venue_name, venue_url, is_live) + VALUES + (:id, :date, :start_time, :end_time, :venue_name, :venue_url, :is_live) + RETURNING * + """ + data = _session_to_row(session) + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query, data) + row = cur.fetchone() + return _row_to_session(row) + + +def update_session(session: model.Session, con: Optional[Connection] = None): + query = """ + UPDATE sessions SET + date = :date, start_time = :start_time, end_time = :end_time, + venue_name = :venue_name, venue_url = :venue_url, is_live = :is_live + WHERE id = :id + """ + data = _session_to_row(session) + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query, data) + + +def _filter_clause(session_id: Optional[int] = None, + date_range: Optional[Range[datetime.date]] = None, + is_live: Optional[bool] = None) -> tuple[str, dict]: + filter_clauses = [] + filter_data = {} + + if session_id is not None: + filter_clauses.append(f"id = :session_id") + filter_data["session_id"] = session_id + + if date_range: + if ub := date_range.upper_bound(): + operator = "<=" if ub[1] else "<" + filter_clauses.append(f"date {operator} :date_ub") + filter_data["date_ub"] = ub[0] + if lb := date_range.lower_bound(): + operator = ">=" if lb[1] else ">" + filter_clauses.append(f"date {operator} :date_lb") + filter_data["date_lb"] = lb[0] + + if is_live is not None: + filter_clauses.append(f"is_live = :is_live") + filter_data["is_live"] = is_live + + if filter_clauses: + filter_clause_str = " AND ".join(filter_clauses) + filter_clause = f"WHERE {filter_clause_str}" + return filter_clause, filter_data + else: + return "", {} + + +def _order_clause(order_by: OLV[OrderCol[model.SessionCols]]) -> str: + if not order_by: + return "" + if not isinstance(order_by, list): + order_by = [order_by] + + order_clauses = [f"{ocol.column.value} {ocol.order.value}" for ocol in order_by] + order_clauses_str = " ".join(order_clauses) + return f"ORDER BY {order_clauses_str}" + + +def get_sessions(session_id: Optional[int] = None, + date_range: Optional[Range[datetime.date]] = None, + is_live: Optional[bool] = None, + order_by: OLV[OrderCol[model.SessionCols]] = None, + limit: Optional[int] = None, offset: Optional[int] = None, + con: Optional[Connection] = None) -> list[model.Session]: + clauses = [] + filter_clause, data = _filter_clause(session_id=session_id, date_range=date_range, is_live=is_live) + if filter_clause: + clauses.append(filter_clause) + if order_clause := _order_clause(order_by=order_by): + clauses.append(order_clause) + if limit is not None: + clauses.append("LIMIT :limit") + data["limit"] = limit + if offset is not None: + clauses.append("OFFSET :offset") + data["offset"] = offset + + clauses_str = " ".join(clauses) + query = f""" + SELECT id, date, start_time, end_time, venue_name, venue_url, is_live + FROM sessions + {clauses_str} + """ + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query, data) + return list(map(_row_to_session, cur.fetchall())) + + +def delete_session_by_id(session_id: int, con: Optional[Connection] = None): + query = """ + DELETE FROM sessions + WHERE id = :id + """ + data = dict(id=session_id) + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query, data) + + +def stop_live_sessions(con: Optional[Connection] = None): + query = """ + UPDATE sessions SET is_live = false WHERE is_live = true + """ + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query) + + +def set_live_session(session_id: int, con: Optional[Connection] = None): + query = """ + UPDATE sessions SET is_live = true WHERE id = :id + """ + data = dict(id=session_id) + with get_connection(con) as con: + stop_live_sessions(con=con) + cur = con.cursor() + cur.execute(query, data) diff --git a/folkugat_web/dal/sql/temes/__init__.py b/folkugat_web/dal/sql/temes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/dal/sql/temes/_conversion.py b/folkugat_web/dal/sql/temes/_conversion.py new file mode 100644 index 0000000..8aa2546 --- /dev/null +++ b/folkugat_web/dal/sql/temes/_conversion.py @@ -0,0 +1,38 @@ +import datetime +import json + +from folkugat_web.model import temes as model + + +def tema_to_row(tema: model.Tema) -> dict: + return { + 'id': tema.id, + 'title': tema.title, + 'properties': json.dumps(list(map(lambda p: p.to_dict(), tema.properties))), + 'links': json.dumps(list(map(lambda l: l.to_dict(), tema.links))), + 'lyrics': json.dumps(list(map(lambda l: l.to_dict(), tema.lyrics))), + 'alternatives': json.dumps(tema.alternatives), + 'ngrams': json.dumps(tema.ngrams), + 'modification_date': tema.modification_date.isoformat(), + 'creation_date': tema.creation_date.isoformat(), + 'hidden': 1 if tema.hidden else 0, + } + + +def cell_to_ngrams(cell: str) -> model.NGrams: + return {int(n): ngrams_ for n, ngrams_ in json.loads(cell).items()} + + +def row_to_tema(row: tuple) -> model.Tema: + return model.Tema( + id=row[0], + title=row[1], + properties=list(map(model.Property.from_dict, json.loads(row[2]))), + links=list(map(model.Link.from_dict, json.loads(row[3]))), + lyrics=list(map(model.Lyrics.from_dict, json.loads(row[4]))), + alternatives=json.loads(row[5]), + ngrams=cell_to_ngrams(row[6]), + modification_date=datetime.datetime.fromisoformat(row[7]), + creation_date=datetime.datetime.fromisoformat(row[8]), + hidden=bool(row[9]), + ) diff --git a/folkugat_web/dal/sql/temes/ddl.py b/folkugat_web/dal/sql/temes/ddl.py new file mode 100644 index 0000000..4a46b3b --- /dev/null +++ b/folkugat_web/dal/sql/temes/ddl.py @@ -0,0 +1,40 @@ +from typing import Optional + +from folkugat_web import data +from folkugat_web.dal.sql import Connection, get_connection + +from .write import insert_tema + + +def create_db(con: Optional[Connection] = None): + with get_connection(con) as con: + drop_temes_table(con) + create_temes_table(con) + + for tema in data.TEMES: + insert_tema(tema, con) + + +def drop_temes_table(con: Connection): + query = "DROP TABLE IF EXISTS temes" + cur = con.cursor() + cur.execute(query) + + +def create_temes_table(con: Connection): + query = """ + CREATE TABLE IF NOT EXISTS temes ( + id INTEGER PRIMARY KEY, + title TEXT NOT NULL, + properties TEXT, + links TEXT, + lyrics TEXT, + alternatives TEXT, + ngrams TEXT, + creation_date TEXT NOT NULL, + modification_date TEXT NOT NULL, + hidden INTEGER NOT NULL + ) + """ + cur = con.cursor() + cur.execute(query) diff --git a/folkugat_web/dal/sql/temes/query.py b/folkugat_web/dal/sql/temes/query.py new file mode 100644 index 0000000..d04b900 --- /dev/null +++ b/folkugat_web/dal/sql/temes/query.py @@ -0,0 +1,49 @@ +from typing import Optional + +from folkugat_web.dal.sql import Connection, get_connection +from folkugat_web.model import temes as model + +from ._conversion import cell_to_ngrams, row_to_tema + +TEMA_ID_TO_NGRAMS_CACHE = None + + +def get_tema_by_id(tema_id: int, con: Optional[Connection] = None) -> Optional[model.Tema]: + query = """ + SELECT + id, title, properties, links, lyrics, alternatives, ngrams, + creation_date, modification_date, hidden + FROM temes + WHERE id = :id + """ + data = dict(id=tema_id) + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query, data) + row = cur.fetchone() + return row_to_tema(row) if row else None + + +def evict_tema_id_to_ngrams_cache(): + global TEMA_ID_TO_NGRAMS_CACHE + TEMA_ID_TO_NGRAMS_CACHE = None + + +def get_tema_id_to_ngrams(con: Optional[Connection] = None) -> dict[int, model.NGrams]: + global TEMA_ID_TO_NGRAMS_CACHE + if TEMA_ID_TO_NGRAMS_CACHE is None: + TEMA_ID_TO_NGRAMS_CACHE = _get_tema_id_to_ngrams(con) + return TEMA_ID_TO_NGRAMS_CACHE + + +def _get_tema_id_to_ngrams(con: Optional[Connection] = None) -> dict[int, model.NGrams]: + query = """ + SELECT id, ngrams + FROM temes + WHERE hidden = 0 + """ + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query) + rows = cur.fetchall() + return {id_: cell_to_ngrams(ng) for id_, ng in rows} diff --git a/folkugat_web/dal/sql/temes/write.py b/folkugat_web/dal/sql/temes/write.py new file mode 100644 index 0000000..1bf1e94 --- /dev/null +++ b/folkugat_web/dal/sql/temes/write.py @@ -0,0 +1,44 @@ +from typing import Optional + +from folkugat_web.dal.sql import Connection, get_connection +from folkugat_web.model import temes as model + +from ._conversion import row_to_tema, tema_to_row +from .query import evict_tema_id_to_ngrams_cache + + +def insert_tema(tema: model.Tema, con: Optional[Connection] = None) -> model.Tema: + query = """ + INSERT INTO temes + (id, title, properties, links, lyrics, alternatives, ngrams, + creation_date, modification_date, hidden) + VALUES + (:id, :title, :properties, :links, :lyrics, :alternatives, :ngrams, + :creation_date, :modification_date, :hidden) + RETURNING * + """ + data = tema_to_row(tema) + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query, data) + row = cur.fetchone() + evict_tema_id_to_ngrams_cache() + return row_to_tema(row) + + +def update_tema(tema: model.Tema, con: Optional[Connection] = None): + query = """ + UPDATE temes + SET + title = :title, properties = :properties, links = :links, lyrics = :lyrics, + alternatives = :alternatives, ngrams = :ngrams, creation_date = :creation_date, + modification_date = :modification_date, hidden = :hidden + WHERE + id = :id + """ + data = tema_to_row(tema) + with get_connection(con) as con: + cur = con.cursor() + cur.execute(query, data) + evict_tema_id_to_ngrams_cache() + return diff --git a/folkugat_web/data.py b/folkugat_web/data.py new file mode 100644 index 0000000..ec610bd --- /dev/null +++ b/folkugat_web/data.py @@ -0,0 +1,105 @@ +from folkugat_web.model import temes as model + +TEMES = [ + # --- + model.Tema( + title="El Joan Petit", + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="Pasdoble de Muntanya (Cançó amb el nom molt llarg)", + links=[ + model.Link( + type=model.LinkType.AUDIO, + subtype=model.LinkSubtype.SPOTIFY, + url="https://open.spotify.com/track/4j9Krf19c5USmMvVUCoeWa?si=3023d1d83f814886", + ), + ], + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="Astrid Waltz", + alternatives=["vals"], + links=[ + model.Link( + type=model.LinkType.OTHER, + subtype=None, + url="https://marc.sastre.cat/folkugat", + ) + ], + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="Ook Pik Waltz", + alternatives=["vals"], + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="Pasdoble Patumaire", + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="El Gitano", + links=[ + model.Link( + type=model.LinkType.SCORE, + subtype=model.LinkSubtype.PDF, + url="/db/temes/1/tema.pdf", + ) + ], + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="Pasdoble de Gitanes", + alternatives=["entrada"], + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="Jota Comunera", + hidden=False, + ).with_ngrams(), + # --- + model.Tema( + title="Malaguenya de Barxeta", + lyrics=[ + model.Lyrics( + title="Malaguenya de Barxeta", + content=""" +Mira si he corregut terres +que he estat en Alfarrasí, +en Adzaneta i Albaida, +en el Palomar i ací. + +Omplim el sarró de pa, +si vols que et guarde les cabres, +que les figues ja s'acaben +i raïm ja no hi ha. + +L'altre dia jo somiava +que ja era realitat +un món sense violència +ple de pau i llibertat. + +Vinc del cor de la Costera, +el poble dels socarrats, +d'allà on renaix de les cendres +el meu País Valencià. + """.strip(), + ), + ], + properties=[ + model.Property( + model.PropertyField.AUTOR, + "Pep Jimeno 'Botifarra'" + ) + ], + hidden=False, + ).with_ngrams(), +] diff --git a/folkugat_web/fragments/__init__.py b/folkugat_web/fragments/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/fragments/live.py b/folkugat_web/fragments/live.py new file mode 100644 index 0000000..c114989 --- /dev/null +++ b/folkugat_web/fragments/live.py @@ -0,0 +1,45 @@ +from fastapi import Request +from folkugat_web.model import sessions as model +from folkugat_web.services import sessions as service +from folkugat_web.templates import templates + + +def sessio_en_directe(request: Request): + session = service.get_live_session() + return templates.TemplateResponse( + "fragments/marquee.html", + { + "request": request, + "session": session, + } + ) + + +def start_live_session(request: Request, session_id: int): + service.set_live_session(session_id=session_id) + session = model.Session(id=session_id) + return templates.TemplateResponse( + "fragments/sessions/live/stop.html", + { + "request": request, + "session": session, + }, + headers={ + "HX-Trigger": "reload-marquee" + } + ) + + +def stop_live_session(request: Request, session_id: int): + service.stop_live_sessions() + session = model.Session(id=session_id) + return templates.TemplateResponse( + "fragments/sessions/live/start.html", + { + "request": request, + "session": session, + }, + headers={ + "HX-Trigger": "reload-marquee" + } + ) diff --git a/folkugat_web/fragments/nota.py b/folkugat_web/fragments/nota.py new file mode 100644 index 0000000..3affc86 --- /dev/null +++ b/folkugat_web/fragments/nota.py @@ -0,0 +1,35 @@ +from folkugat_web.config import nota as config +from folkugat_web.templates import templates + + +def input(request, value=None): + return templates.TemplateResponse( + "fragments/nota/input.html", + { + "request": request, + "value": value, + } + ) + + +def footer(request, value, logged_in): + response = templates.TemplateResponse( + "fragments/nota/footer.html", + { + "request": request, + "value": config.LOGGED_IN_FOOTER if logged_in else value, + "logged_in": logged_in, + } + ) + return response + + +def nota(request): + response = templates.TemplateResponse( + "fragments/nota/nota.html", + { + "request": request, + } + ) + response.headers["HX-Refresh"] = "true" + return response diff --git a/folkugat_web/fragments/sessions.py b/folkugat_web/fragments/sessions.py new file mode 100644 index 0000000..caa3842 --- /dev/null +++ b/folkugat_web/fragments/sessions.py @@ -0,0 +1,144 @@ +from typing import Optional + +from fastapi import Request +from fastapi.responses import HTMLResponse +from folkugat_web.config import calendari as config +from folkugat_web.model import sessions as model +from folkugat_web.model.pagines import Pages +from folkugat_web.services import sessions as service +from folkugat_web.templates import templates + + +def sessions_pagina(request, logged_in): + return templates.TemplateResponse( + "fragments/sessions/pagina.html", + { + "request": request, + "logged_in": logged_in, + "Pages": Pages, + "menu_selected_id": Pages.Sessions, + "calendar_list_id": config.CALENDAR_LIST_ID, + "history_list_id": config.HISTORY_LIST_ID, + } + ) + + +def sessions_calendari(request: Request, limit: int, logged_in: bool): + sessions = service.get_next_sessions(limit=limit+1) + has_more_sessions = len(sessions) > limit + sessions = sessions[:limit] + next_session_id = sessions[0].id if sessions else None + return _sessions_list( + request=request, + sessions=sessions, + has_more_sessions=has_more_sessions, + paging_config=config.CALENDARI_PAGING_CONFIG, + list_id=config.CALENDAR_LIST_ID, + next_session_id=next_session_id, + get_sessions_url="/api/sessions/upcoming", + limit=limit, + logged_in=logged_in + ) + + +def sessions_historial(request: Request, limit: int, logged_in: bool): + sessions = service.get_sessions_history(limit=limit+1) + has_more_sessions = len(sessions) > limit + sessions = sessions[:limit] + return _sessions_list( + request=request, + sessions=sessions, + has_more_sessions=has_more_sessions, + paging_config=config.HISTORY_PAGING_CONFIG, + list_id=config.HISTORY_LIST_ID, + get_sessions_url="/api/sessions/history", + limit=limit, + logged_in=logged_in + ) + + +def _sessions_list(request: Request, sessions: list[model.Session], has_more_sessions: bool, + paging_config: config.PagingConfig, list_id: str, get_sessions_url: str, + limit: int, logged_in: bool, next_session_id: Optional[int] = None): + if has_more_sessions: + more_sessions = limit + paging_config.step + else: + more_sessions = None + + if len(sessions) > paging_config.initial_items: + less_sessions = max(paging_config.initial_items, len(sessions) - paging_config.step) + else: + less_sessions = None + + return templates.TemplateResponse( + "fragments/sessions/session_list.html", + { + "request": request, + "logged_in": logged_in, + "get_sessions_url": get_sessions_url, + "sessions": sessions, + "session_list_id": list_id, + "next_session_id": next_session_id, + "more_sessions": more_sessions, + "less_sessions": less_sessions, + "limit": limit, + "date_names": service.get_date_names, + } + ) + + +def sessio(request: Request, session_id: int, logged_in: bool): + session = service.get_session(session_id=session_id) + return templates.TemplateResponse( + "fragments/sessions/sessio.html", + { + "request": request, + "logged_in": logged_in, + "Pages": Pages, + "session": session, + "date_names": service.get_date_names, + } + ) + + +def sessions_editor_row(request: Request, session_date: Optional[model.Session] = None, session_id: Optional[int] = None): + if session_date is None: + if session_id is None: + raise ValueError("Must either give session or session_id") + session_date = service.get_session(session_id=session_id) + return templates.TemplateResponse( + "fragments/sessions/session_row.html", + { + "request": request, + "session": session_date, + "date_names": service.get_date_names, + "logged_in": True, + } + ) + + +def sessions_editor_row_editing(request, session_id: int): + session = service.get_session(session_id) + return templates.TemplateResponse( + "fragments/sessions/session_row_editing.html", + { + "request": request, + "session": session, + "date_names": service.get_date_names, + } + ) + + +def sessions_editor_insert_row(request, session_date: Optional[model.Session] = None): + session_date = service.insert_session(session_date or service.new_session()) + return sessions_editor_row(request, session_date=session_date) + + +def sessions_editor_post_row(request, session_date: model.Session): + service.set_session(session_date) + return sessions_editor_row(request, session_date=session_date) + + +def sessions_editor_delete_row(session_id: int): + service.delete_session(session_id) + return HTMLResponse() diff --git a/folkugat_web/fragments/tema.py b/folkugat_web/fragments/tema.py new file mode 100644 index 0000000..5a0a4c8 --- /dev/null +++ b/folkugat_web/fragments/tema.py @@ -0,0 +1,73 @@ +from typing import Optional + +from fastapi import Request +from folkugat_web.model import temes as model +from folkugat_web.services.temes import query as temes_q +from folkugat_web.templates import templates + + +def title(request: Request, logged_in: bool, tema: Optional[model.Tema] = None, tema_id: Optional[int] = None): + if tema is None: + if tema_id is None: + raise ValueError("Either 'tema' or 'tema_id' must be given!") + tema = temes_q.get_tema_by_id(tema_id) + return templates.TemplateResponse( + "fragments/tema/title.html", + { + "request": request, + "logged_in": logged_in, + "tema": tema, + } + ) + + +def title_editor(request: Request, logged_in: bool, tema_id: int): + tema = temes_q.get_tema_by_id(tema_id) + return templates.TemplateResponse( + "fragments/tema/editor/title.html", + { + "request": request, + "logged_in": logged_in, + "tema": tema, + } + ) + + +def lyric(request: Request, logged_in: bool, tema_id: int, lyric_idx: int): + tema = temes_q.get_tema_by_id(tema_id) + if tema is None: + raise ValueError(f"No tune exists for tema_id: {tema_id}") + if len(tema.lyrics) < lyric_idx: + raise ValueError(f'Lyric index out of bounds') + lyric = tema.lyrics[lyric_idx] + + return templates.TemplateResponse( + "fragments/tema/lyric.html", + { + "request": request, + "logged_in": logged_in, + "tema": tema, + "lyric_idx": lyric_idx, + "lyric": lyric, + } + ) + + +def lyric_editor(request: Request, logged_in: bool, tema_id: int, lyric_idx: int): + tema = temes_q.get_tema_by_id(tema_id) + if tema is None: + raise ValueError(f"No tune exists for tema_id: {tema_id}") + if len(tema.lyrics) < lyric_idx: + raise ValueError(f'Lyric index out of bounds') + lyric = tema.lyrics[lyric_idx] + + return templates.TemplateResponse( + "fragments/tema/editor/lyric.html", + { + "request": request, + "logged_in": logged_in, + "tema": tema, + "lyric_idx": lyric_idx, + "lyric": lyric, + } + ) diff --git a/folkugat_web/fragments/temes.py b/folkugat_web/fragments/temes.py new file mode 100644 index 0000000..4c72839 --- /dev/null +++ b/folkugat_web/fragments/temes.py @@ -0,0 +1,54 @@ +from fastapi import Request +from folkugat_web.model import temes as model +from folkugat_web.model.pagines import Pages +from folkugat_web.services.temes import query as temes_q +from folkugat_web.services.temes import search as temes_s +from folkugat_web.templates import templates + + +def temes_pagina(request: Request, logged_in: bool): + return templates.TemplateResponse( + "fragments/temes/pagina.html", + { + "request": request, + "logged_in": logged_in, + "Pages": Pages, + "menu_selected_id": Pages.Temes, + } + ) + + +def temes_busca_result(request: Request, tema: model.Tema, logged_in: bool): + return templates.TemplateResponse( + "fragments/temes/result.html", + { + "request": request, + "logged_in": logged_in, + "tema": tema, + "LinkSubtype": model.LinkSubtype, + "LinkType": model.LinkType, + } + ).body.decode('utf-8') + + +def temes_busca(request: Request, query: str, logged_in: bool): + temes = temes_s.busca_temes(query) + return '\n'.join( + [temes_busca_result(request, tema, logged_in) + for tema in temes] + ) + + +def tema(request: Request, tema_id: int, logged_in: bool): + tema = temes_q.get_tema_by_id(tema_id) + return templates.TemplateResponse( + "fragments/tema/pagina.html", + { + "request": request, + "logged_in": logged_in, + "Pages": Pages, + "LinkSubtype": model.LinkSubtype, + "LinkType": model.LinkType, + "tema": tema, + } + ) diff --git a/folkugat_web/log.py b/folkugat_web/log.py new file mode 100644 index 0000000..4b4b6a9 --- /dev/null +++ b/folkugat_web/log.py @@ -0,0 +1,6 @@ +import logging + +logging.basicConfig(level=logging.NOTSET) + +logger = logging.getLogger('folkugat-web') +logger.setLevel(logging.INFO) diff --git a/folkugat_web/main.py b/folkugat_web/main.py new file mode 100644 index 0000000..ba0f3d2 --- /dev/null +++ b/folkugat_web/main.py @@ -0,0 +1,57 @@ +import subprocess +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from fastapi.staticfiles import StaticFiles + +from folkugat_web import log +from folkugat_web.config import directories, db +from folkugat_web.dal.sql.ddl import create_db +from folkugat_web.api import router + + +@asynccontextmanager +async def lifespan(_: FastAPI): + """ + Context manager for FastAPI app. It will run all code before `yield` + on app startup, and will run code after `yeld` on app shutdown. + """ + + log.logger.info("Running Tailwind CSS...") + try: + subprocess.run([ + "tailwindcss", + "-i", + directories.STATIC_DIR / "src" / "tw.css", + "-o", + directories.STATIC_DIR / "css" / "main.css", + # "--minify" + ]) + except Exception as e: + log.logger.error(f"Error running tailwindcss: {e}") + log.logger.info("Tailwind CSS done") + + log.logger.info("Creating DB...") + create_db() + log.logger.info("DB created") + + yield + + +def get_app() -> FastAPI: + app = FastAPI(lifespan=lifespan) + app.include_router(router) + + app.mount("/static", StaticFiles(directory=directories.STATIC_DIR), name="static") + app.mount("/db/temes", StaticFiles(directory=db.DB_TEMES_DIR), name="temes") + + return app + + +app = get_app() + + +if __name__ == "__main__": + import uvicorn + + uvicorn.run(app, host="127.0.0.1", port=8000) diff --git a/folkugat_web/model/__init__.py b/folkugat_web/model/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/model/pagines.py b/folkugat_web/model/pagines.py new file mode 100644 index 0000000..dc193be --- /dev/null +++ b/folkugat_web/model/pagines.py @@ -0,0 +1,6 @@ +import enum + + +class Pages(enum.IntEnum): + Sessions = 0 + Temes = 1 diff --git a/folkugat_web/model/search.py b/folkugat_web/model/search.py new file mode 100644 index 0000000..d46a5f3 --- /dev/null +++ b/folkugat_web/model/search.py @@ -0,0 +1,21 @@ +import dataclasses + + +@dataclasses.dataclass(order=True) +class SearchMatch: + distance: float + ngram: str + + @classmethod + def combine_matches(cls, matches): + ngrams, distances = zip(*((match.ngram, match.distance) for match in matches)) + return cls( + ngram=', '.join(ngrams), + distance=sum(distances)/len(distances) + ) + +@dataclasses.dataclass +class QueryResult: + id: int + distance: float + ngram: str diff --git a/folkugat_web/model/sessions.py b/folkugat_web/model/sessions.py new file mode 100644 index 0000000..cdb9c99 --- /dev/null +++ b/folkugat_web/model/sessions.py @@ -0,0 +1,35 @@ +import dataclasses +import datetime +import enum +from typing import Optional + +DEFAULT_START_TIME = datetime.time(20, 30) +DEFAULT_END_TIME = datetime.time(22, 30) + + +@dataclasses.dataclass +class SessionVenue: + name: Optional[str] = None + url: Optional[str] = None + + +@dataclasses.dataclass +class Session: + id: Optional[int] = None + date: datetime.date = dataclasses.field(default_factory=datetime.date.today) + start_time: datetime.time = DEFAULT_START_TIME + end_time: datetime.time = DEFAULT_END_TIME + venue: SessionVenue = dataclasses.field(default_factory=SessionVenue) + is_live: bool = False + + +@dataclasses.dataclass +class DateNames: + day_name: str + day: str + month_name: str + year: str + + +class SessionCols(enum.Enum): + DATE = "date" diff --git a/folkugat_web/model/sql.py b/folkugat_web/model/sql.py new file mode 100644 index 0000000..2a8cc36 --- /dev/null +++ b/folkugat_web/model/sql.py @@ -0,0 +1,74 @@ +from __future__ import annotations + +import dataclasses +import datetime +import enum +from abc import abstractmethod +from typing import Generic, Optional, Protocol, TypeVar + + +class Comparable(Protocol): + @abstractmethod + def __gt__(self: T, other: T, /) -> bool: + pass + + @abstractmethod + def __ge__(self: T, other: T, /) -> bool: + pass + + @abstractmethod + def __lt__(self: T, other: T, /) -> bool: + pass + + @abstractmethod + def __le__(self: T, other: T, /) -> bool: + pass + + +T = TypeVar("T", bound=Comparable) + + +@dataclasses.dataclass +class Range(Generic[T]): + gt: Optional[T] = None + gte: Optional[T] = None + lt: Optional[T] = None + lte: Optional[T] = None + + def lower_bound(self) -> Optional[tuple[T, bool]]: + if self.gt is None and self.gte is None: + return None + elif self.gt is not None and self.gte is not None: + lb = self.gt if (self.gt > self.gte) else self.gte + eq = self.gt < self.gte + return lb, eq + elif self.gt is not None: + return self.gt, False + elif self.gte is not None: + return self.gte, True + + def upper_bound(self) -> Optional[tuple[T, bool]]: + if self.lt is None and self.lte is None: + return None + elif self.lt is not None and self.lte is not None: + ub = self.lt if (self.lt < self.lte) else self.lte + eq = self.lt > self.lte + return ub, eq + elif self.lt is not None: + return self.lt, False + elif self.lte is not None: + return self.lte, True + + +class Order(enum.Enum): + ASCENDING = 'ASC' + DESCENDING = 'DESC' + + +ColT = TypeVar("ColT") + + +@dataclasses.dataclass +class OrderCol(Generic[ColT]): + column: ColT + order: Order diff --git a/folkugat_web/model/temes.py b/folkugat_web/model/temes.py new file mode 100644 index 0000000..721249e --- /dev/null +++ b/folkugat_web/model/temes.py @@ -0,0 +1,123 @@ +import dataclasses +import datetime +import enum +from typing import Optional + +from folkugat_web.services import ngrams + +NGrams = dict[int, list[str]] + + +class LinkType(enum.Enum): + SCORE = "score" + AUDIO = "audio" + OTHER = "other" + + +class LinkSubtype(enum.Enum): + # Score + PDF = "pdf" + IMAGE = "image" + # Audio + SPOTIFY = "spotify" + YOUTUBE = "youtube" + + +@dataclasses.dataclass +class Link: + type: LinkType + subtype: Optional[LinkSubtype] + url: str + title: str = "" + + def to_dict(self): + return dict( + type=self.type.value, + subtype=self.subtype.value if self.subtype else None, + url=self.url, + title=self.title, + ) + + @classmethod + def from_dict(cls, d): + return cls( + type=LinkType(d["type"]), + subtype=LinkSubtype(d["subtype"]) if d["subtype"] else None, + url=d["url"], + title=d["title"], + ) + + +class PropertyField(enum.Enum): + AUTOR = "autor" + TIPUS = "tipus" + COMPAS = "compàs" + ORIGEN = "orígen" + + +@dataclasses.dataclass +class Property: + field: PropertyField + value: str + + def to_dict(self): + return dict( + field=self.field.value, + value=self.value, + ) + + @classmethod + def from_dict(cls, d): + return cls( + field=PropertyField(d["field"]), + value=d["value"], + ) + + +@dataclasses.dataclass +class Lyrics: + title: str + content: str + + def to_dict(self): + return dict( + title=self.title, + content=self.content, + ) + + @classmethod + def from_dict(cls, d): + return cls( + title=d["title"], + content=d["content"], + ) + + +@dataclasses.dataclass +class Tema: + id: Optional[int] = None + # Info + title: str = "" + properties: list[Property] = dataclasses.field(default_factory=list) + links: list[Link] = dataclasses.field(default_factory=list) + lyrics: list[Lyrics] = dataclasses.field(default_factory=list) + # Search related + alternatives: list[str] = dataclasses.field(default_factory=list) + ngrams: NGrams = dataclasses.field(default_factory=dict) + hidden: bool = True + # Other info + modification_date: datetime.datetime = dataclasses.field(default_factory=datetime.datetime.now) + creation_date: datetime.datetime = dataclasses.field(default_factory=datetime.datetime.now) + + def compute_ngrams(self): + self.ngrams = ngrams.get_text_ngrams(self.title, *self.alternatives) + + def with_ngrams(self): + self.compute_ngrams() + return self + + def scores(self): + return [link for link in self.links if link.type is LinkType.SCORE] + + def audios(self): + return [link for link in self.links if link.type is LinkType.AUDIO] diff --git a/folkugat_web/services/__init__.py b/folkugat_web/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/services/auth.py b/folkugat_web/services/auth.py new file mode 100644 index 0000000..7d28a69 --- /dev/null +++ b/folkugat_web/services/auth.py @@ -0,0 +1,48 @@ +import datetime +from typing import Annotated, Optional + +import jwt +from fastapi import Cookie, Depends, HTTPException +from folkugat_web.config import auth as config +from folkugat_web.log import logger + + +def login(value): + if value and value.lower() == config.ADMIN_PASSWORD: + return True + return False + + +def logged_in(nota_folkugat: Annotated[Optional[str], Cookie()] = None) -> bool: + if not nota_folkugat: + return False + try: + payload = jwt.decode(nota_folkugat, config.JWT_SECRET, algorithms=["HS256"]) + except Exception as exc: + logger.error("Exception: ", exc) + return False + + return payload.get('user') == 'admin' + + +LoggedIn = Annotated[bool, Depends(logged_in)] + + +def require_login(logged_in: LoggedIn) -> bool: + if not logged_in: + raise HTTPException(status_code=403, detail="Must be logged in") + return True + + +RequireLogin = Annotated[bool, Depends(require_login)] + + +def build_payload(): + return { + 'user': 'admin', + 'exp': datetime.datetime.now(tz=datetime.timezone.utc) + config.SESSION_DURATION + } + + +def build_token(): + return jwt.encode(build_payload(), config.JWT_SECRET, algorithm="HS256") diff --git a/folkugat_web/services/ngrams.py b/folkugat_web/services/ngrams.py new file mode 100644 index 0000000..e2cea61 --- /dev/null +++ b/folkugat_web/services/ngrams.py @@ -0,0 +1,19 @@ +import operator + +from folkugat_web.config import search as config +from folkugat_web.utils import groupby + + +def get_all_ngrams(text): + return [(m, text[i:i+m]) + for m in range(config.MIN_NGRAM_LENGTH, len(text) + 1) + for i in range(len(text) - m + 1) + if m > 0] + +def get_text_ngrams(*texts): + texts = [word.lower() for text in texts for word in text.split()] + word_ngrams = [ngram for ngrams in map(get_all_ngrams, texts) for ngram in ngrams] + result = dict(groupby(word_ngrams, + key_fn=operator.itemgetter(0), + group_fn=lambda gr: list(set(map(operator.itemgetter(1), gr))))) + return result diff --git a/folkugat_web/services/sessions.py b/folkugat_web/services/sessions.py new file mode 100644 index 0000000..8079d3a --- /dev/null +++ b/folkugat_web/services/sessions.py @@ -0,0 +1,80 @@ +import datetime +from datetime import date as Date +from typing import Optional + +from folkugat_web.config import date as config +from folkugat_web.dal.sql import sessions as dal +from folkugat_web.model import sessions as model +from folkugat_web.model.sql import Order, OrderCol, Range + + +def get_date_names(date: Date) -> model.DateNames: + return model.DateNames( + day_name=config.DAY_NAMES_CAT[date.weekday()], + day=str(date.day), + month_name=config.MONTH_NAMES_CAT[date.month], + year=str(date.year), + ) + + +def new_session() -> model.Session: + sessions = get_sessions() + if not sessions: + venue = model.SessionVenue() + else: + venue = sessions[-1].venue + return model.Session(venue=venue) + + +def get_sessions() -> list[model.Session]: + return dal.get_sessions(order_by=OrderCol(model.SessionCols.DATE, Order.ASCENDING)) + + +def get_next_sessions(limit: Optional[int] = None, offset: Optional[int] = None) -> list[model.Session]: + return dal.get_sessions( + date_range=Range(gte=datetime.date.today()), + order_by=OrderCol(model.SessionCols.DATE, Order.ASCENDING), + limit=limit, + offset=offset, + ) + + +def get_sessions_history(limit: Optional[int] = None, offset: Optional[int] = None) -> list[model.Session]: + return dal.get_sessions( + date_range=Range(lt=datetime.date.today()), + order_by=OrderCol(model.SessionCols.DATE, Order.DESCENDING), + limit=limit, + offset=offset, + ) + + +def get_next_session() -> Optional[model.Session]: + return next(iter(get_next_sessions(limit=1,)), None) + + +def get_live_session() -> Optional[model.Session]: + return next(iter(dal.get_sessions(is_live=True)), None) + + +def get_session(session_id: int) -> Optional[model.Session]: + return next(iter(dal.get_sessions(session_id=session_id)), None) + + +def insert_session(session: model.Session): + return dal.insert_session(session) + + +def set_session(session: model.Session): + dal.update_session(session) + + +def delete_session(session_id: int): + dal.delete_session_by_id(session_id) + + +def stop_live_sessions(): + dal.stop_live_sessions() + + +def set_live_session(session_id: int): + dal.set_live_session(session_id=session_id) diff --git a/folkugat_web/services/temes/__init__.py b/folkugat_web/services/temes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/folkugat_web/services/temes/query.py b/folkugat_web/services/temes/query.py new file mode 100644 index 0000000..f274a00 --- /dev/null +++ b/folkugat_web/services/temes/query.py @@ -0,0 +1,8 @@ +from typing import Optional + +from folkugat_web.dal.sql.temes import query as temes_q +from folkugat_web.model import temes as model + + +def get_tema_by_id(tema_id: int) -> Optional[model.Tema]: + return temes_q.get_tema_by_id(tema_id) diff --git a/folkugat_web/services/temes/search.py b/folkugat_web/services/temes/search.py new file mode 100644 index 0000000..9458f27 --- /dev/null +++ b/folkugat_web/services/temes/search.py @@ -0,0 +1,57 @@ +import time + +import Levenshtein +from folkugat_web.config import search as config +from folkugat_web.dal.sql import get_connection +from folkugat_web.dal.sql.temes import query as temes_q +from folkugat_web.log import logger +from folkugat_web.model import search as search_model +from folkugat_web.model import temes as model + + +def get_query_word_similarity(query_word: str, text_ngrams: model.NGrams) -> search_model.SearchMatch: + n = len(query_word) + if n < config.MIN_NGRAM_LENGTH: + return search_model.SearchMatch(distance=0.0, ngram='') + ns = filter(lambda i: i >= config.MIN_NGRAM_LENGTH, range( + n - config.QUERY_NGRAM_RANGE, n + config.QUERY_NGRAM_RANGE + 1)) + candidate_ngrams = ((m, ngram) + for m, ngrams in map(lambda i: (i, text_ngrams.get(i, [])), ns) + for ngram in ngrams) + return min(search_model.SearchMatch(distance=Levenshtein.distance(query_word, ngram)/m, + ngram=ngram) + for m, ngram in candidate_ngrams) + + +def get_query_similarity(query: str, ngrams: model.NGrams) -> search_model.SearchMatch: + query_words = query.lower().split() + word_matches = map(lambda query_word: get_query_word_similarity(query_word, ngrams), query_words) + return search_model.SearchMatch.combine_matches(word_matches) + + +def build_result(query: str, entry: tuple[int, model.NGrams]) -> search_model.QueryResult: + if len(query) == 0: + return search_model.QueryResult( + id=entry[0], + distance=0, + ngram="", + ) + match = get_query_similarity(query, entry[1]) + return search_model.QueryResult( + id=entry[0], + distance=match.distance, + ngram=match.ngram, + ) + + +def busca_temes(query: str) -> list[model.Tema]: + t0 = time.time() + with get_connection() as con: + tema_id_to_ngrams = temes_q.get_tema_id_to_ngrams(con) + search_results = (build_result(query, entry) for entry in tema_id_to_ngrams.items()) + filtered_results = filter(lambda qr: qr.distance <= config.SEARCH_DISTANCE_THRESHOLD, search_results) + # filtered_results = filter(lambda qr: True, search_results) + sorted_results = sorted(filtered_results, key=lambda qr: qr.distance) + sorted_temes = list(filter(None, map(lambda qr: temes_q.get_tema_by_id(qr.id, con), sorted_results))) + logger.info(f"Search time: { int((time.time() - t0) * 1000) } ms") + return sorted_temes diff --git a/folkugat_web/services/temes/write.py b/folkugat_web/services/temes/write.py new file mode 100644 index 0000000..7e3f2ba --- /dev/null +++ b/folkugat_web/services/temes/write.py @@ -0,0 +1,62 @@ +import dataclasses + +from folkugat_web.dal.sql import get_connection +from folkugat_web.dal.sql.temes import query as temes_q +from folkugat_web.dal.sql.temes import write as temes_w +from folkugat_web.model import temes as model + + +def update_title(tema_id: int, title: str) -> model.Tema: + with get_connection() as con: + tema = temes_q.get_tema_by_id(tema_id=tema_id, con=con) + if tema is None: + raise ValueError(f"No tune found with tema_id = {tema_id}!") + + new_tema = dataclasses.replace(tema, title=title) + new_tema.compute_ngrams() + + temes_w.update_tema(tema=new_tema, con=con) + + return new_tema + + +def update_lyric(tema_id: int, lyric_idx: int, lyric: model.Lyrics) -> model.Tema: + with get_connection() as con: + tema = temes_q.get_tema_by_id(tema_id=tema_id, con=con) + if tema is None: + raise ValueError(f"No tune found with tema_id = {tema_id}!") + if lyric_idx > len(tema.lyrics): + raise ValueError(f'Lyric index out of bounds') + + tema.lyrics[lyric_idx] = lyric + temes_w.update_tema(tema=tema, con=con) + + return tema + + +def delete_lyric(tema_id: int, lyric_idx: int) -> model.Tema: + with get_connection() as con: + tema = temes_q.get_tema_by_id(tema_id=tema_id, con=con) + if tema is None: + raise ValueError(f"No tune found with tema_id = {tema_id}!") + if lyric_idx > len(tema.lyrics): + raise ValueError(f'Lyric index out of bounds') + + del tema.lyrics[lyric_idx] + temes_w.update_tema(tema=tema, con=con) + + return tema + + +def add_lyric(tema_id: int) -> model.Tema: + with get_connection() as con: + tema = temes_q.get_tema_by_id(tema_id=tema_id, con=con) + if tema is None: + raise ValueError(f"No tune found with tema_id = {tema_id}!") + tema.lyrics.append(model.Lyrics( + title=tema.title, + content="", + )) + temes_w.update_tema(tema=tema, con=con) + + return tema diff --git a/folkugat_web/templates.py b/folkugat_web/templates.py new file mode 100644 index 0000000..5f0a190 --- /dev/null +++ b/folkugat_web/templates.py @@ -0,0 +1,5 @@ +from fastapi.templating import Jinja2Templates + +from folkugat_web.config import directories as config + +templates = Jinja2Templates(directory=config.TEMPLATES_DIR) diff --git a/folkugat_web/typing.py b/folkugat_web/typing.py new file mode 100644 index 0000000..86107fc --- /dev/null +++ b/folkugat_web/typing.py @@ -0,0 +1,6 @@ +from typing import TypeVar + +T = TypeVar("T") + +ListOrValue = T | list[T] +OptionalListOrValue = ListOrValue[T] | None diff --git a/folkugat_web/utils.py b/folkugat_web/utils.py new file mode 100644 index 0000000..fa3699e --- /dev/null +++ b/folkugat_web/utils.py @@ -0,0 +1,6 @@ +import itertools + + +def groupby(it, key_fn=lambda x: x, group_fn=lambda x: x): + for k, g in itertools.groupby(sorted(it, key=key_fn), key=key_fn): + yield k, group_fn(g) diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..b548186 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,34 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./folkugat_web/assets/templates/**/*.{html, jinja}"], + theme: { + extend: { + colors: { + 'brown': '#3e3834', + 'beige': '#b27c09', + }, + animation: { + 'fade-in-one': 'fadeIn 1s ease-in 0.3s 1 normal forwards', + 'fade-in-two': 'fadeIn 1s ease-in 0.6s 1 normal forwards', + 'fade-in-three': 'fadeIn 1s ease-in 0.9s 1 normal forwards', + 'grow': 'grow 0.3s ease-in 0s 1 normal forwards', + 'marquee': 'marquee 25s linear infinite', + }, + keyframes: { + fadeIn: { + '0%': { opacity: 0 }, + '100%': { opacity: 1 }, + }, + grow: { + '0%': { width: '0%' }, + '100%': { width: '100%' }, + }, + marquee: { + '0%': { transform: 'translateX(0%)' }, + '100%': { transform: 'translateX(-100%)' }, + } + }, + }, + }, + plugins: [], +}