diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 5fc10b9..3b71a84 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -7,7 +7,7 @@ RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - &&\ apt-get install -y nodejs # Install specific version of npm -RUN npm install -g npm@10.8.1 +RUN npm install -g npm@10.8.3 # Install specific version of Angular CLI RUN npm install -g @angular/cli@17.3.6 diff --git a/.devcontainer/dev-requirements.txt b/.devcontainer/dev-requirements.txt index 36b77d4..7a56e23 100644 --- a/.devcontainer/dev-requirements.txt +++ b/.devcontainer/dev-requirements.txt @@ -3,20 +3,20 @@ mkdocs-material==9.5.32 # Backend -aiohttp==3.10.2 +aiohttp==3.10.5 aiofiles==24.1.0 alembic==1.13.2 apscheduler==3.10.4 async-lru==2.0.4 -fastapi[standard]==0.112.0 +fastapi[standard]==0.115.0 pillow==10.4.0 -sqlmodel==0.0.21 -yt_dlp==2024.8.6 +sqlmodel==0.0.22 +yt-dlp==2024.8.6 # Testing aioresponses==0.7.6 -hypothesis==6.108.5 -schemathesis==3.33.3 -pytest==8.1.1 -pytest-asyncio==0.23.6 -pytest-cov==4.1.0 \ No newline at end of file +hypothesis==6.112.1 +schemathesis==3.36.0 +pytest==8.3.3 +pytest-asyncio==0.24.0 +pytest-cov==5.0.0 \ No newline at end of file diff --git a/.devcontainer/dev-start.sh b/.devcontainer/dev-start.sh index e3f9f25..cb2980c 100755 --- a/.devcontainer/dev-start.sh +++ b/.devcontainer/dev-start.sh @@ -5,7 +5,7 @@ echo "Setting TimeZone to $TZ" echo $TZ > /etc/timezone && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime # Create data folder for storing database and other config files -mkdir -p /data/logs && chown -R vscode:vscode /data +mkdir -p /config/logs && chown -R vscode:vscode /config # Run Alembic migrations echo "Running Alembic migrations" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b576c4c..ce2f19d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -13,7 +13,7 @@ // Mount appdata folder for persistent storage "mounts": [ - "source=/var/appdata/trailarr-dev,target=/data,type=bind,consistency=cached", + "source=/var/appdata/trailarr-dev,target=/config,type=bind,consistency=cached", "source=/media/all/Media,target=/media,type=bind,consistency=cached" ], @@ -24,10 +24,10 @@ "containerEnv": { "PYTHONPATH": "${containerWorkspaceFolder}/backend", - "DEBUG": "False", + "LOG_LEVEL": "Info", "TESTING": "False", "APP_PORT": "7888", - "APP_DATA_DIR": "/data" + "APP_DATA_DIR": "/config" }, "customizations": { diff --git a/Dockerfile b/Dockerfile index 9252563..e5a6652 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ TZ="America/New_York" \ APP_NAME="Trailarr" \ APP_PORT=7889 \ - APP_DATA_DIR="/data" \ + APP_DATA_DIR="/config" \ PUID=1000 \ PGID=1000 \ APP_VERSION=${APP_VERSION} diff --git a/README.md b/README.md index 3f7968c..893692e 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![Python](https://img.shields.io/badge/python-3.12-3670A0?style=flat&logo=python)](https://www.python.org/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) -[![FastAPI](https://img.shields.io/badge/FastAPI-0.112.0-009688.svg?style=flat&logo=FastAPI)](https://fastapi.tiangolo.com) +[![FastAPI](https://img.shields.io/badge/FastAPI-0.115.0-009688.svg?style=flat&logo=FastAPI)](https://fastapi.tiangolo.com) [![Angular](https://img.shields.io/badge/angular-17.3.6-%23DD0031.svg?style=flat&logo=angular)](https://angular.dev/) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/nandyalu/trailarr) @@ -43,7 +43,7 @@ Documentation: [https://nandyalu.github.io/trailarr](https://nandyalu.github.io/ ## Installation -See the [Installation](https://nandyalu.github.io/trailarr/install/install/) guide for detailed instructions on how to install Trailarr. +See the [Installation](https://nandyalu.github.io/trailarr/install/) guide for detailed instructions on how to install Trailarr. ## Setup diff --git a/backend/alembic/versions/20240917_1327-1cc1dd5dbe9f_add_media_status.py b/backend/alembic/versions/20240917_1327-1cc1dd5dbe9f_add_media_status.py new file mode 100644 index 0000000..3449572 --- /dev/null +++ b/backend/alembic/versions/20240917_1327-1cc1dd5dbe9f_add_media_status.py @@ -0,0 +1,51 @@ +"""Add Media Status + +Revision ID: 1cc1dd5dbe9f +Revises: 34f937f1d7b9 +Create Date: 2024-09-17 13:27:49.217863 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from app_logger import ModuleLogger + + +# revision identifiers, used by Alembic. +revision: str = "1cc1dd5dbe9f" +down_revision: Union[str, None] = "34f937f1d7b9" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + +logging = ModuleLogger("AlembicMigrations") + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("media", schema=None) as batch_op: + batch_op.add_column( + sa.Column( + "status", + sa.Enum( + "DOWNLOADED", + "DOWNLOADING", + "MISSING", + "MONITORED", + name="monitorstatus", + ), + server_default="MISSING", + nullable=False, + ) + ) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("media", schema=None) as batch_op: + batch_op.drop_column("status") + + # ### end Alembic commands ### diff --git a/backend/api/v1/authentication.py b/backend/api/v1/authentication.py index 0210f67..076fb5b 100644 --- a/backend/api/v1/authentication.py +++ b/backend/api/v1/authentication.py @@ -1,9 +1,35 @@ +import secrets from typing import Annotated -from fastapi import Cookie, Depends, HTTPException -from fastapi.security import APIKeyHeader, APIKeyQuery +from fastapi import Cookie, Depends, HTTPException, status +from fastapi.security import APIKeyHeader, APIKeyQuery, HTTPBasic, HTTPBasicCredentials from config.settings import app_settings +# Dependency to validate HHTP Basic Authentication in frontend +browser_security = HTTPBasic() + + +def validate_login( + credentials: Annotated[HTTPBasicCredentials, Depends(browser_security)], +): + current_username_bytes = credentials.username.encode("utf8") + correct_username_bytes = b"admin" + is_correct_username = secrets.compare_digest( + current_username_bytes, correct_username_bytes + ) + current_password_bytes = credentials.password.encode("utf8") + correct_password_bytes = b"trailarr" + is_correct_password = secrets.compare_digest( + current_password_bytes, correct_password_bytes + ) + if not (is_correct_username and is_correct_password): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Incorrect username or password", + headers={"WWW-Authenticate": "Basic"}, + ) + return True + # Dependency to validate the API key provided in the query or header header_scheme = APIKeyHeader(name="X-API-KEY", auto_error=False) diff --git a/backend/api/v1/connections.py b/backend/api/v1/connections.py index 7d9e209..0968cd8 100644 --- a/backend/api/v1/connections.py +++ b/backend/api/v1/connections.py @@ -37,7 +37,8 @@ async def get_connections() -> list[ConnectionRead]: async def create_connection(connection: ConnectionCreate) -> str: db_handler = ConnectionDatabaseManager() try: - result = await db_handler.create(connection) + result, connection_id = await db_handler.create(connection) + await refresh_connection(connection_id) except Exception as e: await websockets.ws_manager.broadcast("Failed to add Connection!", "Error") raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e)) @@ -80,7 +81,10 @@ async def get_connection(connection_id: int) -> ConnectionRead: async def update_connection(connection_id: int, connection: ConnectionUpdate) -> str: db_handler = ConnectionDatabaseManager() try: + # Update the connection in the database await db_handler.update(connection_id, connection) + # Refresh data from API for the connection + await refresh_connection(connection_id) except Exception as e: await websockets.ws_manager.broadcast("Failed to update Connection!", "Error") raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(e)) diff --git a/backend/api/v1/models.py b/backend/api/v1/models.py index f6c4320..be45efd 100644 --- a/backend/api/v1/models.py +++ b/backend/api/v1/models.py @@ -24,12 +24,13 @@ class Settings(BaseModel): version: str server_start_time: str timezone: str - debug: bool + log_level: str monitor_enabled: bool monitor_interval: int trailer_folder_movie: bool trailer_folder_series: bool trailer_resolution: int + trailer_file_name: str trailer_file_format: str trailer_audio_format: str trailer_video_format: str @@ -40,6 +41,7 @@ class Settings(BaseModel): trailer_remove_sponsorblocks: bool trailer_web_optimized: bool wait_for_media: bool + yt_cookies_path: str class UpdateSetting(BaseModel): diff --git a/backend/api/v1/movies.py b/backend/api/v1/movies.py index cc1394b..b4ea63f 100644 --- a/backend/api/v1/movies.py +++ b/backend/api/v1/movies.py @@ -5,7 +5,7 @@ from api.v1 import websockets from api.v1.models import ErrorResponse from core.base.database.manager.base import MediaDatabaseManager -from core.base.database.models.media import MediaRead, MediaUpdate +from core.base.database.models.media import MediaRead, MediaUpdate, MonitorStatus from core.files_handler import FilesHandler, FolderInfo from core.tasks.download_trailers import download_trailer_by_id @@ -13,6 +13,13 @@ movies_router = APIRouter(prefix="/movies", tags=["Movies"]) +@movies_router.get("/all") +async def get_all_movies() -> list[MediaRead]: + db_handler = MediaDatabaseManager() + movies = db_handler.read_all(movies_only=True) + return movies + + @movies_router.get("/") async def get_recent_movies(limit: int = 30, offset: int = 0) -> list[MediaRead]: db_handler = MediaDatabaseManager() @@ -108,7 +115,14 @@ async def monitor_movie(movie_id: int, monitor: bool = True) -> str: msg = f"Movie '{movie.title}' [{movie.id}] already has a trailer!" await websockets.ws_manager.broadcast(msg, "Error") return msg - movie_update = MediaUpdate(monitor=monitor) + if monitor: + monitor_status = MonitorStatus.MONITORED + else: + if movie.trailer_exists: + monitor_status = MonitorStatus.DOWNLOADED + else: + monitor_status = MonitorStatus.MISSING + movie_update = MediaUpdate(monitor=monitor, status=monitor_status) db_handler.update(movie_id, movie_update) if monitor: msg = f"Movie '{movie.title}' [{movie.id}] is now monitored" @@ -151,7 +165,7 @@ async def delete_movie_trailer(movie_id: int) -> str: msg = f"Failed to delete trailer for movie '{movie.title}' [{movie.id}]" await websockets.ws_manager.broadcast(msg, "Error") return msg - movie_update = MediaUpdate(trailer_exists=False) + movie_update = MediaUpdate(trailer_exists=False, status=MonitorStatus.MISSING) db_handler.update(movie_id, movie_update) msg = f"Trailer for movie '{movie.title}' [{movie.id}] has been deleted." logging.info(msg) diff --git a/backend/api/v1/series.py b/backend/api/v1/series.py index 9c4960a..e9d0a75 100644 --- a/backend/api/v1/series.py +++ b/backend/api/v1/series.py @@ -5,7 +5,7 @@ from api.v1 import websockets from api.v1.models import ErrorResponse from core.base.database.manager.base import MediaDatabaseManager -from core.base.database.models.media import MediaRead, MediaUpdate +from core.base.database.models.media import MediaRead, MediaUpdate, MonitorStatus from core.files_handler import FilesHandler, FolderInfo from core.tasks.download_trailers import download_trailer_by_id @@ -13,6 +13,13 @@ series_router = APIRouter(prefix="/series", tags=["Series"]) +@series_router.get("/all") +async def get_all_series() -> list[MediaRead]: + db_handler = MediaDatabaseManager() + all_series = db_handler.read_all(movies_only=False) + return all_series + + @series_router.get("/") async def get_recent_series(limit: int = 30, offset: int = 0) -> list[MediaRead]: db_handler = MediaDatabaseManager() @@ -101,7 +108,14 @@ async def monitor_series(series_id: int, monitor: bool = True) -> str: msg = f"Series '{series.title}' [{series.id}] already has a trailer!" await websockets.ws_manager.broadcast(msg, "Error") return msg - series_update = MediaUpdate(monitor=monitor) + if monitor: + monitor_status = MonitorStatus.MONITORED + else: + if series.trailer_exists: + monitor_status = MonitorStatus.DOWNLOADED + else: + monitor_status = MonitorStatus.MISSING + series_update = MediaUpdate(monitor=monitor, status=monitor_status) db_handler.update(series_id, series_update) if monitor: msg = f"Series '{series.title}' [{series.id}] is now monitored" @@ -146,7 +160,7 @@ async def delete_series_trailer(series_id: int) -> str: msg = f"Failed to delete trailer for series '{series.title}' [{series.id}]" await websockets.ws_manager.broadcast(msg, "Error") return msg - series_update = MediaUpdate(trailer_exists=False) + series_update = MediaUpdate(trailer_exists=False, status=MonitorStatus.MISSING) db_handler.update(series_id, series_update) msg = f"Trailer for series '{series.title}' [{series.id}] has been deleted." logging.info(msg) diff --git a/backend/app_logger.py b/backend/app_logger.py index 4275b83..56d5faf 100644 --- a/backend/app_logger.py +++ b/backend/app_logger.py @@ -6,6 +6,7 @@ import pathlib import threading +from config import app_logger_opts from config.settings import app_settings _is_logging_setup = False @@ -25,34 +26,6 @@ def stop_logging(queue: multiprocessing.Queue): queue.close() -def set_handler_level(handler_name, level: int): - """Set the level for a specific handler.""" - logger = logging.getLogger() - for handler in logger.handlers: - if handler.get_name() == handler_name: - handler.setLevel(level) - break - return - - -def set_logger_level() -> None: - """Set the log level for the root logger.""" - log_levels = { - "DEBUG": logging.DEBUG, - "INFO": logging.INFO, - "WARNING": logging.WARNING, - "ERROR": logging.ERROR, - "CRITICAL": logging.CRITICAL, - } - _log_level = "DEBUG" if app_settings.debug else "INFO" - level = log_levels.get(_log_level, logging.INFO) - logging.getLogger().setLevel(level) - set_handler_level("console", level) - set_handler_level("file", level) - logging.info(f"Log level set to '{_log_level}'") - return - - def config_logging(): """Setup the logging configuration using the config file. This will setup the root logger configuration and start the queue handler listener. @@ -70,7 +43,7 @@ def config_logging(): logging.debug(f"Logger config file not found: {config_file}") logging.config.dictConfig(config) - set_logger_level() + app_logger_opts.set_logger_level(app_settings.log_level) logger_thread = threading.Thread(target=handle_logs, args=(queue,)) logger_thread.daemon = True logger_thread.start() diff --git a/backend/config/app_logger_opts.py b/backend/config/app_logger_opts.py new file mode 100644 index 0000000..0ed6ea4 --- /dev/null +++ b/backend/config/app_logger_opts.py @@ -0,0 +1,29 @@ +import logging + + +def set_handler_level(handler_name, log_level: int): + """Set the level for a specific handler.""" + logger = logging.getLogger() + for handler in logger.handlers: + if handler.get_name() == handler_name: + handler.setLevel(log_level) + break + return + + +def set_logger_level(log_level: str) -> None: + """Set the log level for the root logger.""" + log_levels = { + "DEBUG": logging.DEBUG, + "INFO": logging.INFO, + "WARNING": logging.WARNING, + "ERROR": logging.ERROR, + "CRITICAL": logging.CRITICAL, + } + # _log_level = "DEBUG" if app_settings.debug else "INFO" + level = log_levels.get(log_level, logging.INFO) + logging.getLogger().setLevel(level) + set_handler_level("console", level) + set_handler_level("file", level) + logging.info(f"Log level set to '{log_level}'") + return diff --git a/backend/config/settings.py b/backend/config/settings.py index 9d49a00..2f5cb4f 100644 --- a/backend/config/settings.py +++ b/backend/config/settings.py @@ -4,7 +4,9 @@ from dotenv import load_dotenv, set_key -APP_DATA_DIR = os.path.abspath(os.getenv("APP_DATA_DIR", "/data")) +from config import app_logger_opts + +APP_DATA_DIR = os.path.abspath(os.getenv("APP_DATA_DIR", "/config")) ENV_PATH = f"{APP_DATA_DIR}/.env" RESOLUTION_DICT = { "SD": 360, @@ -41,7 +43,9 @@ def __new__(cls) -> "_Config": _DEFAULT_RESOLUTION = 1080 _DEFAULT_LANGUAGE = "en" _DEFAULT_DB_URL = f"sqlite:///{APP_DATA_DIR}/trailarr.db" + _DEFAULT_FILE_NAME = "{title} - Trailer-trailer.{ext}" + _VALID_LOG_LEVELS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] _VALID_AUDIO_FORMATS = ["aac", "ac3", "eac3", "flac", "opus"] _VALID_VIDEO_FORMATS = ["h264", "h265", "vp8", "vp9", "av1"] _VALID_SUBTITLES_FORMATS = ["srt", "vtt", "pgs"] @@ -58,9 +62,9 @@ def __init__(self): # Read properties from ENV variables or set default values if not present self.api_key = os.getenv("API_KEY", "") - self.debug = os.getenv("DEBUG", "False").lower() in ["true", "1"] + self.log_level = os.getenv("LOG_LEVEL", "INFO") self.testing = os.getenv("TESTING", "False").lower() in ["true", "1"] - self.database_url = os.getenv("DATABASE_URL", self._DEFAULT_DB_URL) + # self.database_url = os.getenv("DATABASE_URL", self._DEFAULT_DB_URL) self.monitor_enabled = os.getenv( "MONITOR_ENABLED", "True", @@ -112,13 +116,14 @@ def __init__(self): "TRAILER_WEB_OPTIMIZED", "True", ).lower() in ["true", "1"] + self.trailer_file_name = os.getenv("TRAILER_FILE_NAME", self._DEFAULT_FILE_NAME) self.yt_cookies_path = os.getenv("YT_COOKIES_PATH", "") def as_dict(self): return { "api_key": self.api_key, "app_data_dir": APP_DATA_DIR, - "debug": self.debug, + "log_level": self.log_level, "monitor_enabled": self.monitor_enabled, "monitor_interval": self.monitor_interval, "timezone": self.timezone, @@ -137,6 +142,7 @@ def as_dict(self): "server_start_time": self.server_start_time, "version": self.version, "wait_for_media": self.wait_for_media, + "trailer_file_name": self.trailer_file_name, "yt_cookies_path": self.yt_cookies_path, } @@ -176,16 +182,19 @@ def app_data_dir(self, value: str): pass @property - def debug(self): - """Debug mode for the application. \n - Default is False. \n - Valid values are True/False.""" + def log_level(self): + """Log level for the application. \n + Default is INFO. \n + Valid values are DEBUG, INFO, WARNING, ERROR, CRITICAL.""" return self._debug - @debug.setter - def debug(self, value: bool): - self._debug = value - self._save_to_env("DEBUG", self._debug) + @log_level.setter + def log_level(self, value: str): + if value.upper() not in self._VALID_LOG_LEVELS: + value = "INFO" + self._debug = value.upper() + app_logger_opts.set_logger_level(self._debug) + self._save_to_env("LOG_LEVEL", self._debug) @property def testing(self): @@ -202,21 +211,23 @@ def testing(self, value: bool): @property def database_url(self): """Database URL for the application. \n - Default is 'sqlite:////data/trailarr.db'. \n + Default is 'sqlite:////config/trailarr.db'. \n Valid values are any database URL.""" - return self._database_url - - @database_url.setter - def database_url(self, value: str): - if not value: - value = self._DEFAULT_DB_URL - # If APP_DATA_DIR has updated, and database_url is default, update it to new path - # If ENV DATABASE_URL is modified by user, don't update it - _untouched_db_url = "sqlite:////data/trailarr.db" - if value == _untouched_db_url: - value = self._DEFAULT_DB_URL - self._database_url = value - self._save_to_env("DATABASE_URL", self._database_url) + # return self._database_url + return self._DEFAULT_DB_URL + + # @database_url.setter + # def database_url(self, value: str): + # if not value: + # value = self._DEFAULT_DB_URL + # # If APP_DATA_DIR has updated, and database_url is default, update it to new path + # # If ENV DATABASE_URL is modified by user, don't update it + # _untouched_db_url = "sqlite:////data/trailarr.db" + # # TODO: Change this to /data/trailarr.db in next update! + # if value == _untouched_db_url: + # value = self._DEFAULT_DB_URL + # self._database_url = value + # self._save_to_env("DATABASE_URL", self._database_url) @property def monitor_enabled(self): @@ -255,6 +266,25 @@ def wait_for_media(self, value: bool): self._wait_for_media = value self._save_to_env("WAIT_FOR_MEDIA", self._wait_for_media) + @property + def trailer_file_name(self): + """File name format for trailers. \n + Default is '{title} - Trailer{i}-trailer.{ext}'. \n + Valid values are any string with placeholders.""" + return self._trailer_file_name + + @trailer_file_name.setter + def trailer_file_name(self, value: str): + value = value.strip() + if value.count("{") != value.count("}"): + value = self._DEFAULT_FILE_NAME + if not value.endswith(".{ext}"): + value = value.replace("{ext}", ".{ext}") + if not value.endswith(".{ext}"): + value += ".{ext}" + self._trailer_file_name = value + self._save_to_env("TRAILER_FILE_NAME", self._trailer_file_name) + @property def trailer_folder_movie(self): """Trailer folder for movies. \n @@ -359,7 +389,7 @@ def trailer_subtitles_format(self, value: str): self._trailer_subtitles_format = value if self._trailer_subtitles_format.lower() not in self._VALID_SUBTITLES_FORMATS: self._trailer_subtitles_format = self._DEFAULT_SUBTITLES_FORMAT - self._save_to_env("TRAILER_VIDEO_FORMAT", self._trailer_subtitles_format) + self._save_to_env("TRAILER_SUBTITLES_FORMAT", self._trailer_subtitles_format) @property def trailer_file_format(self): @@ -413,6 +443,18 @@ def trailer_web_optimized(self, value: bool): self._trailer_web_optimized = value self._save_to_env("TRAILER_WEB_OPTIMIZED", self._trailer_web_optimized) + @property + def yt_cookies_path(self): + """Path to the YouTube cookies file. \n + Default is empty string. \n + Valid values are any file path.""" + return self._yt_cookies_path + + @yt_cookies_path.setter + def yt_cookies_path(self, value: str): + self._yt_cookies_path = value + self._save_to_env("YT_COOKIES_PATH", self._yt_cookies_path) + def _save_to_env(self, key: str, value: str | int | bool): """Save the given key-value pair to the environment variables.""" os.environ[key.upper()] = str(value) diff --git a/backend/core/base/connection_manager.py b/backend/core/base/connection_manager.py index 47d189b..ddf9df3 100644 --- a/backend/core/base/connection_manager.py +++ b/backend/core/base/connection_manager.py @@ -1,12 +1,13 @@ -from abc import ABC, abstractmethod +from abc import ABC from functools import cache from typing import Any, Callable, Protocol from app_logger import ModuleLogger +from core.base.database.manager.base import MediaDatabaseManager from core.base.database.models.helpers import MediaReadDC, MediaUpdateDC from core.files_handler import FilesHandler from core.base.database.models.connection import ConnectionRead, MonitorType -from core.base.database.models.media import MediaCreate +from core.base.database.models.media import MediaCreate, MonitorStatus logger = ModuleLogger("ConnectionManager") @@ -97,6 +98,7 @@ def _apply_path_mappings(self, media_list: list[MediaCreate]) -> list[MediaCreat return media_list # Loop through the media_list and apply the path mappings updated_media_list: list[MediaCreate] = [] + media_path_updated = False for media in media_list: if not media.folder_path: updated_media_list.append(media) @@ -106,8 +108,13 @@ def _apply_path_mappings(self, media_list: list[MediaCreate]) -> list[MediaCreat media.folder_path = media.folder_path.replace( path_mapping.path_from, path_mapping.path_to ) + media.folder_path = media.folder_path.replace("\\", "/") updated_media_list.append(media) + media_path_updated = True break + if not media_path_updated: + media.folder_path = media.folder_path.replace("\\", "/") + updated_media_list.append(media) return updated_media_list async def _check_trailer(self, folder_path: str) -> bool: @@ -150,29 +157,61 @@ def _check_monitoring( return arr_monitored return False - @abstractmethod + @cache + def _get_media_status( + self, trailer_exists: bool, monitor: bool, current_status: MonitorStatus + ) -> MonitorStatus: + """Get the media status based on the trailer and monitoring status.\n + Args: + trailer_exists (bool): Flag indicating if a trailer exists on disk. + monitor (bool): Flag indicating if the media should be monitored. + current_status (MonitorStatus): The current media status.\n + Returns: + MonitorStatus: The new media status.""" + # If media is already downloading, return downloading status + if current_status == MonitorStatus.DOWNLOADING: + return MonitorStatus.DOWNLOADING + # If trailer exists, return downloaded status + if trailer_exists: + return MonitorStatus.DOWNLOADED + # If media is monitored, return monitored status + if monitor: + return MonitorStatus.MONITORED + # Else, return missing status + return MonitorStatus.MISSING + def create_or_update_bulk(self, media_data: list[MediaCreate]) -> list[MediaReadDC]: - """Create or update media in the database and return \ - objects that satisfy MediaReadProtocol.\n + """Create or update media in the database and return MediaRead objects.\n Args: - media_data (list[_MediaCreate]): The media data to create or update.\n + media_data (list[MovieCreate]): The movie data to create or update.\n Returns: - list[MediaReadProtocol]: The media objects that satisfy MediaReadProtocol.""" - raise NotImplementedError("Subclasses must implement this method") + list[MediaReadDC]: A list of MediaRead objects.""" + movie_read_list = MediaDatabaseManager().create_or_update_bulk(media_data) + return [ + MediaReadDC( + id=movie_read.id, + created=created, + folder_path=movie_read.folder_path, + arr_monitored=movie_read.arr_monitored, + monitor=movie_read.monitor, + status=movie_read.status, + ) + for movie_read, created in movie_read_list + ] - @abstractmethod def remove_deleted_media(self, media_ids: list[int]) -> None: """Remove the media from the database that are not present in the Arr application. \n Args: media_ids (list[int]): List of media ids to remove.""" - raise NotImplementedError("Subclasses must implement this method") + MediaDatabaseManager().delete_except(self.connection_id, media_ids) + return - @abstractmethod def update_media_status_bulk(self, media_update_list: list[MediaUpdateDC]): """Update the media status in the database. \n Args: media_update_list (list[MediaUpdateDC]): List of media update data.""" - raise NotImplementedError("Subclasses must implement this method") + MediaDatabaseManager().update_media_status_bulk(media_update_list) + return async def refresh(self): """Gets new data from Arr API and saves it to the database.""" @@ -201,14 +240,18 @@ async def refresh(self): else: # Else, check if monitor needs to be enabled now monitor_media = self._check_monitoring( - media_read.created, - trailer_exists, - media_read.arr_monitored, + media_read.created, trailer_exists, media_read.arr_monitored ) + # Set media status based on trailer and monitoring status + status = self._get_media_status( + trailer_exists, monitor_media, media_read.status + ) + # Append to the update list update_list.append( MediaUpdateDC( id=media_read.id, monitor=monitor_media, + status=status, trailer_exists=trailer_exists, ) ) diff --git a/backend/core/base/database/manager/base.py b/backend/core/base/database/manager/base.py index 76dde31..ebbff37 100644 --- a/backend/core/base/database/manager/base.py +++ b/backend/core/base/database/manager/base.py @@ -10,6 +10,7 @@ MediaCreate, MediaRead, MediaUpdate, + MonitorStatus, ) from core.base.database.utils.engine import manage_session from exceptions import ItemNotFoundError @@ -22,7 +23,9 @@ def id(self) -> int: ... @property def monitor(self) -> bool: ... @property - def trailer_exists(self) -> bool: ... + def status(self) -> MonitorStatus: ... + @property + def trailer_exists(self) -> bool | None: ... @property def yt_id(self) -> str | None: ... @property @@ -47,7 +50,7 @@ def create_or_update_bulk( If media already exists, it will be updated, otherwise it will be created.\n Args: media_create_list (list[MediaCreate]): List of media objects to create or update.\n - _session (Session) [Optional]: A session to use for the database connection.\n + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: list[tuple[MediaRead, bool]]: List of tuples with MediaRead objects and created flag.\n @@ -87,7 +90,7 @@ def read( """Get a media object from the database by id.\n Args: id (int): The id of the media object to get. - _session (Session) [Optional]: A session to use for the database connection.\n + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: MediaRead: The MediaRead object if it exists. @@ -108,10 +111,10 @@ def read_all( ) -> list[MediaRead]: """Get all media objects from the database.\n Args: - movies_only (bool) [Optional]: Flag to get only movies. Default is None.\n + movies_only (bool, Optional): Flag to get only movies. Default is None.\n If True, it will return only movies. If False, it will return only series.\n If None, it will return all media items.\n - _session (Session) [Optional]: A session to use for the database connection.\n + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: list[MediaRead]: List of MediaRead objects. @@ -132,7 +135,7 @@ def read_all_by_connection( """Get all media objects from the database for a given connection.\n Args: connection_id (int): The id of the connection to get media items for. - _session (Session) [Optional]: A session to use for the database connection.\n + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: list[MediaRead]: List of MediaRead objects. @@ -160,12 +163,12 @@ def read_recent( ) -> list[MediaRead]: """Get the most recent media objects from the database.\n Args: - limit (int) [Optional]: The number of recent media items to get. Max 100 - offset (int) [Optional]: The offset to start from. Default is 0. - movies_only (bool) [Optional]: Flag to get only movies. Default is None.\n + limit (int, Optional): The number of recent media items to get. Max 100 + offset (int, Optional): The offset to start from. Default is 0. + movies_only (bool, Optional): Flag to get only movies. Default is None.\n If True, it will return only movies. If False, it will return only series.\n If None, it will return all media items.\n - _session (Session) [Optional]: A session to use for the database connection.\n + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: list[MediaRead]: List of MediaRead objects. @@ -189,9 +192,9 @@ def read_recently_downloaded( ) -> list[MediaRead]: """Get the most recently downloaded media objects from the database.\n Args: - limit (int) [Optional]: The number of recent media items to get. Max 100 - offset (int) [Optional]: The offset to start from. Default is 0. - _session (Session) [Optional]: A session to use for the database connection.\n + limit (int, Optional): The number of recent media items to get. Max 100 + offset (int, Optional): The offset to start from. Default is 0. + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: list[MediaRead]: List of MediaRead objects. @@ -200,7 +203,7 @@ def read_recently_downloaded( limit = max(1, min(limit, 100)) statement = ( select(Media) - .where(col(Media.downloaded_at).is_not(None)) + .where(Media.status == MonitorStatus.DOWNLOADED) .order_by(desc(Media.downloaded_at)) .offset(offset) .limit(limit) @@ -224,8 +227,8 @@ def search( Otherwise, it will return a list of [max 50 recently added] Media matching the query.\n Args: query (str): The search query to search for in the media items. - offset (int) [Optional]: The offset to start from. Default is 0. - _session (Session) [Optional]: A session to use for the database connection.\n + offset (int, Optional): The offset to start from. Default is 0. + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: list[MediaRead]: List of MediaRead objects. @@ -252,8 +255,8 @@ def update( Args: media_id (int): The id of the media to update. media_update (MediaUpdate): The media data to update. - _commit (bool) [Optional]: Flag to `commit` the changes. Default is `True`. - _session (Session) [Optional]: A session to use for the database connection. \ + _commit (bool, Optional): Flag to `commit` the changes. Default is `True`. + _session (Session, Optional): A session to use for the database connection. \ Default is None, in which case a new session will be created. \n Returns: None @@ -263,7 +266,7 @@ def update( db_media = self._get_db_item(media_id, _session) media_update_data = media_update.model_dump( exclude_unset=True, - exclude_defaults=True, + # exclude_defaults=True, exclude_none=True, exclude={"youtube_trailer_id", "downloaded_at"}, ) @@ -284,7 +287,7 @@ def update_bulk( Args: media_updates (list[tuple[int, MediaUpdate]]): List of tuples with media id \ and update data.\n - _session (Session) [Optional]: A session to use for the database connection.\n + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created.\n Returns: None @@ -307,17 +310,34 @@ def update_media_status( """Update the monitoring status of a media item in the database by id.\n Args: media_update (MediaUpdateProtocol): The media update object satisfying the protocol. - _commit (bool) [Optional]: Flag to `commit` the changes. Default is `True`. - _session (Session) [Optional]: A session to use for the database connection. \ - Default is None, in which case a new session will be created. + _commit (bool, Optional): Flag to `commit` the changes. Default is `True`. + _session (Session, Optional): A session to use for the database connection. \ + Default is `None`, in which case a new session will be created. Returns: None Raises: ItemNotFoundError: If the media item with provided id doesn't exist. """ db_media = self._get_db_item(media_update.id, _session) - db_media.monitor = media_update.monitor - db_media.trailer_exists = media_update.trailer_exists + if media_update.trailer_exists is not None: + db_media.trailer_exists = media_update.trailer_exists + # If trailer exists, disable monitoring + if db_media.trailer_exists: + db_media.monitor = False + else: + db_media.monitor = media_update.monitor + # Update status based on monitor status and trailer existence if not downloading + if media_update.status != MonitorStatus.DOWNLOADING: + if db_media.trailer_exists: + _status = MonitorStatus.DOWNLOADED + else: + if db_media.monitor: + _status = MonitorStatus.MONITORED + else: + _status = MonitorStatus.MISSING + else: # If downloading, set status to downloading + _status = MonitorStatus.DOWNLOADING + db_media.status = _status if media_update.downloaded_at: db_media.downloaded_at = media_update.downloaded_at if media_update.yt_id: @@ -337,7 +357,7 @@ def update_media_status_bulk( """Update the monitoring status of multiple media items in the database at once.\n Args: media_update_list (Sequence[MediaUpdateProtocol]): Sequence of media update objects.\n - _session (Session) [Optional]: A session to use for the database connection.\n + _session (Session, Optional): A session to use for the database connection.\n Default is None, in which case a new session will be created. Returns: None @@ -359,7 +379,7 @@ def delete( """Delete a media item from the database by id.\n Args: media_id (int): The id of the media to delete. - _session (Session) [Optional]: A session to use for the database connection.\ + _session (Session, Optional): A session to use for the database connection.\ Default is None, in which case a new session will be created.\n Returns: None @@ -381,7 +401,7 @@ def delete_bulk( """Delete multiple media items from the database at once.\n Args: media_ids (list[int]): List of media id's to delete. - _session (Session) [Optional]: A session to use for the database connection.\ + _session (Session, Optional): A session to use for the database connection.\ Default is None, in which case a new session will be created.\n Returns: None @@ -412,7 +432,7 @@ def delete_except( Args: connection_id (int): The id of the connection to delete media items for. media_ids (list[int]): List of media id's to keep. - _session (Session) [Optional]: A session to use for the database connection.\ + _session (Session, Optional): A session to use for the database connection.\ Default is None, in which case a new session will be created.\n Returns: None diff --git a/backend/core/base/database/manager/connection.py b/backend/core/base/database/manager/connection.py index c8b9284..519fd20 100644 --- a/backend/core/base/database/manager/connection.py +++ b/backend/core/base/database/manager/connection.py @@ -25,14 +25,15 @@ async def create( connection: ConnectionCreate, *, _session: Session = None, # type: ignore - ) -> str: + ) -> tuple[str, int]: """Create a new connection in the database \n Args: connection (Connection): The connection to create _session (optional): A session to use for the database connection. \ Defaults to None, in which case a new session is created. \n Returns: - str: The status message of the connection with version if created. \n + tuple(str, int): The status message of the connection with version if created. \ + and the id of the created connection. \n Raises: ConnectionError: If the connection is refused / response is not 200 ConnectionTimeoutError: If the connection times out @@ -48,7 +49,8 @@ async def create( # Use the session to add the connection to the database _session.add(db_connection) _session.commit() - return status + assert db_connection.id is not None + return status, db_connection.id @manage_session def check_if_exists( @@ -85,6 +87,29 @@ def read_all( connections = _session.exec(statement).all() return [ConnectionRead.model_validate(connection) for connection in connections] + def _end_path_with_slash(self, path: str) -> str: + """End a path with a slash if it does not already have one \n + Args: + path (str): The path to end with a slash \n + Returns: + str: The path with a slash at the end + """ + # Check if path has a slash '/' (Linux/MacOS) + if path.count("/") > 1: + # End path with a slash if it does not have one + if not path.endswith("/"): + path += "/" + return path + # Check if path has a backslash '\' (Windows) + # Python uses double backslashes for escape characters, so we need to check for '\\' + # to escape the backslash itself which will be a single backslash in the path + if path.count("\\") > 1: + # End path with a slash if it does not have one + if not path.endswith("\\"): + path += "\\" + return path + return path + def _convert_path_mappings( self, connection: ConnectionCreate | ConnectionUpdate ) -> list[PathMapping]: @@ -97,6 +122,11 @@ def _convert_path_mappings( db_path_mappings: list[PathMapping] = [] for path_mapping in connection.path_mappings: db_path_mapping = PathMapping.model_validate(path_mapping) + # Make sure that path_from/path_to ends with a slash + db_path_mapping.path_from = self._end_path_with_slash( + db_path_mapping.path_from + ) + db_path_mapping.path_to = self._end_path_with_slash(db_path_mapping.path_to) db_path_mappings.append(db_path_mapping) return db_path_mappings diff --git a/backend/core/base/database/models/helpers.py b/backend/core/base/database/models/helpers.py index 55ac35a..2dfecc8 100644 --- a/backend/core/base/database/models/helpers.py +++ b/backend/core/base/database/models/helpers.py @@ -1,6 +1,8 @@ -from dataclasses import dataclass +from dataclasses import dataclass, asdict from datetime import datetime +from core.base.database.models.media import MonitorStatus + @dataclass class MediaImage: @@ -23,6 +25,10 @@ class MediaTrailer: folder_path: str downloaded_at: datetime | None = None + def to_dict(self) -> dict: + """Convert MediaTrailer object to a dictionary.""" + return asdict(self) + @dataclass(eq=False, frozen=True, repr=False, slots=True) class MediaReadDC: @@ -31,12 +37,14 @@ class MediaReadDC: folder_path: str | None arr_monitored: bool monitor: bool + status: MonitorStatus @dataclass(eq=False, frozen=True, repr=False, slots=True) class MediaUpdateDC: id: int monitor: bool - trailer_exists: bool + status: MonitorStatus + trailer_exists: bool | None = None yt_id: str | None = None downloaded_at: datetime | None = None diff --git a/backend/core/base/database/models/media.py b/backend/core/base/database/models/media.py index a1c9baa..71f23a7 100644 --- a/backend/core/base/database/models/media.py +++ b/backend/core/base/database/models/media.py @@ -1,4 +1,5 @@ from datetime import datetime, timezone +from enum import Enum from sqlmodel import Field, SQLModel, ForeignKey @@ -10,7 +11,15 @@ def get_current_year(): return datetime.now(timezone.utc).year -# TODO: Change Movie and Series models to Media model +class MonitorStatus(Enum): + """Monitor status for media. \n""" + + DOWNLOADED = "downloaded" + DOWNLOADING = "downloading" + MISSING = "missing" + MONITORED = "monitored" + + class MediaBase(SQLModel): """Base class for the Media model. \n Note: \n @@ -40,6 +49,7 @@ class MediaBase(SQLModel): trailer_exists: bool = Field(default=False) monitor: bool = Field(default=False) arr_monitored: bool = Field(default=False) + status: MonitorStatus = Field(default=MonitorStatus.MISSING) class Media(MediaBase, table=True): diff --git a/backend/core/download/trailer.py b/backend/core/download/trailer.py index 5c6d1e3..734271f 100644 --- a/backend/core/download/trailer.py +++ b/backend/core/download/trailer.py @@ -1,5 +1,6 @@ # Extract youtube video id from url from datetime import datetime, timezone +from functools import partial import os import re import shutil @@ -11,6 +12,7 @@ from app_logger import ModuleLogger from config.settings import app_settings from core.base.database.models.helpers import MediaTrailer +from core.download import video_analysis from core.download.video import download_video logger = ModuleLogger("TrailersDownloader") @@ -32,6 +34,26 @@ def _get_youtube_id(url: str) -> str | None: return None +def _yt_search_filter(info: dict, *, incomplete, exclude: list[str] | None): + """Filter for videos shorter than 10 minutes and not a review.""" + id = info.get("id") + if not id: + return None + if not exclude: + exclude = [] + if id in exclude: + logger.debug(f"Skipping video in excluded list: {id}") + return "Video in excluded list" + duration = int(info.get("duration", 0)) + if duration and duration > 600: + logger.debug(f"Skipping long video (>10m): {id}") + return "The video is longer than 10 minutes" + title = str(info.get("title", "")) + if "review" in title.lower(): + logger.debug(f"Skipping review video: {id}") + return "The video is a review" + + def _search_yt_for_trailer( movie_title: str, is_movie=True, @@ -47,20 +69,22 @@ def _search_yt_for_trailer( str | None: Youtube video id / None if not found.""" logger.debug(f"Searching youtube for trailer for '{movie_title}'...") # Set options + filter_func = partial(_yt_search_filter, exclude=exclude) options = { "format": "bestvideo[height<=?1080]+bestaudio", + "match_filter": filter_func, "noplaylist": True, "extract_flat": "discard_in_playlist", "fragment_retries": 10, # Fix issue with youtube-dl not being able to download some videos # See https://github.com/yt-dlp/yt-dlp/issues/9554 - "extractor_args": {"youtube": {"player_client": ["ios", "web"]}}, + # "extractor_args": {"youtube": {"player_client": ["ios", "web"]}}, "noprogress": True, "no_warnings": True, "quiet": True, } - # Construct search query with keywords - search_query = f"ytsearch: {movie_title}" + # Construct search query with keywords for 5 search results + search_query = f"ytsearch5: {movie_title}" if movie_year: search_query += f" ({movie_year})" search_query += " movie" if is_movie else " series" @@ -77,11 +101,13 @@ def _search_yt_for_trailer( return None if "entries" not in search_results: return None - # Return the first search result video id + # Return the first search result video id that matches the criteria if not exclude: exclude = [] for result in search_results["entries"]: + # Skip if video id is in exclude list if result["id"] in exclude: + logger.debug(f"Skipping excluded video: {result['id']}") continue logger.debug(f"Found trailer for {movie_title}: {result['id']}") return str(result["id"]) @@ -101,6 +127,7 @@ def download_trailer( is_movie (bool): Whether the media type is movie or show. \n Returns: bool: True if trailer is downloaded successfully, False otherwise.""" + trailer_downloaded = False if not exclude: exclude = [] if media.yt_id: @@ -111,19 +138,42 @@ def download_trailer( # Search for trailer on youtube video_id = _search_yt_for_trailer(media.title, is_movie, media.year, exclude) if not video_id: - return False - # Download the trailer - trailer_url = f"https://www.youtube.com/watch?v={video_id}" - logger.debug(f"Downloading trailer for {media.title} from {trailer_url}") - output_file = download_video(trailer_url, f"/tmp/{media.id}-trailer.%(ext)s") - if not output_file: + trailer_downloaded = False + else: + # Download the trailer + trailer_url = f"https://www.youtube.com/watch?v={video_id}" + logger.debug(f"Downloading trailer for {media.title} from {trailer_url}") + tmp_output_file = f"/tmp/{media.id}-trailer.%(ext)s" + output_file = download_video(trailer_url, tmp_output_file) + tmp_output_file = tmp_output_file.replace( + "%(ext)s", app_settings.trailer_file_format + ) + # Check if the trailer is downloaded successfully + if not output_file or not os.path.exists(tmp_output_file): + trailer_downloaded = False + else: + # Verify the trailer has audio and video streams + trailer_downloaded = video_analysis.verify_trailer_streams(output_file) + if not trailer_downloaded: + logger.debug( + f"Trailer has either no audio or video streams: {media.title}" + ) + logger.debug(f"Deleting failed trailer file: {output_file}") + try: + os.remove(output_file) + except Exception as e: + logger.error(f"Failed to delete trailer file: {e}") + + # Retry downloading the trailer if failed + if not trailer_downloaded: if retry_count > 0: logger.debug( f"Trailer download failed for {media.title} from {trailer_url}, " f"trying again... [{3 - retry_count}/3]" ) media.yt_id = None - exclude.append(video_id) + if video_id: + exclude.append(video_id) return download_trailer( media, trailer_folder, is_movie, retry_count - 1, exclude ) @@ -137,9 +187,9 @@ def download_trailer( else: trailer_path = media.folder_path try: - if not os.path.exists(trailer_path): - os.makedirs(trailer_path) - return move_trailer_to_folder(output_file, trailer_path, media.title) + # if not os.path.exists(trailer_path): + # os.makedirs(trailer_path) + return move_trailer_to_folder(output_file, trailer_path, media) except Exception as e: logger.error(f"Failed to move trailer to folder: {e}") return False @@ -172,7 +222,7 @@ def normalize_filename(filename: str) -> str: def get_trailer_path( - src_path: str, dst_folder_path: str, new_title: str, increment_index: int = 1 + src_path: str, dst_folder_path: str, media: MediaTrailer, increment_index: int = 1 ) -> str: """Get the destination path for the trailer file. \n Checks if - Trailer-trailer exists in the destination folder. \n @@ -185,29 +235,61 @@ def get_trailer_path( Args: src_path (str): Source path of the trailer file. dst_folder_path (str): Destination folder path. - new_title (str): New title of the media. + media (MediaTitle): MediaTitle object. increment_index (int): Index to increment the trailer number. \n Returns: str: Destination path for the trailer file.""" + # Get trailer file name format from settings + title_format = app_settings.trailer_file_name + if title_format.count("{") != title_format.count("}"): + logger.error("Invalid title format, setting to default") + return src_path + title_opts = media.to_dict() # Convert media object to dictionary for formatting + title_opts["resolution"] = f"{app_settings.trailer_resolution}p" + title_opts["vcodec"] = app_settings.trailer_video_format + title_opts["acodec"] = app_settings.trailer_audio_format + + # Remove increment index if it's 0 + title_opts["ii"] = increment_index + if increment_index == 1: + title_format = title_format.replace("{ii}", "") + else: + # If increment index > 0 and not in title format, add it + if "{ii}" not in title_format: + # If title format ends with "-trailer.{ext}", add increment index before it + if title_format.endswith("-trailer.{ext}"): + title_format = title_format.replace( + "-trailer.{ext}", "{ii}-trailer.{ext}" + ) + # If title format does not end with "-trailer.{ext}", + # add increment index before extension + else: + title_format = title_format.replace(".{ext}", "{ii}.{ext}") + # Add space before increment index + title_format = title_format.replace("{ii}", "{ii: }") + + # Get filename from source path and extract extension filename = os.path.basename(src_path) _ext = os.path.splitext(filename)[1] - if increment_index > 1: - filename = f"{new_title} - Trailer {increment_index}-trailer{_ext}" - else: - filename = f"{new_title} - Trailer-trailer{_ext}" + _ext = _ext.replace(".", "") + title_opts["ext"] = _ext + + # Format the title to get the new filename + filename = title_format.format(**title_opts) + # Normalize the filename filename = normalize_filename(filename) # Get the destination path dst_file_path = os.path.join(dst_folder_path, filename) # If file exists in destination, increment the index, else return path if os.path.exists(dst_file_path): - return get_trailer_path( - src_path, dst_folder_path, new_title, increment_index + 1 - ) + return get_trailer_path(src_path, dst_folder_path, media, increment_index + 1) return dst_file_path -def move_trailer_to_folder(src_path: str, dst_folder_path: str, new_title: str) -> bool: +def move_trailer_to_folder( + src_path: str, dst_folder_path: str, media: MediaTrailer +) -> bool: # Move the trailer file to the specified folder if not os.path.exists(src_path): logger.debug(f"Trailer file not found at: {src_path}") @@ -220,9 +302,11 @@ def move_trailer_to_folder(src_path: str, dst_folder_path: str, new_title: str) if not os.path.exists(dst_folder_path): logger.debug(f"Creating folder: {dst_folder_path}") os.makedirs(dst_folder_path, mode=dst_permissions) + # Explicitly set the permissions for the folder + os.chmod(dst_folder_path, dst_permissions) # Construct the new filename and move the file - dst_file_path = get_trailer_path(src_path, dst_folder_path, new_title) + dst_file_path = get_trailer_path(src_path, dst_folder_path, media) shutil.move(src_path, dst_file_path) # Set the moved file's permissions to match the destination folder's permissions diff --git a/backend/core/download/video.py b/backend/core/download/video.py index 7cac2ca..ed8d96e 100644 --- a/backend/core/download/video.py +++ b/backend/core/download/video.py @@ -39,7 +39,7 @@ def _postprocessor_hook(d): "endtime": None, "filepath": "", } - logger.debug(f"'Trailers': [{pprocessor}] Converting downloaded file...") + logger.info(f"'Trailers': [{pprocessor}] Converting downloaded file...") if d["status"] == "processing": logger.debug(f"'Trailers': [{pprocessor}] Conversion in progress...") if d["status"] == "finished": # Guaranteed to call diff --git a/backend/core/download/video_analysis.py b/backend/core/download/video_analysis.py new file mode 100644 index 0000000..8aa3af1 --- /dev/null +++ b/backend/core/download/video_analysis.py @@ -0,0 +1,240 @@ +from datetime import datetime +import os +import re +import subprocess +import json + +from pydantic import BaseModel + +from app_logger import ModuleLogger + +logger = ModuleLogger("VideoAnalysis") + + +class StreamInfo(BaseModel): + + index: int + codec_type: str + codec_name: str + coded_height: int = 0 + coded_width: int = 0 + + +class VideoInfo(BaseModel): + + name: str + format_name: str + duration_seconds: int = 0 + size: int = 0 + bit_rate: int = 0 + streams: list[StreamInfo] + + @property + def duration(self): + duration = self.duration_seconds + hours, remainder = divmod(duration, 3600) + minutes, seconds = divmod(remainder, 60) + return f"{hours}:{minutes:02}:{seconds:02}" + + +def get_media_info(file_path: str) -> VideoInfo | None: + """ + Get media information using ffprobe. \n + Args: + file_path (str): Path to the media file. \n + Returns: + VideoInfo | None: VideoInfo object if successful, None otherwise. + """ + entries_required = ( + "format=format_name,duration,size,bit_rate : " + "stream=index,codec_type,codec_name,coded_height,coded_width" + ) + ffprobe_cmd = [ + "ffprobe", + "-v", + "error", + "-show_entries", + entries_required, + "-of", + "json", + file_path, + ] + try: + logger.debug(f"Running media analysis for: {file_path}") + # Run ffprobe command to get media info + result = subprocess.run( + ffprobe_cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + # Return None if command failed + if result.returncode != 0: + logger.error(f"Error: {result.stderr}") + return None + + # If command ran successfully, parse the output + info = json.loads(result.stdout) + format: dict[str, str] = info.get("format", {}) + # Create VideoInfo object + video_info = VideoInfo( + name=os.path.basename(file_path), + format_name=str(format.get("format_name", "N/A")), + duration_seconds=int(float(format.get("duration", "0"))), + size=int(format.get("size", "0")), + bit_rate=int(format.get("bit_rate", "0")), + streams=[], + ) + # Loop through streams and create StreamInfo objects + for stream in info["streams"]: + stream_info = StreamInfo( + index=int(stream.get("index", 0)), + codec_type=str(stream.get("codec_type", "N/A")), + codec_name=str(stream.get("codec_name", "N/A")), + coded_height=int(stream.get("coded_height", 0)), + coded_width=int(stream.get("coded_width", 0)), + ) + video_info.streams.append(stream_info) + return video_info + except Exception as e: + print(f"Exception: {str(e)}") + return None + + +def verify_trailer_streams(trailer_path: str): + """ + Check if the trailer has audio and video streams. \n + Args: + trailer_path (str): Path to the trailer file. \n + Returns: + bool: True if the trailer has audio and video streams, False otherwise. + """ + # Check trailer file exists + logger.debug(f"Verifying trailer streams for: {trailer_path}") + if not trailer_path: + return False + # Get media analysis for the trailer + media_info = get_media_info(trailer_path) + if media_info is None: + logger.debug(f"No media info found for the trailer: {trailer_path}") + return False + # Verify the trailer has audio and video streams + streams = media_info.streams + if len(streams) == 0: + logger.debug(f"No streams found in the trailer: {trailer_path}") + return False + audio_exists = False + video_exists = False + for stream in streams: + if stream.codec_type == "audio": + audio_exists = True + if stream.codec_type == "video": + video_exists = True + if not audio_exists: + logger.debug(f"No audio stream found in the trailer: {trailer_path}") + return False + if not video_exists: + logger.debug(f"No video stream found in the trailer: {trailer_path}") + return False + logger.debug(f"Trailer streams verified for: {trailer_path}") + return True + + +def get_silence_timestamps(file_path): + time = datetime.now() + try: + result = subprocess.run( + [ + "ffmpeg", + "-i", + file_path, + "-af", + "silencedetect=noise=-30dB:d=3", + "-f", + "null", + "-", + ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + silence_start = None + silence_end = None + for line in result.stderr.split("\n"): + if "silence_start" in line: + silence_start = float( + re.search(r"silence_start: (\d+\.\d+)", line).group(1) # type: ignore + ) + if "silence_end" in line: + silence_end = float( + re.search(r"silence_end: (\d+\.\d+)", line).group(1) # type: ignore + ) + if silence_start is not None and silence_end is not None: + print(f"Silence start: {silence_start}, Silence end: {silence_end}") + break + timeTook = datetime.now() - time + print(f"Time took: {timeTook}") + return silence_start, silence_end + except Exception as e: + print(f"Exception: {str(e)}") + timeTook = datetime.now() - time + print(f"Time took: {timeTook}") + return None, None + + +def detect_silence(file_path, output_file, end_timestamp): + time = datetime.now() + try: + # Remove silence + remove_cmd = [ + "ffmpeg", + "-i", + file_path, + "-to", + str(end_timestamp), + "-c:v", + "copy", + "-c:a", + "copy", + "-c:s", + "copy", + output_file, + ] + remove_result = subprocess.run( + remove_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True + ) + if remove_result.returncode == 0: + # print("STDERR:") + # print(remove_result.stderr) + print(f"Silent parts removed and saved to {output_file}") + else: + print(f"Error: {remove_result.stderr}") + except Exception as e: + print(f"Exception: {str(e)}") + timeTook = datetime.now() - time + print(f"Time took: {timeTook}") + return None + + +# folder = "/media/movies/all/Pechi (2024) {imdb-tt33034505}" +# input_file = f"{folder}/Pechi - Trailer-trailer.webm" +# output_file = f"{folder}/Pechi - Trailer 1-trailer.mkv" +# res = get_media_info(input_file) +# print(res) +# if not res: +# print("No media info") +# exit(0) +# streams = res.streams +# if not any(stream.codec_type == "audio" for stream in streams): +# # No audio stream, delete the trailer file +# print("No audio stream") +# silence_start, silence_end = get_silence_timestamps(input_file) +# We will use the start time of the silence to remove the silent part from the video +# if silence_start is not None and silence_end is not None: +# detect_silence( +# input_file, +# output_file, +# silence_start, +# ) +# else: +# print("No silence detected") diff --git a/backend/core/files_handler.py b/backend/core/files_handler.py index 7a93e50..d23e2c5 100644 --- a/backend/core/files_handler.py +++ b/backend/core/files_handler.py @@ -228,6 +228,84 @@ async def check_trailer_exists(path: str, check_inline_file=False) -> bool: return True return False + @staticmethod + async def _get_inline_trailer_path(folder_path: str) -> str | None: + """Get the path to the trailer file in the specified folder.\n + Args: + folder_path (str): Path to the folder containing the trailer file.\n + Returns: + str | None: Path to the trailer file if it exists, otherwise an empty string. \ + None if the folder does not exist or the trailer file is not found. + """ + # Check if folder exists + if not await aiofiles.os.path.isdir(folder_path): + return None + + # Check for trailer as a file + for entry in await aiofiles.os.scandir(folder_path): + if not entry.is_file(): + continue + if not entry.name.endswith((".mp4", ".mkv", ".avi", ".webm")): + continue + if "-trailer." not in entry.name: + continue + return entry.path + return None + + @staticmethod + async def _get_folder_trailer_path(folder_path: str) -> str | None: + """Get the path to the trailer file in the specified folder.\n + Args: + folder_path (str): Path to the folder containing the trailer file.\n + Returns: + str | None: Path to the trailer file if it exists, otherwise an empty string. \ + None if the folder does not exist or the trailer file is not found. + """ + # Check if folder exists + if not await aiofiles.os.path.isdir(folder_path): + return None + + # Check for trailer as a folder + for entry in await aiofiles.os.scandir(folder_path): + if not entry.is_dir(): + continue + if not entry.name.lower() == "trailers": + continue + for sub_entry in await aiofiles.os.scandir(entry.path): + if not sub_entry.is_file(): + continue + if sub_entry.name.endswith((".mp4", ".mkv", ".avi", ".webm")): + return sub_entry.path + return None + + @staticmethod + async def get_trailer_path(folder_path: str, check_inline_file=False) -> str | None: + """Get the path to the trailer file in the specified folder.\n + Args: + folder_path (str): Path to the folder containing the trailer file.\n + check_inline_file (bool): If True, check for a trailer file in the given folder and \ + as a seperate file. If False (default), only checks for a 'trailers' folder \ + for a trailer file.\n + Returns: + str | None: Path to the trailer file if it exists, otherwise an empty string. \ + None if the folder does not exist or the trailer file is not found. + """ + # Check if folder exists + if not await aiofiles.os.path.isdir(folder_path): + return None + + # Check for trailer in 'trailers' folder + trailer_path = await FilesHandler._get_folder_trailer_path(folder_path) + if trailer_path: + return trailer_path + + # Check for trailer as an inline file, if specified + if check_inline_file: + trailer_path = await FilesHandler._get_inline_trailer_path(folder_path) + if trailer_path: + return trailer_path + return None + @staticmethod async def delete_file(file_path: str) -> bool: """Delete a file from the filesystem.\n @@ -271,11 +349,12 @@ async def delete_trailer(folder_path: str) -> bool: folder_path (str): Path to the folder containing the trailer file.\n Returns: bool: True if the trailer is deleted successfully, False otherwise.""" + logging.debug(f"Deleting trailer from folder: {folder_path}") if await FilesHandler._check_trailer_as_file(folder_path): for entry in await aiofiles.os.scandir(folder_path): if not entry.is_file(): continue - if not entry.name.endswith((".mp4", ".mkv", ".avi")): + if not entry.name.endswith((".mp4", ".mkv", ".avi", ".webm")): continue if "-trailer." not in entry.name: continue @@ -289,3 +368,21 @@ async def delete_trailer(folder_path: str) -> bool: continue return await FilesHandler.delete_folder(entry.path) return False + + @staticmethod + async def cleanup_tmp_dir() -> bool: + """Cleanup any residual files left in the '/tmp' directory.\n + Returns: + bool: True if the '/tmp' directory is cleaned up successfully, False otherwise. + """ + try: + for entry in await aiofiles.os.scandir("/tmp"): + if entry.is_file(): + await FilesHandler.delete_file(entry.path) + elif entry.is_dir(): + await FilesHandler.delete_folder(entry.path) + logging.debug("Temporary directory cleaned up.") + return True + except Exception as e: + logging.error(f"Failed to cleanup temporary directory. Exception: {e}") + return False diff --git a/backend/core/radarr/connection_manager.py b/backend/core/radarr/connection_manager.py index f413af9..91ac7dc 100644 --- a/backend/core/radarr/connection_manager.py +++ b/backend/core/radarr/connection_manager.py @@ -1,10 +1,4 @@ -from core.base.connection_manager import ( - BaseConnectionManager, - MediaUpdateDC, -) -from core.base.database.manager.base import MediaDatabaseManager -from core.base.database.models.helpers import MediaReadDC -from core.base.database.models.media import MediaCreate +from core.base.connection_manager import BaseConnectionManager from core.radarr.data_parser import parse_movie from core.base.database.models.connection import ConnectionRead from core.radarr.api_manager import RadarrManager @@ -27,36 +21,3 @@ def __init__(self, connection: ConnectionRead): parse_movie, inline_trailer=True, ) - - def create_or_update_bulk(self, media_data: list[MediaCreate]) -> list[MediaReadDC]: - """Create or update movies in the database and return MediaRead objects.\n - Args: - media_data (list[MovieCreate]): The movie data to create or update.\n - Returns: - list[MediaReadDC]: A list of MediaRead objects.""" - movie_read_list = MediaDatabaseManager().create_or_update_bulk(media_data) - return [ - MediaReadDC( - movie_read.id, - created, - movie_read.folder_path, - movie_read.arr_monitored, - movie_read.monitor, - ) - for movie_read, created in movie_read_list - ] - - def remove_deleted_media(self, media_ids: list[int]) -> None: - """Remove the media from the database that are not present in the Radarr application. \n - Args: - media_ids (list[int]): List of media ids to remove.""" - MediaDatabaseManager().delete_except(self.connection_id, media_ids) - return - - def update_media_status_bulk(self, media_update_list: list[MediaUpdateDC]): - """Update the media status in the database. \n - Args: - media_status_list (list[tuple[int, bool, bool]]): List of tuples containing the \ - media id, monitor status, and trailer status.""" - MediaDatabaseManager().update_media_status_bulk(media_update_list) - return diff --git a/backend/core/sonarr/connection_manager.py b/backend/core/sonarr/connection_manager.py index f5c1152..fd4c1e7 100644 --- a/backend/core/sonarr/connection_manager.py +++ b/backend/core/sonarr/connection_manager.py @@ -1,10 +1,4 @@ -from core.base.connection_manager import ( - BaseConnectionManager, - MediaUpdateDC, -) -from core.base.database.manager.base import MediaDatabaseManager -from core.base.database.models.helpers import MediaReadDC -from core.base.database.models.media import MediaCreate +from core.base.connection_manager import BaseConnectionManager from core.sonarr.data_parser import parse_series from core.base.database.models.connection import ConnectionRead from core.sonarr.api_manager import SonarrManager @@ -27,35 +21,3 @@ def __init__(self, connection: ConnectionRead): parse_series, inline_trailer=False, ) - - def create_or_update_bulk(self, media_data: list[MediaCreate]) -> list[MediaReadDC]: - """Create or update series in the database and return SeriesRead objects.\n - Args: - media_data (list[SeriesCreate]): The series data to create or update.\n - Returns: - list[SeriesRead]: A list of SeriesRead objects.""" - series_read_list = MediaDatabaseManager().create_or_update_bulk(media_data) - return [ - MediaReadDC( - id=series_read.id, - created=created, - folder_path=series_read.folder_path, - arr_monitored=series_read.arr_monitored, - monitor=series_read.monitor, - ) - for series_read, created in series_read_list - ] - - def remove_deleted_media(self, media_ids: list[int]) -> None: - """Remove the media from the database that are not present in the Sonarr application. \n - Args: - media_ids (list[int]): List of media ids to remove.""" - MediaDatabaseManager().delete_except(self.connection_id, media_ids) - return - - def update_media_status_bulk(self, media_update_list: list[MediaUpdateDC]): - """Update the media status in the database. \n - Args: - media_update_list (list[MediaUpdateDC]): List of MediaUpdateDC objects.""" - MediaDatabaseManager().update_media_status_bulk(media_update_list) - return diff --git a/backend/core/tasks/cleanup.py b/backend/core/tasks/cleanup.py index 4e16047..0314300 100644 --- a/backend/core/tasks/cleanup.py +++ b/backend/core/tasks/cleanup.py @@ -1,5 +1,71 @@ -def trailer_cleanup(): +from app_logger import ModuleLogger +from core.base.database.manager.base import MediaDatabaseManager +from core.base.database.models.helpers import MediaUpdateDC +from core.base.database.models.media import MonitorStatus +from core.download import video_analysis +from core.files_handler import FilesHandler + +logger = ModuleLogger("CleanupTasks") + + +async def delete_trailer_and_monitor( + trailer_path: str, media_id: int, db_manager: MediaDatabaseManager | None = None +): """ - Cleanup failed downloads and remove files older than 7 days. + Delete the trailer file and set the monitor status to True. \n + Args: + trailer_path (str): Path to the trailer file. \n + media_id (int): ID of the media. \n + db_manager (MediaDatabaseManager | None): Instance of MediaDatabaseManager. \n + Returns: + None """ - pass + if not db_manager: + db_manager = MediaDatabaseManager() + await FilesHandler.delete_file(trailer_path) + db_manager.update_media_status( + MediaUpdateDC( + id=media_id, + monitor=True, + status=MonitorStatus.MONITORED, + trailer_exists=False, + ) + ) + return None + + +async def trailer_cleanup(): + """ + Cleanup failed trailers (without audio), delete them and set monitor status to True. + Also cleanup any residual files left in '/tmp' directory. + """ + logger.info("Running trailer cleanup task...") + # Get all media from the database and filter out the ones that have no trailers + db_manager = MediaDatabaseManager() + db_media_list = db_manager.read_all() + media_with_trailers = [ + media for media in db_media_list if media.trailer_exists is True + ] + logger.info(f"Analyzing {len(media_with_trailers)} media items with trailers.") + # Analyze the trailer files and remove the ones without audio + for media in media_with_trailers: + logger.debug(f"Checking trailer for {media.title}") + # Check if the trailer file exists + if not media.folder_path: + continue + trailer_path = await FilesHandler.get_trailer_path( + media.folder_path, check_inline_file=True + ) + if not trailer_path: + continue + + # Verify the trailer has audio and video streams + # if not, delete the trailer file and set monitor to True + if not video_analysis.verify_trailer_streams(trailer_path): + logger.info(f"Deleting trailer with missing audio/video for {media.title}") + await delete_trailer_and_monitor(trailer_path, media.id, db_manager) + continue + # Cleanup any residual files left in '/tmp' directory + logger.debug("Cleaning up '/tmp' directory...") + await FilesHandler.cleanup_tmp_dir() + return None diff --git a/backend/core/tasks/download_trailers.py b/backend/core/tasks/download_trailers.py index 0e719ed..b1e6f70 100644 --- a/backend/core/tasks/download_trailers.py +++ b/backend/core/tasks/download_trailers.py @@ -4,6 +4,7 @@ from config.settings import app_settings from core.base.database.manager.base import MediaDatabaseManager from core.base.database.models.helpers import MediaTrailer, MediaUpdateDC +from core.base.database.models.media import MonitorStatus from core.download.trailer import download_trailers from core.files_handler import FilesHandler from core.tasks import scheduler @@ -73,6 +74,7 @@ def _download_missing_media_trailers(is_movie: bool): MediaUpdateDC( id=media.id, monitor=False, + status=MonitorStatus.DOWNLOADED, trailer_exists=True, downloaded_at=media.downloaded_at, yt_id=media.yt_id, @@ -93,9 +95,25 @@ def download_missing_trailers(): def _download_trailer_by_id(mediaT: MediaTrailer, is_movie: bool): + db_manager = MediaDatabaseManager() + db_manager.update_media_status( + MediaUpdateDC( + id=mediaT.id, + monitor=True, + status=MonitorStatus.DOWNLOADING, + yt_id=mediaT.yt_id, + ) + ) download_media = download_trailers([mediaT], is_movie) if not download_media: - logger.info("No trailers downloaded") + logger.info("Trailer download failed!") + db_manager.update_media_status( + MediaUpdateDC( + id=mediaT.id, + monitor=True, + status=MonitorStatus.MISSING, + ) + ) return logger.debug("Updating trailer status in database") media_update_list = [] @@ -106,13 +124,13 @@ def _download_trailer_by_id(mediaT: MediaTrailer, is_movie: bool): MediaUpdateDC( id=media.id, monitor=False, + status=MonitorStatus.DOWNLOADED, trailer_exists=True, yt_id=media.yt_id, downloaded_at=media.downloaded_at, ) ) - db_manager = MediaDatabaseManager() # Update the trailer statuses in database db_manager.update_media_status_bulk(media_update_list) diff --git a/backend/core/tasks/schedules.py b/backend/core/tasks/schedules.py index 02dbf07..52ddba7 100644 --- a/backend/core/tasks/schedules.py +++ b/backend/core/tasks/schedules.py @@ -5,6 +5,7 @@ from config.settings import app_settings from core.tasks import scheduler from core.tasks.api_refresh import api_refresh +from core.tasks.cleanup import trailer_cleanup from core.tasks.download_trailers import download_missing_trailers from core.tasks.image_refresh import refresh_images @@ -34,6 +35,12 @@ def _refresh_images(): return +def _cleanup_trailers(): + """Cleanup trailers without audio.""" + run_async(trailer_cleanup) + return + + def refresh_api_data_job(): """ Schedules a background job to refresh Arr API data. \n @@ -73,6 +80,25 @@ def image_refresh_job(): return +def trailer_cleanup_job(): + """Schedules a background job to cleanup trailers.\n + - Runs once an hour (default, or monitor_interval), first run in 5 minutes. \n + Returns: + None + """ + scheduler.add_job( + func=_cleanup_trailers, + trigger="interval", + minutes=app_settings.monitor_interval, + id="trailer_cleanup_job", + name="Trailer Cleanup", + next_run_time=datetime.now() + timedelta(seconds=300), + max_instances=1, + ) + logger.info("Trailer Cleanup job scheduled!") + return + + def download_missing_trailers_job(): """Schedules a background job to download missing trailers. \n Runs once an hour, first run in 15 minutes. \n @@ -105,6 +131,9 @@ def schedule_all_tasks(): # Schedule Image Refresh to run every 6 hours, start in 10 minutes from now image_refresh_job() + # Schedule trailer cleanup task to run every hour, start in 5 minutes from now + trailer_cleanup_job() + # Schedule trailer download task to run every hour, start in 15 minutes from now download_missing_trailers_job() diff --git a/backend/main.py b/backend/main.py index 79aa815..4965b55 100644 --- a/backend/main.py +++ b/backend/main.py @@ -5,7 +5,7 @@ from fastapi.responses import FileResponse, HTMLResponse from fastapi.staticfiles import StaticFiles -from api.v1.authentication import validate_api_key_cookie +from api.v1.authentication import validate_api_key_cookie, validate_login from app_logger import ModuleLogger from api.v1.routes import api_v1_router from api.v1.websockets import ws_manager @@ -15,7 +15,6 @@ logging = ModuleLogger("Main") # from web.routes import web_router -# TODO! Remove sensitive information from historic commits # TODO: Move these to main() function later and setup docker to run main.py # No need to setup the logger and it's config, importing the logger from app_logger.py will do setup @@ -114,9 +113,24 @@ async def websocket_endpoint(websocket: WebSocket, client_id: int): trailarr_api.mount(images_dir, StaticFiles(directory=images_dir), name="images") +# Mount Frontend 'assets/manifest.json' without authorization +@trailarr_api.get("/assets/manifest.json", include_in_schema=False) +async def serve_manifest(): + file_path = os.path.normpath(os.path.join(static_dir, "assets", "manifest.json")) + if os.path.isfile(file_path): + # If the path corresponds to a static file, return the file + return FileResponse(file_path) + else: + return HTMLResponse(status_code=404) + + # Mount static frontend files to serve frontend # Mount these at the end so that it won't interfere with other routes -@trailarr_api.get("/{rest_of_path:path}", include_in_schema=False) +@trailarr_api.get( + "/{rest_of_path:path}", + include_in_schema=False, + dependencies=[Depends(validate_login)], +) async def serve_frontend(rest_of_path: str = ""): if rest_of_path.startswith("api"): # If the path starts with "api", it's an API request and not meant for the frontend diff --git a/backend/requirements.txt b/backend/requirements.txt index fc6f0c0..eca63f5 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,10 +1,10 @@ # Backend -aiohttp==3.10.2 +aiohttp==3.10.5 aiofiles==24.1.0 alembic==1.13.2 apscheduler==3.10.4 async-lru==2.0.4 -fastapi[standard]==0.112.0 # Update version in README.md as well +fastapi[standard]==0.115.0 # Update version in README.md as well pillow==10.4.0 -sqlmodel==0.0.21 +sqlmodel==0.0.22 yt-dlp==2024.8.6 \ No newline at end of file diff --git a/docs/help/faq.md b/docs/help/faq.md new file mode 100644 index 0000000..e6ab583 --- /dev/null +++ b/docs/help/faq.md @@ -0,0 +1,38 @@ +## Does this work with Plex, Emby, Jellyfin? +Yes, this works with Plex, Emby, and Jellyfin. Trailarr downloads trailers for Movies and Series, and saves them in their respective media folder. Plex, Emby, and Jellyfin can pick up these trailers and display them along with the Movie or Series. + + +## How can I watch the trailers? +You can watch the trailers in the Movie or Series details in Plex, Emby, or Jellyfin. Trailers downloaded by Trailarr are saved in the same folder as the Movie or Series, for Plex, Emby, and Jellyfin to recognize and display them along with the Movie or Series. + + +## Can I use Tailarr without Radarr or Sonarr? +No, Trailarr relies on data from Radarr and Sonarr to monitor Movies and Series. You need to have Radarr and/or Sonarr setup and connected to Trailarr to download trailers. + + +## Can I use Trailarr with multiple Radarr or Sonarr instances? +Yes, you can connect multiple Radarr and Sonarr instances to Trailarr. Trailarr will monitor Movies and Series from all connected Radarr and Sonarr instances and download trailers for them. + + +## Trailarr is not downloading trailers for some Movies or Series. Why? +Trailarr monitors the Movies and Series from connected Radarr and Sonarr instances based on the Monitor Type set. Make sure you have correct Monitor Types set for the Movies and Series you want Trailarr to download trailers for. + +More info about [Monitor Types here](../setup/connections.md#monitor-types). + + +## How can I change the Monitor Type for a Movie or Series? +You can open up a Movie or Series details in Trailarr and click on the `Monitor` button to change the Monitor Type for that Movie or Series. Trailarr will download a trailer for that in the next schedule. + + +## Trailarr downloaded an incorrect trailer for a Movie or Series. How can I fix it? +Movies: Radarr provides a youtube trailer link for Movies that it gets from TMDB. Trailarr will attempt to download that trailer first, if that fails or not set, Trailarr downloads trailers based on the Movie title and year. If Trailarr downloaded an incorrect trailer, you can manually search on youtube and update the youtube trailer link in Movie details page in Trailarr. + +Series: Sonarr does not provide a youtube trailer link for Series. Trailarr will search for the Series trailer based on the Series title and year. If Trailarr downloaded an incorrect trailer, you can manually search on youtube and update the youtube trailer link in Series details page in Trailarr. + + +!!! info + Trailarr will not delete the trailer that was already downloaded. You have to manually click on `Delete` button to delete the trailer. + + +## Can I download multiple trailers for a Movie or Series? +Trailarr will not download multiple trailers for same Movie or Series automatically. You can manually update the youtube trailer link and click `Download` to download another trailer. Trailarr will download and save the new trailer in the Movie or Series folder along with the old trailer. \ No newline at end of file diff --git a/docs/help/release-notes.md b/docs/help/release-notes.md new file mode 100644 index 0000000..1542f47 --- /dev/null +++ b/docs/help/release-notes.md @@ -0,0 +1,208 @@ +## **v0.2.0-beta** - _September 22, 2024_ +**What's New:** ✨ + +1. **BREAKING CHANGE**: Changed default `APP_DATA_DIR` (appdata folder) from `/data` to `/config`. You need to remap your app data folder in your docker compose / set `APP_DATA_DIR` Env variable to `/data` explicitly. +2. Added sort and filtering options in Movies and Series pages. Fixes #16 +3. Link to Docs page updated in About page. +4. Added an option to customize trailer file name. Supports `title`, `year`, `resolution`, `vcodec` and `acodec` options. +5. App now skips videos longer than 10 minutes and/or videos that contain `review` in the title. Should help #36 +6. Added Browser login to Frontend. Default username is `admin` with password `trailarr`. These cannot be updated now, will add an option to update them in future update. Fixes #31 +7. Renamed `DEBUG` to `LOG_LEVEL` to make it consistent with what it does. +8. Adding/Updating a connection will also run the `Arr Data Refresh` task for that connection. +9. App will now verify the downloaded trailer has an audio and a video stream, else mark it as failed and retry download. Also, added a task to clean up any existing trailers without audio/video, delete them and start monitoring those for downloading trailers for them in next run. + +**Bug Fixes:** 🐛 + +1. Fixed a bug that was preventing the app from setting the right permissions to 'Trailers' folder (if enabled for either Movies/Series). +2. Check downloaded trailer is the expected file and contains audio and video streams. Fixes #37 +3. Fixed a bug that prevented Yt-dlp to use the cookies file even when set. Fixes #29. +4. Fixed an issue with `Trailer Subtitle Format` option saving to incorrect variable. Fixes #40 +5. Fixed an issue with app not able to delete trailers with `.webm` extensions. +6. Fixed a bug that was removing all media items from library if path mappings are set for that connection and none of them match the media. + +**Other Changes:** ⚡ + +1. Updated Docs to include `Release Notes` and some `FAQ`s. +2. App now displays logs for video conversions after download. +3. Updated npm and python packages. +4. Added `monitor status` arg to Media object. +5. Added some functionality to always make sure path mappings end with a slash. +6. Added an example in docs for Windows users. + + +## **v0.1.3-beta** - _August 29, 2024_ +**What's New:** ✨ + +- Add option to supply YouTube cookies to use with yt-dlp. Fixes [#29](https://github.com/nandyalu/trailarr/issues/29) +- Add support for multiple languages in subtitle download settings. Fixes [#25](https://github.com/nandyalu/trailarr/issues/25) + +**Bug Fixes:** 🐛 + +- None + +**Other Changes:** ⚡ + +- None + + +## **v0.1.2-beta** - _August 29, 2024_ + +**What's New:** ✨ + +- None + +**Bug Fixes:** 🐛 + +- FIX: wait for media fails if folder doesn't already exist. Fixes [#28](https://github.com/nandyalu/trailarr/issues/28) and [#32](https://github.com/nandyalu/trailarr/issues/32) +- FIX: normalize filenames to remove unsupported characters. Fixes [#33](https://github.com/nandyalu/trailarr/issues/33) + +**Other Changes:** ⚡ + +- None + + +## **v0.1.1-beta** - _August 23, 2024_ + +**What's New:** ✨ + +- Settings page layout to display settings update messages. +- Search results can now be navigated using Tab key as well as Arrow keys / mouse. +- Added Docker healthcheck command so that docker can automatically flag container as unhealthy and restart if set. +- Documentation added with Mkdocs and hosted on Github pages. + +**Bug Fixes:** 🐛 + +- Fixed an issue that caused App version to not show up in Settings > About page. +- Updated page layout throughout website. Settings page now shows sticky settings bar. + +**Other Changes:** ⚡ + +- Move Docker scripts into scripts folder +- Use apt-get in Dockerfile instead of apt as apt is not recommended for non-interactive. +- Docs build github action to build and deploy docs on changes. + +## **v0.1.0-beta** - _August 19, 2024_ + +**What's New:** ✨ + +- Merged Movie and Series models in database into Media model. This will help with making Frontend changes to add filters and additional layouts for #16 +- Server Stats in Settings > About page now shows monitored count for Movie and Series separately. +- PathMappings have been added to Arr Connections. This lets users add path mappings for individual connections if both Radarr and Sonarr have media mapped to same folder internally. Fixes #8 +- Updated Home, Movies and Series pages to display 50 recent items. Related to #16 ... will make additional changes to add filters in a future update. +- Added web manifest to let app be installed as a web app (works only if served as secure [https]) + + +**Bug Fixes:** 🐛 + +- Fixed a bug with database backups during container startup. +- Fix an issue where Media details page gets stuck in loading state when no media files are found on server for the requested media. + +**Other Changes:** ⚡ + +- Minor updates to alembic (database migrations) configuration. +- Minor layout changes. + + +## **v0.0.8-beta** - _August 10, 2024_ + +**What's New:** ✨ + +- Default appdata folder can now be changed by setting `APP_DATA_DIR` ENV variable in docker command. If setting this make sure to use the same path in volume mapping for /data folder as well. See home for more instructions. fixes [#21](https://github.com/nandyalu/trailarr/issues/21) +- Container will now show app name as ASCII Art, along with the basic configuration. +- Database backups will be created during app startup, and if a database migration fails, database will be restored from backup and app sleeps forever to prevent restarts. + +**Bug Fixes:** 🐛 + +- None + +**Other Changes:** ⚡ + +- pip requirement versions upgraded. +- Update database_url to new path, if `APP_DATA_DIR` is modified. This won't have any effect on `DATABASE_URI` if it was modified using ENV variable or directly within the app. + + +## **v0.0.7-beta** - _August 8, 2024_ + +**What's New:** ✨ + +- Added setting to wait for media to be available before downloading trailer + +**Bug Fixes:** 🐛 + +- None + +**Other Changes:** ⚡ + +- None + + +## **v0.0.6-beta** - _August 7, 2024_ + +**What's New:** ✨ + +- Fixed issue with `PUID`/`PGID` when they already exist inside container, updated logic to use existing user/group if already exists. Fixes [#17](https://github.com/nandyalu/trailarr/issues/17) and [#13](https://github.com/nandyalu/trailarr/issues/13) +- Fixed Click me link in homepage to go to `Settings > Connections` + +**Bug Fixes:** 🐛 + +- None + +**Other Changes:** ⚡ + +- Updated CONTRIBUTING.md to add instructions for using devcontainer. +- Updated Github actions, Dockerfile and README. + + +## **v0.0.5-beta** - _August 7, 2024_ + +**What's New:** ✨ + +- Changed ffmpeg install to check OS architecture and install the correct version. Fixes [#9](https://github.com/nandyalu/trailarr/issues/9) +- Added new Setting for TESTING so that enabling debug mode does not change database to in-memory database! +- Visual improvements in Frontend! + +**Bug Fixes:** 🐛 + +- Updated return value on failed downloads so that app will try and download another video. Fixes issues where video is not available in the country, age restricted video, etc.. +- Updated RadarrDataParser to parse movie data without youTubeTrailerId. Fixes [#7](https://github.com/nandyalu/trailarr/issues/7) +- Updated API calls from Movies page. Fixes [#11](https://github.com/nandyalu/trailarr/issues/11) +- Updated Dockerfile to create appuser with the `PUID` and `PGID` supplied while creating container. Fixes [#12](https://github.com/nandyalu/trailarr/issues/12) + +**Other Changes:** ⚡ + +- None + + +## **v0.0.4-beta** - _August 5, 2024_ + +**What's New:** ✨ + +- None + +**Bug Fixes:** 🐛 + +- Do not Delete Media when *Arr Connection fails! Fixes [#5](https://github.com/nandyalu/trailarr/issues/5) + +**Other Changes:** ⚡ + +- None + + +## **v0.0.3-beta** - _July 31, 2024_ + +**What's New:** ✨ + +- None + +**Bug Fixes:** 🐛 + +- None + +**Other Changes:** ⚡ + +- First Release - `v0.0.3-beta` with minor changes to publish docker image with `latest` tag. + + +## **v0.0.2-beta** - _July 31, 2024_ + +First Release! 🎉 \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index ba1a153..4b65fa3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,7 +12,7 @@ [![Python](https://img.shields.io/badge/python-3.12-3670A0?style=flat&logo=python)](https://www.python.org/){:target="_blank"} [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black){:target="_blank"} -[![FastAPI](https://img.shields.io/badge/FastAPI-0.112.0-009688.svg?style=flat&logo=FastAPI)](https://fastapi.tiangolo.com){:target="_blank"} +[![FastAPI](https://img.shields.io/badge/FastAPI-0.115.0-009688.svg?style=flat&logo=FastAPI)](https://fastapi.tiangolo.com){:target="_blank"} [![Angular](https://img.shields.io/badge/angular-17.3.6-%23DD0031.svg?style=flat&logo=angular)](https://angular.dev/){:target="_blank"} [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/nandyalu/trailarr){:target="_blank"} @@ -48,7 +48,7 @@ Documentation: [https://nandyalu.github.io/trailarr](https://nandyalu.github.io/ ## Installation -See the [Installation](./install/install.md) guide for detailed instructions on how to install Trailarr. +See the [Installation](./install.md) guide for detailed instructions on how to install Trailarr. ## Setup @@ -67,7 +67,7 @@ Trailarr is built using the following libraries and tools: ## Support -If you need help, please craete an issue on the [GitHub repository](https://github.com/nandyalu/issues){:target="_blank"} or post a question on [Reddit](https://www.reddit.com/r/trailarr/){:target="_blank"}. +If you have any questions or need help, please read the [FAQ](./help/faq.md) first. If you still need help, please craete an issue on the [GitHub repository](https://github.com/nandyalu/issues){:target="_blank"} or post a question on [Reddit](https://www.reddit.com/r/trailarr/){:target="_blank"}. ## Issues diff --git a/docs/install/install.md b/docs/install.md similarity index 54% rename from docs/install/install.md rename to docs/install.md index 0acaffa..ba65335 100644 --- a/docs/install/install.md +++ b/docs/install.md @@ -11,21 +11,21 @@ To run this application, you need the following installed on your system: ### Environment Variables -See [Environment Variables](env-variables.md) for the list of optional environment variables set for the application. +See [Environment Variables](install/env-variables.md) for the list of optional environment variables set for the application. ### Volume Mapping -See [Volume Mapping](volume-mapping.md) for the volume mapping details. +See [Volume Mapping](install/volume-mapping.md) for the volume mapping details. ## Installation ### Docker Compose -See [Docker Compose](docker-compose.md) for the Docker Compose installation instructions. +See [Docker Compose](install/docker-compose.md) for the Docker Compose installation instructions. ### Docker CLI -See [Docker CLI](docker-cli.md) for the Docker CLI installation instructions. +See [Docker CLI](install/docker-cli.md) for the Docker CLI installation instructions. diff --git a/docs/install/docker-builder.md b/docs/install/docker-builder.md new file mode 100644 index 0000000..4632fae --- /dev/null +++ b/docs/install/docker-builder.md @@ -0,0 +1,335 @@ +# Docker Builder + +UNDER CONSTRUCTION - COMING SOON! + +Use this tool to build the docker compose / docker cli command for running Trailarr app that works with your setup. + +## Instructions + +1. Select whether you want to use Trailarr with Docker Compose or Docker CLI. +2. Choose the operating system you are using to run Docker. +3. Select whether you want to connect Radarr to Trailarr. + 1. +4. Select whether you want to connect Sonarr to Trailarr. + +## Inputs + +### Docker + +Do you want to use Trailarr with Docker Compose or Docker CLI? + + + + +
+ +
+ +???+ tip "Docker Compose Recommended" + It is recommended to use Docker Compose to run the application, as it makes updating easier. See the [Docker Compose](./docker-compose.md) guide for more information. + +
+ +### Operating System +Which operating system are you using to run Docker? + + + + +
+ +??? tip "Unraid/Mac" + If you are using Mac or Unraid, select Linux as the operating system. + + +### Radarr + +- Do you want to connect Radarr to Trailarr? + + + + +
+ + +
+ + - Are you running Radarr as a Docker container? + +
+ + + +
+
+ + +
+ + - Where is your Radarr Media stored on the local system? + +
+ _This is the path to the Movies folder that you can open in your file explorer._
+ +
+
+ + - Where is your Radarr media stored inside the container? + +
+ _This is the path to the Movies folder inside your Radarr container. Also known as the Radarr Root Folder._
+ +
+
+ + ??? example + For example, if you have volumes mapped in your docker command like: + ```yaml + /mnt/disk1/media/movies:/media/movies + ``` + Then the `Local Path` should be: + ```yaml + /mnt/path/to/movies + ``` + And the `Container Path` should be: + ```yaml + /media/movies + ``` +
+ + + +
+ + - Where is your Radarr Media stored on the local system? + +
+ _This is the path to the Movies folder that you can open in your file explorer._
+ +
+
+ + !!! info + The path should be the location where your Radarr library media is stored (a.k.a Radarr Root Folder). + +
+ + +
+ +### Sonarr + +- Do you want to connect Sonarr to Trailarr? + + + + +
+ + +
+ + - Are you running Sonarr as a Docker container? + +
+ + + +
+
+ + +
+ + - Where is your Sonarr Media stored on the local system? + +
+ _This is the path to the Movies folder that you can open in your file explorer._
+ +
+
+ + - Where is your Sonarr media stored inside the container? + +
+ _This is the path to the Movies folder inside your Sonarr container. Also known as the Sonarr Root Folder._
+ +
+
+ + ??? example + For example, if you have volumes mapped in your docker command like: + ```yaml + /mnt/disk1/media/movies:/media/movies + ``` + Then the `Local Path` should be: + ```yaml + /mnt/path/to/movies + ``` + And the `Container Path` should be: + ```yaml + /media/movies + ``` +
+ + + +
+ + - Where is your Sonarr Media stored on the local system? + +
+ _This is the path to the Movies folder that you can open in your file explorer._
+ +
+
+
+ + +
+ + +## Output + +
+ +### Docker Compose + +Use the below docker-compose to run Trailarr app. + +```yaml +version: '3.7' + +``` + +
+ +
+ +### Docker CLI + + +Use the below docker command to run Trailarr app. + + +```bash +docker run -d \ + --name=trailarr \ + -e TZ=America/New_York \ + -e PUID=1000 \ + -e PGID=1000 \ + -p 7889:7889 \ + -v :/config \ + -v : \ + -v : \ + --restart unless-stopped \ + nandyalu/trailarr:latest +``` + +
+ + \ No newline at end of file diff --git a/docs/install/docker-cli.md b/docs/install/docker-cli.md index 8d63f92..4d8c985 100644 --- a/docs/install/docker-cli.md +++ b/docs/install/docker-cli.md @@ -11,7 +11,7 @@ docker run -d \ -e PUID=1000 \ -e PGID=1000 \ -p 7889:7889 \ - -v :/data \ + -v :/config \ -v : \ -v : \ --restart unless-stopped \ @@ -20,6 +20,9 @@ docker run -d \ Open your browser and navigate to [http://localhost:7889](http://localhost:7889){:target="_blank"} to access the application. +!!! info + It is recommended to use `docker-compose` to run the application, as it makes updating easier. See the [Docker Compose](./docker-compose.md) guide for more information. + ## Updating To update the application, run the following commands: diff --git a/docs/install/docker-compose.md b/docs/install/docker-compose.md index 0d997f2..ba6ed07 100644 --- a/docs/install/docker-compose.md +++ b/docs/install/docker-compose.md @@ -21,7 +21,7 @@ services: ports: - 7889:7889 volumes: - - :/data + - :/config - : - : restart: on-failure diff --git a/docs/install/env-variables.md b/docs/install/env-variables.md index ab11d81..c9fae31 100644 --- a/docs/install/env-variables.md +++ b/docs/install/env-variables.md @@ -4,19 +4,19 @@ Here are the optional environment variables you can set: ### `APP_DATA_DIR` -- Default is `/data`. +- Default is `/config`. This environment variable is used to set the application data directory. If setting this, make sure to map the volume to the same directory. Useful if you want to store the application data in a different directory than the default. -For example, if you want to store the application data in `/config/abc`, you can set the `APP_DATA_DIR` environment variable like this: +For example, if you want to store the application data in `/app_config/abc`, you can set the `APP_DATA_DIR` environment variable like this: ```yaml hl_lines="2 4" environment: - - APP_DATA_DIR=/config/abc + - APP_DATA_DIR=/app_config/abc volumes: - - /var/appdata/trailarr:/config/abc + - /var/appdata/trailarr:/app_config/abc ``` !!! warning @@ -76,9 +76,9 @@ Here is an example of setting the environment variables: - TZ=America/Los_Angeles - PUID=1000 - PGID=1000 - - APP_DATA_DIR=/config + - APP_DATA_DIR=/data/trailarr volumes: - - /var/appdata/trailarr:/config + - /var/appdata/trailarr:/data/trailarr ``` This sets the environment variables to run the app with following settings: @@ -86,5 +86,6 @@ This sets the environment variables to run the app with following settings: - Timezone: America/Los_Angeles - User ID: 1000 - Group ID: 1000 -- Application data directory: /config -- Volume mapping: /var/appdata/trailarr:/config +- Application data directory: /data/trailarr +- Volume mapping: /var/appdata/trailarr:/data/trailarr + diff --git a/docs/install/form.html b/docs/install/form.html new file mode 100644 index 0000000..22904b2 --- /dev/null +++ b/docs/install/form.html @@ -0,0 +1,33 @@ + + + + + + + App Configuration Form + + + + +

Under Construction - Coming Soon!

+
+ + + + + +
+ + + + \ No newline at end of file diff --git a/docs/install/volume-mapping.md b/docs/install/volume-mapping.md index 113bcf9..d62bb28 100644 --- a/docs/install/volume-mapping.md +++ b/docs/install/volume-mapping.md @@ -2,14 +2,14 @@ ## AppData -Trailarr needs a folder to store the application data. You need to map a local folder to the `/data` folder in the Trailarr container. +Trailarr needs a folder to store the application data. You need to map a local folder to the `/config` folder in the Trailarr container. Change `` to the folder where you want to store the application data. For example, if you want to store the application data in `/var/appdata/trailarr`, the volume mapping would look like this: ```yaml volumes: - - /var/appdata/trailarr:/data + - /var/appdata/trailarr:/config ``` !!! warning @@ -20,6 +20,19 @@ For example, if you want to store the application data in `/var/appdata/trailarr Trailarr needs access to the media folders of Radarr and Sonarr to monitor the media files. You need to map the media folders of Radarr and Sonarr to the Trailarr container. +There are 2 parts to a volume mapping: + +1. **Local Folder**: The folder on your system where the media files are stored. +2. **Container Folder**: The folder inside the Trailarr container where the it can access the media files. + +??? example "Media Volume Mapping" + 1. If you have movies in `/mnt/disk1/media/movies` on your system, this is the local folder. + 2. If you see this folder as `/media/movies` inside the Radarr container, this is the container folder. So, you need to map it similarly to the Trailarr container as well. + 3. The volume mapping will look like: + ```yaml + - /mnt/disk1/media/movies:/media/movies + ``` + Trailarr gets the media folders from the Radarr and Sonarr connections you add. So, you need to map the root folder of Radarr and Sonarr to the Trailarr container in a way that Trailarr can access the media files on the paths provided by Radarr and Sonarr. Some [examples](#examples) are provided below. @@ -27,6 +40,8 @@ Some [examples](#examples) are provided below. !!! tip Make sure the folder paths are correct and the Trailarr has read/write access to the folders. +!!! warning + If your folder paths have spaces, you need to escape them with a backslash (`\`) or enclose the path in quotes (`"`) like `/tv\ shows` or `/"tv shows"`. ### Radarr @@ -102,11 +117,51 @@ For example, if Radarr has `/mnt/disk1/media/movies` mapped to `/media` and Sona 2. Set the [path mapping](../setup/connections.md#path-mapping) for Radarr like: ![Radarr Path Mapping](radarr-mapping.png) -!!! tip - The `Path From` needs to match root folder inside Radarr (`/media`), and the `Path To` needs to match the folder inside Trailarr where the media is mapped (`/media/movies`). + !!! tip + The `Path From` needs to match root folder inside Radarr (`/media`), and the `Path To` needs to match the folder inside Trailarr where the media is mapped (`/media/movies`). 3. Set the [path mapping](../setup/connections.md#path-mapping) for Sonarr like: ![Sonarr Path Mapping](sonarr-mapping.png) -!!! tip - The `Path From` needs to match root folder inside Sonarr (`/media`), and the `Path To` needs to match the folder inside Trailarr where the media is mapped (`/media/tv`). + !!! tip + The `Path From` needs to match root folder inside Sonarr (`/media`), and the `Path To` needs to match the folder inside Trailarr where the media is mapped (`/media/tv`). + + +### Example 4 - Windows Path Mapping + +1. If you are using Windows, you need to modify the Windows folder path to be compatible with Linux. You can use the following format for the volume mapping: + + ```yaml + volumes: + /c/Users/username/Movies:/media/movies + /c/Users/username/TV:/media/tv + ``` + + 1. This will map `C:\Users\username\Movies` in your system to `/media/movies` within the Trailarr container. + 2. If you are running Radarr / Sonarr as docker containers, you need to update the `/media/movies` and `/media/tv` paths to match the paths set in the Radarr / Sonarr container volume mappings. + + + !!! info "Network Shares" + If you are using network shares, you need to mount the network share to your system as a drive and then map the local folder to the Trailarr container. + + You could possibly map the network share directly to the Trailarr container, however, Trailarr won't be able to provide support for it at this time. + +2. Now, you if you are running Radarr / Sonarr as docker containers, you can skip the next step and proceed to the [Environment Variables](env-variables.md) setup. + +3. Otherwise, you need to setup the [Path Mapping](../setup/connections.md#path-mapping) for Radarr and Sonarr connections, as the media folder paths in Radarr/Sonarr will look like `C:\Users\username\Movies\The Matrix (1999)`, which won't be accessible by Trailarr as it's not a valid linux path. So, we need to add a path mapping to tell Trailarr what to replace that path with. + +4. Remember, in step 1 we mapped `C:\Users\username\Movies` to `/media/movies`, so you need to go into `Settings -> Connections`, open Radarr/Sonarr and Add Path Mapping like this: + +```yaml + Path From: C:\Users\username\Movies + Path To: /media/movies +``` + +5. And then do similar for Sonarr like this: + +```yaml + Path From: C:\Users\username\TV + Path To: /media/tv +``` + +Now, Trailarr will replace `C:\Users\username\Movies` with `/media/movies` in the media paths provided by Radarr, and `C:\Users\username\TV` with `/media/tv` in the media paths provided by Sonarr. diff --git a/docs/setup/connections.md b/docs/setup/connections.md index 9df37d0..b9371d9 100644 --- a/docs/setup/connections.md +++ b/docs/setup/connections.md @@ -57,7 +57,21 @@ Turns off monitoring for the connection and does not download any trailers. ## Path Mapping -Path mappings are optional and only required if you have a setup that requires them. You can set different path mappings for each Radarr/Sonarr instance. +In simple words, Path Mappings are used to tell Trailarr what to replace the path with when it gets a path from Radarr/Sonarr. `Path From` is what it looks for in the path, and `Path To` is what it replaces it with. + +If you are using Windows, you might need to add path mappings in most cases, unless you are also running Radarr/Sonarr as docker containers. See [Volume Mapping](../install/volume-mapping.md) for more information. + +!!! info + Path mappings are optional and only required if you have a setup that requires them. You can set different path mappings for each Radarr/Sonarr instance. + +??? example + Adding a path mapping for a connection as: + ```yaml + Path From: C:\Users\username\Movies + Path To: /media/movies + ``` + will replace `C:\Users\username\Movies` with `/media/movies` in the path received from Radarr/Sonarr. + So, if Radarr/Sonarr sends a path like `C:\Users\username\Movies\The MAtrix (1999)`, it will be replaced with `/media/movies/The Matrix (1999)`. 1. Click the `Add Path Mapping` button. ![Add Path Mapping](add-path-mapping.png) diff --git a/docs/setup/settings.md b/docs/setup/settings.md index a4bfa0d..ba8aa09 100644 --- a/docs/setup/settings.md +++ b/docs/setup/settings.md @@ -2,12 +2,6 @@ There are a few settings that you can use to customize the behavior of Trailarr ## General Settings -### Debug Mode - -- Default is `false` - -Enable debug mode to display additional information in the logs. This is useful for troubleshooting issues. - ### Monitor Trailers - Default is `true` @@ -129,6 +123,29 @@ Enable this setting to optimize trailers for web streaming. This will allow trai ## Advanced Settings +### Log Level + +- Default is `Info` + +Select the logging level for the app. Available options are `Debug`, `Info`, `Warning`, `Error`. + +??? info + If you are having issues and need to troubleshoot or request help, set the log level to `Debug` to get more detailed logs. + +### Trailer File Name + +- Default is `{title} - Trailer-trailer.{ext}` + +Select the file name format for the trailers. Wrap a supported variable in `{}` like `{title}` and it will be replaced in the actual file name. Supports [Python string formatting options](https://docs.python.org/3/library/string.html#formatstrings). + +Available options are: + +- `title`: Title of the media. Eg: 'The Matrix' +- `year`: Year of the media. Eg: '1999' +- `resolution`: Resolution of the trailer. Eg: '1080p' +- `vcodec`: Video codec of the trailer. Eg: 'h264' +- `acodec`: Audio codec of the trailer. Eg: 'aac' + ### Yt-dlp Cookies Path - Default is `None` diff --git a/frontend-build/browser/index.html b/frontend-build/browser/index.html index 1186421..6b21de4 100644 --- a/frontend-build/browser/index.html +++ b/frontend-build/browser/index.html @@ -5,13 +5,14 @@ Trailarr + - + - + diff --git a/frontend-build/browser/main-OHCIV5AK.js b/frontend-build/browser/main-OHCIV5AK.js deleted file mode 100644 index f6161dc..0000000 --- a/frontend-build/browser/main-OHCIV5AK.js +++ /dev/null @@ -1,8 +0,0 @@ -var vv=Object.defineProperty,yv=Object.defineProperties;var _v=Object.getOwnPropertyDescriptors;var hf=Object.getOwnPropertySymbols;var wv=Object.prototype.hasOwnProperty,Cv=Object.prototype.propertyIsEnumerable;var mf=(t,e,r)=>e in t?vv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,M=(t,e)=>{for(var r in e||={})wv.call(e,r)&&mf(t,r,e[r]);if(hf)for(var r of hf(e))Cv.call(e,r)&&mf(t,r,e[r]);return t},K=(t,e)=>yv(t,_v(e));var Ni=(t,e,r)=>new Promise((n,i)=>{var o=l=>{try{a(r.next(l))}catch(c){i(c)}},s=l=>{try{a(r.throw(l))}catch(c){i(c)}},a=l=>l.done?n(l.value):Promise.resolve(l.value).then(o,s);a((r=r.apply(t,e)).next())});var gf=null;var ml=1,gl=Symbol("SIGNAL");function ne(t){let e=gf;return gf=t,e}var vf={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Dv(t){if(!(_l(t)&&!t.dirty)&&!(!t.dirty&&t.lastCleanEpoch===ml)){if(!t.producerMustRecompute(t)&&!vl(t)){t.dirty=!1,t.lastCleanEpoch=ml;return}t.producerRecomputeValue(t),t.dirty=!1,t.lastCleanEpoch=ml}}function yf(t){return t&&(t.nextProducerIndex=0),ne(t)}function _f(t,e){if(ne(e),!(!t||t.producerNode===void 0||t.producerIndexOfThis===void 0||t.producerLastReadVersion===void 0)){if(_l(t))for(let r=t.nextProducerIndex;rt.nextProducerIndex;)t.producerNode.pop(),t.producerLastReadVersion.pop(),t.producerIndexOfThis.pop()}}function vl(t){Ro(t);for(let e=0;e0}function Ro(t){t.producerNode??=[],t.producerIndexOfThis??=[],t.producerLastReadVersion??=[]}function bv(t){t.liveConsumerNode??=[],t.liveConsumerIndexOfThis??=[]}function Ev(){throw new Error}var xv=Ev;function Cf(t){xv=t}function U(t){return typeof t=="function"}function br(t){let r=t(n=>{Error.call(n),n.stack=new Error().stack});return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Fo=br(t=>function(r){t(this),this.message=r?`${r.length} errors occurred during unsubscription: -${r.map((n,i)=>`${i+1}) ${n.toString()}`).join(` - `)}`:"",this.name="UnsubscriptionError",this.errors=r});function Bn(t,e){if(t){let r=t.indexOf(e);0<=r&&t.splice(r,1)}}var ve=class t{constructor(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let e;if(!this.closed){this.closed=!0;let{_parentage:r}=this;if(r)if(this._parentage=null,Array.isArray(r))for(let o of r)o.remove(this);else r.remove(this);let{initialTeardown:n}=this;if(U(n))try{n()}catch(o){e=o instanceof Fo?o.errors:[o]}let{_finalizers:i}=this;if(i){this._finalizers=null;for(let o of i)try{Df(o)}catch(s){e=e??[],s instanceof Fo?e=[...e,...s.errors]:e.push(s)}}if(e)throw new Fo(e)}}add(e){var r;if(e&&e!==this)if(this.closed)Df(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(e)}}_hasParent(e){let{_parentage:r}=this;return r===e||Array.isArray(r)&&r.includes(e)}_addParent(e){let{_parentage:r}=this;this._parentage=Array.isArray(r)?(r.push(e),r):r?[r,e]:e}_removeParent(e){let{_parentage:r}=this;r===e?this._parentage=null:Array.isArray(r)&&Bn(r,e)}remove(e){let{_finalizers:r}=this;r&&Bn(r,e),e instanceof t&&e._removeParent(this)}};ve.EMPTY=(()=>{let t=new ve;return t.closed=!0,t})();var wl=ve.EMPTY;function Lo(t){return t instanceof ve||t&&"closed"in t&&U(t.remove)&&U(t.add)&&U(t.unsubscribe)}function Df(t){U(t)?t():t.unsubscribe()}var Tt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Er={setTimeout(t,e,...r){let{delegate:n}=Er;return n?.setTimeout?n.setTimeout(t,e,...r):setTimeout(t,e,...r)},clearTimeout(t){let{delegate:e}=Er;return(e?.clearTimeout||clearTimeout)(t)},delegate:void 0};function Vo(t){Er.setTimeout(()=>{let{onUnhandledError:e}=Tt;if(e)e(t);else throw t})}function ki(){}var bf=Cl("C",void 0,void 0);function Ef(t){return Cl("E",void 0,t)}function xf(t){return Cl("N",t,void 0)}function Cl(t,e,r){return{kind:t,value:e,error:r}}var Hn=null;function xr(t){if(Tt.useDeprecatedSynchronousErrorHandling){let e=!Hn;if(e&&(Hn={errorThrown:!1,error:null}),t(),e){let{errorThrown:r,error:n}=Hn;if(Hn=null,r)throw n}}else t()}function If(t){Tt.useDeprecatedSynchronousErrorHandling&&Hn&&(Hn.errorThrown=!0,Hn.error=t)}var on=class extends ve{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,Lo(e)&&e.add(this)):this.destination=Sv}static create(e,r,n){return new Ir(e,r,n)}next(e){this.isStopped?bl(xf(e),this):this._next(e)}error(e){this.isStopped?bl(Ef(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?bl(bf,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},Iv=Function.prototype.bind;function Dl(t,e){return Iv.call(t,e)}var El=class{constructor(e){this.partialObserver=e}next(e){let{partialObserver:r}=this;if(r.next)try{r.next(e)}catch(n){jo(n)}}error(e){let{partialObserver:r}=this;if(r.error)try{r.error(e)}catch(n){jo(n)}else jo(e)}complete(){let{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(r){jo(r)}}},Ir=class extends on{constructor(e,r,n){super();let i;if(U(e)||!e)i={next:e??void 0,error:r??void 0,complete:n??void 0};else{let o;this&&Tt.useDeprecatedNextContext?(o=Object.create(e),o.unsubscribe=()=>this.unsubscribe(),i={next:e.next&&Dl(e.next,o),error:e.error&&Dl(e.error,o),complete:e.complete&&Dl(e.complete,o)}):i=e}this.destination=new El(i)}};function jo(t){Tt.useDeprecatedSynchronousErrorHandling?If(t):Vo(t)}function Mv(t){throw t}function bl(t,e){let{onStoppedNotification:r}=Tt;r&&Er.setTimeout(()=>r(t,e))}var Sv={closed:!0,next:ki,error:Mv,complete:ki};var Mr=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Ge(t){return t}function xl(...t){return Il(t)}function Il(t){return t.length===0?Ge:t.length===1?t[0]:function(r){return t.reduce((n,i)=>i(n),r)}}var Z=(()=>{class t{constructor(r){r&&(this._subscribe=r)}lift(r){let n=new t;return n.source=this,n.operator=r,n}subscribe(r,n,i){let o=Av(r)?r:new Ir(r,n,i);return xr(()=>{let{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(r){try{return this._subscribe(r)}catch(n){r.error(n)}}forEach(r,n){return n=Mf(n),new n((i,o)=>{let s=new Ir({next:a=>{try{r(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:i});this.subscribe(s)})}_subscribe(r){var n;return(n=this.source)===null||n===void 0?void 0:n.subscribe(r)}[Mr](){return this}pipe(...r){return Il(r)(this)}toPromise(r){return r=Mf(r),new r((n,i)=>{let o;this.subscribe(s=>o=s,s=>i(s),()=>n(o))})}}return t.create=e=>new t(e),t})();function Mf(t){var e;return(e=t??Tt.Promise)!==null&&e!==void 0?e:Promise}function Tv(t){return t&&U(t.next)&&U(t.error)&&U(t.complete)}function Av(t){return t&&t instanceof on||Tv(t)&&Lo(t)}function Ml(t){return U(t?.lift)}function z(t){return e=>{if(Ml(e))return e.lift(function(r){try{return t(r,this)}catch(n){this.error(n)}});throw new TypeError("Unable to lift unknown Observable type")}}function G(t,e,r,n,i){return new Sl(t,e,r,n,i)}var Sl=class extends on{constructor(e,r,n,i,o,s){super(e),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=r?function(a){try{r(a)}catch(l){e.error(l)}}:super._next,this._error=i?function(a){try{i(a)}catch(l){e.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=n?function(){try{n()}catch(a){e.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:r}=this;super.unsubscribe(),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}}};function Sr(){return z((t,e)=>{let r=null;t._refCount++;let n=G(e,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount){r=null;return}let i=t._connection,o=r;r=null,i&&(!o||i===o)&&i.unsubscribe(),e.unsubscribe()});t.subscribe(n),n.closed||(r=t.connect())})}var Tr=class extends Z{constructor(e,r){super(),this.source=e,this.subjectFactory=r,this._subject=null,this._refCount=0,this._connection=null,Ml(e)&&(this.lift=e.lift)}_subscribe(e){return this.getSubject().subscribe(e)}getSubject(){let e=this._subject;return(!e||e.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:e}=this;this._subject=this._connection=null,e?.unsubscribe()}connect(){let e=this._connection;if(!e){e=this._connection=new ve;let r=this.getSubject();e.add(this.source.subscribe(G(r,void 0,()=>{this._teardown(),r.complete()},n=>{this._teardown(),r.error(n)},()=>this._teardown()))),e.closed&&(this._connection=null,e=ve.EMPTY)}return e}refCount(){return Sr()(this)}};var Sf=br(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var ue=(()=>{class t extends Z{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(r){let n=new Ar(this,this);return n.operator=r,n}_throwIfClosed(){if(this.closed)throw new Sf}next(r){xr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let n of this.currentObservers)n.next(r)}})}error(r){xr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=r;let{observers:n}=this;for(;n.length;)n.shift().error(r)}})}complete(){xr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:r}=this;for(;r.length;)r.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var r;return((r=this.observers)===null||r===void 0?void 0:r.length)>0}_trySubscribe(r){return this._throwIfClosed(),super._trySubscribe(r)}_subscribe(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)}_innerSubscribe(r){let{hasError:n,isStopped:i,observers:o}=this;return n||i?wl:(this.currentObservers=null,o.push(r),new ve(()=>{this.currentObservers=null,Bn(o,r)}))}_checkFinalizedStatuses(r){let{hasError:n,thrownError:i,isStopped:o}=this;n?r.error(i):o&&r.complete()}asObservable(){let r=new Z;return r.source=this,r}}return t.create=(e,r)=>new Ar(e,r),t})(),Ar=class extends ue{constructor(e,r){super(),this.destination=e,this.source=r}next(e){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.next)===null||n===void 0||n.call(r,e)}error(e){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.error)===null||n===void 0||n.call(r,e)}complete(){var e,r;(r=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||r===void 0||r.call(e)}_subscribe(e){var r,n;return(n=(r=this.source)===null||r===void 0?void 0:r.subscribe(e))!==null&&n!==void 0?n:wl}};var Le=class extends ue{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){let r=super._subscribe(e);return!r.closed&&e.next(this._value),r}getValue(){let{hasError:e,thrownError:r,_value:n}=this;if(e)throw r;return this._throwIfClosed(),n}next(e){super.next(this._value=e)}};var Pi={now(){return(Pi.delegate||Date).now()},delegate:void 0};var Or=class extends ue{constructor(e=1/0,r=1/0,n=Pi){super(),this._bufferSize=e,this._windowTime=r,this._timestampProvider=n,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=r===1/0,this._bufferSize=Math.max(1,e),this._windowTime=Math.max(1,r)}next(e){let{isStopped:r,_buffer:n,_infiniteTimeWindow:i,_timestampProvider:o,_windowTime:s}=this;r||(n.push(e),!i&&n.push(o.now()+s)),this._trimBuffer(),super.next(e)}_subscribe(e){this._throwIfClosed(),this._trimBuffer();let r=this._innerSubscribe(e),{_infiniteTimeWindow:n,_buffer:i}=this,o=i.slice();for(let s=0;st.complete());function Al(t){return t?Ov(t):Je}function Ov(t){return new Z(e=>t.schedule(()=>e.complete()))}function Ho(t){return t&&U(t.schedule)}function Af(t){return t[t.length-1]}function qo(t){return U(Af(t))?t.pop():void 0}function bn(t){return Ho(Af(t))?t.pop():void 0}function Nf(t,e,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function a(f){try{c(n.next(f))}catch(h){s(h)}}function l(f){try{c(n.throw(f))}catch(h){s(h)}}function c(f){f.done?o(f.value):i(f.value).then(a,l)}c((n=n.apply(t,e||[])).next())})}function Of(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function qn(t){return this instanceof qn?(this.v=t,this):new qn(t)}function kf(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,o=[];return i={},a("next"),a("throw"),a("return",s),i[Symbol.asyncIterator]=function(){return this},i;function s(y){return function(I){return Promise.resolve(I).then(y,h)}}function a(y,I){n[y]&&(i[y]=function(F){return new Promise(function(L,P){o.push([y,F,L,P])>1||l(y,F)})},I&&(i[y]=I(i[y])))}function l(y,I){try{c(n[y](I))}catch(F){g(o[0][3],F)}}function c(y){y.value instanceof qn?Promise.resolve(y.value.v).then(f,h):g(o[0][2],y)}function f(y){l("next",y)}function h(y){l("throw",y)}function g(y,I){y(I),o.shift(),o.length&&l(o[0][0],o[0][1])}}function Pf(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof Of=="function"?Of(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(o){r[o]=t[o]&&function(s){return new Promise(function(a,l){s=t[o](s),i(a,l,s.done,s.value)})}}function i(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}}var zo=t=>t&&typeof t.length=="number"&&typeof t!="function";function Go(t){return U(t?.then)}function Wo(t){return U(t[Mr])}function Zo(t){return Symbol.asyncIterator&&U(t?.[Symbol.asyncIterator])}function Qo(t){return new TypeError(`You provided ${t!==null&&typeof t=="object"?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function Nv(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yo=Nv();function Ko(t){return U(t?.[Yo])}function Jo(t){return kf(this,arguments,function*(){let r=t.getReader();try{for(;;){let{value:n,done:i}=yield qn(r.read());if(i)return yield qn(void 0);yield yield qn(n)}}finally{r.releaseLock()}})}function Xo(t){return U(t?.getReader)}function Ie(t){if(t instanceof Z)return t;if(t!=null){if(Wo(t))return kv(t);if(zo(t))return Pv(t);if(Go(t))return Rv(t);if(Zo(t))return Rf(t);if(Ko(t))return Fv(t);if(Xo(t))return Lv(t)}throw Qo(t)}function kv(t){return new Z(e=>{let r=t[Mr]();if(U(r.subscribe))return r.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Pv(t){return new Z(e=>{for(let r=0;r{t.then(r=>{e.closed||(e.next(r),e.complete())},r=>e.error(r)).then(null,Vo)})}function Fv(t){return new Z(e=>{for(let r of t)if(e.next(r),e.closed)return;e.complete()})}function Rf(t){return new Z(e=>{Vv(t,e).catch(r=>e.error(r))})}function Lv(t){return Rf(Jo(t))}function Vv(t,e){var r,n,i,o;return Nf(this,void 0,void 0,function*(){try{for(r=Pf(t);n=yield r.next(),!n.done;){let s=n.value;if(e.next(s),e.closed)return}}catch(s){i={error:s}}finally{try{n&&!n.done&&(o=r.return)&&(yield o.call(r))}finally{if(i)throw i.error}}e.complete()})}function Xe(t,e,r,n=0,i=!1){let o=e.schedule(function(){r(),i?t.add(this.schedule(null,n)):this.unsubscribe()},n);if(t.add(o),!i)return o}function es(t,e=0){return z((r,n)=>{r.subscribe(G(n,i=>Xe(n,t,()=>n.next(i),e),()=>Xe(n,t,()=>n.complete(),e),i=>Xe(n,t,()=>n.error(i),e)))})}function ts(t,e=0){return z((r,n)=>{n.add(t.schedule(()=>r.subscribe(n),e))})}function Ff(t,e){return Ie(t).pipe(ts(e),es(e))}function Lf(t,e){return Ie(t).pipe(ts(e),es(e))}function Vf(t,e){return new Z(r=>{let n=0;return e.schedule(function(){n===t.length?r.complete():(r.next(t[n++]),r.closed||this.schedule())})})}function jf(t,e){return new Z(r=>{let n;return Xe(r,e,()=>{n=t[Yo](),Xe(r,e,()=>{let i,o;try{({value:i,done:o}=n.next())}catch(s){r.error(s);return}o?r.complete():r.next(i)},0,!0)}),()=>U(n?.return)&&n.return()})}function ns(t,e){if(!t)throw new Error("Iterable cannot be null");return new Z(r=>{Xe(r,e,()=>{let n=t[Symbol.asyncIterator]();Xe(r,e,()=>{n.next().then(i=>{i.done?r.complete():r.next(i.value)})},0,!0)})})}function $f(t,e){return ns(Jo(t),e)}function Uf(t,e){if(t!=null){if(Wo(t))return Ff(t,e);if(zo(t))return Vf(t,e);if(Go(t))return Lf(t,e);if(Zo(t))return ns(t,e);if(Ko(t))return jf(t,e);if(Xo(t))return $f(t,e)}throw Qo(t)}function ge(t,e){return e?Uf(t,e):Ie(t)}function O(...t){let e=bn(t);return ge(t,e)}function kr(t,e){let r=U(t)?t:()=>t,n=i=>i.error(r());return new Z(e?i=>e.schedule(n,0,i):n)}function Ol(t){return!!t&&(t instanceof Z||U(t.lift)&&U(t.subscribe))}var sn=br(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function Bf(t){return t instanceof Date&&!isNaN(t)}function A(t,e){return z((r,n)=>{let i=0;r.subscribe(G(n,o=>{n.next(t.call(e,o,i++))}))})}var{isArray:jv}=Array;function $v(t,e){return jv(e)?t(...e):t(e)}function rs(t){return A(e=>$v(t,e))}var{isArray:Uv}=Array,{getPrototypeOf:Bv,prototype:Hv,keys:qv}=Object;function is(t){if(t.length===1){let e=t[0];if(Uv(e))return{args:e,keys:null};if(zv(e)){let r=qv(e);return{args:r.map(n=>e[n]),keys:r}}}return{args:t,keys:null}}function zv(t){return t&&typeof t=="object"&&Bv(t)===Hv}function os(t,e){return t.reduce((r,n,i)=>(r[n]=e[i],r),{})}function ss(...t){let e=bn(t),r=qo(t),{args:n,keys:i}=is(t);if(n.length===0)return ge([],e);let o=new Z(Gv(n,e,i?s=>os(i,s):Ge));return r?o.pipe(rs(r)):o}function Gv(t,e,r=Ge){return n=>{Hf(e,()=>{let{length:i}=t,o=new Array(i),s=i,a=i;for(let l=0;l{let c=ge(t[l],e),f=!1;c.subscribe(G(n,h=>{o[l]=h,f||(f=!0,a--),a||n.next(r(o.slice()))},()=>{--s||n.complete()}))},n)},n)}}function Hf(t,e,r){t?Xe(r,t,e):e()}function as(t,e,r,n,i,o,s,a){let l=[],c=0,f=0,h=!1,g=()=>{h&&!l.length&&!c&&e.complete()},y=F=>c{o&&e.next(F),c++;let L=!1;Ie(r(F,f++)).subscribe(G(e,P=>{i?.(P),o?y(P):e.next(P)},()=>{L=!0},void 0,()=>{if(L)try{for(c--;l.length&&cI(P)):I(P)}g()}catch(P){e.error(P)}}))};return t.subscribe(G(e,y,()=>{h=!0,g()})),()=>{a?.()}}function Ae(t,e,r=1/0){return U(e)?Ae((n,i)=>A((o,s)=>e(n,o,i,s))(Ie(t(n,i))),r):(typeof e=="number"&&(r=e),z((n,i)=>as(n,i,t,r)))}function Pr(t=1/0){return Ae(Ge,t)}function qf(){return Pr(1)}function Rr(...t){return qf()(ge(t,bn(t)))}function ls(t){return new Z(e=>{Ie(t()).subscribe(e)})}function Nl(...t){let e=qo(t),{args:r,keys:n}=is(t),i=new Z(o=>{let{length:s}=r;if(!s){o.complete();return}let a=new Array(s),l=s,c=s;for(let f=0;f{h||(h=!0,c--),a[f]=g},()=>l--,void 0,()=>{(!l||!h)&&(c||o.next(n?os(n,a):a),o.complete())}))}});return e?i.pipe(rs(e)):i}function kl(t=0,e,r=Tf){let n=-1;return e!=null&&(Ho(e)?r=e:n=e),new Z(i=>{let o=Bf(t)?+t-r.now():t;o<0&&(o=0);let s=0;return r.schedule(function(){i.closed||(i.next(s++),0<=n?this.schedule(void 0,n):i.complete())},o)})}function Ve(t,e){return z((r,n)=>{let i=0;r.subscribe(G(n,o=>t.call(e,o,i++)&&n.next(o)))})}function He(t){return z((e,r)=>{let n=null,i=!1,o;n=e.subscribe(G(r,void 0,void 0,s=>{o=Ie(t(s,He(t)(e))),n?(n.unsubscribe(),n=null,o.subscribe(r)):i=!0})),i&&(n.unsubscribe(),n=null,o.subscribe(r))})}function zf(t,e,r,n,i){return(o,s)=>{let a=r,l=e,c=0;o.subscribe(G(s,f=>{let h=c++;l=a?t(l,f,h):(a=!0,f),n&&s.next(l)},i&&(()=>{a&&s.next(l),s.complete()})))}}function En(t,e){return U(e)?Ae(t,e,1):Ae(t,1)}function Pl(t,e=Tl){return z((r,n)=>{let i=null,o=null,s=null,a=()=>{if(i){i.unsubscribe(),i=null;let c=o;o=null,n.next(c)}};function l(){let c=s+t,f=e.now();if(f{o=c,s=e.now(),i||(i=e.schedule(l,t),n.add(i))},()=>{a(),n.complete()},void 0,()=>{o=i=null}))})}function xn(t){return z((e,r)=>{let n=!1;e.subscribe(G(r,i=>{n=!0,r.next(i)},()=>{n||r.next(t),r.complete()}))})}function an(t){return t<=0?()=>Je:z((e,r)=>{let n=0;e.subscribe(G(r,i=>{++n<=t&&(r.next(i),t<=n&&r.complete())}))})}function Rl(t){return A(()=>t)}function Fl(t,e=Ge){return t=t??Wv,z((r,n)=>{let i,o=!0;r.subscribe(G(n,s=>{let a=e(s);(o||!t(i,a))&&(o=!1,i=a,n.next(s))}))})}function Wv(t,e){return t===e}function cs(t=Zv){return z((e,r)=>{let n=!1;e.subscribe(G(r,i=>{n=!0,r.next(i)},()=>n?r.complete():r.error(t())))})}function Zv(){return new sn}function Ll(t,e=1/0,r){return e=(e||0)<1?1/0:e,z((n,i)=>as(n,i,t,e,void 0,!0,r))}function In(t){return z((e,r)=>{try{e.subscribe(r)}finally{r.add(t)}})}function Ht(t,e){let r=arguments.length>=2;return n=>n.pipe(t?Ve((i,o)=>t(i,o,n)):Ge,an(1),r?xn(e):cs(()=>new sn))}function Fr(t){return t<=0?()=>Je:z((e,r)=>{let n=[];e.subscribe(G(r,i=>{n.push(i),t{for(let i of n)r.next(i);r.complete()},void 0,()=>{n=null}))})}function Vl(t,e){let r=arguments.length>=2;return n=>n.pipe(t?Ve((i,o)=>t(i,o,n)):Ge,Fr(1),r?xn(e):cs(()=>new sn))}function jl(t,e){return z(zf(t,e,arguments.length>=2,!0))}function $l(t){return Ve((e,r)=>t<=r)}function Ul(...t){let e=bn(t);return z((r,n)=>{(e?Rr(t,r,e):Rr(t,r)).subscribe(n)})}function ut(t,e){return z((r,n)=>{let i=null,o=0,s=!1,a=()=>s&&!i&&n.complete();r.subscribe(G(n,l=>{i?.unsubscribe();let c=0,f=o++;Ie(t(l,f)).subscribe(i=G(n,h=>n.next(e?e(l,h,f,c++):h),()=>{i=null,a()}))},()=>{s=!0,a()}))})}function Bl(t){return z((e,r)=>{Ie(t).subscribe(G(r,()=>r.complete(),ki)),!r.closed&&e.subscribe(r)})}function Re(t,e,r){let n=U(t)||e||r?{next:t,error:e,complete:r}:t;return n?z((i,o)=>{var s;(s=n.subscribe)===null||s===void 0||s.call(n);let a=!0;i.subscribe(G(o,l=>{var c;(c=n.next)===null||c===void 0||c.call(n,l),o.next(l)},()=>{var l;a=!1,(l=n.complete)===null||l===void 0||l.call(n),o.complete()},l=>{var c;a=!1,(c=n.error)===null||c===void 0||c.call(n,l),o.error(l)},()=>{var l,c;a&&((l=n.unsubscribe)===null||l===void 0||l.call(n)),(c=n.finalize)===null||c===void 0||c.call(n)}))}):Ge}var Ap="https://g.co/ng/security#xss",N=class extends Error{constructor(e,r){super(Us(e,r)),this.code=e}};function Us(t,e){return`${`NG0${Math.abs(t)}`}${e?": "+e:""}`}function Zi(t){return{toString:t}.toString()}var us="__parameters__";function Qv(t){return function(...r){if(t){let n=t(...r);for(let i in n)this[i]=n[i]}}}function Op(t,e,r){return Zi(()=>{let n=Qv(e);function i(...o){if(this instanceof i)return n.apply(this,o),this;let s=new i(...o);return a.annotation=s,a;function a(l,c,f){let h=l.hasOwnProperty(us)?l[us]:Object.defineProperty(l,us,{value:[]})[us];for(;h.length<=f;)h.push(null);return(h[f]=h[f]||[]).push(s),l}}return r&&(i.prototype=Object.create(r.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i})}var Ot=globalThis;function le(t){for(let e in t)if(t[e]===le)return e;throw Error("Could not find renamed property on target object.")}function Yv(t,e){for(let r in e)e.hasOwnProperty(r)&&!t.hasOwnProperty(r)&&(t[r]=e[r])}function Ze(t){if(typeof t=="string")return t;if(Array.isArray(t))return"["+t.map(Ze).join(", ")+"]";if(t==null)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;let e=t.toString();if(e==null)return""+e;let r=e.indexOf(` -`);return r===-1?e:e.substring(0,r)}function oc(t,e){return t==null||t===""?e===null?"":e:e==null||e===""?t:t+" "+e}var Kv=le({__forward_ref__:le});function rt(t){return t.__forward_ref__=rt,t.toString=function(){return Ze(this())},t}function We(t){return Np(t)?t():t}function Np(t){return typeof t=="function"&&t.hasOwnProperty(Kv)&&t.__forward_ref__===rt}function T(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function Rt(t){return{providers:t.providers||[],imports:t.imports||[]}}function Bs(t){return Gf(t,Pp)||Gf(t,Rp)}function kp(t){return Bs(t)!==null}function Gf(t,e){return t.hasOwnProperty(e)?t[e]:null}function Jv(t){let e=t&&(t[Pp]||t[Rp]);return e||null}function Wf(t){return t&&(t.hasOwnProperty(Zf)||t.hasOwnProperty(Xv))?t[Zf]:null}var Pp=le({\u0275prov:le}),Zf=le({\u0275inj:le}),Rp=le({ngInjectableDef:le}),Xv=le({ngInjectorDef:le}),R=class{constructor(e,r){this._desc=e,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof r=="number"?this.__NG_ELEMENT_ID__=r:r!==void 0&&(this.\u0275prov=T({token:this,providedIn:r.providedIn||"root",factory:r.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Fp(t){return t&&!!t.\u0275providers}var ey=le({\u0275cmp:le}),ty=le({\u0275dir:le}),ny=le({\u0275pipe:le}),ry=le({\u0275mod:le}),ws=le({\u0275fac:le}),Fi=le({__NG_ELEMENT_ID__:le}),Qf=le({__NG_ENV_ID__:le});function Hs(t){return typeof t=="string"?t:t==null?"":String(t)}function iy(t){return typeof t=="function"?t.name||t.toString():typeof t=="object"&&t!=null&&typeof t.type=="function"?t.type.name||t.type.toString():Hs(t)}function oy(t,e){let r=e?`. Dependency path: ${e.join(" > ")} > ${t}`:"";throw new N(-200,t)}function Jc(t,e){throw new N(-201,!1)}var Y=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}(Y||{}),sc;function Lp(){return sc}function et(t){let e=sc;return sc=t,e}function Vp(t,e,r){let n=Bs(t);if(n&&n.providedIn=="root")return n.value===void 0?n.value=n.factory():n.value;if(r&Y.Optional)return null;if(e!==void 0)return e;Jc(t,"Injector")}var sy={},Li=sy,ac="__NG_DI_FLAG__",Cs="ngTempTokenPath",ay="ngTokenPath",ly=/\n/gm,cy="\u0275",Yf="__source",$r;function uy(){return $r}function Mn(t){let e=$r;return $r=t,e}function dy(t,e=Y.Default){if($r===void 0)throw new N(-203,!1);return $r===null?Vp(t,void 0,e):$r.get(t,e&Y.Optional?null:void 0,e)}function k(t,e=Y.Default){return(Lp()||dy)(We(t),e)}function S(t,e=Y.Default){return k(t,qs(e))}function qs(t){return typeof t>"u"||typeof t=="number"?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function lc(t){let e=[];for(let r=0;r ");else if(typeof e=="object"){let o=[];for(let s in e)if(e.hasOwnProperty(s)){let a=e[s];o.push(s+":"+(typeof a=="string"?JSON.stringify(a):Ze(a)))}i=`{${o.join(", ")}}`}return`${r}${n?"("+n+")":""}[${i}]: ${t.replace(ly,` - `)}`}var Xc=jp(Op("Optional"),8);var $p=jp(Op("SkipSelf"),4);function Zn(t,e){let r=t.hasOwnProperty(ws);return r?t[ws]:null}function my(t,e,r){if(t.length!==e.length)return!1;for(let n=0;nArray.isArray(r)?eu(r,e):e(r))}function Up(t,e,r){e>=t.length?t.push(r):t.splice(e,0,r)}function Ds(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function vy(t,e,r,n){let i=t.length;if(i==e)t.push(r,n);else if(i===1)t.push(n,t[0]),t[0]=r;else{for(i--,t.push(t[i-1],t[i]);i>e;){let o=i-2;t[i]=t[o],i--}t[e]=r,t[e+1]=n}}function zs(t,e,r){let n=Qi(t,e);return n>=0?t[n|1]=r:(n=~n,vy(t,n,e,r)),n}function Hl(t,e){let r=Qi(t,e);if(r>=0)return t[r|1]}function Qi(t,e){return yy(t,e,1)}function yy(t,e,r){let n=0,i=t.length>>r;for(;i!==n;){let o=n+(i-n>>1),s=t[o<e?i=o:n=o+1}return~(i<e){s=o-1;break}}}for(;o-1){let o;for(;++io?h="":h=i[f+1].toLowerCase(),n&2&&c!==h){if(At(n))return!1;s=!0}}}}return At(n)||s}function At(t){return(t&1)===0}function Ey(t,e,r,n){if(e===null)return-1;let i=0;if(n||!r){let o=!1;for(;i-1)for(r++;r0?'="'+a+'"':"")+"]"}else n&8?i+="."+s:n&4&&(i+=" "+s);else i!==""&&!At(s)&&(e+=Jf(o,i),i=""),n=s,o=o||!At(n);r++}return i!==""&&(e+=Jf(o,i)),e}function Ty(t){return t.map(Sy).join(",")}function Ay(t){let e=[],r=[],n=1,i=2;for(;n{let e=Kp(t),r=K(M({},e),{decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===qp.OnPush,directiveDefs:null,pipeDefs:null,dependencies:e.standalone&&t.dependencies||null,getStandaloneInjector:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Gt.Emulated,styles:t.styles||tt,_:null,schemas:t.schemas||null,tView:null,id:""});Jp(r);let n=t.dependencies;return r.directiveDefs=ep(n,!1),r.pipeDefs=ep(n,!0),r.id=ky(r),r})}function Oy(t){return Qn(t)||Wp(t)}function Ny(t){return t!==null}function Ft(t){return Zi(()=>({type:t.type,bootstrap:t.bootstrap||tt,declarations:t.declarations||tt,imports:t.imports||tt,exports:t.exports||tt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Xf(t,e){if(t==null)return Br;let r={};for(let n in t)if(t.hasOwnProperty(n)){let i=t[n],o,s,a=de.None;Array.isArray(i)?(a=i[0],o=i[1],s=i[2]??o):(o=i,s=i),e?(r[o]=a!==de.None?[n,a]:n,e[o]=s):r[o]=n}return r}function se(t){return Zi(()=>{let e=Kp(t);return Jp(e),e})}function ir(t){return{type:t.type,name:t.name,factory:null,pure:t.pure!==!1,standalone:t.standalone===!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function Qn(t){return t[ey]||null}function Wp(t){return t[ty]||null}function Zp(t){return t[ny]||null}function Qp(t){let e=Qn(t)||Wp(t)||Zp(t);return e!==null?e.standalone:!1}function Yp(t,e){let r=t[ry]||null;if(!r&&e===!0)throw new Error(`Type ${Ze(t)} does not have '\u0275mod' property.`);return r}function Kp(t){let e={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:e,inputTransforms:null,inputConfig:t.inputs||Br,exportAs:t.exportAs||null,standalone:t.standalone===!0,signals:t.signals===!0,selectors:t.selectors||tt,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Xf(t.inputs,e),outputs:Xf(t.outputs),debugInfo:null}}function Jp(t){t.features?.forEach(e=>e(t))}function ep(t,e){if(!t)return null;let r=e?Zp:Oy;return()=>(typeof t=="function"?t():t).map(n=>r(n)).filter(Ny)}function ky(t){let e=0,r=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery].join("|");for(let i of r)e=Math.imul(31,e)+i.charCodeAt(0)<<0;return e+=2147483648,"c"+e}function Yr(t){return{\u0275providers:t}}function nu(...t){return{\u0275providers:Xp(!0,t),\u0275fromNgModule:!0}}function Xp(t,...e){let r=[],n=new Set,i,o=s=>{r.push(s)};return eu(e,s=>{let a=s;uc(a,o,[],n)&&(i||=[],i.push(a))}),i!==void 0&&eh(i,o),r}function eh(t,e){for(let r=0;r{e(o,n)})}}function uc(t,e,r,n){if(t=We(t),!t)return!1;let i=null,o=Wf(t),s=!o&&Qn(t);if(!o&&!s){let l=t.ngModule;if(o=Wf(l),o)i=l;else return!1}else{if(s&&!s.standalone)return!1;i=t}let a=n.has(i);if(s){if(a)return!1;if(n.add(i),s.dependencies){let l=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let c of l)uc(c,e,r,n)}}else if(o){if(o.imports!=null&&!a){n.add(i);let c;try{eu(o.imports,f=>{uc(f,e,r,n)&&(c||=[],c.push(f))})}finally{}c!==void 0&&eh(c,e)}if(!a){let c=Zn(i)||(()=>new i);e({provide:i,useFactory:c,deps:tt},i),e({provide:Hp,useValue:i,multi:!0},i),e({provide:Hr,useValue:()=>k(i),multi:!0},i)}let l=o.providers;if(l!=null&&!a){let c=t;ru(l,f=>{e(f,c)})}}else return!1;return i!==t&&t.providers!==void 0}function ru(t,e){for(let r of t)Fp(r)&&(r=r.\u0275providers),Array.isArray(r)?ru(r,e):e(r)}var Py=le({provide:String,useValue:le});function th(t){return t!==null&&typeof t=="object"&&Py in t}function Ry(t){return!!(t&&t.useExisting)}function Fy(t){return!!(t&&t.useFactory)}function qr(t){return typeof t=="function"}function Ly(t){return!!t.useClass}var Gs=new R(""),hs={},Vy={},ql;function iu(){return ql===void 0&&(ql=new bs),ql}var nt=class{},ji=class extends nt{get destroyed(){return this._destroyed}constructor(e,r,n,i){super(),this.parent=r,this.source=n,this.scopes=i,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,fc(e,s=>this.processProvider(s)),this.records.set(Bp,Lr(void 0,this)),i.has("environment")&&this.records.set(nt,Lr(void 0,this));let o=this.records.get(Gs);o!=null&&typeof o.value=="string"&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(Hp,tt,Y.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;let e=ne(null);try{for(let n of this._ngOnDestroyHooks)n.ngOnDestroy();let r=this._onDestroyHooks;this._onDestroyHooks=[];for(let n of r)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),ne(e)}}onDestroy(e){return this.assertNotDestroyed(),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){this.assertNotDestroyed();let r=Mn(this),n=et(void 0),i;try{return e()}finally{Mn(r),et(n)}}get(e,r=Li,n=Y.Default){if(this.assertNotDestroyed(),e.hasOwnProperty(Qf))return e[Qf](this);n=qs(n);let i,o=Mn(this),s=et(void 0);try{if(!(n&Y.SkipSelf)){let l=this.records.get(e);if(l===void 0){let c=Hy(e)&&Bs(e);c&&this.injectableDefInScope(c)?l=Lr(dc(e),hs):l=null,this.records.set(e,l)}if(l!=null)return this.hydrate(e,l)}let a=n&Y.Self?iu():this.parent;return r=n&Y.Optional&&r===Li?null:r,a.get(e,r)}catch(a){if(a.name==="NullInjectorError"){if((a[Cs]=a[Cs]||[]).unshift(Ze(e)),o)throw a;return py(a,e,"R3InjectorError",this.source)}else throw a}finally{et(s),Mn(o)}}resolveInjectorInitializers(){let e=ne(null),r=Mn(this),n=et(void 0),i;try{let o=this.get(Hr,tt,Y.Self);for(let s of o)s()}finally{Mn(r),et(n),ne(e)}}toString(){let e=[],r=this.records;for(let n of r.keys())e.push(Ze(n));return`R3Injector[${e.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new N(205,!1)}processProvider(e){e=We(e);let r=qr(e)?e:We(e&&e.provide),n=$y(e);if(!qr(e)&&e.multi===!0){let i=this.records.get(r);i||(i=Lr(void 0,hs,!0),i.factory=()=>lc(i.multi),this.records.set(r,i)),r=e,i.multi.push(e)}this.records.set(r,n)}hydrate(e,r){let n=ne(null);try{return r.value===hs&&(r.value=Vy,r.value=r.factory()),typeof r.value=="object"&&r.value&&By(r.value)&&this._ngOnDestroyHooks.add(r.value),r.value}finally{ne(n)}}injectableDefInScope(e){if(!e.providedIn)return!1;let r=We(e.providedIn);return typeof r=="string"?r==="any"||this.scopes.has(r):this.injectorDefTypes.has(r)}removeOnDestroy(e){let r=this._onDestroyHooks.indexOf(e);r!==-1&&this._onDestroyHooks.splice(r,1)}};function dc(t){let e=Bs(t),r=e!==null?e.factory:Zn(t);if(r!==null)return r;if(t instanceof R)throw new N(204,!1);if(t instanceof Function)return jy(t);throw new N(204,!1)}function jy(t){if(t.length>0)throw new N(204,!1);let r=Jv(t);return r!==null?()=>r.factory(t):()=>new t}function $y(t){if(th(t))return Lr(void 0,t.useValue);{let e=nh(t);return Lr(e,hs)}}function nh(t,e,r){let n;if(qr(t)){let i=We(t);return Zn(i)||dc(i)}else if(th(t))n=()=>We(t.useValue);else if(Fy(t))n=()=>t.useFactory(...lc(t.deps||[]));else if(Ry(t))n=()=>k(We(t.useExisting));else{let i=We(t&&(t.useClass||t.provide));if(Uy(t))n=()=>new i(...lc(t.deps));else return Zn(i)||dc(i)}return n}function Lr(t,e,r=!1){return{factory:t,value:e,multi:r?[]:void 0}}function Uy(t){return!!t.deps}function By(t){return t!==null&&typeof t=="object"&&typeof t.ngOnDestroy=="function"}function Hy(t){return typeof t=="function"||typeof t=="object"&&t instanceof R}function fc(t,e){for(let r of t)Array.isArray(r)?fc(r,e):r&&Fp(r)?fc(r.\u0275providers,e):e(r)}function fn(t,e){t instanceof ji&&t.assertNotDestroyed();let r,n=Mn(t),i=et(void 0);try{return e()}finally{Mn(n),et(i)}}function qy(){return Lp()!==void 0||uy()!=null}function zy(t){return typeof t=="function"}var pn=0,W=1,$=2,je=3,Nt=4,Lt=5,Es=6,$i=7,kt=8,zr=9,Pt=10,_e=11,Ui=12,tp=13,Kr=14,Wt=15,Yi=16,Vr=17,ln=18,Ws=19,rh=20,Sn=21,zl=22,Yn=23,_t=25,ih=1;var Kn=7,xs=8,Gr=9,dt=10,ou=function(t){return t[t.None=0]="None",t[t.HasTransplantedViews=2]="HasTransplantedViews",t}(ou||{});function Gn(t){return Array.isArray(t)&&typeof t[ih]=="object"}function hn(t){return Array.isArray(t)&&t[ih]===!0}function su(t){return(t.flags&4)!==0}function Zs(t){return t.componentOffset>-1}function Qs(t){return(t.flags&1)===1}function Tn(t){return!!t.template}function Gy(t){return(t[$]&512)!==0}var pc=class{constructor(e,r,n){this.previousValue=e,this.currentValue=r,this.firstChange=n}isFirstChange(){return this.firstChange}};function oh(t,e,r,n){e!==null?e.applyValueToInputSignal(e,n):t[r]=n}function it(){return sh}function sh(t){return t.type.prototype.ngOnChanges&&(t.setInput=Zy),Wy}it.ngInherit=!0;function Wy(){let t=lh(this),e=t?.current;if(e){let r=t.previous;if(r===Br)t.previous=e;else for(let n in e)r[n]=e[n];t.current=null,this.ngOnChanges(e)}}function Zy(t,e,r,n,i){let o=this.declaredInputs[n],s=lh(t)||Qy(t,{previous:Br,current:null}),a=s.current||(s.current={}),l=s.previous,c=l[o];a[o]=new pc(c&&c.currentValue,r,l===Br),oh(t,e,i,r)}var ah="__ngSimpleChanges__";function lh(t){return t[ah]||null}function Qy(t,e){return t[ah]=e}var np=null;var qt=function(t,e,r){np?.(t,e,r)},ch="svg",Yy="math",Ky=!1;function Jy(){return Ky}function Zt(t){for(;Array.isArray(t);)t=t[pn];return t}function uh(t,e){return Zt(e[t])}function wt(t,e){return Zt(e[t.index])}function dh(t,e){return t.data[e]}function fh(t,e){return t[e]}function Nn(t,e){let r=e[t];return Gn(r)?r:r[pn]}function Xy(t){return(t[$]&4)===4}function au(t){return(t[$]&128)===128}function e_(t){return hn(t[je])}function Wr(t,e){return e==null?null:t[e]}function ph(t){t[Vr]=0}function t_(t){t[$]&1024||(t[$]|=1024,au(t)&&Bi(t))}function n_(t,e){for(;t>0;)e=e[Kr],t--;return e}function lu(t){return!!(t[$]&9216||t[Yn]?.dirty)}function hc(t){t[Pt].changeDetectionScheduler?.notify(1),lu(t)?Bi(t):t[$]&64&&(Jy()?(t[$]|=1024,Bi(t)):t[Pt].changeDetectionScheduler?.notify())}function Bi(t){t[Pt].changeDetectionScheduler?.notify();let e=Hi(t);for(;e!==null&&!(e[$]&8192||(e[$]|=8192,!au(e)));)e=Hi(e)}function hh(t,e){if((t[$]&256)===256)throw new N(911,!1);t[Sn]===null&&(t[Sn]=[]),t[Sn].push(e)}function r_(t,e){if(t[Sn]===null)return;let r=t[Sn].indexOf(e);r!==-1&&t[Sn].splice(r,1)}function Hi(t){let e=t[je];return hn(e)?e[je]:e}var H={lFrame:Dh(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function i_(){return H.lFrame.elementDepthCount}function o_(){H.lFrame.elementDepthCount++}function s_(){H.lFrame.elementDepthCount--}function mh(){return H.bindingsEnabled}function a_(){return H.skipHydrationRootTNode!==null}function l_(t){return H.skipHydrationRootTNode===t}function c_(){H.skipHydrationRootTNode=null}function Q(){return H.lFrame.lView}function Ee(){return H.lFrame.tView}function D(t){return H.lFrame.contextLView=t,t[kt]}function b(t){return H.lFrame.contextLView=null,t}function qe(){let t=gh();for(;t!==null&&t.type===64;)t=t.parent;return t}function gh(){return H.lFrame.currentTNode}function u_(){let t=H.lFrame,e=t.currentTNode;return t.isParent?e:e.parent}function or(t,e){let r=H.lFrame;r.currentTNode=t,r.isParent=e}function cu(){return H.lFrame.isParent}function vh(){H.lFrame.isParent=!1}function d_(){return H.lFrame.contextLView}function Ys(){let t=H.lFrame,e=t.bindingRootIndex;return e===-1&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function f_(t){return H.lFrame.bindingIndex=t}function Ks(){return H.lFrame.bindingIndex++}function yh(t){let e=H.lFrame,r=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,r}function p_(){return H.lFrame.inI18n}function h_(t,e){let r=H.lFrame;r.bindingIndex=r.bindingRootIndex=t,mc(e)}function m_(){return H.lFrame.currentDirectiveIndex}function mc(t){H.lFrame.currentDirectiveIndex=t}function g_(t){let e=H.lFrame.currentDirectiveIndex;return e===-1?null:t[e]}function _h(){return H.lFrame.currentQueryIndex}function uu(t){H.lFrame.currentQueryIndex=t}function v_(t){let e=t[W];return e.type===2?e.declTNode:e.type===1?t[Lt]:null}function wh(t,e,r){if(r&Y.SkipSelf){let i=e,o=t;for(;i=i.parent,i===null&&!(r&Y.Host);)if(i=v_(o),i===null||(o=o[Kr],i.type&10))break;if(i===null)return!1;e=i,t=o}let n=H.lFrame=Ch();return n.currentTNode=e,n.lView=t,!0}function du(t){let e=Ch(),r=t[W];H.lFrame=e,e.currentTNode=r.firstChild,e.lView=t,e.tView=r,e.contextLView=t,e.bindingIndex=r.bindingStartIndex,e.inI18n=!1}function Ch(){let t=H.lFrame,e=t===null?null:t.child;return e===null?Dh(t):e}function Dh(t){let e={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return t!==null&&(t.child=e),e}function bh(){let t=H.lFrame;return H.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}var Eh=bh;function fu(){let t=bh();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function y_(t){return(H.lFrame.contextLView=n_(t,H.lFrame.contextLView))[kt]}function sr(){return H.lFrame.selectedIndex}function Jn(t){H.lFrame.selectedIndex=t}function Js(){let t=H.lFrame;return dh(t.tView,t.selectedIndex)}function B(){H.lFrame.currentNamespace=ch}function Ne(){__()}function __(){H.lFrame.currentNamespace=null}function w_(){return H.lFrame.currentNamespace}var xh=!0;function Xs(){return xh}function ea(t){xh=t}function C_(t,e,r){let{ngOnChanges:n,ngOnInit:i,ngDoCheck:o}=e.type.prototype;if(n){let s=sh(e);(r.preOrderHooks??=[]).push(t,s),(r.preOrderCheckHooks??=[]).push(t,s)}i&&(r.preOrderHooks??=[]).push(0-t,i),o&&((r.preOrderHooks??=[]).push(t,o),(r.preOrderCheckHooks??=[]).push(t,o))}function ta(t,e){for(let r=e.directiveStart,n=e.directiveEnd;r=n)break}else e[l]<0&&(t[Vr]+=65536),(a>14>16&&(t[$]&3)===e&&(t[$]+=16384,rp(a,o)):rp(a,o)}var Ur=-1,Xn=class{constructor(e,r,n){this.factory=e,this.resolving=!1,this.canSeeViewProviders=r,this.injectImpl=n}};function b_(t){return t instanceof Xn}function E_(t){return(t.flags&8)!==0}function x_(t){return(t.flags&16)!==0}function Mh(t){return t!==Ur}function Is(t){return t&32767}function I_(t){return t>>16}function Ms(t,e){let r=I_(t),n=e;for(;r>0;)n=n[Kr],r--;return n}var gc=!0;function Ss(t){let e=gc;return gc=t,e}var M_=256,Sh=M_-1,Th=5,S_=0,zt={};function T_(t,e,r){let n;typeof r=="string"?n=r.charCodeAt(0)||0:r.hasOwnProperty(Fi)&&(n=r[Fi]),n==null&&(n=r[Fi]=S_++);let i=n&Sh,o=1<>Th)]|=o}function Ts(t,e){let r=Ah(t,e);if(r!==-1)return r;let n=e[W];n.firstCreatePass&&(t.injectorIndex=e.length,Wl(n.data,t),Wl(e,null),Wl(n.blueprint,null));let i=pu(t,e),o=t.injectorIndex;if(Mh(i)){let s=Is(i),a=Ms(i,e),l=a[W].data;for(let c=0;c<8;c++)e[o+c]=a[s+c]|l[s+c]}return e[o+8]=i,o}function Wl(t,e){t.push(0,0,0,0,0,0,0,0,e)}function Ah(t,e){return t.injectorIndex===-1||t.parent&&t.parent.injectorIndex===t.injectorIndex||e[t.injectorIndex+8]===null?-1:t.injectorIndex}function pu(t,e){if(t.parent&&t.parent.injectorIndex!==-1)return t.parent.injectorIndex;let r=0,n=null,i=e;for(;i!==null;){if(n=Rh(i),n===null)return Ur;if(r++,i=i[Kr],n.injectorIndex!==-1)return n.injectorIndex|r<<16}return Ur}function vc(t,e,r){T_(t,e,r)}function A_(t,e){if(e==="class")return t.classes;if(e==="style")return t.styles;let r=t.attrs;if(r){let n=r.length,i=0;for(;i>20,h=n?a:a+f,g=i?a+f:c;for(let y=h;y=l&&I.type===r)return y}if(i){let y=s[l];if(y&&Tn(y)&&y.type===r)return l}return null}function er(t,e,r,n){let i=t[r],o=e.data;if(b_(i)){let s=i;s.resolving&&oy(iy(o[r]));let a=Ss(s.canSeeViewProviders);s.resolving=!0;let l,c=s.injectImpl?et(s.injectImpl):null,f=wh(t,n,Y.Default);try{i=t[r]=s.factory(void 0,o,t,n),e.firstCreatePass&&r>=n.directiveStart&&C_(r,o[r],e)}finally{c!==null&&et(c),Ss(a),s.resolving=!1,Eh()}}return i}function N_(t){if(typeof t=="string")return t.charCodeAt(0)||0;let e=t.hasOwnProperty(Fi)?t[Fi]:void 0;return typeof e=="number"?e>=0?e&Sh:k_:e}function ip(t,e,r){let n=1<>Th)]&n)}function op(t,e){return!(t&Y.Self)&&!(t&Y.Host&&e)}var Wn=class{constructor(e,r){this._tNode=e,this._lView=r}get(e,r,n){return kh(this._tNode,this._lView,e,qs(n),r)}};function k_(){return new Wn(qe(),Q())}function Ct(t){return Zi(()=>{let e=t.prototype.constructor,r=e[ws]||yc(e),n=Object.prototype,i=Object.getPrototypeOf(t.prototype).constructor;for(;i&&i!==n;){let o=i[ws]||yc(i);if(o&&o!==r)return o;i=Object.getPrototypeOf(i)}return o=>new o})}function yc(t){return Np(t)?()=>{let e=yc(We(t));return e&&e()}:Zn(t)}function P_(t,e,r,n,i){let o=t,s=e;for(;o!==null&&s!==null&&s[$]&2048&&!(s[$]&512);){let a=Ph(o,s,r,n|Y.Self,zt);if(a!==zt)return a;let l=o.parent;if(!l){let c=s[rh];if(c){let f=c.get(r,zt,n);if(f!==zt)return f}l=Rh(s),s=s[Kr]}o=l}return i}function Rh(t){let e=t[W],r=e.type;return r===2?e.declTNode:r===1?t[Lt]:null}function hu(t){return A_(qe(),t)}function sp(t,e=null,r=null,n){let i=Fh(t,e,r,n);return i.resolveInjectorInitializers(),i}function Fh(t,e=null,r=null,n,i=new Set){let o=[r||tt,nu(t)];return n=n||(typeof t=="object"?void 0:Ze(t)),new ji(o,e||iu(),n||null,i)}var Jr=(()=>{let e=class e{static create(n,i){if(Array.isArray(n))return sp({name:""},i,n,"");{let o=n.name??"";return sp({name:o},n.parent,n.providers,o)}}};e.THROW_IF_NOT_FOUND=Li,e.NULL=new bs,e.\u0275prov=T({token:e,providedIn:"any",factory:()=>k(Bp)}),e.__NG_ELEMENT_ID__=-1;let t=e;return t})();var R_="ngOriginalError";function Zl(t){return t[R_]}var cn=class{constructor(){this._console=console}handleError(e){let r=this._findOriginalError(e);this._console.error("ERROR",e),r&&this._console.error("ORIGINAL ERROR",r)}_findOriginalError(e){let r=e&&Zl(e);for(;r&&Zl(r);)r=Zl(r);return r||null}},Lh=new R("",{providedIn:"root",factory:()=>S(cn).handleError.bind(void 0)}),Vh=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=F_,e.__NG_ENV_ID__=n=>n;let t=e;return t})(),_c=class extends Vh{constructor(e){super(),this._lView=e}onDestroy(e){return hh(this._lView,e),()=>r_(this._lView,e)}};function F_(){return new _c(Q())}function L_(){return Xr(qe(),Q())}function Xr(t,e){return new ze(wt(t,e))}var ze=(()=>{let e=class e{constructor(n){this.nativeElement=n}};e.__NG_ELEMENT_ID__=L_;let t=e;return t})();function V_(t){return t instanceof ze?t.nativeElement:t}var wc=class extends ue{constructor(e=!1){super(),this.destroyRef=void 0,this.__isAsync=e,qy()&&(this.destroyRef=S(Vh,{optional:!0})??void 0)}emit(e){let r=ne(null);try{super.next(e)}finally{ne(r)}}subscribe(e,r,n){let i=e,o=r||(()=>null),s=n;if(e&&typeof e=="object"){let l=e;i=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Ql(o),i&&(i=Ql(i)),s&&(s=Ql(s)));let a=super.subscribe({next:i,error:o,complete:s});return e instanceof ve&&e.add(a),a}};function Ql(t){return e=>{setTimeout(t,void 0,e)}}var De=wc;function j_(){return this._results[Symbol.iterator]()}var Cc=class t{get changes(){return this._changes??=new De}constructor(e=!1){this._emitDistinctChangesOnly=e,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;let r=t.prototype;r[Symbol.iterator]||(r[Symbol.iterator]=j_)}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,r){return this._results.reduce(e,r)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,r){this.dirty=!1;let n=gy(e);(this._changesDetected=!my(this._results,n,r))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}};function jh(t){return(t.flags&128)===128}var $h=new Map,$_=0;function U_(){return $_++}function B_(t){$h.set(t[Ws],t)}function H_(t){$h.delete(t[Ws])}var ap="__ngContext__";function An(t,e){Gn(e)?(t[ap]=e[Ws],B_(e)):t[ap]=e}function Uh(t){return Hh(t[Ui])}function Bh(t){return Hh(t[Nt])}function Hh(t){for(;t!==null&&!hn(t);)t=t[Nt];return t}var Dc;function qh(t){Dc=t}function q_(){if(Dc!==void 0)return Dc;if(typeof document<"u")return document;throw new N(210,!1)}var mu=new R("",{providedIn:"root",factory:()=>z_}),z_="ng",gu=new R(""),kn=new R("",{providedIn:"platform",factory:()=>"unknown"});var vu=new R("",{providedIn:"root",factory:()=>q_().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var G_="h",W_="b";var Z_=()=>null;function yu(t,e,r=!1){return Z_(t,e,r)}var zh=!1,Q_=new R("",{providedIn:"root",factory:()=>zh});var ds;function Y_(){if(ds===void 0&&(ds=null,Ot.trustedTypes))try{ds=Ot.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return ds}function lp(t){return Y_()?.createScriptURL(t)||t}var As=class{constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${Ap})`}};function ar(t){return t instanceof As?t.changingThisBreaksApplicationSecurity:t}function _u(t,e){let r=K_(t);if(r!=null&&r!==e){if(r==="ResourceURL"&&e==="URL")return!0;throw new Error(`Required a safe ${e}, got a ${r} (see ${Ap})`)}return r===e}function K_(t){return t instanceof As&&t.getTypeName()||null}var J_=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Gh(t){return t=String(t),t.match(J_)?t:"unsafe:"+t}var na=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}(na||{});function ot(t){let e=Zh();return e?e.sanitize(na.URL,t)||"":_u(t,"URL")?ar(t):Gh(Hs(t))}function X_(t){let e=Zh();if(e)return lp(e.sanitize(na.RESOURCE_URL,t)||"");if(_u(t,"ResourceURL"))return lp(ar(t));throw new N(904,!1)}function ew(t,e){return e==="src"&&(t==="embed"||t==="frame"||t==="iframe"||t==="media"||t==="script")||e==="href"&&(t==="base"||t==="link")?X_:ot}function Wh(t,e,r){return ew(e,r)(t)}function Zh(){let t=Q();return t&&t[Pt].sanitizer}var tw=/^>|^->||--!>|)/g,rw="\u200B$1\u200B";function iw(t){return t.replace(tw,e=>e.replace(nw,rw))}function lr(t){return t.ownerDocument}function Qh(t){return t instanceof Function?t():t}var un=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}(un||{}),ow;function wu(t,e){return ow(t,e)}function jr(t,e,r,n,i){if(n!=null){let o,s=!1;hn(n)?o=n:Gn(n)&&(s=!0,n=n[pn]);let a=Zt(n);t===0&&r!==null?i==null?em(e,r,a):Os(e,r,a,i||null,!0):t===1&&r!==null?Os(e,r,a,i||null,!0):t===2?bw(e,a,s):t===3&&e.destroyNode(a),o!=null&&xw(e,t,o,r,i)}}function sw(t,e){return t.createText(e)}function aw(t,e,r){t.setValue(e,r)}function lw(t,e){return t.createComment(iw(e))}function Yh(t,e,r){return t.createElement(e,r)}function cw(t,e){Kh(t,e),e[pn]=null,e[Lt]=null}function uw(t,e,r,n,i,o){n[pn]=i,n[Lt]=e,ia(t,n,r,1,i,o)}function Kh(t,e){e[Pt].changeDetectionScheduler?.notify(1),ia(t,e,e[_e],2,null,null)}function dw(t){let e=t[Ui];if(!e)return Yl(t[W],t);for(;e;){let r=null;if(Gn(e))r=e[Ui];else{let n=e[dt];n&&(r=n)}if(!r){for(;e&&!e[Nt]&&e!==t;)Gn(e)&&Yl(e[W],e),e=e[je];e===null&&(e=t),Gn(e)&&Yl(e[W],e),r=e&&e[Nt]}e=r}}function fw(t,e,r,n){let i=dt+n,o=r.length;n>0&&(r[i-1][Nt]=e),n0&&(t[r-1][Nt]=n[Nt]);let o=Ds(t,dt+e);cw(n[W],n);let s=o[ln];s!==null&&s.detachView(o[W]),n[je]=null,n[Nt]=null,n[$]&=-129}return n}function Xh(t,e){if(!(e[$]&256)){let r=e[_e];r.destroyNode&&ia(t,e,r,3,null,null),dw(e)}}function Yl(t,e){if(e[$]&256)return;let r=ne(null);try{e[$]&=-129,e[$]|=256,e[Yn]&&wf(e[Yn]),mw(t,e),hw(t,e),e[W].type===1&&e[_e].destroy();let n=e[Yi];if(n!==null&&hn(e[je])){n!==e[je]&&Jh(n,e);let i=e[ln];i!==null&&i.detachView(t)}H_(e)}finally{ne(r)}}function hw(t,e){let r=t.cleanup,n=e[$i];if(r!==null)for(let o=0;o=0?n[s]():n[-s].unsubscribe(),o+=2}else{let s=n[r[o+1]];r[o].call(s)}n!==null&&(e[$i]=null);let i=e[Sn];if(i!==null){e[Sn]=null;for(let o=0;o-1){let{encapsulation:o}=t.data[n.directiveStart+i];if(o===Gt.None||o===Gt.Emulated)return null}return wt(n,r)}}function Os(t,e,r,n,i){t.insertBefore(e,r,n,i)}function em(t,e,r){t.appendChild(e,r)}function cp(t,e,r,n,i){n!==null?Os(t,e,r,n,i):em(t,e,r)}function yw(t,e,r,n){t.removeChild(e,r,n)}function Cu(t,e){return t.parentNode(e)}function _w(t,e){return t.nextSibling(e)}function ww(t,e,r){return Dw(t,e,r)}function Cw(t,e,r){return t.type&40?wt(t,r):null}var Dw=Cw,up;function ra(t,e,r,n){let i=gw(t,n,e),o=e[_e],s=n.parent||e[Lt],a=ww(s,n,e);if(i!=null)if(Array.isArray(r))for(let l=0;l_t&&im(t,e,_t,!1),qt(s?2:0,i),r(n,i)}finally{Jn(o),qt(s?3:1,i)}}function bu(t,e,r){if(su(e)){let n=ne(null);try{let i=e.directiveStart,o=e.directiveEnd;for(let s=i;snull;function Pw(t,e,r,n){let i=pm(e);i.push(r),t.firstCreatePass&&hm(t).push(n,i.length-1)}function Rw(t,e,r,n,i,o){let s=e?e.injectorIndex:-1,a=0;return a_()&&(a|=128),{type:r,index:n,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:i,attrs:o,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function dp(t,e,r,n,i){for(let o in e){if(!e.hasOwnProperty(o))continue;let s=e[o];if(s===void 0)continue;n??={};let a,l=de.None;Array.isArray(s)?(a=s[0],l=s[1]):a=s;let c=o;if(i!==null){if(!i.hasOwnProperty(o))continue;c=i[o]}t===0?fp(n,r,c,a,l):fp(n,r,c,a)}return n}function fp(t,e,r,n,i){let o;t.hasOwnProperty(r)?(o=t[r]).push(e,n):o=t[r]=[e,n],i!==void 0&&o.push(i)}function Fw(t,e,r){let n=e.directiveStart,i=e.directiveEnd,o=t.data,s=e.attrs,a=[],l=null,c=null;for(let f=n;f0;){let r=t[--e];if(typeof r=="number"&&r<0)return r}return 0}function Uw(t,e,r,n){let i=r.directiveStart,o=r.directiveEnd;Zs(r)&&Zw(e,r,t.data[i+r.componentOffset]),t.firstCreatePass||Ts(r,e),An(n,e);let s=r.initialInputs;for(let a=i;a{Bi(t.lView)},consumerOnSignalRead(){this.lView[Yn]=this}}),vm=100;function ym(t,e=!0,r=0){let n=t[Pt],i=n.rendererFactory,o=!1;o||i.begin?.();try{uC(t,r)}catch(s){throw e&&mm(t,s),s}finally{o||(i.end?.(),n.inlineEffectRunner?.flush())}}function uC(t,e){Mc(t,e);let r=0;for(;lu(t);){if(r===vm)throw new N(103,!1);r++,Mc(t,1)}}function dC(t,e,r,n){let i=e[$];if((i&256)===256)return;let o=!1;!o&&e[Pt].inlineEffectRunner?.flush(),du(e);let s=null,a=null;!o&&fC(t)&&(a=sC(e),s=yf(a));try{ph(e),f_(t.bindingStartIndex),r!==null&&am(t,e,r,2,n);let l=(i&3)===3;if(!o)if(l){let h=t.preOrderCheckHooks;h!==null&&ms(e,h,null)}else{let h=t.preOrderHooks;h!==null&&gs(e,h,0,null),Gl(e,0)}if(pC(e),_m(e,0),t.contentQueries!==null&&fm(t,e),!o)if(l){let h=t.contentCheckHooks;h!==null&&ms(e,h)}else{let h=t.contentHooks;h!==null&&gs(e,h,1),Gl(e,1)}Sw(t,e);let c=t.components;c!==null&&Cm(e,c,0);let f=t.viewQuery;if(f!==null&&Ic(2,f,n),!o)if(l){let h=t.viewCheckHooks;h!==null&&ms(e,h)}else{let h=t.viewHooks;h!==null&&gs(e,h,2),Gl(e,2)}if(t.firstUpdatePass===!0&&(t.firstUpdatePass=!1),e[zl]){for(let h of e[zl])h();e[zl]=null}o||(e[$]&=-73)}catch(l){throw Bi(e),l}finally{a!==null&&(_f(a,s),lC(a)),fu()}}function fC(t){return t.type!==2}function _m(t,e){for(let r=Uh(t);r!==null;r=Bh(r))for(let n=dt;n-1&&(bc(e,n),Ds(r,n))}this._attachedToViewContainer=!1}Xh(this._lView[W],this._lView)}onDestroy(e){hh(this._lView,e)}markForCheck(){Ou(this._cdRefInjectingView||this._lView)}detach(){this._lView[$]&=-129}reattach(){hc(this._lView),this._lView[$]|=128}detectChanges(){this._lView[$]|=1024,ym(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new N(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,Kh(this._lView[W],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new N(902,!1);this._appRef=e,hc(this._lView)}},nr=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=vC;let t=e;return t})(),mC=nr,gC=class extends mC{constructor(e,r,n){super(),this._declarationLView=e,this._declarationTContainer=r,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,r){return this.createEmbeddedViewImpl(e,r)}createEmbeddedViewImpl(e,r,n){let i=rC(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:r,dehydratedView:n});return new tr(i)}};function vC(){return aa(qe(),Q())}function aa(t,e){return t.type&4?new gC(e,t,Xr(t,e)):null}var bP=new RegExp(`^(\\d+)*(${W_}|${G_})*(.*)`);var yC=()=>null;function hp(t,e){return yC(t,e)}var Sc=class{},Tc=class{},ks=class{};function _C(t){let e=Error(`No component factory found for ${Ze(t)}.`);return e[wC]=t,e}var wC="ngComponent";var Ac=class{resolveComponentFactory(e){throw _C(e)}},la=(()=>{let e=class e{};e.NULL=new Ac;let t=e;return t})(),qi=class{},jt=(()=>{let e=class e{constructor(){this.destroyNode=null}};e.__NG_ELEMENT_ID__=()=>CC();let t=e;return t})();function CC(){let t=Q(),e=qe(),r=Nn(e.index,t);return(Gn(r)?r:t)[_e]}var DC=(()=>{let e=class e{};e.\u0275prov=T({token:e,providedIn:"root",factory:()=>null});let t=e;return t})(),Kl={};var mp=new Set;function Nu(t){mp.has(t)||(mp.add(t),performance?.mark?.("mark_feature_usage",{detail:{feature:t}}))}function gp(...t){}function bC(){let t=typeof Ot.requestAnimationFrame=="function",e=Ot[t?"requestAnimationFrame":"setTimeout"],r=Ot[t?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&e&&r){let n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);let i=r[Zone.__symbol__("OriginalDelegate")];i&&(r=i)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:r}}var be=class t{constructor({enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:n=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new De(!1),this.onMicrotaskEmpty=new De(!1),this.onStable=new De(!1),this.onError=new De(!1),typeof Zone>"u")throw new N(908,!1);Zone.assertZonePatched();let i=this;i._nesting=0,i._outer=i._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(i._inner=i._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(i._inner=i._inner.fork(Zone.longStackTraceZoneSpec)),i.shouldCoalesceEventChangeDetection=!n&&r,i.shouldCoalesceRunChangeDetection=n,i.lastRequestAnimationFrameId=-1,i.nativeRequestAnimationFrame=bC().nativeRequestAnimationFrame,IC(i)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get("isAngularZone")===!0}static assertInAngularZone(){if(!t.isInAngularZone())throw new N(909,!1)}static assertNotInAngularZone(){if(t.isInAngularZone())throw new N(909,!1)}run(e,r,n){return this._inner.run(e,r,n)}runTask(e,r,n,i){let o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+i,e,EC,gp,gp);try{return o.runTask(s,r,n)}finally{o.cancelTask(s)}}runGuarded(e,r,n){return this._inner.runGuarded(e,r,n)}runOutsideAngular(e){return this._outer.run(e)}},EC={};function ku(t){if(t._nesting==0&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function xC(t){t.isCheckStableRunning||t.lastRequestAnimationFrameId!==-1||(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(Ot,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,Oc(t),t.isCheckStableRunning=!0,ku(t),t.isCheckStableRunning=!1},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),Oc(t))}function IC(t){let e=()=>{xC(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(r,n,i,o,s,a)=>{if(MC(a))return r.invokeTask(i,o,s,a);try{return vp(t),r.invokeTask(i,o,s,a)}finally{(t.shouldCoalesceEventChangeDetection&&o.type==="eventTask"||t.shouldCoalesceRunChangeDetection)&&e(),yp(t)}},onInvoke:(r,n,i,o,s,a,l)=>{try{return vp(t),r.invoke(i,o,s,a,l)}finally{t.shouldCoalesceRunChangeDetection&&e(),yp(t)}},onHasTask:(r,n,i,o)=>{r.hasTask(i,o),n===i&&(o.change=="microTask"?(t._hasPendingMicrotasks=o.microTask,Oc(t),ku(t)):o.change=="macroTask"&&(t.hasPendingMacrotasks=o.macroTask))},onHandleError:(r,n,i,o)=>(r.handleError(i,o),t.runOutsideAngular(()=>t.onError.emit(o)),!1)})}function Oc(t){t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&t.lastRequestAnimationFrameId!==-1?t.hasPendingMicrotasks=!0:t.hasPendingMicrotasks=!1}function vp(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function yp(t){t._nesting--,ku(t)}function MC(t){return!Array.isArray(t)||t.length!==1?!1:t[0].data?.__ignore_ng_zone__===!0}var Dm=(()=>{let e=class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){let n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(let i of n)i()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}};e.\u0275prov=T({token:e,providedIn:"root",factory:()=>new e});let t=e;return t})();function Ps(t,e,r){let n=r?t.styles:null,i=r?t.classes:null,o=0;if(e!==null)for(let s=0;s0&&nm(t,r,o.join(" "))}}function PC(t,e,r){let n=t.projection=[];for(let i=0;i{let e=class e{};e.__NG_ELEMENT_ID__=FC;let t=e;return t})();function FC(){let t=qe();return Em(t,Q())}var LC=mn,bm=class extends LC{constructor(e,r,n){super(),this._lContainer=e,this._hostTNode=r,this._hostLView=n}get element(){return Xr(this._hostTNode,this._hostLView)}get injector(){return new Wn(this._hostTNode,this._hostLView)}get parentInjector(){let e=pu(this._hostTNode,this._hostLView);if(Mh(e)){let r=Ms(e,this._hostLView),n=Is(e),i=r[W].data[n+8];return new Wn(i,r)}else return new Wn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let r=wp(this._lContainer);return r!==null&&r[e]||null}get length(){return this._lContainer.length-dt}createEmbeddedView(e,r,n){let i,o;typeof n=="number"?i=n:n!=null&&(i=n.index,o=n.injector);let s=hp(this._lContainer,e.ssrId),a=e.createEmbeddedViewImpl(r||{},o,s);return this.insertImpl(a,i,pp(this._hostTNode,s)),a}createComponent(e,r,n,i,o){let s=e&&!zy(e),a;if(s)a=r;else{let I=r||{};a=I.index,n=I.injector,i=I.projectableNodes,o=I.environmentInjector||I.ngModuleRef}let l=s?e:new zi(Qn(e)),c=n||this.parentInjector;if(!o&&l.ngModule==null){let F=(s?c:this.parentInjector).get(nt,null);F&&(o=F)}let f=Qn(l.componentType??{}),h=hp(this._lContainer,f?.id??null),g=h?.firstChild??null,y=l.create(c,i,g,o);return this.insertImpl(y.hostView,a,pp(this._hostTNode,h)),y}insert(e,r){return this.insertImpl(e,r,!0)}insertImpl(e,r,n){let i=e._lView;if(e_(i)){let a=this.indexOf(e);if(a!==-1)this.detach(a);else{let l=i[je],c=new bm(l,l[Lt],l[je]);c.detach(c.indexOf(e))}}let o=this._adjustIndex(r),s=this._lContainer;return iC(s,i,o,n),e.attachToViewContainerRef(),Up(Jl(s),o,e),e}move(e,r){return this.insert(e,r)}indexOf(e){let r=wp(this._lContainer);return r!==null?r.indexOf(e):-1}remove(e){let r=this._adjustIndex(e,-1),n=bc(this._lContainer,r);n&&(Ds(Jl(this._lContainer),r),Xh(n[W],n))}detach(e){let r=this._adjustIndex(e,-1),n=bc(this._lContainer,r);return n&&Ds(Jl(this._lContainer),r)!=null?new tr(n):null}_adjustIndex(e,r=0){return e??this.length+r}};function wp(t){return t[xs]}function Jl(t){return t[xs]||(t[xs]=[])}function Em(t,e){let r,n=e[t.index];return hn(n)?r=n:(r=dm(n,e,null,t),e[t.index]=r,sa(e,r)),jC(r,e,t,n),new bm(r,t,e)}function VC(t,e){let r=t[_e],n=r.createComment(""),i=wt(e,t),o=Cu(r,i);return Os(r,o,n,_w(r,i),!1),n}var jC=BC,$C=()=>!1;function UC(t,e,r){return $C(t,e,r)}function BC(t,e,r,n){if(t[Kn])return;let i;r.type&8?i=Zt(n):i=VC(e,r),t[Kn]=i}var Pc=class t{constructor(e){this.queryList=e,this.matches=null}clone(){return new t(this.queryList)}setDirty(){this.queryList.setDirty()}},Rc=class t{constructor(e=[]){this.queries=e}createEmbeddedView(e){let r=e.queries;if(r!==null){let n=e.contentQueries!==null?e.contentQueries[0]:r.length,i=[];for(let o=0;o0)n.push(s[a/2]);else{let c=o[a+1],f=e[-l];for(let h=dt;he.trim())}function Mm(t,e,r){t.queries===null&&(t.queries=new Fc),t.queries.track(new Lc(e,r))}function KC(t,e){let r=t.contentQueries||(t.contentQueries=[]),n=r.length?r[r.length-1]:-1;e!==n&&r.push(t.queries.length-1,e)}function Pu(t,e){return t.queries.getByIndex(e)}function JC(t,e){let r=t[W],n=Pu(r,e);return n.crossesNgTemplate?Vc(r,t,e,[]):xm(r,t,n,e)}function XC(t){return typeof t=="function"&&t[gl]!==void 0}function Sm(t){return XC(t)&&typeof t.set=="function"}function eD(t){return Object.getPrototypeOf(t.prototype).constructor}function $e(t){let e=eD(t.type),r=!0,n=[t];for(;e;){let i;if(Tn(t))i=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new N(903,!1);i=e.\u0275dir}if(i){if(r){n.push(i);let s=t;s.inputs=fs(t.inputs),s.inputTransforms=fs(t.inputTransforms),s.declaredInputs=fs(t.declaredInputs),s.outputs=fs(t.outputs);let a=i.hostBindings;a&&oD(t,a);let l=i.viewQuery,c=i.contentQueries;if(l&&rD(t,l),c&&iD(t,c),tD(t,i),Yv(t.outputs,i.outputs),Tn(i)&&i.data.animation){let f=t.data;f.animation=(f.animation||[]).concat(i.data.animation)}}let o=i.features;if(o)for(let s=0;s=0;n--){let i=t[n];i.hostVars=e+=i.hostVars,i.hostAttrs=Vi(i.hostAttrs,r=Vi(r,i.hostAttrs))}}function fs(t){return t===Br?{}:t===tt?[]:t}function rD(t,e){let r=t.viewQuery;r?t.viewQuery=(n,i)=>{e(n,i),r(n,i)}:t.viewQuery=e}function iD(t,e){let r=t.contentQueries;r?t.contentQueries=(n,i,o)=>{e(n,i,o),r(n,i,o)}:t.contentQueries=e}function oD(t,e){let r=t.hostBindings;r?t.hostBindings=(n,i)=>{e(n,i),r(n,i)}:t.hostBindings=e}function Ru(t){let e=t.inputConfig,r={};for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];Array.isArray(i)&&i[3]&&(r[n]=i[3])}t.inputTransforms=r}var On=class{},Gi=class{};var jc=class extends On{constructor(e,r,n){super(),this._parent=r,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Rs(this);let i=Yp(e);this._bootstrapComponents=Qh(i.bootstrap),this._r3Injector=Fh(e,r,[{provide:On,useValue:this},{provide:la,useValue:this.componentFactoryResolver},...n],Ze(e),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(e)}get injector(){return this._r3Injector}destroy(){let e=this._r3Injector;!e.destroyed&&e.destroy(),this.destroyCbs.forEach(r=>r()),this.destroyCbs=null}onDestroy(e){this.destroyCbs.push(e)}},$c=class extends Gi{constructor(e){super(),this.moduleType=e}create(e){return new jc(this.moduleType,e,[])}};var Ls=class extends On{constructor(e){super(),this.componentFactoryResolver=new Rs(this),this.instance=null;let r=new ji([...e.providers,{provide:On,useValue:this},{provide:la,useValue:this.componentFactoryResolver}],e.parent||iu(),e.debugName,new Set(["environment"]));this.injector=r,e.runEnvironmentInitializers&&r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Fu(t,e,r=null){return new Ls({providers:t,parent:e,debugName:r,runEnvironmentInitializers:!0}).injector}var cr=(()=>{let e=class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new Le(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function Tm(t){return aD(t)?Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t:!1}function sD(t,e){if(Array.isArray(t))for(let r=0;r>17&32767}function hD(t){return(t&2)==2}function mD(t,e){return t&131071|e<<17}function Uc(t){return t|2}function Zr(t){return(t&131068)>>2}function Xl(t,e){return t&-131069|e<<2}function gD(t){return(t&1)===1}function Bc(t){return t|1}function vD(t,e,r,n,i,o){let s=o?e.classBindings:e.styleBindings,a=rr(s),l=Zr(s);t[n]=r;let c=!1,f;if(Array.isArray(r)){let h=r;f=h[1],(f===null||Qi(h,f)>0)&&(c=!0)}else f=r;if(i)if(l!==0){let g=rr(t[a+1]);t[n+1]=ps(g,a),g!==0&&(t[g+1]=Xl(t[g+1],n)),t[a+1]=mD(t[a+1],n)}else t[n+1]=ps(a,0),a!==0&&(t[a+1]=Xl(t[a+1],n)),a=n;else t[n+1]=ps(l,0),a===0?a=n:t[l+1]=Xl(t[l+1],n),l=n;c&&(t[n+1]=Uc(t[n+1])),Cp(t,f,n,!0),Cp(t,f,n,!1),yD(e,f,t,n,o),s=ps(a,l),o?e.classBindings=s:e.styleBindings=s}function yD(t,e,r,n,i){let o=i?t.residualClasses:t.residualStyles;o!=null&&typeof e=="string"&&Qi(o,e)>=0&&(r[n+1]=Bc(r[n+1]))}function Cp(t,e,r,n){let i=t[r+1],o=e===null,s=n?rr(i):Zr(i),a=!1;for(;s!==0&&(a===!1||o);){let l=t[s],c=t[s+1];_D(l,e)&&(a=!0,t[s+1]=n?Bc(c):Uc(c)),s=n?rr(c):Zr(c)}a&&(t[r+1]=n?Uc(i):Bc(i))}function _D(t,e){return t===null||e==null||(Array.isArray(t)?t[1]:t)===e?!0:Array.isArray(t)&&typeof e=="string"?Qi(t,e)>=0:!1}var Oe={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Am(t){return t.substring(Oe.key,Oe.keyEnd)}function wD(t){return t.substring(Oe.value,Oe.valueEnd)}function CD(t){return km(t),Om(t,Qr(t,0,Oe.textEnd))}function Om(t,e){let r=Oe.textEnd;return r===e?-1:(e=Oe.keyEnd=bD(t,Oe.key=e,r),Qr(t,e,r))}function DD(t){return km(t),Nm(t,Qr(t,0,Oe.textEnd))}function Nm(t,e){let r=Oe.textEnd,n=Oe.key=Qr(t,e,r);return r===n?-1:(n=Oe.keyEnd=ED(t,n,r),n=Dp(t,n,r,58),n=Oe.value=Qr(t,n,r),n=Oe.valueEnd=xD(t,n,r),Dp(t,n,r,59))}function km(t){Oe.key=0,Oe.keyEnd=0,Oe.value=0,Oe.valueEnd=0,Oe.textEnd=t.length}function Qr(t,e,r){for(;e32;)e++;return e}function ED(t,e,r){let n;for(;e=65&&(n&-33)<=90||n>=48&&n<=57);)e++;return e}function Dp(t,e,r,n){return e=Qr(t,e,r),e32&&(a=s),o=i,i=n,n=l&-33}return a}function bp(t,e,r,n){let i=-1,o=r;for(;o=0;r=Nm(e,r))Lm(t,Am(e),wD(e))}function SD(t,e){for(let r=CD(e);r>=0;r=Om(e,r))zs(t,Am(e),!0)}function TD(t,e,r,n){let i=Q(),o=Ee(),s=yh(2);if(o.firstUpdatePass&&Fm(o,t,s,n),e!==Vt&&dn(i,s,e)){let a=o.data[sr()];Vm(o,a,i,i[_e],t,i[s+1]=FD(e,r),n,s)}}function Pm(t,e,r,n){let i=Ee(),o=yh(2);i.firstUpdatePass&&Fm(i,null,o,n);let s=Q();if(r!==Vt&&dn(s,o,r)){let a=i.data[sr()];if(jm(a,n)&&!Rm(i,o)){let l=n?a.classesWithoutHost:a.stylesWithoutHost;l!==null&&(r=oc(l,r||"")),Hc(i,a,s,r,n)}else RD(i,a,s,s[_e],s[o+1],s[o+1]=PD(t,e,r),n,o)}}function Rm(t,e){return e>=t.expandoStartIndex}function Fm(t,e,r,n){let i=t.data;if(i[r+1]===null){let o=i[sr()],s=Rm(t,r);jm(o,n)&&e===null&&!s&&(e=!1),e=AD(i,o,e,n),vD(i,o,e,r,s,n)}}function AD(t,e,r,n){let i=g_(t),o=n?e.residualClasses:e.residualStyles;if(i===null)(n?e.classBindings:e.styleBindings)===0&&(r=ec(null,t,e,r,n),r=Wi(r,e.attrs,n),o=null);else{let s=e.directiveStylingLast;if(s===-1||t[s]!==i)if(r=ec(i,t,e,r,n),o===null){let l=OD(t,e,n);l!==void 0&&Array.isArray(l)&&(l=ec(null,t,e,l[1],n),l=Wi(l,e.attrs,n),ND(t,e,n,l))}else o=kD(t,e,n)}return o!==void 0&&(n?e.residualClasses=o:e.residualStyles=o),r}function OD(t,e,r){let n=r?e.classBindings:e.styleBindings;if(Zr(n)!==0)return t[rr(n)]}function ND(t,e,r,n){let i=r?e.classBindings:e.styleBindings;t[rr(i)]=n}function kD(t,e,r){let n,i=e.directiveEnd;for(let o=1+e.directiveStylingLast;o0;){let l=t[i],c=Array.isArray(l),f=c?l[1]:l,h=f===null,g=r[i+1];g===Vt&&(g=h?tt:void 0);let y=h?Hl(g,n):f===n?g:void 0;if(c&&!Vs(y)&&(y=Hl(l,n)),Vs(y)&&(a=y,s))return a;let I=t[i+1];i=s?rr(I):Zr(I)}if(e!==null){let l=o?e.residualClasses:e.residualStyles;l!=null&&(a=Hl(l,n))}return a}function Vs(t){return t!==void 0}function FD(t,e){return t==null||t===""||(typeof e=="string"?t=t+e:typeof t=="object"&&(t=Ze(ar(t)))),t}function jm(t,e){return(t.flags&(e?8:16))!==0}function $m(t,e,r){let n=Q(),i=ca(n,t,e,r);Pm(zs,SD,i,!0)}function LD(t,e,r,n,i,o){let s=e.consts,a=Wr(s,i),l=Ki(e,t,2,n,a);return Su(e,r,l,Wr(s,o)),l.attrs!==null&&Ps(l,l.attrs,!1),l.mergedAttrs!==null&&Ps(l,l.mergedAttrs,!0),e.queries!==null&&e.queries.elementStart(e,l),l}function u(t,e,r,n){let i=Q(),o=Ee(),s=_t+t,a=i[_e],l=o.firstCreatePass?LD(s,o,i,e,r,n):o.data[s],c=VD(o,i,l,a,e,t);i[s]=c;let f=Qs(l);return or(l,!0),rm(a,c,l),!uD(l)&&Xs()&&ra(o,i,c,l),i_()===0&&An(c,i),o_(),f&&(Eu(o,i,l),bu(o,l,i)),n!==null&&xu(i,l),u}function d(){let t=qe();cu()?vh():(t=t.parent,or(t,!1));let e=t;l_(e)&&c_(),s_();let r=Ee();return r.firstCreatePass&&(ta(r,t),su(t)&&r.queries.elementEnd(t)),e.classesWithoutHost!=null&&E_(e)&&Hc(r,e,Q(),e.classesWithoutHost,!0),e.stylesWithoutHost!=null&&x_(e)&&Hc(r,e,Q(),e.stylesWithoutHost,!1),d}function w(t,e,r,n){return u(t,e,r,n),d(),w}var VD=(t,e,r,n,i,o)=>(ea(!0),Yh(n,i,w_()));function jD(t,e,r,n,i){let o=e.consts,s=Wr(o,n),a=Ki(e,t,8,"ng-container",s);s!==null&&Ps(a,s,!0);let l=Wr(o,i);return Su(e,r,a,l),e.queries!==null&&e.queries.elementStart(e,a),a}function ft(t,e,r){let n=Q(),i=Ee(),o=t+_t,s=i.firstCreatePass?jD(o,i,n,e,r):i.data[o];or(s,!0);let a=$D(i,n,s,t);return n[o]=a,Xs()&&ra(i,n,a,s),An(a,n),Qs(s)&&(Eu(i,n,s),bu(i,s,n)),r!=null&&xu(n,s),ft}function pt(){let t=qe(),e=Ee();return cu()?vh():(t=t.parent,or(t,!1)),e.firstCreatePass&&(ta(e,t),su(t)&&e.queries.elementEnd(t)),pt}function ua(t,e,r){return ft(t,e,r),pt(),ua}var $D=(t,e,r,n)=>(ea(!0),lw(e[_e],""));function j(){return Q()}var zn=void 0;function UD(t){let e=t,r=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return r===1&&n===0?1:5}var BD=["en",[["a","p"],["AM","PM"],zn],[["AM","PM"],zn,zn],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],zn,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],zn,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",zn,"{1} 'at' {0}",zn],[".",",",";","%","+","-","E","\xD7","\u2030","\u221E","NaN",":"],["#,##0.###","#,##0%","\xA4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",UD],tc={};function Dt(t){let e=HD(t),r=xp(e);if(r)return r;let n=e.split("-")[0];if(r=xp(n),r)return r;if(n==="en")return BD;throw new N(701,!1)}function xp(t){return t in tc||(tc[t]=Ot.ng&&Ot.ng.common&&Ot.ng.common.locales&&Ot.ng.common.locales[t]),tc[t]}var xe=function(t){return t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData",t}(xe||{});function HD(t){return t.toLowerCase().replace(/_/g,"-")}var js="en-US";var qD=js;function zD(t){typeof t=="string"&&(qD=t.toLowerCase().replace(/_/g,"-"))}function x(t,e,r,n){let i=Q(),o=Ee(),s=qe();return Um(o,i,i[_e],s,t,e,n),x}function GD(t,e,r,n){let i=t.cleanup;if(i!=null)for(let o=0;ol?a[l]:null}typeof s=="string"&&(o+=2)}return null}function Um(t,e,r,n,i,o,s){let a=Qs(n),c=t.firstCreatePass&&hm(t),f=e[kt],h=pm(e),g=!0;if(n.type&3||s){let F=wt(n,e),L=s?s(F):F,P=h.length,Be=s?me=>s(Zt(me[n.index])):n.index,Fe=null;if(!s&&a&&(Fe=GD(t,e,i,n.index)),Fe!==null){let me=Fe.__ngLastListenerFn__||Fe;me.__ngNextListenerFn__=o,Fe.__ngLastListenerFn__=o,g=!1}else{o=Mp(n,e,f,o,!1);let me=r.listen(L,i,o);h.push(o,me),c&&c.push(i,Be,P,P+1)}}else o=Mp(n,e,f,o,!1);let y=n.outputs,I;if(g&&y!==null&&(I=y[i])){let F=I.length;if(F)for(let L=0;L-1?Nn(t.index,e):e;Ou(a);let l=Ip(e,r,n,s),c=o.__ngNextListenerFn__;for(;c;)l=Ip(e,r,c,s)&&l,c=c.__ngNextListenerFn__;return i&&l===!1&&s.preventDefault(),l}}function v(t=1){return y_(t)}function Qe(t,e,r){return ur(t,"",e,"",r),Qe}function ur(t,e,r,n,i){let o=Q(),s=ca(o,e,r,n);if(s!==Vt){let a=Ee(),l=Js();Mu(a,l,o,t,s,o[_e],i,!1)}return ur}function Bm(t,e,r,n){QC(t,e,r,n)}function Qt(t,e,r){ZC(t,e,r)}function bt(t){let e=Q(),r=Ee(),n=_h();uu(n+1);let i=Pu(r,n);if(t.dirty&&Xy(e)===((i.metadata.flags&2)===2)){if(i.matches===null)t.reset([]);else{let o=JC(e,n);t.reset(o,V_),t.notifyOnChanges()}return!0}return!1}function Et(){return WC(Q(),_h())}function WD(t,e,r,n){r>=t.data.length&&(t.data[r]=null,t.blueprint[r]=null),e[r]=n}function fe(t){let e=d_();return fh(e,_t+t)}function Hm(t,e,r){let n=Q(),i=ca(n,t,e,r);ID(i)}function p(t,e=""){let r=Q(),n=Ee(),i=t+_t,o=n.firstCreatePass?Ki(n,i,1,e,null):n.data[i],s=ZD(n,r,o,e,t);r[i]=s,Xs()&&ra(n,r,s,o),or(o,!1)}var ZD=(t,e,r,n,i)=>(ea(!0),sw(e[_e],n));function V(t){return X("",t,""),V}function X(t,e,r){let n=Q(),i=ca(n,t,e,r);return i!==Vt&&Xw(n,sr(),i),X}function Yt(t,e,r){Sm(e)&&(e=e());let n=Q(),i=Ks();if(dn(n,i,e)){let o=Ee(),s=Js();Mu(o,s,n,t,e,n[_e],r,!1)}return Yt}function gn(t,e){let r=Sm(t);return r&&t.set(e),r}function Kt(t,e){let r=Q(),n=Ee(),i=qe();return Um(n,r,r[_e],i,t,e),Kt}function QD(t,e,r){let n=Ee();if(n.firstCreatePass){let i=Tn(t);qc(r,n.data,n.blueprint,i,!0),qc(e,n.data,n.blueprint,i,!1)}}function qc(t,e,r,n,i){if(t=We(t),Array.isArray(t))for(let o=0;o>20;if(qr(t)||!t.multi){let y=new Xn(c,i,C),I=rc(l,e,i?f:f+g,h);I===-1?(vc(Ts(a,s),o,l),nc(o,t,e.length),e.push(l),a.directiveStart++,a.directiveEnd++,i&&(a.providerIndexes+=1048576),r.push(y),s.push(y)):(r[I]=y,s[I]=y)}else{let y=rc(l,e,f+g,h),I=rc(l,e,f,f+g),F=y>=0&&r[y],L=I>=0&&r[I];if(i&&!L||!i&&!F){vc(Ts(a,s),o,l);let P=JD(i?KD:YD,r.length,i,n,c);!i&&L&&(r[I].providerFactory=P),nc(o,t,e.length,0),e.push(l),a.directiveStart++,a.directiveEnd++,i&&(a.providerIndexes+=1048576),r.push(P),s.push(P)}else{let P=qm(r[i?I:y],c,!i&&n);nc(o,t,y>-1?y:I,P)}!i&&n&&L&&r[I].componentProviders++}}}function nc(t,e,r,n){let i=qr(e),o=Ly(e);if(i||o){let l=(o?We(e.useClass):e).prototype.ngOnDestroy;if(l){let c=t.destroyHooks||(t.destroyHooks=[]);if(!i&&e.multi){let f=c.indexOf(r);f===-1?c.push(r,[n,l]):c[f+1].push(n,l)}else c.push(r,l)}}}function qm(t,e,r){return r&&t.componentProviders++,t.multi.push(e)-1}function rc(t,e,r,n){for(let i=r;i{r.providersResolver=(n,i)=>QD(n,i?i(t):t,e)}}var XD=(()=>{let e=class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let i=Xp(!1,n.type),o=i.length>0?Fu([i],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}};e.\u0275prov=T({token:e,providedIn:"environment",factory:()=>new e(k(nt))});let t=e;return t})();function te(t){Nu("NgStandalone"),t.getStandaloneInjector=e=>e.get(XD).getOrCreateStandaloneInjector(t)}function ei(t,e,r){let n=Ys()+t,i=Q();return i[n]===Vt?Lu(i,n,r?e.call(r):e()):lD(i,n)}function dr(t,e,r,n){return Gm(Q(),Ys(),t,e,r,n)}function da(t,e,r,n,i){return eb(Q(),Ys(),t,e,r,n,i)}function zm(t,e){let r=t[e];return r===Vt?void 0:r}function Gm(t,e,r,n,i,o){let s=e+r;return dn(t,s,i)?Lu(t,s+1,o?n.call(o,i):n(i)):zm(t,s+1)}function eb(t,e,r,n,i,o,s){let a=e+r;return cD(t,a,i,o)?Lu(t,a+2,s?n.call(s,i,o):n(i,o)):zm(t,a+2)}function ke(t,e){let r=Ee(),n,i=t+_t;r.firstCreatePass?(n=tb(e,r.pipeRegistry),r.data[i]=n,n.onDestroy&&(r.destroyHooks??=[]).push(i,n.onDestroy)):n=r.data[i];let o=n.factory||(n.factory=Zn(n.type,!0)),s,a=et(C);try{let l=Ss(!1),c=o();return Ss(l),WD(r,Q(),i,c),c}finally{et(a)}}function tb(t,e){if(e)for(let r=e.length-1;r>=0;r--){let n=e[r];if(t===n.name)return n}}function Pe(t,e,r){let n=t+_t,i=Q(),o=fh(i,n);return nb(i,n)?Gm(i,Ys(),e,o.transform,r,o):o.transform(r)}function nb(t,e){return t[W].data[e].pure}function he(t,e){return aa(t,e)}var fa=(()=>{let e=class e{log(n){console.log(n)}warn(n){console.warn(n)}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"platform"});let t=e;return t})();var Wm=new R("");function fr(t){return!!t&&typeof t.then=="function"}function Zm(t){return!!t&&typeof t.subscribe=="function"}var Qm=new R(""),Ym=(()=>{let e=class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,i)=>{this.resolve=n,this.reject=i}),this.appInits=S(Qm,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let s=o();if(fr(s))n.push(s);else if(Zm(s)){let a=new Promise((l,c)=>{s.subscribe({complete:l,error:c})});n.push(a)}}let i=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{i()}).catch(o=>{this.reject(o)}),n.length===0&&i(),this.initialized=!0}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),pa=new R("");function rb(){Cf(()=>{throw new N(600,!1)})}function ib(t){return t.isBoundToModule}function ob(t,e,r){try{let n=r();return fr(n)?n.catch(i=>{throw e.runOutsideAngular(()=>t.handleError(i)),i}):n}catch(n){throw e.runOutsideAngular(()=>t.handleError(n)),n}}var ti=(()=>{let e=class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=S(Lh),this.afterRenderEffectManager=S(Dm),this.externalTestViews=new Set,this.beforeRender=new ue,this.afterTick=new ue,this.componentTypes=[],this.components=[],this.isStable=S(cr).hasPendingTasks.pipe(A(n=>!n)),this._injector=S(nt)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,i){let o=n instanceof ks;if(!this._injector.get(Ym).done){let y=!o&&Qp(n),I=!1;throw new N(405,I)}let a;o?a=n:a=this._injector.get(la).resolveComponentFactory(n),this.componentTypes.push(a.componentType);let l=ib(a)?void 0:this._injector.get(On),c=i||a.selector,f=a.create(Jr.NULL,[],c,l),h=f.location.nativeElement,g=f.injector.get(Wm,null);return g?.registerApplication(h),f.onDestroy(()=>{this.detachView(f.hostView),ic(this.components,f),g?.unregisterApplication(h)}),this._loadComponent(f),f}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new N(101,!1);let i=ne(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this.afterTick.next(),this._runningTick=!1,ne(i)}}detectChangesInAttachedViews(n){let i=0,o=this.afterRenderEffectManager;for(;;){if(i===vm)throw new N(103,!1);if(n){let s=i===0;this.beforeRender.next(s);for(let{_lView:a,notifyErrorHandler:l}of this._views)sb(a,s,l)}if(i++,o.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:s})=>Gc(s))&&(o.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:s})=>Gc(s))))break}}attachView(n){let i=n;this._views.push(i),i.attachToAppRef(this)}detachView(n){let i=n;ic(this._views,i),i.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);let i=this._injector.get(pa,[]);[...this._bootstrapListeners,...i].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>ic(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new N(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function ic(t,e){let r=t.indexOf(e);r>-1&&t.splice(r,1)}function sb(t,e,r){!e&&!Gc(t)||ab(t,r,e)}function Gc(t){return lu(t)}function ab(t,e,r){let n;r?(n=0,t[$]|=1024):t[$]&64?n=0:n=1,ym(t,e,n)}var Wc=class{constructor(e,r){this.ngModuleFactory=e,this.componentFactories=r}},Vu=(()=>{let e=class e{compileModuleSync(n){return new $c(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){let i=this.compileModuleSync(n),o=Yp(n),s=Qh(o.declarations).reduce((a,l)=>{let c=Qn(l);return c&&a.push(new zi(c)),a},[]);return new Wc(i,s)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var lb=(()=>{let e=class e{constructor(){this.zone=S(be),this.applicationRef=S(ti)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function cb(t){return[{provide:be,useFactory:t},{provide:Hr,multi:!0,useFactory:()=>{let e=S(lb,{optional:!0});return()=>e.initialize()}},{provide:Hr,multi:!0,useFactory:()=>{let e=S(pb);return()=>{e.initialize()}}},{provide:Lh,useFactory:ub}]}function ub(){let t=S(be),e=S(cn);return r=>t.runOutsideAngular(()=>e.handleError(r))}function db(t){let e=cb(()=>new be(fb(t)));return Yr([[],e])}function fb(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}var pb=(()=>{let e=class e{constructor(){this.subscription=new ve,this.initialized=!1,this.zone=S(be),this.pendingTasks=S(cr)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{be.assertNotInAngularZone(),queueMicrotask(()=>{n!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{be.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function hb(){return typeof $localize<"u"&&$localize.locale||js}var ha=new R("",{providedIn:"root",factory:()=>S(ha,Y.Optional|Y.SkipSelf)||hb()});var Km=new R("");var _s=null;function mb(t=[],e){return Jr.create({name:e,providers:[{provide:Gs,useValue:"platform"},{provide:Km,useValue:new Set([()=>_s=null])},...t]})}function gb(t=[]){if(_s)return _s;let e=mb(t);return _s=e,rb(),vb(e),e}function vb(t){t.get(gu,null)?.forEach(r=>r())}var Jt=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=yb;let t=e;return t})();function yb(t){return _b(qe(),Q(),(t&16)===16)}function _b(t,e,r){if(Zs(t)&&!r){let n=Nn(t.index,e);return new tr(n,n)}else if(t.type&47){let n=e[Wt];return new tr(n,e)}return null}var Zc=class{constructor(){}supports(e){return Tm(e)}create(e){return new Qc(e)}},wb=(t,e)=>e,Qc=class{constructor(e){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=e||wb}forEachItem(e){let r;for(r=this._itHead;r!==null;r=r._next)e(r)}forEachOperation(e){let r=this._itHead,n=this._removalsHead,i=0,o=null;for(;r||n;){let s=!n||r&&r.currentIndex{s=this._trackByFn(i,a),r===null||!Object.is(r.trackById,s)?(r=this._mismatch(r,a,s,i),n=!0):(n&&(r=this._verifyReinsertion(r,a,s,i)),Object.is(r.item,a)||this._addIdentityChange(r,a)),r=r._next,i++}),this.length=i;return this._truncate(r),this.collection=e,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let e;for(e=this._previousItHead=this._itHead;e!==null;e=e._next)e._nextPrevious=e._next;for(e=this._additionsHead;e!==null;e=e._nextAdded)e.previousIndex=e.currentIndex;for(this._additionsHead=this._additionsTail=null,e=this._movesHead;e!==null;e=e._nextMoved)e.previousIndex=e.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(e,r,n,i){let o;return e===null?o=this._itTail:(o=e._prev,this._remove(e)),e=this._unlinkedRecords===null?null:this._unlinkedRecords.get(n,null),e!==null?(Object.is(e.item,r)||this._addIdentityChange(e,r),this._reinsertAfter(e,o,i)):(e=this._linkedRecords===null?null:this._linkedRecords.get(n,i),e!==null?(Object.is(e.item,r)||this._addIdentityChange(e,r),this._moveAfter(e,o,i)):e=this._addAfter(new Yc(r,n),o,i)),e}_verifyReinsertion(e,r,n,i){let o=this._unlinkedRecords===null?null:this._unlinkedRecords.get(n,null);return o!==null?e=this._reinsertAfter(o,e._prev,i):e.currentIndex!=i&&(e.currentIndex=i,this._addToMoves(e,i)),e}_truncate(e){for(;e!==null;){let r=e._next;this._addToRemovals(this._unlink(e)),e=r}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(e,r,n){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(e);let i=e._prevRemoved,o=e._nextRemoved;return i===null?this._removalsHead=o:i._nextRemoved=o,o===null?this._removalsTail=i:o._prevRemoved=i,this._insertAfter(e,r,n),this._addToMoves(e,n),e}_moveAfter(e,r,n){return this._unlink(e),this._insertAfter(e,r,n),this._addToMoves(e,n),e}_addAfter(e,r,n){return this._insertAfter(e,r,n),this._additionsTail===null?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e}_insertAfter(e,r,n){let i=r===null?this._itHead:r._next;return e._next=i,e._prev=r,i===null?this._itTail=e:i._prev=e,r===null?this._itHead=e:r._next=e,this._linkedRecords===null&&(this._linkedRecords=new $s),this._linkedRecords.put(e),e.currentIndex=n,e}_remove(e){return this._addToRemovals(this._unlink(e))}_unlink(e){this._linkedRecords!==null&&this._linkedRecords.remove(e);let r=e._prev,n=e._next;return r===null?this._itHead=n:r._next=n,n===null?this._itTail=r:n._prev=r,e}_addToMoves(e,r){return e.previousIndex===r||(this._movesTail===null?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e),e}_addToRemovals(e){return this._unlinkedRecords===null&&(this._unlinkedRecords=new $s),this._unlinkedRecords.put(e),e.currentIndex=null,e._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=e,e._prevRemoved=null):(e._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=e),e}_addIdentityChange(e,r){return e.item=r,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e}},Yc=class{constructor(e,r){this.item=e,this.trackById=r,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}},Kc=class{constructor(){this._head=null,this._tail=null}add(e){this._head===null?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)}get(e,r){let n;for(n=this._head;n!==null;n=n._nextDup)if((r===null||r<=n.currentIndex)&&Object.is(n.trackById,e))return n;return null}remove(e){let r=e._prevDup,n=e._nextDup;return r===null?this._head=n:r._nextDup=n,n===null?this._tail=r:n._prevDup=r,this._head===null}},$s=class{constructor(){this.map=new Map}put(e){let r=e.trackById,n=this.map.get(r);n||(n=new Kc,this.map.set(r,n)),n.add(e)}get(e,r){let n=e,i=this.map.get(n);return i?i.get(e,r):null}remove(e){let r=e.trackById;return this.map.get(r).remove(e)&&this.map.delete(r),e}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function Sp(t,e,r){let n=t.previousIndex;if(n===null)return n;let i=0;return r&&n{let e=class e{constructor(n){this.factories=n}static create(n,i){if(i!=null){let o=i.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||Tp()),deps:[[e,new $p,new Xc]]}}find(n){let i=this.factories.find(o=>o.supports(n));if(i!=null)return i;throw new N(901,!1)}};e.\u0275prov=T({token:e,providedIn:"root",factory:Tp});let t=e;return t})();function Jm(t){try{let{rootComponent:e,appProviders:r,platformProviders:n}=t,i=gb(n),o=[db(),...r||[]],a=new Ls({providers:o,parent:i,debugName:"",runEnvironmentInitializers:!1}).injector,l=a.get(be);return l.run(()=>{a.resolveInjectorInitializers();let c=a.get(cn,null),f;l.runOutsideAngular(()=>{f=l.onError.subscribe({next:y=>{c.handleError(y)}})});let h=()=>a.destroy(),g=i.get(Km);return g.add(h),a.onDestroy(()=>{f.unsubscribe(),g.delete(h)}),ob(c,l,()=>{let y=a.get(Ym);return y.runInitializers(),y.donePromise.then(()=>{let I=a.get(ha,js);zD(I||js);let F=a.get(ti);return e!==void 0&&F.bootstrap(e),F})})})}catch(e){return Promise.reject(e)}}function pr(t){return typeof t=="boolean"?t:t!=null&&t!=="false"}var og=null;function _n(){return og}function sg(t){og??=t}var ba=class{};var at=new R(""),ag=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(Cb),providedIn:"platform"});let t=e;return t})();var Cb=(()=>{let e=class e extends ag{constructor(){super(),this._doc=S(at),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return _n().getBaseHref(this._doc)}onPopState(n){let i=_n().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",n,!1),()=>i.removeEventListener("popstate",n)}onHashChange(n){let i=_n().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",n,!1),()=>i.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,i,o){this._history.pushState(n,i,o)}replaceState(n,i,o){this._history.replaceState(n,i,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>new e,providedIn:"platform"});let t=e;return t})();function lg(t,e){if(t.length==0)return e;if(e.length==0)return t;let r=0;return t.endsWith("/")&&r++,e.startsWith("/")&&r++,r==2?t+e.substring(1):r==1?t+e:t+"/"+e}function Xm(t){let e=t.match(/#|\?|$/),r=e&&e.index||t.length,n=r-(t[r-1]==="/"?1:0);return t.slice(0,n)+t.slice(r)}function hr(t){return t&&t[0]!=="?"?"?"+t:t}var ri=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(cg),providedIn:"root"});let t=e;return t})(),Db=new R(""),cg=(()=>{let e=class e extends ri{constructor(n,i){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??S(at).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return lg(this._baseHref,n)}path(n=!1){let i=this._platformLocation.pathname+hr(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${i}${o}`:i}pushState(n,i,o,s){let a=this.prepareExternalUrl(o+hr(s));this._platformLocation.pushState(n,i,a)}replaceState(n,i,o,s){let a=this.prepareExternalUrl(o+hr(s));this._platformLocation.replaceState(n,i,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}};e.\u0275fac=function(i){return new(i||e)(k(ag),k(Db,8))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var Ut=(()=>{let e=class e{constructor(n){this._subject=new De,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;let i=this._locationStrategy.getBaseHref();this._basePath=xb(Xm(eg(i))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,i=""){return this.path()==this.normalize(n+hr(i))}normalize(n){return e.stripTrailingSlash(Eb(this._basePath,eg(n)))}prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,i="",o=null){this._locationStrategy.pushState(o,"",n,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+hr(i)),o)}replaceState(n,i="",o=null){this._locationStrategy.replaceState(o,"",n,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+hr(i)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{let i=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(i,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",i){this._urlChangeListeners.forEach(o=>o(n,i))}subscribe(n,i,o){return this._subject.subscribe({next:n,error:i,complete:o})}};e.normalizeQueryParams=hr,e.joinWithSlash=lg,e.stripTrailingSlash=Xm,e.\u0275fac=function(i){return new(i||e)(k(ri))},e.\u0275prov=T({token:e,factory:()=>bb(),providedIn:"root"});let t=e;return t})();function bb(){return new Ut(k(ri))}function Eb(t,e){if(!t||!e.startsWith(t))return e;let r=e.substring(t.length);return r===""||["/",";","?","#"].includes(r[0])?r:e}function eg(t){return t.replace(/\/index.html$/,"")}function xb(t){if(new RegExp("^(https?:)?//").test(t)){let[,r]=t.split(/\/\/[^\/]+/);return r}return t}var Ye=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}(Ye||{}),ce=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}(ce||{}),ht=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}(ht||{}),Pn={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Ib(t){return Dt(t)[xe.LocaleId]}function Mb(t,e,r){let n=Dt(t),i=[n[xe.DayPeriodsFormat],n[xe.DayPeriodsStandalone]],o=xt(i,e);return xt(o,r)}function Sb(t,e,r){let n=Dt(t),i=[n[xe.DaysFormat],n[xe.DaysStandalone]],o=xt(i,e);return xt(o,r)}function Tb(t,e,r){let n=Dt(t),i=[n[xe.MonthsFormat],n[xe.MonthsStandalone]],o=xt(i,e);return xt(o,r)}function Ab(t,e){let n=Dt(t)[xe.Eras];return xt(n,e)}function ma(t,e){let r=Dt(t);return xt(r[xe.DateFormat],e)}function ga(t,e){let r=Dt(t);return xt(r[xe.TimeFormat],e)}function va(t,e){let n=Dt(t)[xe.DateTimeFormat];return xt(n,e)}function xa(t,e){let r=Dt(t),n=r[xe.NumberSymbols][e];if(typeof n>"u"){if(e===Pn.CurrencyDecimal)return r[xe.NumberSymbols][Pn.Decimal];if(e===Pn.CurrencyGroup)return r[xe.NumberSymbols][Pn.Group]}return n}function ug(t){if(!t[xe.ExtraData])throw new Error(`Missing extra locale data for the locale "${t[xe.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function Ob(t){let e=Dt(t);return ug(e),(e[xe.ExtraData][2]||[]).map(n=>typeof n=="string"?$u(n):[$u(n[0]),$u(n[1])])}function Nb(t,e,r){let n=Dt(t);ug(n);let i=[n[xe.ExtraData][0],n[xe.ExtraData][1]],o=xt(i,e)||[];return xt(o,r)||[]}function xt(t,e){for(let r=e;r>-1;r--)if(typeof t[r]<"u")return t[r];throw new Error("Locale data API: locale data undefined")}function $u(t){let[e,r]=t.split(":");return{hours:+e,minutes:+r}}var kb=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,ya={},Pb=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,yn=function(t){return t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended",t}(yn||{}),ie=function(t){return t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day",t}(ie||{}),re=function(t){return t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras",t}(re||{});function Rb(t,e,r,n){let i=qb(t);e=vn(r,e)||e;let s=[],a;for(;e;)if(a=Pb.exec(e),a){s=s.concat(a.slice(1));let f=s.pop();if(!f)break;e=f}else{s.push(e);break}let l=i.getTimezoneOffset();n&&(l=fg(n,l),i=Hb(i,n,!0));let c="";return s.forEach(f=>{let h=Ub(f);c+=h?h(i,r,l):f==="''"?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function Ea(t,e,r){let n=new Date(0);return n.setFullYear(t,e,r),n.setHours(0,0,0),n}function vn(t,e){let r=Ib(t);if(ya[r]??={},ya[r][e])return ya[r][e];let n="";switch(e){case"shortDate":n=ma(t,ht.Short);break;case"mediumDate":n=ma(t,ht.Medium);break;case"longDate":n=ma(t,ht.Long);break;case"fullDate":n=ma(t,ht.Full);break;case"shortTime":n=ga(t,ht.Short);break;case"mediumTime":n=ga(t,ht.Medium);break;case"longTime":n=ga(t,ht.Long);break;case"fullTime":n=ga(t,ht.Full);break;case"short":let i=vn(t,"shortTime"),o=vn(t,"shortDate");n=_a(va(t,ht.Short),[i,o]);break;case"medium":let s=vn(t,"mediumTime"),a=vn(t,"mediumDate");n=_a(va(t,ht.Medium),[s,a]);break;case"long":let l=vn(t,"longTime"),c=vn(t,"longDate");n=_a(va(t,ht.Long),[l,c]);break;case"full":let f=vn(t,"fullTime"),h=vn(t,"fullDate");n=_a(va(t,ht.Full),[f,h]);break}return n&&(ya[r][e]=n),n}function _a(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,function(r,n){return e!=null&&n in e?e[n]:r})),t}function $t(t,e,r="-",n,i){let o="";(t<0||i&&t<=0)&&(i?t=-t+1:(t=-t,o=r));let s=String(t);for(;s.length0||a>-r)&&(a+=r),t===ie.Hours)a===0&&r===-12&&(a=12);else if(t===ie.FractionalSeconds)return Fb(a,e);let l=xa(s,Pn.MinusSign);return $t(a,e,l,n,i)}}function Lb(t,e){switch(t){case ie.FullYear:return e.getFullYear();case ie.Month:return e.getMonth();case ie.Date:return e.getDate();case ie.Hours:return e.getHours();case ie.Minutes:return e.getMinutes();case ie.Seconds:return e.getSeconds();case ie.FractionalSeconds:return e.getMilliseconds();case ie.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${t}".`)}}function pe(t,e,r=Ye.Format,n=!1){return function(i,o){return Vb(i,o,t,e,r,n)}}function Vb(t,e,r,n,i,o){switch(r){case re.Months:return Tb(e,i,n)[t.getMonth()];case re.Days:return Sb(e,i,n)[t.getDay()];case re.DayPeriods:let s=t.getHours(),a=t.getMinutes();if(o){let c=Ob(e),f=Nb(e,i,n),h=c.findIndex(g=>{if(Array.isArray(g)){let[y,I]=g,F=s>=y.hours&&a>=y.minutes,L=s0?Math.floor(i/60):Math.ceil(i/60);switch(t){case yn.Short:return(i>=0?"+":"")+$t(s,2,o)+$t(Math.abs(i%60),2,o);case yn.ShortGMT:return"GMT"+(i>=0?"+":"")+$t(s,1,o);case yn.Long:return"GMT"+(i>=0?"+":"")+$t(s,2,o)+":"+$t(Math.abs(i%60),2,o);case yn.Extended:return n===0?"Z":(i>=0?"+":"")+$t(s,2,o)+":"+$t(Math.abs(i%60),2,o);default:throw new Error(`Unknown zone width "${t}"`)}}}var jb=0,Da=4;function $b(t){let e=Ea(t,jb,1).getDay();return Ea(t,0,1+(e<=Da?Da:Da+7)-e)}function dg(t){let e=t.getDay(),r=e===0?-3:Da-e;return Ea(t.getFullYear(),t.getMonth(),t.getDate()+r)}function Uu(t,e=!1){return function(r,n){let i;if(e){let o=new Date(r.getFullYear(),r.getMonth(),1).getDay()-1,s=r.getDate();i=1+Math.floor((s+o)/7)}else{let o=dg(r),s=$b(o.getFullYear()),a=o.getTime()-s.getTime();i=1+Math.round(a/6048e5)}return $t(i,t,xa(n,Pn.MinusSign))}}function Ca(t,e=!1){return function(r,n){let o=dg(r).getFullYear();return $t(o,t,xa(n,Pn.MinusSign),e)}}var Bu={};function Ub(t){if(Bu[t])return Bu[t];let e;switch(t){case"G":case"GG":case"GGG":e=pe(re.Eras,ce.Abbreviated);break;case"GGGG":e=pe(re.Eras,ce.Wide);break;case"GGGGG":e=pe(re.Eras,ce.Narrow);break;case"y":e=Me(ie.FullYear,1,0,!1,!0);break;case"yy":e=Me(ie.FullYear,2,0,!0,!0);break;case"yyy":e=Me(ie.FullYear,3,0,!1,!0);break;case"yyyy":e=Me(ie.FullYear,4,0,!1,!0);break;case"Y":e=Ca(1);break;case"YY":e=Ca(2,!0);break;case"YYY":e=Ca(3);break;case"YYYY":e=Ca(4);break;case"M":case"L":e=Me(ie.Month,1,1);break;case"MM":case"LL":e=Me(ie.Month,2,1);break;case"MMM":e=pe(re.Months,ce.Abbreviated);break;case"MMMM":e=pe(re.Months,ce.Wide);break;case"MMMMM":e=pe(re.Months,ce.Narrow);break;case"LLL":e=pe(re.Months,ce.Abbreviated,Ye.Standalone);break;case"LLLL":e=pe(re.Months,ce.Wide,Ye.Standalone);break;case"LLLLL":e=pe(re.Months,ce.Narrow,Ye.Standalone);break;case"w":e=Uu(1);break;case"ww":e=Uu(2);break;case"W":e=Uu(1,!0);break;case"d":e=Me(ie.Date,1);break;case"dd":e=Me(ie.Date,2);break;case"c":case"cc":e=Me(ie.Day,1);break;case"ccc":e=pe(re.Days,ce.Abbreviated,Ye.Standalone);break;case"cccc":e=pe(re.Days,ce.Wide,Ye.Standalone);break;case"ccccc":e=pe(re.Days,ce.Narrow,Ye.Standalone);break;case"cccccc":e=pe(re.Days,ce.Short,Ye.Standalone);break;case"E":case"EE":case"EEE":e=pe(re.Days,ce.Abbreviated);break;case"EEEE":e=pe(re.Days,ce.Wide);break;case"EEEEE":e=pe(re.Days,ce.Narrow);break;case"EEEEEE":e=pe(re.Days,ce.Short);break;case"a":case"aa":case"aaa":e=pe(re.DayPeriods,ce.Abbreviated);break;case"aaaa":e=pe(re.DayPeriods,ce.Wide);break;case"aaaaa":e=pe(re.DayPeriods,ce.Narrow);break;case"b":case"bb":case"bbb":e=pe(re.DayPeriods,ce.Abbreviated,Ye.Standalone,!0);break;case"bbbb":e=pe(re.DayPeriods,ce.Wide,Ye.Standalone,!0);break;case"bbbbb":e=pe(re.DayPeriods,ce.Narrow,Ye.Standalone,!0);break;case"B":case"BB":case"BBB":e=pe(re.DayPeriods,ce.Abbreviated,Ye.Format,!0);break;case"BBBB":e=pe(re.DayPeriods,ce.Wide,Ye.Format,!0);break;case"BBBBB":e=pe(re.DayPeriods,ce.Narrow,Ye.Format,!0);break;case"h":e=Me(ie.Hours,1,-12);break;case"hh":e=Me(ie.Hours,2,-12);break;case"H":e=Me(ie.Hours,1);break;case"HH":e=Me(ie.Hours,2);break;case"m":e=Me(ie.Minutes,1);break;case"mm":e=Me(ie.Minutes,2);break;case"s":e=Me(ie.Seconds,1);break;case"ss":e=Me(ie.Seconds,2);break;case"S":e=Me(ie.FractionalSeconds,1);break;case"SS":e=Me(ie.FractionalSeconds,2);break;case"SSS":e=Me(ie.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=wa(yn.Short);break;case"ZZZZZ":e=wa(yn.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=wa(yn.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=wa(yn.Long);break;default:return null}return Bu[t]=e,e}function fg(t,e){t=t.replace(/:/g,"");let r=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(r)?e:r}function Bb(t,e){return t=new Date(t.getTime()),t.setMinutes(t.getMinutes()+e),t}function Hb(t,e,r){let n=r?-1:1,i=t.getTimezoneOffset(),o=fg(e,i);return Bb(t,n*(o-i))}function qb(t){if(tg(t))return t;if(typeof t=="number"&&!isNaN(t))return new Date(t);if(typeof t=="string"){if(t=t.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(t)){let[i,o=1,s=1]=t.split("-").map(a=>+a);return Ea(i,o-1,s)}let r=parseFloat(t);if(!isNaN(t-r))return new Date(r);let n;if(n=t.match(kb))return zb(n)}let e=new Date(t);if(!tg(e))throw new Error(`Unable to convert "${t}" into a date`);return e}function zb(t){let e=new Date(0),r=0,n=0,i=t[8]?e.setUTCFullYear:e.setFullYear,o=t[8]?e.setUTCHours:e.setHours;t[9]&&(r=Number(t[9]+t[10]),n=Number(t[9]+t[11])),i.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));let s=Number(t[4]||0)-r,a=Number(t[5]||0)-n,l=Number(t[6]||0),c=Math.floor(parseFloat("0."+(t[7]||0))*1e3);return o.call(e,s,a,l,c),e}function tg(t){return t instanceof Date&&!isNaN(t.valueOf())}function Ia(t,e){e=encodeURIComponent(e);for(let r of t.split(";")){let n=r.indexOf("="),[i,o]=n==-1?[r,""]:[r.slice(0,n),r.slice(n+1)];if(i.trim()===e)return decodeURIComponent(o)}return null}var Hu=/\s+/,ng=[],pg=(()=>{let e=class e{constructor(n,i){this._ngEl=n,this._renderer=i,this.initialClasses=ng,this.stateMap=new Map}set klass(n){this.initialClasses=n!=null?n.trim().split(Hu):ng}set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(Hu):n}ngDoCheck(){for(let i of this.initialClasses)this._updateState(i,!0);let n=this.rawClass;if(Array.isArray(n)||n instanceof Set)for(let i of n)this._updateState(i,!0);else if(n!=null)for(let i of Object.keys(n))this._updateState(i,!!n[i]);this._applyStateDiff()}_updateState(n,i){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==i&&(o.changed=!0,o.enabled=i),o.touched=!0):this.stateMap.set(n,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(let n of this.stateMap){let i=n[0],o=n[1];o.changed?(this._toggleClass(i,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),o.touched=!1}}_toggleClass(n,i){n=n.trim(),n.length>0&&n.split(Hu).forEach(o=>{i?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}};e.\u0275fac=function(i){return new(i||e)(C(ze),C(jt))},e.\u0275dir=se({type:e,selectors:[["","ngClass",""]],inputs:{klass:[de.None,"class","klass"],ngClass:"ngClass"},standalone:!0});let t=e;return t})();var qu=class{constructor(e,r,n,i){this.$implicit=e,this.ngForOf=r,this.index=n,this.count=i}get first(){return this.index===0}get last(){return this.index===this.count-1}get even(){return this.index%2===0}get odd(){return!this.even}},we=(()=>{let e=class e{set ngForOf(n){this._ngForOf=n,this._ngForOfDirty=!0}set ngForTrackBy(n){this._trackByFn=n}get ngForTrackBy(){return this._trackByFn}constructor(n,i,o){this._viewContainer=n,this._template=i,this._differs=o,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(n){n&&(this._template=n)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;let n=this._ngForOf;if(!this._differ&&n)if(0)try{}catch{}else this._differ=this._differs.find(n).create(this.ngForTrackBy)}if(this._differ){let n=this._differ.diff(this._ngForOf);n&&this._applyChanges(n)}}_applyChanges(n){let i=this._viewContainer;n.forEachOperation((o,s,a)=>{if(o.previousIndex==null)i.createEmbeddedView(this._template,new qu(o.item,this._ngForOf,-1,-1),a===null?void 0:a);else if(a==null)i.remove(s===null?void 0:s);else if(s!==null){let l=i.get(s);i.move(l,a),rg(l,o)}});for(let o=0,s=i.length;o{let s=i.get(o.currentIndex);rg(s,o)})}static ngTemplateContextGuard(n,i){return!0}};e.\u0275fac=function(i){return new(i||e)(C(mn),C(nr),C(ju))},e.\u0275dir=se({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0});let t=e;return t})();function rg(t,e){t.context.$implicit=e.item}var Se=(()=>{let e=class e{constructor(n,i){this._viewContainer=n,this._context=new zu,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(n){this._context.$implicit=this._context.ngIf=n,this._updateView()}set ngIfThen(n){ig("ngIfThen",n),this._thenTemplateRef=n,this._thenViewRef=null,this._updateView()}set ngIfElse(n){ig("ngIfElse",n),this._elseTemplateRef=n,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(n,i){return!0}};e.\u0275fac=function(i){return new(i||e)(C(mn),C(nr))},e.\u0275dir=se({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0});let t=e;return t})(),zu=class{constructor(){this.$implicit=null,this.ngIf=null}};function ig(t,e){if(!!!(!e||e.createEmbeddedView))throw new Error(`${t} must be a TemplateRef, but received '${Ze(e)}'.`)}var hg=(()=>{let e=class e{constructor(n){this._viewContainerRef=n,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(n){if(this._shouldRecreateView(n)){let i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let o=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(n,i,o)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,i,o):!1,get:(n,i,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,o)}})}};e.\u0275fac=function(i){return new(i||e)(C(mn))},e.\u0275dir=se({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[it]});let t=e;return t})();function mg(t,e){return new N(2100,!1)}var ii=(()=>{let e=class e{transform(n){if(n==null)return null;if(typeof n!="string")throw mg(e,n);return n.toUpperCase()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275pipe=ir({name:"uppercase",type:e,pure:!0,standalone:!0});let t=e;return t})(),Gb="mediumDate",Wb=new R(""),Wu=new R(""),Rn=(()=>{let e=class e{constructor(n,i,o){this.locale=n,this.defaultTimezone=i,this.defaultOptions=o}transform(n,i,o,s){if(n==null||n===""||n!==n)return null;try{let a=i??this.defaultOptions?.dateFormat??Gb,l=o??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Rb(n,a,s||this.locale,l)}catch(a){throw mg(e,a.message)}}};e.\u0275fac=function(i){return new(i||e)(C(ha,16),C(Wb,24),C(Wu,24))},e.\u0275pipe=ir({name:"date",type:e,pure:!0,standalone:!0});let t=e;return t})();var gg="browser",Zb="server";function Ma(t){return t===Zb}var ni=class{};var to=class{},Ta=class{},mr=class t{constructor(e){this.normalizedNames=new Map,this.lazyUpdate=null,e?typeof e=="string"?this.lazyInit=()=>{this.headers=new Map,e.split(` -`).forEach(r=>{let n=r.indexOf(":");if(n>0){let i=r.slice(0,n),o=i.toLowerCase(),s=r.slice(n+1).trim();this.maybeSetNormalizedName(i,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((r,n)=>{this.setHeaderEntries(n,r)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([r,n])=>{this.setHeaderEntries(r,n)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();let r=this.headers.get(e.toLowerCase());return r&&r.length>0?r[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,r){return this.clone({name:e,value:r,op:"a"})}set(e,r){return this.clone({name:e,value:r,op:"s"})}delete(e,r){return this.clone({name:e,value:r,op:"d"})}maybeSetNormalizedName(e,r){this.normalizedNames.has(r)||this.normalizedNames.set(r,e)}init(){this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(e=>this.applyUpdate(e)),this.lazyUpdate=null))}copyFrom(e){e.init(),Array.from(e.headers.keys()).forEach(r=>{this.headers.set(r,e.headers.get(r)),this.normalizedNames.set(r,e.normalizedNames.get(r))})}clone(e){let r=new t;return r.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,r.lazyUpdate=(this.lazyUpdate||[]).concat([e]),r}applyUpdate(e){let r=e.name.toLowerCase();switch(e.op){case"a":case"s":let n=e.value;if(typeof n=="string"&&(n=[n]),n.length===0)return;this.maybeSetNormalizedName(e.name,r);let i=(e.op==="a"?this.headers.get(r):void 0)||[];i.push(...n),this.headers.set(r,i);break;case"d":let o=e.value;if(!o)this.headers.delete(r),this.normalizedNames.delete(r);else{let s=this.headers.get(r);if(!s)return;s=s.filter(a=>o.indexOf(a)===-1),s.length===0?(this.headers.delete(r),this.normalizedNames.delete(r)):this.headers.set(r,s)}break}}setHeaderEntries(e,r){let n=(Array.isArray(r)?r:[r]).map(o=>o.toString()),i=e.toLowerCase();this.headers.set(i,n),this.maybeSetNormalizedName(e,i)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(r=>e(this.normalizedNames.get(r),this.headers.get(r)))}};var Qu=class{encodeKey(e){return vg(e)}encodeValue(e){return vg(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}};function Kb(t,e){let r=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(i=>{let o=i.indexOf("="),[s,a]=o==-1?[e.decodeKey(i),""]:[e.decodeKey(i.slice(0,o)),e.decodeValue(i.slice(o+1))],l=r.get(s)||[];l.push(a),r.set(s,l)}),r}var Jb=/%(\d[a-f0-9])/gi,Xb={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function vg(t){return encodeURIComponent(t).replace(Jb,(e,r)=>Xb[r]??e)}function Sa(t){return`${t}`}var Fn=class t{constructor(e={}){if(this.updates=null,this.cloneFrom=null,this.encoder=e.encoder||new Qu,e.fromString){if(e.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=Kb(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(r=>{let n=e.fromObject[r],i=Array.isArray(n)?n.map(Sa):[Sa(n)];this.map.set(r,i)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();let r=this.map.get(e);return r?r[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,r){return this.clone({param:e,value:r,op:"a"})}appendAll(e){let r=[];return Object.keys(e).forEach(n=>{let i=e[n];Array.isArray(i)?i.forEach(o=>{r.push({param:n,value:o,op:"a"})}):r.push({param:n,value:i,op:"a"})}),this.clone(r)}set(e,r){return this.clone({param:e,value:r,op:"s"})}delete(e,r){return this.clone({param:e,value:r,op:"d"})}toString(){return this.init(),this.keys().map(e=>{let r=this.encoder.encodeKey(e);return this.map.get(e).map(n=>r+"="+this.encoder.encodeValue(n)).join("&")}).filter(e=>e!=="").join("&")}clone(e){let r=new t({encoder:this.encoder});return r.cloneFrom=this.cloneFrom||this,r.updates=(this.updates||[]).concat(e),r}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(e=>this.map.set(e,this.cloneFrom.map.get(e))),this.updates.forEach(e=>{switch(e.op){case"a":case"s":let r=(e.op==="a"?this.map.get(e.param):void 0)||[];r.push(Sa(e.value)),this.map.set(e.param,r);break;case"d":if(e.value!==void 0){let n=this.map.get(e.param)||[],i=n.indexOf(Sa(e.value));i!==-1&&n.splice(i,1),n.length>0?this.map.set(e.param,n):this.map.delete(e.param)}else{this.map.delete(e.param);break}}}),this.cloneFrom=this.updates=null)}};var Yu=class{constructor(){this.map=new Map}set(e,r){return this.map.set(e,r),this}get(e){return this.map.has(e)||this.map.set(e,e.defaultValue()),this.map.get(e)}delete(e){return this.map.delete(e),this}has(e){return this.map.has(e)}keys(){return this.map.keys()}};function eE(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function yg(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function _g(t){return typeof Blob<"u"&&t instanceof Blob}function wg(t){return typeof FormData<"u"&&t instanceof FormData}function tE(t){return typeof URLSearchParams<"u"&&t instanceof URLSearchParams}var eo=class t{constructor(e,r,n,i){this.url=r,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase();let o;if(eE(this.method)||i?(this.body=n!==void 0?n:null,o=i):o=n,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),this.transferCache=o.transferCache),this.headers??=new mr,this.context??=new Yu,!this.params)this.params=new Fn,this.urlWithParams=r;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=r;else{let a=r.indexOf("?"),l=a===-1?"?":ag.set(y,e.setHeaders[y]),c)),e.setParams&&(f=Object.keys(e.setParams).reduce((g,y)=>g.set(y,e.setParams[y]),f)),new t(r,n,s,{params:f,headers:c,context:h,reportProgress:l,responseType:i,withCredentials:a,transferCache:o})}},oi=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(oi||{}),no=class{constructor(e,r=Na.Ok,n="OK"){this.headers=e.headers||new mr,this.status=e.status!==void 0?e.status:r,this.statusText=e.statusText||n,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}},Ku=class t extends no{constructor(e={}){super(e),this.type=oi.ResponseHeader}clone(e={}){return new t({headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},Aa=class t extends no{constructor(e={}){super(e),this.type=oi.Response,this.body=e.body!==void 0?e.body:null}clone(e={}){return new t({body:e.body!==void 0?e.body:this.body,headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},Oa=class extends no{constructor(e){super(e,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${e.url||"(unknown url)"}`:this.message=`Http failure response for ${e.url||"(unknown url)"}: ${e.status} ${e.statusText}`,this.error=e.error||null}},Na=function(t){return t[t.Continue=100]="Continue",t[t.SwitchingProtocols=101]="SwitchingProtocols",t[t.Processing=102]="Processing",t[t.EarlyHints=103]="EarlyHints",t[t.Ok=200]="Ok",t[t.Created=201]="Created",t[t.Accepted=202]="Accepted",t[t.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",t[t.NoContent=204]="NoContent",t[t.ResetContent=205]="ResetContent",t[t.PartialContent=206]="PartialContent",t[t.MultiStatus=207]="MultiStatus",t[t.AlreadyReported=208]="AlreadyReported",t[t.ImUsed=226]="ImUsed",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.Found=302]="Found",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.Unused=306]="Unused",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.LengthRequired=411]="LengthRequired",t[t.PreconditionFailed=412]="PreconditionFailed",t[t.PayloadTooLarge=413]="PayloadTooLarge",t[t.UriTooLong=414]="UriTooLong",t[t.UnsupportedMediaType=415]="UnsupportedMediaType",t[t.RangeNotSatisfiable=416]="RangeNotSatisfiable",t[t.ExpectationFailed=417]="ExpectationFailed",t[t.ImATeapot=418]="ImATeapot",t[t.MisdirectedRequest=421]="MisdirectedRequest",t[t.UnprocessableEntity=422]="UnprocessableEntity",t[t.Locked=423]="Locked",t[t.FailedDependency=424]="FailedDependency",t[t.TooEarly=425]="TooEarly",t[t.UpgradeRequired=426]="UpgradeRequired",t[t.PreconditionRequired=428]="PreconditionRequired",t[t.TooManyRequests=429]="TooManyRequests",t[t.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",t[t.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t[t.HttpVersionNotSupported=505]="HttpVersionNotSupported",t[t.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",t[t.InsufficientStorage=507]="InsufficientStorage",t[t.LoopDetected=508]="LoopDetected",t[t.NotExtended=510]="NotExtended",t[t.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",t}(Na||{});function Zu(t,e){return{body:e,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}var mt=(()=>{let e=class e{constructor(n){this.handler=n}request(n,i,o={}){let s;if(n instanceof eo)s=n;else{let c;o.headers instanceof mr?c=o.headers:c=new mr(o.headers);let f;o.params&&(o.params instanceof Fn?f=o.params:f=new Fn({fromObject:o.params})),s=new eo(n,i,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:f,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache})}let a=O(s).pipe(En(c=>this.handler.handle(c)));if(n instanceof eo||o.observe==="events")return a;let l=a.pipe(Ve(c=>c instanceof Aa));switch(o.observe||"body"){case"body":switch(s.responseType){case"arraybuffer":return l.pipe(A(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return c.body}));case"blob":return l.pipe(A(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new Error("Response is not a Blob.");return c.body}));case"text":return l.pipe(A(c=>{if(c.body!==null&&typeof c.body!="string")throw new Error("Response is not a string.");return c.body}));case"json":default:return l.pipe(A(c=>c.body))}case"response":return l;default:throw new Error(`Unreachable: unhandled observe type ${o.observe}}`)}}delete(n,i={}){return this.request("DELETE",n,i)}get(n,i={}){return this.request("GET",n,i)}head(n,i={}){return this.request("HEAD",n,i)}jsonp(n,i){return this.request("JSONP",n,{params:new Fn().append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(n,i={}){return this.request("OPTIONS",n,i)}patch(n,i,o={}){return this.request("PATCH",n,Zu(o,i))}post(n,i,o={}){return this.request("POST",n,Zu(o,i))}put(n,i,o={}){return this.request("PUT",n,Zu(o,i))}};e.\u0275fac=function(i){return new(i||e)(k(to))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();function Eg(t,e){return e(t)}function nE(t,e){return(r,n)=>e.intercept(r,{handle:i=>t(i,n)})}function rE(t,e,r){return(n,i)=>fn(r,()=>e(n,o=>t(o,i)))}var iE=new R(""),Ju=new R(""),oE=new R(""),sE=new R("");function aE(){let t=null;return(e,r)=>{t===null&&(t=(S(iE,{optional:!0})??[]).reduceRight(nE,Eg));let n=S(cr),i=n.add();return t(e,r).pipe(In(()=>n.remove(i)))}}var Cg=(()=>{let e=class e extends to{constructor(n,i){super(),this.backend=n,this.injector=i,this.chain=null,this.pendingTasks=S(cr);let o=S(sE,{optional:!0});this.backend=o??n}handle(n){if(this.chain===null){let o=Array.from(new Set([...this.injector.get(Ju),...this.injector.get(oE,[])]));this.chain=o.reduceRight((s,a)=>rE(s,a,this.injector),Eg)}let i=this.pendingTasks.add();return this.chain(n,o=>this.backend.handle(o)).pipe(In(()=>this.pendingTasks.remove(i)))}};e.\u0275fac=function(i){return new(i||e)(k(Ta),k(nt))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();var lE=/^\)\]\}',?\n/;function cE(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}var Dg=(()=>{let e=class e{constructor(n){this.xhrFactory=n}handle(n){if(n.method==="JSONP")throw new N(-2800,!1);let i=this.xhrFactory;return(i.\u0275loadImpl?ge(i.\u0275loadImpl()):O(null)).pipe(ut(()=>new Z(s=>{let a=i.build();if(a.open(n.method,n.urlWithParams),n.withCredentials&&(a.withCredentials=!0),n.headers.forEach((L,P)=>a.setRequestHeader(L,P.join(","))),n.headers.has("Accept")||a.setRequestHeader("Accept","application/json, text/plain, */*"),!n.headers.has("Content-Type")){let L=n.detectContentTypeHeader();L!==null&&a.setRequestHeader("Content-Type",L)}if(n.responseType){let L=n.responseType.toLowerCase();a.responseType=L!=="json"?L:"text"}let l=n.serializeBody(),c=null,f=()=>{if(c!==null)return c;let L=a.statusText||"OK",P=new mr(a.getAllResponseHeaders()),Be=cE(a)||n.url;return c=new Ku({headers:P,status:a.status,statusText:L,url:Be}),c},h=()=>{let{headers:L,status:P,statusText:Be,url:Fe}=f(),me=null;P!==Na.NoContent&&(me=typeof a.response>"u"?a.responseText:a.response),P===0&&(P=me?Na.Ok:0);let Bt=P>=200&&P<300;if(n.responseType==="json"&&typeof me=="string"){let ct=me;me=me.replace(lE,"");try{me=me!==""?JSON.parse(me):null}catch(Dn){me=ct,Bt&&(Bt=!1,me={error:Dn,text:me})}}Bt?(s.next(new Aa({body:me,headers:L,status:P,statusText:Be,url:Fe||void 0})),s.complete()):s.error(new Oa({error:me,headers:L,status:P,statusText:Be,url:Fe||void 0}))},g=L=>{let{url:P}=f(),Be=new Oa({error:L,status:a.status||0,statusText:a.statusText||"Unknown Error",url:P||void 0});s.error(Be)},y=!1,I=L=>{y||(s.next(f()),y=!0);let P={type:oi.DownloadProgress,loaded:L.loaded};L.lengthComputable&&(P.total=L.total),n.responseType==="text"&&a.responseText&&(P.partialText=a.responseText),s.next(P)},F=L=>{let P={type:oi.UploadProgress,loaded:L.loaded};L.lengthComputable&&(P.total=L.total),s.next(P)};return a.addEventListener("load",h),a.addEventListener("error",g),a.addEventListener("timeout",g),a.addEventListener("abort",g),n.reportProgress&&(a.addEventListener("progress",I),l!==null&&a.upload&&a.upload.addEventListener("progress",F)),a.send(l),s.next({type:oi.Sent}),()=>{a.removeEventListener("error",g),a.removeEventListener("abort",g),a.removeEventListener("load",h),a.removeEventListener("timeout",g),n.reportProgress&&(a.removeEventListener("progress",I),l!==null&&a.upload&&a.upload.removeEventListener("progress",F)),a.readyState!==a.DONE&&a.abort()}})))}};e.\u0275fac=function(i){return new(i||e)(k(ni))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),xg=new R(""),uE="XSRF-TOKEN",dE=new R("",{providedIn:"root",factory:()=>uE}),fE="X-XSRF-TOKEN",pE=new R("",{providedIn:"root",factory:()=>fE}),ka=class{},hE=(()=>{let e=class e{constructor(n,i,o){this.doc=n,this.platform=i,this.cookieName=o,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let n=this.doc.cookie||"";return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=Ia(n,this.cookieName),this.lastCookieString=n),this.lastToken}};e.\u0275fac=function(i){return new(i||e)(k(at),k(kn),k(dE))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();function mE(t,e){let r=t.url.toLowerCase();if(!S(xg)||t.method==="GET"||t.method==="HEAD"||r.startsWith("http://")||r.startsWith("https://"))return e(t);let n=S(ka).getToken(),i=S(pE);return n!=null&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,n)})),e(t)}var Ig=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(Ig||{});function gE(t,e){return{\u0275kind:t,\u0275providers:e}}function Xu(...t){let e=[mt,Dg,Cg,{provide:to,useExisting:Cg},{provide:Ta,useExisting:Dg},{provide:Ju,useValue:mE,multi:!0},{provide:xg,useValue:!0},{provide:ka,useClass:hE}];for(let r of t)e.push(...r.\u0275providers);return Yr(e)}var bg=new R("");function vE(){return gE(Ig.LegacyInterceptors,[{provide:bg,useFactory:aE},{provide:Ju,useExisting:bg,multi:!0}])}var Mg=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({providers:[Xu(vE())]});let t=e;return t})();var nd=class extends ba{constructor(){super(...arguments),this.supportsDOMEvents=!0}},rd=class t extends nd{static makeCurrent(){sg(new t)}onAndCancel(e,r,n){return e.addEventListener(r,n),()=>{e.removeEventListener(r,n)}}dispatchEvent(e,r){e.dispatchEvent(r)}remove(e){e.parentNode&&e.parentNode.removeChild(e)}createElement(e,r){return r=r||this.getDefaultDocument(),r.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,r){return r==="window"?window:r==="document"?e:r==="body"?e.body:null}getBaseHref(e){let r=yE();return r==null?null:_E(r)}resetBaseElement(){ro=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return Ia(document.cookie,e)}},ro=null;function yE(){return ro=ro||document.querySelector("base"),ro?ro.getAttribute("href"):null}function _E(t){return new URL(t,document.baseURI).pathname}var wE=(()=>{let e=class e{build(){return new XMLHttpRequest}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),id=new R(""),Og=(()=>{let e=class e{constructor(n,i){this._zone=i,this._eventNameToPlugin=new Map,n.forEach(o=>{o.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,i,o){return this._findPluginFor(i).addEventListener(n,i,o)}getZone(){return this._zone}_findPluginFor(n){let i=this._eventNameToPlugin.get(n);if(i)return i;if(i=this._plugins.find(s=>s.supports(n)),!i)throw new N(5101,!1);return this._eventNameToPlugin.set(n,i),i}};e.\u0275fac=function(i){return new(i||e)(k(id),k(be))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),Pa=class{constructor(e){this._doc=e}},ed="ng-app-id",Ng=(()=>{let e=class e{constructor(n,i,o,s={}){this.doc=n,this.appId=i,this.nonce=o,this.platformId=s,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=Ma(s),this.resetHostNodes()}addStyles(n){for(let i of n)this.changeUsageCount(i,1)===1&&this.onStyleAdded(i)}removeStyles(n){for(let i of n)this.changeUsageCount(i,-1)<=0&&this.onStyleRemoved(i)}ngOnDestroy(){let n=this.styleNodesInDOM;n&&(n.forEach(i=>i.remove()),n.clear());for(let i of this.getAllStyles())this.onStyleRemoved(i);this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(let i of this.getAllStyles())this.addStyleToHost(n,i)}removeHost(n){this.hostNodes.delete(n)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(n){for(let i of this.hostNodes)this.addStyleToHost(i,n)}onStyleRemoved(n){let i=this.styleRef;i.get(n)?.elements?.forEach(o=>o.remove()),i.delete(n)}collectServerRenderedStyles(){let n=this.doc.head?.querySelectorAll(`style[${ed}="${this.appId}"]`);if(n?.length){let i=new Map;return n.forEach(o=>{o.textContent!=null&&i.set(o.textContent,o)}),i}return null}changeUsageCount(n,i){let o=this.styleRef;if(o.has(n)){let s=o.get(n);return s.usage+=i,s.usage}return o.set(n,{usage:i,elements:[]}),i}getStyleElement(n,i){let o=this.styleNodesInDOM,s=o?.get(i);if(s?.parentNode===n)return o.delete(i),s.removeAttribute(ed),s;{let a=this.doc.createElement("style");return this.nonce&&a.setAttribute("nonce",this.nonce),a.textContent=i,this.platformIsServer&&a.setAttribute(ed,this.appId),n.appendChild(a),a}}addStyleToHost(n,i){let o=this.getStyleElement(n,i),s=this.styleRef,a=s.get(i)?.elements;a?a.push(o):s.set(i,{elements:[o],usage:1})}resetHostNodes(){let n=this.hostNodes;n.clear(),n.add(this.doc.head)}};e.\u0275fac=function(i){return new(i||e)(k(at),k(mu),k(vu,8),k(kn))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),td={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},sd=/%COMP%/g,kg="%COMP%",CE=`_nghost-${kg}`,DE=`_ngcontent-${kg}`,bE=!0,EE=new R("",{providedIn:"root",factory:()=>bE});function xE(t){return DE.replace(sd,t)}function IE(t){return CE.replace(sd,t)}function Pg(t,e){return e.map(r=>r.replace(sd,t))}var Sg=(()=>{let e=class e{constructor(n,i,o,s,a,l,c,f=null){this.eventManager=n,this.sharedStylesHost=i,this.appId=o,this.removeStylesOnCompDestroy=s,this.doc=a,this.platformId=l,this.ngZone=c,this.nonce=f,this.rendererByCompId=new Map,this.platformIsServer=Ma(l),this.defaultRenderer=new io(n,a,c,this.platformIsServer)}createRenderer(n,i){if(!n||!i)return this.defaultRenderer;this.platformIsServer&&i.encapsulation===Gt.ShadowDom&&(i=K(M({},i),{encapsulation:Gt.Emulated}));let o=this.getOrCreateRenderer(n,i);return o instanceof Ra?o.applyToHost(n):o instanceof oo&&o.applyStyles(),o}getOrCreateRenderer(n,i){let o=this.rendererByCompId,s=o.get(i.id);if(!s){let a=this.doc,l=this.ngZone,c=this.eventManager,f=this.sharedStylesHost,h=this.removeStylesOnCompDestroy,g=this.platformIsServer;switch(i.encapsulation){case Gt.Emulated:s=new Ra(c,f,i,this.appId,h,a,l,g);break;case Gt.ShadowDom:return new od(c,f,n,i,a,l,this.nonce,g);default:s=new oo(c,f,i,h,a,l,g);break}o.set(i.id,s)}return s}ngOnDestroy(){this.rendererByCompId.clear()}};e.\u0275fac=function(i){return new(i||e)(k(Og),k(Ng),k(mu),k(EE),k(at),k(kn),k(be),k(vu))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),io=class{constructor(e,r,n,i){this.eventManager=e,this.doc=r,this.ngZone=n,this.platformIsServer=i,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(e,r){return r?this.doc.createElementNS(td[r]||r,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,r){(Tg(e)?e.content:e).appendChild(r)}insertBefore(e,r,n){e&&(Tg(e)?e.content:e).insertBefore(r,n)}removeChild(e,r){e&&e.removeChild(r)}selectRootElement(e,r){let n=typeof e=="string"?this.doc.querySelector(e):e;if(!n)throw new N(-5104,!1);return r||(n.textContent=""),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,r,n,i){if(i){r=i+":"+r;let o=td[i];o?e.setAttributeNS(o,r,n):e.setAttribute(r,n)}else e.setAttribute(r,n)}removeAttribute(e,r,n){if(n){let i=td[n];i?e.removeAttributeNS(i,r):e.removeAttribute(`${n}:${r}`)}else e.removeAttribute(r)}addClass(e,r){e.classList.add(r)}removeClass(e,r){e.classList.remove(r)}setStyle(e,r,n,i){i&(un.DashCase|un.Important)?e.style.setProperty(r,n,i&un.Important?"important":""):e.style[r]=n}removeStyle(e,r,n){n&un.DashCase?e.style.removeProperty(r):e.style[r]=""}setProperty(e,r,n){e!=null&&(e[r]=n)}setValue(e,r){e.nodeValue=r}listen(e,r,n){if(typeof e=="string"&&(e=_n().getGlobalEventTarget(this.doc,e),!e))throw new Error(`Unsupported event target ${e} for event ${r}`);return this.eventManager.addEventListener(e,r,this.decoratePreventDefault(n))}decoratePreventDefault(e){return r=>{if(r==="__ngUnwrap__")return e;(this.platformIsServer?this.ngZone.runGuarded(()=>e(r)):e(r))===!1&&r.preventDefault()}}};function Tg(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var od=class extends io{constructor(e,r,n,i,o,s,a,l){super(e,o,s,l),this.sharedStylesHost=r,this.hostEl=n,this.shadowRoot=n.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let c=Pg(i.id,i.styles);for(let f of c){let h=document.createElement("style");a&&h.setAttribute("nonce",a),h.textContent=f,this.shadowRoot.appendChild(h)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,r){return super.appendChild(this.nodeOrShadowRoot(e),r)}insertBefore(e,r,n){return super.insertBefore(this.nodeOrShadowRoot(e),r,n)}removeChild(e,r){return super.removeChild(this.nodeOrShadowRoot(e),r)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},oo=class extends io{constructor(e,r,n,i,o,s,a,l){super(e,o,s,a),this.sharedStylesHost=r,this.removeStylesOnCompDestroy=i,this.styles=l?Pg(l,n.styles):n.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},Ra=class extends oo{constructor(e,r,n,i,o,s,a,l){let c=i+"-"+n.id;super(e,r,n,o,s,a,l,c),this.contentAttr=xE(c),this.hostAttr=IE(c)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,r){let n=super.createElement(e,r);return super.setAttribute(n,this.contentAttr,""),n}},ME=(()=>{let e=class e extends Pa{constructor(n){super(n)}supports(n){return!0}addEventListener(n,i,o){return n.addEventListener(i,o,!1),()=>this.removeEventListener(n,i,o)}removeEventListener(n,i,o){return n.removeEventListener(i,o)}};e.\u0275fac=function(i){return new(i||e)(k(at))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),Ag=["alt","control","meta","shift"],SE={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},TE={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},AE=(()=>{let e=class e extends Pa{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,i,o){let s=e.parseEventName(i),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>_n().onAndCancel(n,s.domEventName,a))}static parseEventName(n){let i=n.toLowerCase().split("."),o=i.shift();if(i.length===0||!(o==="keydown"||o==="keyup"))return null;let s=e._normalizeKey(i.pop()),a="",l=i.indexOf("code");if(l>-1&&(i.splice(l,1),a="code."),Ag.forEach(f=>{let h=i.indexOf(f);h>-1&&(i.splice(h,1),a+=f+".")}),a+=s,i.length!=0||s.length===0)return null;let c={};return c.domEventName=o,c.fullKey=a,c}static matchEventFullKeyCode(n,i){let o=SE[n.key]||n.key,s="";return i.indexOf("code.")>-1&&(o=n.code,s="code."),o==null||!o?!1:(o=o.toLowerCase(),o===" "?o="space":o==="."&&(o="dot"),Ag.forEach(a=>{if(a!==o){let l=TE[a];l(n)&&(s+=a+".")}}),s+=o,s===i)}static eventCallback(n,i,o){return s=>{e.matchEventFullKeyCode(s,n)&&o.runGuarded(()=>i(s))}}static _normalizeKey(n){return n==="esc"?"escape":n}};e.\u0275fac=function(i){return new(i||e)(k(at))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();function Rg(t,e){return Jm(M({rootComponent:t},OE(e)))}function OE(t){return{appProviders:[...FE,...t?.providers??[]],platformProviders:RE}}function NE(){rd.makeCurrent()}function kE(){return new cn}function PE(){return qh(document),document}var RE=[{provide:kn,useValue:gg},{provide:gu,useValue:NE,multi:!0},{provide:at,useFactory:PE,deps:[]}];var FE=[{provide:Gs,useValue:"root"},{provide:cn,useFactory:kE,deps:[]},{provide:id,useClass:ME,multi:!0,deps:[at,be,kn]},{provide:id,useClass:AE,multi:!0,deps:[at]},Sg,Ng,Og,{provide:qi,useExisting:Sg},{provide:ni,useClass:wE,deps:[]},[]];var Fg=(()=>{let e=class e{constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||""}};e.\u0275fac=function(i){return new(i||e)(k(at))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var q="primary",Co=Symbol("RouteTitle"),dd=class{constructor(e){this.params=e||{}}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}get(e){if(this.has(e)){let r=this.params[e];return Array.isArray(r)?r[0]:r}return null}getAll(e){if(this.has(e)){let r=this.params[e];return Array.isArray(r)?r:[r]}return[]}get keys(){return Object.keys(this.params)}};function di(t){return new dd(t)}function VE(t,e,r){let n=r.path.split("/");if(n.length>t.length||r.pathMatch==="full"&&(e.hasChildren()||n.lengthn[o]===i)}else return t===e}function Hg(t){return t.length>0?t[t.length-1]:null}function jn(t){return Ol(t)?t:fr(t)?ge(Promise.resolve(t)):O(t)}var $E={exact:zg,subset:Gg},qg={exact:UE,subset:BE,ignored:()=>!0};function Lg(t,e,r){return $E[r.paths](t.root,e.root,r.matrixParams)&&qg[r.queryParams](t.queryParams,e.queryParams)&&!(r.fragment==="exact"&&t.fragment!==e.fragment)}function UE(t,e){return Xt(t,e)}function zg(t,e,r){if(!vr(t.segments,e.segments)||!Va(t.segments,e.segments,r)||t.numberOfChildren!==e.numberOfChildren)return!1;for(let n in e.children)if(!t.children[n]||!zg(t.children[n],e.children[n],r))return!1;return!0}function BE(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(r=>Bg(t[r],e[r]))}function Gg(t,e,r){return Wg(t,e,e.segments,r)}function Wg(t,e,r,n){if(t.segments.length>r.length){let i=t.segments.slice(0,r.length);return!(!vr(i,r)||e.hasChildren()||!Va(i,r,n))}else if(t.segments.length===r.length){if(!vr(t.segments,r)||!Va(t.segments,r,n))return!1;for(let i in e.children)if(!t.children[i]||!Gg(t.children[i],e.children[i],n))return!1;return!0}else{let i=r.slice(0,t.segments.length),o=r.slice(t.segments.length);return!vr(t.segments,i)||!Va(t.segments,i,n)||!t.children[q]?!1:Wg(t.children[q],e,o,n)}}function Va(t,e,r){return e.every((n,i)=>qg[r](t[i].parameters,n.parameters))}var Ln=class{constructor(e=new oe([],{}),r={},n=null){this.root=e,this.queryParams=r,this.fragment=n}get queryParamMap(){return this._queryParamMap??=di(this.queryParams),this._queryParamMap}toString(){return zE.serialize(this)}},oe=class{constructor(e,r){this.segments=e,this.children=r,this.parent=null,Object.values(r).forEach(n=>n.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return ja(this)}},gr=class{constructor(e,r){this.path=e,this.parameters=r}get parameterMap(){return this._parameterMap??=di(this.parameters),this._parameterMap}toString(){return Qg(this)}};function HE(t,e){return vr(t,e)&&t.every((r,n)=>Xt(r.parameters,e[n].parameters))}function vr(t,e){return t.length!==e.length?!1:t.every((r,n)=>r.path===e[n].path)}function qE(t,e){let r=[];return Object.entries(t.children).forEach(([n,i])=>{n===q&&(r=r.concat(e(i,n)))}),Object.entries(t.children).forEach(([n,i])=>{n!==q&&(r=r.concat(e(i,n)))}),r}var Vd=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>new Ua,providedIn:"root"});let t=e;return t})(),Ua=class{parse(e){let r=new hd(e);return new Ln(r.parseRootSegment(),r.parseQueryParams(),r.parseFragment())}serialize(e){let r=`/${so(e.root,!0)}`,n=ZE(e.queryParams),i=typeof e.fragment=="string"?`#${GE(e.fragment)}`:"";return`${r}${n}${i}`}},zE=new Ua;function ja(t){return t.segments.map(e=>Qg(e)).join("/")}function so(t,e){if(!t.hasChildren())return ja(t);if(e){let r=t.children[q]?so(t.children[q],!1):"",n=[];return Object.entries(t.children).forEach(([i,o])=>{i!==q&&n.push(`${i}:${so(o,!1)}`)}),n.length>0?`${r}(${n.join("//")})`:r}else{let r=qE(t,(n,i)=>i===q?[so(t.children[q],!1)]:[`${i}:${so(n,!1)}`]);return Object.keys(t.children).length===1&&t.children[q]!=null?`${ja(t)}/${r[0]}`:`${ja(t)}/(${r.join("//")})`}}function Zg(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Fa(t){return Zg(t).replace(/%3B/gi,";")}function GE(t){return encodeURI(t)}function pd(t){return Zg(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function $a(t){return decodeURIComponent(t)}function Vg(t){return $a(t.replace(/\+/g,"%20"))}function Qg(t){return`${pd(t.path)}${WE(t.parameters)}`}function WE(t){return Object.entries(t).map(([e,r])=>`;${pd(e)}=${pd(r)}`).join("")}function ZE(t){let e=Object.entries(t).map(([r,n])=>Array.isArray(n)?n.map(i=>`${Fa(r)}=${Fa(i)}`).join("&"):`${Fa(r)}=${Fa(n)}`).filter(r=>r);return e.length?`?${e.join("&")}`:""}var QE=/^[^\/()?;#]+/;function ad(t){let e=t.match(QE);return e?e[0]:""}var YE=/^[^\/()?;=#]+/;function KE(t){let e=t.match(YE);return e?e[0]:""}var JE=/^[^=?&#]+/;function XE(t){let e=t.match(JE);return e?e[0]:""}var ex=/^[^&#]+/;function tx(t){let e=t.match(ex);return e?e[0]:""}var hd=class{constructor(e){this.url=e,this.remaining=e}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new oe([],{}):new oe([],this.parseChildren())}parseQueryParams(){let e={};if(this.consumeOptional("?"))do this.parseQueryParam(e);while(this.consumeOptional("&"));return e}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let r={};this.peekStartsWith("/(")&&(this.capture("/"),r=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(e.length>0||Object.keys(r).length>0)&&(n[q]=new oe(e,r)),n}parseSegment(){let e=ad(this.remaining);if(e===""&&this.peekStartsWith(";"))throw new N(4009,!1);return this.capture(e),new gr($a(e),this.parseMatrixParams())}parseMatrixParams(){let e={};for(;this.consumeOptional(";");)this.parseParam(e);return e}parseParam(e){let r=KE(this.remaining);if(!r)return;this.capture(r);let n="";if(this.consumeOptional("=")){let i=ad(this.remaining);i&&(n=i,this.capture(n))}e[$a(r)]=$a(n)}parseQueryParam(e){let r=XE(this.remaining);if(!r)return;this.capture(r);let n="";if(this.consumeOptional("=")){let s=tx(this.remaining);s&&(n=s,this.capture(n))}let i=Vg(r),o=Vg(n);if(e.hasOwnProperty(i)){let s=e[i];Array.isArray(s)||(s=[s],e[i]=s),s.push(o)}else e[i]=o}parseParens(e){let r={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let n=ad(this.remaining),i=this.remaining[n.length];if(i!=="/"&&i!==")"&&i!==";")throw new N(4010,!1);let o;n.indexOf(":")>-1?(o=n.slice(0,n.indexOf(":")),this.capture(o),this.capture(":")):e&&(o=q);let s=this.parseChildren();r[o]=Object.keys(s).length===1?s[q]:new oe([],s),this.consumeOptional("//")}return r}peekStartsWith(e){return this.remaining.startsWith(e)}consumeOptional(e){return this.peekStartsWith(e)?(this.remaining=this.remaining.substring(e.length),!0):!1}capture(e){if(!this.consumeOptional(e))throw new N(4011,!1)}};function Yg(t){return t.segments.length>0?new oe([],{[q]:t}):t}function Kg(t){let e={};for(let[n,i]of Object.entries(t.children)){let o=Kg(i);if(n===q&&o.segments.length===0&&o.hasChildren())for(let[s,a]of Object.entries(o.children))e[s]=a;else(o.segments.length>0||o.hasChildren())&&(e[n]=o)}let r=new oe(t.segments,e);return nx(r)}function nx(t){if(t.numberOfChildren===1&&t.children[q]){let e=t.children[q];return new oe(t.segments.concat(e.segments),e.children)}return t}function fi(t){return t instanceof Ln}function rx(t,e,r=null,n=null){let i=Jg(t);return Xg(i,e,r,n)}function Jg(t){let e;function r(o){let s={};for(let l of o.children){let c=r(l);s[l.outlet]=c}let a=new oe(o.url,s);return o===t&&(e=a),a}let n=r(t.root),i=Yg(n);return e??i}function Xg(t,e,r,n){let i=t;for(;i.parent;)i=i.parent;if(e.length===0)return ld(i,i,i,r,n);let o=ix(e);if(o.toRoot())return ld(i,i,new oe([],{}),r,n);let s=ox(o,i,t),a=s.processChildren?co(s.segmentGroup,s.index,o.commands):t0(s.segmentGroup,s.index,o.commands);return ld(i,s.segmentGroup,a,r,n)}function Ba(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function po(t){return typeof t=="object"&&t!=null&&t.outlets}function ld(t,e,r,n,i){let o={};n&&Object.entries(n).forEach(([l,c])=>{o[l]=Array.isArray(c)?c.map(f=>`${f}`):`${c}`});let s;t===e?s=r:s=e0(t,e,r);let a=Yg(Kg(s));return new Ln(a,o,i)}function e0(t,e,r){let n={};return Object.entries(t.children).forEach(([i,o])=>{o===e?n[i]=r:n[i]=e0(o,e,r)}),new oe(t.segments,n)}var Ha=class{constructor(e,r,n){if(this.isAbsolute=e,this.numberOfDoubleDots=r,this.commands=n,e&&n.length>0&&Ba(n[0]))throw new N(4003,!1);let i=n.find(po);if(i&&i!==Hg(n))throw new N(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function ix(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new Ha(!0,0,t);let e=0,r=!1,n=t.reduce((i,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let a={};return Object.entries(o.outlets).forEach(([l,c])=>{a[l]=typeof c=="string"?c.split("/"):c}),[...i,{outlets:a}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!="string"?[...i,o]:s===0?(o.split("/").forEach((a,l)=>{l==0&&a==="."||(l==0&&a===""?r=!0:a===".."?e++:a!=""&&i.push(a))}),i):[...i,o]},[]);return new Ha(r,e,n)}var ci=class{constructor(e,r,n){this.segmentGroup=e,this.processChildren=r,this.index=n}};function ox(t,e,r){if(t.isAbsolute)return new ci(e,!0,0);if(!r)return new ci(e,!1,NaN);if(r.parent===null)return new ci(r,!0,0);let n=Ba(t.commands[0])?0:1,i=r.segments.length-1+n;return sx(r,i,t.numberOfDoubleDots)}function sx(t,e,r){let n=t,i=e,o=r;for(;o>i;){if(o-=i,n=n.parent,!n)throw new N(4005,!1);i=n.segments.length}return new ci(n,!1,i-o)}function ax(t){return po(t[0])?t[0].outlets:{[q]:t}}function t0(t,e,r){if(t??=new oe([],{}),t.segments.length===0&&t.hasChildren())return co(t,e,r);let n=lx(t,e,r),i=r.slice(n.commandIndex);if(n.match&&n.pathIndexo!==q)&&t.children[q]&&t.numberOfChildren===1&&t.children[q].segments.length===0){let o=co(t.children[q],e,r);return new oe(t.segments,o.children)}return Object.entries(n).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(i[o]=t0(t.children[o],e,s))}),Object.entries(t.children).forEach(([o,s])=>{n[o]===void 0&&(i[o]=s)}),new oe(t.segments,i)}}function lx(t,e,r){let n=0,i=e,o={match:!1,pathIndex:0,commandIndex:0};for(;i=r.length)return o;let s=t.segments[i],a=r[n];if(po(a))break;let l=`${a}`,c=n0&&l===void 0)break;if(l&&c&&typeof c=="object"&&c.outlets===void 0){if(!$g(l,c,s))return o;n+=2}else{if(!$g(l,{},s))return o;n++}i++}return{match:!0,pathIndex:i,commandIndex:n}}function md(t,e,r){let n=t.segments.slice(0,e),i=0;for(;i{typeof n=="string"&&(n=[n]),n!==null&&(e[r]=md(new oe([],{}),0,n))}),e}function jg(t){let e={};return Object.entries(t).forEach(([r,n])=>e[r]=`${n}`),e}function $g(t,e,r){return t==r.path&&Xt(e,r.parameters)}var uo="imperative",Ue=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(Ue||{}),It=class{constructor(e,r){this.id=e,this.url=r}},ho=class extends It{constructor(e,r,n="imperative",i=null){super(e,r),this.type=Ue.NavigationStart,this.navigationTrigger=n,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},wn=class extends It{constructor(e,r,n){super(e,r),this.urlAfterRedirects=n,this.type=Ue.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},vt=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t}(vt||{}),gd=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(gd||{}),Vn=class extends It{constructor(e,r,n,i){super(e,r),this.reason=n,this.code=i,this.type=Ue.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},yr=class extends It{constructor(e,r,n,i){super(e,r),this.reason=n,this.code=i,this.type=Ue.NavigationSkipped}},mo=class extends It{constructor(e,r,n,i){super(e,r),this.error=n,this.target=i,this.type=Ue.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},qa=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Ue.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},vd=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Ue.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},yd=class extends It{constructor(e,r,n,i,o){super(e,r),this.urlAfterRedirects=n,this.state=i,this.shouldActivate=o,this.type=Ue.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},_d=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Ue.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},wd=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Ue.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Cd=class{constructor(e){this.route=e,this.type=Ue.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},Dd=class{constructor(e){this.route=e,this.type=Ue.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},bd=class{constructor(e){this.snapshot=e,this.type=Ue.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Ed=class{constructor(e){this.snapshot=e,this.type=Ue.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},xd=class{constructor(e){this.snapshot=e,this.type=Ue.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Id=class{constructor(e){this.snapshot=e,this.type=Ue.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var go=class{},vo=class{constructor(e){this.url=e}};var Md=class{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new Ya,this.attachRef=null}},Ya=(()=>{let e=class e{constructor(){this.contexts=new Map}onChildOutletCreated(n,i){let o=this.getOrCreateContext(n);o.outlet=i,this.contexts.set(n,o)}onChildOutletDestroyed(n){let i=this.getContext(n);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let i=this.getContext(n);return i||(i=new Md,this.contexts.set(n,i)),i}getContext(n){return this.contexts.get(n)||null}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),za=class{constructor(e){this._root=e}get root(){return this._root.value}parent(e){let r=this.pathFromRoot(e);return r.length>1?r[r.length-2]:null}children(e){let r=Sd(e,this._root);return r?r.children.map(n=>n.value):[]}firstChild(e){let r=Sd(e,this._root);return r&&r.children.length>0?r.children[0].value:null}siblings(e){let r=Td(e,this._root);return r.length<2?[]:r[r.length-2].children.map(i=>i.value).filter(i=>i!==e)}pathFromRoot(e){return Td(e,this._root).map(r=>r.value)}};function Sd(t,e){if(t===e.value)return e;for(let r of e.children){let n=Sd(t,r);if(n)return n}return null}function Td(t,e){if(t===e.value)return[e];for(let r of e.children){let n=Td(t,r);if(n.length)return n.unshift(e),n}return[]}var gt=class{constructor(e,r){this.value=e,this.children=r}toString(){return`TreeNode(${this.value})`}};function li(t){let e={};return t&&t.children.forEach(r=>e[r.value.outlet]=r),e}var Ga=class extends za{constructor(e,r){super(e),this.snapshot=r,$d(this,e)}toString(){return this.snapshot.toString()}};function n0(t){let e=ux(t),r=new Le([new gr("",{})]),n=new Le({}),i=new Le({}),o=new Le({}),s=new Le(""),a=new yt(r,n,o,s,i,q,t,e.root);return a.snapshot=e.root,new Ga(new gt(a,[]),e)}function ux(t){let e={},r={},n={},i="",o=new yo([],e,n,i,r,q,t,null,{});return new Wa("",new gt(o,[]))}var yt=class{constructor(e,r,n,i,o,s,a,l){this.urlSubject=e,this.paramsSubject=r,this.queryParamsSubject=n,this.fragmentSubject=i,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(A(c=>c[Co]))??O(void 0),this.url=e,this.params=r,this.queryParams=n,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(A(e=>di(e))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(A(e=>di(e))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function jd(t,e,r="emptyOnly"){let n,{routeConfig:i}=t;return e!==null&&(r==="always"||i?.path===""||!e.component&&!e.routeConfig?.loadComponent)?n={params:M(M({},e.params),t.params),data:M(M({},e.data),t.data),resolve:M(M(M(M({},t.data),e.data),i?.data),t._resolvedData)}:n={params:M({},t.params),data:M({},t.data),resolve:M(M({},t.data),t._resolvedData??{})},i&&i0(i)&&(n.resolve[Co]=i.title),n}var yo=class{get title(){return this.data?.[Co]}constructor(e,r,n,i,o,s,a,l,c){this.url=e,this.params=r,this.queryParams=n,this.fragment=i,this.data=o,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=c}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=di(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=di(this.queryParams),this._queryParamMap}toString(){let e=this.url.map(n=>n.toString()).join("/"),r=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${e}', path:'${r}')`}},Wa=class extends za{constructor(e,r){super(r),this.url=e,$d(this,r)}toString(){return r0(this._root)}};function $d(t,e){e.value._routerState=t,e.children.forEach(r=>$d(t,r))}function r0(t){let e=t.children.length>0?` { ${t.children.map(r0).join(", ")} } `:"";return`${t.value}${e}`}function cd(t){if(t.snapshot){let e=t.snapshot,r=t._futureSnapshot;t.snapshot=r,Xt(e.queryParams,r.queryParams)||t.queryParamsSubject.next(r.queryParams),e.fragment!==r.fragment&&t.fragmentSubject.next(r.fragment),Xt(e.params,r.params)||t.paramsSubject.next(r.params),jE(e.url,r.url)||t.urlSubject.next(r.url),Xt(e.data,r.data)||t.dataSubject.next(r.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Ad(t,e){let r=Xt(t.params,e.params)&&HE(t.url,e.url),n=!t.parent!=!e.parent;return r&&!n&&(!t.parent||Ad(t.parent,e.parent))}function i0(t){return typeof t.title=="string"||t.title===null}var _r=(()=>{let e=class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=q,this.activateEvents=new De,this.deactivateEvents=new De,this.attachEvents=new De,this.detachEvents=new De,this.parentContexts=S(Ya),this.location=S(mn),this.changeDetector=S(Jt),this.environmentInjector=S(nt),this.inputBinder=S(Ud,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(n){if(n.name){let{firstChange:i,previousValue:o}=n.name;if(i)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new N(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new N(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new N(4012,!1);this.location.detach();let n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,i){this.activated=n,this._activatedRoute=i,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){let n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,i){if(this.isActivated)throw new N(4013,!1);this._activatedRoute=n;let o=this.location,a=n.snapshot.component,l=this.parentContexts.getOrCreateContext(this.name).children,c=new Od(n,l,o.injector);this.activated=o.createComponent(a,{index:o.length,injector:c,environmentInjector:i??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}};e.\u0275fac=function(i){return new(i||e)},e.\u0275dir=se({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[it]});let t=e;return t})(),Od=class t{__ngOutletInjector(e){return new t(this.route,this.childContexts,e)}constructor(e,r,n){this.route=e,this.childContexts=r,this.parent=n}get(e,r){return e===yt?this.route:e===Ya?this.childContexts:this.parent.get(e,r)}},Ud=new R("");function dx(t,e,r){let n=_o(t,e._root,r?r._root:void 0);return new Ga(n,e)}function _o(t,e,r){if(r&&t.shouldReuseRoute(e.value,r.value.snapshot)){let n=r.value;n._futureSnapshot=e.value;let i=fx(t,e,r);return new gt(n,i)}else{if(t.shouldAttach(e.value)){let o=t.retrieve(e.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=e.value,s.children=e.children.map(a=>_o(t,a)),s}}let n=px(e.value),i=e.children.map(o=>_o(t,o));return new gt(n,i)}}function fx(t,e,r){return e.children.map(n=>{for(let i of r.children)if(t.shouldReuseRoute(n.value,i.value.snapshot))return _o(t,n,i);return _o(t,n)})}function px(t){return new yt(new Le(t.url),new Le(t.params),new Le(t.queryParams),new Le(t.fragment),new Le(t.data),t.outlet,t.component,t)}var o0="ngNavigationCancelingError";function s0(t,e){let{redirectTo:r,navigationBehaviorOptions:n}=fi(e)?{redirectTo:e,navigationBehaviorOptions:void 0}:e,i=a0(!1,vt.Redirect);return i.url=r,i.navigationBehaviorOptions=n,i}function a0(t,e){let r=new Error(`NavigationCancelingError: ${t||""}`);return r[o0]=!0,r.cancellationCode=e,r}function hx(t){return l0(t)&&fi(t.url)}function l0(t){return!!t&&t[o0]}var mx=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["ng-component"]],standalone:!0,features:[te],decls:1,vars:0,template:function(i,o){i&1&&w(0,"router-outlet")},dependencies:[_r],encapsulation:2});let t=e;return t})();function gx(t,e){return t.providers&&!t._injector&&(t._injector=Fu(t.providers,e,`Route: ${t.path}`)),t._injector??e}function Bd(t){let e=t.children&&t.children.map(Bd),r=e?K(M({},t),{children:e}):M({},t);return!r.component&&!r.loadComponent&&(e||r.loadChildren)&&r.outlet&&r.outlet!==q&&(r.component=mx),r}function en(t){return t.outlet||q}function vx(t,e){let r=t.filter(n=>en(n)===e);return r.push(...t.filter(n=>en(n)!==e)),r}function Do(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let e=t.parent;e;e=e.parent){let r=e.routeConfig;if(r?._loadedInjector)return r._loadedInjector;if(r?._injector)return r._injector}return null}var yx=(t,e,r,n)=>A(i=>(new Nd(e,i.targetRouterState,i.currentRouterState,r,n).activate(t),i)),Nd=class{constructor(e,r,n,i,o){this.routeReuseStrategy=e,this.futureState=r,this.currState=n,this.forwardEvent=i,this.inputBindingEnabled=o}activate(e){let r=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(r,n,e),cd(this.futureState.root),this.activateChildRoutes(r,n,e)}deactivateChildRoutes(e,r,n){let i=li(r);e.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,i[s],n),delete i[s]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,n)})}deactivateRoutes(e,r,n){let i=e.value,o=r?r.value:null;if(i===o)if(i.component){let s=n.getContext(i.outlet);s&&this.deactivateChildRoutes(e,r,s.children)}else this.deactivateChildRoutes(e,r,n);else o&&this.deactivateRouteAndItsChildren(r,n)}deactivateRouteAndItsChildren(e,r){e.value.component&&this.routeReuseStrategy.shouldDetach(e.value.snapshot)?this.detachAndStoreRouteSubtree(e,r):this.deactivateRouteAndOutlet(e,r)}detachAndStoreRouteSubtree(e,r){let n=r.getContext(e.value.outlet),i=n&&e.value.component?n.children:r,o=li(e);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);if(n&&n.outlet){let s=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(e.value.snapshot,{componentRef:s,route:e,contexts:a})}}deactivateRouteAndOutlet(e,r){let n=r.getContext(e.value.outlet),i=n&&e.value.component?n.children:r,o=li(e);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);n&&(n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated()),n.attachRef=null,n.route=null)}activateChildRoutes(e,r,n){let i=li(r);e.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],n),this.forwardEvent(new Id(o.value.snapshot))}),e.children.length&&this.forwardEvent(new Ed(e.value.snapshot))}activateRoutes(e,r,n){let i=e.value,o=r?r.value:null;if(cd(i),i===o)if(i.component){let s=n.getOrCreateContext(i.outlet);this.activateChildRoutes(e,r,s.children)}else this.activateChildRoutes(e,r,n);else if(i.component){let s=n.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),cd(a.route.value),this.activateChildRoutes(e,null,s.children)}else{let a=Do(i.snapshot);s.attachRef=null,s.route=i,s.injector=a,s.outlet&&s.outlet.activateWith(i,s.injector),this.activateChildRoutes(e,null,s.children)}}else this.activateChildRoutes(e,null,n)}},Za=class{constructor(e){this.path=e,this.route=this.path[this.path.length-1]}},ui=class{constructor(e,r){this.component=e,this.route=r}};function _x(t,e,r){let n=t._root,i=e?e._root:null;return ao(n,i,r,[n.value])}function wx(t){let e=t.routeConfig?t.routeConfig.canActivateChild:null;return!e||e.length===0?null:{node:t,guards:e}}function hi(t,e){let r=Symbol(),n=e.get(t,r);return n===r?typeof t=="function"&&!kp(t)?t:e.get(t):n}function ao(t,e,r,n,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=li(e);return t.children.forEach(s=>{Cx(s,o[s.value.outlet],r,n.concat([s.value]),i),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>fo(a,r.getContext(s),i)),i}function Cx(t,e,r,n,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=e?e.value:null,a=r?r.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let l=Dx(s,o,o.routeConfig.runGuardsAndResolvers);l?i.canActivateChecks.push(new Za(n)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?ao(t,e,a?a.children:null,n,i):ao(t,e,r,n,i),l&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new ui(a.outlet.component,s))}else s&&fo(e,a,i),i.canActivateChecks.push(new Za(n)),o.component?ao(t,null,a?a.children:null,n,i):ao(t,null,r,n,i);return i}function Dx(t,e,r){if(typeof r=="function")return r(t,e);switch(r){case"pathParamsChange":return!vr(t.url,e.url);case"pathParamsOrQueryParamsChange":return!vr(t.url,e.url)||!Xt(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Ad(t,e)||!Xt(t.queryParams,e.queryParams);case"paramsChange":default:return!Ad(t,e)}}function fo(t,e,r){let n=li(t),i=t.value;Object.entries(n).forEach(([o,s])=>{i.component?e?fo(s,e.children.getContext(o),r):fo(s,null,r):fo(s,e,r)}),i.component?e&&e.outlet&&e.outlet.isActivated?r.canDeactivateChecks.push(new ui(e.outlet.component,i)):r.canDeactivateChecks.push(new ui(null,i)):r.canDeactivateChecks.push(new ui(null,i))}function bo(t){return typeof t=="function"}function bx(t){return typeof t=="boolean"}function Ex(t){return t&&bo(t.canLoad)}function xx(t){return t&&bo(t.canActivate)}function Ix(t){return t&&bo(t.canActivateChild)}function Mx(t){return t&&bo(t.canDeactivate)}function Sx(t){return t&&bo(t.canMatch)}function c0(t){return t instanceof sn||t?.name==="EmptyError"}var La=Symbol("INITIAL_VALUE");function pi(){return ut(t=>ss(t.map(e=>e.pipe(an(1),Ul(La)))).pipe(A(e=>{for(let r of e)if(r!==!0){if(r===La)return La;if(r===!1||r instanceof Ln)return r}return!0}),Ve(e=>e!==La),an(1)))}function Tx(t,e){return Ae(r=>{let{targetSnapshot:n,currentSnapshot:i,guards:{canActivateChecks:o,canDeactivateChecks:s}}=r;return s.length===0&&o.length===0?O(K(M({},r),{guardsResult:!0})):Ax(s,n,i,t).pipe(Ae(a=>a&&bx(a)?Ox(n,o,t,e):O(a)),A(a=>K(M({},r),{guardsResult:a})))})}function Ax(t,e,r,n){return ge(t).pipe(Ae(i=>Fx(i.component,i.route,r,e,n)),Ht(i=>i!==!0,!0))}function Ox(t,e,r,n){return ge(e).pipe(En(i=>Rr(kx(i.route.parent,n),Nx(i.route,n),Rx(t,i.path,r),Px(t,i.route,r))),Ht(i=>i!==!0,!0))}function Nx(t,e){return t!==null&&e&&e(new xd(t)),O(!0)}function kx(t,e){return t!==null&&e&&e(new bd(t)),O(!0)}function Px(t,e,r){let n=e.routeConfig?e.routeConfig.canActivate:null;if(!n||n.length===0)return O(!0);let i=n.map(o=>ls(()=>{let s=Do(e)??r,a=hi(o,s),l=xx(a)?a.canActivate(e,t):fn(s,()=>a(e,t));return jn(l).pipe(Ht())}));return O(i).pipe(pi())}function Rx(t,e,r){let n=e[e.length-1],o=e.slice(0,e.length-1).reverse().map(s=>wx(s)).filter(s=>s!==null).map(s=>ls(()=>{let a=s.guards.map(l=>{let c=Do(s.node)??r,f=hi(l,c),h=Ix(f)?f.canActivateChild(n,t):fn(c,()=>f(n,t));return jn(h).pipe(Ht())});return O(a).pipe(pi())}));return O(o).pipe(pi())}function Fx(t,e,r,n,i){let o=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!o||o.length===0)return O(!0);let s=o.map(a=>{let l=Do(e)??i,c=hi(a,l),f=Mx(c)?c.canDeactivate(t,e,r,n):fn(l,()=>c(t,e,r,n));return jn(f).pipe(Ht())});return O(s).pipe(pi())}function Lx(t,e,r,n){let i=e.canLoad;if(i===void 0||i.length===0)return O(!0);let o=i.map(s=>{let a=hi(s,t),l=Ex(a)?a.canLoad(e,r):fn(t,()=>a(e,r));return jn(l)});return O(o).pipe(pi(),u0(n))}function u0(t){return xl(Re(e=>{if(fi(e))throw s0(t,e)}),A(e=>e===!0))}function Vx(t,e,r,n){let i=e.canMatch;if(!i||i.length===0)return O(!0);let o=i.map(s=>{let a=hi(s,t),l=Sx(a)?a.canMatch(e,r):fn(t,()=>a(e,r));return jn(l)});return O(o).pipe(pi(),u0(n))}var wo=class{constructor(e){this.segmentGroup=e||null}},Qa=class extends Error{constructor(e){super(),this.urlTree=e}};function ai(t){return kr(new wo(t))}function jx(t){return kr(new N(4e3,!1))}function $x(t){return kr(a0(!1,vt.GuardRejected))}var kd=class{constructor(e,r){this.urlSerializer=e,this.urlTree=r}lineralizeSegments(e,r){let n=[],i=r.root;for(;;){if(n=n.concat(i.segments),i.numberOfChildren===0)return O(n);if(i.numberOfChildren>1||!i.children[q])return jx(e.redirectTo);i=i.children[q]}}applyRedirectCommands(e,r,n){let i=this.applyRedirectCreateUrlTree(r,this.urlSerializer.parse(r),e,n);if(r.startsWith("/"))throw new Qa(i);return i}applyRedirectCreateUrlTree(e,r,n,i){let o=this.createSegmentGroup(e,r.root,n,i);return new Ln(o,this.createQueryParams(r.queryParams,this.urlTree.queryParams),r.fragment)}createQueryParams(e,r){let n={};return Object.entries(e).forEach(([i,o])=>{if(typeof o=="string"&&o.startsWith(":")){let a=o.substring(1);n[i]=r[a]}else n[i]=o}),n}createSegmentGroup(e,r,n,i){let o=this.createSegments(e,r.segments,n,i),s={};return Object.entries(r.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(e,l,n,i)}),new oe(o,s)}createSegments(e,r,n,i){return r.map(o=>o.path.startsWith(":")?this.findPosParam(e,o,i):this.findOrReturn(o,n))}findPosParam(e,r,n){let i=n[r.path.substring(1)];if(!i)throw new N(4001,!1);return i}findOrReturn(e,r){let n=0;for(let i of r){if(i.path===e.path)return r.splice(n),i;n++}return e}},Pd={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Ux(t,e,r,n,i){let o=Hd(t,e,r);return o.matched?(n=gx(e,n),Vx(n,e,r,i).pipe(A(s=>s===!0?o:M({},Pd)))):O(o)}function Hd(t,e,r){if(e.path==="**")return Bx(r);if(e.path==="")return e.pathMatch==="full"&&(t.hasChildren()||r.length>0)?M({},Pd):{matched:!0,consumedSegments:[],remainingSegments:r,parameters:{},positionalParamSegments:{}};let i=(e.matcher||VE)(r,t,e);if(!i)return M({},Pd);let o={};Object.entries(i.posParams??{}).forEach(([a,l])=>{o[a]=l.path});let s=i.consumed.length>0?M(M({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:r.slice(i.consumed.length),parameters:s,positionalParamSegments:i.posParams??{}}}function Bx(t){return{matched:!0,parameters:t.length>0?Hg(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Ug(t,e,r,n){return r.length>0&&zx(t,r,n)?{segmentGroup:new oe(e,qx(n,new oe(r,t.children))),slicedSegments:[]}:r.length===0&&Gx(t,r,n)?{segmentGroup:new oe(t.segments,Hx(t,r,n,t.children)),slicedSegments:r}:{segmentGroup:new oe(t.segments,t.children),slicedSegments:r}}function Hx(t,e,r,n){let i={};for(let o of r)if(Ka(t,e,o)&&!n[en(o)]){let s=new oe([],{});i[en(o)]=s}return M(M({},n),i)}function qx(t,e){let r={};r[q]=e;for(let n of t)if(n.path===""&&en(n)!==q){let i=new oe([],{});r[en(n)]=i}return r}function zx(t,e,r){return r.some(n=>Ka(t,e,n)&&en(n)!==q)}function Gx(t,e,r){return r.some(n=>Ka(t,e,n))}function Ka(t,e,r){return(t.hasChildren()||e.length>0)&&r.pathMatch==="full"?!1:r.path===""}function Wx(t,e,r,n){return en(t)!==n&&(n===q||!Ka(e,r,t))?!1:Hd(e,t,r).matched}function Zx(t,e,r){return e.length===0&&!t.children[r]}var Rd=class{};function Qx(t,e,r,n,i,o,s="emptyOnly"){return new Fd(t,e,r,n,i,s,o).recognize()}var Yx=31,Fd=class{constructor(e,r,n,i,o,s,a){this.injector=e,this.configLoader=r,this.rootComponentType=n,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new kd(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(e){return new N(4002,`'${e.segmentGroup}'`)}recognize(){let e=Ug(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(e).pipe(A(r=>{let n=new yo([],Object.freeze({}),Object.freeze(M({},this.urlTree.queryParams)),this.urlTree.fragment,{},q,this.rootComponentType,null,{}),i=new gt(n,r),o=new Wa("",i),s=rx(n,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),this.inheritParamsAndData(o._root,null),{state:o,tree:s}}))}match(e){return this.processSegmentGroup(this.injector,this.config,e,q).pipe(He(n=>{if(n instanceof Qa)return this.urlTree=n.urlTree,this.match(n.urlTree.root);throw n instanceof wo?this.noMatchError(n):n}))}inheritParamsAndData(e,r){let n=e.value,i=jd(n,r,this.paramsInheritanceStrategy);n.params=Object.freeze(i.params),n.data=Object.freeze(i.data),e.children.forEach(o=>this.inheritParamsAndData(o,n))}processSegmentGroup(e,r,n,i){return n.segments.length===0&&n.hasChildren()?this.processChildren(e,r,n):this.processSegment(e,r,n,n.segments,i,!0).pipe(A(o=>o instanceof gt?[o]:[]))}processChildren(e,r,n){let i=[];for(let o of Object.keys(n.children))o==="primary"?i.unshift(o):i.push(o);return ge(i).pipe(En(o=>{let s=n.children[o],a=vx(r,o);return this.processSegmentGroup(e,a,s,o)}),jl((o,s)=>(o.push(...s),o)),xn(null),Vl(),Ae(o=>{if(o===null)return ai(n);let s=d0(o);return Kx(s),O(s)}))}processSegment(e,r,n,i,o,s){return ge(r).pipe(En(a=>this.processSegmentAgainstRoute(a._injector??e,r,a,n,i,o,s).pipe(He(l=>{if(l instanceof wo)return O(null);throw l}))),Ht(a=>!!a),He(a=>{if(c0(a))return Zx(n,i,o)?O(new Rd):ai(n);throw a}))}processSegmentAgainstRoute(e,r,n,i,o,s,a){return Wx(n,i,o,s)?n.redirectTo===void 0?this.matchSegmentAgainstRoute(e,i,n,o,s):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(e,i,r,n,o,s):ai(i):ai(i)}expandSegmentAgainstRouteUsingRedirect(e,r,n,i,o,s){let{matched:a,consumedSegments:l,positionalParamSegments:c,remainingSegments:f}=Hd(r,i,o);if(!a)return ai(r);i.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>Yx&&(this.allowRedirects=!1));let h=this.applyRedirects.applyRedirectCommands(l,i.redirectTo,c);return this.applyRedirects.lineralizeSegments(i,h).pipe(Ae(g=>this.processSegment(e,n,r,g.concat(f),s,!1)))}matchSegmentAgainstRoute(e,r,n,i,o){let s=Ux(r,n,i,e,this.urlSerializer);return n.path==="**"&&(r.children={}),s.pipe(ut(a=>a.matched?(e=n._injector??e,this.getChildConfig(e,n,i).pipe(ut(({routes:l})=>{let c=n._loadedInjector??e,{consumedSegments:f,remainingSegments:h,parameters:g}=a,y=new yo(f,g,Object.freeze(M({},this.urlTree.queryParams)),this.urlTree.fragment,Xx(n),en(n),n.component??n._loadedComponent??null,n,eI(n)),{segmentGroup:I,slicedSegments:F}=Ug(r,f,h,l);if(F.length===0&&I.hasChildren())return this.processChildren(c,l,I).pipe(A(P=>P===null?null:new gt(y,P)));if(l.length===0&&F.length===0)return O(new gt(y,[]));let L=en(n)===o;return this.processSegment(c,l,I,F,L?q:o,!0).pipe(A(P=>new gt(y,P instanceof gt?[P]:[])))}))):ai(r)))}getChildConfig(e,r,n){return r.children?O({routes:r.children,injector:e}):r.loadChildren?r._loadedRoutes!==void 0?O({routes:r._loadedRoutes,injector:r._loadedInjector}):Lx(e,r,n,this.urlSerializer).pipe(Ae(i=>i?this.configLoader.loadChildren(e,r).pipe(Re(o=>{r._loadedRoutes=o.routes,r._loadedInjector=o.injector})):$x(r))):O({routes:[],injector:e})}};function Kx(t){t.sort((e,r)=>e.value.outlet===q?-1:r.value.outlet===q?1:e.value.outlet.localeCompare(r.value.outlet))}function Jx(t){let e=t.value.routeConfig;return e&&e.path===""}function d0(t){let e=[],r=new Set;for(let n of t){if(!Jx(n)){e.push(n);continue}let i=e.find(o=>n.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...n.children),r.add(i)):e.push(n)}for(let n of r){let i=d0(n.children);e.push(new gt(n.value,i))}return e.filter(n=>!r.has(n))}function Xx(t){return t.data||{}}function eI(t){return t.resolve||{}}function tI(t,e,r,n,i,o){return Ae(s=>Qx(t,e,r,n,s.extractedUrl,i,o).pipe(A(({state:a,tree:l})=>K(M({},s),{targetSnapshot:a,urlAfterRedirects:l}))))}function nI(t,e){return Ae(r=>{let{targetSnapshot:n,guards:{canActivateChecks:i}}=r;if(!i.length)return O(r);let o=new Set(i.map(l=>l.route)),s=new Set;for(let l of o)if(!s.has(l))for(let c of f0(l))s.add(c);let a=0;return ge(s).pipe(En(l=>o.has(l)?rI(l,n,t,e):(l.data=jd(l,l.parent,t).resolve,O(void 0))),Re(()=>a++),Fr(1),Ae(l=>a===s.size?O(r):Je))})}function f0(t){let e=t.children.map(r=>f0(r)).flat();return[t,...e]}function rI(t,e,r,n){let i=t.routeConfig,o=t._resolve;return i?.title!==void 0&&!i0(i)&&(o[Co]=i.title),iI(o,t,e,n).pipe(A(s=>(t._resolvedData=s,t.data=jd(t,t.parent,r).resolve,null)))}function iI(t,e,r,n){let i=fd(t);if(i.length===0)return O({});let o={};return ge(i).pipe(Ae(s=>oI(t[s],e,r,n).pipe(Ht(),Re(a=>{o[s]=a}))),Fr(1),Rl(o),He(s=>c0(s)?Je:kr(s)))}function oI(t,e,r,n){let i=Do(e)??n,o=hi(t,i),s=o.resolve?o.resolve(e,r):fn(i,()=>o(e,r));return jn(s)}function ud(t){return ut(e=>{let r=t(e);return r?ge(r).pipe(A(()=>e)):O(e)})}var p0=(()=>{let e=class e{buildTitle(n){let i,o=n.root;for(;o!==void 0;)i=this.getResolvedTitleForRoute(o)??i,o=o.children.find(s=>s.outlet===q);return i}getResolvedTitleForRoute(n){return n.data[Co]}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(sI),providedIn:"root"});let t=e;return t})(),sI=(()=>{let e=class e extends p0{constructor(n){super(),this.title=n}updateTitle(n){let i=this.buildTitle(n);i!==void 0&&this.title.setTitle(i)}};e.\u0275fac=function(i){return new(i||e)(k(Fg))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),qd=new R("",{providedIn:"root",factory:()=>({})}),zd=new R(""),aI=(()=>{let e=class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=S(Vu)}loadComponent(n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return O(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);let i=jn(n.loadComponent()).pipe(A(h0),Re(s=>{this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=s}),In(()=>{this.componentLoaders.delete(n)})),o=new Tr(i,()=>new ue).pipe(Sr());return this.componentLoaders.set(n,o),o}loadChildren(n,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return O({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);let s=lI(i,this.compiler,n,this.onLoadEndListener).pipe(In(()=>{this.childrenLoaders.delete(i)})),a=new Tr(s,()=>new ue).pipe(Sr());return this.childrenLoaders.set(i,a),a}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function lI(t,e,r,n){return jn(t.loadChildren()).pipe(A(h0),Ae(i=>i instanceof Gi||Array.isArray(i)?O(i):ge(e.compileModuleAsync(i))),A(i=>{n&&n(t);let o,s,a=!1;return Array.isArray(i)?(s=i,a=!0):(o=i.create(r).injector,s=o.get(zd,[],{optional:!0,self:!0}).flat()),{routes:s.map(Bd),injector:o}}))}function cI(t){return t&&typeof t=="object"&&"default"in t}function h0(t){return cI(t)?t.default:t}var Gd=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(uI),providedIn:"root"});let t=e;return t})(),uI=(()=>{let e=class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,i){return n}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),dI=new R("");var fI=(()=>{let e=class e{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new ue,this.transitionAbortSubject=new ue,this.configLoader=S(aI),this.environmentInjector=S(nt),this.urlSerializer=S(Vd),this.rootContexts=S(Ya),this.location=S(Ut),this.inputBindingEnabled=S(Ud,{optional:!0})!==null,this.titleStrategy=S(p0),this.options=S(qd,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=S(Gd),this.createViewTransition=S(dI,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>O(void 0),this.rootComponentType=null;let n=o=>this.events.next(new Cd(o)),i=o=>this.events.next(new Dd(o));this.configLoader.onLoadEndListener=i,this.configLoader.onLoadStartListener=n}complete(){this.transitions?.complete()}handleNavigationRequest(n){let i=++this.navigationId;this.transitions?.next(K(M(M({},this.transitions.value),n),{id:i}))}setupNavigations(n,i,o){return this.transitions=new Le({id:0,currentUrlTree:i,currentRawUrl:i,extractedUrl:this.urlHandlingStrategy.extract(i),urlAfterRedirects:this.urlHandlingStrategy.extract(i),rawUrl:i,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:uo,restoredState:null,currentSnapshot:o.snapshot,targetSnapshot:null,currentRouterState:o,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(Ve(s=>s.id!==0),A(s=>K(M({},s),{extractedUrl:this.urlHandlingStrategy.extract(s.rawUrl)})),ut(s=>{let a=!1,l=!1;return O(s).pipe(ut(c=>{if(this.navigationId>s.id)return this.cancelNavigationTransition(s,"",vt.SupersededByNewNavigation),Je;this.currentTransition=s,this.currentNavigation={id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,trigger:c.source,extras:c.extras,previousNavigation:this.lastSuccessfulNavigation?K(M({},this.lastSuccessfulNavigation),{previousNavigation:null}):null};let f=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),h=c.extras.onSameUrlNavigation??n.onSameUrlNavigation;if(!f&&h!=="reload"){let g="";return this.events.next(new yr(c.id,this.urlSerializer.serialize(c.rawUrl),g,gd.IgnoredSameUrlNavigation)),c.resolve(null),Je}if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return O(c).pipe(ut(g=>{let y=this.transitions?.getValue();return this.events.next(new ho(g.id,this.urlSerializer.serialize(g.extractedUrl),g.source,g.restoredState)),y!==this.transitions?.getValue()?Je:Promise.resolve(g)}),tI(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy),Re(g=>{s.targetSnapshot=g.targetSnapshot,s.urlAfterRedirects=g.urlAfterRedirects,this.currentNavigation=K(M({},this.currentNavigation),{finalUrl:g.urlAfterRedirects});let y=new qa(g.id,this.urlSerializer.serialize(g.extractedUrl),this.urlSerializer.serialize(g.urlAfterRedirects),g.targetSnapshot);this.events.next(y)}));if(f&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:g,extractedUrl:y,source:I,restoredState:F,extras:L}=c,P=new ho(g,this.urlSerializer.serialize(y),I,F);this.events.next(P);let Be=n0(this.rootComponentType).snapshot;return this.currentTransition=s=K(M({},c),{targetSnapshot:Be,urlAfterRedirects:y,extras:K(M({},L),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=y,O(s)}else{let g="";return this.events.next(new yr(c.id,this.urlSerializer.serialize(c.extractedUrl),g,gd.IgnoredByUrlHandlingStrategy)),c.resolve(null),Je}}),Re(c=>{let f=new vd(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(f)}),A(c=>(this.currentTransition=s=K(M({},c),{guards:_x(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),s)),Tx(this.environmentInjector,c=>this.events.next(c)),Re(c=>{if(s.guardsResult=c.guardsResult,fi(c.guardsResult))throw s0(this.urlSerializer,c.guardsResult);let f=new yd(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);this.events.next(f)}),Ve(c=>c.guardsResult?!0:(this.cancelNavigationTransition(c,"",vt.GuardRejected),!1)),ud(c=>{if(c.guards.canActivateChecks.length)return O(c).pipe(Re(f=>{let h=new _d(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(h)}),ut(f=>{let h=!1;return O(f).pipe(nI(this.paramsInheritanceStrategy,this.environmentInjector),Re({next:()=>h=!0,complete:()=>{h||this.cancelNavigationTransition(f,"",vt.NoDataFromResolver)}}))}),Re(f=>{let h=new wd(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(h)}))}),ud(c=>{let f=h=>{let g=[];h.routeConfig?.loadComponent&&!h.routeConfig._loadedComponent&&g.push(this.configLoader.loadComponent(h.routeConfig).pipe(Re(y=>{h.component=y}),A(()=>{})));for(let y of h.children)g.push(...f(y));return g};return ss(f(c.targetSnapshot.root)).pipe(xn(null),an(1))}),ud(()=>this.afterPreactivation()),ut(()=>{let{currentSnapshot:c,targetSnapshot:f}=s,h=this.createViewTransition?.(this.environmentInjector,c.root,f.root);return h?ge(h).pipe(A(()=>s)):O(s)}),A(c=>{let f=dx(n.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=s=K(M({},c),{targetRouterState:f}),this.currentNavigation.targetRouterState=f,s}),Re(()=>{this.events.next(new go)}),yx(this.rootContexts,n.routeReuseStrategy,c=>this.events.next(c),this.inputBindingEnabled),an(1),Re({next:c=>{a=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new wn(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0)},complete:()=>{a=!0}}),Bl(this.transitionAbortSubject.pipe(Re(c=>{throw c}))),In(()=>{!a&&!l&&this.cancelNavigationTransition(s,"",vt.SupersededByNewNavigation),this.currentTransition?.id===s.id&&(this.currentNavigation=null,this.currentTransition=null)}),He(c=>{if(l=!0,l0(c))this.events.next(new Vn(s.id,this.urlSerializer.serialize(s.extractedUrl),c.message,c.cancellationCode)),hx(c)?this.events.next(new vo(c.url)):s.resolve(!1);else{this.events.next(new mo(s.id,this.urlSerializer.serialize(s.extractedUrl),c,s.targetSnapshot??void 0));try{s.resolve(n.errorHandler(c))}catch(f){this.options.resolveNavigationPromiseOnError?s.resolve(!1):s.reject(f)}}return Je}))}))}cancelNavigationTransition(n,i,o){let s=new Vn(n.id,this.urlSerializer.serialize(n.extractedUrl),i,o);this.events.next(s),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function pI(t){return t!==uo}var hI=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(mI),providedIn:"root"});let t=e;return t})(),Ld=class{shouldDetach(e){return!1}store(e,r){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,r){return e.routeConfig===r.routeConfig}},mI=(()=>{let e=class e extends Ld{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),m0=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(gI),providedIn:"root"});let t=e;return t})(),gI=(()=>{let e=class e extends m0{constructor(){super(...arguments),this.location=S(Ut),this.urlSerializer=S(Vd),this.options=S(qd,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=S(Gd),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new Ln,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=n0(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(i=>{i.type==="popstate"&&n(i.url,i.state)})}handleRouterEvent(n,i){if(n instanceof ho)this.stateMemento=this.createStateMemento();else if(n instanceof yr)this.rawUrlTree=i.initialUrl;else if(n instanceof qa){if(this.urlUpdateStrategy==="eager"&&!i.extras.skipLocationChange){let o=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl);this.setBrowserUrl(o,i)}}else n instanceof go?(this.currentUrlTree=i.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl),this.routerState=i.targetRouterState,this.urlUpdateStrategy==="deferred"&&(i.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,i))):n instanceof Vn&&(n.code===vt.GuardRejected||n.code===vt.NoDataFromResolver)?this.restoreHistory(i):n instanceof mo?this.restoreHistory(i,!0):n instanceof wn&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,i){let o=this.urlSerializer.serialize(n);if(this.location.isCurrentPathEqualTo(o)||i.extras.replaceUrl){let s=this.browserPageId,a=M(M({},i.extras.state),this.generateNgRouterState(i.id,s));this.location.replaceState(o,"",a)}else{let s=M(M({},i.extras.state),this.generateNgRouterState(i.id,this.browserPageId+1));this.location.go(o,"",s)}}restoreHistory(n,i=!1){if(this.canceledNavigationResolution==="computed"){let o=this.browserPageId,s=this.currentPageId-o;s!==0?this.location.historyGo(s):this.currentUrlTree===n.finalUrl&&s===0&&(this.resetState(n),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(i&&this.resetState(n),this.resetUrlToCurrentUrlTree())}resetState(n){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,i){return this.canceledNavigationResolution==="computed"?{navigationId:n,\u0275routerPageId:i}:{navigationId:n}}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),lo=function(t){return t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING",t}(lo||{});function vI(t,e){t.events.pipe(Ve(r=>r instanceof wn||r instanceof Vn||r instanceof mo||r instanceof yr),A(r=>r instanceof wn||r instanceof yr?lo.COMPLETE:(r instanceof Vn?r.code===vt.Redirect||r.code===vt.SupersededByNewNavigation:!1)?lo.REDIRECTING:lo.FAILED),Ve(r=>r!==lo.REDIRECTING),an(1)).subscribe(()=>{e()})}function yI(t){throw t}var _I={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},wI={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},mi=(()=>{let e=class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=S(fa),this.stateManager=S(m0),this.options=S(qd,{optional:!0})||{},this.pendingTasks=S(cr),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=S(fI),this.urlSerializer=S(Vd),this.location=S(Ut),this.urlHandlingStrategy=S(Gd),this._events=new ue,this.errorHandler=this.options.errorHandler||yI,this.navigated=!1,this.routeReuseStrategy=S(hI),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=S(zd,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!S(Ud,{optional:!0}),this.eventsSubscription=new ve,this.isNgZoneEnabled=S(be)instanceof be&&be.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:n=>{this.console.warn(n)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let n=this.navigationTransitions.events.subscribe(i=>{try{let o=this.navigationTransitions.currentTransition,s=this.navigationTransitions.currentNavigation;if(o!==null&&s!==null){if(this.stateManager.handleRouterEvent(i,s),i instanceof Vn&&i.code!==vt.Redirect&&i.code!==vt.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof wn)this.navigated=!0;else if(i instanceof vo){let a=this.urlHandlingStrategy.merge(i.url,o.currentRawUrl),l={info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:this.urlUpdateStrategy==="eager"||pI(o.source)};this.scheduleNavigation(a,uo,null,l,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}DI(i)&&this._events.next(i)}catch(o){this.navigationTransitions.transitionAbortSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),uo,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,i)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(n,"popstate",i)},0)})}navigateToSyncWithBrowser(n,i,o){let s={replaceUrl:!0},a=o?.navigationId?o:null;if(o){let c=M({},o);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let l=this.parseUrl(n);this.scheduleNavigation(l,i,a,s)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(Bd),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,i={}){let{relativeTo:o,queryParams:s,fragment:a,queryParamsHandling:l,preserveFragment:c}=i,f=c?this.currentUrlTree.fragment:a,h=null;switch(l){case"merge":h=M(M({},this.currentUrlTree.queryParams),s);break;case"preserve":h=this.currentUrlTree.queryParams;break;default:h=s||null}h!==null&&(h=this.removeEmptyProps(h));let g;try{let y=o?o.snapshot:this.routerState.snapshot.root;g=Jg(y)}catch{(typeof n[0]!="string"||!n[0].startsWith("/"))&&(n=[]),g=this.currentUrlTree.root}return Xg(g,n,h,f??null)}navigateByUrl(n,i={skipLocationChange:!1}){let o=fi(n)?n:this.parseUrl(n),s=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(s,uo,null,i)}navigate(n,i={skipLocationChange:!1}){return CI(n),this.navigateByUrl(this.createUrlTree(n,i),i)}serializeUrl(n){return this.urlSerializer.serialize(n)}parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.urlSerializer.parse("/")}}isActive(n,i){let o;if(i===!0?o=M({},_I):i===!1?o=M({},wI):o=i,fi(n))return Lg(this.currentUrlTree,n,o);let s=this.parseUrl(n);return Lg(this.currentUrlTree,s,o)}removeEmptyProps(n){return Object.entries(n).reduce((i,[o,s])=>(s!=null&&(i[o]=s),i),{})}scheduleNavigation(n,i,o,s,a){if(this.disposed)return Promise.resolve(!1);let l,c,f;a?(l=a.resolve,c=a.reject,f=a.promise):f=new Promise((g,y)=>{l=g,c=y});let h=this.pendingTasks.add();return vI(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(h))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:s,resolve:l,reject:c,promise:f,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),f.catch(g=>Promise.reject(g))}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function CI(t){for(let e=0;e{let e=class e{constructor(n,i,o,s,a,l){this.router=n,this.route=i,this.tabIndexAttribute=o,this.renderer=s,this.el=a,this.locationStrategy=l,this.href=null,this.commands=null,this.onChanges=new ue,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;let c=a.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area",this.isAnchorElement?this.subscription=n.events.subscribe(f=>{f instanceof wn&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",n)}ngOnChanges(n){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(n){n!=null?(this.commands=Array.isArray(n)?n:[n],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(n,i,o,s,a){let l=this.urlTree;if(l===null||this.isAnchorElement&&(n!==0||i||o||s||a||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(l,c),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let n=this.urlTree;this.href=n!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n)):null;let i=this.href===null?null:Wh(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",i)}applyAttributeValue(n,i){let o=this.renderer,s=this.el.nativeElement;i!==null?o.setAttribute(s,n,i):o.removeAttribute(s,n)}get urlTree(){return this.commands===null?null:this.router.createUrlTree(this.commands,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}};e.\u0275fac=function(i){return new(i||e)(C(mi),C(yt),hu("tabindex"),C(jt),C(ze),C(ri))},e.\u0275dir=se({type:e,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(i,o){i&1&&x("click",function(a){return o.onClick(a.button,a.ctrlKey,a.shiftKey,a.altKey,a.metaKey)}),i&2&&Ji("target",o.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[de.HasDecoratorInputTransform,"preserveFragment","preserveFragment",pr],skipLocationChange:[de.HasDecoratorInputTransform,"skipLocationChange","skipLocationChange",pr],replaceUrl:[de.HasDecoratorInputTransform,"replaceUrl","replaceUrl",pr],routerLink:"routerLink"},standalone:!0,features:[Ru,it]});let t=e;return t})(),Ja=(()=>{let e=class e{get isActive(){return this._isActive}constructor(n,i,o,s,a){this.router=n,this.element=i,this.renderer=o,this.cdr=s,this.link=a,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new De,this.routerEventsSubscription=n.events.subscribe(l=>{l instanceof wn&&this.update()})}ngAfterContentInit(){O(this.links.changes,O(null)).pipe(Pr()).subscribe(n=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let n=[...this.links.toArray(),this.link].filter(i=>!!i).map(i=>i.onChanges);this.linkInputChangesSubscription=ge(n).pipe(Pr()).subscribe(i=>{this._isActive!==this.isLinkActive(this.router)(i)&&this.update()})}set routerLinkActive(n){let i=Array.isArray(n)?n:n.split(" ");this.classes=i.filter(o=>!!o)}ngOnChanges(n){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let n=this.hasActiveLinks();this.classes.forEach(i=>{n?this.renderer.addClass(this.element.nativeElement,i):this.renderer.removeClass(this.element.nativeElement,i)}),n&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==n&&(this._isActive=n,this.cdr.markForCheck(),this.isActiveChange.emit(n))})}isLinkActive(n){let i=bI(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return o=>{let s=o.urlTree;return s?n.isActive(s,i):!1}}hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link&&n(this.link)||this.links.some(n)}};e.\u0275fac=function(i){return new(i||e)(C(mi),C(ze),C(jt),C(Jt),C(lt,8))},e.\u0275dir=se({type:e,selectors:[["","routerLinkActive",""]],contentQueries:function(i,o,s){if(i&1&&Bm(s,lt,5),i&2){let a;bt(a=Et())&&(o.links=a)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[it]});let t=e;return t})();function bI(t){return!!t.paths}var EI=new R("");function g0(t,...e){return Yr([{provide:zd,multi:!0,useValue:t},[],{provide:yt,useFactory:xI,deps:[mi]},{provide:pa,multi:!0,useFactory:II},e.map(r=>r.\u0275providers)])}function xI(t){return t.routerState.root}function II(){let t=S(Jr);return e=>{let r=t.get(ti);if(e!==r.components[0])return;let n=t.get(mi),i=t.get(MI);t.get(SI)===1&&n.initialNavigation(),t.get(TI,null,Y.Optional)?.setUpPreloading(),t.get(EI,null,Y.Optional)?.init(),n.resetRootComponentType(r.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var MI=new R("",{factory:()=>new ue}),SI=new R("",{providedIn:"root",factory:()=>1});var TI=new R("");function AI(t){return typeof t<"u"&&t!==null}function OI(t){return t!=null&&`${t}`!="false"}function NI(t){let e=new Date(t);if(!Number.isNaN(e.valueOf()))return e;let r=String(t).match(/\d+/g);if(r===null||r.length<=2)return e;{let[n,i,...o]=r.map(s=>parseInt(s,10));return new Date(Date.UTC(n,i-1,...o))}}var Eo=60,xo=Eo*60,gi=xo*24,v0=gi*7,y0=gi*30,_0=gi*365,kI=(()=>{let e=class e{constructor(){this.changes=new ue}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),PI=function(t){let e=Date.now(),r=Math.round(Math.abs(e-t)/1e3),n=t{let e=class e extends vi{format(n){let{suffix:i,value:o,unit:s}=PI(n);return this.parse(o,s,i)}parse(n,i,o){return n!==1&&(i+="s"),n+" "+i+" "+o}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();var yi=class{},C0=(()=>{let e=class e extends yi{tick(n){return O(0).pipe(Ll(()=>{let i=Date.now(),o=Math.round(Math.abs(i-n)/1e3),s=o{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();var el=(()=>{let e=class e{constructor(n,i,o,s){this.clock=s,this.live=!0,this.stateChanges=new ue,n&&(this.intlSubscription=n.changes.subscribe(()=>this.stateChanges.next())),this.stateChanges.subscribe(()=>{this.value=o.format(this.date),i.markForCheck()})}transform(n,...i){let o=NI(n).valueOf(),s;if(s=AI(i[0])?OI(i[0]):this.live,this.date===o&&this.live===s)return this.value;if(this.date=o,this.live=s,this.date)this.clockSubscription&&(this.clockSubscription.unsubscribe(),this.clockSubscription=void 0),this.clockSubscription=this.clock.tick(this.date).pipe(Ve(()=>this.live,this)).subscribe(()=>this.stateChanges.next()),this.stateChanges.next();else throw new SyntaxError(`Wrong parameter in TimeagoPipe. Expected a valid date, received: ${n}`);return this.value}ngOnDestroy(){this.intlSubscription&&(this.intlSubscription.unsubscribe(),this.intlSubscription=void 0),this.clockSubscription&&(this.clockSubscription.unsubscribe(),this.clockSubscription=void 0),this.stateChanges.complete()}};e.\u0275fac=function(i){return new(i||e)(C(kI,24),C(Jt,16),C(vi,16),C(yi,16))},e.\u0275pipe=ir({name:"timeago",type:e,pure:!1}),e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),_i=(()=>{let e=class e{static forRoot(n={}){return{ngModule:e,providers:[n.clock||{provide:yi,useClass:C0},n.intl||[],n.formatter||{provide:vi,useClass:w0}]}}static forChild(n={}){return{ngModule:e,providers:[n.clock||{provide:yi,useClass:C0},n.intl||[],n.formatter||{provide:vi,useClass:w0}]}}};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({});let t=e;return t})();var T0=(()=>{let e=class e{constructor(n,i){this._renderer=n,this._elementRef=i,this.onChange=o=>{},this.onTouched=()=>{}}setProperty(n,i){this._renderer.setProperty(this._elementRef.nativeElement,n,i)}registerOnTouched(n){this.onTouched=n}registerOnChange(n){this.onChange=n}setDisabledState(n){this.setProperty("disabled",n)}};e.\u0275fac=function(i){return new(i||e)(C(jt),C(ze))},e.\u0275dir=se({type:e});let t=e;return t})(),Zd=(()=>{let e=class e extends T0{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=se({type:e,features:[$e]});let t=e;return t})(),Di=new R(""),RI={provide:Di,useExisting:rt(()=>Qd),multi:!0},Qd=(()=>{let e=class e extends Zd{writeValue(n){this.setProperty("checked",n)}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=se({type:e,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(i,o){i&1&&x("change",function(a){return o.onChange(a.target.checked)})("blur",function(){return o.onTouched()})},features:[st([RI]),$e]});let t=e;return t})(),FI={provide:Di,useExisting:rt(()=>Mt),multi:!0};function LI(){let t=_n()?_n().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}var VI=new R(""),Mt=(()=>{let e=class e extends T0{constructor(n,i,o){super(n,i),this._compositionMode=o,this._composing=!1,this._compositionMode==null&&(this._compositionMode=!LI())}writeValue(n){let i=n??"";this.setProperty("value",i)}_handleInput(n){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(n)}_compositionStart(){this._composing=!0}_compositionEnd(n){this._composing=!1,this._compositionMode&&this.onChange(n)}};e.\u0275fac=function(i){return new(i||e)(C(jt),C(ze),C(VI,8))},e.\u0275dir=se({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,o){i&1&&x("input",function(a){return o._handleInput(a.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(a){return o._compositionEnd(a.target.value)})},features:[st([FI]),$e]});let t=e;return t})();function $n(t){return t==null||(typeof t=="string"||Array.isArray(t))&&t.length===0}function A0(t){return t!=null&&typeof t.length=="number"}var Un=new R(""),wr=new R(""),jI=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,ye=class{static min(e){return $I(e)}static max(e){return UI(e)}static required(e){return BI(e)}static requiredTrue(e){return HI(e)}static email(e){return qI(e)}static minLength(e){return zI(e)}static maxLength(e){return O0(e)}static pattern(e){return GI(e)}static nullValidator(e){return nl(e)}static compose(e){return L0(e)}static composeAsync(e){return V0(e)}};function $I(t){return e=>{if($n(e.value)||$n(t))return null;let r=parseFloat(e.value);return!isNaN(r)&&r{if($n(e.value)||$n(t))return null;let r=parseFloat(e.value);return!isNaN(r)&&r>t?{max:{max:t,actual:e.value}}:null}}function BI(t){return $n(t.value)?{required:!0}:null}function HI(t){return t.value===!0?null:{required:!0}}function qI(t){return $n(t.value)||jI.test(t.value)?null:{email:!0}}function zI(t){return e=>$n(e.value)||!A0(e.value)?null:e.value.lengthA0(e.value)&&e.value.length>t?{maxlength:{requiredLength:t,actualLength:e.value.length}}:null}function GI(t){if(!t)return nl;let e,r;return typeof t=="string"?(r="",t.charAt(0)!=="^"&&(r+="^"),r+=t,t.charAt(t.length-1)!=="$"&&(r+="$"),e=new RegExp(r)):(r=t.toString(),e=t),n=>{if($n(n.value))return null;let i=n.value;return e.test(i)?null:{pattern:{requiredPattern:r,actualValue:i}}}}function nl(t){return null}function N0(t){return t!=null}function k0(t){return fr(t)?ge(t):t}function P0(t){let e={};return t.forEach(r=>{e=r!=null?M(M({},e),r):e}),Object.keys(e).length===0?null:e}function R0(t,e){return e.map(r=>r(t))}function WI(t){return!t.validate}function F0(t){return t.map(e=>WI(e)?e:r=>e.validate(r))}function L0(t){if(!t)return null;let e=t.filter(N0);return e.length==0?null:function(r){return P0(R0(r,e))}}function Yd(t){return t!=null?L0(F0(t)):null}function V0(t){if(!t)return null;let e=t.filter(N0);return e.length==0?null:function(r){let n=R0(r,e).map(k0);return Nl(n).pipe(A(P0))}}function Kd(t){return t!=null?V0(F0(t)):null}function b0(t,e){return t===null?[e]:Array.isArray(t)?[...t,e]:[t,e]}function j0(t){return t._rawValidators}function $0(t){return t._rawAsyncValidators}function Wd(t){return t?Array.isArray(t)?t:[t]:[]}function rl(t,e){return Array.isArray(t)?t.includes(e):t===e}function E0(t,e){let r=Wd(e);return Wd(t).forEach(i=>{rl(r,i)||r.push(i)}),r}function x0(t,e){return Wd(e).filter(r=>!rl(t,r))}var il=class{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Yd(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Kd(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control&&this.control.reset(e)}hasError(e,r){return this.control?this.control.hasError(e,r):!1}getError(e,r){return this.control?this.control.getError(e,r):null}},Ke=class extends il{get formDirective(){return null}get path(){return null}},Cn=class extends il{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}},ol=class{constructor(e){this._cd=e}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}},ZI={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},mF=K(M({},ZI),{"[class.ng-submitted]":"isSubmitted"}),nn=(()=>{let e=class e extends ol{constructor(n){super(n)}};e.\u0275fac=function(i){return new(i||e)(C(Cn,2))},e.\u0275dir=se({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,o){i&2&&J("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},features:[$e]});let t=e;return t})(),bi=(()=>{let e=class e extends ol{constructor(n){super(n)}};e.\u0275fac=function(i){return new(i||e)(C(Ke,10))},e.\u0275dir=se({type:e,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,o){i&2&&J("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)("ng-submitted",o.isSubmitted)},features:[$e]});let t=e;return t})();var Io="VALID",tl="INVALID",wi="PENDING",Mo="DISABLED";function Jd(t){return(cl(t)?t.validators:t)||null}function QI(t){return Array.isArray(t)?Yd(t):t||null}function Xd(t,e){return(cl(e)?e.asyncValidators:t)||null}function YI(t){return Array.isArray(t)?Kd(t):t||null}function cl(t){return t!=null&&!Array.isArray(t)&&typeof t=="object"}function U0(t,e,r){let n=t.controls;if(!(e?Object.keys(n):n).length)throw new N(1e3,"");if(!n[r])throw new N(1001,"")}function B0(t,e,r){t._forEachChild((n,i)=>{if(r[i]===void 0)throw new N(1002,"")})}var To=class{constructor(e,r){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(e),this._assignAsyncValidators(r)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get valid(){return this.status===Io}get invalid(){return this.status===tl}get pending(){return this.status==wi}get disabled(){return this.status===Mo}get enabled(){return this.status!==Mo}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(E0(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(E0(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(x0(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(x0(e,this._rawAsyncValidators))}hasValidator(e){return rl(this._rawValidators,e)}hasAsyncValidator(e){return rl(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){this.touched=!0,this._parent&&!e.onlySelf&&this._parent.markAsTouched(e)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(e=>e.markAllAsTouched())}markAsUntouched(e={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}markAsDirty(e={}){this.pristine=!1,this._parent&&!e.onlySelf&&this._parent.markAsDirty(e)}markAsPristine(e={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(r=>{r.markAsPristine({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)}markAsPending(e={}){this.status=wi,e.emitEvent!==!1&&this.statusChanges.emit(this.status),this._parent&&!e.onlySelf&&this._parent.markAsPending(e)}disable(e={}){let r=this._parentMarkedDirty(e.onlySelf);this.status=Mo,this.errors=null,this._forEachChild(n=>{n.disable(K(M({},e),{onlySelf:!0}))}),this._updateValue(),e.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(K(M({},e),{skipPristineCheck:r})),this._onDisabledChange.forEach(n=>n(!0))}enable(e={}){let r=this._parentMarkedDirty(e.onlySelf);this.status=Io,this._forEachChild(n=>{n.enable(K(M({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(K(M({},e),{skipPristineCheck:r})),this._onDisabledChange.forEach(n=>n(!1))}_updateAncestors(e){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Io||this.status===wi)&&this._runAsyncValidator(e.emitEvent)),e.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(e)}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(r=>r._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Mo:Io}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e){if(this.asyncValidator){this.status=wi,this._hasOwnPendingAsyncValidator=!0;let r=k0(this.asyncValidator(this));this._asyncValidationSubscription=r.subscribe(n=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(n,{emitEvent:e})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(e,r={}){this.errors=e,this._updateControlsErrors(r.emitEvent!==!1)}get(e){let r=e;return r==null||(Array.isArray(r)||(r=r.split(".")),r.length===0)?null:r.reduce((n,i)=>n&&n._find(i),this)}getError(e,r){let n=r?this.get(r):this;return n&&n.errors?n.errors[e]:null}hasError(e,r){return!!this.getError(e,r)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(e)}_initObservables(){this.valueChanges=new De,this.statusChanges=new De}_calculateStatus(){return this._allControlsDisabled()?Mo:this.errors?tl:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(wi)?wi:this._anyControlsHaveStatus(tl)?tl:Io}_anyControlsHaveStatus(e){return this._anyControls(r=>r.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e={}){this.pristine=!this._anyControlsDirty(),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)}_updateTouched(e={}){this.touched=this._anyControlsTouched(),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){cl(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){let r=this._parent&&this._parent.dirty;return!e&&!!r&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=QI(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=YI(this._rawAsyncValidators)}},tn=class extends To{constructor(e,r,n){super(Jd(r),Xd(n,r)),this.controls=e,this._initObservables(),this._setUpdateStrategy(r),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(e,r){return this.controls[e]?this.controls[e]:(this.controls[e]=r,r.setParent(this),r._registerOnCollectionChange(this._onCollectionChange),r)}addControl(e,r,n={}){this.registerControl(e,r),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}removeControl(e,r={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}setControl(e,r,n={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],r&&this.registerControl(e,r),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}contains(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled}setValue(e,r={}){B0(this,!0,e),Object.keys(e).forEach(n=>{U0(this,!0,n),this.controls[n].setValue(e[n],{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r)}patchValue(e,r={}){e!=null&&(Object.keys(e).forEach(n=>{let i=this.controls[n];i&&i.patchValue(e[n],{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r))}reset(e={},r={}){this._forEachChild((n,i)=>{n.reset(e?e[i]:null,{onlySelf:!0,emitEvent:r.emitEvent})}),this._updatePristine(r),this._updateTouched(r),this.updateValueAndValidity(r)}getRawValue(){return this._reduceChildren({},(e,r,n)=>(e[n]=r.getRawValue(),e))}_syncPendingControls(){let e=this._reduceChildren(!1,(r,n)=>n._syncPendingControls()?!0:r);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){Object.keys(this.controls).forEach(r=>{let n=this.controls[r];n&&e(n,r)})}_setUpControls(){this._forEachChild(e=>{e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(e){for(let[r,n]of Object.entries(this.controls))if(this.contains(r)&&e(n))return!0;return!1}_reduceValue(){let e={};return this._reduceChildren(e,(r,n,i)=>((n.enabled||this.disabled)&&(r[i]=n.value),r))}_reduceChildren(e,r){let n=e;return this._forEachChild((i,o)=>{n=r(n,i,o)}),n}_allControlsDisabled(){for(let e of Object.keys(this.controls))if(this.controls[e].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(e){return this.controls.hasOwnProperty(e)?this.controls[e]:null}};var Ei=new R("CallSetDisabledState",{providedIn:"root",factory:()=>ul}),ul="always";function dl(t,e){return[...e.path,t]}function Ao(t,e,r=ul){ef(t,e),e.valueAccessor.writeValue(t.value),(t.disabled||r==="always")&&e.valueAccessor.setDisabledState?.(t.disabled),JI(t,e),eM(t,e),XI(t,e),KI(t,e)}function sl(t,e,r=!0){let n=()=>{};e.valueAccessor&&(e.valueAccessor.registerOnChange(n),e.valueAccessor.registerOnTouched(n)),ll(t,e),t&&(e._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function al(t,e){t.forEach(r=>{r.registerOnValidatorChange&&r.registerOnValidatorChange(e)})}function KI(t,e){if(e.valueAccessor.setDisabledState){let r=n=>{e.valueAccessor.setDisabledState(n)};t.registerOnDisabledChange(r),e._registerOnDestroy(()=>{t._unregisterOnDisabledChange(r)})}}function ef(t,e){let r=j0(t);e.validator!==null?t.setValidators(b0(r,e.validator)):typeof r=="function"&&t.setValidators([r]);let n=$0(t);e.asyncValidator!==null?t.setAsyncValidators(b0(n,e.asyncValidator)):typeof n=="function"&&t.setAsyncValidators([n]);let i=()=>t.updateValueAndValidity();al(e._rawValidators,i),al(e._rawAsyncValidators,i)}function ll(t,e){let r=!1;if(t!==null){if(e.validator!==null){let i=j0(t);if(Array.isArray(i)&&i.length>0){let o=i.filter(s=>s!==e.validator);o.length!==i.length&&(r=!0,t.setValidators(o))}}if(e.asyncValidator!==null){let i=$0(t);if(Array.isArray(i)&&i.length>0){let o=i.filter(s=>s!==e.asyncValidator);o.length!==i.length&&(r=!0,t.setAsyncValidators(o))}}}let n=()=>{};return al(e._rawValidators,n),al(e._rawAsyncValidators,n),r}function JI(t,e){e.valueAccessor.registerOnChange(r=>{t._pendingValue=r,t._pendingChange=!0,t._pendingDirty=!0,t.updateOn==="change"&&H0(t,e)})}function XI(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,t.updateOn==="blur"&&t._pendingChange&&H0(t,e),t.updateOn!=="submit"&&t.markAsTouched()})}function H0(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function eM(t,e){let r=(n,i)=>{e.valueAccessor.writeValue(n),i&&e.viewToModelUpdate(n)};t.registerOnChange(r),e._registerOnDestroy(()=>{t._unregisterOnChange(r)})}function q0(t,e){t==null,ef(t,e)}function tM(t,e){return ll(t,e)}function tf(t,e){if(!t.hasOwnProperty("model"))return!1;let r=t.model;return r.isFirstChange()?!0:!Object.is(e,r.currentValue)}function nM(t){return Object.getPrototypeOf(t.constructor)===Zd}function z0(t,e){t._syncPendingControls(),e.forEach(r=>{let n=r.control;n.updateOn==="submit"&&n._pendingChange&&(r.viewToModelUpdate(n._pendingValue),n._pendingChange=!1)})}function nf(t,e){if(!e)return null;Array.isArray(e);let r,n,i;return e.forEach(o=>{o.constructor===Mt?r=o:nM(o)?n=o:i=o}),i||n||r||null}function rM(t,e){let r=t.indexOf(e);r>-1&&t.splice(r,1)}var iM={provide:Ke,useExisting:rt(()=>rf)},So=Promise.resolve(),rf=(()=>{let e=class e extends Ke{constructor(n,i,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._directives=new Set,this.ngSubmit=new De,this.form=new tn({},Yd(n),Kd(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(n){So.then(()=>{let i=this._findContainer(n.path);n.control=i.registerControl(n.name,n.control),Ao(n.control,n,this.callSetDisabledState),n.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(n)})}getControl(n){return this.form.get(n.path)}removeControl(n){So.then(()=>{let i=this._findContainer(n.path);i&&i.removeControl(n.name),this._directives.delete(n)})}addFormGroup(n){So.then(()=>{let i=this._findContainer(n.path),o=new tn({});q0(o,n),i.registerControl(n.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(n){So.then(()=>{let i=this._findContainer(n.path);i&&i.removeControl(n.name)})}getFormGroup(n){return this.form.get(n.path)}updateModel(n,i){So.then(()=>{this.form.get(n.path).setValue(i)})}setValue(n){this.control.setValue(n)}onSubmit(n){return this.submitted=!0,z0(this.form,this._directives),this.ngSubmit.emit(n),n?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(n=void 0){this.form.reset(n),this.submitted=!1}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(n){return n.pop(),n.length?this.form.get(n):this.form}};e.\u0275fac=function(i){return new(i||e)(C(Un,10),C(wr,10),C(Ei,8))},e.\u0275dir=se({type:e,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,o){i&1&&x("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{options:[de.None,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[st([iM]),$e]});let t=e;return t})();function I0(t,e){let r=t.indexOf(e);r>-1&&t.splice(r,1)}function M0(t){return typeof t=="object"&&t!==null&&Object.keys(t).length===2&&"value"in t&&"disabled"in t}var Ce=class extends To{constructor(e=null,r,n){super(Jd(r),Xd(n,r)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(e),this._setUpdateStrategy(r),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),cl(r)&&(r.nonNullable||r.initialValueIsDefault)&&(M0(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,r={}){this.value=this._pendingValue=e,this._onChange.length&&r.emitModelToViewChange!==!1&&this._onChange.forEach(n=>n(this.value,r.emitViewToModelChange!==!1)),this.updateValueAndValidity(r)}patchValue(e,r={}){this.setValue(e,r)}reset(e=this.defaultValue,r={}){this._applyFormState(e),this.markAsPristine(r),this.markAsUntouched(r),this.setValue(this.value,r),this._pendingChange=!1}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){I0(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){I0(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){M0(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var oM=t=>t instanceof Ce,sM=(()=>{let e=class e extends Ke{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return dl(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=se({type:e,features:[$e]});let t=e;return t})();var aM={provide:Cn,useExisting:rt(()=>Cr)},S0=Promise.resolve(),Cr=(()=>{let e=class e extends Cn{constructor(n,i,o,s,a,l){super(),this._changeDetectorRef=a,this.callSetDisabledState=l,this.control=new Ce,this._registered=!1,this.name="",this.update=new De,this._parent=n,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=nf(this,s)}ngOnChanges(n){if(this._checkForErrors(),!this._registered||"name"in n){if(this._registered&&(this._checkName(),this.formDirective)){let i=n.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in n&&this._updateDisabled(n),tf(n,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){Ao(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(n){S0.then(()=>{this.control.setValue(n,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(n){let i=n.isDisabled.currentValue,o=i!==0&&pr(i);S0.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(n){return this._parent?dl(n,this._parent):[n]}};e.\u0275fac=function(i){return new(i||e)(C(Ke,9),C(Un,10),C(wr,10),C(Di,10),C(Jt,8),C(Ei,8))},e.\u0275dir=se({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[de.None,"disabled","isDisabled"],model:[de.None,"ngModel","model"],options:[de.None,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[st([aM]),$e,it]});let t=e;return t})(),xi=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275dir=se({type:e,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]});let t=e;return t})(),lM={provide:Di,useExisting:rt(()=>of),multi:!0},of=(()=>{let e=class e extends Zd{writeValue(n){let i=n??"";this.setProperty("value",i)}registerOnChange(n){this.onChange=i=>{n(i==""?null:parseFloat(i))}}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=se({type:e,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,o){i&1&&x("input",function(a){return o.onChange(a.target.value)})("blur",function(){return o.onTouched()})},features:[st([lM]),$e]});let t=e;return t})();var sf=new R(""),cM={provide:Cn,useExisting:rt(()=>af)},af=(()=>{let e=class e extends Cn{set isDisabled(n){}constructor(n,i,o,s,a){super(),this._ngModelWarningConfig=s,this.callSetDisabledState=a,this.update=new De,this._ngModelWarningSent=!1,this._setValidators(n),this._setAsyncValidators(i),this.valueAccessor=nf(this,o)}ngOnChanges(n){if(this._isControlChanged(n)){let i=n.form.previousValue;i&&sl(i,this,!1),Ao(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}tf(n,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&sl(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_isControlChanged(n){return n.hasOwnProperty("form")}};e._ngModelWarningSentOnce=!1,e.\u0275fac=function(i){return new(i||e)(C(Un,10),C(wr,10),C(Di,10),C(sf,8),C(Ei,8))},e.\u0275dir=se({type:e,selectors:[["","formControl",""]],inputs:{form:[de.None,"formControl","form"],isDisabled:[de.None,"disabled","isDisabled"],model:[de.None,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[st([cM]),$e,it]});let t=e;return t})(),uM={provide:Ke,useExisting:rt(()=>Ii)},Ii=(()=>{let e=class e extends Ke{constructor(n,i,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new De,this._setValidators(n),this._setAsyncValidators(i)}ngOnChanges(n){this._checkFormPresent(),n.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(ll(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(n){let i=this.form.get(n.path);return Ao(i,n,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(n),i}getControl(n){return this.form.get(n.path)}removeControl(n){sl(n.control||null,n,!1),rM(this.directives,n)}addFormGroup(n){this._setUpFormContainer(n)}removeFormGroup(n){this._cleanUpFormContainer(n)}getFormGroup(n){return this.form.get(n.path)}addFormArray(n){this._setUpFormContainer(n)}removeFormArray(n){this._cleanUpFormContainer(n)}getFormArray(n){return this.form.get(n.path)}updateModel(n,i){this.form.get(n.path).setValue(i)}onSubmit(n){return this.submitted=!0,z0(this.form,this.directives),this.ngSubmit.emit(n),n?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(n=void 0){this.form.reset(n),this.submitted=!1}_updateDomValue(){this.directives.forEach(n=>{let i=n.control,o=this.form.get(n.path);i!==o&&(sl(i||null,n),oM(o)&&(Ao(o,n,this.callSetDisabledState),n.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(n){let i=this.form.get(n.path);q0(i,n),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(n){if(this.form){let i=this.form.get(n.path);i&&tM(i,n)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){ef(this.form,this),this._oldForm&&ll(this._oldForm,this)}_checkFormPresent(){this.form}};e.\u0275fac=function(i){return new(i||e)(C(Un,10),C(wr,10),C(Ei,8))},e.\u0275dir=se({type:e,selectors:[["","formGroup",""]],hostBindings:function(i,o){i&1&&x("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{form:[de.None,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[st([uM]),$e,it]});let t=e;return t})(),dM={provide:Ke,useExisting:rt(()=>Mi)},Mi=(()=>{let e=class e extends sM{constructor(n,i,o){super(),this.name=null,this._parent=n,this._setValidators(i),this._setAsyncValidators(o)}_checkParentType(){G0(this._parent)}};e.\u0275fac=function(i){return new(i||e)(C(Ke,13),C(Un,10),C(wr,10))},e.\u0275dir=se({type:e,selectors:[["","formGroupName",""]],inputs:{name:[de.None,"formGroupName","name"]},features:[st([dM]),$e]});let t=e;return t})(),fM={provide:Ke,useExisting:rt(()=>Si)},Si=(()=>{let e=class e extends Ke{constructor(n,i,o){super(),this.name=null,this._parent=n,this._setValidators(i),this._setAsyncValidators(o)}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return dl(this.name==null?this.name:this.name.toString(),this._parent)}_checkParentType(){G0(this._parent)}};e.\u0275fac=function(i){return new(i||e)(C(Ke,13),C(Un,10),C(wr,10))},e.\u0275dir=se({type:e,selectors:[["","formArrayName",""]],inputs:{name:[de.None,"formArrayName","name"]},features:[st([fM]),$e]});let t=e;return t})();function G0(t){return!(t instanceof Mi)&&!(t instanceof Ii)&&!(t instanceof Si)}var pM={provide:Cn,useExisting:rt(()=>Oo)},Oo=(()=>{let e=class e extends Cn{set isDisabled(n){}constructor(n,i,o,s,a){super(),this._ngModelWarningConfig=a,this._added=!1,this.name=null,this.update=new De,this._ngModelWarningSent=!1,this._parent=n,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=nf(this,s)}ngOnChanges(n){this._added||this._setUpControl(),tf(n,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}get path(){return dl(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this._added=!0}};e._ngModelWarningSentOnce=!1,e.\u0275fac=function(i){return new(i||e)(C(Ke,13),C(Un,10),C(wr,10),C(Di,10),C(sf,8))},e.\u0275dir=se({type:e,selectors:[["","formControlName",""]],inputs:{name:[de.None,"formControlName","name"],isDisabled:[de.None,"disabled","isDisabled"],model:[de.None,"ngModel","model"]},outputs:{update:"ngModelChange"},features:[st([pM]),$e,it]});let t=e;return t})();function hM(t){return typeof t=="number"?t:parseInt(t,10)}var mM=(()=>{let e=class e{constructor(){this._validator=nl}ngOnChanges(n){if(this.inputName in n){let i=this.normalizeInput(n[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):nl,this._onChange&&this._onChange()}}validate(n){return this._validator(n)}registerOnValidatorChange(n){this._onChange=n}enabled(n){return n!=null}};e.\u0275fac=function(i){return new(i||e)},e.\u0275dir=se({type:e,features:[it]});let t=e;return t})();var gM={provide:Un,useExisting:rt(()=>lf),multi:!0},lf=(()=>{let e=class e extends mM{constructor(){super(...arguments),this.inputName="maxlength",this.normalizeInput=n=>hM(n),this.createValidator=n=>O0(n)}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=se({type:e,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,o){i&2&&Ji("maxlength",o._enabled?o.maxlength:null)},inputs:{maxlength:"maxlength"},features:[st([gM]),$e]});let t=e;return t})();var W0=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({});let t=e;return t})(),Ci=class extends To{constructor(e,r,n){super(Jd(r),Xd(n,r)),this.controls=e,this._initObservables(),this._setUpdateStrategy(r),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(e){return this.controls[this._adjustIndex(e)]}push(e,r={}){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}insert(e,r,n={}){this.controls.splice(e,0,r),this._registerControl(r),this.updateValueAndValidity({emitEvent:n.emitEvent})}removeAt(e,r={}){let n=this._adjustIndex(e);n<0&&(n=0),this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),this.controls.splice(n,1),this.updateValueAndValidity({emitEvent:r.emitEvent})}setControl(e,r,n={}){let i=this._adjustIndex(e);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),r&&(this.controls.splice(i,0,r),this._registerControl(r)),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(e,r={}){B0(this,!1,e),e.forEach((n,i)=>{U0(this,!1,i),this.at(i).setValue(n,{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r)}patchValue(e,r={}){e!=null&&(e.forEach((n,i)=>{this.at(i)&&this.at(i).patchValue(n,{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r))}reset(e=[],r={}){this._forEachChild((n,i)=>{n.reset(e[i],{onlySelf:!0,emitEvent:r.emitEvent})}),this._updatePristine(r),this._updateTouched(r),this.updateValueAndValidity(r)}getRawValue(){return this.controls.map(e=>e.getRawValue())}clear(e={}){this.controls.length<1||(this._forEachChild(r=>r._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:e.emitEvent}))}_adjustIndex(e){return e<0?e+this.length:e}_syncPendingControls(){let e=this.controls.reduce((r,n)=>n._syncPendingControls()?!0:r,!1);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){this.controls.forEach((r,n)=>{e(r,n)})}_updateValue(){this.value=this.controls.filter(e=>e.enabled||this.disabled).map(e=>e.value)}_anyControls(e){return this.controls.some(r=>r.enabled&&e(r))}_setUpControls(){this._forEachChild(e=>this._registerControl(e))}_allControlsDisabled(){for(let e of this.controls)if(e.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(e){e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)}_find(e){return this.at(e)??null}};var St=(()=>{let e=class e{static withConfig(n){return{ngModule:e,providers:[{provide:Ei,useValue:n.callSetDisabledState??ul}]}}};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({imports:[W0]});let t=e;return t})(),Ti=(()=>{let e=class e{static withConfig(n){return{ngModule:e,providers:[{provide:sf,useValue:n.warnOnNgModelWithFormControl??"always"},{provide:Ei,useValue:n.callSetDisabledState??ul}]}}};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({imports:[W0]});let t=e;return t})();var Te={production:!1,apiUrl:"/api/v1/",connections:"connections/",movies:"movies/",series:"series/",logs:"logs/",settings:"settings/",search:"search/",tasks:"tasks/"};function Dr(t,e){return K(M({},t),{is_movie:e,added_at:new Rn("en-US").transform(t.added_at,"medium"),updated_at:new Rn("en-US").transform(t.updated_at,"medium"),downloaded_at:new Rn("en-US").transform(t.downloaded_at,"medium")})}function ko(t){let e=[{type:"folder",name:"None",size:"",files:[],modified:new Date}];return t.files&&(e=t.files.map(r=>yM(r)?vM(r):ko(r))),K(M({},t),{isExpanded:!1,modified:new Rn("en-US").transform(t.created,"medium"),files:e})}function vM(t){return K(M({},t),{modified:new Rn("en-US").transform(t.created,"medium")})}function yM(t){return t.type==="file"}var Ai=(()=>{let e=class e{constructor(n){this.http=n,this.moviesUrl=Te.apiUrl+Te.movies}getRecentMedia(){return this.http.get(`${this.moviesUrl}?limit=50`).pipe(A(n=>n.map(i=>Dr(i,!0))))}getRecentlyDownloaded(){return this.http.get(`${this.moviesUrl}downloaded?limit=50`).pipe(A(n=>n.map(i=>Dr(i,i.is_movie))))}getMediaById(n){return this.http.get(`${this.moviesUrl}${n}`).pipe(A(i=>Dr(i,!0)))}downloadMediaTrailer(n,i){return this.http.post(`${this.moviesUrl}${n}/download?yt_id=${i}`,{})}monitorMedia(n,i){return this.http.post(`${this.moviesUrl}${n}/monitor?monitor=${i}`,{})}deleteMediaTrailer(n){return this.http.delete(`${this.moviesUrl}${n}/trailer`)}getMediaFiles(n){return this.http.get(`${this.moviesUrl}${n}/files`).pipe(A(i=>typeof i=="string"?i:ko(i)),He(i=>(console.error("Error fetching media files:",i),O(`Error: ${i.message}`))))}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var _M=()=>["/settings","connections"],wM=(t,e)=>[t,e];function CM(t,e){t&1&&(u(0,"div",5),w(1,"div",6)(2,"div",6)(3,"div",6)(4,"div",6),d())}function DM(t,e){t&1&&(u(0,"div",10)(1,"div",11),p(2," Click me! "),d()()),t&2&&(m(),_("routerLink",ei(1,_M)))}function bM(t,e){t&1&&(ft(0),B(),u(1,"svg",16),w(2,"path",17),d(),pt())}function EM(t,e){if(t&1&&(B(),u(0,"svg",18),w(1,"path",19),d()),t&2){let r=v().$implicit;J("success",r.trailer_exists)}}function xM(t,e){t&1&&(ft(0),B(),u(1,"svg",20),w(2,"path",21),d(),pt())}function IM(t,e){t&1&&(B(),u(0,"svg",22),w(1,"path",23),d())}function MM(t,e){if(t&1&&(u(0,"div",12),w(1,"img",13),u(2,"h5",14),p(3),d(),E(4,bM,3,0,"ng-container",15)(5,EM,2,2,"ng-template",null,1,he)(7,xM,3,0,"ng-container",15)(8,IM,2,0,"ng-template",null,2,he),d()),t&2){let r=e.$implicit,n=fe(6),i=fe(9);_("routerLink",da(8,wM,r.is_movie?"/movies":"/series",r.id)),m(),Qe("src",r.poster_path||"assets/poster-sm.png",ot),Qe("alt",r.title),m(2),V(r.title),m(),_("ngIf",r.monitor)("ngIfElse",n),m(3),_("ngIf",r.is_movie)("ngIfElse",i)}}function SM(t,e){if(t&1&&(E(0,DM,3,2,"div",7),u(1,"div",8),E(2,MM,10,11,"div",9),d()),t&2){let r=v();_("ngIf",r.media_list.length===0),m(2),_("ngForOf",r.media_list)}}var Z0=(()=>{let e=class e{constructor(n){this.movieService=n,this.media_list=[],this.isLoading=!0}ngOnInit(){this.isLoading=!0,this.movieService.getRecentlyDownloaded().subscribe(n=>{this.media_list=[],this.isLoading=!1,n.forEach((i,o)=>{setTimeout(()=>{this.media_list.push(i)},o*20)})})}};e.\u0275fac=function(i){return new(i||e)(C(Ai))},e.\u0275cmp=ee({type:e,selectors:[["app-home"]],standalone:!0,features:[te],decls:4,vars:2,consts:[["mediaLoaded",""],["trailerExistsIcon",""],["seriesIcon",""],[1,"media-container"],["class","loading-wave center",4,"ngIf","ngIfElse"],[1,"loading-wave","center"],[1,"loading-bar"],["class","center",4,"ngIf"],[1,"media-row"],["class","media-card",3,"routerLink",4,"ngFor","ngForOf"],[1,"center"],[1,"all-empty-card",3,"routerLink"],[1,"media-card",3,"routerLink"],[3,"src","alt"],[1,"card-title"],[4,"ngIf","ngIfElse"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Monitored",1,"monitored-icon"],["d","M713-600 600-713l56-57 57 57 141-142 57 57-198 198ZM200-120v-640q0-33 23.5-56.5T280-840h280q-20 30-30 57.5T520-720q0 72 45.5 127T680-524q23 3 40 3t40-3v404L480-240 200-120Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Trailer Exists",1,"downloaded-icon"],["d","M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q65 0 123 19t107 53l-58 59q-38-24-81-37.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160q133 0 226.5-93.5T800-480q0-18-2-36t-6-35l65-65q11 32 17 66t6 70q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm-56-216L254-466l56-56 114 114 400-401 56 56-456 457Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"movie-icon"],["d","m160-800 80 160h120l-80-160h80l80 160h120l-80-160h80l80 160h120l-80-160h120q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800Zm0 240v320h640v-320H160Zm0 0v320-320Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"series-icon"],["d","M320-120v-80H160q-33 0-56.5-23.5T80-280v-480q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v480q0 33-23.5 56.5T800-200H640v80H320ZM160-280h640v-480H160v480Zm0 0v-480 480Z"]],template:function(i,o){if(i&1&&(u(0,"div",3),E(1,CM,5,0,"div",4)(2,SM,3,2,"ng-template",null,0,he),d()),i&2){let s=fe(3);m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[St,Se,we,lt],styles:[".media-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto}.media-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;padding:1rem}@media (width < 900px){.media-row[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem;padding:.5rem}}.media-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;transition:all .4s;border-radius:10px;box-shadow:0 0 10px 5px #000000b4;cursor:pointer;position:relative}.media-card[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;border-radius:10px}.media-card[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;top:5px;height:24px;width:24px}.media-card[_ngcontent-%COMP%] .monitored-icon[_ngcontent-%COMP%], .media-card[_ngcontent-%COMP%] .downloaded-icon[_ngcontent-%COMP%]{fill:var(--color-info);right:5px}.media-card[_ngcontent-%COMP%] .movie-icon[_ngcontent-%COMP%], .media-card[_ngcontent-%COMP%] .series-icon[_ngcontent-%COMP%]{fill:var(--color-primary);left:5px;bottom:5px}.media-card[_ngcontent-%COMP%] .success[_ngcontent-%COMP%]{fill:var(--color-success)}.media-card[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{display:none}.media-card[_ngcontent-%COMP%]:hover{border-radius:15px;box-shadow:0 0 10px 5px #000000b4}.media-card[_ngcontent-%COMP%]:hover img[_ngcontent-%COMP%]{border-radius:15px;filter:blur(2px);-webkit-filter:blur(2px)}.media-card[_ngcontent-%COMP%]:hover h5[_ngcontent-%COMP%]{position:absolute;inset:0%;display:flex;justify-content:center;align-items:center;width:100%;text-align:center;overflow:hidden;cursor:pointer;font-size:1.5rem;font-weight:900;color:var(--color-primary)}"]});let t=e;return t})();var Q0=(()=>{let e=class e{constructor(n){this.http=n,this.logsUrl=Te.apiUrl+Te.logs}getLogs(){return this.http.get(this.logsUrl)}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function AM(t,e){t&1&&(u(0,"div",4),w(1,"div",5)(2,"div",5)(3,"div",5)(4,"div",5),d())}function OM(t,e){if(t&1&&(u(0,"div",8)(1,"p"),p(2),d()()),t&2){let r=e.$implicit;m(2),V(r)}}function NM(t,e){if(t&1&&(u(0,"div",6),E(1,OM,3,1,"div",7),d()),t&2){let r=v();m(),_("ngForOf",r.all_logs)}}var Y0=(()=>{let e=class e{constructor(n){this.logsService=n,this.title="Logs",this.isLoading=!0,this.all_logs=[]}ngOnInit(){this.isLoading=!0,this.logsService.getLogs().subscribe(n=>{this.all_logs=n,this.isLoading=!1})}};e.\u0275fac=function(i){return new(i||e)(C(Q0))},e.\u0275cmp=ee({type:e,selectors:[["app-logs"]],standalone:!0,features:[te],decls:6,vars:3,consts:[["logsLoaded",""],[1,"logs-container"],[1,"text-center"],["class","loading-wave center",4,"ngIf","ngIfElse"],[1,"loading-wave","center"],[1,"loading-bar"],[1,"logs-table"],["class","logs-row",4,"ngFor","ngForOf"],[1,"logs-row"]],template:function(i,o){if(i&1&&(u(0,"div",1)(1,"h1",2),p(2),d(),E(3,AM,5,0,"div",3)(4,NM,2,1,"ng-template",null,0,he),d()),i&2){let s=fe(5);m(2),V(o.title),m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[Se,we],styles:[".logs-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:1rem}@media (width < 765px){.logs-container[_ngcontent-%COMP%]{padding:.5rem}}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto}.logs-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:10px;border-bottom:1px solid #e0e0e0}"]});let t=e;return t})();var K0=(()=>{let e=class e{transform(n){let i=Math.floor(n/60),o=Math.floor(n%60);return i===0?o+"m":o===0?i+"h":i+"h "+o+"m"}};e.\u0275fac=function(i){return new(i||e)},e.\u0275pipe=ir({name:"durationConvert",type:e,pure:!0,standalone:!0});let t=e;return t})();var fl=(()=>{let e=class e{constructor(n){this.http=n,this.seriesUrl=Te.apiUrl+Te.series}getRecentMedia(){return this.http.get(`${this.seriesUrl}?limit=50`).pipe(A(n=>n.map(i=>Dr(i,!1))))}getMediaById(n){return this.http.get(`${this.seriesUrl}${n}`).pipe(A(i=>Dr(i,!1)))}downloadMediaTrailer(n,i){return this.http.post(`${this.seriesUrl}${n}/download?yt_id=${i}`,{})}monitorMedia(n,i){return this.http.post(`${this.seriesUrl}${n}/monitor?monitor=${i}`,{})}deleteMediaTrailer(n){return this.http.delete(`${this.seriesUrl}${n}/trailer`)}getMediaFiles(n){return this.http.get(`${this.seriesUrl}${n}/files`).pipe(A(i=>ko(i)))}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var kM={url:"",deserializer:t=>JSON.parse(t.data),serializer:t=>JSON.stringify(t)},PM="WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }",pl=class t extends Ar{constructor(e,r){if(super(),this._socket=null,e instanceof Z)this.destination=r,this.source=e;else{let n=this._config=Object.assign({},kM);if(this._output=new ue,typeof e=="string")n.url=e;else for(let i in e)e.hasOwnProperty(i)&&(n[i]=e[i]);if(!n.WebSocketCtor&&WebSocket)n.WebSocketCtor=WebSocket;else if(!n.WebSocketCtor)throw new Error("no WebSocket constructor can be found");this.destination=new Or}}lift(e){let r=new t(this._config,this.destination);return r.operator=e,r.source=this,r}_resetState(){this._socket=null,this.source||(this.destination=new Or),this._output=new ue}multiplex(e,r,n){let i=this;return new Z(o=>{try{i.next(e())}catch(a){o.error(a)}let s=i.subscribe({next:a=>{try{n(a)&&o.next(a)}catch(l){o.error(l)}},error:a=>o.error(a),complete:()=>o.complete()});return()=>{try{i.next(r())}catch(a){o.error(a)}s.unsubscribe()}})}_connectSocket(){let{WebSocketCtor:e,protocol:r,url:n,binaryType:i}=this._config,o=this._output,s=null;try{s=r?new e(n,r):new e(n),this._socket=s,i&&(this._socket.binaryType=i)}catch(l){o.error(l);return}let a=new ve(()=>{this._socket=null,s&&s.readyState===1&&s.close()});s.onopen=l=>{let{_socket:c}=this;if(!c){s.close(),this._resetState();return}let{openObserver:f}=this._config;f&&f.next(l);let h=this.destination;this.destination=on.create(g=>{if(s.readyState===1)try{let{serializer:y}=this._config;s.send(y(g))}catch(y){this.destination.error(y)}},g=>{let{closingObserver:y}=this._config;y&&y.next(void 0),g&&g.code?s.close(g.code,g.reason):o.error(new TypeError(PM)),this._resetState()},()=>{let{closingObserver:g}=this._config;g&&g.next(void 0),s.close(),this._resetState()}),h&&h instanceof Or&&a.add(h.subscribe(this.destination))},s.onerror=l=>{this._resetState(),o.error(l)},s.onclose=l=>{s===this._socket&&this._resetState();let{closeObserver:c}=this._config;c&&c.next(l),l.wasClean?o.complete():o.error(l)},s.onmessage=l=>{try{let{deserializer:c}=this._config;o.next(c(l))}catch(c){o.error(c)}}}_subscribe(e){let{source:r}=this;return r?r.subscribe(e):(this._socket||this._connectSocket(),this._output.subscribe(e),e.add(()=>{let{_socket:n}=this;this._output.observers.length===0&&(n&&(n.readyState===1||n.readyState===0)&&n.close(),this._resetState())}),e)}unsubscribe(){let{_socket:e}=this;e&&(e.readyState===1||e.readyState===0)&&e.close(),this._resetState(),super.unsubscribe()}};function uf(t){return new pl(t)}var Oi=(()=>{let e=class e{constructor(){this.toastMessage=new ue}connect(){if(!this.socket$||this.socket$.closed){let n=Math.floor(Math.random()*1e6),i=window.location.protocol==="https:"?"wss:":"ws:",o=window.location.hostname,s=window.location.port?`:${window.location.port}`:"",a=`${i}//${o}${s}/ws/${n}`;this.socket$=uf(a)}return this.socket$.asObservable()}showToast(n,i="Success"){this.toastMessage.next({message:n,type:i})}close(){this.socket$.complete()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var RM=["deleteDialog"],X0=t=>({folder:t});function FM(t,e){t&1&&(u(0,"div",16),w(1,"div",17)(2,"div",17)(3,"div",17)(4,"div",17),d())}function LM(t,e){t&1&&(B(),u(0,"svg",51),w(1,"path",52),d())}function VM(t,e){if(t&1&&(u(0,"div",49),E(1,LM,2,0,"svg",50),d()),t&2){let r=v(3);m(),_("ngIf",r.media.trailer_exists)}}function jM(t,e){if(t&1){let r=j();u(0,"div",54),x("click",function(){D(r);let i=v(4);return b(i.monitorSeries())}),B(),u(1,"svg",55),w(2,"path",56),d()()}}function $M(t,e){if(t&1){let r=j();u(0,"div",57),x("click",function(){D(r);let i=v(4);return b(i.monitorSeries())}),B(),u(1,"svg",58),w(2,"path",59),d()()}}function UM(t,e){if(t&1&&E(0,jM,3,0,"div",53)(1,$M,3,0,"ng-template",null,7,he),t&2){let r=fe(2),n=v(3);_("ngIf",n.media.monitor)("ngIfElse",r)}}function BM(t,e){if(t&1&&(u(0,"a",60),w(1,"img",61),d()),t&2){let r=v(3);ur("href","https://www.imdb.com/title/",r.media.imdb_id,"/",ot)}}function HM(t,e){if(t&1&&(u(0,"a",63),w(1,"img",64),d()),t&2){let r=v(4);ur("href","https://www.themoviedb.org/movie/",r.media.txdb_id,"",ot)}}function qM(t,e){if(t&1&&(ft(0),E(1,HM,2,2,"a",62),pt()),t&2){let r=v(3);m(),_("ngIf",r.media.txdb_id)}}function zM(t,e){if(t&1&&(u(0,"a",66),w(1,"img",67),d()),t&2){let r=v(4);ur("href","https://www.thetvdb.com/?tab=series&id=",r.media.txdb_id,"",ot)}}function GM(t,e){if(t&1&&E(0,zM,2,2,"a",65),t&2){let r=v(3);_("ngIf",r.media.txdb_id)}}function WM(t,e){t&1&&(u(0,"p",68),p(1,"Click Download to download trailer from updated link!"),d())}function ZM(t,e){if(t&1){let r=j();u(0,"button",69),x("click",function(){D(r);let i=v(3);return b(i.openTrailer())}),p(1,"Watch"),d()}}function QM(t,e){if(t&1){let r=j();u(0,"button",70),x("click",function(){D(r);let i=v(3);return b(i.showDeleteDialog())}),p(1,"Delete"),d()}}function YM(t,e){if(t&1){let r=j();u(0,"div",21),w(1,"div",22),u(2,"div",23),w(3,"img",24),d(),u(4,"div",25)(5,"div",26),E(6,VM,2,1,"div",27)(7,UM,3,2,"ng-template",null,5,he),u(9,"span",28),x("click",function(){D(r);let i=v(2);return b(i.copyToClipboard(i.media.title))}),p(10),d()(),u(11,"div",26)(12,"span",29),p(13),d(),u(14,"span",29),ke(15,"durationConvert"),p(16),ke(17,"durationConvert"),d()(),u(18,"div",26),E(19,BM,2,2,"a",30)(20,qM,2,1,"ng-container",31)(21,GM,1,1,"ng-template",null,6,he),d(),u(23,"div",32)(24,"span")(25,"div",33)(26,"label",34),p(27,"Path"),d(),u(28,"span",35),x("click",function(){D(r);let i=v(2);return b(i.copyToClipboard(i.media.folder_path))}),u(29,"code"),p(30),d()()()(),u(31,"span")(32,"div",36)(33,"label",34),p(34,"Status"),d(),u(35,"span",37),p(36),u(37,"span",38)(38,"p"),p(39),d(),u(40,"p"),p(41),d(),u(42,"p"),p(43),d(),u(44,"p"),p(45),d(),u(46,"p"),p(47),d()()()()()(),u(48,"div",26)(49,"div",39)(50,"label",34),p(51,"Overview"),d(),u(52,"span",40),p(53),d()()(),u(54,"div",26)(55,"div",36)(56,"label",34),p(57,"Trailer"),d(),u(58,"div",41)(59,"span",42),p(60,"https://www.youtube.com/watch?v="),d(),u(61,"span",43),p(62,"Youtube ID/URL:"),d(),u(63,"input",44),Kt("ngModelChange",function(i){D(r);let o=v(2);return gn(o.trailer_url,i)||(o.trailer_url=i),b(i)}),d()(),E(64,WM,2,0,"p",45),d()(),u(65,"div",26),E(66,ZM,2,0,"button",46),u(67,"button",47),x("click",function(){D(r);let i=v(2);return b(i.downloadTrailer())}),p(68,"Download"),d(),E(69,QM,2,0,"button",48),d()()()}if(t&2){let r=fe(8),n=fe(22),i=v(2);m(),Hm("background-image: url(",i.media.fanart_path,");"),m(),J("sm-none",!i.media.poster_path),ur("title","",i.media.title," Poster"),m(),Qe("src",i.media.poster_path||"assets/poster-lg.png",ot),Qe("alt",i.media.title),m(3),_("ngIf",i.media.trailer_exists)("ngIfElse",r),m(3),_("title",i.media.title),m(),X(" ",i.media.title," "),m(2),_("title",i.media.year),m(),V(i.media.year),m(),_("title",Pe(15,33,i.media.runtime)),m(2),V(Pe(17,35,i.media.runtime)),m(3),_("ngIf",i.media.imdb_id),m(),_("ngIf",i.media.is_movie)("ngIfElse",n),m(5),_("title",i.media.folder_path),m(5),V(i.media.folder_path),m(6),X("",i.status," "),m(3),X("Monitored: ",i.media.monitor,""),m(2),X("Downloaded: ",i.media.trailer_exists,""),m(2),X("Added: ",i.media.added_at,""),m(2),X("Updated: ",i.media.updated_at,""),m(2),X("Downloaded: ",i.media.downloaded_at," "),m(6),V(i.media.overview),m(10),Yt("ngModel",i.trailer_url),m(),_("ngIf",i.trailer_url!=i.media.youtube_trailer_id),m(2),_("ngIf",i.media.youtube_trailer_id),m(3),_("ngIf",i.media.trailer_exists)}}function KM(t,e){t&1&&(u(0,"div",16),w(1,"div",17)(2,"div",17)(3,"div",17)(4,"div",17),d())}function JM(t,e){t&1&&ua(0)}function XM(t,e){if(t&1&&(u(0,"div",72)(1,"div",73),w(2,"div"),u(3,"div"),p(4,"Name"),d(),u(5,"div"),p(6,"Size"),d(),u(7,"div"),p(8,"Modified"),d()(),E(9,JM,1,0,"ng-container",74),d()),t&2){let r=v(3),n=fe(7);m(9),_("ngTemplateOutlet",n)("ngTemplateOutletContext",dr(2,X0,r.mediaFiles))}}function e1(t,e){if(t&1&&E(0,XM,10,4,"div",71),t&2){let r=v(2),n=fe(5);_("ngIf",r.mediaFiles)("ngIfElse",n)}}function t1(t,e){if(t&1&&(E(0,YM,70,37,"div",18),u(1,"div",19)(2,"p",20),p(3,"Files"),d(),w(4,"hr"),E(5,KM,5,0,"div",11)(6,e1,1,2,"ng-template",null,4,he),d()),t&2){let r=fe(7),n=v();_("ngIf",n.media),m(5),_("ngIf",n.filesLoading)("ngIfElse",r)}}function n1(t,e){t&1&&(u(0,"div",72)(1,"p",75),p(2,"No Files Found"),d()())}function r1(t,e){t&1&&(ft(0),B(),u(1,"svg",83),w(2,"path",84),d(),pt())}function i1(t,e){t&1&&(B(),u(0,"svg",83),w(1,"path",85),d())}function o1(t,e){if(t&1&&(ft(0),E(1,r1,3,0,"ng-container",31)(2,i1,2,0,"ng-template",null,9,he),pt()),t&2){let r=fe(3),n=v().folder;m(),_("ngIf",n.isExpanded)("ngIfElse",r)}}function s1(t,e){t&1&&(B(),u(0,"svg",83),w(1,"path",86),d())}function a1(t,e){t&1&&ua(0)}function l1(t,e){if(t&1&&(ft(0),E(1,a1,1,0,"ng-container",74),pt()),t&2){let r=e.$implicit;v(4);let n=fe(7);m(),_("ngTemplateOutlet",n)("ngTemplateOutletContext",dr(2,X0,r))}}function c1(t,e){if(t&1&&(ft(0),E(1,l1,2,4,"ng-container",89),pt()),t&2){let r=v(2).folder;m(),_("ngForOf",r.files)}}function u1(t,e){if(t&1&&(u(0,"div",87),E(1,c1,2,1,"ng-container",88),d()),t&2){let r=v().folder;m(),_("ngIf",r.isExpanded)}}function d1(t,e){if(t&1){let r=j();u(0,"div",76)(1,"div",77),x("click",function(){let i=D(r).folder;return b(i.isExpanded=!i.isExpanded)}),u(2,"div",78),E(3,o1,4,2,"ng-container",31)(4,s1,2,0,"ng-template",null,8,he),d(),u(6,"div",79),p(7),d(),u(8,"div",80),p(9),d(),u(10,"div",81),p(11),d()(),E(12,u1,2,1,"div",82),d()}if(t&2){let r=e.folder,n=fe(5);m(),J("parent",r.type=="folder"),m(2),_("ngIf",r.type==="folder")("ngIfElse",n),m(4),V(r.name),m(2),V(r.size),m(2),V(r.modified),m(),_("ngIf",r.type=="folder")}}var ff=(()=>{let e=class e{constructor(n,i,o,s){this.movieService=n,this.seriesService=i,this.route=o,this.websocketService=s,this.mediaId=0,this.media=void 0,this.mediaFiles=void 0,this.mediaFilesResponse="No files found",this.isLoading=!0,this.filesLoading=!0,this.trailer_url="",this.status="Missing",this.mediaService=this.seriesService}copyToClipboard(n){return Ni(this,null,function*(){if(navigator.clipboard)try{yield navigator.clipboard.writeText(n),this.websocketService.showToast("Copied to clipboard!")}catch(i){this.websocketService.showToast("Error copying text to clipboard.","Error"),console.error("Failed to copy: ",i)}else{let i=document.createElement("input");i.value=n,document.body.appendChild(i),i.select(),document.execCommand("copy"),document.body.removeChild(i),this.websocketService.showToast("Copied to clipboard!")}})}ngOnInit(){this.isLoading=!0,this.filesLoading=!0,this.route.params.subscribe(i=>{this.route.snapshot.url[0].path==="movies"?this.mediaService=this.movieService:this.mediaService=this.seriesService,this.mediaId=i.id,this.getMediaData()});let n=()=>{this.getMediaData()};this.webSocketSubscription=this.websocketService.connect().subscribe({next:n,error:n,complete:n})}ngOnDestroy(){this.webSocketSubscription?.unsubscribe()}getMediaData(){this.mediaService.getMediaById(this.mediaId).subscribe(n=>{this.media=n,this.trailer_url=n.youtube_trailer_id,this.isLoading=!1,n.trailer_exists?this.status="Downloaded":this.status=n.monitor?"Monitored":"Missing"}),this.mediaService.getMediaFiles(this.mediaId).subscribe(n=>{typeof n=="string"?this.mediaFilesResponse=n:this.mediaFiles=n,this.filesLoading=!1})}downloadTrailer(){let n=this.media?.youtube_trailer_id?.toLowerCase()||"";this.trailer_url.toLowerCase().includes(n)&&this.media?.trailer_exists||this.mediaService.downloadMediaTrailer(this.mediaId,this.trailer_url).subscribe(o=>{console.log(o)})}monitorSeries(){let n=!this.media?.monitor;this.mediaService.monitorMedia(this.mediaId,n).subscribe(i=>{console.log(i),this.media.monitor=n})}openTrailer(){this.media?.youtube_trailer_id&&window.open(`https://www.youtube.com/watch?v=${this.media.youtube_trailer_id}`,"_blank")}showDeleteDialog(){this.deleteDialog.nativeElement.showModal()}closeDeleteDialog(){this.deleteDialog.nativeElement.close()}onConfirmDelete(){this.closeDeleteDialog(),this.mediaService.deleteMediaTrailer(this.mediaId).subscribe(n=>{console.log(n),this.media.trailer_exists=!1})}};e.\u0275fac=function(i){return new(i||e)(C(Ai),C(fl),C(yt),C(Oi))},e.\u0275cmp=ee({type:e,selectors:[["app-media-details"]],viewQuery:function(i,o){if(i&1&&Qt(RM,5),i&2){let s;bt(s=Et())&&(o.deleteDialog=s.first)}},standalone:!0,features:[te],decls:21,vars:2,consts:[["mediaLoaded",""],["noFilesFound",""],["folTemplate",""],["deleteDialog",""],["filessLoaded",""],["noTrailer",""],["showTVDBLogo",""],["notMonitored",""],["fileIcon",""],["folderClosedIcon",""],[1,"media-details-container"],["class","loading-wave center",4,"ngIf","ngIfElse"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"danger",3,"click"],["tabindex","1",1,"secondary",3,"click"],[1,"loading-wave","center"],[1,"loading-bar"],["class","media-details-card",4,"ngIf"],[1,"media-files-container"],[1,"text-md","files-title"],[1,"media-details-card"],[1,"media-fanart-overlay"],[1,"media-poster",3,"title"],[3,"src","alt"],[1,"media-details-col"],[1,"media-details-row"],["class","icon-link","title","Trailer Downloaded",4,"ngIf","ngIfElse"],[1,"text-lg","title-text","copy",3,"click","title"],[1,"text-md",3,"title"],["target","_blank","title","IMDB Link",3,"href",4,"ngIf"],[4,"ngIf","ngIfElse"],[1,"media-details-row","extras"],[1,"labeled-text",3,"title"],[1,"label"],[1,"text-sm","copy",3,"click"],[1,"labeled-text"],[1,"text-sm","tooltip"],[1,"tooltiptext"],["title","Overview",1,"labeled-text"],[1,"text-sm"],[1,"labeled-input"],[1,"text-md","sm-none"],[1,"text-md","sm-show"],["id","youtube_trailer_id","type","text","placeholder","Youtube Video ID / URL",3,"ngModelChange","ngModel"],["class","text-sm info-text",4,"ngIf"],["class","primary","title","Watch Trailer on Youtube",3,"click",4,"ngIf"],["title","Download Trailer",1,"primary",3,"click"],["class","danger","title","Delete Trailer",3,"click",4,"ngIf"],["title","Trailer Downloaded",1,"icon-link"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","class","downloaded-icon success","aria-label","Trailer Exists",4,"ngIf"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Trailer Exists",1,"downloaded-icon","success"],["d","M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q65 0 123 19t107 53l-58 59q-38-24-81-37.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160q133 0 226.5-93.5T800-480q0-18-2-36t-6-35l65-65q11 32 17 66t6 70q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm-56-216L254-466l56-56 114 114 400-401 56 56-456 457Z"],["class","icon-link","title","Monitored, click to change",3,"click",4,"ngIf","ngIfElse"],["title","Monitored, click to change",1,"icon-link",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Monitored",1,"monitored-icon"],["d","M713-600 600-713l56-57 57 57 141-142 57 57-198 198ZM200-120v-640q0-33 23.5-56.5T280-840h280q-20 30-30 57.5T520-720q0 72 45.5 127T680-524q23 3 40 3t40-3v404L480-240 200-120Z"],["title","Not Monitored, click to change",1,"icon-link",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Not Monitored",1,"not-monitored-icon"],["d","M200-120v-640q0-33 23.5-56.5T280-840h240v80H280v518l200-86 200 86v-278h80v400L480-240 200-120Zm80-640h240-240Zm400 160v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z"],["target","_blank","title","IMDB Link",3,"href"],["src","assets/IMDBlogo.png","alt","IMDB",1,"xdb-icon"],["target","_blank","title","TMDB Link",3,"href",4,"ngIf"],["target","_blank","title","TMDB Link",3,"href"],["src","assets/TMDBlogo.png","alt","TMDB",1,"xdb-icon"],["target","_blank","title","TVDB Link",3,"href",4,"ngIf"],["target","_blank","title","TVDB Link",3,"href"],["src","assets/TVDBlogo.png","alt","TVDB",1,"xdb-icon"],[1,"text-sm","info-text"],["title","Watch Trailer on Youtube",1,"primary",3,"click"],["title","Delete Trailer",1,"danger",3,"click"],["class","media-files",4,"ngIf","ngIfElse"],[1,"media-files"],[1,"files-header","sm-none","text-sm"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"text-sm","text-center"],[1,"files-accordion"],[1,"files-header",3,"click"],[1,"files-icon"],[1,"files-name"],[1,"files-size"],[1,"files-modified"],["class","child",4,"ngIf"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M146.67-160q-26.34 0-46.5-20.17Q80-200.33 80-226.67v-506.66q0-26.34 20.17-46.5Q120.33-800 146.67-800H414l66.67 66.67h332.66q26.34 0 46.5 20.16Q880-693 880-666.67H146.67v440l100-373.33H940L834.33-209.67q-6.66 24.67-24.5 37.17Q792-160 766.67-160h-620Z"],["d","M146.67-160q-27 0-46.84-20.17Q80-200.33 80-226.67v-506.66q0-26.34 19.83-46.5Q119.67-800 146.67-800H414l66.67 66.67h332.66q26.34 0 46.5 20.16Q880-693 880-666.67v440q0 26.34-20.17 46.5Q839.67-160 813.33-160H146.67Z"],["d","M319.33-246.67h321.34v-66.66H319.33v66.66Zm0-166.66h321.34V-480H319.33v66.67ZM226.67-80q-27 0-46.84-19.83Q160-119.67 160-146.67v-666.66q0-27 19.83-46.84Q199.67-880 226.67-880H574l226 226v507.33q0 27-19.83 46.84Q760.33-80 733.33-80H226.67Zm314-542.67h192.66L540.67-813.33v190.66Z"],[1,"child"],[4,"ngIf"],[4,"ngFor","ngForOf"]],template:function(i,o){if(i&1){let s=j();u(0,"div",10),E(1,FM,5,0,"div",11)(2,t1,8,3,"ng-template",null,0,he),d(),E(4,n1,3,0,"ng-template",null,1,he)(6,d1,13,8,"ng-template",null,2,he),u(8,"dialog",12,3),x("click",function(){return D(s),b(o.closeDeleteDialog())}),u(10,"div",13),x("click",function(l){return D(s),b(l.stopPropagation())}),u(11,"h2"),p(12,"Delete Trailer"),d(),u(13,"p"),p(14,"This will Delete the trailer file on disk for this Media"),d(),u(15,"p"),p(16,"Are you sure?"),d(),u(17,"button",14),x("click",function(){return D(s),b(o.onConfirmDelete())}),p(18,"Delete"),d(),u(19,"button",15),x("click",function(){return D(s),b(o.closeDeleteDialog())}),p(20,"Cancel"),d()()()}if(i&2){let s=fe(3);m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[Se,we,St,Mt,nn,Cr,K0,hg],styles:['.media-details-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;margin:1rem;border:1px solid var(--color-outline);border-radius:10px}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto}.media-details-card[_ngcontent-%COMP%]{position:relative;display:grid;grid-template-columns:1fr 3fr;padding:2rem;gap:2rem}.media-fanart-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;z-index:0;height:100%;background-size:cover;background-position:center;opacity:.4;border-radius:10px}.media-poster[_ngcontent-%COMP%]{z-index:2;display:flex;width:100%}.media-poster[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;max-width:300px;height:auto;object-fit:contain;margin-bottom:auto}.media-details-col[_ngcontent-%COMP%]{z-index:2;flex:1;display:flex;flex-direction:column}.media-details-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;margin:.3rem;gap:.75rem}.media-details-row[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{font-size:2.5rem;display:inline-block;overflow:hidden;max-width:70%}.icon-link[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;text-decoration:none;transition:all .4s;cursor:pointer}.icon-link[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:40px;fill:var(--color-primary)}.nav-icons[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:1rem;margin-left:auto;margin-right:1rem}.icon-link[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] .success[_ngcontent-%COMP%]{fill:var(--color-success)}.xdb-icon[_ngcontent-%COMP%]{width:60px;cursor:pointer;border-radius:4px}.extras[_ngcontent-%COMP%]{flex-wrap:wrap}.labeled-text[_ngcontent-%COMP%]{display:flex;flex-direction:column}.labeled-text[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.75rem;opacity:.7;margin-bottom:.1rem}.labeled-input[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap!important;align-items:stretch;width:100%;border:1px solid var(--color-outline);border-radius:6px}.labeled-input[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;align-items:center;padding:.75rem;font-size:1rem;font-weight:400;color:var(--color-on-surface-variant);text-align:center;white-space:nowrap;background-color:var(--color-surface-container-high);border-right:1px solid var(--color-outline);border-top-left-radius:6px;border-bottom-left-radius:6px}.labeled-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1 1 auto;width:1%;min-width:100px;display:block;padding:.75rem;font-size:1rem;font-weight:400;color:var(--color-on-surface);border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-surface-container);border-top-right-radius:6px;border-bottom-right-radius:6px}.info-text[_ngcontent-%COMP%]{margin:.5rem;padding:.5rem;border-radius:.5rem;background-color:var(--color-info);color:var(--color-info-text);text-align:center}.media-files-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;margin:1rem}.media-files-container[_ngcontent-%COMP%] .media-files[_ngcontent-%COMP%]{width:100%;display:block;border:1px solid var(--color-outline);border-radius:4px;background-color:var(--color-surface-container-high);color:var(--color-on-surface-variant);overflow-y:auto}.media-files-container[_ngcontent-%COMP%] .files-title[_ngcontent-%COMP%]{margin:0;margin-block:0}.files-accordion[_ngcontent-%COMP%]{width:100%;display:grid;grid-template-rows:1fr auto;border-left:1px solid var(--color-outline);position:relative}.files-header[_ngcontent-%COMP%]{grid-row:1;display:grid;grid-template-columns:auto 6fr 1fr 2fr;gap:.5rem;align-items:center;text-align:center;padding:1rem;border:none;outline:none;transition:.4s;border-top:1px solid var(--color-outline);position:relative;font-size:.75rem}.files-header[_ngcontent-%COMP%]:before{content:"";display:block;position:absolute;top:50%;left:-1rem;width:1rem;height:1px;background-color:var(--color-outline)}.files-accordion[_ngcontent-%COMP%] .parent[_ngcontent-%COMP%]{cursor:pointer}.files-accordion[_ngcontent-%COMP%] .child[_ngcontent-%COMP%]{grid-row:2;padding:0 0 0 1rem;position:relative}.child[_ngcontent-%COMP%] .files-accordion[_ngcontent-%COMP%]:last-child{border-bottom:1px solid var(--color-outline);margin-bottom:1rem}.files-header[_ngcontent-%COMP%] .files-icon[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center}.files-header[_ngcontent-%COMP%] .files-name[_ngcontent-%COMP%]{font-size:1rem;text-align:left;display:flex;align-items:center;gap:.25rem}.files-header[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem;fill:var(--color-on-surface)}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}@media (max-width: 765px){.media-details-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:0;padding-top:2rem;gap:1rem}.media-poster[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:auto;height:30vh;margin:0 auto}.media-details-col[_ngcontent-%COMP%]{align-items:center;margin:1rem;margin-top:0}.media-details-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;margin:.3rem;gap:.75rem}.media-details-row[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{max-width:90%}.files-header[_ngcontent-%COMP%]{grid-template-columns:auto auto auto;grid-template-rows:1fr auto}.files-header[_ngcontent-%COMP%] .files-icon[_ngcontent-%COMP%]{grid-row:1 / span 2;grid-column:1;justify-self:center}.files-header[_ngcontent-%COMP%] .files-name[_ngcontent-%COMP%]{grid-row:1;grid-column:2 / span 2;justify-self:start}.files-header[_ngcontent-%COMP%] .files-size[_ngcontent-%COMP%]{grid-row:2;grid-column:2;justify-self:start;margin-left:.25rem}.files-header[_ngcontent-%COMP%] .files-modified[_ngcontent-%COMP%]{grid-row:2;grid-column:3;justify-self:end}}']});let t=e;return t})();var f1=()=>["/settings","connections","add"],p1=t=>[t];function h1(t,e){t&1&&(u(0,"div",4),w(1,"div",5)(2,"div",5)(3,"div",5)(4,"div",5),d())}function m1(t,e){t&1&&(u(0,"div",9)(1,"div",10),p(2," Click me! "),d()()),t&2&&(m(),_("routerLink",ei(1,f1)))}function g1(t,e){t&1&&(ft(0),B(),u(1,"svg",15),w(2,"path",16),d(),pt())}function v1(t,e){if(t&1&&(B(),u(0,"svg",17),w(1,"path",18),d()),t&2){let r=v().$implicit;J("success",r.trailer_exists)}}function y1(t,e){if(t&1&&(u(0,"div",11),w(1,"img",12),u(2,"h5",13),p(3),d(),E(4,g1,3,0,"ng-container",14)(5,v1,2,2,"ng-template",null,1,he),d()),t&2){let r=e.$implicit,n=fe(6);_("routerLink",dr(6,p1,r.id)),m(),Qe("src",r.poster_path||"assets/poster-sm.png",ot),Qe("alt",r.title),m(2),V(r.title),m(),_("ngIf",r.monitor)("ngIfElse",n)}}function _1(t,e){if(t&1&&(E(0,m1,3,2,"div",6),u(1,"div",7),E(2,y1,7,8,"div",8),d()),t&2){let r=v();_("ngIf",r.media_list.length===0),m(2),_("ngForOf",r.media_list)}}var pf=(()=>{let e=class e{constructor(n,i,o){this.movieService=n,this.seriesService=i,this.route=o,this.title="Media",this.media_list=[],this.isLoading=!0,this.mediaService=this.seriesService}ngOnInit(){this.isLoading=!0,this.route.snapshot.url[0].path==="movies"?(this.title="Movies",this.mediaService=this.movieService):(this.title="Series",this.mediaService=this.seriesService),this.mediaService.getRecentMedia().subscribe(i=>{this.media_list=[],this.isLoading=!1,i.forEach((o,s)=>{setTimeout(()=>{this.media_list.push(o)},s*20)})})}};e.\u0275fac=function(i){return new(i||e)(C(Ai),C(fl),C(yt))},e.\u0275cmp=ee({type:e,selectors:[["app-media"]],standalone:!0,features:[te],decls:4,vars:2,consts:[["mediaLoaded",""],["trailerExistsIcon",""],[1,"media-container"],["class","loading-wave center",4,"ngIf","ngIfElse"],[1,"loading-wave","center"],[1,"loading-bar"],["class","center",4,"ngIf"],[1,"media-row"],["class","media-card",3,"routerLink",4,"ngFor","ngForOf"],[1,"center"],[1,"all-empty-card",3,"routerLink"],[1,"media-card",3,"routerLink"],[3,"src","alt"],[1,"card-title"],[4,"ngIf","ngIfElse"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Monitored",1,"monitored-icon"],["d","M713-600 600-713l56-57 57 57 141-142 57 57-198 198ZM200-120v-640q0-33 23.5-56.5T280-840h280q-20 30-30 57.5T520-720q0 72 45.5 127T680-524q23 3 40 3t40-3v404L480-240 200-120Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Trailer Exists",1,"downloaded-icon"],["d","M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q65 0 123 19t107 53l-58 59q-38-24-81-37.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160q133 0 226.5-93.5T800-480q0-18-2-36t-6-35l65-65q11 32 17 66t6 70q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm-56-216L254-466l56-56 114 114 400-401 56 56-456 457Z"]],template:function(i,o){if(i&1&&(u(0,"div",2),E(1,h1,5,0,"div",3)(2,_1,3,2,"ng-template",null,0,he),d()),i&2){let s=fe(3);m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[St,Se,we,lt],styles:[".media-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto}.media-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;padding:1rem}@media (width < 900px){.media-row[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem;padding:.5rem}}.media-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;transition:all .4s;border-radius:10px;box-shadow:0 0 10px 5px #000000b4;cursor:pointer;position:relative}.media-card[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;border-radius:10px}.media-card[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;top:5px;height:24px;width:24px}.media-card[_ngcontent-%COMP%] .monitored-icon[_ngcontent-%COMP%], .media-card[_ngcontent-%COMP%] .downloaded-icon[_ngcontent-%COMP%]{fill:var(--color-info);right:5px}.media-card[_ngcontent-%COMP%] .success[_ngcontent-%COMP%]{fill:var(--color-success)}.media-card[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{display:none}.media-card[_ngcontent-%COMP%]:hover{border-radius:15px;box-shadow:0 0 10px 5px #000000b4}.media-card[_ngcontent-%COMP%]:hover img[_ngcontent-%COMP%]{border-radius:15px;filter:blur(2px);-webkit-filter:blur(2px)}.media-card[_ngcontent-%COMP%]:hover h5[_ngcontent-%COMP%]{position:absolute;inset:0%;display:flex;justify-content:center;align-items:center;width:100%;text-align:center;overflow:hidden;cursor:pointer;font-size:1.5rem;font-weight:900;color:var(--color-primary)}"]});let t=e;return t})();var rn=(()=>{let e=class e{constructor(n){this.http=n,this.settingsUrl=Te.apiUrl+Te.settings,this.connectionsUrl=Te.apiUrl+Te.connections}getSettings(){return this.http.get(this.settingsUrl)}getServerStats(){var n=this.settingsUrl+"stats";return this.http.get(n)}updateSetting(n,i){let o=this.settingsUrl+"update",s={key:n,value:i};return this.http.put(o,s).pipe(He(a=>{let l="";return a.error instanceof ErrorEvent?l=`Error: ${a.error.message}`:l=`Error: ${a.status} ${a.error.detail}`,O(l)}))}getConnections(){return this.http.get(this.connectionsUrl).pipe(A(n=>n.map(i=>K(M({},i),{added_at:new Date(i.added_at)}))))}getConnection(n){var i=this.connectionsUrl+n;return this.http.get(i).pipe(A(o=>K(M({},o),{added_at:new Date(o.added_at)})))}addConnection(n){return this.http.post(this.connectionsUrl,n).pipe(He(i=>{let o="";return i.error instanceof ErrorEvent?o=`Error: ${i.error.message}`:o=`Error: ${i.status} ${i.error.detail}`,O(o)}))}updateConnection(n){var i=this.connectionsUrl+n.id;return this.http.put(i,n).pipe(He(o=>{let s="";return o.error instanceof ErrorEvent?s=`Error: ${o.error.message}`:s=`Error: ${o.status} ${o.error.detail}`,O(s)}))}deleteConnection(n){var i=this.connectionsUrl+n;return this.http.delete(i).pipe(He(o=>{let s="";return o.error instanceof ErrorEvent?s=`Error: ${o.error.message}`:s=`Error: ${o.status} ${o.error.detail}`,O(s)}))}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var ev=(()=>{let e=class e{constructor(n){this.settingsService=n}ngOnInit(){this.settingsService.getSettings().subscribe(n=>this.settings=n),this.settingsService.getServerStats().subscribe(n=>this.serverStats=n)}};e.\u0275fac=function(i){return new(i||e)(C(rn))},e.\u0275cmp=ee({type:e,selectors:[["app-about"]],standalone:!0,features:[te],decls:79,vars:12,consts:[[1,"about-container"],[1,"about-section"],[1,"about-content"],["href","https://github.com/nandyalu/trailarr","target","_blank"],["href","https://github.com/nandyalu/trailarr/issues","target","_blank"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"section",1)(2,"h1"),p(3,"About Trailarr"),d(),w(4,"hr"),u(5,"div",2)(6,"label"),p(7,"Version"),d(),u(8,"code"),p(9),d()(),u(10,"div",2)(11,"label"),p(12,"API Key"),d(),u(13,"code"),p(14),d()(),u(15,"div",2)(16,"label"),p(17,"Appdata Folder"),d(),u(18,"code"),p(19),d()(),u(20,"div",2)(21,"label"),p(22,"Server Stated"),d(),u(23,"code"),p(24),ke(25,"timeago"),d()(),u(26,"div",2)(27,"label"),p(28,"Timezone"),d(),u(29,"code"),p(30),d()()(),u(31,"section",1)(32,"h1"),p(33,"Statistics"),d(),w(34,"hr"),u(35,"div",2)(36,"label"),p(37,"Movies"),d(),u(38,"code"),p(39),d()(),u(40,"div",2)(41,"label"),p(42,"Movies Monitored"),d(),u(43,"code"),p(44),d()(),u(45,"div",2)(46,"label"),p(47,"Series"),d(),u(48,"code"),p(49),d()(),u(50,"div",2)(51,"label"),p(52,"Series Monitored"),d(),u(53,"code"),p(54),d()(),u(55,"div",2)(56,"label"),p(57,"Trailers downloaded"),d(),u(58,"code"),p(59),d()()(),u(60,"section",1)(61,"h1"),p(62,"Getting Support"),d(),w(63,"hr"),u(64,"div",2)(65,"label"),p(66,"Github"),d(),u(67,"a",3),p(68,"https://github.com/nandyalu/trailarr"),d()(),u(69,"div",2)(70,"label"),p(71,"Documentation"),d(),u(72,"a",3),p(73,"https://github.com/nandyalu/trailarr"),d()(),u(74,"div",2)(75,"label"),p(76,"Issues"),d(),u(77,"a",4),p(78,"https://github.com/nandyalu/trailarr/issues"),d()()()()),i&2&&(m(9),V(o.settings==null?null:o.settings.version),m(5),V(o.settings==null?null:o.settings.api_key),m(5),V(o.settings==null?null:o.settings.app_data_dir),m(5),V(o.settings!=null&&o.settings.server_start_time?Pe(25,10,o.settings==null?null:o.settings.server_start_time):"Unknwon"),m(6),V(o.settings==null?null:o.settings.timezone),m(9),V(o.serverStats==null?null:o.serverStats.movies_count),m(5),V(o.serverStats==null?null:o.serverStats.movies_monitored),m(5),V(o.serverStats==null?null:o.serverStats.series_count),m(5),V(o.serverStats==null?null:o.serverStats.series_monitored),m(5),V(o.serverStats==null?null:o.serverStats.trailers_downloaded))},dependencies:[_i,el],styles:[".about-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.about-content[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;margin:1.5rem .5rem;gap:1rem}.about-content[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:700;text-align:left;width:40%}.about-content[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(2){text-decoration:none;text-align:left;margin:0;padding:.25rem}@media screen and (max-width: 768px){.about-content[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:.25rem}.about-content[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%;font-weight:unset;font-style:italic;font-size:small}}"]});let t=e;return t})();var w1=["cancelDialog"];function C1(t,e){t&1&&(u(0,"p",29),p(1,"Server Name is required! Minimum 3 characters"),d())}function D1(t,e){if(t&1){let r=j();u(0,"div",30),x("click",function(){let i=D(r).$implicit,o=v();return b(o.setArrType(i))})("keydown.enter",function(){let i=D(r).$implicit,o=v();return b(o.setArrType(i))})("keydown.space",function(){let i=D(r).$implicit,o=v();return b(o.setArrType(i))}),p(1),ke(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=v();J("selected",r===n.addConnectionForm.value.arrType),m(),X(" ",Pe(2,3,r)," ")}}function b1(t,e){if(t&1){let r=j();u(0,"div",31),x("click",function(){let i=D(r).$implicit,o=v();return b(o.setMonitorType(i))})("keydown.enter",function(){let i=D(r).$implicit,o=v();return b(o.setMonitorType(i))})("keydown.space",function(){let i=D(r).$implicit,o=v();return b(o.setMonitorType(i))}),p(1),ke(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=v();J("selected",r===n.addConnectionForm.value.monitorType),m(),X(" ",Pe(2,3,r)," ")}}function E1(t,e){t&1&&(u(0,"p",29),p(1,"Server URL is invalid!"),d())}function x1(t,e){t&1&&(u(0,"p",29),p(1,"APIKey is invalid!"),d())}function I1(t,e){if(t&1){let r=j();u(0,"div",32)(1,"div",3)(2,"label",33),p(3,"Path From"),d(),w(4,"input",34),d(),u(5,"div",3)(6,"label",35),p(7,"Path To"),d(),w(8,"input",36),d(),u(9,"button",37),x("click",function(){let i=D(r).index,o=v();return b(o.removePathMapping(i))}),B(),u(10,"svg",20),w(11,"path",24),d()()()}if(t&2){let r=e.index;_("formGroupName",r)}}function M1(t,e){if(t&1&&(u(0,"p"),p(1),d()),t&2){let r=v();m(),V(r.addConnResult)}}function S1(t,e){if(t&1){let r=j();u(0,"dialog",38,0),x("click",function(){D(r);let i=v();return b(i.closeCancelDialog())}),u(2,"div",39),x("click",function(i){return D(r),b(i.stopPropagation())}),u(3,"h2"),p(4,"Unsaved Changes"),d(),u(5,"p"),p(6,"Canges will be lost. Are you sure you want to cancel?"),d(),u(7,"button",40),x("click",function(){D(r);let i=v();return b(i.onConfirmCancel())}),p(8,"Yes"),d(),u(9,"button",41),x("click",function(){D(r);let i=v();return b(i.closeCancelDialog())}),p(10,"No"),d()()()}}var tv=(()=>{let e=class e{constructor(n,i){this._location=n,this.settingsService=i,this.arrOptions=["radarr","sonarr"],this.monitorOptions=["missing","new","none","sync"],this.name=new Ce("",[ye.required,ye.minLength(3)]),this.url=new Ce("",[ye.required,ye.pattern("https?://.*:\\d{2,}")]),this.apiKey=new Ce("",[ye.required,ye.pattern("^[a-zA-Z0-9]*$"),ye.minLength(32),ye.maxLength(50)]),this.addConnectionForm=new tn({name:this.name,arrType:new Ce("radarr"),monitorType:new Ce("new"),url:this.url,apiKey:this.apiKey,path_mappings:new Ci([])}),this.addConnResult=""}setArrType(n){this.addConnectionForm.patchValue({arrType:n})}setMonitorType(n){this.addConnectionForm.patchValue({monitorType:n})}get pathMappings(){return this.addConnectionForm.get("path_mappings")}addPathMapping(){let n=new tn({path_from:new Ce("",ye.required),path_to:new Ce("",ye.required)});this.pathMappings.push(n)}removePathMapping(n){this.pathMappings.removeAt(n)}showCancelDialog(){this.cancelDialog.nativeElement.showModal()}closeCancelDialog(){this.cancelDialog.nativeElement.close()}onCancel(){this.addConnectionForm.dirty?this.showCancelDialog():this._location.back()}onConfirmCancel(){this.showCancelDialog(),this._location.back()}onSubmit(){if(this.addConnectionForm.invalid)return;let n={name:this.addConnectionForm.value.name||"",arr_type:this.addConnectionForm.value.arrType||"",url:this.addConnectionForm.value.url||"",api_key:this.addConnectionForm.value.apiKey||"",monitor:this.addConnectionForm.value.monitorType||"",path_mappings:this.addConnectionForm.value.path_mappings||[]};this.settingsService.addConnection(n).subscribe(i=>{this.addConnResult=i,i.toLowerCase().includes("version")&&setTimeout(()=>{this._location.back()},3e3)})}};e.\u0275fac=function(i){return new(i||e)(C(Ut),C(rn))},e.\u0275cmp=ee({type:e,selectors:[["app-add-connection"]],viewQuery:function(i,o){if(i&1&&Qt(w1,5),i&2){let s;bt(s=Et())&&(o.cancelDialog=s.first)}},standalone:!0,features:[te],decls:55,vars:10,consts:[["cancelDialog",""],[1,"form-container"],[3,"formGroup"],[1,"input-group"],["for","name"],["id","name","type","text","formControlName","name","placeholder","Connection Name","autocomplete","off","autocapitalize","words","tabindex","1","oninput","this.value = this.value.charAt(0).toUpperCase() + this.value.slice(1)"],["class","invalid-text",4,"ngIf"],[1,"d-row"],[1,"option-container"],["id","arrtype",1,"options-bar"],["class","option","tabindex","2",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["id","monitorType",1,"options-bar"],["class","option","tabindex","3",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","url"],["id","url","type","url","formControlName","url","placeholder","Server URL Ex: http://192.168.0.15:6969","tabindex","4","autocomplete","off"],["for","api_key"],["id","apiKey","type","text","formControlName","apiKey","placeholder","APIKEY","tabindex","5","autocomplete","off"],["formArrayName","path_mappings"],["class","d-row",3,"formGroupName",4,"ngFor","ngForOf"],["id","cancel","tabindex","10",1,"animated-button","tertiary",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z"],[1,"text"],["id","cancel","tabindex","11",1,"animated-button","secondary",3,"click"],["d","m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"],["id","submit","type","submit","tabindex","12",1,"animated-button","primary",3,"click","disabled"],["d","M840-680v480q0 33-23.5 56.5T760-120H200q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h480l160 160Zm-80 34L646-760H200v560h560v-446ZM480-240q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM240-560h360v-160H240v160Zm-40-86v446-560 114Z"],[4,"ngIf"],[3,"click",4,"ngIf"],[1,"invalid-text"],["tabindex","2",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","3",1,"option",3,"click","keydown.enter","keydown.space"],[1,"d-row",3,"formGroupName"],["for","path_from"],["id","path_from","type","text","formControlName","path_from","placeholder","Arr Internal Path","tabindex","6","autocomplete","off"],["for","path_to"],["id","path_to","type","text","formControlName","path_to","placeholder","Trailarr Internal Path","tabindex","6","autocomplete","off"],["id","remove","name","Remove Path Mapping","tabindex","6",1,"icononly-button","tertiary",3,"click"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"secondary",3,"click"],["tabindex","1",1,"primary",3,"click"]],template:function(i,o){i&1&&(u(0,"div",1)(1,"h2"),p(2,"Add Connection:"),d(),w(3,"hr"),u(4,"form",2)(5,"div",3)(6,"label",4),p(7,"Connection Name"),d(),w(8,"input",5),E(9,C1,2,0,"p",6),d(),u(10,"div",7)(11,"div",8)(12,"label"),p(13,"Arr Type: "),d(),u(14,"div",9),E(15,D1,3,5,"div",10),d()(),u(16,"div",8)(17,"label"),p(18,"Monitor Type: "),d(),u(19,"div",11),E(20,b1,3,5,"div",12),d()()(),u(21,"div",3)(22,"label",13),p(23,"Server URL"),d(),w(24,"input",14),E(25,E1,2,0,"p",6),d(),u(26,"div",3)(27,"label",15),p(28,"API Key"),d(),w(29,"input",16),E(30,x1,2,0,"p",6),d(),u(31,"h3"),p(32,"Path Mappings:"),d(),w(33,"hr"),u(34,"div",17),E(35,I1,12,1,"div",18),d(),u(36,"div",7)(37,"button",19),x("click",function(){return o.addPathMapping()}),B(),u(38,"svg",20),w(39,"path",21),d(),Ne(),u(40,"span",22),p(41,"Add Path Mapping"),d()()(),u(42,"div",7)(43,"button",23),x("click",function(){return o.onCancel()}),B(),u(44,"svg",20),w(45,"path",24),d(),Ne(),u(46,"span",22),p(47,"Cancel"),d()(),u(48,"button",25),x("click",function(){return o.onSubmit()}),B(),u(49,"svg",20),w(50,"path",26),d(),Ne(),u(51,"span",22),p(52,"submit"),d()()(),E(53,M1,2,1,"p",27),d()(),E(54,S1,11,0,"dialog",28)),i&2&&(m(4),_("formGroup",o.addConnectionForm),m(5),_("ngIf",o.name.invalid&&o.name.touched),m(6),_("ngForOf",o.arrOptions),m(5),_("ngForOf",o.monitorOptions),m(5),_("ngIf",o.url.invalid&&o.url.touched),m(5),_("ngIf",o.apiKey.invalid&&o.apiKey.touched),m(5),_("ngForOf",o.pathMappings.controls),m(13),_("disabled",!o.addConnectionForm.valid),m(5),_("ngIf",o.addConnResult),m(),_("ngIf",o.addConnectionForm.touched))},dependencies:[Ti,xi,Mt,nn,bi,Ii,Oo,Mi,Si,St,we,Se,ii],styles:[".form-container[_ngcontent-%COMP%]{width:100%;border:2px solid var(--color-outline);padding:24px;display:flex;flex-direction:column;box-sizing:border-box;position:relative;border-radius:16px;background-color:var(--color-surface-container);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.form-container[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{display:block;padding:0;border:var(--color-outline);border-radius:8px}.input-group[_ngcontent-%COMP%]{flex-grow:1;display:flex;flex-direction:column;gap:2px;margin-bottom:1rem}.input-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-right:10px;display:block;margin-bottom:5px}.input-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:auto;padding:12px;font-family:inherit;background-color:var(--color-surface-container-high);color:var(--color-on-surface);border:2px solid var(--color-outline);border-radius:8px}input.ng-touched.ng-invalid[_ngcontent-%COMP%]{border:2px solid var(--color-error);opacity:.6;background-color:var(--color-error-container);color:var(--color-on-error-container);font-weight:700}.input-group[_ngcontent-%COMP%] .invalid-text[_ngcontent-%COMP%]{color:var(--color-error)}.d-row[_ngcontent-%COMP%]{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;justify-content:space-around;align-items:center}.option-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin:1rem 0 0}.option-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{padding:10px 10px 10px 0;display:block;margin-right:10px;background-color:var(--color-surface-container)}.option-container[_ngcontent-%COMP%] .options-bar[_ngcontent-%COMP%]{display:flex;background-color:var(--color-surface-container-high);border-radius:10px;border:.5px solid var(--color-outline)}.option-container[_ngcontent-%COMP%] .option[_ngcontent-%COMP%]{padding:10px;cursor:pointer;border-radius:10px;transition:.3s ease}.option-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background-color:var(--color-tertiary-container);font-weight:600;color:var(--color-on-tertiary-container)}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}"]});let t=e;return t})();var nv=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["app-connections"]],standalone:!0,features:[te],decls:1,vars:0,template:function(i,o){i&1&&w(0,"router-outlet")},dependencies:[_r]});let t=e;return t})();var T1=["cancelDialog"];function A1(t,e){t&1&&(u(0,"p",29),p(1,"Server Name is required! Minimum 3 characters"),d())}function O1(t,e){if(t&1){let r=j();u(0,"div",30),x("click",function(){let i=D(r).$implicit,o=v();return b(o.setArrType(i))})("keydown.enter",function(){let i=D(r).$implicit,o=v();return b(o.setArrType(i))})("keydown.space",function(){let i=D(r).$implicit,o=v();return b(o.setArrType(i))}),p(1),ke(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=v();J("selected",r===n.editConnectionForm.value.arrType),m(),X(" ",Pe(2,3,r)," ")}}function N1(t,e){if(t&1){let r=j();u(0,"div",31),x("click",function(){let i=D(r).$implicit,o=v();return b(o.setMonitorType(i))})("keydown.enter",function(){let i=D(r).$implicit,o=v();return b(o.setMonitorType(i))})("keydown.space",function(){let i=D(r).$implicit,o=v();return b(o.setMonitorType(i))}),p(1),ke(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=v();J("selected",r===n.editConnectionForm.value.monitorType),m(),X(" ",Pe(2,3,r)," ")}}function k1(t,e){t&1&&(u(0,"p",29),p(1,"Server URL is invalid!"),d())}function P1(t,e){t&1&&(u(0,"p",29),p(1,"APIKey is invalid!"),d())}function R1(t,e){if(t&1){let r=j();u(0,"div",32)(1,"div",3)(2,"label",33),p(3,"Path From"),d(),w(4,"input",34),d(),u(5,"div",3)(6,"label",35),p(7,"Path To"),d(),w(8,"input",36),d(),u(9,"button",37),x("click",function(){let i=D(r).index,o=v();return b(o.removePathMapping(i))}),B(),u(10,"svg",20),w(11,"path",24),d()()()}if(t&2){let r=e.index;_("formGroupName",r)}}function F1(t,e){if(t&1&&(u(0,"p"),p(1),d()),t&2){let r=v();m(),V(r.addConnResult)}}function L1(t,e){if(t&1){let r=j();u(0,"dialog",38,0),x("click",function(){D(r);let i=v();return b(i.closeCancelDialog())}),u(2,"div",39),x("click",function(i){return D(r),b(i.stopPropagation())}),u(3,"h2"),p(4,"Unsaved Changes"),d(),u(5,"p"),p(6,"Canges will be lost. Are you sure you want to cancel?"),d(),u(7,"button",40),x("click",function(){D(r);let i=v();return b(i.onConfirmCancel())}),p(8,"Yes"),d(),u(9,"button",41),x("click",function(){D(r);let i=v();return b(i.closeCancelDialog())}),p(10,"No"),d()()()}}var rv=(()=>{let e=class e{constructor(n,i,o){this._location=n,this.settingsService=i,this.route=o,this.connectionId=0,this.arrOptions=["radarr","sonarr"],this.monitorOptions=["missing","new","none","sync"],this.name=new Ce("",[ye.required,ye.minLength(3)]),this.url=new Ce("",[ye.required,ye.pattern("https?://.*:\\d{2,}")]),this.apiKey=new Ce("",[ye.required,ye.minLength(32),ye.maxLength(50)]),this.editConnectionForm=new tn({name:this.name,arrType:new Ce("radarr"),monitorType:new Ce("new"),url:this.url,apiKey:this.apiKey,path_mappings:new Ci([])}),this.addConnResult=""}ngOnInit(){this.route.params.subscribe(n=>{this.connectionId=n.id,this.settingsService.getConnection(this.connectionId).subscribe(i=>{this.editConnectionForm.patchValue({name:i.name,arrType:i.arr_type,monitorType:i.monitor,url:i.url,apiKey:i.api_key}),this.pathMappings.clear(),i.path_mappings.forEach(o=>{this.addPathMapping(o)})})})}setArrType(n){this.editConnectionForm.patchValue({arrType:n})}setMonitorType(n){this.editConnectionForm.patchValue({monitorType:n})}get pathMappings(){return this.editConnectionForm.get("path_mappings")}addPathMapping(n=null){n||(n={id:null,connection_id:null,path_from:"",path_to:""});let i=new tn({id:new Ce(n.id),connection_id:new Ce(n.connection_id),path_from:new Ce(n.path_from,ye.required),path_to:new Ce(n.path_to,ye.required)});this.pathMappings.push(i)}removePathMapping(n){this.pathMappings.removeAt(n)}showCancelDialog(){this.cancelDialog.nativeElement.showModal()}closeCancelDialog(){this.cancelDialog.nativeElement.close()}onCancel(){this.editConnectionForm.dirty?this.showCancelDialog():this._location.back()}onConfirmCancel(){this.showCancelDialog(),this._location.back()}onSubmit(){if(this.editConnectionForm.invalid)return;let n={id:this.connectionId,name:this.editConnectionForm.value.name||"",arr_type:this.editConnectionForm.value.arrType||"",url:this.editConnectionForm.value.url||"",api_key:this.editConnectionForm.value.apiKey||"",monitor:this.editConnectionForm.value.monitorType||"",path_mappings:this.editConnectionForm.value.path_mappings||[]};this.settingsService.updateConnection(n).subscribe(i=>{this.addConnResult=i,i.toLowerCase().includes("success")&&setTimeout(()=>{this._location.back()},2e3)})}};e.\u0275fac=function(i){return new(i||e)(C(Ut),C(rn),C(yt))},e.\u0275cmp=ee({type:e,selectors:[["app-edit-connection"]],viewQuery:function(i,o){if(i&1&&Qt(T1,5),i&2){let s;bt(s=Et())&&(o.cancelDialog=s.first)}},standalone:!0,features:[te],decls:55,vars:10,consts:[["cancelDialog",""],[1,"form-container"],[3,"formGroup"],[1,"input-group"],["for","name"],["id","name","type","text","formControlName","name","placeholder","Connection Name","autocomplete","off","autocapitalize","words","tabindex","1","oninput","this.value = this.value.charAt(0).toUpperCase() + this.value.slice(1)"],["class","invalid-text",4,"ngIf"],[1,"d-row"],[1,"option-container"],["id","arrtype",1,"options-bar"],["class","option","tabindex","2",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["id","monitorType",1,"options-bar"],["class","option","tabindex","3",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","url"],["id","url","type","url","formControlName","url","placeholder","Server URL Ex: http://192.168.0.15:6969","tabindex","4","autocomplete","off"],["for","api_key"],["id","apiKey","type","text","formControlName","apiKey","placeholder","APIKEY","tabindex","5","autocomplete","off"],["formArrayName","path_mappings"],["class","d-row",3,"formGroupName",4,"ngFor","ngForOf"],["id","cancel","tabindex","10",1,"animated-button","tertiary",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z"],[1,"text"],["id","cancel","tabindex","6",1,"animated-button","secondary",3,"click"],["d","m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"],["id","submit","type","submit","tabindex","7",1,"animated-button","primary",3,"click","disabled"],["d","M840-680v480q0 33-23.5 56.5T760-120H200q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h480l160 160Zm-80 34L646-760H200v560h560v-446ZM480-240q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM240-560h360v-160H240v160Zm-40-86v446-560 114Z"],[4,"ngIf"],[3,"click",4,"ngIf"],[1,"invalid-text"],["tabindex","2",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","3",1,"option",3,"click","keydown.enter","keydown.space"],[1,"d-row",3,"formGroupName"],["for","path_from"],["id","path_from","type","text","formControlName","path_from","placeholder","Arr Internal Path","tabindex","6","autocomplete","off"],["for","path_to"],["id","path_to","type","text","formControlName","path_to","placeholder","Trailarr Internal Path","tabindex","6","autocomplete","off"],["id","remove","name","Remove Path Mapping","tabindex","6",1,"icononly-button","tertiary",3,"click"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"secondary",3,"click"],["tabindex","1",1,"primary",3,"click"]],template:function(i,o){i&1&&(u(0,"div",1)(1,"h2"),p(2,"Edit Connection:"),d(),w(3,"hr"),u(4,"form",2)(5,"div",3)(6,"label",4),p(7,"Connection Name"),d(),w(8,"input",5),E(9,A1,2,0,"p",6),d(),u(10,"div",7)(11,"div",8)(12,"label"),p(13,"Arr Type: "),d(),u(14,"div",9),E(15,O1,3,5,"div",10),d()(),u(16,"div",8)(17,"label"),p(18,"Monitor Type: "),d(),u(19,"div",11),E(20,N1,3,5,"div",12),d()()(),u(21,"div",3)(22,"label",13),p(23,"Server URL"),d(),w(24,"input",14),E(25,k1,2,0,"p",6),d(),u(26,"div",3)(27,"label",15),p(28,"API Key"),d(),w(29,"input",16),E(30,P1,2,0,"p",6),d(),u(31,"h3"),p(32,"Path Mappings:"),d(),w(33,"hr"),u(34,"div",17),E(35,R1,12,1,"div",18),d(),u(36,"div",7)(37,"button",19),x("click",function(){return o.addPathMapping()}),B(),u(38,"svg",20),w(39,"path",21),d(),Ne(),u(40,"span",22),p(41,"Add Path Mapping"),d()()(),u(42,"div",7)(43,"button",23),x("click",function(){return o.onCancel()}),B(),u(44,"svg",20),w(45,"path",24),d(),Ne(),u(46,"span",22),p(47,"Cancel"),d()(),u(48,"button",25),x("click",function(){return o.onSubmit()}),B(),u(49,"svg",20),w(50,"path",26),d(),Ne(),u(51,"span",22),p(52,"submit"),d()()(),E(53,F1,2,1,"p",27),d()(),E(54,L1,11,0,"dialog",28)),i&2&&(m(4),_("formGroup",o.editConnectionForm),m(5),_("ngIf",o.name.invalid&&o.name.touched),m(6),_("ngForOf",o.arrOptions),m(5),_("ngForOf",o.monitorOptions),m(5),_("ngIf",o.url.invalid&&o.url.touched),m(5),_("ngIf",o.apiKey.invalid&&o.apiKey.touched),m(5),_("ngForOf",o.pathMappings.controls),m(13),_("disabled",!o.editConnectionForm.valid||o.editConnectionForm.untouched),m(5),_("ngIf",o.addConnResult),m(),_("ngIf",o.editConnectionForm.touched))},dependencies:[Ti,xi,Mt,nn,bi,Ii,Oo,Mi,Si,we,Se,ii],styles:[".form-container[_ngcontent-%COMP%]{width:100%;border:2px solid var(--color-outline);padding:24px;display:flex;flex-direction:column;box-sizing:border-box;position:relative;border-radius:16px;background-color:var(--color-surface-container);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.form-container[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{display:block;padding:0;border:var(--color-outline);border-radius:8px}.input-group[_ngcontent-%COMP%]{flex-grow:1;display:flex;flex-direction:column;gap:2px;margin-bottom:1rem}.input-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-right:10px;display:block;margin-bottom:5px}.input-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:auto;padding:12px;font-family:inherit;background-color:var(--color-surface-container-high);color:var(--color-on-surface);border:2px solid var(--color-outline);border-radius:8px}input.ng-touched.ng-invalid[_ngcontent-%COMP%]{border:2px solid var(--color-error);opacity:.6;background-color:var(--color-error-container);color:var(--color-on-error-container);font-weight:700}.input-group[_ngcontent-%COMP%] .invalid-text[_ngcontent-%COMP%]{color:var(--color-error)}.d-row[_ngcontent-%COMP%]{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;justify-content:space-around;align-items:center}.option-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:1rem 0 0 0}.option-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{padding:10px 10px 10px 0;display:block;margin-right:10px;background-color:var(--color-surface-container)}.option-container[_ngcontent-%COMP%] .options-bar[_ngcontent-%COMP%]{display:flex;background-color:var(--color-surface-container-high);border-radius:10px;border:.5px solid var(--color-outline)}.option-container[_ngcontent-%COMP%] .option[_ngcontent-%COMP%]{padding:10px;cursor:pointer;border-radius:10px;transition:.3s ease}.option-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background-color:var(--color-tertiary-container);font-weight:600;color:var(--color-on-tertiary-container)}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}"]});let t=e;return t})();var V1=["deleteConnectionDialog"],j1=t=>["edit",t],$1=()=>["/settings","connections","add"];function U1(t,e){t&1&&(u(0,"div",13),w(1,"div",14)(2,"div",14)(3,"div",14)(4,"div",14),d())}function B1(t,e){if(t&1&&(u(0,"p"),p(1),d()),t&2){let r=v(2);$m("result-",r.resultType,""),m(),V(r.resultMessage)}}function H1(t,e){t&1&&w(0,"img",30)}function q1(t,e){t&1&&w(0,"img",31)}function z1(t,e){if(t&1){let r=j();u(0,"div",19)(1,"h3",20),p(2),d(),u(3,"div",21)(4,"p"),p(5),d(),u(6,"p"),p(7),ke(8,"uppercase"),d(),u(9,"p"),p(10),ke(11,"date"),d()(),u(12,"a",22),E(13,H1,1,0,"img",23)(14,q1,1,0,"img",24),d(),u(15,"div",25)(16,"button",26),x("click",function(){let i=D(r).$implicit,o=v(3);return o.selectedId=i.id,b(o.showDeleteDialog())}),B(),u(17,"svg",6),w(18,"path",27),d(),Ne(),u(19,"span",8),p(20,"Delete"),d()(),u(21,"button",28),B(),u(22,"svg",6),w(23,"path",29),d(),Ne(),u(24,"span",8),p(25,"Edit"),d()()()()}if(t&2){let r=e.$implicit;m(2),V(r.name),m(3),X("Address: ",r.url,""),m(2),X("Monitor: ",Pe(8,8,r.monitor),""),m(3),X("Added: ",Pe(11,10,r.added_at),""),m(2),Qe("href",r.url,ot),m(),_("ngIf",r.arr_type=="sonarr"),m(),_("ngIf",r.arr_type=="radarr"),m(7),_("routerLink",dr(12,j1,r.id))}}function G1(t,e){if(t&1&&(u(0,"div",17),E(1,z1,26,14,"div",18),d()),t&2){let r=v(2);m(),_("ngForOf",r.connectionList)}}function W1(t,e){t&1&&(u(0,"div",32)(1,"div",33),p(2," Add New! "),d(),u(3,"p",34),p(4,`I'm all alone here!. Click the "ADD" button to add some Radarr/Sonarr instances to let the magic happen!`),d()()),t&2&&(m(),_("routerLink",ei(1,$1)))}function Z1(t,e){if(t&1&&(u(0,"h2"),p(1,"Connections"),d(),w(2,"hr"),E(3,B1,2,4,"p",15)(4,G1,2,1,"div",16)(5,W1,5,2,"ng-template",null,2,he)),t&2){let r=fe(6),n=v();m(3),_("ngIf",n.resultMessage),m(),_("ngIf",n.connectionList.length>0)("ngIfElse",r)}}var iv=(()=>{let e=class e{constructor(n,i){this._location=n,this.settingsService=i,this.connectionList=[],this.isLoading=!1,this.resultMessage="",this.resultType="",this.selectedId=0}ngOnInit(){this.getConnections()}getConnections(){this.isLoading=!0,this.settingsService.getConnections().subscribe(n=>{this.connectionList=n,this.isLoading=!1})}showDeleteDialog(){this.deleteConnectionDialog.nativeElement.showModal()}closeDeleteDialog(){this.deleteConnectionDialog.nativeElement.close()}onConfirmDelete(){this.closeDeleteDialog(),this.settingsService.deleteConnection(this.selectedId).subscribe(n=>{this.resultType="error",n.toLowerCase().includes("success")&&(this.resultType="success"),this.resultMessage=n,this.getConnections(),setTimeout(()=>{this.resultMessage=""},3e3)})}};e.\u0275fac=function(i){return new(i||e)(C(Ut),C(rn))},e.\u0275cmp=ee({type:e,selectors:[["app-show-connections"]],viewQuery:function(i,o){if(i&1&&Qt(V1,5),i&2){let s;bt(s=Et())&&(o.deleteConnectionDialog=s.first)}},standalone:!0,features:[te],decls:22,vars:2,consts:[["connectionsLoaded",""],["deleteConnectionDialog",""],["noConnections",""],[1,"sett-conn-container"],["class","loading-wave center",4,"ngIf","ngIfElse"],["routerLink","add",1,"animated-button","top-left-button"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z"],[1,"text"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"danger",3,"click"],["tabindex","1",1,"secondary",3,"click"],[1,"loading-wave","center"],[1,"loading-bar"],[3,"class",4,"ngIf"],["class","connection-container",4,"ngIf","ngIfElse"],[1,"connection-container"],["class","connection-card",4,"ngFor","ngForOf"],[1,"connection-card"],[1,"title"],[1,"content"],["target","_blank",1,"link-image",3,"href"],["src","assets/sonarr_128.png",4,"ngIf"],["src","assets/radarr_128.png",4,"ngIf"],[1,"buttons"],[1,"animated-button","secondary",3,"click"],["d","M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"],[1,"animated-button","primary",3,"routerLink"],["d","M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z"],["src","assets/sonarr_128.png"],["src","assets/radarr_128.png"],[1,"center"],[1,"all-empty-card","center",3,"routerLink"],[1,"text-primary"]],template:function(i,o){if(i&1){let s=j();u(0,"div",3),E(1,U1,5,0,"div",4),u(2,"button",5),B(),u(3,"svg",6),w(4,"path",7),d(),Ne(),u(5,"span",8),p(6,"Add New"),d()(),E(7,Z1,7,3,"ng-template",null,0,he),d(),u(9,"dialog",9,1),x("click",function(){return D(s),b(o.closeDeleteDialog())}),u(11,"div",10),x("click",function(l){return D(s),b(l.stopPropagation())}),u(12,"h2"),p(13,"Delete Connection"),d(),u(14,"p"),p(15,"This will Delete the connection and no longer monitor its Media"),d(),u(16,"p"),p(17,"Delete the connection?"),d(),u(18,"button",11),x("click",function(){return D(s),b(o.onConfirmDelete())}),p(19,"Delete"),d(),u(20,"button",12),x("click",function(){return D(s),b(o.closeDeleteDialog())}),p(21,"Cancel"),d()()()}if(i&2){let s=fe(8);m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[Rn,Se,we,lt,ii],styles:[".sett-conn-container[_ngcontent-%COMP%]{height:100%;width:100%;display:flex;flex-direction:column;position:relative;gap:12px}.top-left-button[_ngcontent-%COMP%]{position:absolute;top:0;right:0;margin:10px}.center[_ngcontent-%COMP%]{margin:auto}.result-success[_ngcontent-%COMP%]{padding:10px;display:block;border-radius:4px;color:var(--color-success-text);background-color:var(--color-success)}.result-error[_ngcontent-%COMP%]{padding:10px;display:block;border-radius:4px;color:var(--color-error-text);background-color:var(--color-error)}.connection-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem}.connection-card[_ngcontent-%COMP%]{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr auto;gap:10px;max-width:500px;padding:12px;border:2px solid var(--color-outline);border-radius:8px;background-color:var(--color-surface-container);color:var(--color-on-surface)}.connection-card[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{grid-row:1;grid-column:1 / span 2;color:var(--color-primary);text-align:center}.connection-card[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{grid-row:2;grid-column:1}.connection-card[_ngcontent-%COMP%] .link-image[_ngcontent-%COMP%]{grid-row:2;grid-column:2;width:auto}.connection-card[_ngcontent-%COMP%] .buttons[_ngcontent-%COMP%]{grid-row:3;grid-column:1 / span 2;display:flex;justify-content:space-between}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}"]});let t=e;return t})();var ov=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["app-settings"]],standalone:!0,features:[te],decls:10,vars:0,consts:[[1,"settingsnav"],["routerLink","connections","routerLinkActive","active",1,"setnav-btn"],["routerLink","trailer","routerLinkActive","active",1,"setnav-btn"],["routerLink","about","routerLinkActive","active",1,"setnav-btn"],[1,"settings-container"],[1,"settings-content"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"a",1),p(2,"Connections"),d(),u(3,"a",2),p(4,"Trailer"),d(),u(5,"a",3),p(6,"About"),d()(),u(7,"div",4)(8,"div",5),w(9,"router-outlet"),d()())},dependencies:[lt,Ja,_r],styles:[".settings-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:1rem}@media (width < 765px){.settings-container[_ngcontent-%COMP%]{padding:.5rem}}.settingsnav[_ngcontent-%COMP%]{position:sticky;top:0;left:0;right:0;z-index:99;margin:0;padding:0;display:flex;flex-direction:row;background-color:var(--color-surface-container-high);color:var(--color-on-surface)}@media (width < 765px){.settingsnav[_ngcontent-%COMP%]{order:2;justify-content:space-around;position:fixed;top:auto;bottom:78px}}.settingsnav[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1}.settings-content[_ngcontent-%COMP%]{order:2;padding:.5rem}@media (width < 765px){.settings-content[_ngcontent-%COMP%]{margin-bottom:80px;order:1}}.setnav-btn[_ngcontent-%COMP%]{margin:0;padding:.8rem;box-sizing:border-box;text-decoration:none;color:inherit;text-align:center;font-weight:400;transition:.3s;cursor:pointer;border-radius:0;border-bottom:2px solid transparent}.setnav-btn.active[_ngcontent-%COMP%]{background-color:var(--color-secondary-container);opacity:1;font-weight:600;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}.setnav-btn[_ngcontent-%COMP%]:not(.active):hover{background-color:var(--color-secondary-container);opacity:.6;font-weight:500;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}"]});let t=e;return t})();function Q1(t,e){if(t&1&&(u(0,"div",15),p(1),d()),t&2){let r=e.$implicit;J("error",r.toLowerCase().includes("error")),m(),X(" ",r," ")}}function Y1(t,e){t&1&&(u(0,"div",16)(1,"strong"),p(2,"Warning:"),d(),p(3," Debug mode is enabled, disable it if not needed! "),d())}function K1(t,e){if(t&1){let r=j();u(0,"div",17),x("click",function(){let i=D(r).$implicit,o=v();return b(o.updateSetting("debug",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v();return b(o.updateSetting("debug",i))})("keydown.space",function(){let i=D(r).$implicit,o=v();return b(o.updateSetting("debug",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v();J("selected",r===(n.settings==null?null:n.settings.debug)),m(),X(" ",r," ")}}function J1(t,e){if(t&1){let r=j();u(0,"div",18),x("click",function(){let i=D(r).$implicit,o=v();return b(o.updateSetting("monitor_enabled",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v();return b(o.updateSetting("monitor_enabled",i))})("keydown.space",function(){let i=D(r).$implicit,o=v();return b(o.updateSetting("monitor_enabled",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v();J("selected",r===(n.settings==null?null:n.settings.monitor_enabled)),m(),X(" ",r," ")}}function X1(t,e){if(t&1){let r=j();u(0,"button",23),x("click",function(){D(r);let i=v(2);return b(i.updateSetting("monitor_interval",i.monitorInterval))}),B(),u(1,"svg",24),w(2,"path",25),d()()}}function eS(t,e){if(t&1){let r=j();u(0,"div",5)(1,"div",6)(2,"label",19),p(3,"Monitor Interval"),d(),u(4,"small"),p(5,"Frequency (in minutes) to get new media data from Radarr/Sonarr."),d(),u(6,"small"),p(7,"Default is 60. Minuimum is 10."),d()(),u(8,"div",20)(9,"input",21),Kt("ngModelChange",function(i){D(r);let o=v();return gn(o.monitorInterval,i)||(o.monitorInterval=i),b(i)}),d(),E(10,X1,3,0,"button",22),d()()}if(t&2){let r=v();m(9),Yt("ngModel",r.monitorInterval),m(),_("ngIf",(r.settings==null?null:r.settings.monitor_interval)!=r.monitorInterval)}}function tS(t,e){if(t&1){let r=j();u(0,"div",34),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("wait_for_media",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("wait_for_media",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("wait_for_media",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.wait_for_media)),m(),X(" ",r," ")}}function nS(t,e){if(t&1){let r=j();u(0,"div",34),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_folder_movie",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_folder_movie",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_folder_movie",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_folder_movie)),m(),X(" ",r," ")}}function rS(t,e){if(t&1){let r=j();u(0,"div",35),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_folder_series",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_folder_series",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_folder_series",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_folder_series)),m(),X(" ",r," ")}}function iS(t,e){if(t&1&&(u(0,"section",4)(1,"h1"),p(2,"Files"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",26),p(7,"Wait for Media"),d(),u(8,"small"),p(9,"Wait for media to be imported into Radarr/Sonarr before downloading trailers."),d()(),u(10,"div",27),E(11,tS,2,3,"div",28),d()(),u(12,"div",5)(13,"div",6)(14,"label",29),p(15,"Trailer Folder Movie"),d(),u(16,"small"),p(17,"Save trailer file in a 'Trailers' folder inside Movie folder."),d()(),u(18,"div",30),E(19,nS,2,3,"div",28),d()(),u(20,"div",5)(21,"div",6)(22,"label",31),p(23,"Trailer Folder Series"),d(),u(24,"small"),p(25,"Save trailer file in a 'Trailers' folder inside Series folder."),d()(),u(26,"div",32),E(27,rS,2,3,"div",33),d()()()),t&2){let r=v();m(11),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions)}}function oS(t,e){if(t&1){let r=j();u(0,"button",51),x("click",function(){D(r);let i=v(2);return b(i.updateSetting("trailer_resolution",i.resolution))}),B(),u(1,"svg",24),w(2,"path",25),d()()}}function sS(t,e){if(t&1){let r=j();u(0,"div",52),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_file_format",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_file_format",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_file_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_file_format)),m(),X(" ",r," ")}}function aS(t,e){if(t&1){let r=j();u(0,"div",53),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_video_format",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_video_format",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_video_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_video_format)),m(),X(" ",r," ")}}function lS(t,e){if(t&1){let r=j();u(0,"div",54),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_audio_format",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_audio_format",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_audio_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_audio_format)),m(),X(" ",r," ")}}function cS(t,e){if(t&1){let r=j();u(0,"div",55),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_subtitles_enabled",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_subtitles_enabled",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_subtitles_enabled",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_subtitles_enabled)),m(),X(" ",r," ")}}function uS(t,e){if(t&1){let r=j();u(0,"div",59),x("click",function(){let i=D(r).$implicit,o=v(3);return b(o.updateSetting("trailer_subtitles_format",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(3);return b(o.updateSetting("trailer_subtitles_format",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(3);return b(o.updateSetting("trailer_subtitles_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(3);J("selected",r===(n.settings==null?null:n.settings.trailer_subtitles_format)),m(),X(" ",r," ")}}function dS(t,e){if(t&1&&(u(0,"div",5)(1,"div",6)(2,"label",56),p(3,"Trailer Subtitles Format"),d(),u(4,"small"),p(5,"Final subtitles format in the trailer file."),d()(),u(6,"div",57),E(7,uS,2,3,"div",58),d()()),t&2){let r=v(2);m(7),_("ngForOf",r.subtitleFormats)}}function fS(t,e){if(t&1){let r=j();u(0,"button",63),x("click",function(){D(r);let i=v(3);return b(i.updateSetting("trailer_subtitles_language",i.subtitleLanguage))}),B(),u(1,"svg",24),w(2,"path",25),d()()}}function pS(t,e){if(t&1){let r=j();u(0,"div",5)(1,"div",6)(2,"label",60),p(3,"Trailer Subtitles Language"),d(),u(4,"small"),p(5,"Subtitles language of the trailer file. 2-letter ISO language code."),d()(),u(6,"div",20)(7,"input",61),Kt("ngModelChange",function(i){D(r);let o=v(2);return gn(o.subtitleLanguage,i)||(o.subtitleLanguage=i),b(i)}),d(),E(8,fS,3,0,"button",62),d()()}if(t&2){let r=v(2);m(7),Yt("ngModel",r.subtitleLanguage),m(),_("ngIf",r.subtitleLanguage!=(r.settings==null?null:r.settings.trailer_subtitles_language))}}function hS(t,e){if(t&1){let r=j();u(0,"section",4)(1,"h1"),p(2,"Trailer"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",36),p(7,"Trailer Resolution"),d(),u(8,"small"),p(9,"Resolution of the trailer video file."),d(),u(10,"small"),p(11,"Valid values: 240, 360, 480, 720, 1080, 1440, 2160"),d()(),u(12,"div",20)(13,"input",37),Kt("ngModelChange",function(i){D(r);let o=v();return gn(o.resolution,i)||(o.resolution=i),b(i)}),d(),E(14,oS,3,0,"button",38),d()(),u(15,"div",5)(16,"div",6)(17,"label",39),p(18,"Trailer File Format"),d(),u(19,"small"),p(20,"Final file format(extension) of the trailer file."),d()(),u(21,"div",40),E(22,sS,2,3,"div",41),d()(),u(23,"div",5)(24,"div",6)(25,"label",42),p(26,"Trailer Video Format"),d(),u(27,"small"),p(28,"Final video format(codec) of the trailer file."),d()(),u(29,"div",43),E(30,aS,2,3,"div",44),d()(),u(31,"div",5)(32,"div",6)(33,"label",45),p(34,"Trailer Audio Format"),d(),u(35,"small"),p(36,"Final audio format(codec) of the trailer file."),d()(),u(37,"div",46),E(38,lS,2,3,"div",47),d()(),u(39,"div",5)(40,"div",6)(41,"label",48),p(42,"Trailer Subtitles Enabled"),d(),u(43,"small"),p(44,"Download subtitles and added them to trailer file, if available."),d()(),u(45,"div",49),E(46,cS,2,3,"div",50),d()(),E(47,dS,8,1,"div",13)(48,pS,9,2,"div",13),d()}if(t&2){let r=v();m(13),Yt("ngModel",r.resolution),m(),_("ngIf",(r.settings==null?null:r.settings.trailer_resolution)!=r.resolution),m(8),_("ngForOf",r.fileFormats),m(8),_("ngForOf",r.videoFormats),m(8),_("ngForOf",r.audioFormats),m(8),_("ngForOf",r.trueFalseOptions),m(),_("ngIf",r.settings==null?null:r.settings.trailer_subtitles_enabled),m(),_("ngIf",r.settings==null?null:r.settings.trailer_subtitles_enabled)}}function mS(t,e){if(t&1){let r=j();u(0,"div",73),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_embed_metadata",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_embed_metadata",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_embed_metadata",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_embed_metadata)),m(),X(" ",r," ")}}function gS(t,e){if(t&1){let r=j();u(0,"div",74),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_remove_sponsorblocks",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_remove_sponsorblocks",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_remove_sponsorblocks",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_remove_sponsorblocks)),m(),X(" ",r," ")}}function vS(t,e){if(t&1){let r=j();u(0,"div",75),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_web_optimized",i))})("keydown.enter",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_web_optimized",i))})("keydown.space",function(){let i=D(r).$implicit,o=v(2);return b(o.updateSetting("trailer_web_optimized",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=v(2);J("selected",r===(n.settings==null?null:n.settings.trailer_web_optimized)),m(),X(" ",r," ")}}function yS(t,e){if(t&1&&(u(0,"section",4)(1,"h1"),p(2,"Other Options"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",64),p(7,"Trailer Embed Metadata"),d(),u(8,"small"),p(9,"Embed info from youtube video into the trailer file."),d()(),u(10,"div",65),E(11,mS,2,3,"div",66),d()(),u(12,"div",5)(13,"div",6)(14,"label",67),p(15,"Trailer Remove SponsorBlocks"),d(),u(16,"small"),p(17,"Remove Sponsor Blocks like intro, outro blocks from youtube video if available."),d()(),u(18,"div",68),E(19,gS,2,3,"div",69),d()(),u(20,"div",5)(21,"div",6)(22,"label",70),p(23,"Trailer Web Optimized"),d(),u(24,"small"),p(25,"Enabling this will convert the video to a web optimized video, useful for streaming video over network, might slightly increase file size."),d()(),u(26,"div",71),E(27,vS,2,3,"div",72),d()()()),t&2){let r=v();m(11),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions)}}function _S(t,e){if(t&1){let r=j();u(0,"button",79),x("click",function(){D(r);let i=v(2);return b(i.updateSetting("yt_cookies_path",i.ytCookiesPath))}),B(),u(1,"svg",24),w(2,"path",25),d()()}}function wS(t,e){if(t&1){let r=j();u(0,"section",4)(1,"h1"),p(2,"Advanced Options"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",76),p(7,"Yt-dlp Cookies Path"),d(),u(8,"small"),p(9,"Use cookies from a file for downloading trailers with yt-dlp."),d()(),u(10,"div",20)(11,"input",77),Kt("ngModelChange",function(i){D(r);let o=v();return gn(o.ytCookiesPath,i)||(o.ytCookiesPath=i),b(i)}),d(),E(12,_S,3,0,"button",78),d()()()}if(t&2){let r=v();m(11),Yt("ngModel",r.ytCookiesPath),m(),_("ngIf",r.subtitleLanguage!=(r.settings==null?null:r.settings.yt_cookies_path))}}var sv=(()=>{let e=class e{constructor(n){this.settingsService=n,this.updateResults=[],this.monitorInterval=60,this.resolution=1080,this.subtitleLanguage="en",this.trueFalseOptions=[!0,!1],this.fileFormats=["mkv","mp4","webm"],this.audioFormats=["aac","ac3","eac3","flac","opus"],this.videoFormats=["h264","h265","vp8","vp9","av1"],this.subtitleFormats=["srt","vtt","pgs"],this.ytCookiesPath=""}ngOnInit(){this.getSettings()}getSettings(){this.settingsService.getSettings().subscribe(n=>{this.settings=n,this.monitorInterval=n.monitor_interval,this.resolution=n.trailer_resolution,this.subtitleLanguage=n.trailer_subtitles_language})}updateSetting(n,i){this.settings&&this.settings[n]===i||this.settingsService.updateSetting(n,i).subscribe(o=>{this.updateResults.push(o),this.getSettings(),setTimeout(()=>{this.updateResults.shift()},3e3)})}};e.\u0275fac=function(i){return new(i||e)(C(rn))},e.\u0275cmp=ee({type:e,selectors:[["app-trailer"]],standalone:!0,features:[te],decls:31,vars:9,consts:[[1,"message-container"],["class","update-message",3,"error",4,"ngFor","ngForOf"],[1,"trailer-container"],["class","update-message error",4,"ngIf"],[1,"section"],[1,"trailer-content"],[1,"content-label"],["for","debug"],["id","debug",1,"options-bar"],["class","option","tabindex","1",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","monitor_enabled"],["id","monitor_enabled",1,"options-bar"],["class","option","tabindex","2",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["class","trailer-content",4,"ngIf"],["class","section",4,"ngIf"],[1,"update-message"],[1,"update-message","error"],["tabindex","1",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","2",1,"option",3,"click","keydown.enter","keydown.space"],["for","monitor_interval"],[1,"text-input"],["id","monitor_interval","type","number","maxlength","6","placeholder","Monitor Interval","autocomplete","off","tabindex","3",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_monitor_interval","tabindex","4",3,"click",4,"ngIf"],["id","update_monitor_interval","tabindex","4",1,"primary","icononly-button",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z"],["for","wait_for_media"],["id","wait_for_media",1,"options-bar"],["class","option","tabindex","5",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_folder_movie"],["id","trailer_folder_movie",1,"options-bar"],["for","trailer_folder_series"],["id","trailer_folder_series",1,"options-bar"],["class","option","tabindex","6",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["tabindex","5",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","6",1,"option",3,"click","keydown.enter","keydown.space"],["for","trailer_resolution"],["id","trailer_resolution","type","number","maxlength","4","placeholder","Trailer Resolution","autocomplete","off","tabindex","7",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_trailer_resolution","tabindex","8",3,"click",4,"ngIf"],["for","trailer_file_format"],["id","trailer_file_format",1,"options-bar"],["class","option","tabindex","9",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_video_format"],["id","trailer_video_format",1,"options-bar"],["class","option","tabindex","10",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_audio_format"],["id","trailer_audio_format",1,"options-bar"],["class","option","tabindex","11",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_subtitles_enabled"],["id","trailer_subtitles_enabled",1,"options-bar"],["class","option","tabindex","12",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["id","update_trailer_resolution","tabindex","8",1,"primary","icononly-button",3,"click"],["tabindex","9",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","10",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","11",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","12",1,"option",3,"click","keydown.enter","keydown.space"],["for","trailer_subtitles_format"],["id","trailer_subtitles_format",1,"options-bar"],["class","option","tabindex","13",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["tabindex","13",1,"option",3,"click","keydown.enter","keydown.space"],["for","trailer_subtitles_language"],["id","trailer_subtitles_language","type","text","placeholder","Trailer Subtitles Language","autocomplete","off","tabindex","14",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_trailer_subtitles_language","tabindex","15",3,"click",4,"ngIf"],["id","update_trailer_subtitles_language","tabindex","15",1,"primary","icononly-button",3,"click"],["for","trailer_embed_metadata"],["id","trailer_embed_metadata",1,"options-bar"],["class","option","tabindex","16",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_remove_sponsorblocks"],["id","trailer_remove_sponsorblocks",1,"options-bar"],["class","option","tabindex","17",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_web_optimized"],["id","trailer_web_optimized",1,"options-bar"],["class","option","tabindex","18",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["tabindex","16",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","17",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","18",1,"option",3,"click","keydown.enter","keydown.space"],["for","yt_cookies_path"],["id","yt_cookies_path","type","text","placeholder","Yt-dlp cookies path","autocomplete","off","tabindex","19",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_yt_cookies_path","tabindex","20",3,"click",4,"ngIf"],["id","update_yt_cookies_path","tabindex","20",1,"primary","icononly-button",3,"click"]],template:function(i,o){i&1&&(u(0,"div",0),E(1,Q1,2,3,"div",1),d(),u(2,"div",2),E(3,Y1,4,0,"div",3),u(4,"section",4)(5,"h1"),p(6,"General"),d(),w(7,"hr"),u(8,"div",5)(9,"div",6)(10,"label",7),p(11,"Debug Mode"),d(),u(12,"small"),p(13,"Set app into Debug mode, this will generate too much log data!"),d(),u(14,"small"),p(15,"Use this only when requested!!!"),d()(),u(16,"div",8),E(17,K1,2,3,"div",9),d()(),u(18,"div",5)(19,"div",6)(20,"label",10),p(21,"Monitor Trailers"),d(),u(22,"small"),p(23,"Monitor media from Radarr/Sonarr to download trailers."),d()(),u(24,"div",11),E(25,J1,2,3,"div",12),d()(),E(26,eS,11,2,"div",13),d(),E(27,iS,28,3,"section",14)(28,hS,49,8,"section",14)(29,yS,28,3,"section",14)(30,wS,13,2,"section",14),d()),i&2&&(m(),_("ngForOf",o.updateResults),m(2),_("ngIf",o.settings==null?null:o.settings.debug),m(14),_("ngForOf",o.trueFalseOptions),m(8),_("ngForOf",o.trueFalseOptions),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled))},dependencies:[Se,we,St,Mt,of,nn,lf,Cr],styles:[".trailer-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.message-container[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;align-items:center;gap:1rem;position:fixed;top:5rem;right:3rem;z-index:999;max-width:25%}@media (width < 768px){.message-container[_ngcontent-%COMP%]{max-width:80%;right:1rem}}.update-message[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:center;align-items:center;padding:.5rem;border-radius:.5rem;font-weight:700;color:var(--color-success-text);background-color:var(--color-success);animation:_ngcontent-%COMP%_slideInDown .3s ease-out forwards}.error[_ngcontent-%COMP%]{color:var(--color-warning-text);background-color:var(--color-warning)}.trailer-content[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;margin:1.5rem .5rem;gap:1rem}.content-label[_ngcontent-%COMP%]{display:flex;flex-direction:column;text-align:left;gap:.5rem;width:60%}.trailer-content[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:700;text-wrap:nowrap}.trailer-content[_ngcontent-%COMP%] > svg[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem;cursor:pointer;fill:var(--color-success)}.trailer-content[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(2){text-decoration:none;text-align:left;margin:0;padding:.25rem}.text-input[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:.5rem}.text-input[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{width:5rem;height:3rem;padding:.25rem;text-align:center;font-family:inherit;background-color:var(--color-surface-container-high);color:var(--color-on-surface);border:1px solid var(--color-outline);border-radius:.5rem}.options-bar[_ngcontent-%COMP%]{display:flex;background-color:var(--color-surface-container-high);border-radius:10px;border:.5px solid var(--color-outline)}.options-bar[_ngcontent-%COMP%] > .option[_ngcontent-%COMP%]{padding:10px;cursor:pointer;border-radius:10px;transition:.3s ease}.options-bar[_ngcontent-%COMP%] > .selected[_ngcontent-%COMP%]{background-color:var(--color-tertiary-container);font-weight:600;color:var(--color-on-tertiary-container)}@media screen and (max-width: 768px){.trailer-content[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:.25rem}.content-label[_ngcontent-%COMP%]{width:100%}}@keyframes _ngcontent-%COMP%_slideInDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}"]});let t=e;return t})();var av=(()=>{let e=class e{constructor(n){this.http=n,this.tasksUrl=Te.apiUrl+Te.tasks,this.schedulesUrl=this.tasksUrl+"schedules",this.queueUrl=this.tasksUrl+"queue"}convertTime(n){let i=[{unit:"second",value:60},{unit:"minute",value:60},{unit:"hour",value:24},{unit:"day",value:7}];for(let{unit:o,value:s}of i){if(nObject.entries(n).map(([i,o])=>K(M({id:i},o),{interval:this.convertTime(o.interval),last_run_duration:this.formatDuration(o.last_run_duration),last_run_start:this.convertDate(o.last_run_start),next_run:this.convertDate(o.next_run)}))))}getQueuedTasks(){return this.http.get(this.queueUrl).pipe(A(n=>Object.entries(n).map(([i,o])=>K(M({id:i},o),{duration:this.formatDuration(o.duration),finished:this.convertDate(o.finished),started:this.convertDate(o.started)}))))}runScheduledTask(n){return this.http.get(this.tasksUrl+"run/"+n)}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function DS(t,e){t&1&&(u(0,"div",5),w(1,"div",6)(2,"div",6)(3,"div",6)(4,"div",6),d())}function bS(t,e){if(t&1){let r=j();u(0,"tr",12)(1,"td",10),p(2),d(),u(3,"td"),p(4),d(),u(5,"td"),p(6),ke(7,"timeago"),d(),u(8,"td"),p(9),d(),u(10,"td"),p(11),d(),u(12,"td"),p(13),ke(14,"timeago"),d(),u(15,"td",13),x("click",function(){let i=D(r).$implicit,o=v(2);return b(o.runTask(i.task_id))}),B(),u(16,"svg",14),w(17,"path",15),d()()()}if(t&2){let r=e.$implicit;m(2),V(r.name),m(2),V(r.interval),m(2),V(r.last_run_start?Pe(7,6,r.last_run_start):"Not run yet"),m(3),V(r.last_run_status),m(2),V(r.last_run_duration),m(2),V(r.next_run?Pe(14,8,r.next_run):"Not scheduled")}}function ES(t,e){if(t&1&&(u(0,"div",7)(1,"table",8)(2,"tr",9)(3,"th",10),p(4,"Name"),d(),u(5,"th"),p(6,"Interval"),d(),u(7,"th"),p(8,"Last Run"),d(),u(9,"th"),p(10,"Last Run Status"),d(),u(11,"th"),p(12,"Last Run Duration"),d(),u(13,"th"),p(14,"Next Run"),d(),w(15,"th"),d(),E(16,bS,18,10,"tr",11),d()()),t&2){let r=v();m(16),_("ngForOf",r.scheduledTasks)}}function xS(t,e){t&1&&(u(0,"div",5),w(1,"div",6)(2,"div",6)(3,"div",6)(4,"div",6),d())}function IS(t,e){if(t&1&&(u(0,"tr",12)(1,"td",10),p(2),d(),u(3,"td"),p(4),d(),u(5,"td"),p(6),ke(7,"timeago"),d(),u(8,"td"),p(9),ke(10,"timeago"),d(),u(11,"td"),p(12),d()()),t&2){let r=e.$implicit;m(2),V(r.name),m(2),V(r.status),m(2),V(r.started?Pe(7,5,r.started):"Pending"),m(3),V(r.finished?Pe(10,7,r.finished):"-"),m(3),V(r.duration)}}function MS(t,e){if(t&1&&(u(0,"div",16)(1,"table",8)(2,"tr",9)(3,"th",10),p(4,"Name"),d(),u(5,"th"),p(6,"Status"),d(),u(7,"th"),p(8,"Started"),d(),u(9,"th"),p(10,"Finished"),d(),u(11,"th"),p(12,"Duration"),d()(),E(13,IS,13,9,"tr",11),d()()),t&2){let r=v();m(13),_("ngForOf",r.queuedTasks)}}var lv=(()=>{let e=class e{constructor(n,i){this.tasksService=n,this.websocketService=i,this.scheduledTasks=[],this.queuedTasks=[],this.isLoading1=!0,this.isLoading2=!0}ngOnInit(){this.refreshTaskData();let n=()=>{this.refreshTaskData()},i=()=>{clearTimeout(this.timeoutRef),this.webSocketSubscription?.unsubscribe()};this.webSocketSubscription=this.websocketService.connect().subscribe({next:n,error:i,complete:i})}getSecondsToNextScheduledEvent(n,i){let o=30;for(let s of i)if(s.status==="Running")return 10;for(let s of n){let a=new Date().getTime(),l=s.next_run.getTime(),c=Math.floor((l-a)/1e3)+2;if(c=Math.max(c,3),c===3)return 3;o=Math.min(o,c)}return o}refreshTaskData(){clearTimeout(this.timeoutRef),this.tasksService.getScheduledTasks().subscribe(i=>{this.scheduledTasks=i,this.isLoading1=!1}),this.tasksService.getQueuedTasks().subscribe(i=>{this.queuedTasks=i,this.isLoading2=!1});let n=this.getSecondsToNextScheduledEvent(this.scheduledTasks,this.queuedTasks);this.timeoutRef=setTimeout(()=>{this.refreshTaskData()},n*1e3)}ngOnDestroy(){clearTimeout(this.timeoutRef),this.webSocketSubscription?.unsubscribe()}runTask(n){console.log("Running task with id:",n),this.tasksService.runScheduledTask(n).subscribe(i=>{console.log(i)})}};e.\u0275fac=function(i){return new(i||e)(C(av),C(Oi))},e.\u0275cmp=ee({type:e,selectors:[["app-tasks"]],standalone:!0,features:[st([]),te],decls:13,vars:4,consts:[["schedulesLoaded",""],["queueLoaded",""],[1,"tasks-container"],[1,"text-heading"],["class","loading-wave center",4,"ngIf","ngIfElse"],[1,"loading-wave","center"],[1,"loading-bar"],[1,"table-container"],[1,"tasks-table"],[1,"table-row","header"],[1,"name"],["class","table-row",4,"ngFor","ngForOf"],[1,"table-row"],["title","Run task now",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M382-306.67 653.33-480 382-653.33v346.66ZM480-80q-82.33 0-155.33-31.5-73-31.5-127.34-85.83Q143-251.67 111.5-324.67T80-480q0-83 31.5-156t85.83-127q54.34-54 127.34-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82.33-31.5 155.33-31.5 73-85.5 127.34Q709-143 636-111.5T480-80Z"],[1,"table-container","last-table"]],template:function(i,o){if(i&1&&(u(0,"div",2)(1,"div",3),p(2,"Scheduled"),d(),w(3,"hr"),E(4,DS,5,0,"div",4)(5,ES,17,1,"ng-template",null,0,he),u(7,"div",3),p(8,"Queue"),d(),w(9,"hr"),E(10,xS,5,0,"div",4)(11,MS,14,1,"ng-template",null,1,he),d()),i&2){let s=fe(6),a=fe(12);m(4),_("ngIf",o.isLoading1)("ngIfElse",s),m(6),_("ngIf",o.isLoading1)("ngIfElse",a)}},dependencies:[Se,we,_i,el],styles:[".tasks-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:1rem}@media (width < 765px){.tasks-container[_ngcontent-%COMP%]{padding:.5rem}}.text-heading[_ngcontent-%COMP%]{margin-top:1rem;text-align:left;font-size:2rem}.center[_ngcontent-%COMP%]{margin:auto}.table-container[_ngcontent-%COMP%]{width:100%;overflow-x:auto;min-height:25%;-webkit-overflow-scrolling:touch;margin-top:.5rem;margin-bottom:2rem}.last-table[_ngcontent-%COMP%]{margin-bottom:0}.tasks-table[_ngcontent-%COMP%]{width:100%;max-width:100%;white-space:nowrap;border-collapse:collapse}.tasks-table[_ngcontent-%COMP%] .table-row[_ngcontent-%COMP%]{border-bottom:1px solid var(--color-outline);white-space:nowrap;text-align:left}.tasks-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .tasks-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:1rem .5rem}.tasks-table[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{font-weight:700;border-bottom:2px solid var(--color-outline)}.tasks-table[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{width:100%}.table-row[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{margin:0 .5rem;width:1rem;fill:var(--color-primary)}.table-row[_ngcontent-%COMP%]:hover:not(:first-child){background-color:var(--color-tertiary-container)}"]});let t=e;return t})();var cv=[{path:"",redirectTo:"home",pathMatch:"full"},{path:"home",component:Z0},{path:"movies",component:pf},{path:"movies/:id",component:ff},{path:"series",component:pf},{path:"series/:id",component:ff},{path:"tasks",component:lv},{path:"logs",component:Y0},{path:"settings",component:ov,children:[{path:"",redirectTo:"trailer",pathMatch:"full"},{path:"connections",component:nv,children:[{path:"",component:iv},{path:"add",component:tv},{path:"edit/:id",component:rv}]},{path:"trailer",component:sv},{path:"about",component:ev}]}];var uv={providers:[g0(cv),Xu(),{provide:Wu,useValue:{timezone:"UTC"}},nu(_i.forRoot())]};var dv=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["app-sidenav"]],standalone:!0,features:[te],decls:31,vars:0,consts:[[1,"navmenu"],["routerLink","home","routerLinkActive","active",1,"sidenav-button"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"icon"],["d","M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z"],[1,"btntext"],["routerLink","movies","routerLinkActive","active",1,"sidenav-button"],["d","m160-800 80 160h120l-80-160h80l80 160h120l-80-160h80l80 160h120l-80-160h120q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800Zm0 240v320h640v-320H160Zm0 0v320-320Z"],["routerLink","series","routerLinkActive","active",1,"sidenav-button"],["d","M320-120v-80H160q-33 0-56.5-23.5T80-280v-480q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v480q0 33-23.5 56.5T800-200H640v80H320ZM160-280h640v-480H160v480Zm0 0v-480 480Z"],["routerLink","tasks","routerLinkActive","active",1,"sidenav-button"],["d","M200-640h560v-80H200v80Zm0 0v-80 80Zm0 560q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v227q-19-9-39-15t-41-9v-43H200v400h252q7 22 16.5 42T491-80H200Zm520 40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40Zm67-105 28-28-75-75v-112h-40v128l87 87Z"],["routerLink","logs","routerLinkActive","active",1,"sidenav-button"],["d","M280-280h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm-80 480q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm0-560v560-560Z"],["routerLink","settings","routerLinkActive","active",1,"sidenav-button"],["d","m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"a",1),B(),u(2,"svg",2),w(3,"path",3),d(),Ne(),u(4,"span",4),p(5,"Home"),d()(),u(6,"a",5),B(),u(7,"svg",2),w(8,"path",6),d(),Ne(),u(9,"span",4),p(10,"Movies"),d()(),u(11,"a",7),B(),u(12,"svg",2),w(13,"path",8),d(),Ne(),u(14,"span",4),p(15,"Series"),d()(),u(16,"a",9),B(),u(17,"svg",2),w(18,"path",10),d(),Ne(),u(19,"span",4),p(20,"Tasks"),d()(),u(21,"a",11),B(),u(22,"svg",2),w(23,"path",12),d(),Ne(),u(24,"span",4),p(25,"Logs"),d()(),u(26,"a",13),B(),u(27,"svg",2),w(28,"path",14),d(),Ne(),u(29,"span",4),p(30,"Settings"),d()()())},dependencies:[lt,Ja],styles:[".navmenu[_ngcontent-%COMP%]{overflow:auto;width:210px;height:100%;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:column;align-items:start;justify-items:stretch}.sidenav-button[_ngcontent-%COMP%]{margin:0;padding:1rem 1rem 1rem 2rem;box-sizing:border-box;width:100%;text-decoration:none;color:inherit;text-align:start;font-weight:400;display:flex;align-items:center;transition:.3s;cursor:pointer;border-radius:0;border-bottom:2px solid transparent}.sidenav-button.active[_ngcontent-%COMP%]{background-color:var(--color-secondary-container);opacity:1;font-weight:600;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}.sidenav-button[_ngcontent-%COMP%]:not(.active):hover{background-color:var(--color-secondary-container);opacity:.6;font-weight:500;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}.sidenav-button[_ngcontent-%COMP%]:first-child{margin-top:.25rem}.sidenav-button[_ngcontent-%COMP%]:last-child{margin-bottom:auto}.sidenav-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:0;margin-right:.5rem;height:1.75rem;width:1.75rem;padding:.25rem}@media (max-width: 1100px){.navmenu[_ngcontent-%COMP%]{width:auto}.sidenav-button[_ngcontent-%COMP%]{padding:1rem}.sidenav-button[_ngcontent-%COMP%] .btntext[_ngcontent-%COMP%]{display:none}.sidenav-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:auto}}@media (max-width: 765px){.navmenu[_ngcontent-%COMP%]{flex-direction:row;width:100%;height:auto;margin:0;padding:0;padding-top:1rem;padding-bottom:1rem;justify-content:space-evenly;align-items:center}.sidenav-button[_ngcontent-%COMP%]{padding:0;width:auto;border-radius:0;border-bottom:2px solid transparent}.sidenav-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:.5rem;height:1.75rem;width:1.75rem}.sidenav-button[_ngcontent-%COMP%]:first-child{margin-top:0}.sidenav-button[_ngcontent-%COMP%]:last-child{margin-bottom:0}}"]});let t=e;return t})();var fv=(()=>{let e=class e{constructor(n){this.http=n,this.searchUrl=Te.apiUrl+Te.search}searchMedia(n){return this.http.get(`${this.searchUrl}${n}`)}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var TS=(t,e)=>[t,e];function AS(t,e){t&1&&w(0,"img",13)}function OS(t,e){t&1&&w(0,"img",14)}function NS(t,e){if(t&1){let r=j();u(0,"div",15),x("click",function(){D(r);let i=v();return b(i.searchResults=[])}),w(1,"img",16),u(2,"span",17),p(3),d()()}if(t&2){let r=e.$implicit,n=v();J("selected",r.id===n.selectedId),_("routerLink",da(6,TS,r.is_movie?"/movies":"/series",r.id)),m(),Qe("src",r.poster_path||"assets/poster-lg.png",ot),Qe("alt",r.title),m(2),V(r.title+" ("+r.year+")")}}var pv=(()=>{let e=class e{constructor(n,i,o,s){this.renderer=n,this.searchService=i,this.elementRef=o,this.router=s,this.isDarkModeEnabled=!0,this.searchQuery="",this.searchForm=new Ce,this.searchResults=[],this.selectedIndex=-1,this.selectedId=-1,this.searchForm.valueChanges.pipe(Pl(400),Fl()).subscribe(a=>{this.onSearch(a)})}clickout(n){this.elementRef.nativeElement.contains(n.target)||(this.searchResults=[],this.selectedId=-1,this.selectedIndex=-1)}disableSelection(n){this.searchResults.length>0&&(this.selectedId=-1,this.selectedIndex=-1)}handleKeyboardEvent(n){if(n.ctrlKey&&n.key==="f"){n.preventDefault(),document.getElementById("searchForm")?.querySelector("input")?.focus();return}if(this.searchResults.length>0){if(n.key==="Escape"){this.searchResults=[],this.selectedId=-1,this.selectedIndex=-1;return}let i=this.searchResults[0].id,o=this.searchResults[this.searchResults.length-1].id;if(n.key==="ArrowDown"||n.key==="Tab"&&!n.shiftKey){if(n.preventDefault(),this.selectedId===o){this.selectedIndex=0,this.selectedId=i;return}this.selectedIndex=this.selectedIndex+1,this.selectedId=this.searchResults[this.selectedIndex].id;return}else if(n.key==="ArrowUp"||n.shiftKey&&n.key==="Tab"){if(n.preventDefault(),this.selectedId===i){this.selectedIndex=this.searchResults.length-1,this.selectedId=o;return}this.selectedIndex=this.selectedIndex-1,this.selectedId=this.searchResults[this.selectedIndex].id;return}else if(n.key==="Enter"){let s=this.searchResults[this.selectedIndex];this.router.navigate([s.is_movie?"movies":"series",this.selectedId]),this.searchResults=[];return}}}ngOnInit(){let n=localStorage.getItem("theme");if(n){let i=n==="dark";this.setTheme(i)}else window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?this.setTheme(!0):this.setTheme(!1)}onThemeChange(n){this.setTheme(!!n)}setTheme(n=!0){let i=n?"dark":"light",o=n?"light":"dark";this.isDarkModeEnabled=n,this.renderer.setAttribute(document.documentElement,"theme",i),this.renderer.removeClass(document.body,o),this.renderer.addClass(document.body,i),localStorage.setItem("theme",i)}onSearch(n=""){if(n.length<3){this.searchResults=[];return}n.trim()!==this.searchQuery&&(this.searchQuery=n,this.searchService.searchMedia(this.searchQuery).subscribe(i=>{this.searchResults=i}))}};e.\u0275fac=function(i){return new(i||e)(C(jt),C(fv),C(ze),C(mi))},e.\u0275cmp=ee({type:e,selectors:[["app-topnav"]],hostBindings:function(i,o){i&1&&x("click",function(a){return o.clickout(a)},!1,lr)("mousemove",function(a){return o.disableSelection(a)},!1,lr)("keydown",function(a){return o.handleKeyboardEvent(a)},!1,lr)},standalone:!0,features:[te],decls:13,vars:7,consts:[[1,"navbar"],["routerLink","home",1,"navlogo"],["src","/assets/logos/trailarr-full-512.png","alt","Trailarr Logo","height","40","class","sm-none",4,"ngIf"],["src","/assets/logos/trailarr-full-light-512.png","alt","Trailarr Logo","height","40","class","sm-none",4,"ngIf"],["src","favicon.ico","alt","Trailarr Logo","width","30","height","30",1,"sm-show"],[1,"navsearch"],["id","searchForm",1,"navsearch-form"],["type","text","autocomplete","off","name","query","placeholder","Search for media...","aria-label","search",3,"formControl"],[1,"navsearch-results"],["class","title",3,"selected","routerLink","click",4,"ngFor","ngForOf"],[1,"switch2","sm-none"],["id","theme-switch","type","checkbox",3,"ngModelChange","ngModel"],[1,"slider2"],["src","/assets/logos/trailarr-full-512.png","alt","Trailarr Logo","height","40",1,"sm-none"],["src","/assets/logos/trailarr-full-light-512.png","alt","Trailarr Logo","height","40",1,"sm-none"],[1,"title",3,"click","routerLink"],[1,"search-poster",3,"src","alt"],[1,"search-title"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"a",1),E(2,AS,1,0,"img",2)(3,OS,1,0,"img",3),w(4,"img",4),d(),u(5,"div",5)(6,"form",6),w(7,"input",7),d(),u(8,"div",8),E(9,NS,4,9,"div",9),d()(),u(10,"label",10)(11,"input",11),Kt("ngModelChange",function(a){return gn(o.isDarkModeEnabled,a)||(o.isDarkModeEnabled=a),a}),x("ngModelChange",function(a){return o.onThemeChange(a)}),d(),w(12,"span",12),d()()),i&2&&(m(2),_("ngIf",o.isDarkModeEnabled),m(),_("ngIf",!o.isDarkModeEnabled),m(4),_("formControl",o.searchForm),m(),J("active",o.searchResults.length>0),m(),_("ngForOf",o.searchResults),m(2),Yt("ngModel",o.isDarkModeEnabled))},dependencies:[lt,St,xi,Mt,Qd,nn,bi,Cr,rf,Ti,af,Se,we],styles:['.navbar[_ngcontent-%COMP%]{padding:1rem .5rem;display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%}.navlogo[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:1.5rem;font-weight:500;color:var(--color-on-surface);text-decoration:none;margin:0;padding:0;width:210px}.navlogotext[_ngcontent-%COMP%]{margin-left:.5rem}.navsearch[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;justify-content:center;width:auto;flex-grow:1;padding:.25rem;position:relative}.navsearch-form[_ngcontent-%COMP%]{width:100%}.navsearch-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;padding:.5rem;border:1px solid var(--color-outline);border-radius:.5rem;margin:0;font-size:1rem;background-color:var(--color-surface-container-highest);color:var(--color-on-surface)}.navsearch-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{outline:var(--color-primary);border:1px solid var(--color-primary)}.navsearch-results[_ngcontent-%COMP%]{position:absolute;top:100%;left:2%;color:var(--color-on-surface);background-color:var(--color-surface-container-highest);border:.5px solid var(--color-outline);border-radius:5px;visibility:hidden;opacity:0;display:none;z-index:10}.active[_ngcontent-%COMP%]{visibility:visible;opacity:1;display:flex;flex-direction:column;max-height:40vh;max-width:60vw;overflow-x:hidden;overflow-y:auto;padding:.5rem;scroll-behavior:smooth;scroll-snap-type:y mandatory;transition:.25s}@media (width < 765px){.active[_ngcontent-%COMP%]{max-width:75vw}}.navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{display:flex;min-width:300px;width:auto;padding:.5rem;text-align:left;text-wrap:pretty;cursor:pointer}.search-poster[_ngcontent-%COMP%]{width:3rem}.search-title[_ngcontent-%COMP%]{margin:auto .5rem;text-align:left}.navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]:hover, .navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]:focus, .navsearch-results[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background-color:var(--color-surface-variant);outline:none}.navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]:focus, .navsearch-results[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{scroll-snap-align:center}@media (max-width: 900px){.navlogo[_ngcontent-%COMP%]{width:auto;padding-left:1rem;padding-right:1rem}.navlogotext[_ngcontent-%COMP%]{display:none}}.switch2[_ngcontent-%COMP%]{margin:0 1rem;display:block;--width-of-switch: 3.5em;--height-of-switch: 2em;--size-of-icon: 1.4em;--slider-offset: .3em;position:relative;width:var(--width-of-switch);height:var(--height-of-switch)}.switch2[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{opacity:0;width:0;height:0}.slider2[_ngcontent-%COMP%]{position:absolute;cursor:pointer;inset:0;background-color:#fff;transition:.5s;border-radius:30px}.slider2[_ngcontent-%COMP%]:before{position:absolute;content:"";height:var(--size-of-icon, 1.4em);width:var(--size-of-icon, 1.4em);border-radius:20px;left:var(--slider-offset, .3em);top:50%;transform:translateY(-50%);background:linear-gradient(40deg,#775651,#904b40 70%);transition:.5s}input[_ngcontent-%COMP%]:checked + .slider2[_ngcontent-%COMP%]{background-color:#140c0b}input[_ngcontent-%COMP%]:checked + .slider2[_ngcontent-%COMP%]:before{left:calc(100% - (var(--size-of-icon, 1.4em) + var(--slider-offset, .3em)));background:#140c0b;box-shadow:inset -3px -2px 5px -2px #e7bdb6,inset -10px -4px #ffb4a8}']});let t=e;return t})();var kS=["sessionEndedDialog"];function PS(t,e){if(t&1&&(u(0,"div",16)(1,"span"),p(2),d()()),t&2){let r=e.$implicit;_("ngClass",r.type.toLowerCase()),m(2),V(r.message)}}var hv=(()=>{let e=class e{constructor(n){this.websocketService=n,this.messages=[],this.IDLE_LIMIT=10*60*1e3}ngOnInit(){this.resetIdleTimer(),this.websocketSubscription=this.websocketService.connect().subscribe({next:n=>{this.messages.unshift(n),setTimeout(()=>{this.messages.pop()},3e3)},error:n=>{console.error("Error:",n)},complete:()=>{console.log("Connection closed")}}),this.toastSubscription=this.websocketService.toastMessage.subscribe({next:n=>{this.messages.unshift(n),setTimeout(()=>{this.messages.pop()},3e3)}})}resetIdleTimer(){clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.closeAllSubscriptions()},this.IDLE_LIMIT)}closeAllSubscriptions(){console.log("Session Idle, closing all subscriptions!"),this.showDialog(),this.websocketService.close(),this.websocketSubscription?.unsubscribe(),this.toastSubscription?.unsubscribe(),document.cookie="trailarr_api_key=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"}ngOnDestroy(){this.closeAllSubscriptions(),this.timeoutId&&clearTimeout(this.timeoutId)}showDialog(){this.sessionEndedDialog.nativeElement.showModal()}reloadPage(){window.location.reload()}};e.\u0275fac=function(i){return new(i||e)(C(Oi))},e.\u0275cmp=ee({type:e,selectors:[["app-root"]],viewQuery:function(i,o){if(i&1&&Qt(kS,5),i&2){let s;bt(s=Et())&&(o.sessionEndedDialog=s.first)}},hostBindings:function(i,o){i&1&&x("click",function(a){return o.resetIdleTimer(a)},!1,lr)("keypress",function(a){return o.resetIdleTimer(a)},!1,lr)},standalone:!0,features:[te],decls:25,vars:1,consts:[["sessionEndedDialog",""],[1,"mainroot"],[1,"topnavbar"],[1,"mainbody"],[1,"sidebar"],[1,"main-content"],[1,"toast-container"],["class","toast",3,"ngClass",4,"ngFor","ngForOf"],[1,"dialog-content",3,"click"],[1,"loading-container"],[1,"loading-container-inner"],[1,"dash","first"],[1,"dash","seconde"],[1,"dash","third"],[1,"dash","fourth"],["tabindex","1",1,"secondary",3,"click"],[1,"toast",3,"ngClass"]],template:function(i,o){if(i&1){let s=j();u(0,"div",1)(1,"header",2),w(2,"app-topnav"),d(),u(3,"div",3)(4,"div",4),w(5,"app-sidenav"),d(),u(6,"div",5),w(7,"router-outlet"),d()(),u(8,"div",6),E(9,PS,3,2,"div",7),d()(),u(10,"dialog",null,0)(12,"div",8),x("click",function(l){return D(s),b(l.stopPropagation())}),u(13,"h2"),p(14,"Session Timed Out!"),d(),u(15,"p"),p(16,"You we gone for a while, we closed your session!"),d(),u(17,"div",9)(18,"div",10),w(19,"div",11)(20,"div",12)(21,"div",13)(22,"div",14),d()(),u(23,"button",15),x("click",function(){return D(s),b(o.reloadPage())}),p(24,"Refresh"),d()()()}i&2&&(m(9),_("ngForOf",o.messages))},dependencies:[_r,pv,dv,Mg,we,pg],styles:[".mainroot[_ngcontent-%COMP%]{height:100%;display:flex;flex-direction:column;background-color:#090f0f;color:#dde4e3;position:relative}@media (width < 765px){.mainroot[_ngcontent-%COMP%]{min-height:100%;height:auto}}.topnavbar[_ngcontent-%COMP%]{width:100%;height:auto;z-index:100;position:sticky;top:0;background-color:var(--color-surface-container);color:var(--color-on-surface)}.mainbody[_ngcontent-%COMP%]{margin:0;display:flex;flex-direction:row;flex:1 1 auto;overflow-y:auto;background-color:var(--color-surface-container-lowest);color:var(--color-on-surface)}@media (width < 765px){.mainbody[_ngcontent-%COMP%]{flex-direction:column;min-height:100%;height:auto}}.sidebar[_ngcontent-%COMP%]{width:auto;z-index:100;background-color:var(--color-surface-container);color:var(--color-on-surface);order:1}@media (width < 768px){.sidebar[_ngcontent-%COMP%]{width:100%;height:auto;position:fixed;bottom:0;top:auto;left:0;order:2}}.main-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1 1 auto;overflow-x:hidden;overflow-y:auto;order:2;background-color:var(--color-surface);color:var(--color-on-surface)}@media (width < 768px){.main-content[_ngcontent-%COMP%]{order:1;padding:.5rem;margin-bottom:80px}}.toast-container[_ngcontent-%COMP%]{position:fixed;top:5rem;right:3rem;z-index:999;max-width:25%;padding:1rem;display:flex;flex-direction:column;gap:1rem}@media (width < 768px){.toast-container[_ngcontent-%COMP%]{max-width:80%;right:1rem;padding:.5rem}}.toast[_ngcontent-%COMP%]{text-wrap:wrap;padding:1rem;border-radius:.5rem;background-color:var(--color-surface-container-high);color:var(--color-on-surface);animation:_ngcontent-%COMP%_slideInRight .3s ease-out forwards}.info[_ngcontent-%COMP%]{background-color:var(--color-info);color:var(--color-info-text)}.success[_ngcontent-%COMP%]{background-color:var(--color-success);color:var(--color-success-text)}.error[_ngcontent-%COMP%]{background-color:var(--color-warning);color:var(--color-warning-text)}@keyframes _ngcontent-%COMP%_slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.dialog-content[_ngcontent-%COMP%]{padding:1rem}.loading-container[_ngcontent-%COMP%]{position:relative;height:6rem;margin:1rem}.loading-container-inner[_ngcontent-%COMP%]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.dash[_ngcontent-%COMP%]{margin:0 15px;width:35px;height:15px;border-radius:8px;background:var(--color-primary);box-shadow:var(--color-surface-tint) 0 0 15px 0}.first[_ngcontent-%COMP%]{margin-right:-18px;transform-origin:center left;animation:_ngcontent-%COMP%_spin 3s linear infinite}.seconde[_ngcontent-%COMP%]{transform-origin:center right;animation:_ngcontent-%COMP%_spin2 3s linear infinite;animation-delay:.2s}.third[_ngcontent-%COMP%]{transform-origin:center right;animation:_ngcontent-%COMP%_spin3 3s linear infinite;animation-delay:.3s}.fourth[_ngcontent-%COMP%]{transform-origin:center right;animation:_ngcontent-%COMP%_spin4 3s linear infinite;animation-delay:.4s}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}25%{transform:rotate(360deg)}30%{transform:rotate(370deg)}35%{transform:rotate(360deg)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_spin2{0%{transform:rotate(0)}20%{transform:rotate(0)}30%{transform:rotate(-180deg)}35%{transform:rotate(-190deg)}40%{transform:rotate(-180deg)}78%{transform:rotate(-180deg)}95%{transform:rotate(-360deg)}98%{transform:rotate(-370deg)}to{transform:rotate(-360deg)}}@keyframes _ngcontent-%COMP%_spin3{0%{transform:rotate(0)}27%{transform:rotate(0)}40%{transform:rotate(180deg)}45%{transform:rotate(190deg)}50%{transform:rotate(180deg)}62%{transform:rotate(180deg)}75%{transform:rotate(360deg)}80%{transform:rotate(370deg)}85%{transform:rotate(360deg)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_spin4{0%{transform:rotate(0)}38%{transform:rotate(0)}60%{transform:rotate(-360deg)}65%{transform:rotate(-370deg)}75%{transform:rotate(-360deg)}to{transform:rotate(-360deg)}}"]});let t=e;return t})();Rg(hv,uv).catch(t=>console.error(t)); diff --git a/frontend-build/browser/main-UPAA77AJ.js b/frontend-build/browser/main-UPAA77AJ.js new file mode 100644 index 0000000..4950501 --- /dev/null +++ b/frontend-build/browser/main-UPAA77AJ.js @@ -0,0 +1,8 @@ +var wv=Object.defineProperty,Cv=Object.defineProperties;var Dv=Object.getOwnPropertyDescriptors;var mf=Object.getOwnPropertySymbols;var bv=Object.prototype.hasOwnProperty,xv=Object.prototype.propertyIsEnumerable;var gf=(t,e,r)=>e in t?wv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,M=(t,e)=>{for(var r in e||={})bv.call(e,r)&&gf(t,r,e[r]);if(mf)for(var r of mf(e))xv.call(e,r)&&gf(t,r,e[r]);return t},J=(t,e)=>Cv(t,Dv(e));var Oi=(t,e,r)=>new Promise((n,i)=>{var o=l=>{try{a(r.next(l))}catch(c){i(c)}},s=l=>{try{a(r.throw(l))}catch(c){i(c)}},a=l=>l.done?n(l.value):Promise.resolve(l.value).then(o,s);a((r=r.apply(t,e)).next())});var vf=null;var ml=1,gl=Symbol("SIGNAL");function ne(t){let e=vf;return vf=t,e}var yf={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Ev(t){if(!(_l(t)&&!t.dirty)&&!(!t.dirty&&t.lastCleanEpoch===ml)){if(!t.producerMustRecompute(t)&&!vl(t)){t.dirty=!1,t.lastCleanEpoch=ml;return}t.producerRecomputeValue(t),t.dirty=!1,t.lastCleanEpoch=ml}}function _f(t){return t&&(t.nextProducerIndex=0),ne(t)}function wf(t,e){if(ne(e),!(!t||t.producerNode===void 0||t.producerIndexOfThis===void 0||t.producerLastReadVersion===void 0)){if(_l(t))for(let r=t.nextProducerIndex;rt.nextProducerIndex;)t.producerNode.pop(),t.producerLastReadVersion.pop(),t.producerIndexOfThis.pop()}}function vl(t){Po(t);for(let e=0;e0}function Po(t){t.producerNode??=[],t.producerIndexOfThis??=[],t.producerLastReadVersion??=[]}function Iv(t){t.liveConsumerNode??=[],t.liveConsumerIndexOfThis??=[]}function Mv(){throw new Error}var Sv=Mv;function Df(t){Sv=t}function B(t){return typeof t=="function"}function br(t){let r=t(n=>{Error.call(n),n.stack=new Error().stack});return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Ro=br(t=>function(r){t(this),this.message=r?`${r.length} errors occurred during unsubscription: +${r.map((n,i)=>`${i+1}) ${n.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=r});function qn(t,e){if(t){let r=t.indexOf(e);0<=r&&t.splice(r,1)}}var ve=class t{constructor(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let e;if(!this.closed){this.closed=!0;let{_parentage:r}=this;if(r)if(this._parentage=null,Array.isArray(r))for(let o of r)o.remove(this);else r.remove(this);let{initialTeardown:n}=this;if(B(n))try{n()}catch(o){e=o instanceof Ro?o.errors:[o]}let{_finalizers:i}=this;if(i){this._finalizers=null;for(let o of i)try{bf(o)}catch(s){e=e??[],s instanceof Ro?e=[...e,...s.errors]:e.push(s)}}if(e)throw new Ro(e)}}add(e){var r;if(e&&e!==this)if(this.closed)bf(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(e)}}_hasParent(e){let{_parentage:r}=this;return r===e||Array.isArray(r)&&r.includes(e)}_addParent(e){let{_parentage:r}=this;this._parentage=Array.isArray(r)?(r.push(e),r):r?[r,e]:e}_removeParent(e){let{_parentage:r}=this;r===e?this._parentage=null:Array.isArray(r)&&qn(r,e)}remove(e){let{_finalizers:r}=this;r&&qn(r,e),e instanceof t&&e._removeParent(this)}};ve.EMPTY=(()=>{let t=new ve;return t.closed=!0,t})();var wl=ve.EMPTY;function Fo(t){return t instanceof ve||t&&"closed"in t&&B(t.remove)&&B(t.add)&&B(t.unsubscribe)}function bf(t){B(t)?t():t.unsubscribe()}var Tt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var xr={setTimeout(t,e,...r){let{delegate:n}=xr;return n?.setTimeout?n.setTimeout(t,e,...r):setTimeout(t,e,...r)},clearTimeout(t){let{delegate:e}=xr;return(e?.clearTimeout||clearTimeout)(t)},delegate:void 0};function Lo(t){xr.setTimeout(()=>{let{onUnhandledError:e}=Tt;if(e)e(t);else throw t})}function Ni(){}var xf=Cl("C",void 0,void 0);function Ef(t){return Cl("E",void 0,t)}function If(t){return Cl("N",t,void 0)}function Cl(t,e,r){return{kind:t,value:e,error:r}}var zn=null;function Er(t){if(Tt.useDeprecatedSynchronousErrorHandling){let e=!zn;if(e&&(zn={errorThrown:!1,error:null}),t(),e){let{errorThrown:r,error:n}=zn;if(zn=null,r)throw n}}else t()}function Mf(t){Tt.useDeprecatedSynchronousErrorHandling&&zn&&(zn.errorThrown=!0,zn.error=t)}var sn=class extends ve{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,Fo(e)&&e.add(this)):this.destination=Ov}static create(e,r,n){return new Ir(e,r,n)}next(e){this.isStopped?bl(If(e),this):this._next(e)}error(e){this.isStopped?bl(Ef(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?bl(xf,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},Tv=Function.prototype.bind;function Dl(t,e){return Tv.call(t,e)}var xl=class{constructor(e){this.partialObserver=e}next(e){let{partialObserver:r}=this;if(r.next)try{r.next(e)}catch(n){Vo(n)}}error(e){let{partialObserver:r}=this;if(r.error)try{r.error(e)}catch(n){Vo(n)}else Vo(e)}complete(){let{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(r){Vo(r)}}},Ir=class extends sn{constructor(e,r,n){super();let i;if(B(e)||!e)i={next:e??void 0,error:r??void 0,complete:n??void 0};else{let o;this&&Tt.useDeprecatedNextContext?(o=Object.create(e),o.unsubscribe=()=>this.unsubscribe(),i={next:e.next&&Dl(e.next,o),error:e.error&&Dl(e.error,o),complete:e.complete&&Dl(e.complete,o)}):i=e}this.destination=new xl(i)}};function Vo(t){Tt.useDeprecatedSynchronousErrorHandling?Mf(t):Lo(t)}function Av(t){throw t}function bl(t,e){let{onStoppedNotification:r}=Tt;r&&xr.setTimeout(()=>r(t,e))}var Ov={closed:!0,next:Ni,error:Av,complete:Ni};var Mr=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Ge(t){return t}function El(...t){return Il(t)}function Il(t){return t.length===0?Ge:t.length===1?t[0]:function(r){return t.reduce((n,i)=>i(n),r)}}var Q=(()=>{class t{constructor(r){r&&(this._subscribe=r)}lift(r){let n=new t;return n.source=this,n.operator=r,n}subscribe(r,n,i){let o=kv(r)?r:new Ir(r,n,i);return Er(()=>{let{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(r){try{return this._subscribe(r)}catch(n){r.error(n)}}forEach(r,n){return n=Sf(n),new n((i,o)=>{let s=new Ir({next:a=>{try{r(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:i});this.subscribe(s)})}_subscribe(r){var n;return(n=this.source)===null||n===void 0?void 0:n.subscribe(r)}[Mr](){return this}pipe(...r){return Il(r)(this)}toPromise(r){return r=Sf(r),new r((n,i)=>{let o;this.subscribe(s=>o=s,s=>i(s),()=>n(o))})}}return t.create=e=>new t(e),t})();function Sf(t){var e;return(e=t??Tt.Promise)!==null&&e!==void 0?e:Promise}function Nv(t){return t&&B(t.next)&&B(t.error)&&B(t.complete)}function kv(t){return t&&t instanceof sn||Nv(t)&&Fo(t)}function Ml(t){return B(t?.lift)}function z(t){return e=>{if(Ml(e))return e.lift(function(r){try{return t(r,this)}catch(n){this.error(n)}});throw new TypeError("Unable to lift unknown Observable type")}}function G(t,e,r,n,i){return new Sl(t,e,r,n,i)}var Sl=class extends sn{constructor(e,r,n,i,o,s){super(e),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=r?function(a){try{r(a)}catch(l){e.error(l)}}:super._next,this._error=i?function(a){try{i(a)}catch(l){e.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=n?function(){try{n()}catch(a){e.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:r}=this;super.unsubscribe(),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}}};function Sr(){return z((t,e)=>{let r=null;t._refCount++;let n=G(e,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount){r=null;return}let i=t._connection,o=r;r=null,i&&(!o||i===o)&&i.unsubscribe(),e.unsubscribe()});t.subscribe(n),n.closed||(r=t.connect())})}var Tr=class extends Q{constructor(e,r){super(),this.source=e,this.subjectFactory=r,this._subject=null,this._refCount=0,this._connection=null,Ml(e)&&(this.lift=e.lift)}_subscribe(e){return this.getSubject().subscribe(e)}getSubject(){let e=this._subject;return(!e||e.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:e}=this;this._subject=this._connection=null,e?.unsubscribe()}connect(){let e=this._connection;if(!e){e=this._connection=new ve;let r=this.getSubject();e.add(this.source.subscribe(G(r,void 0,()=>{this._teardown(),r.complete()},n=>{this._teardown(),r.error(n)},()=>this._teardown()))),e.closed&&(this._connection=null,e=ve.EMPTY)}return e}refCount(){return Sr()(this)}};var Tf=br(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var ue=(()=>{class t extends Q{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(r){let n=new Ar(this,this);return n.operator=r,n}_throwIfClosed(){if(this.closed)throw new Tf}next(r){Er(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let n of this.currentObservers)n.next(r)}})}error(r){Er(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=r;let{observers:n}=this;for(;n.length;)n.shift().error(r)}})}complete(){Er(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:r}=this;for(;r.length;)r.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var r;return((r=this.observers)===null||r===void 0?void 0:r.length)>0}_trySubscribe(r){return this._throwIfClosed(),super._trySubscribe(r)}_subscribe(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)}_innerSubscribe(r){let{hasError:n,isStopped:i,observers:o}=this;return n||i?wl:(this.currentObservers=null,o.push(r),new ve(()=>{this.currentObservers=null,qn(o,r)}))}_checkFinalizedStatuses(r){let{hasError:n,thrownError:i,isStopped:o}=this;n?r.error(i):o&&r.complete()}asObservable(){let r=new Q;return r.source=this,r}}return t.create=(e,r)=>new Ar(e,r),t})(),Ar=class extends ue{constructor(e,r){super(),this.destination=e,this.source=r}next(e){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.next)===null||n===void 0||n.call(r,e)}error(e){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.error)===null||n===void 0||n.call(r,e)}complete(){var e,r;(r=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||r===void 0||r.call(e)}_subscribe(e){var r,n;return(n=(r=this.source)===null||r===void 0?void 0:r.subscribe(e))!==null&&n!==void 0?n:wl}};var Ve=class extends ue{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){let r=super._subscribe(e);return!r.closed&&e.next(this._value),r}getValue(){let{hasError:e,thrownError:r,_value:n}=this;if(e)throw r;return this._throwIfClosed(),n}next(e){super.next(this._value=e)}};var ki={now(){return(ki.delegate||Date).now()},delegate:void 0};var Or=class extends ue{constructor(e=1/0,r=1/0,n=ki){super(),this._bufferSize=e,this._windowTime=r,this._timestampProvider=n,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=r===1/0,this._bufferSize=Math.max(1,e),this._windowTime=Math.max(1,r)}next(e){let{isStopped:r,_buffer:n,_infiniteTimeWindow:i,_timestampProvider:o,_windowTime:s}=this;r||(n.push(e),!i&&n.push(o.now()+s)),this._trimBuffer(),super.next(e)}_subscribe(e){this._throwIfClosed(),this._trimBuffer();let r=this._innerSubscribe(e),{_infiniteTimeWindow:n,_buffer:i}=this,o=i.slice();for(let s=0;st.complete());function Al(t){return t?Pv(t):Je}function Pv(t){return new Q(e=>t.schedule(()=>e.complete()))}function Bo(t){return t&&B(t.schedule)}function Of(t){return t[t.length-1]}function Ho(t){return B(Of(t))?t.pop():void 0}function xn(t){return Bo(Of(t))?t.pop():void 0}function kf(t,e,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function a(f){try{c(n.next(f))}catch(h){s(h)}}function l(f){try{c(n.throw(f))}catch(h){s(h)}}function c(f){f.done?o(f.value):i(f.value).then(a,l)}c((n=n.apply(t,e||[])).next())})}function Nf(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Gn(t){return this instanceof Gn?(this.v=t,this):new Gn(t)}function Pf(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,o=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",s),i[Symbol.asyncIterator]=function(){return this},i;function s(y){return function(I){return Promise.resolve(I).then(y,h)}}function a(y,I){n[y]&&(i[y]=function(V){return new Promise(function(j,R){o.push([y,V,j,R])>1||l(y,V)})},I&&(i[y]=I(i[y])))}function l(y,I){try{c(n[y](I))}catch(V){v(o[0][3],V)}}function c(y){y.value instanceof Gn?Promise.resolve(y.value.v).then(f,h):v(o[0][2],y)}function f(y){l("next",y)}function h(y){l("throw",y)}function v(y,I){y(I),o.shift(),o.length&&l(o[0][0],o[0][1])}}function Rf(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof Nf=="function"?Nf(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(o){r[o]=t[o]&&function(s){return new Promise(function(a,l){s=t[o](s),i(a,l,s.done,s.value)})}}function i(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}}var qo=t=>t&&typeof t.length=="number"&&typeof t!="function";function zo(t){return B(t?.then)}function Go(t){return B(t[Mr])}function Wo(t){return Symbol.asyncIterator&&B(t?.[Symbol.asyncIterator])}function Zo(t){return new TypeError(`You provided ${t!==null&&typeof t=="object"?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function Rv(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qo=Rv();function Yo(t){return B(t?.[Qo])}function Ko(t){return Pf(this,arguments,function*(){let r=t.getReader();try{for(;;){let{value:n,done:i}=yield Gn(r.read());if(i)return yield Gn(void 0);yield yield Gn(n)}}finally{r.releaseLock()}})}function Jo(t){return B(t?.getReader)}function Me(t){if(t instanceof Q)return t;if(t!=null){if(Go(t))return Fv(t);if(qo(t))return Lv(t);if(zo(t))return Vv(t);if(Wo(t))return Ff(t);if(Yo(t))return jv(t);if(Jo(t))return $v(t)}throw Zo(t)}function Fv(t){return new Q(e=>{let r=t[Mr]();if(B(r.subscribe))return r.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Lv(t){return new Q(e=>{for(let r=0;r{t.then(r=>{e.closed||(e.next(r),e.complete())},r=>e.error(r)).then(null,Lo)})}function jv(t){return new Q(e=>{for(let r of t)if(e.next(r),e.closed)return;e.complete()})}function Ff(t){return new Q(e=>{Uv(t,e).catch(r=>e.error(r))})}function $v(t){return Ff(Ko(t))}function Uv(t,e){var r,n,i,o;return kf(this,void 0,void 0,function*(){try{for(r=Rf(t);n=yield r.next(),!n.done;){let s=n.value;if(e.next(s),e.closed)return}}catch(s){i={error:s}}finally{try{n&&!n.done&&(o=r.return)&&(yield o.call(r))}finally{if(i)throw i.error}}e.complete()})}function Xe(t,e,r,n=0,i=!1){let o=e.schedule(function(){r(),i?t.add(this.schedule(null,n)):this.unsubscribe()},n);if(t.add(o),!i)return o}function Xo(t,e=0){return z((r,n)=>{r.subscribe(G(n,i=>Xe(n,t,()=>n.next(i),e),()=>Xe(n,t,()=>n.complete(),e),i=>Xe(n,t,()=>n.error(i),e)))})}function es(t,e=0){return z((r,n)=>{n.add(t.schedule(()=>r.subscribe(n),e))})}function Lf(t,e){return Me(t).pipe(es(e),Xo(e))}function Vf(t,e){return Me(t).pipe(es(e),Xo(e))}function jf(t,e){return new Q(r=>{let n=0;return e.schedule(function(){n===t.length?r.complete():(r.next(t[n++]),r.closed||this.schedule())})})}function $f(t,e){return new Q(r=>{let n;return Xe(r,e,()=>{n=t[Qo](),Xe(r,e,()=>{let i,o;try{({value:i,done:o}=n.next())}catch(s){r.error(s);return}o?r.complete():r.next(i)},0,!0)}),()=>B(n?.return)&&n.return()})}function ts(t,e){if(!t)throw new Error("Iterable cannot be null");return new Q(r=>{Xe(r,e,()=>{let n=t[Symbol.asyncIterator]();Xe(r,e,()=>{n.next().then(i=>{i.done?r.complete():r.next(i.value)})},0,!0)})})}function Uf(t,e){return ts(Ko(t),e)}function Bf(t,e){if(t!=null){if(Go(t))return Lf(t,e);if(qo(t))return jf(t,e);if(zo(t))return Vf(t,e);if(Wo(t))return ts(t,e);if(Yo(t))return $f(t,e);if(Jo(t))return Uf(t,e)}throw Zo(t)}function me(t,e){return e?Bf(t,e):Me(t)}function O(...t){let e=xn(t);return me(t,e)}function kr(t,e){let r=B(t)?t:()=>t,n=i=>i.error(r());return new Q(e?i=>e.schedule(n,0,i):n)}function Ol(t){return!!t&&(t instanceof Q||B(t.lift)&&B(t.subscribe))}var an=br(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function Hf(t){return t instanceof Date&&!isNaN(t)}function A(t,e){return z((r,n)=>{let i=0;r.subscribe(G(n,o=>{n.next(t.call(e,o,i++))}))})}var{isArray:Bv}=Array;function Hv(t,e){return Bv(e)?t(...e):t(e)}function ns(t){return A(e=>Hv(t,e))}var{isArray:qv}=Array,{getPrototypeOf:zv,prototype:Gv,keys:Wv}=Object;function rs(t){if(t.length===1){let e=t[0];if(qv(e))return{args:e,keys:null};if(Zv(e)){let r=Wv(e);return{args:r.map(n=>e[n]),keys:r}}}return{args:t,keys:null}}function Zv(t){return t&&typeof t=="object"&&zv(t)===Gv}function is(t,e){return t.reduce((r,n,i)=>(r[n]=e[i],r),{})}function os(...t){let e=xn(t),r=Ho(t),{args:n,keys:i}=rs(t);if(n.length===0)return me([],e);let o=new Q(Qv(n,e,i?s=>is(i,s):Ge));return r?o.pipe(ns(r)):o}function Qv(t,e,r=Ge){return n=>{qf(e,()=>{let{length:i}=t,o=new Array(i),s=i,a=i;for(let l=0;l{let c=me(t[l],e),f=!1;c.subscribe(G(n,h=>{o[l]=h,f||(f=!0,a--),a||n.next(r(o.slice()))},()=>{--s||n.complete()}))},n)},n)}}function qf(t,e,r){t?Xe(r,t,e):e()}function ss(t,e,r,n,i,o,s,a){let l=[],c=0,f=0,h=!1,v=()=>{h&&!l.length&&!c&&e.complete()},y=V=>c{o&&e.next(V),c++;let j=!1;Me(r(V,f++)).subscribe(G(e,R=>{i?.(R),o?y(R):e.next(R)},()=>{j=!0},void 0,()=>{if(j)try{for(c--;l.length&&cI(R)):I(R)}v()}catch(R){e.error(R)}}))};return t.subscribe(G(e,y,()=>{h=!0,v()})),()=>{a?.()}}function ke(t,e,r=1/0){return B(e)?ke((n,i)=>A((o,s)=>e(n,o,i,s))(Me(t(n,i))),r):(typeof e=="number"&&(r=e),z((n,i)=>ss(n,i,t,r)))}function Pr(t=1/0){return ke(Ge,t)}function zf(){return Pr(1)}function Rr(...t){return zf()(me(t,xn(t)))}function as(t){return new Q(e=>{Me(t()).subscribe(e)})}function Nl(...t){let e=Ho(t),{args:r,keys:n}=rs(t),i=new Q(o=>{let{length:s}=r;if(!s){o.complete();return}let a=new Array(s),l=s,c=s;for(let f=0;f{h||(h=!0,c--),a[f]=v},()=>l--,void 0,()=>{(!l||!h)&&(c||o.next(n?is(n,a):a),o.complete())}))}});return e?i.pipe(ns(e)):i}function kl(t=0,e,r=Af){let n=-1;return e!=null&&(Bo(e)?r=e:n=e),new Q(i=>{let o=Hf(t)?+t-r.now():t;o<0&&(o=0);let s=0;return r.schedule(function(){i.closed||(i.next(s++),0<=n?this.schedule(void 0,n):i.complete())},o)})}function je(t,e){return z((r,n)=>{let i=0;r.subscribe(G(n,o=>t.call(e,o,i++)&&n.next(o)))})}function qe(t){return z((e,r)=>{let n=null,i=!1,o;n=e.subscribe(G(r,void 0,void 0,s=>{o=Me(t(s,qe(t)(e))),n?(n.unsubscribe(),n=null,o.subscribe(r)):i=!0})),i&&(n.unsubscribe(),n=null,o.subscribe(r))})}function Gf(t,e,r,n,i){return(o,s)=>{let a=r,l=e,c=0;o.subscribe(G(s,f=>{let h=c++;l=a?t(l,f,h):(a=!0,f),n&&s.next(l)},i&&(()=>{a&&s.next(l),s.complete()})))}}function En(t,e){return B(e)?ke(t,e,1):ke(t,1)}function Pl(t,e=Tl){return z((r,n)=>{let i=null,o=null,s=null,a=()=>{if(i){i.unsubscribe(),i=null;let c=o;o=null,n.next(c)}};function l(){let c=s+t,f=e.now();if(f{o=c,s=e.now(),i||(i=e.schedule(l,t),n.add(i))},()=>{a(),n.complete()},void 0,()=>{o=i=null}))})}function In(t){return z((e,r)=>{let n=!1;e.subscribe(G(r,i=>{n=!0,r.next(i)},()=>{n||r.next(t),r.complete()}))})}function ln(t){return t<=0?()=>Je:z((e,r)=>{let n=0;e.subscribe(G(r,i=>{++n<=t&&(r.next(i),t<=n&&r.complete())}))})}function Rl(t){return A(()=>t)}function Fl(t,e=Ge){return t=t??Yv,z((r,n)=>{let i,o=!0;r.subscribe(G(n,s=>{let a=e(s);(o||!t(i,a))&&(o=!1,i=a,n.next(s))}))})}function Yv(t,e){return t===e}function ls(t=Kv){return z((e,r)=>{let n=!1;e.subscribe(G(r,i=>{n=!0,r.next(i)},()=>n?r.complete():r.error(t())))})}function Kv(){return new an}function Ll(t,e=1/0,r){return e=(e||0)<1?1/0:e,z((n,i)=>ss(n,i,t,e,void 0,!0,r))}function Mn(t){return z((e,r)=>{try{e.subscribe(r)}finally{r.add(t)}})}function zt(t,e){let r=arguments.length>=2;return n=>n.pipe(t?je((i,o)=>t(i,o,n)):Ge,ln(1),r?In(e):ls(()=>new an))}function Fr(t){return t<=0?()=>Je:z((e,r)=>{let n=[];e.subscribe(G(r,i=>{n.push(i),t{for(let i of n)r.next(i);r.complete()},void 0,()=>{n=null}))})}function Vl(t,e){let r=arguments.length>=2;return n=>n.pipe(t?je((i,o)=>t(i,o,n)):Ge,Fr(1),r?In(e):ls(()=>new an))}function jl(t,e){return z(Gf(t,e,arguments.length>=2,!0))}function $l(t){return je((e,r)=>t<=r)}function Ul(...t){let e=xn(t);return z((r,n)=>{(e?Rr(t,r,e):Rr(t,r)).subscribe(n)})}function ut(t,e){return z((r,n)=>{let i=null,o=0,s=!1,a=()=>s&&!i&&n.complete();r.subscribe(G(n,l=>{i?.unsubscribe();let c=0,f=o++;Me(t(l,f)).subscribe(i=G(n,h=>n.next(e?e(l,h,f,c++):h),()=>{i=null,a()}))},()=>{s=!0,a()}))})}function Bl(t){return z((e,r)=>{Me(t).subscribe(G(r,()=>r.complete(),Ni)),!r.closed&&e.subscribe(r)})}function Re(t,e,r){let n=B(t)||e||r?{next:t,error:e,complete:r}:t;return n?z((i,o)=>{var s;(s=n.subscribe)===null||s===void 0||s.call(n);let a=!0;i.subscribe(G(o,l=>{var c;(c=n.next)===null||c===void 0||c.call(n,l),o.next(l)},()=>{var l;a=!1,(l=n.complete)===null||l===void 0||l.call(n),o.complete()},l=>{var c;a=!1,(c=n.error)===null||c===void 0||c.call(n,l),o.error(l)},()=>{var l,c;a&&((l=n.unsubscribe)===null||l===void 0||l.call(n)),(c=n.finalize)===null||c===void 0||c.call(n)}))}):Ge}var Op="https://g.co/ng/security#xss",N=class extends Error{constructor(e,r){super($s(e,r)),this.code=e}};function $s(t,e){return`${`NG0${Math.abs(t)}`}${e?": "+e:""}`}function Wi(t){return{toString:t}.toString()}var cs="__parameters__";function Jv(t){return function(...r){if(t){let n=t(...r);for(let i in n)this[i]=n[i]}}}function Np(t,e,r){return Wi(()=>{let n=Jv(e);function i(...o){if(this instanceof i)return n.apply(this,o),this;let s=new i(...o);return a.annotation=s,a;function a(l,c,f){let h=l.hasOwnProperty(cs)?l[cs]:Object.defineProperty(l,cs,{value:[]})[cs];for(;h.length<=f;)h.push(null);return(h[f]=h[f]||[]).push(s),l}}return r&&(i.prototype=Object.create(r.prototype)),i.prototype.ngMetadataName=t,i.annotationCls=i,i})}var Ot=globalThis;function le(t){for(let e in t)if(t[e]===le)return e;throw Error("Could not find renamed property on target object.")}function Xv(t,e){for(let r in e)e.hasOwnProperty(r)&&!t.hasOwnProperty(r)&&(t[r]=e[r])}function Ze(t){if(typeof t=="string")return t;if(Array.isArray(t))return"["+t.map(Ze).join(", ")+"]";if(t==null)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;let e=t.toString();if(e==null)return""+e;let r=e.indexOf(` +`);return r===-1?e:e.substring(0,r)}function oc(t,e){return t==null||t===""?e===null?"":e:e==null||e===""?t:t+" "+e}var ey=le({__forward_ref__:le});function rt(t){return t.__forward_ref__=rt,t.toString=function(){return Ze(this())},t}function We(t){return kp(t)?t():t}function kp(t){return typeof t=="function"&&t.hasOwnProperty(ey)&&t.__forward_ref__===rt}function T(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function Rt(t){return{providers:t.providers||[],imports:t.imports||[]}}function Us(t){return Wf(t,Rp)||Wf(t,Fp)}function Pp(t){return Us(t)!==null}function Wf(t,e){return t.hasOwnProperty(e)?t[e]:null}function ty(t){let e=t&&(t[Rp]||t[Fp]);return e||null}function Zf(t){return t&&(t.hasOwnProperty(Qf)||t.hasOwnProperty(ny))?t[Qf]:null}var Rp=le({\u0275prov:le}),Qf=le({\u0275inj:le}),Fp=le({ngInjectableDef:le}),ny=le({ngInjectorDef:le}),F=class{constructor(e,r){this._desc=e,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof r=="number"?this.__NG_ELEMENT_ID__=r:r!==void 0&&(this.\u0275prov=T({token:this,providedIn:r.providedIn||"root",factory:r.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Lp(t){return t&&!!t.\u0275providers}var ry=le({\u0275cmp:le}),iy=le({\u0275dir:le}),oy=le({\u0275pipe:le}),sy=le({\u0275mod:le}),_s=le({\u0275fac:le}),Ri=le({__NG_ELEMENT_ID__:le}),Yf=le({__NG_ENV_ID__:le});function Bs(t){return typeof t=="string"?t:t==null?"":String(t)}function ay(t){return typeof t=="function"?t.name||t.toString():typeof t=="object"&&t!=null&&typeof t.type=="function"?t.type.name||t.type.toString():Bs(t)}function ly(t,e){let r=e?`. Dependency path: ${e.join(" > ")} > ${t}`:"";throw new N(-200,t)}function Jc(t,e){throw new N(-201,!1)}var K=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}(K||{}),sc;function Vp(){return sc}function et(t){let e=sc;return sc=t,e}function jp(t,e,r){let n=Us(t);if(n&&n.providedIn=="root")return n.value===void 0?n.value=n.factory():n.value;if(r&K.Optional)return null;if(e!==void 0)return e;Jc(t,"Injector")}var cy={},Fi=cy,ac="__NG_DI_FLAG__",ws="ngTempTokenPath",uy="ngTokenPath",dy=/\n/gm,fy="\u0275",Kf="__source",$r;function py(){return $r}function Sn(t){let e=$r;return $r=t,e}function hy(t,e=K.Default){if($r===void 0)throw new N(-203,!1);return $r===null?jp(t,void 0,e):$r.get(t,e&K.Optional?null:void 0,e)}function k(t,e=K.Default){return(Vp()||hy)(We(t),e)}function S(t,e=K.Default){return k(t,Hs(e))}function Hs(t){return typeof t>"u"||typeof t=="number"?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function lc(t){let e=[];for(let r=0;r ");else if(typeof e=="object"){let o=[];for(let s in e)if(e.hasOwnProperty(s)){let a=e[s];o.push(s+":"+(typeof a=="string"?JSON.stringify(a):Ze(a)))}i=`{${o.join(", ")}}`}return`${r}${n?"("+n+")":""}[${i}]: ${t.replace(dy,` + `)}`}var Xc=$p(Np("Optional"),8);var Up=$p(Np("SkipSelf"),4);function Yn(t,e){let r=t.hasOwnProperty(_s);return r?t[_s]:null}function yy(t,e,r){if(t.length!==e.length)return!1;for(let n=0;nArray.isArray(r)?eu(r,e):e(r))}function Bp(t,e,r){e>=t.length?t.push(r):t.splice(e,0,r)}function Cs(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function wy(t,e,r,n){let i=t.length;if(i==e)t.push(r,n);else if(i===1)t.push(n,t[0]),t[0]=r;else{for(i--,t.push(t[i-1],t[i]);i>e;){let o=i-2;t[i]=t[o],i--}t[e]=r,t[e+1]=n}}function qs(t,e,r){let n=Zi(t,e);return n>=0?t[n|1]=r:(n=~n,wy(t,n,e,r)),n}function Hl(t,e){let r=Zi(t,e);if(r>=0)return t[r|1]}function Zi(t,e){return Cy(t,e,1)}function Cy(t,e,r){let n=0,i=t.length>>r;for(;i!==n;){let o=n+(i-n>>1),s=t[o<e?i=o:n=o+1}return~(i<e){s=o-1;break}}}for(;o-1){let o;for(;++io?h="":h=i[f+1].toLowerCase(),n&2&&c!==h){if(At(n))return!1;s=!0}}}}return At(n)||s}function At(t){return(t&1)===0}function My(t,e,r,n){if(e===null)return-1;let i=0;if(n||!r){let o=!1;for(;i-1)for(r++;r0?'="'+a+'"':"")+"]"}else n&8?i+="."+s:n&4&&(i+=" "+s);else i!==""&&!At(s)&&(e+=Xf(o,i),i=""),n=s,o=o||!At(n);r++}return i!==""&&(e+=Xf(o,i)),e}function Ny(t){return t.map(Oy).join(",")}function ky(t){let e=[],r=[],n=1,i=2;for(;n{let e=Jp(t),r=J(M({},e),{decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===zp.OnPush,directiveDefs:null,pipeDefs:null,dependencies:e.standalone&&t.dependencies||null,getStandaloneInjector:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Zt.Emulated,styles:t.styles||tt,_:null,schemas:t.schemas||null,tView:null,id:""});Xp(r);let n=t.dependencies;return r.directiveDefs=tp(n,!1),r.pipeDefs=tp(n,!0),r.id=Fy(r),r})}function Py(t){return Kn(t)||Zp(t)}function Ry(t){return t!==null}function Ft(t){return Wi(()=>({type:t.type,bootstrap:t.bootstrap||tt,declarations:t.declarations||tt,imports:t.imports||tt,exports:t.exports||tt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function ep(t,e){if(t==null)return Br;let r={};for(let n in t)if(t.hasOwnProperty(n)){let i=t[n],o,s,a=de.None;Array.isArray(i)?(a=i[0],o=i[1],s=i[2]??o):(o=i,s=i),e?(r[o]=a!==de.None?[n,a]:n,e[o]=s):r[o]=n}return r}function re(t){return Wi(()=>{let e=Jp(t);return Xp(e),e})}function kn(t){return{type:t.type,name:t.name,factory:null,pure:t.pure!==!1,standalone:t.standalone===!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function Kn(t){return t[ry]||null}function Zp(t){return t[iy]||null}function Qp(t){return t[oy]||null}function Yp(t){let e=Kn(t)||Zp(t)||Qp(t);return e!==null?e.standalone:!1}function Kp(t,e){let r=t[sy]||null;if(!r&&e===!0)throw new Error(`Type ${Ze(t)} does not have '\u0275mod' property.`);return r}function Jp(t){let e={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:e,inputTransforms:null,inputConfig:t.inputs||Br,exportAs:t.exportAs||null,standalone:t.standalone===!0,signals:t.signals===!0,selectors:t.selectors||tt,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:ep(t.inputs,e),outputs:ep(t.outputs),debugInfo:null}}function Xp(t){t.features?.forEach(e=>e(t))}function tp(t,e){if(!t)return null;let r=e?Qp:Py;return()=>(typeof t=="function"?t():t).map(n=>r(n)).filter(Ry)}function Fy(t){let e=0,r=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery].join("|");for(let i of r)e=Math.imul(31,e)+i.charCodeAt(0)<<0;return e+=2147483648,"c"+e}function Yr(t){return{\u0275providers:t}}function nu(...t){return{\u0275providers:eh(!0,t),\u0275fromNgModule:!0}}function eh(t,...e){let r=[],n=new Set,i,o=s=>{r.push(s)};return eu(e,s=>{let a=s;uc(a,o,[],n)&&(i||=[],i.push(a))}),i!==void 0&&th(i,o),r}function th(t,e){for(let r=0;r{e(o,n)})}}function uc(t,e,r,n){if(t=We(t),!t)return!1;let i=null,o=Zf(t),s=!o&&Kn(t);if(!o&&!s){let l=t.ngModule;if(o=Zf(l),o)i=l;else return!1}else{if(s&&!s.standalone)return!1;i=t}let a=n.has(i);if(s){if(a)return!1;if(n.add(i),s.dependencies){let l=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let c of l)uc(c,e,r,n)}}else if(o){if(o.imports!=null&&!a){n.add(i);let c;try{eu(o.imports,f=>{uc(f,e,r,n)&&(c||=[],c.push(f))})}finally{}c!==void 0&&th(c,e)}if(!a){let c=Yn(i)||(()=>new i);e({provide:i,useFactory:c,deps:tt},i),e({provide:qp,useValue:i,multi:!0},i),e({provide:Hr,useValue:()=>k(i),multi:!0},i)}let l=o.providers;if(l!=null&&!a){let c=t;ru(l,f=>{e(f,c)})}}else return!1;return i!==t&&t.providers!==void 0}function ru(t,e){for(let r of t)Lp(r)&&(r=r.\u0275providers),Array.isArray(r)?ru(r,e):e(r)}var Ly=le({provide:String,useValue:le});function nh(t){return t!==null&&typeof t=="object"&&Ly in t}function Vy(t){return!!(t&&t.useExisting)}function jy(t){return!!(t&&t.useFactory)}function qr(t){return typeof t=="function"}function $y(t){return!!t.useClass}var zs=new F(""),ps={},Uy={},ql;function iu(){return ql===void 0&&(ql=new Ds),ql}var nt=class{},Vi=class extends nt{get destroyed(){return this._destroyed}constructor(e,r,n,i){super(),this.parent=r,this.source=n,this.scopes=i,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,fc(e,s=>this.processProvider(s)),this.records.set(Hp,Lr(void 0,this)),i.has("environment")&&this.records.set(nt,Lr(void 0,this));let o=this.records.get(zs);o!=null&&typeof o.value=="string"&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(qp,tt,K.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;let e=ne(null);try{for(let n of this._ngOnDestroyHooks)n.ngOnDestroy();let r=this._onDestroyHooks;this._onDestroyHooks=[];for(let n of r)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),ne(e)}}onDestroy(e){return this.assertNotDestroyed(),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){this.assertNotDestroyed();let r=Sn(this),n=et(void 0),i;try{return e()}finally{Sn(r),et(n)}}get(e,r=Fi,n=K.Default){if(this.assertNotDestroyed(),e.hasOwnProperty(Yf))return e[Yf](this);n=Hs(n);let i,o=Sn(this),s=et(void 0);try{if(!(n&K.SkipSelf)){let l=this.records.get(e);if(l===void 0){let c=Gy(e)&&Us(e);c&&this.injectableDefInScope(c)?l=Lr(dc(e),ps):l=null,this.records.set(e,l)}if(l!=null)return this.hydrate(e,l)}let a=n&K.Self?iu():this.parent;return r=n&K.Optional&&r===Fi?null:r,a.get(e,r)}catch(a){if(a.name==="NullInjectorError"){if((a[ws]=a[ws]||[]).unshift(Ze(e)),o)throw a;return gy(a,e,"R3InjectorError",this.source)}else throw a}finally{et(s),Sn(o)}}resolveInjectorInitializers(){let e=ne(null),r=Sn(this),n=et(void 0),i;try{let o=this.get(Hr,tt,K.Self);for(let s of o)s()}finally{Sn(r),et(n),ne(e)}}toString(){let e=[],r=this.records;for(let n of r.keys())e.push(Ze(n));return`R3Injector[${e.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new N(205,!1)}processProvider(e){e=We(e);let r=qr(e)?e:We(e&&e.provide),n=Hy(e);if(!qr(e)&&e.multi===!0){let i=this.records.get(r);i||(i=Lr(void 0,ps,!0),i.factory=()=>lc(i.multi),this.records.set(r,i)),r=e,i.multi.push(e)}this.records.set(r,n)}hydrate(e,r){let n=ne(null);try{return r.value===ps&&(r.value=Uy,r.value=r.factory()),typeof r.value=="object"&&r.value&&zy(r.value)&&this._ngOnDestroyHooks.add(r.value),r.value}finally{ne(n)}}injectableDefInScope(e){if(!e.providedIn)return!1;let r=We(e.providedIn);return typeof r=="string"?r==="any"||this.scopes.has(r):this.injectorDefTypes.has(r)}removeOnDestroy(e){let r=this._onDestroyHooks.indexOf(e);r!==-1&&this._onDestroyHooks.splice(r,1)}};function dc(t){let e=Us(t),r=e!==null?e.factory:Yn(t);if(r!==null)return r;if(t instanceof F)throw new N(204,!1);if(t instanceof Function)return By(t);throw new N(204,!1)}function By(t){if(t.length>0)throw new N(204,!1);let r=ty(t);return r!==null?()=>r.factory(t):()=>new t}function Hy(t){if(nh(t))return Lr(void 0,t.useValue);{let e=rh(t);return Lr(e,ps)}}function rh(t,e,r){let n;if(qr(t)){let i=We(t);return Yn(i)||dc(i)}else if(nh(t))n=()=>We(t.useValue);else if(jy(t))n=()=>t.useFactory(...lc(t.deps||[]));else if(Vy(t))n=()=>k(We(t.useExisting));else{let i=We(t&&(t.useClass||t.provide));if(qy(t))n=()=>new i(...lc(t.deps));else return Yn(i)||dc(i)}return n}function Lr(t,e,r=!1){return{factory:t,value:e,multi:r?[]:void 0}}function qy(t){return!!t.deps}function zy(t){return t!==null&&typeof t=="object"&&typeof t.ngOnDestroy=="function"}function Gy(t){return typeof t=="function"||typeof t=="object"&&t instanceof F}function fc(t,e){for(let r of t)Array.isArray(r)?fc(r,e):r&&Lp(r)?fc(r.\u0275providers,e):e(r)}function pn(t,e){t instanceof Vi&&t.assertNotDestroyed();let r,n=Sn(t),i=et(void 0);try{return e()}finally{Sn(n),et(i)}}function Wy(){return Vp()!==void 0||py()!=null}function Zy(t){return typeof t=="function"}var hn=0,W=1,U=2,$e=3,Nt=4,Lt=5,bs=6,ji=7,kt=8,zr=9,Pt=10,we=11,$i=12,np=13,Kr=14,Qt=15,Qi=16,Vr=17,cn=18,Gs=19,ih=20,Tn=21,zl=22,Jn=23,_t=25,oh=1;var Xn=7,xs=8,Gr=9,dt=10,ou=function(t){return t[t.None=0]="None",t[t.HasTransplantedViews=2]="HasTransplantedViews",t}(ou||{});function Zn(t){return Array.isArray(t)&&typeof t[oh]=="object"}function mn(t){return Array.isArray(t)&&t[oh]===!0}function su(t){return(t.flags&4)!==0}function Ws(t){return t.componentOffset>-1}function Zs(t){return(t.flags&1)===1}function An(t){return!!t.template}function Qy(t){return(t[U]&512)!==0}var pc=class{constructor(e,r,n){this.previousValue=e,this.currentValue=r,this.firstChange=n}isFirstChange(){return this.firstChange}};function sh(t,e,r,n){e!==null?e.applyValueToInputSignal(e,n):t[r]=n}function it(){return ah}function ah(t){return t.type.prototype.ngOnChanges&&(t.setInput=Ky),Yy}it.ngInherit=!0;function Yy(){let t=ch(this),e=t?.current;if(e){let r=t.previous;if(r===Br)t.previous=e;else for(let n in e)r[n]=e[n];t.current=null,this.ngOnChanges(e)}}function Ky(t,e,r,n,i){let o=this.declaredInputs[n],s=ch(t)||Jy(t,{previous:Br,current:null}),a=s.current||(s.current={}),l=s.previous,c=l[o];a[o]=new pc(c&&c.currentValue,r,l===Br),sh(t,e,i,r)}var lh="__ngSimpleChanges__";function ch(t){return t[lh]||null}function Jy(t,e){return t[lh]=e}var rp=null;var Gt=function(t,e,r){rp?.(t,e,r)},uh="svg",Xy="math",e_=!1;function t_(){return e_}function Yt(t){for(;Array.isArray(t);)t=t[hn];return t}function dh(t,e){return Yt(e[t])}function wt(t,e){return Yt(e[t.index])}function fh(t,e){return t.data[e]}function ph(t,e){return t[e]}function Pn(t,e){let r=e[t];return Zn(r)?r:r[hn]}function n_(t){return(t[U]&4)===4}function au(t){return(t[U]&128)===128}function r_(t){return mn(t[$e])}function Wr(t,e){return e==null?null:t[e]}function hh(t){t[Vr]=0}function i_(t){t[U]&1024||(t[U]|=1024,au(t)&&Ui(t))}function o_(t,e){for(;t>0;)e=e[Kr],t--;return e}function lu(t){return!!(t[U]&9216||t[Jn]?.dirty)}function hc(t){t[Pt].changeDetectionScheduler?.notify(1),lu(t)?Ui(t):t[U]&64&&(t_()?(t[U]|=1024,Ui(t)):t[Pt].changeDetectionScheduler?.notify())}function Ui(t){t[Pt].changeDetectionScheduler?.notify();let e=Bi(t);for(;e!==null&&!(e[U]&8192||(e[U]|=8192,!au(e)));)e=Bi(e)}function mh(t,e){if((t[U]&256)===256)throw new N(911,!1);t[Tn]===null&&(t[Tn]=[]),t[Tn].push(e)}function s_(t,e){if(t[Tn]===null)return;let r=t[Tn].indexOf(e);r!==-1&&t[Tn].splice(r,1)}function Bi(t){let e=t[$e];return mn(e)?e[$e]:e}var H={lFrame:bh(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function a_(){return H.lFrame.elementDepthCount}function l_(){H.lFrame.elementDepthCount++}function c_(){H.lFrame.elementDepthCount--}function gh(){return H.bindingsEnabled}function u_(){return H.skipHydrationRootTNode!==null}function d_(t){return H.skipHydrationRootTNode===t}function f_(){H.skipHydrationRootTNode=null}function Y(){return H.lFrame.lView}function Ee(){return H.lFrame.tView}function C(t){return H.lFrame.contextLView=t,t[kt]}function D(t){return H.lFrame.contextLView=null,t}function ze(){let t=vh();for(;t!==null&&t.type===64;)t=t.parent;return t}function vh(){return H.lFrame.currentTNode}function p_(){let t=H.lFrame,e=t.currentTNode;return t.isParent?e:e.parent}function sr(t,e){let r=H.lFrame;r.currentTNode=t,r.isParent=e}function cu(){return H.lFrame.isParent}function yh(){H.lFrame.isParent=!1}function h_(){return H.lFrame.contextLView}function Qs(){let t=H.lFrame,e=t.bindingRootIndex;return e===-1&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function m_(t){return H.lFrame.bindingIndex=t}function Ys(){return H.lFrame.bindingIndex++}function _h(t){let e=H.lFrame,r=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,r}function g_(){return H.lFrame.inI18n}function v_(t,e){let r=H.lFrame;r.bindingIndex=r.bindingRootIndex=t,mc(e)}function y_(){return H.lFrame.currentDirectiveIndex}function mc(t){H.lFrame.currentDirectiveIndex=t}function __(t){let e=H.lFrame.currentDirectiveIndex;return e===-1?null:t[e]}function wh(){return H.lFrame.currentQueryIndex}function uu(t){H.lFrame.currentQueryIndex=t}function w_(t){let e=t[W];return e.type===2?e.declTNode:e.type===1?t[Lt]:null}function Ch(t,e,r){if(r&K.SkipSelf){let i=e,o=t;for(;i=i.parent,i===null&&!(r&K.Host);)if(i=w_(o),i===null||(o=o[Kr],i.type&10))break;if(i===null)return!1;e=i,t=o}let n=H.lFrame=Dh();return n.currentTNode=e,n.lView=t,!0}function du(t){let e=Dh(),r=t[W];H.lFrame=e,e.currentTNode=r.firstChild,e.lView=t,e.tView=r,e.contextLView=t,e.bindingIndex=r.bindingStartIndex,e.inI18n=!1}function Dh(){let t=H.lFrame,e=t===null?null:t.child;return e===null?bh(t):e}function bh(t){let e={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return t!==null&&(t.child=e),e}function xh(){let t=H.lFrame;return H.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}var Eh=xh;function fu(){let t=xh();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function C_(t){return(H.lFrame.contextLView=o_(t,H.lFrame.contextLView))[kt]}function ar(){return H.lFrame.selectedIndex}function er(t){H.lFrame.selectedIndex=t}function Ks(){let t=H.lFrame;return fh(t.tView,t.selectedIndex)}function L(){H.lFrame.currentNamespace=uh}function Ce(){D_()}function D_(){H.lFrame.currentNamespace=null}function b_(){return H.lFrame.currentNamespace}var Ih=!0;function Js(){return Ih}function Xs(t){Ih=t}function x_(t,e,r){let{ngOnChanges:n,ngOnInit:i,ngDoCheck:o}=e.type.prototype;if(n){let s=ah(e);(r.preOrderHooks??=[]).push(t,s),(r.preOrderCheckHooks??=[]).push(t,s)}i&&(r.preOrderHooks??=[]).push(0-t,i),o&&((r.preOrderHooks??=[]).push(t,o),(r.preOrderCheckHooks??=[]).push(t,o))}function ea(t,e){for(let r=e.directiveStart,n=e.directiveEnd;r=n)break}else e[l]<0&&(t[Vr]+=65536),(a>14>16&&(t[U]&3)===e&&(t[U]+=16384,ip(a,o)):ip(a,o)}var Ur=-1,tr=class{constructor(e,r,n){this.factory=e,this.resolving=!1,this.canSeeViewProviders=r,this.injectImpl=n}};function I_(t){return t instanceof tr}function M_(t){return(t.flags&8)!==0}function S_(t){return(t.flags&16)!==0}function Sh(t){return t!==Ur}function Es(t){return t&32767}function T_(t){return t>>16}function Is(t,e){let r=T_(t),n=e;for(;r>0;)n=n[Kr],r--;return n}var gc=!0;function Ms(t){let e=gc;return gc=t,e}var A_=256,Th=A_-1,Ah=5,O_=0,Wt={};function N_(t,e,r){let n;typeof r=="string"?n=r.charCodeAt(0)||0:r.hasOwnProperty(Ri)&&(n=r[Ri]),n==null&&(n=r[Ri]=O_++);let i=n&Th,o=1<>Ah)]|=o}function Ss(t,e){let r=Oh(t,e);if(r!==-1)return r;let n=e[W];n.firstCreatePass&&(t.injectorIndex=e.length,Wl(n.data,t),Wl(e,null),Wl(n.blueprint,null));let i=pu(t,e),o=t.injectorIndex;if(Sh(i)){let s=Es(i),a=Is(i,e),l=a[W].data;for(let c=0;c<8;c++)e[o+c]=a[s+c]|l[s+c]}return e[o+8]=i,o}function Wl(t,e){t.push(0,0,0,0,0,0,0,0,e)}function Oh(t,e){return t.injectorIndex===-1||t.parent&&t.parent.injectorIndex===t.injectorIndex||e[t.injectorIndex+8]===null?-1:t.injectorIndex}function pu(t,e){if(t.parent&&t.parent.injectorIndex!==-1)return t.parent.injectorIndex;let r=0,n=null,i=e;for(;i!==null;){if(n=Fh(i),n===null)return Ur;if(r++,i=i[Kr],n.injectorIndex!==-1)return n.injectorIndex|r<<16}return Ur}function vc(t,e,r){N_(t,e,r)}function k_(t,e){if(e==="class")return t.classes;if(e==="style")return t.styles;let r=t.attrs;if(r){let n=r.length,i=0;for(;i>20,h=n?a:a+f,v=i?a+f:c;for(let y=h;y=l&&I.type===r)return y}if(i){let y=s[l];if(y&&An(y)&&y.type===r)return l}return null}function nr(t,e,r,n){let i=t[r],o=e.data;if(I_(i)){let s=i;s.resolving&&ly(ay(o[r]));let a=Ms(s.canSeeViewProviders);s.resolving=!0;let l,c=s.injectImpl?et(s.injectImpl):null,f=Ch(t,n,K.Default);try{i=t[r]=s.factory(void 0,o,t,n),e.firstCreatePass&&r>=n.directiveStart&&x_(r,o[r],e)}finally{c!==null&&et(c),Ms(a),s.resolving=!1,Eh()}}return i}function R_(t){if(typeof t=="string")return t.charCodeAt(0)||0;let e=t.hasOwnProperty(Ri)?t[Ri]:void 0;return typeof e=="number"?e>=0?e&Th:F_:e}function op(t,e,r){let n=1<>Ah)]&n)}function sp(t,e){return!(t&K.Self)&&!(t&K.Host&&e)}var Qn=class{constructor(e,r){this._tNode=e,this._lView=r}get(e,r,n){return Ph(this._tNode,this._lView,e,Hs(n),r)}};function F_(){return new Qn(ze(),Y())}function Ct(t){return Wi(()=>{let e=t.prototype.constructor,r=e[_s]||yc(e),n=Object.prototype,i=Object.getPrototypeOf(t.prototype).constructor;for(;i&&i!==n;){let o=i[_s]||yc(i);if(o&&o!==r)return o;i=Object.getPrototypeOf(i)}return o=>new o})}function yc(t){return kp(t)?()=>{let e=yc(We(t));return e&&e()}:Yn(t)}function L_(t,e,r,n,i){let o=t,s=e;for(;o!==null&&s!==null&&s[U]&2048&&!(s[U]&512);){let a=Rh(o,s,r,n|K.Self,Wt);if(a!==Wt)return a;let l=o.parent;if(!l){let c=s[ih];if(c){let f=c.get(r,Wt,n);if(f!==Wt)return f}l=Fh(s),s=s[Kr]}o=l}return i}function Fh(t){let e=t[W],r=e.type;return r===2?e.declTNode:r===1?t[Lt]:null}function hu(t){return k_(ze(),t)}function ap(t,e=null,r=null,n){let i=Lh(t,e,r,n);return i.resolveInjectorInitializers(),i}function Lh(t,e=null,r=null,n,i=new Set){let o=[r||tt,nu(t)];return n=n||(typeof t=="object"?void 0:Ze(t)),new Vi(o,e||iu(),n||null,i)}var Jr=(()=>{let e=class e{static create(n,i){if(Array.isArray(n))return ap({name:""},i,n,"");{let o=n.name??"";return ap({name:o},n.parent,n.providers,o)}}};e.THROW_IF_NOT_FOUND=Fi,e.NULL=new Ds,e.\u0275prov=T({token:e,providedIn:"any",factory:()=>k(Hp)}),e.__NG_ELEMENT_ID__=-1;let t=e;return t})();var V_="ngOriginalError";function Zl(t){return t[V_]}var un=class{constructor(){this._console=console}handleError(e){let r=this._findOriginalError(e);this._console.error("ERROR",e),r&&this._console.error("ORIGINAL ERROR",r)}_findOriginalError(e){let r=e&&Zl(e);for(;r&&Zl(r);)r=Zl(r);return r||null}},Vh=new F("",{providedIn:"root",factory:()=>S(un).handleError.bind(void 0)}),jh=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=j_,e.__NG_ENV_ID__=n=>n;let t=e;return t})(),_c=class extends jh{constructor(e){super(),this._lView=e}onDestroy(e){return mh(this._lView,e),()=>s_(this._lView,e)}};function j_(){return new _c(Y())}function $_(){return Xr(ze(),Y())}function Xr(t,e){return new Fe(wt(t,e))}var Fe=(()=>{let e=class e{constructor(n){this.nativeElement=n}};e.__NG_ELEMENT_ID__=$_;let t=e;return t})();function U_(t){return t instanceof Fe?t.nativeElement:t}var wc=class extends ue{constructor(e=!1){super(),this.destroyRef=void 0,this.__isAsync=e,Wy()&&(this.destroyRef=S(jh,{optional:!0})??void 0)}emit(e){let r=ne(null);try{super.next(e)}finally{ne(r)}}subscribe(e,r,n){let i=e,o=r||(()=>null),s=n;if(e&&typeof e=="object"){let l=e;i=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Ql(o),i&&(i=Ql(i)),s&&(s=Ql(s)));let a=super.subscribe({next:i,error:o,complete:s});return e instanceof ve&&e.add(a),a}};function Ql(t){return e=>{setTimeout(t,void 0,e)}}var ye=wc;function B_(){return this._results[Symbol.iterator]()}var Cc=class t{get changes(){return this._changes??=new ye}constructor(e=!1){this._emitDistinctChangesOnly=e,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;let r=t.prototype;r[Symbol.iterator]||(r[Symbol.iterator]=B_)}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,r){return this._results.reduce(e,r)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,r){this.dirty=!1;let n=_y(e);(this._changesDetected=!yy(this._results,n,r))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}};function $h(t){return(t.flags&128)===128}var Uh=new Map,H_=0;function q_(){return H_++}function z_(t){Uh.set(t[Gs],t)}function G_(t){Uh.delete(t[Gs])}var lp="__ngContext__";function On(t,e){Zn(e)?(t[lp]=e[Gs],z_(e)):t[lp]=e}function Bh(t){return qh(t[$i])}function Hh(t){return qh(t[Nt])}function qh(t){for(;t!==null&&!mn(t);)t=t[Nt];return t}var Dc;function zh(t){Dc=t}function W_(){if(Dc!==void 0)return Dc;if(typeof document<"u")return document;throw new N(210,!1)}var mu=new F("",{providedIn:"root",factory:()=>Z_}),Z_="ng",gu=new F(""),Rn=new F("",{providedIn:"platform",factory:()=>"unknown"});var vu=new F("",{providedIn:"root",factory:()=>W_().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var Q_="h",Y_="b";var K_=()=>null;function yu(t,e,r=!1){return K_(t,e,r)}var Gh=!1,J_=new F("",{providedIn:"root",factory:()=>Gh});var us;function X_(){if(us===void 0&&(us=null,Ot.trustedTypes))try{us=Ot.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return us}function cp(t){return X_()?.createScriptURL(t)||t}var Ts=class{constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${Op})`}};function lr(t){return t instanceof Ts?t.changingThisBreaksApplicationSecurity:t}function _u(t,e){let r=ew(t);if(r!=null&&r!==e){if(r==="ResourceURL"&&e==="URL")return!0;throw new Error(`Required a safe ${e}, got a ${r} (see ${Op})`)}return r===e}function ew(t){return t instanceof Ts&&t.getTypeName()||null}var tw=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Wh(t){return t=String(t),t.match(tw)?t:"unsafe:"+t}var ta=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}(ta||{});function ot(t){let e=Qh();return e?e.sanitize(ta.URL,t)||"":_u(t,"URL")?lr(t):Wh(Bs(t))}function nw(t){let e=Qh();if(e)return cp(e.sanitize(ta.RESOURCE_URL,t)||"");if(_u(t,"ResourceURL"))return cp(lr(t));throw new N(904,!1)}function rw(t,e){return e==="src"&&(t==="embed"||t==="frame"||t==="iframe"||t==="media"||t==="script")||e==="href"&&(t==="base"||t==="link")?nw:ot}function Zh(t,e,r){return rw(e,r)(t)}function Qh(){let t=Y();return t&&t[Pt].sanitizer}var iw=/^>|^->||--!>|)/g,sw="\u200B$1\u200B";function aw(t){return t.replace(iw,e=>e.replace(ow,sw))}function Yh(t){return t.ownerDocument.defaultView}function cr(t){return t.ownerDocument}function Kh(t){return t instanceof Function?t():t}var dn=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}(dn||{}),lw;function wu(t,e){return lw(t,e)}function jr(t,e,r,n,i){if(n!=null){let o,s=!1;mn(n)?o=n:Zn(n)&&(s=!0,n=n[hn]);let a=Yt(n);t===0&&r!==null?i==null?nm(e,r,a):As(e,r,a,i||null,!0):t===1&&r!==null?As(e,r,a,i||null,!0):t===2?Iw(e,a,s):t===3&&e.destroyNode(a),o!=null&&Sw(e,t,o,r,i)}}function cw(t,e){return t.createText(e)}function uw(t,e,r){t.setValue(e,r)}function dw(t,e){return t.createComment(aw(e))}function Jh(t,e,r){return t.createElement(e,r)}function fw(t,e){Xh(t,e),e[hn]=null,e[Lt]=null}function pw(t,e,r,n,i,o){n[hn]=i,n[Lt]=e,ra(t,n,r,1,i,o)}function Xh(t,e){e[Pt].changeDetectionScheduler?.notify(1),ra(t,e,e[we],2,null,null)}function hw(t){let e=t[$i];if(!e)return Yl(t[W],t);for(;e;){let r=null;if(Zn(e))r=e[$i];else{let n=e[dt];n&&(r=n)}if(!r){for(;e&&!e[Nt]&&e!==t;)Zn(e)&&Yl(e[W],e),e=e[$e];e===null&&(e=t),Zn(e)&&Yl(e[W],e),r=e&&e[Nt]}e=r}}function mw(t,e,r,n){let i=dt+n,o=r.length;n>0&&(r[i-1][Nt]=e),n0&&(t[r-1][Nt]=n[Nt]);let o=Cs(t,dt+e);fw(n[W],n);let s=o[cn];s!==null&&s.detachView(o[W]),n[$e]=null,n[Nt]=null,n[U]&=-129}return n}function tm(t,e){if(!(e[U]&256)){let r=e[we];r.destroyNode&&ra(t,e,r,3,null,null),hw(e)}}function Yl(t,e){if(e[U]&256)return;let r=ne(null);try{e[U]&=-129,e[U]|=256,e[Jn]&&Cf(e[Jn]),yw(t,e),vw(t,e),e[W].type===1&&e[we].destroy();let n=e[Qi];if(n!==null&&mn(e[$e])){n!==e[$e]&&em(n,e);let i=e[cn];i!==null&&i.detachView(t)}G_(e)}finally{ne(r)}}function vw(t,e){let r=t.cleanup,n=e[ji];if(r!==null)for(let o=0;o=0?n[s]():n[-s].unsubscribe(),o+=2}else{let s=n[r[o+1]];r[o].call(s)}n!==null&&(e[ji]=null);let i=e[Tn];if(i!==null){e[Tn]=null;for(let o=0;o-1){let{encapsulation:o}=t.data[n.directiveStart+i];if(o===Zt.None||o===Zt.Emulated)return null}return wt(n,r)}}function As(t,e,r,n,i){t.insertBefore(e,r,n,i)}function nm(t,e,r){t.appendChild(e,r)}function up(t,e,r,n,i){n!==null?As(t,e,r,n,i):nm(t,e,r)}function Cw(t,e,r,n){t.removeChild(e,r,n)}function Cu(t,e){return t.parentNode(e)}function Dw(t,e){return t.nextSibling(e)}function bw(t,e,r){return Ew(t,e,r)}function xw(t,e,r){return t.type&40?wt(t,r):null}var Ew=xw,dp;function na(t,e,r,n){let i=_w(t,n,e),o=e[we],s=n.parent||e[Lt],a=bw(s,n,e);if(i!=null)if(Array.isArray(r))for(let l=0;l_t&&sm(t,e,_t,!1),Gt(s?2:0,i),r(n,i)}finally{er(o),Gt(s?3:1,i)}}function bu(t,e,r){if(su(e)){let n=ne(null);try{let i=e.directiveStart,o=e.directiveEnd;for(let s=i;snull;function Lw(t,e,r,n){let i=mm(e);i.push(r),t.firstCreatePass&&gm(t).push(n,i.length-1)}function Vw(t,e,r,n,i,o){let s=e?e.injectorIndex:-1,a=0;return u_()&&(a|=128),{type:r,index:n,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:i,attrs:o,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function fp(t,e,r,n,i){for(let o in e){if(!e.hasOwnProperty(o))continue;let s=e[o];if(s===void 0)continue;n??={};let a,l=de.None;Array.isArray(s)?(a=s[0],l=s[1]):a=s;let c=o;if(i!==null){if(!i.hasOwnProperty(o))continue;c=i[o]}t===0?pp(n,r,c,a,l):pp(n,r,c,a)}return n}function pp(t,e,r,n,i){let o;t.hasOwnProperty(r)?(o=t[r]).push(e,n):o=t[r]=[e,n],i!==void 0&&o.push(i)}function jw(t,e,r){let n=e.directiveStart,i=e.directiveEnd,o=t.data,s=e.attrs,a=[],l=null,c=null;for(let f=n;f0;){let r=t[--e];if(typeof r=="number"&&r<0)return r}return 0}function qw(t,e,r,n){let i=r.directiveStart,o=r.directiveEnd;Ws(r)&&Kw(e,r,t.data[i+r.componentOffset]),t.firstCreatePass||Ss(r,e),On(n,e);let s=r.initialInputs;for(let a=i;a{Ui(t.lView)},consumerOnSignalRead(){this.lView[Jn]=this}}),_m=100;function wm(t,e=!0,r=0){let n=t[Pt],i=n.rendererFactory,o=!1;o||i.begin?.();try{pC(t,r)}catch(s){throw e&&vm(t,s),s}finally{o||(i.end?.(),n.inlineEffectRunner?.flush())}}function pC(t,e){Mc(t,e);let r=0;for(;lu(t);){if(r===_m)throw new N(103,!1);r++,Mc(t,1)}}function hC(t,e,r,n){let i=e[U];if((i&256)===256)return;let o=!1;!o&&e[Pt].inlineEffectRunner?.flush(),du(e);let s=null,a=null;!o&&mC(t)&&(a=cC(e),s=_f(a));try{hh(e),m_(t.bindingStartIndex),r!==null&&cm(t,e,r,2,n);let l=(i&3)===3;if(!o)if(l){let h=t.preOrderCheckHooks;h!==null&&hs(e,h,null)}else{let h=t.preOrderHooks;h!==null&&ms(e,h,0,null),Gl(e,0)}if(gC(e),Cm(e,0),t.contentQueries!==null&&hm(t,e),!o)if(l){let h=t.contentCheckHooks;h!==null&&hs(e,h)}else{let h=t.contentHooks;h!==null&&ms(e,h,1),Gl(e,1)}Ow(t,e);let c=t.components;c!==null&&bm(e,c,0);let f=t.viewQuery;if(f!==null&&Ic(2,f,n),!o)if(l){let h=t.viewCheckHooks;h!==null&&hs(e,h)}else{let h=t.viewHooks;h!==null&&ms(e,h,2),Gl(e,2)}if(t.firstUpdatePass===!0&&(t.firstUpdatePass=!1),e[zl]){for(let h of e[zl])h();e[zl]=null}o||(e[U]&=-73)}catch(l){throw Ui(e),l}finally{a!==null&&(wf(a,s),dC(a)),fu()}}function mC(t){return t.type!==2}function Cm(t,e){for(let r=Bh(t);r!==null;r=Hh(r))for(let n=dt;n-1&&(bc(e,n),Cs(r,n))}this._attachedToViewContainer=!1}tm(this._lView[W],this._lView)}onDestroy(e){mh(this._lView,e)}markForCheck(){Ou(this._cdRefInjectingView||this._lView)}detach(){this._lView[U]&=-129}reattach(){hc(this._lView),this._lView[U]|=128}detectChanges(){this._lView[U]|=1024,wm(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new N(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,Xh(this._lView[W],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new N(902,!1);this._appRef=e,hc(this._lView)}},ir=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=wC;let t=e;return t})(),yC=ir,_C=class extends yC{constructor(e,r,n){super(),this._declarationLView=e,this._declarationTContainer=r,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,r){return this.createEmbeddedViewImpl(e,r)}createEmbeddedViewImpl(e,r,n){let i=sC(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:r,dehydratedView:n});return new rr(i)}};function wC(){return sa(ze(),Y())}function sa(t,e){return t.type&4?new _C(e,t,Xr(t,e)):null}var LP=new RegExp(`^(\\d+)*(${Y_}|${Q_})*(.*)`);var CC=()=>null;function mp(t,e){return CC(t,e)}var Sc=class{},Tc=class{},Ns=class{};function DC(t){let e=Error(`No component factory found for ${Ze(t)}.`);return e[bC]=t,e}var bC="ngComponent";var Ac=class{resolveComponentFactory(e){throw DC(e)}},aa=(()=>{let e=class e{};e.NULL=new Ac;let t=e;return t})(),Hi=class{},jt=(()=>{let e=class e{constructor(){this.destroyNode=null}};e.__NG_ELEMENT_ID__=()=>xC();let t=e;return t})();function xC(){let t=Y(),e=ze(),r=Pn(e.index,t);return(Zn(r)?r:t)[we]}var EC=(()=>{let e=class e{};e.\u0275prov=T({token:e,providedIn:"root",factory:()=>null});let t=e;return t})(),Kl={};var gp=new Set;function Nu(t){gp.has(t)||(gp.add(t),performance?.mark?.("mark_feature_usage",{detail:{feature:t}}))}function vp(...t){}function IC(){let t=typeof Ot.requestAnimationFrame=="function",e=Ot[t?"requestAnimationFrame":"setTimeout"],r=Ot[t?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&e&&r){let n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);let i=r[Zone.__symbol__("OriginalDelegate")];i&&(r=i)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:r}}var xe=class t{constructor({enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:n=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ye(!1),this.onMicrotaskEmpty=new ye(!1),this.onStable=new ye(!1),this.onError=new ye(!1),typeof Zone>"u")throw new N(908,!1);Zone.assertZonePatched();let i=this;i._nesting=0,i._outer=i._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(i._inner=i._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(i._inner=i._inner.fork(Zone.longStackTraceZoneSpec)),i.shouldCoalesceEventChangeDetection=!n&&r,i.shouldCoalesceRunChangeDetection=n,i.lastRequestAnimationFrameId=-1,i.nativeRequestAnimationFrame=IC().nativeRequestAnimationFrame,TC(i)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get("isAngularZone")===!0}static assertInAngularZone(){if(!t.isInAngularZone())throw new N(909,!1)}static assertNotInAngularZone(){if(t.isInAngularZone())throw new N(909,!1)}run(e,r,n){return this._inner.run(e,r,n)}runTask(e,r,n,i){let o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+i,e,MC,vp,vp);try{return o.runTask(s,r,n)}finally{o.cancelTask(s)}}runGuarded(e,r,n){return this._inner.runGuarded(e,r,n)}runOutsideAngular(e){return this._outer.run(e)}},MC={};function ku(t){if(t._nesting==0&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function SC(t){t.isCheckStableRunning||t.lastRequestAnimationFrameId!==-1||(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(Ot,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,Oc(t),t.isCheckStableRunning=!0,ku(t),t.isCheckStableRunning=!1},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),Oc(t))}function TC(t){let e=()=>{SC(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(r,n,i,o,s,a)=>{if(AC(a))return r.invokeTask(i,o,s,a);try{return yp(t),r.invokeTask(i,o,s,a)}finally{(t.shouldCoalesceEventChangeDetection&&o.type==="eventTask"||t.shouldCoalesceRunChangeDetection)&&e(),_p(t)}},onInvoke:(r,n,i,o,s,a,l)=>{try{return yp(t),r.invoke(i,o,s,a,l)}finally{t.shouldCoalesceRunChangeDetection&&e(),_p(t)}},onHasTask:(r,n,i,o)=>{r.hasTask(i,o),n===i&&(o.change=="microTask"?(t._hasPendingMicrotasks=o.microTask,Oc(t),ku(t)):o.change=="macroTask"&&(t.hasPendingMacrotasks=o.macroTask))},onHandleError:(r,n,i,o)=>(r.handleError(i,o),t.runOutsideAngular(()=>t.onError.emit(o)),!1)})}function Oc(t){t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&t.lastRequestAnimationFrameId!==-1?t.hasPendingMicrotasks=!0:t.hasPendingMicrotasks=!1}function yp(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function _p(t){t._nesting--,ku(t)}function AC(t){return!Array.isArray(t)||t.length!==1?!1:t[0].data?.__ignore_ng_zone__===!0}var xm=(()=>{let e=class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){let n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(let i of n)i()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}};e.\u0275prov=T({token:e,providedIn:"root",factory:()=>new e});let t=e;return t})();function ks(t,e,r){let n=r?t.styles:null,i=r?t.classes:null,o=0;if(e!==null)for(let s=0;s0&&im(t,r,o.join(" "))}}function LC(t,e,r){let n=t.projection=[];for(let i=0;i{let e=class e{};e.__NG_ELEMENT_ID__=jC;let t=e;return t})();function jC(){let t=ze();return Im(t,Y())}var $C=gn,Em=class extends $C{constructor(e,r,n){super(),this._lContainer=e,this._hostTNode=r,this._hostLView=n}get element(){return Xr(this._hostTNode,this._hostLView)}get injector(){return new Qn(this._hostTNode,this._hostLView)}get parentInjector(){let e=pu(this._hostTNode,this._hostLView);if(Sh(e)){let r=Is(e,this._hostLView),n=Es(e),i=r[W].data[n+8];return new Qn(i,r)}else return new Qn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let r=Cp(this._lContainer);return r!==null&&r[e]||null}get length(){return this._lContainer.length-dt}createEmbeddedView(e,r,n){let i,o;typeof n=="number"?i=n:n!=null&&(i=n.index,o=n.injector);let s=mp(this._lContainer,e.ssrId),a=e.createEmbeddedViewImpl(r||{},o,s);return this.insertImpl(a,i,hp(this._hostTNode,s)),a}createComponent(e,r,n,i,o){let s=e&&!Zy(e),a;if(s)a=r;else{let I=r||{};a=I.index,n=I.injector,i=I.projectableNodes,o=I.environmentInjector||I.ngModuleRef}let l=s?e:new qi(Kn(e)),c=n||this.parentInjector;if(!o&&l.ngModule==null){let V=(s?c:this.parentInjector).get(nt,null);V&&(o=V)}let f=Kn(l.componentType??{}),h=mp(this._lContainer,f?.id??null),v=h?.firstChild??null,y=l.create(c,i,v,o);return this.insertImpl(y.hostView,a,hp(this._hostTNode,h)),y}insert(e,r){return this.insertImpl(e,r,!0)}insertImpl(e,r,n){let i=e._lView;if(r_(i)){let a=this.indexOf(e);if(a!==-1)this.detach(a);else{let l=i[$e],c=new Em(l,l[Lt],l[$e]);c.detach(c.indexOf(e))}}let o=this._adjustIndex(r),s=this._lContainer;return aC(s,i,o,n),e.attachToViewContainerRef(),Bp(Jl(s),o,e),e}move(e,r){return this.insert(e,r)}indexOf(e){let r=Cp(this._lContainer);return r!==null?r.indexOf(e):-1}remove(e){let r=this._adjustIndex(e,-1),n=bc(this._lContainer,r);n&&(Cs(Jl(this._lContainer),r),tm(n[W],n))}detach(e){let r=this._adjustIndex(e,-1),n=bc(this._lContainer,r);return n&&Cs(Jl(this._lContainer),r)!=null?new rr(n):null}_adjustIndex(e,r=0){return e??this.length+r}};function Cp(t){return t[xs]}function Jl(t){return t[xs]||(t[xs]=[])}function Im(t,e){let r,n=e[t.index];return mn(n)?r=n:(r=pm(n,e,null,t),e[t.index]=r,oa(e,r)),BC(r,e,t,n),new Em(r,t,e)}function UC(t,e){let r=t[we],n=r.createComment(""),i=wt(e,t),o=Cu(r,i);return As(r,o,n,Dw(r,i),!1),n}var BC=zC,HC=()=>!1;function qC(t,e,r){return HC(t,e,r)}function zC(t,e,r,n){if(t[Xn])return;let i;r.type&8?i=Yt(n):i=UC(e,r),t[Xn]=i}var Pc=class t{constructor(e){this.queryList=e,this.matches=null}clone(){return new t(this.queryList)}setDirty(){this.queryList.setDirty()}},Rc=class t{constructor(e=[]){this.queries=e}createEmbeddedView(e){let r=e.queries;if(r!==null){let n=e.contentQueries!==null?e.contentQueries[0]:r.length,i=[];for(let o=0;o0)n.push(s[a/2]);else{let c=o[a+1],f=e[-l];for(let h=dt;he.trim())}function Tm(t,e,r){t.queries===null&&(t.queries=new Fc),t.queries.track(new Lc(e,r))}function eD(t,e){let r=t.contentQueries||(t.contentQueries=[]),n=r.length?r[r.length-1]:-1;e!==n&&r.push(t.queries.length-1,e)}function Pu(t,e){return t.queries.getByIndex(e)}function tD(t,e){let r=t[W],n=Pu(r,e);return n.crossesNgTemplate?Vc(r,t,e,[]):Mm(r,t,n,e)}function nD(t){return typeof t=="function"&&t[gl]!==void 0}function Am(t){return nD(t)&&typeof t.set=="function"}function rD(t){return Object.getPrototypeOf(t.prototype).constructor}function Ue(t){let e=rD(t.type),r=!0,n=[t];for(;e;){let i;if(An(t))i=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new N(903,!1);i=e.\u0275dir}if(i){if(r){n.push(i);let s=t;s.inputs=ds(t.inputs),s.inputTransforms=ds(t.inputTransforms),s.declaredInputs=ds(t.declaredInputs),s.outputs=ds(t.outputs);let a=i.hostBindings;a&&lD(t,a);let l=i.viewQuery,c=i.contentQueries;if(l&&sD(t,l),c&&aD(t,c),iD(t,i),Xv(t.outputs,i.outputs),An(i)&&i.data.animation){let f=t.data;f.animation=(f.animation||[]).concat(i.data.animation)}}let o=i.features;if(o)for(let s=0;s=0;n--){let i=t[n];i.hostVars=e+=i.hostVars,i.hostAttrs=Li(i.hostAttrs,r=Li(r,i.hostAttrs))}}function ds(t){return t===Br?{}:t===tt?[]:t}function sD(t,e){let r=t.viewQuery;r?t.viewQuery=(n,i)=>{e(n,i),r(n,i)}:t.viewQuery=e}function aD(t,e){let r=t.contentQueries;r?t.contentQueries=(n,i,o)=>{e(n,i,o),r(n,i,o)}:t.contentQueries=e}function lD(t,e){let r=t.hostBindings;r?t.hostBindings=(n,i)=>{e(n,i),r(n,i)}:t.hostBindings=e}function Ru(t){let e=t.inputConfig,r={};for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];Array.isArray(i)&&i[3]&&(r[n]=i[3])}t.inputTransforms=r}var Nn=class{},zi=class{};var jc=class extends Nn{constructor(e,r,n){super(),this._parent=r,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Ps(this);let i=Kp(e);this._bootstrapComponents=Kh(i.bootstrap),this._r3Injector=Lh(e,r,[{provide:Nn,useValue:this},{provide:aa,useValue:this.componentFactoryResolver},...n],Ze(e),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(e)}get injector(){return this._r3Injector}destroy(){let e=this._r3Injector;!e.destroyed&&e.destroy(),this.destroyCbs.forEach(r=>r()),this.destroyCbs=null}onDestroy(e){this.destroyCbs.push(e)}},$c=class extends zi{constructor(e){super(),this.moduleType=e}create(e){return new jc(this.moduleType,e,[])}};var Fs=class extends Nn{constructor(e){super(),this.componentFactoryResolver=new Ps(this),this.instance=null;let r=new Vi([...e.providers,{provide:Nn,useValue:this},{provide:aa,useValue:this.componentFactoryResolver}],e.parent||iu(),e.debugName,new Set(["environment"]));this.injector=r,e.runEnvironmentInitializers&&r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Fu(t,e,r=null){return new Fs({providers:t,parent:e,debugName:r,runEnvironmentInitializers:!0}).injector}var ur=(()=>{let e=class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new Ve(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function Om(t){return uD(t)?Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t:!1}function cD(t,e){if(Array.isArray(t))for(let r=0;r>17&32767}function vD(t){return(t&2)==2}function yD(t,e){return t&131071|e<<17}function Uc(t){return t|2}function Zr(t){return(t&131068)>>2}function Xl(t,e){return t&-131069|e<<2}function _D(t){return(t&1)===1}function Bc(t){return t|1}function wD(t,e,r,n,i,o){let s=o?e.classBindings:e.styleBindings,a=or(s),l=Zr(s);t[n]=r;let c=!1,f;if(Array.isArray(r)){let h=r;f=h[1],(f===null||Zi(h,f)>0)&&(c=!0)}else f=r;if(i)if(l!==0){let v=or(t[a+1]);t[n+1]=fs(v,a),v!==0&&(t[v+1]=Xl(t[v+1],n)),t[a+1]=yD(t[a+1],n)}else t[n+1]=fs(a,0),a!==0&&(t[a+1]=Xl(t[a+1],n)),a=n;else t[n+1]=fs(l,0),a===0?a=n:t[l+1]=Xl(t[l+1],n),l=n;c&&(t[n+1]=Uc(t[n+1])),Dp(t,f,n,!0),Dp(t,f,n,!1),CD(e,f,t,n,o),s=fs(a,l),o?e.classBindings=s:e.styleBindings=s}function CD(t,e,r,n,i){let o=i?t.residualClasses:t.residualStyles;o!=null&&typeof e=="string"&&Zi(o,e)>=0&&(r[n+1]=Bc(r[n+1]))}function Dp(t,e,r,n){let i=t[r+1],o=e===null,s=n?or(i):Zr(i),a=!1;for(;s!==0&&(a===!1||o);){let l=t[s],c=t[s+1];DD(l,e)&&(a=!0,t[s+1]=n?Bc(c):Uc(c)),s=n?or(c):Zr(c)}a&&(t[r+1]=n?Uc(i):Bc(i))}function DD(t,e){return t===null||e==null||(Array.isArray(t)?t[1]:t)===e?!0:Array.isArray(t)&&typeof e=="string"?Zi(t,e)>=0:!1}var Pe={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Nm(t){return t.substring(Pe.key,Pe.keyEnd)}function bD(t){return t.substring(Pe.value,Pe.valueEnd)}function xD(t){return Rm(t),km(t,Qr(t,0,Pe.textEnd))}function km(t,e){let r=Pe.textEnd;return r===e?-1:(e=Pe.keyEnd=ID(t,Pe.key=e,r),Qr(t,e,r))}function ED(t){return Rm(t),Pm(t,Qr(t,0,Pe.textEnd))}function Pm(t,e){let r=Pe.textEnd,n=Pe.key=Qr(t,e,r);return r===n?-1:(n=Pe.keyEnd=MD(t,n,r),n=bp(t,n,r,58),n=Pe.value=Qr(t,n,r),n=Pe.valueEnd=SD(t,n,r),bp(t,n,r,59))}function Rm(t){Pe.key=0,Pe.keyEnd=0,Pe.value=0,Pe.valueEnd=0,Pe.textEnd=t.length}function Qr(t,e,r){for(;e32;)e++;return e}function MD(t,e,r){let n;for(;e=65&&(n&-33)<=90||n>=48&&n<=57);)e++;return e}function bp(t,e,r,n){return e=Qr(t,e,r),e32&&(a=s),o=i,i=n,n=l&-33}return a}function xp(t,e,r,n){let i=-1,o=r;for(;o=0;r=Pm(e,r))jm(t,Nm(e),bD(e))}function OD(t,e){for(let r=xD(e);r>=0;r=km(e,r))qs(t,Nm(e),!0)}function ND(t,e,r,n){let i=Y(),o=Ee(),s=_h(2);if(o.firstUpdatePass&&Vm(o,t,s,n),e!==Vt&&fn(i,s,e)){let a=o.data[ar()];$m(o,a,i,i[we],t,i[s+1]=jD(e,r),n,s)}}function Fm(t,e,r,n){let i=Ee(),o=_h(2);i.firstUpdatePass&&Vm(i,null,o,n);let s=Y();if(r!==Vt&&fn(s,o,r)){let a=i.data[ar()];if(Um(a,n)&&!Lm(i,o)){let l=n?a.classesWithoutHost:a.stylesWithoutHost;l!==null&&(r=oc(l,r||"")),Hc(i,a,s,r,n)}else VD(i,a,s,s[we],s[o+1],s[o+1]=LD(t,e,r),n,o)}}function Lm(t,e){return e>=t.expandoStartIndex}function Vm(t,e,r,n){let i=t.data;if(i[r+1]===null){let o=i[ar()],s=Lm(t,r);Um(o,n)&&e===null&&!s&&(e=!1),e=kD(i,o,e,n),wD(i,o,e,r,s,n)}}function kD(t,e,r,n){let i=__(t),o=n?e.residualClasses:e.residualStyles;if(i===null)(n?e.classBindings:e.styleBindings)===0&&(r=ec(null,t,e,r,n),r=Gi(r,e.attrs,n),o=null);else{let s=e.directiveStylingLast;if(s===-1||t[s]!==i)if(r=ec(i,t,e,r,n),o===null){let l=PD(t,e,n);l!==void 0&&Array.isArray(l)&&(l=ec(null,t,e,l[1],n),l=Gi(l,e.attrs,n),RD(t,e,n,l))}else o=FD(t,e,n)}return o!==void 0&&(n?e.residualClasses=o:e.residualStyles=o),r}function PD(t,e,r){let n=r?e.classBindings:e.styleBindings;if(Zr(n)!==0)return t[or(n)]}function RD(t,e,r,n){let i=r?e.classBindings:e.styleBindings;t[or(i)]=n}function FD(t,e,r){let n,i=e.directiveEnd;for(let o=1+e.directiveStylingLast;o0;){let l=t[i],c=Array.isArray(l),f=c?l[1]:l,h=f===null,v=r[i+1];v===Vt&&(v=h?tt:void 0);let y=h?Hl(v,n):f===n?v:void 0;if(c&&!Ls(y)&&(y=Hl(l,n)),Ls(y)&&(a=y,s))return a;let I=t[i+1];i=s?or(I):Zr(I)}if(e!==null){let l=o?e.residualClasses:e.residualStyles;l!=null&&(a=Hl(l,n))}return a}function Ls(t){return t!==void 0}function jD(t,e){return t==null||t===""||(typeof e=="string"?t=t+e:typeof t=="object"&&(t=Ze(lr(t)))),t}function Um(t,e){return(t.flags&(e?8:16))!==0}function Bm(t,e,r){let n=Y(),i=la(n,t,e,r);Fm(qs,OD,i,!0)}function $D(t,e,r,n,i,o){let s=e.consts,a=Wr(s,i),l=Yi(e,t,2,n,a);return Su(e,r,l,Wr(s,o)),l.attrs!==null&&ks(l,l.attrs,!1),l.mergedAttrs!==null&&ks(l,l.mergedAttrs,!0),e.queries!==null&&e.queries.elementStart(e,l),l}function u(t,e,r,n){let i=Y(),o=Ee(),s=_t+t,a=i[we],l=o.firstCreatePass?$D(s,o,i,e,r,n):o.data[s],c=UD(o,i,l,a,e,t);i[s]=c;let f=Zs(l);return sr(l,!0),om(a,c,l),!pD(l)&&Js()&&na(o,i,c,l),a_()===0&&On(c,i),l_(),f&&(xu(o,i,l),bu(o,l,i)),n!==null&&Eu(i,l),u}function d(){let t=ze();cu()?yh():(t=t.parent,sr(t,!1));let e=t;d_(e)&&f_(),c_();let r=Ee();return r.firstCreatePass&&(ea(r,t),su(t)&&r.queries.elementEnd(t)),e.classesWithoutHost!=null&&M_(e)&&Hc(r,e,Y(),e.classesWithoutHost,!0),e.stylesWithoutHost!=null&&S_(e)&&Hc(r,e,Y(),e.stylesWithoutHost,!1),d}function w(t,e,r,n){return u(t,e,r,n),d(),w}var UD=(t,e,r,n,i,o)=>(Xs(!0),Jh(n,i,b_()));function BD(t,e,r,n,i){let o=e.consts,s=Wr(o,n),a=Yi(e,t,8,"ng-container",s);s!==null&&ks(a,s,!0);let l=Wr(o,i);return Su(e,r,a,l),e.queries!==null&&e.queries.elementStart(e,a),a}function ft(t,e,r){let n=Y(),i=Ee(),o=t+_t,s=i.firstCreatePass?BD(o,i,n,e,r):i.data[o];sr(s,!0);let a=HD(i,n,s,t);return n[o]=a,Js()&&na(i,n,a,s),On(a,n),Zs(s)&&(xu(i,n,s),bu(i,s,n)),r!=null&&Eu(n,s),ft}function pt(){let t=ze(),e=Ee();return cu()?yh():(t=t.parent,sr(t,!1)),e.firstCreatePass&&(ea(e,t),su(t)&&e.queries.elementEnd(t)),pt}function ca(t,e,r){return ft(t,e,r),pt(),ca}var HD=(t,e,r,n)=>(Xs(!0),dw(e[we],""));function P(){return Y()}var Wn=void 0;function qD(t){let e=t,r=Math.floor(Math.abs(t)),n=t.toString().replace(/^[^.]*\.?/,"").length;return r===1&&n===0?1:5}var zD=["en",[["a","p"],["AM","PM"],Wn],[["AM","PM"],Wn,Wn],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Wn,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Wn,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Wn,"{1} 'at' {0}",Wn],[".",",",";","%","+","-","E","\xD7","\u2030","\u221E","NaN",":"],["#,##0.###","#,##0%","\xA4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",qD],tc={};function Dt(t){let e=GD(t),r=Ip(e);if(r)return r;let n=e.split("-")[0];if(r=Ip(n),r)return r;if(n==="en")return zD;throw new N(701,!1)}function Ip(t){return t in tc||(tc[t]=Ot.ng&&Ot.ng.common&&Ot.ng.common.locales&&Ot.ng.common.locales[t]),tc[t]}var Ie=function(t){return t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData",t}(Ie||{});function GD(t){return t.toLowerCase().replace(/_/g,"-")}var Vs="en-US";var WD=Vs;function ZD(t){typeof t=="string"&&(WD=t.toLowerCase().replace(/_/g,"-"))}function E(t,e,r,n){let i=Y(),o=Ee(),s=ze();return Hm(o,i,i[we],s,t,e,n),E}function QD(t,e,r,n){let i=t.cleanup;if(i!=null)for(let o=0;ol?a[l]:null}typeof s=="string"&&(o+=2)}return null}function Hm(t,e,r,n,i,o,s){let a=Zs(n),c=t.firstCreatePass&&gm(t),f=e[kt],h=mm(e),v=!0;if(n.type&3||s){let V=wt(n,e),j=s?s(V):V,R=h.length,He=s?he=>s(Yt(he[n.index])):n.index,Le=null;if(!s&&a&&(Le=QD(t,e,i,n.index)),Le!==null){let he=Le.__ngLastListenerFn__||Le;he.__ngNextListenerFn__=o,Le.__ngLastListenerFn__=o,v=!1}else{o=Sp(n,e,f,o,!1);let he=r.listen(j,i,o);h.push(o,he),c&&c.push(i,He,R,R+1)}}else o=Sp(n,e,f,o,!1);let y=n.outputs,I;if(v&&y!==null&&(I=y[i])){let V=I.length;if(V)for(let j=0;j-1?Pn(t.index,e):e;Ou(a);let l=Mp(e,r,n,s),c=o.__ngNextListenerFn__;for(;c;)l=Mp(e,r,c,s)&&l,c=c.__ngNextListenerFn__;return i&&l===!1&&s.preventDefault(),l}}function g(t=1){return C_(t)}function Qe(t,e,r){return dr(t,"",e,"",r),Qe}function dr(t,e,r,n,i){let o=Y(),s=la(o,e,r,n);if(s!==Vt){let a=Ee(),l=Ks();Mu(a,l,o,t,s,o[we],i,!1)}return dr}function qm(t,e,r,n){JC(t,e,r,n)}function Kt(t,e,r){KC(t,e,r)}function bt(t){let e=Y(),r=Ee(),n=wh();uu(n+1);let i=Pu(r,n);if(t.dirty&&n_(e)===((i.metadata.flags&2)===2)){if(i.matches===null)t.reset([]);else{let o=tD(e,n);t.reset(o,U_),t.notifyOnChanges()}return!0}return!1}function xt(){return YC(Y(),wh())}function YD(t,e,r,n){r>=t.data.length&&(t.data[r]=null,t.blueprint[r]=null),e[r]=n}function pe(t){let e=h_();return ph(e,_t+t)}function zm(t,e,r){let n=Y(),i=la(n,t,e,r);TD(i)}function p(t,e=""){let r=Y(),n=Ee(),i=t+_t,o=n.firstCreatePass?Yi(n,i,1,e,null):n.data[i],s=KD(n,r,o,e,t);r[i]=s,Js()&&na(n,r,s,o),sr(o,!1)}var KD=(t,e,r,n,i)=>(Xs(!0),cw(e[we],n));function $(t){return Z("",t,""),$}function Z(t,e,r){let n=Y(),i=la(n,t,e,r);return i!==Vt&&nC(n,ar(),i),Z}function $t(t,e,r){Am(e)&&(e=e());let n=Y(),i=Ys();if(fn(n,i,e)){let o=Ee(),s=Ks();Mu(o,s,n,t,e,n[we],r,!1)}return $t}function Jt(t,e){let r=Am(t);return r&&t.set(e),r}function Ut(t,e){let r=Y(),n=Ee(),i=ze();return Hm(n,r,r[we],i,t,e),Ut}function JD(t,e,r){let n=Ee();if(n.firstCreatePass){let i=An(t);qc(r,n.data,n.blueprint,i,!0),qc(e,n.data,n.blueprint,i,!1)}}function qc(t,e,r,n,i){if(t=We(t),Array.isArray(t))for(let o=0;o>20;if(qr(t)||!t.multi){let y=new tr(c,i,b),I=rc(l,e,i?f:f+v,h);I===-1?(vc(Ss(a,s),o,l),nc(o,t,e.length),e.push(l),a.directiveStart++,a.directiveEnd++,i&&(a.providerIndexes+=1048576),r.push(y),s.push(y)):(r[I]=y,s[I]=y)}else{let y=rc(l,e,f+v,h),I=rc(l,e,f,f+v),V=y>=0&&r[y],j=I>=0&&r[I];if(i&&!j||!i&&!V){vc(Ss(a,s),o,l);let R=tb(i?eb:XD,r.length,i,n,c);!i&&j&&(r[I].providerFactory=R),nc(o,t,e.length,0),e.push(l),a.directiveStart++,a.directiveEnd++,i&&(a.providerIndexes+=1048576),r.push(R),s.push(R)}else{let R=Gm(r[i?I:y],c,!i&&n);nc(o,t,y>-1?y:I,R)}!i&&n&&j&&r[I].componentProviders++}}}function nc(t,e,r,n){let i=qr(e),o=$y(e);if(i||o){let l=(o?We(e.useClass):e).prototype.ngOnDestroy;if(l){let c=t.destroyHooks||(t.destroyHooks=[]);if(!i&&e.multi){let f=c.indexOf(r);f===-1?c.push(r,[n,l]):c[f+1].push(n,l)}else c.push(r,l)}}}function Gm(t,e,r){return r&&t.componentProviders++,t.multi.push(e)-1}function rc(t,e,r,n){for(let i=r;i{r.providersResolver=(n,i)=>JD(n,i?i(t):t,e)}}var nb=(()=>{let e=class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let i=eh(!1,n.type),o=i.length>0?Fu([i],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}};e.\u0275prov=T({token:e,providedIn:"environment",factory:()=>new e(k(nt))});let t=e;return t})();function te(t){Nu("NgStandalone"),t.getStandaloneInjector=e=>e.get(nb).getOrCreateStandaloneInjector(t)}function ua(t,e,r){let n=Qs()+t,i=Y();return i[n]===Vt?Lu(i,n,r?e.call(r):e()):dD(i,n)}function fr(t,e,r,n){return Zm(Y(),Qs(),t,e,r,n)}function da(t,e,r,n,i){return rb(Y(),Qs(),t,e,r,n,i)}function Wm(t,e){let r=t[e];return r===Vt?void 0:r}function Zm(t,e,r,n,i,o){let s=e+r;return fn(t,s,i)?Lu(t,s+1,o?n.call(o,i):n(i)):Wm(t,s+1)}function rb(t,e,r,n,i,o,s){let a=e+r;return fD(t,a,i,o)?Lu(t,a+2,s?n.call(s,i,o):n(i,o)):Wm(t,a+2)}function Se(t,e){let r=Ee(),n,i=t+_t;r.firstCreatePass?(n=ib(e,r.pipeRegistry),r.data[i]=n,n.onDestroy&&(r.destroyHooks??=[]).push(i,n.onDestroy)):n=r.data[i];let o=n.factory||(n.factory=Yn(n.type,!0)),s,a=et(b);try{let l=Ms(!1),c=o();return Ms(l),YD(r,Y(),i,c),c}finally{et(a)}}function ib(t,e){if(e)for(let r=e.length-1;r>=0;r--){let n=e[r];if(t===n.name)return n}}function Te(t,e,r){let n=t+_t,i=Y(),o=ph(i,n);return ob(i,n)?Zm(i,Qs(),e,o.transform,r,o):o.transform(r)}function ob(t,e){return t[W].data[e].pure}function ge(t,e){return sa(t,e)}var fa=(()=>{let e=class e{log(n){console.log(n)}warn(n){console.warn(n)}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"platform"});let t=e;return t})();var Qm=new F("");function pr(t){return!!t&&typeof t.then=="function"}function Ym(t){return!!t&&typeof t.subscribe=="function"}var Km=new F(""),Jm=(()=>{let e=class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,i)=>{this.resolve=n,this.reject=i}),this.appInits=S(Km,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let s=o();if(pr(s))n.push(s);else if(Ym(s)){let a=new Promise((l,c)=>{s.subscribe({complete:l,error:c})});n.push(a)}}let i=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{i()}).catch(o=>{this.reject(o)}),n.length===0&&i(),this.initialized=!0}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),pa=new F("");function sb(){Df(()=>{throw new N(600,!1)})}function ab(t){return t.isBoundToModule}function lb(t,e,r){try{let n=r();return pr(n)?n.catch(i=>{throw e.runOutsideAngular(()=>t.handleError(i)),i}):n}catch(n){throw e.runOutsideAngular(()=>t.handleError(n)),n}}var ei=(()=>{let e=class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=S(Vh),this.afterRenderEffectManager=S(xm),this.externalTestViews=new Set,this.beforeRender=new ue,this.afterTick=new ue,this.componentTypes=[],this.components=[],this.isStable=S(ur).hasPendingTasks.pipe(A(n=>!n)),this._injector=S(nt)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,i){let o=n instanceof Ns;if(!this._injector.get(Jm).done){let y=!o&&Yp(n),I=!1;throw new N(405,I)}let a;o?a=n:a=this._injector.get(aa).resolveComponentFactory(n),this.componentTypes.push(a.componentType);let l=ab(a)?void 0:this._injector.get(Nn),c=i||a.selector,f=a.create(Jr.NULL,[],c,l),h=f.location.nativeElement,v=f.injector.get(Qm,null);return v?.registerApplication(h),f.onDestroy(()=>{this.detachView(f.hostView),ic(this.components,f),v?.unregisterApplication(h)}),this._loadComponent(f),f}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new N(101,!1);let i=ne(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this.afterTick.next(),this._runningTick=!1,ne(i)}}detectChangesInAttachedViews(n){let i=0,o=this.afterRenderEffectManager;for(;;){if(i===_m)throw new N(103,!1);if(n){let s=i===0;this.beforeRender.next(s);for(let{_lView:a,notifyErrorHandler:l}of this._views)cb(a,s,l)}if(i++,o.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:s})=>Gc(s))&&(o.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:s})=>Gc(s))))break}}attachView(n){let i=n;this._views.push(i),i.attachToAppRef(this)}detachView(n){let i=n;ic(this._views,i),i.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);let i=this._injector.get(pa,[]);[...this._bootstrapListeners,...i].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>ic(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new N(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function ic(t,e){let r=t.indexOf(e);r>-1&&t.splice(r,1)}function cb(t,e,r){!e&&!Gc(t)||ub(t,r,e)}function Gc(t){return lu(t)}function ub(t,e,r){let n;r?(n=0,t[U]|=1024):t[U]&64?n=0:n=1,wm(t,e,n)}var Wc=class{constructor(e,r){this.ngModuleFactory=e,this.componentFactories=r}},Vu=(()=>{let e=class e{compileModuleSync(n){return new $c(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){let i=this.compileModuleSync(n),o=Kp(n),s=Kh(o.declarations).reduce((a,l)=>{let c=Kn(l);return c&&a.push(new qi(c)),a},[]);return new Wc(i,s)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var db=(()=>{let e=class e{constructor(){this.zone=S(xe),this.applicationRef=S(ei)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function fb(t){return[{provide:xe,useFactory:t},{provide:Hr,multi:!0,useFactory:()=>{let e=S(db,{optional:!0});return()=>e.initialize()}},{provide:Hr,multi:!0,useFactory:()=>{let e=S(gb);return()=>{e.initialize()}}},{provide:Vh,useFactory:pb}]}function pb(){let t=S(xe),e=S(un);return r=>t.runOutsideAngular(()=>e.handleError(r))}function hb(t){let e=fb(()=>new xe(mb(t)));return Yr([[],e])}function mb(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}var gb=(()=>{let e=class e{constructor(){this.subscription=new ve,this.initialized=!1,this.zone=S(xe),this.pendingTasks=S(ur)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{xe.assertNotInAngularZone(),queueMicrotask(()=>{n!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{xe.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function vb(){return typeof $localize<"u"&&$localize.locale||Vs}var ha=new F("",{providedIn:"root",factory:()=>S(ha,K.Optional|K.SkipSelf)||vb()});var Xm=new F("");var ys=null;function yb(t=[],e){return Jr.create({name:e,providers:[{provide:zs,useValue:"platform"},{provide:Xm,useValue:new Set([()=>ys=null])},...t]})}function _b(t=[]){if(ys)return ys;let e=yb(t);return ys=e,sb(),wb(e),e}function wb(t){t.get(gu,null)?.forEach(r=>r())}var Xt=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=Cb;let t=e;return t})();function Cb(t){return Db(ze(),Y(),(t&16)===16)}function Db(t,e,r){if(Ws(t)&&!r){let n=Pn(t.index,e);return new rr(n,n)}else if(t.type&47){let n=e[Qt];return new rr(n,e)}return null}var Zc=class{constructor(){}supports(e){return Om(e)}create(e){return new Qc(e)}},bb=(t,e)=>e,Qc=class{constructor(e){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=e||bb}forEachItem(e){let r;for(r=this._itHead;r!==null;r=r._next)e(r)}forEachOperation(e){let r=this._itHead,n=this._removalsHead,i=0,o=null;for(;r||n;){let s=!n||r&&r.currentIndex{s=this._trackByFn(i,a),r===null||!Object.is(r.trackById,s)?(r=this._mismatch(r,a,s,i),n=!0):(n&&(r=this._verifyReinsertion(r,a,s,i)),Object.is(r.item,a)||this._addIdentityChange(r,a)),r=r._next,i++}),this.length=i;return this._truncate(r),this.collection=e,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let e;for(e=this._previousItHead=this._itHead;e!==null;e=e._next)e._nextPrevious=e._next;for(e=this._additionsHead;e!==null;e=e._nextAdded)e.previousIndex=e.currentIndex;for(this._additionsHead=this._additionsTail=null,e=this._movesHead;e!==null;e=e._nextMoved)e.previousIndex=e.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(e,r,n,i){let o;return e===null?o=this._itTail:(o=e._prev,this._remove(e)),e=this._unlinkedRecords===null?null:this._unlinkedRecords.get(n,null),e!==null?(Object.is(e.item,r)||this._addIdentityChange(e,r),this._reinsertAfter(e,o,i)):(e=this._linkedRecords===null?null:this._linkedRecords.get(n,i),e!==null?(Object.is(e.item,r)||this._addIdentityChange(e,r),this._moveAfter(e,o,i)):e=this._addAfter(new Yc(r,n),o,i)),e}_verifyReinsertion(e,r,n,i){let o=this._unlinkedRecords===null?null:this._unlinkedRecords.get(n,null);return o!==null?e=this._reinsertAfter(o,e._prev,i):e.currentIndex!=i&&(e.currentIndex=i,this._addToMoves(e,i)),e}_truncate(e){for(;e!==null;){let r=e._next;this._addToRemovals(this._unlink(e)),e=r}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(e,r,n){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(e);let i=e._prevRemoved,o=e._nextRemoved;return i===null?this._removalsHead=o:i._nextRemoved=o,o===null?this._removalsTail=i:o._prevRemoved=i,this._insertAfter(e,r,n),this._addToMoves(e,n),e}_moveAfter(e,r,n){return this._unlink(e),this._insertAfter(e,r,n),this._addToMoves(e,n),e}_addAfter(e,r,n){return this._insertAfter(e,r,n),this._additionsTail===null?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e}_insertAfter(e,r,n){let i=r===null?this._itHead:r._next;return e._next=i,e._prev=r,i===null?this._itTail=e:i._prev=e,r===null?this._itHead=e:r._next=e,this._linkedRecords===null&&(this._linkedRecords=new js),this._linkedRecords.put(e),e.currentIndex=n,e}_remove(e){return this._addToRemovals(this._unlink(e))}_unlink(e){this._linkedRecords!==null&&this._linkedRecords.remove(e);let r=e._prev,n=e._next;return r===null?this._itHead=n:r._next=n,n===null?this._itTail=r:n._prev=r,e}_addToMoves(e,r){return e.previousIndex===r||(this._movesTail===null?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e),e}_addToRemovals(e){return this._unlinkedRecords===null&&(this._unlinkedRecords=new js),this._unlinkedRecords.put(e),e.currentIndex=null,e._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=e,e._prevRemoved=null):(e._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=e),e}_addIdentityChange(e,r){return e.item=r,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e}},Yc=class{constructor(e,r){this.item=e,this.trackById=r,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}},Kc=class{constructor(){this._head=null,this._tail=null}add(e){this._head===null?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)}get(e,r){let n;for(n=this._head;n!==null;n=n._nextDup)if((r===null||r<=n.currentIndex)&&Object.is(n.trackById,e))return n;return null}remove(e){let r=e._prevDup,n=e._nextDup;return r===null?this._head=n:r._nextDup=n,n===null?this._tail=r:n._prevDup=r,this._head===null}},js=class{constructor(){this.map=new Map}put(e){let r=e.trackById,n=this.map.get(r);n||(n=new Kc,this.map.set(r,n)),n.add(e)}get(e,r){let n=e,i=this.map.get(n);return i?i.get(e,r):null}remove(e){let r=e.trackById;return this.map.get(r).remove(e)&&this.map.delete(r),e}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function Tp(t,e,r){let n=t.previousIndex;if(n===null)return n;let i=0;return r&&n{let e=class e{constructor(n){this.factories=n}static create(n,i){if(i!=null){let o=i.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||Ap()),deps:[[e,new Up,new Xc]]}}find(n){let i=this.factories.find(o=>o.supports(n));if(i!=null)return i;throw new N(901,!1)}};e.\u0275prov=T({token:e,providedIn:"root",factory:Ap});let t=e;return t})();function eg(t){try{let{rootComponent:e,appProviders:r,platformProviders:n}=t,i=_b(n),o=[hb(),...r||[]],a=new Fs({providers:o,parent:i,debugName:"",runEnvironmentInitializers:!1}).injector,l=a.get(xe);return l.run(()=>{a.resolveInjectorInitializers();let c=a.get(un,null),f;l.runOutsideAngular(()=>{f=l.onError.subscribe({next:y=>{c.handleError(y)}})});let h=()=>a.destroy(),v=i.get(Xm);return v.add(h),a.onDestroy(()=>{f.unsubscribe(),v.delete(h)}),lb(c,l,()=>{let y=a.get(Jm);return y.runInitializers(),y.donePromise.then(()=>{let I=a.get(ha,Vs);ZD(I||Vs);let V=a.get(ei);return e!==void 0&&V.bootstrap(e),V})})})}catch(e){return Promise.reject(e)}}function hr(t){return typeof t=="boolean"?t:t!=null&&t!=="false"}var ag=null;function _n(){return ag}function lg(t){ag??=t}var ba=class{};var at=new F(""),cg=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(xb),providedIn:"platform"});let t=e;return t})();var xb=(()=>{let e=class e extends cg{constructor(){super(),this._doc=S(at),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return _n().getBaseHref(this._doc)}onPopState(n){let i=_n().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",n,!1),()=>i.removeEventListener("popstate",n)}onHashChange(n){let i=_n().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",n,!1),()=>i.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,i,o){this._history.pushState(n,i,o)}replaceState(n,i,o){this._history.replaceState(n,i,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>new e,providedIn:"platform"});let t=e;return t})();function ug(t,e){if(t.length==0)return e;if(e.length==0)return t;let r=0;return t.endsWith("/")&&r++,e.startsWith("/")&&r++,r==2?t+e.substring(1):r==1?t+e:t+"/"+e}function tg(t){let e=t.match(/#|\?|$/),r=e&&e.index||t.length,n=r-(t[r-1]==="/"?1:0);return t.slice(0,n)+t.slice(r)}function mr(t){return t&&t[0]!=="?"?"?"+t:t}var ni=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(dg),providedIn:"root"});let t=e;return t})(),Eb=new F(""),dg=(()=>{let e=class e extends ni{constructor(n,i){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??S(at).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return ug(this._baseHref,n)}path(n=!1){let i=this._platformLocation.pathname+mr(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${i}${o}`:i}pushState(n,i,o,s){let a=this.prepareExternalUrl(o+mr(s));this._platformLocation.pushState(n,i,a)}replaceState(n,i,o,s){let a=this.prepareExternalUrl(o+mr(s));this._platformLocation.replaceState(n,i,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}};e.\u0275fac=function(i){return new(i||e)(k(cg),k(Eb,8))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var Ht=(()=>{let e=class e{constructor(n){this._subject=new ye,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;let i=this._locationStrategy.getBaseHref();this._basePath=Sb(tg(ng(i))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,i=""){return this.path()==this.normalize(n+mr(i))}normalize(n){return e.stripTrailingSlash(Mb(this._basePath,ng(n)))}prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,i="",o=null){this._locationStrategy.pushState(o,"",n,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+mr(i)),o)}replaceState(n,i="",o=null){this._locationStrategy.replaceState(o,"",n,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+mr(i)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{let i=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(i,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",i){this._urlChangeListeners.forEach(o=>o(n,i))}subscribe(n,i,o){return this._subject.subscribe({next:n,error:i,complete:o})}};e.normalizeQueryParams=mr,e.joinWithSlash=ug,e.stripTrailingSlash=tg,e.\u0275fac=function(i){return new(i||e)(k(ni))},e.\u0275prov=T({token:e,factory:()=>Ib(),providedIn:"root"});let t=e;return t})();function Ib(){return new Ht(k(ni))}function Mb(t,e){if(!t||!e.startsWith(t))return e;let r=e.substring(t.length);return r===""||["/",";","?","#"].includes(r[0])?r:e}function ng(t){return t.replace(/\/index.html$/,"")}function Sb(t){if(new RegExp("^(https?:)?//").test(t)){let[,r]=t.split(/\/\/[^\/]+/);return r}return t}var Ye=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}(Ye||{}),ce=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}(ce||{}),ht=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}(ht||{}),Fn={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Tb(t){return Dt(t)[Ie.LocaleId]}function Ab(t,e,r){let n=Dt(t),i=[n[Ie.DayPeriodsFormat],n[Ie.DayPeriodsStandalone]],o=Et(i,e);return Et(o,r)}function Ob(t,e,r){let n=Dt(t),i=[n[Ie.DaysFormat],n[Ie.DaysStandalone]],o=Et(i,e);return Et(o,r)}function Nb(t,e,r){let n=Dt(t),i=[n[Ie.MonthsFormat],n[Ie.MonthsStandalone]],o=Et(i,e);return Et(o,r)}function kb(t,e){let n=Dt(t)[Ie.Eras];return Et(n,e)}function ma(t,e){let r=Dt(t);return Et(r[Ie.DateFormat],e)}function ga(t,e){let r=Dt(t);return Et(r[Ie.TimeFormat],e)}function va(t,e){let n=Dt(t)[Ie.DateTimeFormat];return Et(n,e)}function Ea(t,e){let r=Dt(t),n=r[Ie.NumberSymbols][e];if(typeof n>"u"){if(e===Fn.CurrencyDecimal)return r[Ie.NumberSymbols][Fn.Decimal];if(e===Fn.CurrencyGroup)return r[Ie.NumberSymbols][Fn.Group]}return n}function fg(t){if(!t[Ie.ExtraData])throw new Error(`Missing extra locale data for the locale "${t[Ie.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function Pb(t){let e=Dt(t);return fg(e),(e[Ie.ExtraData][2]||[]).map(n=>typeof n=="string"?$u(n):[$u(n[0]),$u(n[1])])}function Rb(t,e,r){let n=Dt(t);fg(n);let i=[n[Ie.ExtraData][0],n[Ie.ExtraData][1]],o=Et(i,e)||[];return Et(o,r)||[]}function Et(t,e){for(let r=e;r>-1;r--)if(typeof t[r]<"u")return t[r];throw new Error("Locale data API: locale data undefined")}function $u(t){let[e,r]=t.split(":");return{hours:+e,minutes:+r}}var Fb=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,ya={},Lb=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,yn=function(t){return t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended",t}(yn||{}),oe=function(t){return t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day",t}(oe||{}),ie=function(t){return t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras",t}(ie||{});function Vb(t,e,r,n){let i=Wb(t);e=vn(r,e)||e;let s=[],a;for(;e;)if(a=Lb.exec(e),a){s=s.concat(a.slice(1));let f=s.pop();if(!f)break;e=f}else{s.push(e);break}let l=i.getTimezoneOffset();n&&(l=hg(n,l),i=Gb(i,n,!0));let c="";return s.forEach(f=>{let h=qb(f);c+=h?h(i,r,l):f==="''"?"'":f.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function xa(t,e,r){let n=new Date(0);return n.setFullYear(t,e,r),n.setHours(0,0,0),n}function vn(t,e){let r=Tb(t);if(ya[r]??={},ya[r][e])return ya[r][e];let n="";switch(e){case"shortDate":n=ma(t,ht.Short);break;case"mediumDate":n=ma(t,ht.Medium);break;case"longDate":n=ma(t,ht.Long);break;case"fullDate":n=ma(t,ht.Full);break;case"shortTime":n=ga(t,ht.Short);break;case"mediumTime":n=ga(t,ht.Medium);break;case"longTime":n=ga(t,ht.Long);break;case"fullTime":n=ga(t,ht.Full);break;case"short":let i=vn(t,"shortTime"),o=vn(t,"shortDate");n=_a(va(t,ht.Short),[i,o]);break;case"medium":let s=vn(t,"mediumTime"),a=vn(t,"mediumDate");n=_a(va(t,ht.Medium),[s,a]);break;case"long":let l=vn(t,"longTime"),c=vn(t,"longDate");n=_a(va(t,ht.Long),[l,c]);break;case"full":let f=vn(t,"fullTime"),h=vn(t,"fullDate");n=_a(va(t,ht.Full),[f,h]);break}return n&&(ya[r][e]=n),n}function _a(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,function(r,n){return e!=null&&n in e?e[n]:r})),t}function Bt(t,e,r="-",n,i){let o="";(t<0||i&&t<=0)&&(i?t=-t+1:(t=-t,o=r));let s=String(t);for(;s.length0||a>-r)&&(a+=r),t===oe.Hours)a===0&&r===-12&&(a=12);else if(t===oe.FractionalSeconds)return jb(a,e);let l=Ea(s,Fn.MinusSign);return Bt(a,e,l,n,i)}}function $b(t,e){switch(t){case oe.FullYear:return e.getFullYear();case oe.Month:return e.getMonth();case oe.Date:return e.getDate();case oe.Hours:return e.getHours();case oe.Minutes:return e.getMinutes();case oe.Seconds:return e.getSeconds();case oe.FractionalSeconds:return e.getMilliseconds();case oe.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${t}".`)}}function fe(t,e,r=Ye.Format,n=!1){return function(i,o){return Ub(i,o,t,e,r,n)}}function Ub(t,e,r,n,i,o){switch(r){case ie.Months:return Nb(e,i,n)[t.getMonth()];case ie.Days:return Ob(e,i,n)[t.getDay()];case ie.DayPeriods:let s=t.getHours(),a=t.getMinutes();if(o){let c=Pb(e),f=Rb(e,i,n),h=c.findIndex(v=>{if(Array.isArray(v)){let[y,I]=v,V=s>=y.hours&&a>=y.minutes,j=s0?Math.floor(i/60):Math.ceil(i/60);switch(t){case yn.Short:return(i>=0?"+":"")+Bt(s,2,o)+Bt(Math.abs(i%60),2,o);case yn.ShortGMT:return"GMT"+(i>=0?"+":"")+Bt(s,1,o);case yn.Long:return"GMT"+(i>=0?"+":"")+Bt(s,2,o)+":"+Bt(Math.abs(i%60),2,o);case yn.Extended:return n===0?"Z":(i>=0?"+":"")+Bt(s,2,o)+":"+Bt(Math.abs(i%60),2,o);default:throw new Error(`Unknown zone width "${t}"`)}}}var Bb=0,Da=4;function Hb(t){let e=xa(t,Bb,1).getDay();return xa(t,0,1+(e<=Da?Da:Da+7)-e)}function pg(t){let e=t.getDay(),r=e===0?-3:Da-e;return xa(t.getFullYear(),t.getMonth(),t.getDate()+r)}function Uu(t,e=!1){return function(r,n){let i;if(e){let o=new Date(r.getFullYear(),r.getMonth(),1).getDay()-1,s=r.getDate();i=1+Math.floor((s+o)/7)}else{let o=pg(r),s=Hb(o.getFullYear()),a=o.getTime()-s.getTime();i=1+Math.round(a/6048e5)}return Bt(i,t,Ea(n,Fn.MinusSign))}}function Ca(t,e=!1){return function(r,n){let o=pg(r).getFullYear();return Bt(o,t,Ea(n,Fn.MinusSign),e)}}var Bu={};function qb(t){if(Bu[t])return Bu[t];let e;switch(t){case"G":case"GG":case"GGG":e=fe(ie.Eras,ce.Abbreviated);break;case"GGGG":e=fe(ie.Eras,ce.Wide);break;case"GGGGG":e=fe(ie.Eras,ce.Narrow);break;case"y":e=Ae(oe.FullYear,1,0,!1,!0);break;case"yy":e=Ae(oe.FullYear,2,0,!0,!0);break;case"yyy":e=Ae(oe.FullYear,3,0,!1,!0);break;case"yyyy":e=Ae(oe.FullYear,4,0,!1,!0);break;case"Y":e=Ca(1);break;case"YY":e=Ca(2,!0);break;case"YYY":e=Ca(3);break;case"YYYY":e=Ca(4);break;case"M":case"L":e=Ae(oe.Month,1,1);break;case"MM":case"LL":e=Ae(oe.Month,2,1);break;case"MMM":e=fe(ie.Months,ce.Abbreviated);break;case"MMMM":e=fe(ie.Months,ce.Wide);break;case"MMMMM":e=fe(ie.Months,ce.Narrow);break;case"LLL":e=fe(ie.Months,ce.Abbreviated,Ye.Standalone);break;case"LLLL":e=fe(ie.Months,ce.Wide,Ye.Standalone);break;case"LLLLL":e=fe(ie.Months,ce.Narrow,Ye.Standalone);break;case"w":e=Uu(1);break;case"ww":e=Uu(2);break;case"W":e=Uu(1,!0);break;case"d":e=Ae(oe.Date,1);break;case"dd":e=Ae(oe.Date,2);break;case"c":case"cc":e=Ae(oe.Day,1);break;case"ccc":e=fe(ie.Days,ce.Abbreviated,Ye.Standalone);break;case"cccc":e=fe(ie.Days,ce.Wide,Ye.Standalone);break;case"ccccc":e=fe(ie.Days,ce.Narrow,Ye.Standalone);break;case"cccccc":e=fe(ie.Days,ce.Short,Ye.Standalone);break;case"E":case"EE":case"EEE":e=fe(ie.Days,ce.Abbreviated);break;case"EEEE":e=fe(ie.Days,ce.Wide);break;case"EEEEE":e=fe(ie.Days,ce.Narrow);break;case"EEEEEE":e=fe(ie.Days,ce.Short);break;case"a":case"aa":case"aaa":e=fe(ie.DayPeriods,ce.Abbreviated);break;case"aaaa":e=fe(ie.DayPeriods,ce.Wide);break;case"aaaaa":e=fe(ie.DayPeriods,ce.Narrow);break;case"b":case"bb":case"bbb":e=fe(ie.DayPeriods,ce.Abbreviated,Ye.Standalone,!0);break;case"bbbb":e=fe(ie.DayPeriods,ce.Wide,Ye.Standalone,!0);break;case"bbbbb":e=fe(ie.DayPeriods,ce.Narrow,Ye.Standalone,!0);break;case"B":case"BB":case"BBB":e=fe(ie.DayPeriods,ce.Abbreviated,Ye.Format,!0);break;case"BBBB":e=fe(ie.DayPeriods,ce.Wide,Ye.Format,!0);break;case"BBBBB":e=fe(ie.DayPeriods,ce.Narrow,Ye.Format,!0);break;case"h":e=Ae(oe.Hours,1,-12);break;case"hh":e=Ae(oe.Hours,2,-12);break;case"H":e=Ae(oe.Hours,1);break;case"HH":e=Ae(oe.Hours,2);break;case"m":e=Ae(oe.Minutes,1);break;case"mm":e=Ae(oe.Minutes,2);break;case"s":e=Ae(oe.Seconds,1);break;case"ss":e=Ae(oe.Seconds,2);break;case"S":e=Ae(oe.FractionalSeconds,1);break;case"SS":e=Ae(oe.FractionalSeconds,2);break;case"SSS":e=Ae(oe.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=wa(yn.Short);break;case"ZZZZZ":e=wa(yn.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=wa(yn.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=wa(yn.Long);break;default:return null}return Bu[t]=e,e}function hg(t,e){t=t.replace(/:/g,"");let r=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(r)?e:r}function zb(t,e){return t=new Date(t.getTime()),t.setMinutes(t.getMinutes()+e),t}function Gb(t,e,r){let n=r?-1:1,i=t.getTimezoneOffset(),o=hg(e,i);return zb(t,n*(o-i))}function Wb(t){if(rg(t))return t;if(typeof t=="number"&&!isNaN(t))return new Date(t);if(typeof t=="string"){if(t=t.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(t)){let[i,o=1,s=1]=t.split("-").map(a=>+a);return xa(i,o-1,s)}let r=parseFloat(t);if(!isNaN(t-r))return new Date(r);let n;if(n=t.match(Fb))return Zb(n)}let e=new Date(t);if(!rg(e))throw new Error(`Unable to convert "${t}" into a date`);return e}function Zb(t){let e=new Date(0),r=0,n=0,i=t[8]?e.setUTCFullYear:e.setFullYear,o=t[8]?e.setUTCHours:e.setHours;t[9]&&(r=Number(t[9]+t[10]),n=Number(t[9]+t[11])),i.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));let s=Number(t[4]||0)-r,a=Number(t[5]||0)-n,l=Number(t[6]||0),c=Math.floor(parseFloat("0."+(t[7]||0))*1e3);return o.call(e,s,a,l,c),e}function rg(t){return t instanceof Date&&!isNaN(t.valueOf())}function Ia(t,e){e=encodeURIComponent(e);for(let r of t.split(";")){let n=r.indexOf("="),[i,o]=n==-1?[r,""]:[r.slice(0,n),r.slice(n+1)];if(i.trim()===e)return decodeURIComponent(o)}return null}var Hu=/\s+/,ig=[],mg=(()=>{let e=class e{constructor(n,i){this._ngEl=n,this._renderer=i,this.initialClasses=ig,this.stateMap=new Map}set klass(n){this.initialClasses=n!=null?n.trim().split(Hu):ig}set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(Hu):n}ngDoCheck(){for(let i of this.initialClasses)this._updateState(i,!0);let n=this.rawClass;if(Array.isArray(n)||n instanceof Set)for(let i of n)this._updateState(i,!0);else if(n!=null)for(let i of Object.keys(n))this._updateState(i,!!n[i]);this._applyStateDiff()}_updateState(n,i){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==i&&(o.changed=!0,o.enabled=i),o.touched=!0):this.stateMap.set(n,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(let n of this.stateMap){let i=n[0],o=n[1];o.changed?(this._toggleClass(i,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),o.touched=!1}}_toggleClass(n,i){n=n.trim(),n.length>0&&n.split(Hu).forEach(o=>{i?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}};e.\u0275fac=function(i){return new(i||e)(b(Fe),b(jt))},e.\u0275dir=re({type:e,selectors:[["","ngClass",""]],inputs:{klass:[de.None,"class","klass"],ngClass:"ngClass"},standalone:!0});let t=e;return t})();var qu=class{constructor(e,r,n,i){this.$implicit=e,this.ngForOf=r,this.index=n,this.count=i}get first(){return this.index===0}get last(){return this.index===this.count-1}get even(){return this.index%2===0}get odd(){return!this.even}},De=(()=>{let e=class e{set ngForOf(n){this._ngForOf=n,this._ngForOfDirty=!0}set ngForTrackBy(n){this._trackByFn=n}get ngForTrackBy(){return this._trackByFn}constructor(n,i,o){this._viewContainer=n,this._template=i,this._differs=o,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(n){n&&(this._template=n)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;let n=this._ngForOf;if(!this._differ&&n)if(0)try{}catch{}else this._differ=this._differs.find(n).create(this.ngForTrackBy)}if(this._differ){let n=this._differ.diff(this._ngForOf);n&&this._applyChanges(n)}}_applyChanges(n){let i=this._viewContainer;n.forEachOperation((o,s,a)=>{if(o.previousIndex==null)i.createEmbeddedView(this._template,new qu(o.item,this._ngForOf,-1,-1),a===null?void 0:a);else if(a==null)i.remove(s===null?void 0:s);else if(s!==null){let l=i.get(s);i.move(l,a),og(l,o)}});for(let o=0,s=i.length;o{let s=i.get(o.currentIndex);og(s,o)})}static ngTemplateContextGuard(n,i){return!0}};e.\u0275fac=function(i){return new(i||e)(b(gn),b(ir),b(ju))},e.\u0275dir=re({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0});let t=e;return t})();function og(t,e){t.context.$implicit=e.item}var Oe=(()=>{let e=class e{constructor(n,i){this._viewContainer=n,this._context=new zu,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(n){this._context.$implicit=this._context.ngIf=n,this._updateView()}set ngIfThen(n){sg("ngIfThen",n),this._thenTemplateRef=n,this._thenViewRef=null,this._updateView()}set ngIfElse(n){sg("ngIfElse",n),this._elseTemplateRef=n,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(n,i){return!0}};e.\u0275fac=function(i){return new(i||e)(b(gn),b(ir))},e.\u0275dir=re({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0});let t=e;return t})(),zu=class{constructor(){this.$implicit=null,this.ngIf=null}};function sg(t,e){if(!!!(!e||e.createEmbeddedView))throw new Error(`${t} must be a TemplateRef, but received '${Ze(e)}'.`)}var gg=(()=>{let e=class e{constructor(n){this._viewContainerRef=n,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(n){if(this._shouldRecreateView(n)){let i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let o=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(n,i,o)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,i,o):!1,get:(n,i,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,o)}})}};e.\u0275fac=function(i){return new(i||e)(b(gn))},e.\u0275dir=re({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[it]});let t=e;return t})();function Wu(t,e){return new N(2100,!1)}var Qb=/(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g,vg=(()=>{let e=class e{transform(n){if(n==null)return null;if(typeof n!="string")throw Wu(e,n);return n.replace(Qb,i=>i[0].toUpperCase()+i.slice(1).toLowerCase())}};e.\u0275fac=function(i){return new(i||e)},e.\u0275pipe=kn({name:"titlecase",type:e,pure:!0,standalone:!0});let t=e;return t})(),ri=(()=>{let e=class e{transform(n){if(n==null)return null;if(typeof n!="string")throw Wu(e,n);return n.toUpperCase()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275pipe=kn({name:"uppercase",type:e,pure:!0,standalone:!0});let t=e;return t})(),Yb="mediumDate",Kb=new F(""),Zu=new F(""),Ln=(()=>{let e=class e{constructor(n,i,o){this.locale=n,this.defaultTimezone=i,this.defaultOptions=o}transform(n,i,o,s){if(n==null||n===""||n!==n)return null;try{let a=i??this.defaultOptions?.dateFormat??Yb,l=o??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Vb(n,a,s||this.locale,l)}catch(a){throw Wu(e,a.message)}}};e.\u0275fac=function(i){return new(i||e)(b(ha,16),b(Kb,24),b(Zu,24))},e.\u0275pipe=kn({name:"date",type:e,pure:!0,standalone:!0});let t=e;return t})();var yg="browser",Jb="server";function Ma(t){return t===Jb}var ti=class{};var eo=class{},Ta=class{},gr=class t{constructor(e){this.normalizedNames=new Map,this.lazyUpdate=null,e?typeof e=="string"?this.lazyInit=()=>{this.headers=new Map,e.split(` +`).forEach(r=>{let n=r.indexOf(":");if(n>0){let i=r.slice(0,n),o=i.toLowerCase(),s=r.slice(n+1).trim();this.maybeSetNormalizedName(i,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((r,n)=>{this.setHeaderEntries(n,r)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([r,n])=>{this.setHeaderEntries(r,n)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();let r=this.headers.get(e.toLowerCase());return r&&r.length>0?r[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,r){return this.clone({name:e,value:r,op:"a"})}set(e,r){return this.clone({name:e,value:r,op:"s"})}delete(e,r){return this.clone({name:e,value:r,op:"d"})}maybeSetNormalizedName(e,r){this.normalizedNames.has(r)||this.normalizedNames.set(r,e)}init(){this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(e=>this.applyUpdate(e)),this.lazyUpdate=null))}copyFrom(e){e.init(),Array.from(e.headers.keys()).forEach(r=>{this.headers.set(r,e.headers.get(r)),this.normalizedNames.set(r,e.normalizedNames.get(r))})}clone(e){let r=new t;return r.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,r.lazyUpdate=(this.lazyUpdate||[]).concat([e]),r}applyUpdate(e){let r=e.name.toLowerCase();switch(e.op){case"a":case"s":let n=e.value;if(typeof n=="string"&&(n=[n]),n.length===0)return;this.maybeSetNormalizedName(e.name,r);let i=(e.op==="a"?this.headers.get(r):void 0)||[];i.push(...n),this.headers.set(r,i);break;case"d":let o=e.value;if(!o)this.headers.delete(r),this.normalizedNames.delete(r);else{let s=this.headers.get(r);if(!s)return;s=s.filter(a=>o.indexOf(a)===-1),s.length===0?(this.headers.delete(r),this.normalizedNames.delete(r)):this.headers.set(r,s)}break}}setHeaderEntries(e,r){let n=(Array.isArray(r)?r:[r]).map(o=>o.toString()),i=e.toLowerCase();this.headers.set(i,n),this.maybeSetNormalizedName(e,i)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(r=>e(this.normalizedNames.get(r),this.headers.get(r)))}};var Yu=class{encodeKey(e){return _g(e)}encodeValue(e){return _g(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}};function tx(t,e){let r=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(i=>{let o=i.indexOf("="),[s,a]=o==-1?[e.decodeKey(i),""]:[e.decodeKey(i.slice(0,o)),e.decodeValue(i.slice(o+1))],l=r.get(s)||[];l.push(a),r.set(s,l)}),r}var nx=/%(\d[a-f0-9])/gi,rx={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function _g(t){return encodeURIComponent(t).replace(nx,(e,r)=>rx[r]??e)}function Sa(t){return`${t}`}var Vn=class t{constructor(e={}){if(this.updates=null,this.cloneFrom=null,this.encoder=e.encoder||new Yu,e.fromString){if(e.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=tx(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(r=>{let n=e.fromObject[r],i=Array.isArray(n)?n.map(Sa):[Sa(n)];this.map.set(r,i)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();let r=this.map.get(e);return r?r[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,r){return this.clone({param:e,value:r,op:"a"})}appendAll(e){let r=[];return Object.keys(e).forEach(n=>{let i=e[n];Array.isArray(i)?i.forEach(o=>{r.push({param:n,value:o,op:"a"})}):r.push({param:n,value:i,op:"a"})}),this.clone(r)}set(e,r){return this.clone({param:e,value:r,op:"s"})}delete(e,r){return this.clone({param:e,value:r,op:"d"})}toString(){return this.init(),this.keys().map(e=>{let r=this.encoder.encodeKey(e);return this.map.get(e).map(n=>r+"="+this.encoder.encodeValue(n)).join("&")}).filter(e=>e!=="").join("&")}clone(e){let r=new t({encoder:this.encoder});return r.cloneFrom=this.cloneFrom||this,r.updates=(this.updates||[]).concat(e),r}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(e=>this.map.set(e,this.cloneFrom.map.get(e))),this.updates.forEach(e=>{switch(e.op){case"a":case"s":let r=(e.op==="a"?this.map.get(e.param):void 0)||[];r.push(Sa(e.value)),this.map.set(e.param,r);break;case"d":if(e.value!==void 0){let n=this.map.get(e.param)||[],i=n.indexOf(Sa(e.value));i!==-1&&n.splice(i,1),n.length>0?this.map.set(e.param,n):this.map.delete(e.param)}else{this.map.delete(e.param);break}}}),this.cloneFrom=this.updates=null)}};var Ku=class{constructor(){this.map=new Map}set(e,r){return this.map.set(e,r),this}get(e){return this.map.has(e)||this.map.set(e,e.defaultValue()),this.map.get(e)}delete(e){return this.map.delete(e),this}has(e){return this.map.has(e)}keys(){return this.map.keys()}};function ix(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function wg(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function Cg(t){return typeof Blob<"u"&&t instanceof Blob}function Dg(t){return typeof FormData<"u"&&t instanceof FormData}function ox(t){return typeof URLSearchParams<"u"&&t instanceof URLSearchParams}var Xi=class t{constructor(e,r,n,i){this.url=r,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase();let o;if(ix(this.method)||i?(this.body=n!==void 0?n:null,o=i):o=n,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),this.transferCache=o.transferCache),this.headers??=new gr,this.context??=new Ku,!this.params)this.params=new Vn,this.urlWithParams=r;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=r;else{let a=r.indexOf("?"),l=a===-1?"?":av.set(y,e.setHeaders[y]),c)),e.setParams&&(f=Object.keys(e.setParams).reduce((v,y)=>v.set(y,e.setParams[y]),f)),new t(r,n,s,{params:f,headers:c,context:h,reportProgress:l,responseType:i,withCredentials:a,transferCache:o})}},ii=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(ii||{}),to=class{constructor(e,r=Na.Ok,n="OK"){this.headers=e.headers||new gr,this.status=e.status!==void 0?e.status:r,this.statusText=e.statusText||n,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}},Ju=class t extends to{constructor(e={}){super(e),this.type=ii.ResponseHeader}clone(e={}){return new t({headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},Aa=class t extends to{constructor(e={}){super(e),this.type=ii.Response,this.body=e.body!==void 0?e.body:null}clone(e={}){return new t({body:e.body!==void 0?e.body:this.body,headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},Oa=class extends to{constructor(e){super(e,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${e.url||"(unknown url)"}`:this.message=`Http failure response for ${e.url||"(unknown url)"}: ${e.status} ${e.statusText}`,this.error=e.error||null}},Na=function(t){return t[t.Continue=100]="Continue",t[t.SwitchingProtocols=101]="SwitchingProtocols",t[t.Processing=102]="Processing",t[t.EarlyHints=103]="EarlyHints",t[t.Ok=200]="Ok",t[t.Created=201]="Created",t[t.Accepted=202]="Accepted",t[t.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",t[t.NoContent=204]="NoContent",t[t.ResetContent=205]="ResetContent",t[t.PartialContent=206]="PartialContent",t[t.MultiStatus=207]="MultiStatus",t[t.AlreadyReported=208]="AlreadyReported",t[t.ImUsed=226]="ImUsed",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.Found=302]="Found",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.Unused=306]="Unused",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.LengthRequired=411]="LengthRequired",t[t.PreconditionFailed=412]="PreconditionFailed",t[t.PayloadTooLarge=413]="PayloadTooLarge",t[t.UriTooLong=414]="UriTooLong",t[t.UnsupportedMediaType=415]="UnsupportedMediaType",t[t.RangeNotSatisfiable=416]="RangeNotSatisfiable",t[t.ExpectationFailed=417]="ExpectationFailed",t[t.ImATeapot=418]="ImATeapot",t[t.MisdirectedRequest=421]="MisdirectedRequest",t[t.UnprocessableEntity=422]="UnprocessableEntity",t[t.Locked=423]="Locked",t[t.FailedDependency=424]="FailedDependency",t[t.TooEarly=425]="TooEarly",t[t.UpgradeRequired=426]="UpgradeRequired",t[t.PreconditionRequired=428]="PreconditionRequired",t[t.TooManyRequests=429]="TooManyRequests",t[t.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",t[t.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t[t.HttpVersionNotSupported=505]="HttpVersionNotSupported",t[t.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",t[t.InsufficientStorage=507]="InsufficientStorage",t[t.LoopDetected=508]="LoopDetected",t[t.NotExtended=510]="NotExtended",t[t.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",t}(Na||{});function Qu(t,e){return{body:e,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}var mt=(()=>{let e=class e{constructor(n){this.handler=n}request(n,i,o={}){let s;if(n instanceof Xi)s=n;else{let c;o.headers instanceof gr?c=o.headers:c=new gr(o.headers);let f;o.params&&(o.params instanceof Vn?f=o.params:f=new Vn({fromObject:o.params})),s=new Xi(n,i,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:f,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache})}let a=O(s).pipe(En(c=>this.handler.handle(c)));if(n instanceof Xi||o.observe==="events")return a;let l=a.pipe(je(c=>c instanceof Aa));switch(o.observe||"body"){case"body":switch(s.responseType){case"arraybuffer":return l.pipe(A(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return c.body}));case"blob":return l.pipe(A(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new Error("Response is not a Blob.");return c.body}));case"text":return l.pipe(A(c=>{if(c.body!==null&&typeof c.body!="string")throw new Error("Response is not a string.");return c.body}));case"json":default:return l.pipe(A(c=>c.body))}case"response":return l;default:throw new Error(`Unreachable: unhandled observe type ${o.observe}}`)}}delete(n,i={}){return this.request("DELETE",n,i)}get(n,i={}){return this.request("GET",n,i)}head(n,i={}){return this.request("HEAD",n,i)}jsonp(n,i){return this.request("JSONP",n,{params:new Vn().append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(n,i={}){return this.request("OPTIONS",n,i)}patch(n,i,o={}){return this.request("PATCH",n,Qu(o,i))}post(n,i,o={}){return this.request("POST",n,Qu(o,i))}put(n,i,o={}){return this.request("PUT",n,Qu(o,i))}};e.\u0275fac=function(i){return new(i||e)(k(eo))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();function Ig(t,e){return e(t)}function sx(t,e){return(r,n)=>e.intercept(r,{handle:i=>t(i,n)})}function ax(t,e,r){return(n,i)=>pn(r,()=>e(n,o=>t(o,i)))}var lx=new F(""),Xu=new F(""),cx=new F(""),ux=new F("");function dx(){let t=null;return(e,r)=>{t===null&&(t=(S(lx,{optional:!0})??[]).reduceRight(sx,Ig));let n=S(ur),i=n.add();return t(e,r).pipe(Mn(()=>n.remove(i)))}}var bg=(()=>{let e=class e extends eo{constructor(n,i){super(),this.backend=n,this.injector=i,this.chain=null,this.pendingTasks=S(ur);let o=S(ux,{optional:!0});this.backend=o??n}handle(n){if(this.chain===null){let o=Array.from(new Set([...this.injector.get(Xu),...this.injector.get(cx,[])]));this.chain=o.reduceRight((s,a)=>ax(s,a,this.injector),Ig)}let i=this.pendingTasks.add();return this.chain(n,o=>this.backend.handle(o)).pipe(Mn(()=>this.pendingTasks.remove(i)))}};e.\u0275fac=function(i){return new(i||e)(k(Ta),k(nt))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();var fx=/^\)\]\}',?\n/;function px(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}var xg=(()=>{let e=class e{constructor(n){this.xhrFactory=n}handle(n){if(n.method==="JSONP")throw new N(-2800,!1);let i=this.xhrFactory;return(i.\u0275loadImpl?me(i.\u0275loadImpl()):O(null)).pipe(ut(()=>new Q(s=>{let a=i.build();if(a.open(n.method,n.urlWithParams),n.withCredentials&&(a.withCredentials=!0),n.headers.forEach((j,R)=>a.setRequestHeader(j,R.join(","))),n.headers.has("Accept")||a.setRequestHeader("Accept","application/json, text/plain, */*"),!n.headers.has("Content-Type")){let j=n.detectContentTypeHeader();j!==null&&a.setRequestHeader("Content-Type",j)}if(n.responseType){let j=n.responseType.toLowerCase();a.responseType=j!=="json"?j:"text"}let l=n.serializeBody(),c=null,f=()=>{if(c!==null)return c;let j=a.statusText||"OK",R=new gr(a.getAllResponseHeaders()),He=px(a)||n.url;return c=new Ju({headers:R,status:a.status,statusText:j,url:He}),c},h=()=>{let{headers:j,status:R,statusText:He,url:Le}=f(),he=null;R!==Na.NoContent&&(he=typeof a.response>"u"?a.responseText:a.response),R===0&&(R=he?Na.Ok:0);let qt=R>=200&&R<300;if(n.responseType==="json"&&typeof he=="string"){let ct=he;he=he.replace(fx,"");try{he=he!==""?JSON.parse(he):null}catch(bn){he=ct,qt&&(qt=!1,he={error:bn,text:he})}}qt?(s.next(new Aa({body:he,headers:j,status:R,statusText:He,url:Le||void 0})),s.complete()):s.error(new Oa({error:he,headers:j,status:R,statusText:He,url:Le||void 0}))},v=j=>{let{url:R}=f(),He=new Oa({error:j,status:a.status||0,statusText:a.statusText||"Unknown Error",url:R||void 0});s.error(He)},y=!1,I=j=>{y||(s.next(f()),y=!0);let R={type:ii.DownloadProgress,loaded:j.loaded};j.lengthComputable&&(R.total=j.total),n.responseType==="text"&&a.responseText&&(R.partialText=a.responseText),s.next(R)},V=j=>{let R={type:ii.UploadProgress,loaded:j.loaded};j.lengthComputable&&(R.total=j.total),s.next(R)};return a.addEventListener("load",h),a.addEventListener("error",v),a.addEventListener("timeout",v),a.addEventListener("abort",v),n.reportProgress&&(a.addEventListener("progress",I),l!==null&&a.upload&&a.upload.addEventListener("progress",V)),a.send(l),s.next({type:ii.Sent}),()=>{a.removeEventListener("error",v),a.removeEventListener("abort",v),a.removeEventListener("load",h),a.removeEventListener("timeout",v),n.reportProgress&&(a.removeEventListener("progress",I),l!==null&&a.upload&&a.upload.removeEventListener("progress",V)),a.readyState!==a.DONE&&a.abort()}})))}};e.\u0275fac=function(i){return new(i||e)(k(ti))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),Mg=new F(""),hx="XSRF-TOKEN",mx=new F("",{providedIn:"root",factory:()=>hx}),gx="X-XSRF-TOKEN",vx=new F("",{providedIn:"root",factory:()=>gx}),ka=class{},yx=(()=>{let e=class e{constructor(n,i,o){this.doc=n,this.platform=i,this.cookieName=o,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let n=this.doc.cookie||"";return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=Ia(n,this.cookieName),this.lastCookieString=n),this.lastToken}};e.\u0275fac=function(i){return new(i||e)(k(at),k(Rn),k(mx))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();function _x(t,e){let r=t.url.toLowerCase();if(!S(Mg)||t.method==="GET"||t.method==="HEAD"||r.startsWith("http://")||r.startsWith("https://"))return e(t);let n=S(ka).getToken(),i=S(vx);return n!=null&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,n)})),e(t)}var Sg=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(Sg||{});function wx(t,e){return{\u0275kind:t,\u0275providers:e}}function ed(...t){let e=[mt,xg,bg,{provide:eo,useExisting:bg},{provide:Ta,useExisting:xg},{provide:Xu,useValue:_x,multi:!0},{provide:Mg,useValue:!0},{provide:ka,useClass:yx}];for(let r of t)e.push(...r.\u0275providers);return Yr(e)}var Eg=new F("");function Cx(){return wx(Sg.LegacyInterceptors,[{provide:Eg,useFactory:dx},{provide:Xu,useExisting:Eg,multi:!0}])}var Tg=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({providers:[ed(Cx())]});let t=e;return t})();var rd=class extends ba{constructor(){super(...arguments),this.supportsDOMEvents=!0}},id=class t extends rd{static makeCurrent(){lg(new t)}onAndCancel(e,r,n){return e.addEventListener(r,n),()=>{e.removeEventListener(r,n)}}dispatchEvent(e,r){e.dispatchEvent(r)}remove(e){e.parentNode&&e.parentNode.removeChild(e)}createElement(e,r){return r=r||this.getDefaultDocument(),r.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,r){return r==="window"?window:r==="document"?e:r==="body"?e.body:null}getBaseHref(e){let r=Dx();return r==null?null:bx(r)}resetBaseElement(){no=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return Ia(document.cookie,e)}},no=null;function Dx(){return no=no||document.querySelector("base"),no?no.getAttribute("href"):null}function bx(t){return new URL(t,document.baseURI).pathname}var xx=(()=>{let e=class e{build(){return new XMLHttpRequest}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),od=new F(""),kg=(()=>{let e=class e{constructor(n,i){this._zone=i,this._eventNameToPlugin=new Map,n.forEach(o=>{o.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,i,o){return this._findPluginFor(i).addEventListener(n,i,o)}getZone(){return this._zone}_findPluginFor(n){let i=this._eventNameToPlugin.get(n);if(i)return i;if(i=this._plugins.find(s=>s.supports(n)),!i)throw new N(5101,!1);return this._eventNameToPlugin.set(n,i),i}};e.\u0275fac=function(i){return new(i||e)(k(od),k(xe))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),Pa=class{constructor(e){this._doc=e}},td="ng-app-id",Pg=(()=>{let e=class e{constructor(n,i,o,s={}){this.doc=n,this.appId=i,this.nonce=o,this.platformId=s,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=Ma(s),this.resetHostNodes()}addStyles(n){for(let i of n)this.changeUsageCount(i,1)===1&&this.onStyleAdded(i)}removeStyles(n){for(let i of n)this.changeUsageCount(i,-1)<=0&&this.onStyleRemoved(i)}ngOnDestroy(){let n=this.styleNodesInDOM;n&&(n.forEach(i=>i.remove()),n.clear());for(let i of this.getAllStyles())this.onStyleRemoved(i);this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(let i of this.getAllStyles())this.addStyleToHost(n,i)}removeHost(n){this.hostNodes.delete(n)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(n){for(let i of this.hostNodes)this.addStyleToHost(i,n)}onStyleRemoved(n){let i=this.styleRef;i.get(n)?.elements?.forEach(o=>o.remove()),i.delete(n)}collectServerRenderedStyles(){let n=this.doc.head?.querySelectorAll(`style[${td}="${this.appId}"]`);if(n?.length){let i=new Map;return n.forEach(o=>{o.textContent!=null&&i.set(o.textContent,o)}),i}return null}changeUsageCount(n,i){let o=this.styleRef;if(o.has(n)){let s=o.get(n);return s.usage+=i,s.usage}return o.set(n,{usage:i,elements:[]}),i}getStyleElement(n,i){let o=this.styleNodesInDOM,s=o?.get(i);if(s?.parentNode===n)return o.delete(i),s.removeAttribute(td),s;{let a=this.doc.createElement("style");return this.nonce&&a.setAttribute("nonce",this.nonce),a.textContent=i,this.platformIsServer&&a.setAttribute(td,this.appId),n.appendChild(a),a}}addStyleToHost(n,i){let o=this.getStyleElement(n,i),s=this.styleRef,a=s.get(i)?.elements;a?a.push(o):s.set(i,{elements:[o],usage:1})}resetHostNodes(){let n=this.hostNodes;n.clear(),n.add(this.doc.head)}};e.\u0275fac=function(i){return new(i||e)(k(at),k(mu),k(vu,8),k(Rn))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),nd={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},ad=/%COMP%/g,Rg="%COMP%",Ex=`_nghost-${Rg}`,Ix=`_ngcontent-${Rg}`,Mx=!0,Sx=new F("",{providedIn:"root",factory:()=>Mx});function Tx(t){return Ix.replace(ad,t)}function Ax(t){return Ex.replace(ad,t)}function Fg(t,e){return e.map(r=>r.replace(ad,t))}var Ag=(()=>{let e=class e{constructor(n,i,o,s,a,l,c,f=null){this.eventManager=n,this.sharedStylesHost=i,this.appId=o,this.removeStylesOnCompDestroy=s,this.doc=a,this.platformId=l,this.ngZone=c,this.nonce=f,this.rendererByCompId=new Map,this.platformIsServer=Ma(l),this.defaultRenderer=new ro(n,a,c,this.platformIsServer)}createRenderer(n,i){if(!n||!i)return this.defaultRenderer;this.platformIsServer&&i.encapsulation===Zt.ShadowDom&&(i=J(M({},i),{encapsulation:Zt.Emulated}));let o=this.getOrCreateRenderer(n,i);return o instanceof Ra?o.applyToHost(n):o instanceof io&&o.applyStyles(),o}getOrCreateRenderer(n,i){let o=this.rendererByCompId,s=o.get(i.id);if(!s){let a=this.doc,l=this.ngZone,c=this.eventManager,f=this.sharedStylesHost,h=this.removeStylesOnCompDestroy,v=this.platformIsServer;switch(i.encapsulation){case Zt.Emulated:s=new Ra(c,f,i,this.appId,h,a,l,v);break;case Zt.ShadowDom:return new sd(c,f,n,i,a,l,this.nonce,v);default:s=new io(c,f,i,h,a,l,v);break}o.set(i.id,s)}return s}ngOnDestroy(){this.rendererByCompId.clear()}};e.\u0275fac=function(i){return new(i||e)(k(kg),k(Pg),k(mu),k(Sx),k(at),k(Rn),k(xe),k(vu))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),ro=class{constructor(e,r,n,i){this.eventManager=e,this.doc=r,this.ngZone=n,this.platformIsServer=i,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(e,r){return r?this.doc.createElementNS(nd[r]||r,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,r){(Og(e)?e.content:e).appendChild(r)}insertBefore(e,r,n){e&&(Og(e)?e.content:e).insertBefore(r,n)}removeChild(e,r){e&&e.removeChild(r)}selectRootElement(e,r){let n=typeof e=="string"?this.doc.querySelector(e):e;if(!n)throw new N(-5104,!1);return r||(n.textContent=""),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,r,n,i){if(i){r=i+":"+r;let o=nd[i];o?e.setAttributeNS(o,r,n):e.setAttribute(r,n)}else e.setAttribute(r,n)}removeAttribute(e,r,n){if(n){let i=nd[n];i?e.removeAttributeNS(i,r):e.removeAttribute(`${n}:${r}`)}else e.removeAttribute(r)}addClass(e,r){e.classList.add(r)}removeClass(e,r){e.classList.remove(r)}setStyle(e,r,n,i){i&(dn.DashCase|dn.Important)?e.style.setProperty(r,n,i&dn.Important?"important":""):e.style[r]=n}removeStyle(e,r,n){n&dn.DashCase?e.style.removeProperty(r):e.style[r]=""}setProperty(e,r,n){e!=null&&(e[r]=n)}setValue(e,r){e.nodeValue=r}listen(e,r,n){if(typeof e=="string"&&(e=_n().getGlobalEventTarget(this.doc,e),!e))throw new Error(`Unsupported event target ${e} for event ${r}`);return this.eventManager.addEventListener(e,r,this.decoratePreventDefault(n))}decoratePreventDefault(e){return r=>{if(r==="__ngUnwrap__")return e;(this.platformIsServer?this.ngZone.runGuarded(()=>e(r)):e(r))===!1&&r.preventDefault()}}};function Og(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var sd=class extends ro{constructor(e,r,n,i,o,s,a,l){super(e,o,s,l),this.sharedStylesHost=r,this.hostEl=n,this.shadowRoot=n.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let c=Fg(i.id,i.styles);for(let f of c){let h=document.createElement("style");a&&h.setAttribute("nonce",a),h.textContent=f,this.shadowRoot.appendChild(h)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,r){return super.appendChild(this.nodeOrShadowRoot(e),r)}insertBefore(e,r,n){return super.insertBefore(this.nodeOrShadowRoot(e),r,n)}removeChild(e,r){return super.removeChild(this.nodeOrShadowRoot(e),r)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},io=class extends ro{constructor(e,r,n,i,o,s,a,l){super(e,o,s,a),this.sharedStylesHost=r,this.removeStylesOnCompDestroy=i,this.styles=l?Fg(l,n.styles):n.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},Ra=class extends io{constructor(e,r,n,i,o,s,a,l){let c=i+"-"+n.id;super(e,r,n,o,s,a,l,c),this.contentAttr=Tx(c),this.hostAttr=Ax(c)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,r){let n=super.createElement(e,r);return super.setAttribute(n,this.contentAttr,""),n}},Ox=(()=>{let e=class e extends Pa{constructor(n){super(n)}supports(n){return!0}addEventListener(n,i,o){return n.addEventListener(i,o,!1),()=>this.removeEventListener(n,i,o)}removeEventListener(n,i,o){return n.removeEventListener(i,o)}};e.\u0275fac=function(i){return new(i||e)(k(at))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),Ng=["alt","control","meta","shift"],Nx={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},kx={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},Px=(()=>{let e=class e extends Pa{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,i,o){let s=e.parseEventName(i),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>_n().onAndCancel(n,s.domEventName,a))}static parseEventName(n){let i=n.toLowerCase().split("."),o=i.shift();if(i.length===0||!(o==="keydown"||o==="keyup"))return null;let s=e._normalizeKey(i.pop()),a="",l=i.indexOf("code");if(l>-1&&(i.splice(l,1),a="code."),Ng.forEach(f=>{let h=i.indexOf(f);h>-1&&(i.splice(h,1),a+=f+".")}),a+=s,i.length!=0||s.length===0)return null;let c={};return c.domEventName=o,c.fullKey=a,c}static matchEventFullKeyCode(n,i){let o=Nx[n.key]||n.key,s="";return i.indexOf("code.")>-1&&(o=n.code,s="code."),o==null||!o?!1:(o=o.toLowerCase(),o===" "?o="space":o==="."&&(o="dot"),Ng.forEach(a=>{if(a!==o){let l=kx[a];l(n)&&(s+=a+".")}}),s+=o,s===i)}static eventCallback(n,i,o){return s=>{e.matchEventFullKeyCode(s,n)&&o.runGuarded(()=>i(s))}}static _normalizeKey(n){return n==="esc"?"escape":n}};e.\u0275fac=function(i){return new(i||e)(k(at))},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();function Lg(t,e){return eg(M({rootComponent:t},Rx(e)))}function Rx(t){return{appProviders:[...$x,...t?.providers??[]],platformProviders:jx}}function Fx(){id.makeCurrent()}function Lx(){return new un}function Vx(){return zh(document),document}var jx=[{provide:Rn,useValue:yg},{provide:gu,useValue:Fx,multi:!0},{provide:at,useFactory:Vx,deps:[]}];var $x=[{provide:zs,useValue:"root"},{provide:un,useFactory:Lx,deps:[]},{provide:od,useClass:Ox,multi:!0,deps:[at,xe,Rn]},{provide:od,useClass:Px,multi:!0,deps:[at]},Ag,Pg,kg,{provide:Hi,useExisting:Ag},{provide:ti,useClass:xx,deps:[]},[]];var Vg=(()=>{let e=class e{constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||""}};e.\u0275fac=function(i){return new(i||e)(k(at))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var q="primary",wo=Symbol("RouteTitle"),fd=class{constructor(e){this.params=e||{}}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}get(e){if(this.has(e)){let r=this.params[e];return Array.isArray(r)?r[0]:r}return null}getAll(e){if(this.has(e)){let r=this.params[e];return Array.isArray(r)?r:[r]}return[]}get keys(){return Object.keys(this.params)}};function ui(t){return new fd(t)}function Bx(t,e,r){let n=r.path.split("/");if(n.length>t.length||r.pathMatch==="full"&&(e.hasChildren()||n.lengthn[o]===i)}else return t===e}function zg(t){return t.length>0?t[t.length-1]:null}function Un(t){return Ol(t)?t:pr(t)?me(Promise.resolve(t)):O(t)}var qx={exact:Wg,subset:Zg},Gg={exact:zx,subset:Gx,ignored:()=>!0};function jg(t,e,r){return qx[r.paths](t.root,e.root,r.matrixParams)&&Gg[r.queryParams](t.queryParams,e.queryParams)&&!(r.fragment==="exact"&&t.fragment!==e.fragment)}function zx(t,e){return en(t,e)}function Wg(t,e,r){if(!yr(t.segments,e.segments)||!Va(t.segments,e.segments,r)||t.numberOfChildren!==e.numberOfChildren)return!1;for(let n in e.children)if(!t.children[n]||!Wg(t.children[n],e.children[n],r))return!1;return!0}function Gx(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(r=>qg(t[r],e[r]))}function Zg(t,e,r){return Qg(t,e,e.segments,r)}function Qg(t,e,r,n){if(t.segments.length>r.length){let i=t.segments.slice(0,r.length);return!(!yr(i,r)||e.hasChildren()||!Va(i,r,n))}else if(t.segments.length===r.length){if(!yr(t.segments,r)||!Va(t.segments,r,n))return!1;for(let i in e.children)if(!t.children[i]||!Zg(t.children[i],e.children[i],n))return!1;return!0}else{let i=r.slice(0,t.segments.length),o=r.slice(t.segments.length);return!yr(t.segments,i)||!Va(t.segments,i,n)||!t.children[q]?!1:Qg(t.children[q],e,o,n)}}function Va(t,e,r){return e.every((n,i)=>Gg[r](t[i].parameters,n.parameters))}var jn=class{constructor(e=new ae([],{}),r={},n=null){this.root=e,this.queryParams=r,this.fragment=n}get queryParamMap(){return this._queryParamMap??=ui(this.queryParams),this._queryParamMap}toString(){return Qx.serialize(this)}},ae=class{constructor(e,r){this.segments=e,this.children=r,this.parent=null,Object.values(r).forEach(n=>n.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return ja(this)}},vr=class{constructor(e,r){this.path=e,this.parameters=r}get parameterMap(){return this._parameterMap??=ui(this.parameters),this._parameterMap}toString(){return Kg(this)}};function Wx(t,e){return yr(t,e)&&t.every((r,n)=>en(r.parameters,e[n].parameters))}function yr(t,e){return t.length!==e.length?!1:t.every((r,n)=>r.path===e[n].path)}function Zx(t,e){let r=[];return Object.entries(t.children).forEach(([n,i])=>{n===q&&(r=r.concat(e(i,n)))}),Object.entries(t.children).forEach(([n,i])=>{n!==q&&(r=r.concat(e(i,n)))}),r}var jd=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>new Ua,providedIn:"root"});let t=e;return t})(),Ua=class{parse(e){let r=new md(e);return new jn(r.parseRootSegment(),r.parseQueryParams(),r.parseFragment())}serialize(e){let r=`/${oo(e.root,!0)}`,n=Jx(e.queryParams),i=typeof e.fragment=="string"?`#${Yx(e.fragment)}`:"";return`${r}${n}${i}`}},Qx=new Ua;function ja(t){return t.segments.map(e=>Kg(e)).join("/")}function oo(t,e){if(!t.hasChildren())return ja(t);if(e){let r=t.children[q]?oo(t.children[q],!1):"",n=[];return Object.entries(t.children).forEach(([i,o])=>{i!==q&&n.push(`${i}:${oo(o,!1)}`)}),n.length>0?`${r}(${n.join("//")})`:r}else{let r=Zx(t,(n,i)=>i===q?[oo(t.children[q],!1)]:[`${i}:${oo(n,!1)}`]);return Object.keys(t.children).length===1&&t.children[q]!=null?`${ja(t)}/${r[0]}`:`${ja(t)}/(${r.join("//")})`}}function Yg(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Fa(t){return Yg(t).replace(/%3B/gi,";")}function Yx(t){return encodeURI(t)}function hd(t){return Yg(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function $a(t){return decodeURIComponent(t)}function $g(t){return $a(t.replace(/\+/g,"%20"))}function Kg(t){return`${hd(t.path)}${Kx(t.parameters)}`}function Kx(t){return Object.entries(t).map(([e,r])=>`;${hd(e)}=${hd(r)}`).join("")}function Jx(t){let e=Object.entries(t).map(([r,n])=>Array.isArray(n)?n.map(i=>`${Fa(r)}=${Fa(i)}`).join("&"):`${Fa(r)}=${Fa(n)}`).filter(r=>r);return e.length?`?${e.join("&")}`:""}var Xx=/^[^\/()?;#]+/;function ld(t){let e=t.match(Xx);return e?e[0]:""}var eE=/^[^\/()?;=#]+/;function tE(t){let e=t.match(eE);return e?e[0]:""}var nE=/^[^=?&#]+/;function rE(t){let e=t.match(nE);return e?e[0]:""}var iE=/^[^&#]+/;function oE(t){let e=t.match(iE);return e?e[0]:""}var md=class{constructor(e){this.url=e,this.remaining=e}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new ae([],{}):new ae([],this.parseChildren())}parseQueryParams(){let e={};if(this.consumeOptional("?"))do this.parseQueryParam(e);while(this.consumeOptional("&"));return e}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let r={};this.peekStartsWith("/(")&&(this.capture("/"),r=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(e.length>0||Object.keys(r).length>0)&&(n[q]=new ae(e,r)),n}parseSegment(){let e=ld(this.remaining);if(e===""&&this.peekStartsWith(";"))throw new N(4009,!1);return this.capture(e),new vr($a(e),this.parseMatrixParams())}parseMatrixParams(){let e={};for(;this.consumeOptional(";");)this.parseParam(e);return e}parseParam(e){let r=tE(this.remaining);if(!r)return;this.capture(r);let n="";if(this.consumeOptional("=")){let i=ld(this.remaining);i&&(n=i,this.capture(n))}e[$a(r)]=$a(n)}parseQueryParam(e){let r=rE(this.remaining);if(!r)return;this.capture(r);let n="";if(this.consumeOptional("=")){let s=oE(this.remaining);s&&(n=s,this.capture(n))}let i=$g(r),o=$g(n);if(e.hasOwnProperty(i)){let s=e[i];Array.isArray(s)||(s=[s],e[i]=s),s.push(o)}else e[i]=o}parseParens(e){let r={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let n=ld(this.remaining),i=this.remaining[n.length];if(i!=="/"&&i!==")"&&i!==";")throw new N(4010,!1);let o;n.indexOf(":")>-1?(o=n.slice(0,n.indexOf(":")),this.capture(o),this.capture(":")):e&&(o=q);let s=this.parseChildren();r[o]=Object.keys(s).length===1?s[q]:new ae([],s),this.consumeOptional("//")}return r}peekStartsWith(e){return this.remaining.startsWith(e)}consumeOptional(e){return this.peekStartsWith(e)?(this.remaining=this.remaining.substring(e.length),!0):!1}capture(e){if(!this.consumeOptional(e))throw new N(4011,!1)}};function Jg(t){return t.segments.length>0?new ae([],{[q]:t}):t}function Xg(t){let e={};for(let[n,i]of Object.entries(t.children)){let o=Xg(i);if(n===q&&o.segments.length===0&&o.hasChildren())for(let[s,a]of Object.entries(o.children))e[s]=a;else(o.segments.length>0||o.hasChildren())&&(e[n]=o)}let r=new ae(t.segments,e);return sE(r)}function sE(t){if(t.numberOfChildren===1&&t.children[q]){let e=t.children[q];return new ae(t.segments.concat(e.segments),e.children)}return t}function di(t){return t instanceof jn}function aE(t,e,r=null,n=null){let i=e0(t);return t0(i,e,r,n)}function e0(t){let e;function r(o){let s={};for(let l of o.children){let c=r(l);s[l.outlet]=c}let a=new ae(o.url,s);return o===t&&(e=a),a}let n=r(t.root),i=Jg(n);return e??i}function t0(t,e,r,n){let i=t;for(;i.parent;)i=i.parent;if(e.length===0)return cd(i,i,i,r,n);let o=lE(e);if(o.toRoot())return cd(i,i,new ae([],{}),r,n);let s=cE(o,i,t),a=s.processChildren?lo(s.segmentGroup,s.index,o.commands):r0(s.segmentGroup,s.index,o.commands);return cd(i,s.segmentGroup,a,r,n)}function Ba(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function fo(t){return typeof t=="object"&&t!=null&&t.outlets}function cd(t,e,r,n,i){let o={};n&&Object.entries(n).forEach(([l,c])=>{o[l]=Array.isArray(c)?c.map(f=>`${f}`):`${c}`});let s;t===e?s=r:s=n0(t,e,r);let a=Jg(Xg(s));return new jn(a,o,i)}function n0(t,e,r){let n={};return Object.entries(t.children).forEach(([i,o])=>{o===e?n[i]=r:n[i]=n0(o,e,r)}),new ae(t.segments,n)}var Ha=class{constructor(e,r,n){if(this.isAbsolute=e,this.numberOfDoubleDots=r,this.commands=n,e&&n.length>0&&Ba(n[0]))throw new N(4003,!1);let i=n.find(fo);if(i&&i!==zg(n))throw new N(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function lE(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new Ha(!0,0,t);let e=0,r=!1,n=t.reduce((i,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let a={};return Object.entries(o.outlets).forEach(([l,c])=>{a[l]=typeof c=="string"?c.split("/"):c}),[...i,{outlets:a}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!="string"?[...i,o]:s===0?(o.split("/").forEach((a,l)=>{l==0&&a==="."||(l==0&&a===""?r=!0:a===".."?e++:a!=""&&i.push(a))}),i):[...i,o]},[]);return new Ha(r,e,n)}var li=class{constructor(e,r,n){this.segmentGroup=e,this.processChildren=r,this.index=n}};function cE(t,e,r){if(t.isAbsolute)return new li(e,!0,0);if(!r)return new li(e,!1,NaN);if(r.parent===null)return new li(r,!0,0);let n=Ba(t.commands[0])?0:1,i=r.segments.length-1+n;return uE(r,i,t.numberOfDoubleDots)}function uE(t,e,r){let n=t,i=e,o=r;for(;o>i;){if(o-=i,n=n.parent,!n)throw new N(4005,!1);i=n.segments.length}return new li(n,!1,i-o)}function dE(t){return fo(t[0])?t[0].outlets:{[q]:t}}function r0(t,e,r){if(t??=new ae([],{}),t.segments.length===0&&t.hasChildren())return lo(t,e,r);let n=fE(t,e,r),i=r.slice(n.commandIndex);if(n.match&&n.pathIndexo!==q)&&t.children[q]&&t.numberOfChildren===1&&t.children[q].segments.length===0){let o=lo(t.children[q],e,r);return new ae(t.segments,o.children)}return Object.entries(n).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(i[o]=r0(t.children[o],e,s))}),Object.entries(t.children).forEach(([o,s])=>{n[o]===void 0&&(i[o]=s)}),new ae(t.segments,i)}}function fE(t,e,r){let n=0,i=e,o={match:!1,pathIndex:0,commandIndex:0};for(;i=r.length)return o;let s=t.segments[i],a=r[n];if(fo(a))break;let l=`${a}`,c=n0&&l===void 0)break;if(l&&c&&typeof c=="object"&&c.outlets===void 0){if(!Bg(l,c,s))return o;n+=2}else{if(!Bg(l,{},s))return o;n++}i++}return{match:!0,pathIndex:i,commandIndex:n}}function gd(t,e,r){let n=t.segments.slice(0,e),i=0;for(;i{typeof n=="string"&&(n=[n]),n!==null&&(e[r]=gd(new ae([],{}),0,n))}),e}function Ug(t){let e={};return Object.entries(t).forEach(([r,n])=>e[r]=`${n}`),e}function Bg(t,e,r){return t==r.path&&en(e,r.parameters)}var co="imperative",Be=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(Be||{}),It=class{constructor(e,r){this.id=e,this.url=r}},po=class extends It{constructor(e,r,n="imperative",i=null){super(e,r),this.type=Be.NavigationStart,this.navigationTrigger=n,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},wn=class extends It{constructor(e,r,n){super(e,r),this.urlAfterRedirects=n,this.type=Be.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},vt=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t}(vt||{}),vd=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(vd||{}),$n=class extends It{constructor(e,r,n,i){super(e,r),this.reason=n,this.code=i,this.type=Be.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},_r=class extends It{constructor(e,r,n,i){super(e,r),this.reason=n,this.code=i,this.type=Be.NavigationSkipped}},ho=class extends It{constructor(e,r,n,i){super(e,r),this.error=n,this.target=i,this.type=Be.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},qa=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Be.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},yd=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Be.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},_d=class extends It{constructor(e,r,n,i,o){super(e,r),this.urlAfterRedirects=n,this.state=i,this.shouldActivate=o,this.type=Be.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},wd=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Be.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Cd=class extends It{constructor(e,r,n,i){super(e,r),this.urlAfterRedirects=n,this.state=i,this.type=Be.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Dd=class{constructor(e){this.route=e,this.type=Be.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},bd=class{constructor(e){this.route=e,this.type=Be.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},xd=class{constructor(e){this.snapshot=e,this.type=Be.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Ed=class{constructor(e){this.snapshot=e,this.type=Be.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Id=class{constructor(e){this.snapshot=e,this.type=Be.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Md=class{constructor(e){this.snapshot=e,this.type=Be.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var mo=class{},go=class{constructor(e){this.url=e}};var Sd=class{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new Ya,this.attachRef=null}},Ya=(()=>{let e=class e{constructor(){this.contexts=new Map}onChildOutletCreated(n,i){let o=this.getOrCreateContext(n);o.outlet=i,this.contexts.set(n,o)}onChildOutletDestroyed(n){let i=this.getContext(n);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let i=this.getContext(n);return i||(i=new Sd,this.contexts.set(n,i)),i}getContext(n){return this.contexts.get(n)||null}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),za=class{constructor(e){this._root=e}get root(){return this._root.value}parent(e){let r=this.pathFromRoot(e);return r.length>1?r[r.length-2]:null}children(e){let r=Td(e,this._root);return r?r.children.map(n=>n.value):[]}firstChild(e){let r=Td(e,this._root);return r&&r.children.length>0?r.children[0].value:null}siblings(e){let r=Ad(e,this._root);return r.length<2?[]:r[r.length-2].children.map(i=>i.value).filter(i=>i!==e)}pathFromRoot(e){return Ad(e,this._root).map(r=>r.value)}};function Td(t,e){if(t===e.value)return e;for(let r of e.children){let n=Td(t,r);if(n)return n}return null}function Ad(t,e){if(t===e.value)return[e];for(let r of e.children){let n=Ad(t,r);if(n.length)return n.unshift(e),n}return[]}var gt=class{constructor(e,r){this.value=e,this.children=r}toString(){return`TreeNode(${this.value})`}};function ai(t){let e={};return t&&t.children.forEach(r=>e[r.value.outlet]=r),e}var Ga=class extends za{constructor(e,r){super(e),this.snapshot=r,Ud(this,e)}toString(){return this.snapshot.toString()}};function i0(t){let e=hE(t),r=new Ve([new vr("",{})]),n=new Ve({}),i=new Ve({}),o=new Ve({}),s=new Ve(""),a=new yt(r,n,o,s,i,q,t,e.root);return a.snapshot=e.root,new Ga(new gt(a,[]),e)}function hE(t){let e={},r={},n={},i="",o=new vo([],e,n,i,r,q,t,null,{});return new Wa("",new gt(o,[]))}var yt=class{constructor(e,r,n,i,o,s,a,l){this.urlSubject=e,this.paramsSubject=r,this.queryParamsSubject=n,this.fragmentSubject=i,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(A(c=>c[wo]))??O(void 0),this.url=e,this.params=r,this.queryParams=n,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(A(e=>ui(e))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(A(e=>ui(e))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function $d(t,e,r="emptyOnly"){let n,{routeConfig:i}=t;return e!==null&&(r==="always"||i?.path===""||!e.component&&!e.routeConfig?.loadComponent)?n={params:M(M({},e.params),t.params),data:M(M({},e.data),t.data),resolve:M(M(M(M({},t.data),e.data),i?.data),t._resolvedData)}:n={params:M({},t.params),data:M({},t.data),resolve:M(M({},t.data),t._resolvedData??{})},i&&s0(i)&&(n.resolve[wo]=i.title),n}var vo=class{get title(){return this.data?.[wo]}constructor(e,r,n,i,o,s,a,l,c){this.url=e,this.params=r,this.queryParams=n,this.fragment=i,this.data=o,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=c}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=ui(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=ui(this.queryParams),this._queryParamMap}toString(){let e=this.url.map(n=>n.toString()).join("/"),r=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${e}', path:'${r}')`}},Wa=class extends za{constructor(e,r){super(r),this.url=e,Ud(this,r)}toString(){return o0(this._root)}};function Ud(t,e){e.value._routerState=t,e.children.forEach(r=>Ud(t,r))}function o0(t){let e=t.children.length>0?` { ${t.children.map(o0).join(", ")} } `:"";return`${t.value}${e}`}function ud(t){if(t.snapshot){let e=t.snapshot,r=t._futureSnapshot;t.snapshot=r,en(e.queryParams,r.queryParams)||t.queryParamsSubject.next(r.queryParams),e.fragment!==r.fragment&&t.fragmentSubject.next(r.fragment),en(e.params,r.params)||t.paramsSubject.next(r.params),Hx(e.url,r.url)||t.urlSubject.next(r.url),en(e.data,r.data)||t.dataSubject.next(r.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Od(t,e){let r=en(t.params,e.params)&&Wx(t.url,e.url),n=!t.parent!=!e.parent;return r&&!n&&(!t.parent||Od(t.parent,e.parent))}function s0(t){return typeof t.title=="string"||t.title===null}var wr=(()=>{let e=class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=q,this.activateEvents=new ye,this.deactivateEvents=new ye,this.attachEvents=new ye,this.detachEvents=new ye,this.parentContexts=S(Ya),this.location=S(gn),this.changeDetector=S(Xt),this.environmentInjector=S(nt),this.inputBinder=S(Bd,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(n){if(n.name){let{firstChange:i,previousValue:o}=n.name;if(i)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new N(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new N(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new N(4012,!1);this.location.detach();let n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,i){this.activated=n,this._activatedRoute=i,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){let n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,i){if(this.isActivated)throw new N(4013,!1);this._activatedRoute=n;let o=this.location,a=n.snapshot.component,l=this.parentContexts.getOrCreateContext(this.name).children,c=new Nd(n,l,o.injector);this.activated=o.createComponent(a,{index:o.length,injector:c,environmentInjector:i??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}};e.\u0275fac=function(i){return new(i||e)},e.\u0275dir=re({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[it]});let t=e;return t})(),Nd=class t{__ngOutletInjector(e){return new t(this.route,this.childContexts,e)}constructor(e,r,n){this.route=e,this.childContexts=r,this.parent=n}get(e,r){return e===yt?this.route:e===Ya?this.childContexts:this.parent.get(e,r)}},Bd=new F("");function mE(t,e,r){let n=yo(t,e._root,r?r._root:void 0);return new Ga(n,e)}function yo(t,e,r){if(r&&t.shouldReuseRoute(e.value,r.value.snapshot)){let n=r.value;n._futureSnapshot=e.value;let i=gE(t,e,r);return new gt(n,i)}else{if(t.shouldAttach(e.value)){let o=t.retrieve(e.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=e.value,s.children=e.children.map(a=>yo(t,a)),s}}let n=vE(e.value),i=e.children.map(o=>yo(t,o));return new gt(n,i)}}function gE(t,e,r){return e.children.map(n=>{for(let i of r.children)if(t.shouldReuseRoute(n.value,i.value.snapshot))return yo(t,n,i);return yo(t,n)})}function vE(t){return new yt(new Ve(t.url),new Ve(t.params),new Ve(t.queryParams),new Ve(t.fragment),new Ve(t.data),t.outlet,t.component,t)}var a0="ngNavigationCancelingError";function l0(t,e){let{redirectTo:r,navigationBehaviorOptions:n}=di(e)?{redirectTo:e,navigationBehaviorOptions:void 0}:e,i=c0(!1,vt.Redirect);return i.url=r,i.navigationBehaviorOptions=n,i}function c0(t,e){let r=new Error(`NavigationCancelingError: ${t||""}`);return r[a0]=!0,r.cancellationCode=e,r}function yE(t){return u0(t)&&di(t.url)}function u0(t){return!!t&&t[a0]}var _E=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["ng-component"]],standalone:!0,features:[te],decls:1,vars:0,template:function(i,o){i&1&&w(0,"router-outlet")},dependencies:[wr],encapsulation:2});let t=e;return t})();function wE(t,e){return t.providers&&!t._injector&&(t._injector=Fu(t.providers,e,`Route: ${t.path}`)),t._injector??e}function Hd(t){let e=t.children&&t.children.map(Hd),r=e?J(M({},t),{children:e}):M({},t);return!r.component&&!r.loadComponent&&(e||r.loadChildren)&&r.outlet&&r.outlet!==q&&(r.component=_E),r}function tn(t){return t.outlet||q}function CE(t,e){let r=t.filter(n=>tn(n)===e);return r.push(...t.filter(n=>tn(n)!==e)),r}function Co(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let e=t.parent;e;e=e.parent){let r=e.routeConfig;if(r?._loadedInjector)return r._loadedInjector;if(r?._injector)return r._injector}return null}var DE=(t,e,r,n)=>A(i=>(new kd(e,i.targetRouterState,i.currentRouterState,r,n).activate(t),i)),kd=class{constructor(e,r,n,i,o){this.routeReuseStrategy=e,this.futureState=r,this.currState=n,this.forwardEvent=i,this.inputBindingEnabled=o}activate(e){let r=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(r,n,e),ud(this.futureState.root),this.activateChildRoutes(r,n,e)}deactivateChildRoutes(e,r,n){let i=ai(r);e.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,i[s],n),delete i[s]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,n)})}deactivateRoutes(e,r,n){let i=e.value,o=r?r.value:null;if(i===o)if(i.component){let s=n.getContext(i.outlet);s&&this.deactivateChildRoutes(e,r,s.children)}else this.deactivateChildRoutes(e,r,n);else o&&this.deactivateRouteAndItsChildren(r,n)}deactivateRouteAndItsChildren(e,r){e.value.component&&this.routeReuseStrategy.shouldDetach(e.value.snapshot)?this.detachAndStoreRouteSubtree(e,r):this.deactivateRouteAndOutlet(e,r)}detachAndStoreRouteSubtree(e,r){let n=r.getContext(e.value.outlet),i=n&&e.value.component?n.children:r,o=ai(e);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);if(n&&n.outlet){let s=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(e.value.snapshot,{componentRef:s,route:e,contexts:a})}}deactivateRouteAndOutlet(e,r){let n=r.getContext(e.value.outlet),i=n&&e.value.component?n.children:r,o=ai(e);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,i);n&&(n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated()),n.attachRef=null,n.route=null)}activateChildRoutes(e,r,n){let i=ai(r);e.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],n),this.forwardEvent(new Md(o.value.snapshot))}),e.children.length&&this.forwardEvent(new Ed(e.value.snapshot))}activateRoutes(e,r,n){let i=e.value,o=r?r.value:null;if(ud(i),i===o)if(i.component){let s=n.getOrCreateContext(i.outlet);this.activateChildRoutes(e,r,s.children)}else this.activateChildRoutes(e,r,n);else if(i.component){let s=n.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),ud(a.route.value),this.activateChildRoutes(e,null,s.children)}else{let a=Co(i.snapshot);s.attachRef=null,s.route=i,s.injector=a,s.outlet&&s.outlet.activateWith(i,s.injector),this.activateChildRoutes(e,null,s.children)}}else this.activateChildRoutes(e,null,n)}},Za=class{constructor(e){this.path=e,this.route=this.path[this.path.length-1]}},ci=class{constructor(e,r){this.component=e,this.route=r}};function bE(t,e,r){let n=t._root,i=e?e._root:null;return so(n,i,r,[n.value])}function xE(t){let e=t.routeConfig?t.routeConfig.canActivateChild:null;return!e||e.length===0?null:{node:t,guards:e}}function pi(t,e){let r=Symbol(),n=e.get(t,r);return n===r?typeof t=="function"&&!Pp(t)?t:e.get(t):n}function so(t,e,r,n,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=ai(e);return t.children.forEach(s=>{EE(s,o[s.value.outlet],r,n.concat([s.value]),i),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>uo(a,r.getContext(s),i)),i}function EE(t,e,r,n,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=e?e.value:null,a=r?r.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let l=IE(s,o,o.routeConfig.runGuardsAndResolvers);l?i.canActivateChecks.push(new Za(n)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?so(t,e,a?a.children:null,n,i):so(t,e,r,n,i),l&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new ci(a.outlet.component,s))}else s&&uo(e,a,i),i.canActivateChecks.push(new Za(n)),o.component?so(t,null,a?a.children:null,n,i):so(t,null,r,n,i);return i}function IE(t,e,r){if(typeof r=="function")return r(t,e);switch(r){case"pathParamsChange":return!yr(t.url,e.url);case"pathParamsOrQueryParamsChange":return!yr(t.url,e.url)||!en(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Od(t,e)||!en(t.queryParams,e.queryParams);case"paramsChange":default:return!Od(t,e)}}function uo(t,e,r){let n=ai(t),i=t.value;Object.entries(n).forEach(([o,s])=>{i.component?e?uo(s,e.children.getContext(o),r):uo(s,null,r):uo(s,e,r)}),i.component?e&&e.outlet&&e.outlet.isActivated?r.canDeactivateChecks.push(new ci(e.outlet.component,i)):r.canDeactivateChecks.push(new ci(null,i)):r.canDeactivateChecks.push(new ci(null,i))}function Do(t){return typeof t=="function"}function ME(t){return typeof t=="boolean"}function SE(t){return t&&Do(t.canLoad)}function TE(t){return t&&Do(t.canActivate)}function AE(t){return t&&Do(t.canActivateChild)}function OE(t){return t&&Do(t.canDeactivate)}function NE(t){return t&&Do(t.canMatch)}function d0(t){return t instanceof an||t?.name==="EmptyError"}var La=Symbol("INITIAL_VALUE");function fi(){return ut(t=>os(t.map(e=>e.pipe(ln(1),Ul(La)))).pipe(A(e=>{for(let r of e)if(r!==!0){if(r===La)return La;if(r===!1||r instanceof jn)return r}return!0}),je(e=>e!==La),ln(1)))}function kE(t,e){return ke(r=>{let{targetSnapshot:n,currentSnapshot:i,guards:{canActivateChecks:o,canDeactivateChecks:s}}=r;return s.length===0&&o.length===0?O(J(M({},r),{guardsResult:!0})):PE(s,n,i,t).pipe(ke(a=>a&&ME(a)?RE(n,o,t,e):O(a)),A(a=>J(M({},r),{guardsResult:a})))})}function PE(t,e,r,n){return me(t).pipe(ke(i=>$E(i.component,i.route,r,e,n)),zt(i=>i!==!0,!0))}function RE(t,e,r,n){return me(e).pipe(En(i=>Rr(LE(i.route.parent,n),FE(i.route,n),jE(t,i.path,r),VE(t,i.route,r))),zt(i=>i!==!0,!0))}function FE(t,e){return t!==null&&e&&e(new Id(t)),O(!0)}function LE(t,e){return t!==null&&e&&e(new xd(t)),O(!0)}function VE(t,e,r){let n=e.routeConfig?e.routeConfig.canActivate:null;if(!n||n.length===0)return O(!0);let i=n.map(o=>as(()=>{let s=Co(e)??r,a=pi(o,s),l=TE(a)?a.canActivate(e,t):pn(s,()=>a(e,t));return Un(l).pipe(zt())}));return O(i).pipe(fi())}function jE(t,e,r){let n=e[e.length-1],o=e.slice(0,e.length-1).reverse().map(s=>xE(s)).filter(s=>s!==null).map(s=>as(()=>{let a=s.guards.map(l=>{let c=Co(s.node)??r,f=pi(l,c),h=AE(f)?f.canActivateChild(n,t):pn(c,()=>f(n,t));return Un(h).pipe(zt())});return O(a).pipe(fi())}));return O(o).pipe(fi())}function $E(t,e,r,n,i){let o=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!o||o.length===0)return O(!0);let s=o.map(a=>{let l=Co(e)??i,c=pi(a,l),f=OE(c)?c.canDeactivate(t,e,r,n):pn(l,()=>c(t,e,r,n));return Un(f).pipe(zt())});return O(s).pipe(fi())}function UE(t,e,r,n){let i=e.canLoad;if(i===void 0||i.length===0)return O(!0);let o=i.map(s=>{let a=pi(s,t),l=SE(a)?a.canLoad(e,r):pn(t,()=>a(e,r));return Un(l)});return O(o).pipe(fi(),f0(n))}function f0(t){return El(Re(e=>{if(di(e))throw l0(t,e)}),A(e=>e===!0))}function BE(t,e,r,n){let i=e.canMatch;if(!i||i.length===0)return O(!0);let o=i.map(s=>{let a=pi(s,t),l=NE(a)?a.canMatch(e,r):pn(t,()=>a(e,r));return Un(l)});return O(o).pipe(fi(),f0(n))}var _o=class{constructor(e){this.segmentGroup=e||null}},Qa=class extends Error{constructor(e){super(),this.urlTree=e}};function si(t){return kr(new _o(t))}function HE(t){return kr(new N(4e3,!1))}function qE(t){return kr(c0(!1,vt.GuardRejected))}var Pd=class{constructor(e,r){this.urlSerializer=e,this.urlTree=r}lineralizeSegments(e,r){let n=[],i=r.root;for(;;){if(n=n.concat(i.segments),i.numberOfChildren===0)return O(n);if(i.numberOfChildren>1||!i.children[q])return HE(e.redirectTo);i=i.children[q]}}applyRedirectCommands(e,r,n){let i=this.applyRedirectCreateUrlTree(r,this.urlSerializer.parse(r),e,n);if(r.startsWith("/"))throw new Qa(i);return i}applyRedirectCreateUrlTree(e,r,n,i){let o=this.createSegmentGroup(e,r.root,n,i);return new jn(o,this.createQueryParams(r.queryParams,this.urlTree.queryParams),r.fragment)}createQueryParams(e,r){let n={};return Object.entries(e).forEach(([i,o])=>{if(typeof o=="string"&&o.startsWith(":")){let a=o.substring(1);n[i]=r[a]}else n[i]=o}),n}createSegmentGroup(e,r,n,i){let o=this.createSegments(e,r.segments,n,i),s={};return Object.entries(r.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(e,l,n,i)}),new ae(o,s)}createSegments(e,r,n,i){return r.map(o=>o.path.startsWith(":")?this.findPosParam(e,o,i):this.findOrReturn(o,n))}findPosParam(e,r,n){let i=n[r.path.substring(1)];if(!i)throw new N(4001,!1);return i}findOrReturn(e,r){let n=0;for(let i of r){if(i.path===e.path)return r.splice(n),i;n++}return e}},Rd={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function zE(t,e,r,n,i){let o=qd(t,e,r);return o.matched?(n=wE(e,n),BE(n,e,r,i).pipe(A(s=>s===!0?o:M({},Rd)))):O(o)}function qd(t,e,r){if(e.path==="**")return GE(r);if(e.path==="")return e.pathMatch==="full"&&(t.hasChildren()||r.length>0)?M({},Rd):{matched:!0,consumedSegments:[],remainingSegments:r,parameters:{},positionalParamSegments:{}};let i=(e.matcher||Bx)(r,t,e);if(!i)return M({},Rd);let o={};Object.entries(i.posParams??{}).forEach(([a,l])=>{o[a]=l.path});let s=i.consumed.length>0?M(M({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:r.slice(i.consumed.length),parameters:s,positionalParamSegments:i.posParams??{}}}function GE(t){return{matched:!0,parameters:t.length>0?zg(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Hg(t,e,r,n){return r.length>0&&QE(t,r,n)?{segmentGroup:new ae(e,ZE(n,new ae(r,t.children))),slicedSegments:[]}:r.length===0&&YE(t,r,n)?{segmentGroup:new ae(t.segments,WE(t,r,n,t.children)),slicedSegments:r}:{segmentGroup:new ae(t.segments,t.children),slicedSegments:r}}function WE(t,e,r,n){let i={};for(let o of r)if(Ka(t,e,o)&&!n[tn(o)]){let s=new ae([],{});i[tn(o)]=s}return M(M({},n),i)}function ZE(t,e){let r={};r[q]=e;for(let n of t)if(n.path===""&&tn(n)!==q){let i=new ae([],{});r[tn(n)]=i}return r}function QE(t,e,r){return r.some(n=>Ka(t,e,n)&&tn(n)!==q)}function YE(t,e,r){return r.some(n=>Ka(t,e,n))}function Ka(t,e,r){return(t.hasChildren()||e.length>0)&&r.pathMatch==="full"?!1:r.path===""}function KE(t,e,r,n){return tn(t)!==n&&(n===q||!Ka(e,r,t))?!1:qd(e,t,r).matched}function JE(t,e,r){return e.length===0&&!t.children[r]}var Fd=class{};function XE(t,e,r,n,i,o,s="emptyOnly"){return new Ld(t,e,r,n,i,s,o).recognize()}var e1=31,Ld=class{constructor(e,r,n,i,o,s,a){this.injector=e,this.configLoader=r,this.rootComponentType=n,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new Pd(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(e){return new N(4002,`'${e.segmentGroup}'`)}recognize(){let e=Hg(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(e).pipe(A(r=>{let n=new vo([],Object.freeze({}),Object.freeze(M({},this.urlTree.queryParams)),this.urlTree.fragment,{},q,this.rootComponentType,null,{}),i=new gt(n,r),o=new Wa("",i),s=aE(n,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),this.inheritParamsAndData(o._root,null),{state:o,tree:s}}))}match(e){return this.processSegmentGroup(this.injector,this.config,e,q).pipe(qe(n=>{if(n instanceof Qa)return this.urlTree=n.urlTree,this.match(n.urlTree.root);throw n instanceof _o?this.noMatchError(n):n}))}inheritParamsAndData(e,r){let n=e.value,i=$d(n,r,this.paramsInheritanceStrategy);n.params=Object.freeze(i.params),n.data=Object.freeze(i.data),e.children.forEach(o=>this.inheritParamsAndData(o,n))}processSegmentGroup(e,r,n,i){return n.segments.length===0&&n.hasChildren()?this.processChildren(e,r,n):this.processSegment(e,r,n,n.segments,i,!0).pipe(A(o=>o instanceof gt?[o]:[]))}processChildren(e,r,n){let i=[];for(let o of Object.keys(n.children))o==="primary"?i.unshift(o):i.push(o);return me(i).pipe(En(o=>{let s=n.children[o],a=CE(r,o);return this.processSegmentGroup(e,a,s,o)}),jl((o,s)=>(o.push(...s),o)),In(null),Vl(),ke(o=>{if(o===null)return si(n);let s=p0(o);return t1(s),O(s)}))}processSegment(e,r,n,i,o,s){return me(r).pipe(En(a=>this.processSegmentAgainstRoute(a._injector??e,r,a,n,i,o,s).pipe(qe(l=>{if(l instanceof _o)return O(null);throw l}))),zt(a=>!!a),qe(a=>{if(d0(a))return JE(n,i,o)?O(new Fd):si(n);throw a}))}processSegmentAgainstRoute(e,r,n,i,o,s,a){return KE(n,i,o,s)?n.redirectTo===void 0?this.matchSegmentAgainstRoute(e,i,n,o,s):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(e,i,r,n,o,s):si(i):si(i)}expandSegmentAgainstRouteUsingRedirect(e,r,n,i,o,s){let{matched:a,consumedSegments:l,positionalParamSegments:c,remainingSegments:f}=qd(r,i,o);if(!a)return si(r);i.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>e1&&(this.allowRedirects=!1));let h=this.applyRedirects.applyRedirectCommands(l,i.redirectTo,c);return this.applyRedirects.lineralizeSegments(i,h).pipe(ke(v=>this.processSegment(e,n,r,v.concat(f),s,!1)))}matchSegmentAgainstRoute(e,r,n,i,o){let s=zE(r,n,i,e,this.urlSerializer);return n.path==="**"&&(r.children={}),s.pipe(ut(a=>a.matched?(e=n._injector??e,this.getChildConfig(e,n,i).pipe(ut(({routes:l})=>{let c=n._loadedInjector??e,{consumedSegments:f,remainingSegments:h,parameters:v}=a,y=new vo(f,v,Object.freeze(M({},this.urlTree.queryParams)),this.urlTree.fragment,r1(n),tn(n),n.component??n._loadedComponent??null,n,i1(n)),{segmentGroup:I,slicedSegments:V}=Hg(r,f,h,l);if(V.length===0&&I.hasChildren())return this.processChildren(c,l,I).pipe(A(R=>R===null?null:new gt(y,R)));if(l.length===0&&V.length===0)return O(new gt(y,[]));let j=tn(n)===o;return this.processSegment(c,l,I,V,j?q:o,!0).pipe(A(R=>new gt(y,R instanceof gt?[R]:[])))}))):si(r)))}getChildConfig(e,r,n){return r.children?O({routes:r.children,injector:e}):r.loadChildren?r._loadedRoutes!==void 0?O({routes:r._loadedRoutes,injector:r._loadedInjector}):UE(e,r,n,this.urlSerializer).pipe(ke(i=>i?this.configLoader.loadChildren(e,r).pipe(Re(o=>{r._loadedRoutes=o.routes,r._loadedInjector=o.injector})):qE(r))):O({routes:[],injector:e})}};function t1(t){t.sort((e,r)=>e.value.outlet===q?-1:r.value.outlet===q?1:e.value.outlet.localeCompare(r.value.outlet))}function n1(t){let e=t.value.routeConfig;return e&&e.path===""}function p0(t){let e=[],r=new Set;for(let n of t){if(!n1(n)){e.push(n);continue}let i=e.find(o=>n.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...n.children),r.add(i)):e.push(n)}for(let n of r){let i=p0(n.children);e.push(new gt(n.value,i))}return e.filter(n=>!r.has(n))}function r1(t){return t.data||{}}function i1(t){return t.resolve||{}}function o1(t,e,r,n,i,o){return ke(s=>XE(t,e,r,n,s.extractedUrl,i,o).pipe(A(({state:a,tree:l})=>J(M({},s),{targetSnapshot:a,urlAfterRedirects:l}))))}function s1(t,e){return ke(r=>{let{targetSnapshot:n,guards:{canActivateChecks:i}}=r;if(!i.length)return O(r);let o=new Set(i.map(l=>l.route)),s=new Set;for(let l of o)if(!s.has(l))for(let c of h0(l))s.add(c);let a=0;return me(s).pipe(En(l=>o.has(l)?a1(l,n,t,e):(l.data=$d(l,l.parent,t).resolve,O(void 0))),Re(()=>a++),Fr(1),ke(l=>a===s.size?O(r):Je))})}function h0(t){let e=t.children.map(r=>h0(r)).flat();return[t,...e]}function a1(t,e,r,n){let i=t.routeConfig,o=t._resolve;return i?.title!==void 0&&!s0(i)&&(o[wo]=i.title),l1(o,t,e,n).pipe(A(s=>(t._resolvedData=s,t.data=$d(t,t.parent,r).resolve,null)))}function l1(t,e,r,n){let i=pd(t);if(i.length===0)return O({});let o={};return me(i).pipe(ke(s=>c1(t[s],e,r,n).pipe(zt(),Re(a=>{o[s]=a}))),Fr(1),Rl(o),qe(s=>d0(s)?Je:kr(s)))}function c1(t,e,r,n){let i=Co(e)??n,o=pi(t,i),s=o.resolve?o.resolve(e,r):pn(i,()=>o(e,r));return Un(s)}function dd(t){return ut(e=>{let r=t(e);return r?me(r).pipe(A(()=>e)):O(e)})}var m0=(()=>{let e=class e{buildTitle(n){let i,o=n.root;for(;o!==void 0;)i=this.getResolvedTitleForRoute(o)??i,o=o.children.find(s=>s.outlet===q);return i}getResolvedTitleForRoute(n){return n.data[wo]}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(u1),providedIn:"root"});let t=e;return t})(),u1=(()=>{let e=class e extends m0{constructor(n){super(),this.title=n}updateTitle(n){let i=this.buildTitle(n);i!==void 0&&this.title.setTitle(i)}};e.\u0275fac=function(i){return new(i||e)(k(Vg))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),zd=new F("",{providedIn:"root",factory:()=>({})}),Gd=new F(""),d1=(()=>{let e=class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=S(Vu)}loadComponent(n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return O(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);let i=Un(n.loadComponent()).pipe(A(g0),Re(s=>{this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=s}),Mn(()=>{this.componentLoaders.delete(n)})),o=new Tr(i,()=>new ue).pipe(Sr());return this.componentLoaders.set(n,o),o}loadChildren(n,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return O({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);let s=f1(i,this.compiler,n,this.onLoadEndListener).pipe(Mn(()=>{this.childrenLoaders.delete(i)})),a=new Tr(s,()=>new ue).pipe(Sr());return this.childrenLoaders.set(i,a),a}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function f1(t,e,r,n){return Un(t.loadChildren()).pipe(A(g0),ke(i=>i instanceof zi||Array.isArray(i)?O(i):me(e.compileModuleAsync(i))),A(i=>{n&&n(t);let o,s,a=!1;return Array.isArray(i)?(s=i,a=!0):(o=i.create(r).injector,s=o.get(Gd,[],{optional:!0,self:!0}).flat()),{routes:s.map(Hd),injector:o}}))}function p1(t){return t&&typeof t=="object"&&"default"in t}function g0(t){return p1(t)?t.default:t}var Wd=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(h1),providedIn:"root"});let t=e;return t})(),h1=(()=>{let e=class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,i){return n}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),m1=new F("");var g1=(()=>{let e=class e{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new ue,this.transitionAbortSubject=new ue,this.configLoader=S(d1),this.environmentInjector=S(nt),this.urlSerializer=S(jd),this.rootContexts=S(Ya),this.location=S(Ht),this.inputBindingEnabled=S(Bd,{optional:!0})!==null,this.titleStrategy=S(m0),this.options=S(zd,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=S(Wd),this.createViewTransition=S(m1,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>O(void 0),this.rootComponentType=null;let n=o=>this.events.next(new Dd(o)),i=o=>this.events.next(new bd(o));this.configLoader.onLoadEndListener=i,this.configLoader.onLoadStartListener=n}complete(){this.transitions?.complete()}handleNavigationRequest(n){let i=++this.navigationId;this.transitions?.next(J(M(M({},this.transitions.value),n),{id:i}))}setupNavigations(n,i,o){return this.transitions=new Ve({id:0,currentUrlTree:i,currentRawUrl:i,extractedUrl:this.urlHandlingStrategy.extract(i),urlAfterRedirects:this.urlHandlingStrategy.extract(i),rawUrl:i,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:co,restoredState:null,currentSnapshot:o.snapshot,targetSnapshot:null,currentRouterState:o,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(je(s=>s.id!==0),A(s=>J(M({},s),{extractedUrl:this.urlHandlingStrategy.extract(s.rawUrl)})),ut(s=>{let a=!1,l=!1;return O(s).pipe(ut(c=>{if(this.navigationId>s.id)return this.cancelNavigationTransition(s,"",vt.SupersededByNewNavigation),Je;this.currentTransition=s,this.currentNavigation={id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,trigger:c.source,extras:c.extras,previousNavigation:this.lastSuccessfulNavigation?J(M({},this.lastSuccessfulNavigation),{previousNavigation:null}):null};let f=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),h=c.extras.onSameUrlNavigation??n.onSameUrlNavigation;if(!f&&h!=="reload"){let v="";return this.events.next(new _r(c.id,this.urlSerializer.serialize(c.rawUrl),v,vd.IgnoredSameUrlNavigation)),c.resolve(null),Je}if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return O(c).pipe(ut(v=>{let y=this.transitions?.getValue();return this.events.next(new po(v.id,this.urlSerializer.serialize(v.extractedUrl),v.source,v.restoredState)),y!==this.transitions?.getValue()?Je:Promise.resolve(v)}),o1(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy),Re(v=>{s.targetSnapshot=v.targetSnapshot,s.urlAfterRedirects=v.urlAfterRedirects,this.currentNavigation=J(M({},this.currentNavigation),{finalUrl:v.urlAfterRedirects});let y=new qa(v.id,this.urlSerializer.serialize(v.extractedUrl),this.urlSerializer.serialize(v.urlAfterRedirects),v.targetSnapshot);this.events.next(y)}));if(f&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:v,extractedUrl:y,source:I,restoredState:V,extras:j}=c,R=new po(v,this.urlSerializer.serialize(y),I,V);this.events.next(R);let He=i0(this.rootComponentType).snapshot;return this.currentTransition=s=J(M({},c),{targetSnapshot:He,urlAfterRedirects:y,extras:J(M({},j),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=y,O(s)}else{let v="";return this.events.next(new _r(c.id,this.urlSerializer.serialize(c.extractedUrl),v,vd.IgnoredByUrlHandlingStrategy)),c.resolve(null),Je}}),Re(c=>{let f=new yd(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(f)}),A(c=>(this.currentTransition=s=J(M({},c),{guards:bE(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),s)),kE(this.environmentInjector,c=>this.events.next(c)),Re(c=>{if(s.guardsResult=c.guardsResult,di(c.guardsResult))throw l0(this.urlSerializer,c.guardsResult);let f=new _d(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);this.events.next(f)}),je(c=>c.guardsResult?!0:(this.cancelNavigationTransition(c,"",vt.GuardRejected),!1)),dd(c=>{if(c.guards.canActivateChecks.length)return O(c).pipe(Re(f=>{let h=new wd(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(h)}),ut(f=>{let h=!1;return O(f).pipe(s1(this.paramsInheritanceStrategy,this.environmentInjector),Re({next:()=>h=!0,complete:()=>{h||this.cancelNavigationTransition(f,"",vt.NoDataFromResolver)}}))}),Re(f=>{let h=new Cd(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(h)}))}),dd(c=>{let f=h=>{let v=[];h.routeConfig?.loadComponent&&!h.routeConfig._loadedComponent&&v.push(this.configLoader.loadComponent(h.routeConfig).pipe(Re(y=>{h.component=y}),A(()=>{})));for(let y of h.children)v.push(...f(y));return v};return os(f(c.targetSnapshot.root)).pipe(In(null),ln(1))}),dd(()=>this.afterPreactivation()),ut(()=>{let{currentSnapshot:c,targetSnapshot:f}=s,h=this.createViewTransition?.(this.environmentInjector,c.root,f.root);return h?me(h).pipe(A(()=>s)):O(s)}),A(c=>{let f=mE(n.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=s=J(M({},c),{targetRouterState:f}),this.currentNavigation.targetRouterState=f,s}),Re(()=>{this.events.next(new mo)}),DE(this.rootContexts,n.routeReuseStrategy,c=>this.events.next(c),this.inputBindingEnabled),ln(1),Re({next:c=>{a=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new wn(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0)},complete:()=>{a=!0}}),Bl(this.transitionAbortSubject.pipe(Re(c=>{throw c}))),Mn(()=>{!a&&!l&&this.cancelNavigationTransition(s,"",vt.SupersededByNewNavigation),this.currentTransition?.id===s.id&&(this.currentNavigation=null,this.currentTransition=null)}),qe(c=>{if(l=!0,u0(c))this.events.next(new $n(s.id,this.urlSerializer.serialize(s.extractedUrl),c.message,c.cancellationCode)),yE(c)?this.events.next(new go(c.url)):s.resolve(!1);else{this.events.next(new ho(s.id,this.urlSerializer.serialize(s.extractedUrl),c,s.targetSnapshot??void 0));try{s.resolve(n.errorHandler(c))}catch(f){this.options.resolveNavigationPromiseOnError?s.resolve(!1):s.reject(f)}}return Je}))}))}cancelNavigationTransition(n,i,o){let s=new $n(n.id,this.urlSerializer.serialize(n.extractedUrl),i,o);this.events.next(s),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function v1(t){return t!==co}var y1=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(_1),providedIn:"root"});let t=e;return t})(),Vd=class{shouldDetach(e){return!1}store(e,r){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,r){return e.routeConfig===r.routeConfig}},_1=(()=>{let e=class e extends Vd{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),v0=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:()=>S(w1),providedIn:"root"});let t=e;return t})(),w1=(()=>{let e=class e extends v0{constructor(){super(...arguments),this.location=S(Ht),this.urlSerializer=S(jd),this.options=S(zd,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=S(Wd),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new jn,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=i0(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(i=>{i.type==="popstate"&&n(i.url,i.state)})}handleRouterEvent(n,i){if(n instanceof po)this.stateMemento=this.createStateMemento();else if(n instanceof _r)this.rawUrlTree=i.initialUrl;else if(n instanceof qa){if(this.urlUpdateStrategy==="eager"&&!i.extras.skipLocationChange){let o=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl);this.setBrowserUrl(o,i)}}else n instanceof mo?(this.currentUrlTree=i.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl),this.routerState=i.targetRouterState,this.urlUpdateStrategy==="deferred"&&(i.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,i))):n instanceof $n&&(n.code===vt.GuardRejected||n.code===vt.NoDataFromResolver)?this.restoreHistory(i):n instanceof ho?this.restoreHistory(i,!0):n instanceof wn&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,i){let o=this.urlSerializer.serialize(n);if(this.location.isCurrentPathEqualTo(o)||i.extras.replaceUrl){let s=this.browserPageId,a=M(M({},i.extras.state),this.generateNgRouterState(i.id,s));this.location.replaceState(o,"",a)}else{let s=M(M({},i.extras.state),this.generateNgRouterState(i.id,this.browserPageId+1));this.location.go(o,"",s)}}restoreHistory(n,i=!1){if(this.canceledNavigationResolution==="computed"){let o=this.browserPageId,s=this.currentPageId-o;s!==0?this.location.historyGo(s):this.currentUrlTree===n.finalUrl&&s===0&&(this.resetState(n),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(i&&this.resetState(n),this.resetUrlToCurrentUrlTree())}resetState(n){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,i){return this.canceledNavigationResolution==="computed"?{navigationId:n,\u0275routerPageId:i}:{navigationId:n}}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),ao=function(t){return t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING",t}(ao||{});function C1(t,e){t.events.pipe(je(r=>r instanceof wn||r instanceof $n||r instanceof ho||r instanceof _r),A(r=>r instanceof wn||r instanceof _r?ao.COMPLETE:(r instanceof $n?r.code===vt.Redirect||r.code===vt.SupersededByNewNavigation:!1)?ao.REDIRECTING:ao.FAILED),je(r=>r!==ao.REDIRECTING),ln(1)).subscribe(()=>{e()})}function D1(t){throw t}var b1={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},x1={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},hi=(()=>{let e=class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=S(fa),this.stateManager=S(v0),this.options=S(zd,{optional:!0})||{},this.pendingTasks=S(ur),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=S(g1),this.urlSerializer=S(jd),this.location=S(Ht),this.urlHandlingStrategy=S(Wd),this._events=new ue,this.errorHandler=this.options.errorHandler||D1,this.navigated=!1,this.routeReuseStrategy=S(y1),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=S(Gd,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!S(Bd,{optional:!0}),this.eventsSubscription=new ve,this.isNgZoneEnabled=S(xe)instanceof xe&&xe.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:n=>{this.console.warn(n)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let n=this.navigationTransitions.events.subscribe(i=>{try{let o=this.navigationTransitions.currentTransition,s=this.navigationTransitions.currentNavigation;if(o!==null&&s!==null){if(this.stateManager.handleRouterEvent(i,s),i instanceof $n&&i.code!==vt.Redirect&&i.code!==vt.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof wn)this.navigated=!0;else if(i instanceof go){let a=this.urlHandlingStrategy.merge(i.url,o.currentRawUrl),l={info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:this.urlUpdateStrategy==="eager"||v1(o.source)};this.scheduleNavigation(a,co,null,l,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}I1(i)&&this._events.next(i)}catch(o){this.navigationTransitions.transitionAbortSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),co,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,i)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(n,"popstate",i)},0)})}navigateToSyncWithBrowser(n,i,o){let s={replaceUrl:!0},a=o?.navigationId?o:null;if(o){let c=M({},o);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let l=this.parseUrl(n);this.scheduleNavigation(l,i,a,s)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(Hd),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,i={}){let{relativeTo:o,queryParams:s,fragment:a,queryParamsHandling:l,preserveFragment:c}=i,f=c?this.currentUrlTree.fragment:a,h=null;switch(l){case"merge":h=M(M({},this.currentUrlTree.queryParams),s);break;case"preserve":h=this.currentUrlTree.queryParams;break;default:h=s||null}h!==null&&(h=this.removeEmptyProps(h));let v;try{let y=o?o.snapshot:this.routerState.snapshot.root;v=e0(y)}catch{(typeof n[0]!="string"||!n[0].startsWith("/"))&&(n=[]),v=this.currentUrlTree.root}return t0(v,n,h,f??null)}navigateByUrl(n,i={skipLocationChange:!1}){let o=di(n)?n:this.parseUrl(n),s=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(s,co,null,i)}navigate(n,i={skipLocationChange:!1}){return E1(n),this.navigateByUrl(this.createUrlTree(n,i),i)}serializeUrl(n){return this.urlSerializer.serialize(n)}parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.urlSerializer.parse("/")}}isActive(n,i){let o;if(i===!0?o=M({},b1):i===!1?o=M({},x1):o=i,di(n))return jg(this.currentUrlTree,n,o);let s=this.parseUrl(n);return jg(this.currentUrlTree,s,o)}removeEmptyProps(n){return Object.entries(n).reduce((i,[o,s])=>(s!=null&&(i[o]=s),i),{})}scheduleNavigation(n,i,o,s,a){if(this.disposed)return Promise.resolve(!1);let l,c,f;a?(l=a.resolve,c=a.reject,f=a.promise):f=new Promise((v,y)=>{l=v,c=y});let h=this.pendingTasks.add();return C1(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(h))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:s,resolve:l,reject:c,promise:f,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),f.catch(v=>Promise.reject(v))}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function E1(t){for(let e=0;e{let e=class e{constructor(n,i,o,s,a,l){this.router=n,this.route=i,this.tabIndexAttribute=o,this.renderer=s,this.el=a,this.locationStrategy=l,this.href=null,this.commands=null,this.onChanges=new ue,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;let c=a.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area",this.isAnchorElement?this.subscription=n.events.subscribe(f=>{f instanceof wn&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",n)}ngOnChanges(n){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(n){n!=null?(this.commands=Array.isArray(n)?n:[n],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(n,i,o,s,a){let l=this.urlTree;if(l===null||this.isAnchorElement&&(n!==0||i||o||s||a||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(l,c),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let n=this.urlTree;this.href=n!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n)):null;let i=this.href===null?null:Zh(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",i)}applyAttributeValue(n,i){let o=this.renderer,s=this.el.nativeElement;i!==null?o.setAttribute(s,n,i):o.removeAttribute(s,n)}get urlTree(){return this.commands===null?null:this.router.createUrlTree(this.commands,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}};e.\u0275fac=function(i){return new(i||e)(b(hi),b(yt),hu("tabindex"),b(jt),b(Fe),b(ni))},e.\u0275dir=re({type:e,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(i,o){i&1&&E("click",function(a){return o.onClick(a.button,a.ctrlKey,a.shiftKey,a.altKey,a.metaKey)}),i&2&&Ki("target",o.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[de.HasDecoratorInputTransform,"preserveFragment","preserveFragment",hr],skipLocationChange:[de.HasDecoratorInputTransform,"skipLocationChange","skipLocationChange",hr],replaceUrl:[de.HasDecoratorInputTransform,"replaceUrl","replaceUrl",hr],routerLink:"routerLink"},standalone:!0,features:[Ru,it]});let t=e;return t})(),Ja=(()=>{let e=class e{get isActive(){return this._isActive}constructor(n,i,o,s,a){this.router=n,this.element=i,this.renderer=o,this.cdr=s,this.link=a,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new ye,this.routerEventsSubscription=n.events.subscribe(l=>{l instanceof wn&&this.update()})}ngAfterContentInit(){O(this.links.changes,O(null)).pipe(Pr()).subscribe(n=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let n=[...this.links.toArray(),this.link].filter(i=>!!i).map(i=>i.onChanges);this.linkInputChangesSubscription=me(n).pipe(Pr()).subscribe(i=>{this._isActive!==this.isLinkActive(this.router)(i)&&this.update()})}set routerLinkActive(n){let i=Array.isArray(n)?n:n.split(" ");this.classes=i.filter(o=>!!o)}ngOnChanges(n){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let n=this.hasActiveLinks();this.classes.forEach(i=>{n?this.renderer.addClass(this.element.nativeElement,i):this.renderer.removeClass(this.element.nativeElement,i)}),n&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==n&&(this._isActive=n,this.cdr.markForCheck(),this.isActiveChange.emit(n))})}isLinkActive(n){let i=M1(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return o=>{let s=o.urlTree;return s?n.isActive(s,i):!1}}hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link&&n(this.link)||this.links.some(n)}};e.\u0275fac=function(i){return new(i||e)(b(hi),b(Fe),b(jt),b(Xt),b(lt,8))},e.\u0275dir=re({type:e,selectors:[["","routerLinkActive",""]],contentQueries:function(i,o,s){if(i&1&&qm(s,lt,5),i&2){let a;bt(a=xt())&&(o.links=a)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[it]});let t=e;return t})();function M1(t){return!!t.paths}var S1=new F("");function y0(t,...e){return Yr([{provide:Gd,multi:!0,useValue:t},[],{provide:yt,useFactory:T1,deps:[hi]},{provide:pa,multi:!0,useFactory:A1},e.map(r=>r.\u0275providers)])}function T1(t){return t.routerState.root}function A1(){let t=S(Jr);return e=>{let r=t.get(ei);if(e!==r.components[0])return;let n=t.get(hi),i=t.get(O1);t.get(N1)===1&&n.initialNavigation(),t.get(k1,null,K.Optional)?.setUpPreloading(),t.get(S1,null,K.Optional)?.init(),n.resetRootComponentType(r.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var O1=new F("",{factory:()=>new ue}),N1=new F("",{providedIn:"root",factory:()=>1});var k1=new F("");function P1(t){return typeof t<"u"&&t!==null}function R1(t){return t!=null&&`${t}`!="false"}function F1(t){let e=new Date(t);if(!Number.isNaN(e.valueOf()))return e;let r=String(t).match(/\d+/g);if(r===null||r.length<=2)return e;{let[n,i,...o]=r.map(s=>parseInt(s,10));return new Date(Date.UTC(n,i-1,...o))}}var bo=60,xo=bo*60,mi=xo*24,_0=mi*7,w0=mi*30,C0=mi*365,L1=(()=>{let e=class e{constructor(){this.changes=new ue}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),V1=function(t){let e=Date.now(),r=Math.round(Math.abs(e-t)/1e3),n=t{let e=class e extends gi{format(n){let{suffix:i,value:o,unit:s}=V1(n);return this.parse(o,s,i)}parse(n,i,o){return n!==1&&(i+="s"),n+" "+i+" "+o}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();var vi=class{},b0=(()=>{let e=class e extends vi{tick(n){return O(0).pipe(Ll(()=>{let i=Date.now(),o=Math.round(Math.abs(i-n)/1e3),s=o{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})();var el=(()=>{let e=class e{constructor(n,i,o,s){this.clock=s,this.live=!0,this.stateChanges=new ue,n&&(this.intlSubscription=n.changes.subscribe(()=>this.stateChanges.next())),this.stateChanges.subscribe(()=>{this.value=o.format(this.date),i.markForCheck()})}transform(n,...i){let o=F1(n).valueOf(),s;if(s=P1(i[0])?R1(i[0]):this.live,this.date===o&&this.live===s)return this.value;if(this.date=o,this.live=s,this.date)this.clockSubscription&&(this.clockSubscription.unsubscribe(),this.clockSubscription=void 0),this.clockSubscription=this.clock.tick(this.date).pipe(je(()=>this.live,this)).subscribe(()=>this.stateChanges.next()),this.stateChanges.next();else throw new SyntaxError(`Wrong parameter in TimeagoPipe. Expected a valid date, received: ${n}`);return this.value}ngOnDestroy(){this.intlSubscription&&(this.intlSubscription.unsubscribe(),this.intlSubscription=void 0),this.clockSubscription&&(this.clockSubscription.unsubscribe(),this.clockSubscription=void 0),this.stateChanges.complete()}};e.\u0275fac=function(i){return new(i||e)(b(L1,24),b(Xt,16),b(gi,16),b(vi,16))},e.\u0275pipe=kn({name:"timeago",type:e,pure:!1}),e.\u0275prov=T({token:e,factory:e.\u0275fac});let t=e;return t})(),yi=(()=>{let e=class e{static forRoot(n={}){return{ngModule:e,providers:[n.clock||{provide:vi,useClass:b0},n.intl||[],n.formatter||{provide:gi,useClass:D0}]}}static forChild(n={}){return{ngModule:e,providers:[n.clock||{provide:vi,useClass:b0},n.intl||[],n.formatter||{provide:gi,useClass:D0}]}}};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({});let t=e;return t})();var O0=(()=>{let e=class e{constructor(n,i){this._renderer=n,this._elementRef=i,this.onChange=o=>{},this.onTouched=()=>{}}setProperty(n,i){this._renderer.setProperty(this._elementRef.nativeElement,n,i)}registerOnTouched(n){this.onTouched=n}registerOnChange(n){this.onChange=n}setDisabledState(n){this.setProperty("disabled",n)}};e.\u0275fac=function(i){return new(i||e)(b(jt),b(Fe))},e.\u0275dir=re({type:e});let t=e;return t})(),Qd=(()=>{let e=class e extends O0{};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=re({type:e,features:[Ue]});let t=e;return t})(),Ci=new F(""),j1={provide:Ci,useExisting:rt(()=>Yd),multi:!0},Yd=(()=>{let e=class e extends Qd{writeValue(n){this.setProperty("checked",n)}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=re({type:e,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(i,o){i&1&&E("change",function(a){return o.onChange(a.target.checked)})("blur",function(){return o.onTouched()})},features:[st([j1]),Ue]});let t=e;return t})(),$1={provide:Ci,useExisting:rt(()=>Mt),multi:!0};function U1(){let t=_n()?_n().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}var B1=new F(""),Mt=(()=>{let e=class e extends O0{constructor(n,i,o){super(n,i),this._compositionMode=o,this._composing=!1,this._compositionMode==null&&(this._compositionMode=!U1())}writeValue(n){let i=n??"";this.setProperty("value",i)}_handleInput(n){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(n)}_compositionStart(){this._composing=!0}_compositionEnd(n){this._composing=!1,this._compositionMode&&this.onChange(n)}};e.\u0275fac=function(i){return new(i||e)(b(jt),b(Fe),b(B1,8))},e.\u0275dir=re({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,o){i&1&&E("input",function(a){return o._handleInput(a.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(a){return o._compositionEnd(a.target.value)})},features:[st([$1]),Ue]});let t=e;return t})();function Bn(t){return t==null||(typeof t=="string"||Array.isArray(t))&&t.length===0}function N0(t){return t!=null&&typeof t.length=="number"}var Hn=new F(""),Cr=new F(""),H1=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,_e=class{static min(e){return q1(e)}static max(e){return z1(e)}static required(e){return G1(e)}static requiredTrue(e){return W1(e)}static email(e){return Z1(e)}static minLength(e){return Q1(e)}static maxLength(e){return k0(e)}static pattern(e){return Y1(e)}static nullValidator(e){return nl(e)}static compose(e){return j0(e)}static composeAsync(e){return $0(e)}};function q1(t){return e=>{if(Bn(e.value)||Bn(t))return null;let r=parseFloat(e.value);return!isNaN(r)&&r{if(Bn(e.value)||Bn(t))return null;let r=parseFloat(e.value);return!isNaN(r)&&r>t?{max:{max:t,actual:e.value}}:null}}function G1(t){return Bn(t.value)?{required:!0}:null}function W1(t){return t.value===!0?null:{required:!0}}function Z1(t){return Bn(t.value)||H1.test(t.value)?null:{email:!0}}function Q1(t){return e=>Bn(e.value)||!N0(e.value)?null:e.value.lengthN0(e.value)&&e.value.length>t?{maxlength:{requiredLength:t,actualLength:e.value.length}}:null}function Y1(t){if(!t)return nl;let e,r;return typeof t=="string"?(r="",t.charAt(0)!=="^"&&(r+="^"),r+=t,t.charAt(t.length-1)!=="$"&&(r+="$"),e=new RegExp(r)):(r=t.toString(),e=t),n=>{if(Bn(n.value))return null;let i=n.value;return e.test(i)?null:{pattern:{requiredPattern:r,actualValue:i}}}}function nl(t){return null}function P0(t){return t!=null}function R0(t){return pr(t)?me(t):t}function F0(t){let e={};return t.forEach(r=>{e=r!=null?M(M({},e),r):e}),Object.keys(e).length===0?null:e}function L0(t,e){return e.map(r=>r(t))}function K1(t){return!t.validate}function V0(t){return t.map(e=>K1(e)?e:r=>e.validate(r))}function j0(t){if(!t)return null;let e=t.filter(P0);return e.length==0?null:function(r){return F0(L0(r,e))}}function Kd(t){return t!=null?j0(V0(t)):null}function $0(t){if(!t)return null;let e=t.filter(P0);return e.length==0?null:function(r){let n=L0(r,e).map(R0);return Nl(n).pipe(A(F0))}}function Jd(t){return t!=null?$0(V0(t)):null}function E0(t,e){return t===null?[e]:Array.isArray(t)?[...t,e]:[t,e]}function U0(t){return t._rawValidators}function B0(t){return t._rawAsyncValidators}function Zd(t){return t?Array.isArray(t)?t:[t]:[]}function rl(t,e){return Array.isArray(t)?t.includes(e):t===e}function I0(t,e){let r=Zd(e);return Zd(t).forEach(i=>{rl(r,i)||r.push(i)}),r}function M0(t,e){return Zd(e).filter(r=>!rl(t,r))}var il=class{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Kd(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Jd(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control&&this.control.reset(e)}hasError(e,r){return this.control?this.control.hasError(e,r):!1}getError(e,r){return this.control?this.control.getError(e,r):null}},Ke=class extends il{get formDirective(){return null}get path(){return null}},Cn=class extends il{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}},ol=class{constructor(e){this._cd=e}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}},J1={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},TF=J(M({},J1),{"[class.ng-submitted]":"isSubmitted"}),rn=(()=>{let e=class e extends ol{constructor(n){super(n)}};e.\u0275fac=function(i){return new(i||e)(b(Cn,2))},e.\u0275dir=re({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,o){i&2&&X("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},features:[Ue]});let t=e;return t})(),Di=(()=>{let e=class e extends ol{constructor(n){super(n)}};e.\u0275fac=function(i){return new(i||e)(b(Ke,10))},e.\u0275dir=re({type:e,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,o){i&2&&X("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)("ng-submitted",o.isSubmitted)},features:[Ue]});let t=e;return t})();var Eo="VALID",tl="INVALID",_i="PENDING",Io="DISABLED";function Xd(t){return(cl(t)?t.validators:t)||null}function X1(t){return Array.isArray(t)?Kd(t):t||null}function ef(t,e){return(cl(e)?e.asyncValidators:t)||null}function eI(t){return Array.isArray(t)?Jd(t):t||null}function cl(t){return t!=null&&!Array.isArray(t)&&typeof t=="object"}function H0(t,e,r){let n=t.controls;if(!(e?Object.keys(n):n).length)throw new N(1e3,"");if(!n[r])throw new N(1001,"")}function q0(t,e,r){t._forEachChild((n,i)=>{if(r[i]===void 0)throw new N(1002,"")})}var So=class{constructor(e,r){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(e),this._assignAsyncValidators(r)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get valid(){return this.status===Eo}get invalid(){return this.status===tl}get pending(){return this.status==_i}get disabled(){return this.status===Io}get enabled(){return this.status!==Io}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(I0(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(I0(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(M0(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(M0(e,this._rawAsyncValidators))}hasValidator(e){return rl(this._rawValidators,e)}hasAsyncValidator(e){return rl(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){this.touched=!0,this._parent&&!e.onlySelf&&this._parent.markAsTouched(e)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(e=>e.markAllAsTouched())}markAsUntouched(e={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}markAsDirty(e={}){this.pristine=!1,this._parent&&!e.onlySelf&&this._parent.markAsDirty(e)}markAsPristine(e={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(r=>{r.markAsPristine({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)}markAsPending(e={}){this.status=_i,e.emitEvent!==!1&&this.statusChanges.emit(this.status),this._parent&&!e.onlySelf&&this._parent.markAsPending(e)}disable(e={}){let r=this._parentMarkedDirty(e.onlySelf);this.status=Io,this.errors=null,this._forEachChild(n=>{n.disable(J(M({},e),{onlySelf:!0}))}),this._updateValue(),e.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(J(M({},e),{skipPristineCheck:r})),this._onDisabledChange.forEach(n=>n(!0))}enable(e={}){let r=this._parentMarkedDirty(e.onlySelf);this.status=Eo,this._forEachChild(n=>{n.enable(J(M({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(J(M({},e),{skipPristineCheck:r})),this._onDisabledChange.forEach(n=>n(!1))}_updateAncestors(e){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Eo||this.status===_i)&&this._runAsyncValidator(e.emitEvent)),e.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(e)}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(r=>r._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Io:Eo}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e){if(this.asyncValidator){this.status=_i,this._hasOwnPendingAsyncValidator=!0;let r=R0(this.asyncValidator(this));this._asyncValidationSubscription=r.subscribe(n=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(n,{emitEvent:e})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(e,r={}){this.errors=e,this._updateControlsErrors(r.emitEvent!==!1)}get(e){let r=e;return r==null||(Array.isArray(r)||(r=r.split(".")),r.length===0)?null:r.reduce((n,i)=>n&&n._find(i),this)}getError(e,r){let n=r?this.get(r):this;return n&&n.errors?n.errors[e]:null}hasError(e,r){return!!this.getError(e,r)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(e)}_initObservables(){this.valueChanges=new ye,this.statusChanges=new ye}_calculateStatus(){return this._allControlsDisabled()?Io:this.errors?tl:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(_i)?_i:this._anyControlsHaveStatus(tl)?tl:Eo}_anyControlsHaveStatus(e){return this._anyControls(r=>r.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e={}){this.pristine=!this._anyControlsDirty(),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)}_updateTouched(e={}){this.touched=this._anyControlsTouched(),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){cl(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){let r=this._parent&&this._parent.dirty;return!e&&!!r&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=X1(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=eI(this._rawAsyncValidators)}},nn=class extends So{constructor(e,r,n){super(Xd(r),ef(n,r)),this.controls=e,this._initObservables(),this._setUpdateStrategy(r),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(e,r){return this.controls[e]?this.controls[e]:(this.controls[e]=r,r.setParent(this),r._registerOnCollectionChange(this._onCollectionChange),r)}addControl(e,r,n={}){this.registerControl(e,r),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}removeControl(e,r={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}setControl(e,r,n={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],r&&this.registerControl(e,r),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}contains(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled}setValue(e,r={}){q0(this,!0,e),Object.keys(e).forEach(n=>{H0(this,!0,n),this.controls[n].setValue(e[n],{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r)}patchValue(e,r={}){e!=null&&(Object.keys(e).forEach(n=>{let i=this.controls[n];i&&i.patchValue(e[n],{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r))}reset(e={},r={}){this._forEachChild((n,i)=>{n.reset(e?e[i]:null,{onlySelf:!0,emitEvent:r.emitEvent})}),this._updatePristine(r),this._updateTouched(r),this.updateValueAndValidity(r)}getRawValue(){return this._reduceChildren({},(e,r,n)=>(e[n]=r.getRawValue(),e))}_syncPendingControls(){let e=this._reduceChildren(!1,(r,n)=>n._syncPendingControls()?!0:r);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){Object.keys(this.controls).forEach(r=>{let n=this.controls[r];n&&e(n,r)})}_setUpControls(){this._forEachChild(e=>{e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(e){for(let[r,n]of Object.entries(this.controls))if(this.contains(r)&&e(n))return!0;return!1}_reduceValue(){let e={};return this._reduceChildren(e,(r,n,i)=>((n.enabled||this.disabled)&&(r[i]=n.value),r))}_reduceChildren(e,r){let n=e;return this._forEachChild((i,o)=>{n=r(n,i,o)}),n}_allControlsDisabled(){for(let e of Object.keys(this.controls))if(this.controls[e].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(e){return this.controls.hasOwnProperty(e)?this.controls[e]:null}};var bi=new F("CallSetDisabledState",{providedIn:"root",factory:()=>ul}),ul="always";function dl(t,e){return[...e.path,t]}function To(t,e,r=ul){tf(t,e),e.valueAccessor.writeValue(t.value),(t.disabled||r==="always")&&e.valueAccessor.setDisabledState?.(t.disabled),nI(t,e),iI(t,e),rI(t,e),tI(t,e)}function sl(t,e,r=!0){let n=()=>{};e.valueAccessor&&(e.valueAccessor.registerOnChange(n),e.valueAccessor.registerOnTouched(n)),ll(t,e),t&&(e._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function al(t,e){t.forEach(r=>{r.registerOnValidatorChange&&r.registerOnValidatorChange(e)})}function tI(t,e){if(e.valueAccessor.setDisabledState){let r=n=>{e.valueAccessor.setDisabledState(n)};t.registerOnDisabledChange(r),e._registerOnDestroy(()=>{t._unregisterOnDisabledChange(r)})}}function tf(t,e){let r=U0(t);e.validator!==null?t.setValidators(E0(r,e.validator)):typeof r=="function"&&t.setValidators([r]);let n=B0(t);e.asyncValidator!==null?t.setAsyncValidators(E0(n,e.asyncValidator)):typeof n=="function"&&t.setAsyncValidators([n]);let i=()=>t.updateValueAndValidity();al(e._rawValidators,i),al(e._rawAsyncValidators,i)}function ll(t,e){let r=!1;if(t!==null){if(e.validator!==null){let i=U0(t);if(Array.isArray(i)&&i.length>0){let o=i.filter(s=>s!==e.validator);o.length!==i.length&&(r=!0,t.setValidators(o))}}if(e.asyncValidator!==null){let i=B0(t);if(Array.isArray(i)&&i.length>0){let o=i.filter(s=>s!==e.asyncValidator);o.length!==i.length&&(r=!0,t.setAsyncValidators(o))}}}let n=()=>{};return al(e._rawValidators,n),al(e._rawAsyncValidators,n),r}function nI(t,e){e.valueAccessor.registerOnChange(r=>{t._pendingValue=r,t._pendingChange=!0,t._pendingDirty=!0,t.updateOn==="change"&&z0(t,e)})}function rI(t,e){e.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,t.updateOn==="blur"&&t._pendingChange&&z0(t,e),t.updateOn!=="submit"&&t.markAsTouched()})}function z0(t,e){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function iI(t,e){let r=(n,i)=>{e.valueAccessor.writeValue(n),i&&e.viewToModelUpdate(n)};t.registerOnChange(r),e._registerOnDestroy(()=>{t._unregisterOnChange(r)})}function G0(t,e){t==null,tf(t,e)}function oI(t,e){return ll(t,e)}function nf(t,e){if(!t.hasOwnProperty("model"))return!1;let r=t.model;return r.isFirstChange()?!0:!Object.is(e,r.currentValue)}function sI(t){return Object.getPrototypeOf(t.constructor)===Qd}function W0(t,e){t._syncPendingControls(),e.forEach(r=>{let n=r.control;n.updateOn==="submit"&&n._pendingChange&&(r.viewToModelUpdate(n._pendingValue),n._pendingChange=!1)})}function rf(t,e){if(!e)return null;Array.isArray(e);let r,n,i;return e.forEach(o=>{o.constructor===Mt?r=o:sI(o)?n=o:i=o}),i||n||r||null}function aI(t,e){let r=t.indexOf(e);r>-1&&t.splice(r,1)}var lI={provide:Ke,useExisting:rt(()=>of)},Mo=Promise.resolve(),of=(()=>{let e=class e extends Ke{constructor(n,i,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._directives=new Set,this.ngSubmit=new ye,this.form=new nn({},Kd(n),Jd(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(n){Mo.then(()=>{let i=this._findContainer(n.path);n.control=i.registerControl(n.name,n.control),To(n.control,n,this.callSetDisabledState),n.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(n)})}getControl(n){return this.form.get(n.path)}removeControl(n){Mo.then(()=>{let i=this._findContainer(n.path);i&&i.removeControl(n.name),this._directives.delete(n)})}addFormGroup(n){Mo.then(()=>{let i=this._findContainer(n.path),o=new nn({});G0(o,n),i.registerControl(n.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(n){Mo.then(()=>{let i=this._findContainer(n.path);i&&i.removeControl(n.name)})}getFormGroup(n){return this.form.get(n.path)}updateModel(n,i){Mo.then(()=>{this.form.get(n.path).setValue(i)})}setValue(n){this.control.setValue(n)}onSubmit(n){return this.submitted=!0,W0(this.form,this._directives),this.ngSubmit.emit(n),n?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(n=void 0){this.form.reset(n),this.submitted=!1}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(n){return n.pop(),n.length?this.form.get(n):this.form}};e.\u0275fac=function(i){return new(i||e)(b(Hn,10),b(Cr,10),b(bi,8))},e.\u0275dir=re({type:e,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,o){i&1&&E("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{options:[de.None,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[st([lI]),Ue]});let t=e;return t})();function S0(t,e){let r=t.indexOf(e);r>-1&&t.splice(r,1)}function T0(t){return typeof t=="object"&&t!==null&&Object.keys(t).length===2&&"value"in t&&"disabled"in t}var be=class extends So{constructor(e=null,r,n){super(Xd(r),ef(n,r)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(e),this._setUpdateStrategy(r),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),cl(r)&&(r.nonNullable||r.initialValueIsDefault)&&(T0(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,r={}){this.value=this._pendingValue=e,this._onChange.length&&r.emitModelToViewChange!==!1&&this._onChange.forEach(n=>n(this.value,r.emitViewToModelChange!==!1)),this.updateValueAndValidity(r)}patchValue(e,r={}){this.setValue(e,r)}reset(e=this.defaultValue,r={}){this._applyFormState(e),this.markAsPristine(r),this.markAsUntouched(r),this.setValue(this.value,r),this._pendingChange=!1}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){S0(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){S0(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){T0(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var cI=t=>t instanceof be,uI=(()=>{let e=class e extends Ke{ngOnInit(){this._checkParentType(),this.formDirective.addFormGroup(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormGroup(this)}get control(){return this.formDirective.getFormGroup(this)}get path(){return dl(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=re({type:e,features:[Ue]});let t=e;return t})();var dI={provide:Cn,useExisting:rt(()=>Dr)},A0=Promise.resolve(),Dr=(()=>{let e=class e extends Cn{constructor(n,i,o,s,a,l){super(),this._changeDetectorRef=a,this.callSetDisabledState=l,this.control=new be,this._registered=!1,this.name="",this.update=new ye,this._parent=n,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=rf(this,s)}ngOnChanges(n){if(this._checkForErrors(),!this._registered||"name"in n){if(this._registered&&(this._checkName(),this.formDirective)){let i=n.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in n&&this._updateDisabled(n),nf(n,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){To(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(n){A0.then(()=>{this.control.setValue(n,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(n){let i=n.isDisabled.currentValue,o=i!==0&&hr(i);A0.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(n){return this._parent?dl(n,this._parent):[n]}};e.\u0275fac=function(i){return new(i||e)(b(Ke,9),b(Hn,10),b(Cr,10),b(Ci,10),b(Xt,8),b(bi,8))},e.\u0275dir=re({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[de.None,"disabled","isDisabled"],model:[de.None,"ngModel","model"],options:[de.None,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[st([dI]),Ue,it]});let t=e;return t})(),xi=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275dir=re({type:e,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]});let t=e;return t})(),fI={provide:Ci,useExisting:rt(()=>sf),multi:!0},sf=(()=>{let e=class e extends Qd{writeValue(n){let i=n??"";this.setProperty("value",i)}registerOnChange(n){this.onChange=i=>{n(i==""?null:parseFloat(i))}}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=re({type:e,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,o){i&1&&E("input",function(a){return o.onChange(a.target.value)})("blur",function(){return o.onTouched()})},features:[st([fI]),Ue]});let t=e;return t})();var af=new F(""),pI={provide:Cn,useExisting:rt(()=>lf)},lf=(()=>{let e=class e extends Cn{set isDisabled(n){}constructor(n,i,o,s,a){super(),this._ngModelWarningConfig=s,this.callSetDisabledState=a,this.update=new ye,this._ngModelWarningSent=!1,this._setValidators(n),this._setAsyncValidators(i),this.valueAccessor=rf(this,o)}ngOnChanges(n){if(this._isControlChanged(n)){let i=n.form.previousValue;i&&sl(i,this,!1),To(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}nf(n,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&sl(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_isControlChanged(n){return n.hasOwnProperty("form")}};e._ngModelWarningSentOnce=!1,e.\u0275fac=function(i){return new(i||e)(b(Hn,10),b(Cr,10),b(Ci,10),b(af,8),b(bi,8))},e.\u0275dir=re({type:e,selectors:[["","formControl",""]],inputs:{form:[de.None,"formControl","form"],isDisabled:[de.None,"disabled","isDisabled"],model:[de.None,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[st([pI]),Ue,it]});let t=e;return t})(),hI={provide:Ke,useExisting:rt(()=>Ei)},Ei=(()=>{let e=class e extends Ke{constructor(n,i,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new ye,this._setValidators(n),this._setAsyncValidators(i)}ngOnChanges(n){this._checkFormPresent(),n.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(ll(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(n){let i=this.form.get(n.path);return To(i,n,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(n),i}getControl(n){return this.form.get(n.path)}removeControl(n){sl(n.control||null,n,!1),aI(this.directives,n)}addFormGroup(n){this._setUpFormContainer(n)}removeFormGroup(n){this._cleanUpFormContainer(n)}getFormGroup(n){return this.form.get(n.path)}addFormArray(n){this._setUpFormContainer(n)}removeFormArray(n){this._cleanUpFormContainer(n)}getFormArray(n){return this.form.get(n.path)}updateModel(n,i){this.form.get(n.path).setValue(i)}onSubmit(n){return this.submitted=!0,W0(this.form,this.directives),this.ngSubmit.emit(n),n?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(n=void 0){this.form.reset(n),this.submitted=!1}_updateDomValue(){this.directives.forEach(n=>{let i=n.control,o=this.form.get(n.path);i!==o&&(sl(i||null,n),cI(o)&&(To(o,n,this.callSetDisabledState),n.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(n){let i=this.form.get(n.path);G0(i,n),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(n){if(this.form){let i=this.form.get(n.path);i&&oI(i,n)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){tf(this.form,this),this._oldForm&&ll(this._oldForm,this)}_checkFormPresent(){this.form}};e.\u0275fac=function(i){return new(i||e)(b(Hn,10),b(Cr,10),b(bi,8))},e.\u0275dir=re({type:e,selectors:[["","formGroup",""]],hostBindings:function(i,o){i&1&&E("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{form:[de.None,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[st([hI]),Ue,it]});let t=e;return t})(),mI={provide:Ke,useExisting:rt(()=>Ii)},Ii=(()=>{let e=class e extends uI{constructor(n,i,o){super(),this.name=null,this._parent=n,this._setValidators(i),this._setAsyncValidators(o)}_checkParentType(){Z0(this._parent)}};e.\u0275fac=function(i){return new(i||e)(b(Ke,13),b(Hn,10),b(Cr,10))},e.\u0275dir=re({type:e,selectors:[["","formGroupName",""]],inputs:{name:[de.None,"formGroupName","name"]},features:[st([mI]),Ue]});let t=e;return t})(),gI={provide:Ke,useExisting:rt(()=>Mi)},Mi=(()=>{let e=class e extends Ke{constructor(n,i,o){super(),this.name=null,this._parent=n,this._setValidators(i),this._setAsyncValidators(o)}ngOnInit(){this._checkParentType(),this.formDirective.addFormArray(this)}ngOnDestroy(){this.formDirective&&this.formDirective.removeFormArray(this)}get control(){return this.formDirective.getFormArray(this)}get formDirective(){return this._parent?this._parent.formDirective:null}get path(){return dl(this.name==null?this.name:this.name.toString(),this._parent)}_checkParentType(){Z0(this._parent)}};e.\u0275fac=function(i){return new(i||e)(b(Ke,13),b(Hn,10),b(Cr,10))},e.\u0275dir=re({type:e,selectors:[["","formArrayName",""]],inputs:{name:[de.None,"formArrayName","name"]},features:[st([gI]),Ue]});let t=e;return t})();function Z0(t){return!(t instanceof Ii)&&!(t instanceof Ei)&&!(t instanceof Mi)}var vI={provide:Cn,useExisting:rt(()=>Ao)},Ao=(()=>{let e=class e extends Cn{set isDisabled(n){}constructor(n,i,o,s,a){super(),this._ngModelWarningConfig=a,this._added=!1,this.name=null,this.update=new ye,this._ngModelWarningSent=!1,this._parent=n,this._setValidators(i),this._setAsyncValidators(o),this.valueAccessor=rf(this,s)}ngOnChanges(n){this._added||this._setUpControl(),nf(n,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}get path(){return dl(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this._added=!0}};e._ngModelWarningSentOnce=!1,e.\u0275fac=function(i){return new(i||e)(b(Ke,13),b(Hn,10),b(Cr,10),b(Ci,10),b(af,8))},e.\u0275dir=re({type:e,selectors:[["","formControlName",""]],inputs:{name:[de.None,"formControlName","name"],isDisabled:[de.None,"disabled","isDisabled"],model:[de.None,"ngModel","model"]},outputs:{update:"ngModelChange"},features:[st([vI]),Ue,it]});let t=e;return t})();function yI(t){return typeof t=="number"?t:parseInt(t,10)}var _I=(()=>{let e=class e{constructor(){this._validator=nl}ngOnChanges(n){if(this.inputName in n){let i=this.normalizeInput(n[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):nl,this._onChange&&this._onChange()}}validate(n){return this._validator(n)}registerOnValidatorChange(n){this._onChange=n}enabled(n){return n!=null}};e.\u0275fac=function(i){return new(i||e)},e.\u0275dir=re({type:e,features:[it]});let t=e;return t})();var wI={provide:Hn,useExisting:rt(()=>cf),multi:!0},cf=(()=>{let e=class e extends _I{constructor(){super(...arguments),this.inputName="maxlength",this.normalizeInput=n=>yI(n),this.createValidator=n=>k0(n)}};e.\u0275fac=(()=>{let n;return function(o){return(n||(n=Ct(e)))(o||e)}})(),e.\u0275dir=re({type:e,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,o){i&2&&Ki("maxlength",o._enabled?o.maxlength:null)},inputs:{maxlength:"maxlength"},features:[st([wI]),Ue]});let t=e;return t})();var Q0=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({});let t=e;return t})(),wi=class extends So{constructor(e,r,n){super(Xd(r),ef(n,r)),this.controls=e,this._initObservables(),this._setUpdateStrategy(r),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(e){return this.controls[this._adjustIndex(e)]}push(e,r={}){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}insert(e,r,n={}){this.controls.splice(e,0,r),this._registerControl(r),this.updateValueAndValidity({emitEvent:n.emitEvent})}removeAt(e,r={}){let n=this._adjustIndex(e);n<0&&(n=0),this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),this.controls.splice(n,1),this.updateValueAndValidity({emitEvent:r.emitEvent})}setControl(e,r,n={}){let i=this._adjustIndex(e);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),r&&(this.controls.splice(i,0,r),this._registerControl(r)),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(e,r={}){q0(this,!1,e),e.forEach((n,i)=>{H0(this,!1,i),this.at(i).setValue(n,{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r)}patchValue(e,r={}){e!=null&&(e.forEach((n,i)=>{this.at(i)&&this.at(i).patchValue(n,{onlySelf:!0,emitEvent:r.emitEvent})}),this.updateValueAndValidity(r))}reset(e=[],r={}){this._forEachChild((n,i)=>{n.reset(e[i],{onlySelf:!0,emitEvent:r.emitEvent})}),this._updatePristine(r),this._updateTouched(r),this.updateValueAndValidity(r)}getRawValue(){return this.controls.map(e=>e.getRawValue())}clear(e={}){this.controls.length<1||(this._forEachChild(r=>r._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:e.emitEvent}))}_adjustIndex(e){return e<0?e+this.length:e}_syncPendingControls(){let e=this.controls.reduce((r,n)=>n._syncPendingControls()?!0:r,!1);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){this.controls.forEach((r,n)=>{e(r,n)})}_updateValue(){this.value=this.controls.filter(e=>e.enabled||this.disabled).map(e=>e.value)}_anyControls(e){return this.controls.some(r=>r.enabled&&e(r))}_setUpControls(){this._forEachChild(e=>this._registerControl(e))}_allControlsDisabled(){for(let e of this.controls)if(e.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(e){e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)}_find(e){return this.at(e)??null}};var St=(()=>{let e=class e{static withConfig(n){return{ngModule:e,providers:[{provide:bi,useValue:n.callSetDisabledState??ul}]}}};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({imports:[Q0]});let t=e;return t})(),Si=(()=>{let e=class e{static withConfig(n){return{ngModule:e,providers:[{provide:af,useValue:n.warnOnNgModelWithFormControl??"always"},{provide:bi,useValue:n.callSetDisabledState??ul}]}}};e.\u0275fac=function(i){return new(i||e)},e.\u0275mod=Ft({type:e}),e.\u0275inj=Rt({imports:[Q0]});let t=e;return t})();var Ne={production:!1,apiUrl:"/api/v1/",connections:"connections/",movies:"movies/",series:"series/",logs:"logs/",settings:"settings/",search:"search/",tasks:"tasks/"};function Dn(t){return J(M({},t),{added_at:new Ln("en-US").transform(t.added_at,"medium"),updated_at:new Ln("en-US").transform(t.updated_at,"medium"),downloaded_at:new Ln("en-US").transform(t.downloaded_at,"medium")})}function No(t){let e=[{type:"folder",name:"None",size:"",files:[],modified:new Date}];return t.files&&(e=t.files.map(r=>DI(r)?CI(r):No(r))),J(M({},t),{isExpanded:!1,modified:new Ln("en-US").transform(t.created,"medium"),files:e})}function CI(t){return J(M({},t),{modified:new Ln("en-US").transform(t.created,"medium")})}function DI(t){return t.type==="file"}var Ti=(()=>{let e=class e{constructor(n){this.http=n,this.moviesUrl=Ne.apiUrl+Ne.movies}getAllMedia(){return this.http.get(`${this.moviesUrl}all`).pipe(A(n=>n.map(i=>Dn(i))))}getRecentMedia(){return this.http.get(`${this.moviesUrl}?limit=50`).pipe(A(n=>n.map(i=>Dn(i))))}getRecentlyDownloaded(){return this.http.get(`${this.moviesUrl}downloaded?limit=50`).pipe(A(n=>n.map(i=>Dn(i))))}getMediaById(n){return this.http.get(`${this.moviesUrl}${n}`).pipe(A(i=>Dn(i)))}downloadMediaTrailer(n,i){return this.http.post(`${this.moviesUrl}${n}/download?yt_id=${i}`,{})}monitorMedia(n,i){return this.http.post(`${this.moviesUrl}${n}/monitor?monitor=${i}`,{})}deleteMediaTrailer(n){return this.http.delete(`${this.moviesUrl}${n}/trailer`)}getMediaFiles(n){return this.http.get(`${this.moviesUrl}${n}/files`).pipe(A(i=>typeof i=="string"?i:No(i)),qe(i=>(console.error("Error fetching media files:",i),O(`Error: ${i.message}`))))}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var bI=()=>["/settings","connections"],xI=(t,e)=>[t,e];function EI(t,e){t&1&&(u(0,"div",5),w(1,"div",6)(2,"div",6)(3,"div",6)(4,"div",6),d())}function II(t,e){t&1&&(u(0,"div",10)(1,"div",11),p(2," Click me! "),d()()),t&2&&(m(),_("routerLink",ua(1,bI)))}function MI(t,e){t&1&&(ft(0),L(),u(1,"svg",16),w(2,"path",17),d(),pt())}function SI(t,e){if(t&1&&(L(),u(0,"svg",18),w(1,"path",19),d()),t&2){let r=g().$implicit;X("success",r.trailer_exists)}}function TI(t,e){t&1&&(ft(0),L(),u(1,"svg",20),w(2,"path",21),d(),pt())}function AI(t,e){t&1&&(L(),u(0,"svg",22),w(1,"path",23),d())}function OI(t,e){if(t&1&&(u(0,"div",12),w(1,"img",13),u(2,"h5",14),p(3),d(),x(4,MI,3,0,"ng-container",15)(5,SI,2,2,"ng-template",null,1,ge)(7,TI,3,0,"ng-container",15)(8,AI,2,0,"ng-template",null,2,ge),d()),t&2){let r=e.$implicit,n=pe(6),i=pe(9);_("routerLink",da(8,xI,r.is_movie?"/movies":"/series",r.id)),m(),Qe("src",r.poster_path||"assets/poster-sm.png",ot),Qe("alt",r.title),m(2),$(r.title),m(),_("ngIf",r.monitor)("ngIfElse",n),m(3),_("ngIf",r.is_movie)("ngIfElse",i)}}function NI(t,e){if(t&1&&(x(0,II,3,2,"div",7),u(1,"div",8),x(2,OI,10,11,"div",9),d()),t&2){let r=g();_("ngIf",r.media_list.length===0),m(2),_("ngForOf",r.media_list)}}var Y0=(()=>{let e=class e{constructor(n){this.movieService=n,this.media_list=[],this.isLoading=!0}ngOnInit(){this.isLoading=!0,this.movieService.getRecentlyDownloaded().subscribe(n=>{this.media_list=[],this.isLoading=!1,n.forEach((i,o)=>{setTimeout(()=>{this.media_list.push(i)},o*20)})})}};e.\u0275fac=function(i){return new(i||e)(b(Ti))},e.\u0275cmp=ee({type:e,selectors:[["app-home"]],standalone:!0,features:[te],decls:4,vars:2,consts:[["mediaLoaded",""],["trailerExistsIcon",""],["seriesIcon",""],[1,"media-container"],["class","loading-wave center",4,"ngIf","ngIfElse"],[1,"loading-wave","center"],[1,"loading-bar"],["class","center",4,"ngIf"],[1,"media-row"],["class","media-card",3,"routerLink",4,"ngFor","ngForOf"],[1,"center"],[1,"all-empty-card",3,"routerLink"],[1,"media-card",3,"routerLink"],[3,"src","alt"],[1,"card-title"],[4,"ngIf","ngIfElse"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Monitored",1,"monitored-icon"],["d","M713-600 600-713l56-57 57 57 141-142 57 57-198 198ZM200-120v-640q0-33 23.5-56.5T280-840h280q-20 30-30 57.5T520-720q0 72 45.5 127T680-524q23 3 40 3t40-3v404L480-240 200-120Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Trailer Exists",1,"downloaded-icon"],["d","M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q65 0 123 19t107 53l-58 59q-38-24-81-37.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160q133 0 226.5-93.5T800-480q0-18-2-36t-6-35l65-65q11 32 17 66t6 70q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm-56-216L254-466l56-56 114 114 400-401 56 56-456 457Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"movie-icon"],["d","m160-800 80 160h120l-80-160h80l80 160h120l-80-160h80l80 160h120l-80-160h120q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800Zm0 240v320h640v-320H160Zm0 0v320-320Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"series-icon"],["d","M320-120v-80H160q-33 0-56.5-23.5T80-280v-480q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v480q0 33-23.5 56.5T800-200H640v80H320ZM160-280h640v-480H160v480Zm0 0v-480 480Z"]],template:function(i,o){if(i&1&&(u(0,"div",3),x(1,EI,5,0,"div",4)(2,NI,3,2,"ng-template",null,0,ge),d()),i&2){let s=pe(3);m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[St,Oe,De,lt],styles:[".media-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto}.media-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;padding:1rem}@media (width < 900px){.media-row[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem;padding:.5rem}}.media-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;transition:all .4s;border-radius:10px;box-shadow:0 0 10px 5px #000000b4;cursor:pointer;position:relative}.media-card[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;border-radius:10px}.media-card[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;top:5px;height:24px;width:24px}.media-card[_ngcontent-%COMP%] .monitored-icon[_ngcontent-%COMP%], .media-card[_ngcontent-%COMP%] .downloaded-icon[_ngcontent-%COMP%]{fill:var(--color-info);right:5px}.media-card[_ngcontent-%COMP%] .movie-icon[_ngcontent-%COMP%], .media-card[_ngcontent-%COMP%] .series-icon[_ngcontent-%COMP%]{fill:var(--color-primary);left:5px;bottom:5px}.media-card[_ngcontent-%COMP%] .success[_ngcontent-%COMP%]{fill:var(--color-success)}.media-card[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{display:none}.media-card[_ngcontent-%COMP%]:hover{border-radius:15px;box-shadow:0 0 10px 5px #000000b4}.media-card[_ngcontent-%COMP%]:hover img[_ngcontent-%COMP%]{border-radius:15px;filter:blur(2px);-webkit-filter:blur(2px)}.media-card[_ngcontent-%COMP%]:hover h5[_ngcontent-%COMP%]{position:absolute;inset:0%;display:flex;justify-content:center;align-items:center;width:100%;text-align:center;overflow:hidden;cursor:pointer;font-size:1.5rem;font-weight:900;color:var(--color-primary)}"]});let t=e;return t})();var K0=(()=>{let e=class e{constructor(n){this.http=n,this.logsUrl=Ne.apiUrl+Ne.logs}getLogs(){return this.http.get(this.logsUrl)}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function PI(t,e){t&1&&(u(0,"div",4),w(1,"div",5)(2,"div",5)(3,"div",5)(4,"div",5),d())}function RI(t,e){if(t&1&&(u(0,"div",8)(1,"p"),p(2),d()()),t&2){let r=e.$implicit;m(2),$(r)}}function FI(t,e){if(t&1&&(u(0,"div",6),x(1,RI,3,1,"div",7),d()),t&2){let r=g();m(),_("ngForOf",r.all_logs)}}var J0=(()=>{let e=class e{constructor(n){this.logsService=n,this.title="Logs",this.isLoading=!0,this.all_logs=[]}ngOnInit(){this.isLoading=!0,this.logsService.getLogs().subscribe(n=>{this.all_logs=n,this.isLoading=!1})}};e.\u0275fac=function(i){return new(i||e)(b(K0))},e.\u0275cmp=ee({type:e,selectors:[["app-logs"]],standalone:!0,features:[te],decls:6,vars:3,consts:[["logsLoaded",""],[1,"logs-container"],[1,"text-center"],["class","loading-wave center",4,"ngIf","ngIfElse"],[1,"loading-wave","center"],[1,"loading-bar"],[1,"logs-table"],["class","logs-row",4,"ngFor","ngForOf"],[1,"logs-row"]],template:function(i,o){if(i&1&&(u(0,"div",1)(1,"h1",2),p(2),d(),x(3,PI,5,0,"div",3)(4,FI,2,1,"ng-template",null,0,ge),d()),i&2){let s=pe(5);m(2),$(o.title),m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[Oe,De],styles:[".logs-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:1rem}@media (width < 765px){.logs-container[_ngcontent-%COMP%]{padding:.5rem}}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto}.logs-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:10px;border-bottom:1px solid #e0e0e0}"]});let t=e;return t})();var X0=(()=>{let e=class e{transform(n){let i=Math.floor(n/60),o=Math.floor(n%60);return i===0?o+"m":o===0?i+"h":i+"h "+o+"m"}};e.\u0275fac=function(i){return new(i||e)},e.\u0275pipe=kn({name:"durationConvert",type:e,pure:!0,standalone:!0});let t=e;return t})();var fl=(()=>{let e=class e{constructor(n){this.http=n,this.seriesUrl=Ne.apiUrl+Ne.series}getAllMedia(){return this.http.get(`${this.seriesUrl}all`).pipe(A(n=>n.map(i=>Dn(i))))}getRecentMedia(){return this.http.get(`${this.seriesUrl}?limit=50`).pipe(A(n=>n.map(i=>Dn(i))))}getMediaById(n){return this.http.get(`${this.seriesUrl}${n}`).pipe(A(i=>Dn(i)))}downloadMediaTrailer(n,i){return this.http.post(`${this.seriesUrl}${n}/download?yt_id=${i}`,{})}monitorMedia(n,i){return this.http.post(`${this.seriesUrl}${n}/monitor?monitor=${i}`,{})}deleteMediaTrailer(n){return this.http.delete(`${this.seriesUrl}${n}/trailer`)}getMediaFiles(n){return this.http.get(`${this.seriesUrl}${n}/files`).pipe(A(i=>No(i)))}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var LI={url:"",deserializer:t=>JSON.parse(t.data),serializer:t=>JSON.stringify(t)},VI="WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }",pl=class t extends Ar{constructor(e,r){if(super(),this._socket=null,e instanceof Q)this.destination=r,this.source=e;else{let n=this._config=Object.assign({},LI);if(this._output=new ue,typeof e=="string")n.url=e;else for(let i in e)e.hasOwnProperty(i)&&(n[i]=e[i]);if(!n.WebSocketCtor&&WebSocket)n.WebSocketCtor=WebSocket;else if(!n.WebSocketCtor)throw new Error("no WebSocket constructor can be found");this.destination=new Or}}lift(e){let r=new t(this._config,this.destination);return r.operator=e,r.source=this,r}_resetState(){this._socket=null,this.source||(this.destination=new Or),this._output=new ue}multiplex(e,r,n){let i=this;return new Q(o=>{try{i.next(e())}catch(a){o.error(a)}let s=i.subscribe({next:a=>{try{n(a)&&o.next(a)}catch(l){o.error(l)}},error:a=>o.error(a),complete:()=>o.complete()});return()=>{try{i.next(r())}catch(a){o.error(a)}s.unsubscribe()}})}_connectSocket(){let{WebSocketCtor:e,protocol:r,url:n,binaryType:i}=this._config,o=this._output,s=null;try{s=r?new e(n,r):new e(n),this._socket=s,i&&(this._socket.binaryType=i)}catch(l){o.error(l);return}let a=new ve(()=>{this._socket=null,s&&s.readyState===1&&s.close()});s.onopen=l=>{let{_socket:c}=this;if(!c){s.close(),this._resetState();return}let{openObserver:f}=this._config;f&&f.next(l);let h=this.destination;this.destination=sn.create(v=>{if(s.readyState===1)try{let{serializer:y}=this._config;s.send(y(v))}catch(y){this.destination.error(y)}},v=>{let{closingObserver:y}=this._config;y&&y.next(void 0),v&&v.code?s.close(v.code,v.reason):o.error(new TypeError(VI)),this._resetState()},()=>{let{closingObserver:v}=this._config;v&&v.next(void 0),s.close(),this._resetState()}),h&&h instanceof Or&&a.add(h.subscribe(this.destination))},s.onerror=l=>{this._resetState(),o.error(l)},s.onclose=l=>{s===this._socket&&this._resetState();let{closeObserver:c}=this._config;c&&c.next(l),l.wasClean?o.complete():o.error(l)},s.onmessage=l=>{try{let{deserializer:c}=this._config;o.next(c(l))}catch(c){o.error(c)}}}_subscribe(e){let{source:r}=this;return r?r.subscribe(e):(this._socket||this._connectSocket(),this._output.subscribe(e),e.add(()=>{let{_socket:n}=this;this._output.observers.length===0&&(n&&(n.readyState===1||n.readyState===0)&&n.close(),this._resetState())}),e)}unsubscribe(){let{_socket:e}=this;e&&(e.readyState===1||e.readyState===0)&&e.close(),this._resetState(),super.unsubscribe()}};function df(t){return new pl(t)}var Ai=(()=>{let e=class e{constructor(){this.toastMessage=new ue}connect(){if(!this.socket$||this.socket$.closed){let n=Math.floor(Math.random()*1e6),i=window.location.protocol==="https:"?"wss:":"ws:",o=window.location.hostname,s=window.location.port?`:${window.location.port}`:"",a=`${i}//${o}${s}/ws/${n}`;this.socket$=df(a)}return this.socket$.asObservable()}showToast(n,i="Success"){this.toastMessage.next({message:n,type:i})}close(){this.socket$.complete()}};e.\u0275fac=function(i){return new(i||e)},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var jI=["deleteDialog"],tv=t=>({folder:t});function $I(t,e){t&1&&(u(0,"div",15),w(1,"div",16)(2,"div",16)(3,"div",16)(4,"div",16),d())}function UI(t,e){t&1&&(L(),u(0,"svg",50),w(1,"path",51),d())}function BI(t,e){if(t&1&&(u(0,"div",48),x(1,UI,2,0,"svg",49),d()),t&2){let r=g(3);m(),_("ngIf",r.media.trailer_exists)}}function HI(t,e){t&1&&(u(0,"div",54),L(),u(1,"svg",55),w(2,"path",56),d()())}function qI(t,e){t&1&&(L(),u(0,"svg",60),w(1,"path",61),d())}function zI(t,e){if(t&1&&(u(0,"span"),x(1,qI,2,0,"svg",59),d()),t&2){let r=g(5);m(),_("ngIf",r.media.monitor)}}function GI(t,e){t&1&&(u(0,"span"),L(),u(1,"svg",62),w(2,"path",63),d()())}function WI(t,e){if(t&1){let r=P();u(0,"div",57),E("click",function(){C(r);let i=g(4);return i.isLoadingMonitor=!0,D(i.monitorSeries())}),x(1,zI,2,1,"span",58)(2,GI,3,0,"span",58),d()}if(t&2){let r=g(4);_("title",r.media.monitor?"Monitored, click to change":"Not Monitored, click to change"),m(),_("ngIf",r.media.monitor),m(),_("ngIf",!r.media.monitor)}}function ZI(t,e){if(t&1&&x(0,HI,3,0,"div",52)(1,WI,3,3,"div",53),t&2){let r=g(3);_("ngIf",r.isLoadingMonitor),m(),_("ngIf",!r.isLoadingMonitor)}}function QI(t,e){if(t&1&&(u(0,"a",64),w(1,"img",65),d()),t&2){let r=g(3);dr("href","https://www.imdb.com/title/",r.media.imdb_id,"/",ot)}}function YI(t,e){if(t&1&&(u(0,"a",67),w(1,"img",68),d()),t&2){let r=g(4);dr("href","https://www.themoviedb.org/movie/",r.media.txdb_id,"",ot)}}function KI(t,e){if(t&1&&(ft(0),x(1,YI,2,2,"a",66),pt()),t&2){let r=g(3);m(),_("ngIf",r.media.txdb_id)}}function JI(t,e){if(t&1&&(u(0,"a",70),w(1,"img",71),d()),t&2){let r=g(4);dr("href","https://www.thetvdb.com/?tab=series&id=",r.media.txdb_id,"",ot)}}function XI(t,e){if(t&1&&x(0,JI,2,2,"a",69),t&2){let r=g(3);_("ngIf",r.media.txdb_id)}}function eM(t,e){t&1&&(u(0,"p",72),p(1,"Click Download to download trailer from updated link!"),d())}function tM(t,e){if(t&1){let r=P();u(0,"button",73),E("click",function(){C(r);let i=g(3);return D(i.openTrailer())}),p(1,"Watch"),d()}}function nM(t,e){t&1&&(u(0,"span",76),L(),u(1,"svg",55),w(2,"path",56),d()())}function rM(t,e){if(t&1){let r=P();u(0,"button",74),E("click",function(){C(r);let i=g(3);return i.isLoadingDownload=!0,D(i.downloadTrailer())}),u(1,"span"),p(2,"Download "),d(),x(3,nM,3,0,"span",75),d()}if(t&2){let r=g(3);_("disabled",r.isLoadingDownload||r.media.status=="downloading"),m(3),_("ngIf",r.isLoadingDownload||r.media.status=="downloading")}}function iM(t,e){if(t&1){let r=P();u(0,"button",77),E("click",function(){C(r);let i=g(3);return D(i.showDeleteDialog())}),p(1,"Delete"),d()}}function oM(t,e){if(t&1){let r=P();u(0,"div",20),w(1,"div",21),u(2,"div",22),w(3,"img",23),d(),u(4,"div",24)(5,"div",25),x(6,BI,2,1,"div",26)(7,ZI,2,2,"ng-template",null,5,ge),u(9,"span",27),E("click",function(){C(r);let i=g(2);return D(i.copyToClipboard(i.media.title))}),p(10),d()(),u(11,"div",25)(12,"span",28),p(13),d(),u(14,"span",28),Se(15,"durationConvert"),p(16),Se(17,"durationConvert"),d()(),u(18,"div",25),x(19,QI,2,2,"a",29)(20,KI,2,1,"ng-container",30)(21,XI,1,1,"ng-template",null,6,ge),d(),u(23,"div",31)(24,"span")(25,"div",32)(26,"label",33),p(27,"Path"),d(),u(28,"span",34),E("click",function(){C(r);let i=g(2);return D(i.copyToClipboard(i.media.folder_path))}),u(29,"code"),p(30),d()()()(),u(31,"span")(32,"div",35)(33,"label",33),p(34,"Status"),d(),u(35,"span",36),p(36),Se(37,"titlecase"),u(38,"span",37)(39,"p"),p(40),d(),u(41,"p"),p(42),d(),u(43,"p"),p(44),d(),u(45,"p"),p(46),d(),u(47,"p"),p(48),d()()()()()(),u(49,"div",25)(50,"div",38)(51,"label",33),p(52,"Overview"),d(),u(53,"span",39),p(54),d()()(),u(55,"div",25)(56,"div",35)(57,"label",33),p(58,"Trailer"),d(),u(59,"div",40)(60,"span",41),p(61,"https://www.youtube.com/watch?v="),d(),u(62,"span",42),p(63,"Youtube ID/URL:"),d(),u(64,"input",43),Ut("ngModelChange",function(i){C(r);let o=g(2);return Jt(o.trailer_url,i)||(o.trailer_url=i),D(i)}),d()(),x(65,eM,2,0,"p",44),d()(),u(66,"div",25),x(67,tM,2,0,"button",45)(68,rM,4,2,"button",46)(69,iM,2,0,"button",47),d()()()}if(t&2){let r=pe(8),n=pe(22),i=g(2);m(),zm("background-image: url(",i.media.fanart_path,");"),m(),X("sm-none",!i.media.poster_path),dr("title","",i.media.title," Poster"),m(),Qe("src",i.media.poster_path||"assets/poster-lg.png",ot),Qe("alt",i.media.title),m(3),_("ngIf",i.media.trailer_exists)("ngIfElse",r),m(3),_("title",i.media.title),m(),Z(" ",i.media.title," "),m(2),_("title",i.media.year),m(),$(i.media.year),m(),_("title",Te(15,34,i.media.runtime)),m(2),$(Te(17,36,i.media.runtime)),m(3),_("ngIf",i.media.imdb_id),m(),_("ngIf",i.media.is_movie)("ngIfElse",n),m(5),_("title",i.media.folder_path),m(5),$(i.media.folder_path),m(6),Z("",Te(37,38,i.media.status)," "),m(4),Z("Monitored: ",i.media.monitor,""),m(2),Z("Downloaded: ",i.media.trailer_exists,""),m(2),Z("Added: ",i.media.added_at,""),m(2),Z("Updated: ",i.media.updated_at,""),m(2),Z("Downloaded: ",i.media.downloaded_at," "),m(6),$(i.media.overview),m(10),$t("ngModel",i.trailer_url),m(),_("ngIf",i.trailer_url!=i.media.youtube_trailer_id),m(2),_("ngIf",i.media.youtube_trailer_id),m(),_("ngIf",!i.media.trailer_exists||i.media.youtube_trailer_id!=i.trailer_url),m(),_("ngIf",i.media.trailer_exists)}}function sM(t,e){t&1&&(u(0,"div",15),w(1,"div",16)(2,"div",16)(3,"div",16)(4,"div",16),d())}function aM(t,e){t&1&&ca(0)}function lM(t,e){if(t&1&&(u(0,"div",79)(1,"div",80),w(2,"div"),u(3,"div"),p(4,"Name"),d(),u(5,"div"),p(6,"Size"),d(),u(7,"div"),p(8,"Modified"),d()(),x(9,aM,1,0,"ng-container",81),d()),t&2){let r=g(3),n=pe(7);m(9),_("ngTemplateOutlet",n)("ngTemplateOutletContext",fr(2,tv,r.mediaFiles))}}function cM(t,e){if(t&1&&x(0,lM,10,4,"div",78),t&2){let r=g(2),n=pe(5);_("ngIf",r.mediaFiles)("ngIfElse",n)}}function uM(t,e){if(t&1&&(x(0,oM,70,40,"div",17),u(1,"div",18)(2,"p",19),p(3,"Files"),d(),w(4,"hr"),x(5,sM,5,0,"div",10)(6,cM,1,2,"ng-template",null,4,ge),d()),t&2){let r=pe(7),n=g();_("ngIf",n.media),m(5),_("ngIf",n.filesLoading)("ngIfElse",r)}}function dM(t,e){t&1&&(u(0,"div",79)(1,"p",82),p(2,"No Files Found"),d()())}function fM(t,e){t&1&&(ft(0),L(),u(1,"svg",90),w(2,"path",91),d(),pt())}function pM(t,e){t&1&&(L(),u(0,"svg",90),w(1,"path",92),d())}function hM(t,e){if(t&1&&(ft(0),x(1,fM,3,0,"ng-container",30)(2,pM,2,0,"ng-template",null,8,ge),pt()),t&2){let r=pe(3),n=g().folder;m(),_("ngIf",n.isExpanded)("ngIfElse",r)}}function mM(t,e){t&1&&(L(),u(0,"svg",90),w(1,"path",93),d())}function gM(t,e){t&1&&ca(0)}function vM(t,e){if(t&1&&(ft(0),x(1,gM,1,0,"ng-container",81),pt()),t&2){let r=e.$implicit;g(4);let n=pe(7);m(),_("ngTemplateOutlet",n)("ngTemplateOutletContext",fr(2,tv,r))}}function yM(t,e){if(t&1&&(ft(0),x(1,vM,2,4,"ng-container",95),pt()),t&2){let r=g(2).folder;m(),_("ngForOf",r.files)}}function _M(t,e){if(t&1&&(u(0,"div",94),x(1,yM,2,1,"ng-container",58),d()),t&2){let r=g().folder;m(),_("ngIf",r.isExpanded)}}function wM(t,e){if(t&1){let r=P();u(0,"div",83)(1,"div",84),E("click",function(){let i=C(r).folder;return D(i.isExpanded=!i.isExpanded)}),u(2,"div",85),x(3,hM,4,2,"ng-container",30)(4,mM,2,0,"ng-template",null,7,ge),d(),u(6,"div",86),p(7),d(),u(8,"div",87),p(9),d(),u(10,"div",88),p(11),d()(),x(12,_M,2,1,"div",89),d()}if(t&2){let r=e.folder,n=pe(5);m(),X("parent",r.type=="folder"),m(2),_("ngIf",r.type==="folder")("ngIfElse",n),m(4),$(r.name),m(2),$(r.size),m(2),$(r.modified),m(),_("ngIf",r.type=="folder")}}var pf=(()=>{let e=class e{constructor(n,i,o,s){this.movieService=n,this.seriesService=i,this.route=o,this.websocketService=s,this.mediaId=0,this.media=void 0,this.mediaFiles=void 0,this.mediaFilesResponse="No files found",this.isLoading=!0,this.isLoadingMonitor=!1,this.isLoadingDownload=!1,this.filesLoading=!0,this.trailer_url="",this.mediaService=this.seriesService}copyToClipboard(n){return Oi(this,null,function*(){if(navigator.clipboard)try{yield navigator.clipboard.writeText(n),this.websocketService.showToast("Copied to clipboard!")}catch(i){this.websocketService.showToast("Error copying text to clipboard.","Error"),console.error("Failed to copy: ",i)}else{let i=document.createElement("input");i.value=n,document.body.appendChild(i),i.select(),document.execCommand("copy"),document.body.removeChild(i),this.websocketService.showToast("Copied to clipboard!")}})}ngOnInit(){this.isLoading=!0,this.filesLoading=!0,this.route.params.subscribe(i=>{this.route.snapshot.url[0].path==="movies"?this.mediaService=this.movieService:this.mediaService=this.seriesService,this.mediaId=i.id,this.getMediaData()});let n=()=>{this.getMediaData()};this.webSocketSubscription=this.websocketService.connect().subscribe({next:n,error:n,complete:n})}ngOnDestroy(){this.webSocketSubscription?.unsubscribe()}getMediaData(){this.mediaService.getMediaById(this.mediaId).subscribe(n=>{this.media=n,this.trailer_url=n.youtube_trailer_id,this.isLoading=!1}),this.mediaService.getMediaFiles(this.mediaId).subscribe(n=>{typeof n=="string"?this.mediaFilesResponse=n:this.mediaFiles=n,this.filesLoading=!1})}downloadTrailer(){let n=this.media?.youtube_trailer_id?.toLowerCase()||"";this.trailer_url.toLowerCase().includes(n)&&this.media?.trailer_exists||(this.isLoadingDownload=!0,this.mediaService.downloadMediaTrailer(this.mediaId,this.trailer_url).subscribe(o=>{console.log(o)}))}monitorSeries(){this.isLoadingMonitor=!0;let n=!this.media?.monitor;this.mediaService.monitorMedia(this.mediaId,n).subscribe(i=>{console.log(i),this.media.monitor=n,this.isLoadingMonitor=!1})}openTrailer(){this.media?.youtube_trailer_id&&window.open(`https://www.youtube.com/watch?v=${this.media.youtube_trailer_id}`,"_blank")}showDeleteDialog(){this.deleteDialog.nativeElement.showModal()}closeDeleteDialog(){this.deleteDialog.nativeElement.close()}onConfirmDelete(){this.closeDeleteDialog(),this.mediaService.deleteMediaTrailer(this.mediaId).subscribe(n=>{console.log(n),this.media.trailer_exists=!1})}};e.\u0275fac=function(i){return new(i||e)(b(Ti),b(fl),b(yt),b(Ai))},e.\u0275cmp=ee({type:e,selectors:[["app-media-details"]],viewQuery:function(i,o){if(i&1&&Kt(jI,5),i&2){let s;bt(s=xt())&&(o.deleteDialog=s.first)}},standalone:!0,features:[te],decls:21,vars:2,consts:[["mediaLoaded",""],["noFilesFound",""],["folTemplate",""],["deleteDialog",""],["filessLoaded",""],["noTrailer",""],["showTVDBLogo",""],["fileIcon",""],["folderClosedIcon",""],[1,"media-details-container"],["class","loading-wave center",4,"ngIf","ngIfElse"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"danger",3,"click"],["tabindex","1",1,"secondary",3,"click"],[1,"loading-wave","center"],[1,"loading-bar"],["class","media-details-card",4,"ngIf"],[1,"media-files-container"],[1,"text-md","files-title"],[1,"media-details-card"],[1,"media-fanart-overlay"],[1,"media-poster",3,"title"],[3,"src","alt"],[1,"media-details-col"],[1,"media-details-row"],["class","icon-link","title","Trailer Downloaded",4,"ngIf","ngIfElse"],[1,"text-lg","title-text","copy",3,"click","title"],[1,"text-md",3,"title"],["target","_blank","title","IMDB Link",3,"href",4,"ngIf"],[4,"ngIf","ngIfElse"],[1,"media-details-row","extras"],[1,"labeled-text",3,"title"],[1,"label"],[1,"text-sm","copy",3,"click"],[1,"labeled-text"],[1,"text-sm","tooltip"],[1,"tooltiptext"],["title","Overview",1,"labeled-text"],[1,"text-sm"],[1,"labeled-input"],[1,"text-md","sm-none"],[1,"text-md","sm-show"],["id","youtube_trailer_id","type","text","placeholder","Youtube Video ID / URL",3,"ngModelChange","ngModel"],["class","text-sm info-text",4,"ngIf"],["class","primary","title","Watch Trailer on Youtube",3,"click",4,"ngIf"],["class","primary","title","Download Trailer",3,"disabled","click",4,"ngIf"],["class","danger","title","Delete Trailer",3,"click",4,"ngIf"],["title","Trailer Downloaded",1,"icon-link"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","class","downloaded-icon success","aria-label","Trailer Exists",4,"ngIf"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Trailer Exists",1,"downloaded-icon","success"],["d","M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q65 0 123 19t107 53l-58 59q-38-24-81-37.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160q133 0 226.5-93.5T800-480q0-18-2-36t-6-35l65-65q11 32 17 66t6 70q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm-56-216L254-466l56-56 114 114 400-401 56 56-456 457Z"],["class","icon-link","title","Updating Monitor Status",4,"ngIf"],["class","icon-link",3,"title","click",4,"ngIf"],["title","Updating Monitor Status",1,"icon-link"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"loading"],["d","M343-107q-120-42-194.5-146.5T74-490q0-29 4-57.5T91-604l-57 33-37-62 185-107 106 184-63 36-54-92q-13 30-18.5 60.5T147-490q0 113 65.5 200T381-171l-38 64Zm291-516v-73h107q-47-60-115.5-93.5T480-823q-66 0-123.5 24T255-734l-38-65q54-45 121-71t142-26q85 0 160.5 33T774-769v-67h73v213H634ZM598-1 413-107l107-184 62 37-54 94q123-17 204.5-110.5T814-489q0-19-2.5-37.5T805-563h74q4 18 6 36.5t2 36.5q0 142-87 251.5T578-96l56 33-36 62Z"],[1,"icon-link",3,"click","title"],[4,"ngIf"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","class","monitored-icon","aria-label","Monitored",4,"ngIf"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Monitored",1,"monitored-icon"],["d","M713-600 600-713l56-57 57 57 141-142 57 57-198 198ZM200-120v-640q0-33 23.5-56.5T280-840h280q-20 30-30 57.5T520-720q0 72 45.5 127T680-524q23 3 40 3t40-3v404L480-240 200-120Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Not Monitored",1,"not-monitored-icon"],["d","M200-120v-640q0-33 23.5-56.5T280-840h240v80H280v518l200-86 200 86v-278h80v400L480-240 200-120Zm80-640h240-240Zm400 160v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80Z"],["target","_blank","title","IMDB Link",3,"href"],["src","assets/IMDBlogo.png","alt","IMDB",1,"xdb-icon"],["target","_blank","title","TMDB Link",3,"href",4,"ngIf"],["target","_blank","title","TMDB Link",3,"href"],["src","assets/TMDBlogo.png","alt","TMDB",1,"xdb-icon"],["target","_blank","title","TVDB Link",3,"href",4,"ngIf"],["target","_blank","title","TVDB Link",3,"href"],["src","assets/TVDBlogo.png","alt","TVDB",1,"xdb-icon"],[1,"text-sm","info-text"],["title","Watch Trailer on Youtube",1,"primary",3,"click"],["title","Download Trailer",1,"primary",3,"click","disabled"],["class","loading-icon",4,"ngIf"],[1,"loading-icon"],["title","Delete Trailer",1,"danger",3,"click"],["class","media-files",4,"ngIf","ngIfElse"],[1,"media-files"],[1,"files-header","sm-none","text-sm"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"text-sm","text-center"],[1,"files-accordion"],[1,"files-header",3,"click"],[1,"files-icon"],[1,"files-name"],[1,"files-size"],[1,"files-modified"],["class","child",4,"ngIf"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M146.67-160q-26.34 0-46.5-20.17Q80-200.33 80-226.67v-506.66q0-26.34 20.17-46.5Q120.33-800 146.67-800H414l66.67 66.67h332.66q26.34 0 46.5 20.16Q880-693 880-666.67H146.67v440l100-373.33H940L834.33-209.67q-6.66 24.67-24.5 37.17Q792-160 766.67-160h-620Z"],["d","M146.67-160q-27 0-46.84-20.17Q80-200.33 80-226.67v-506.66q0-26.34 19.83-46.5Q119.67-800 146.67-800H414l66.67 66.67h332.66q26.34 0 46.5 20.16Q880-693 880-666.67v440q0 26.34-20.17 46.5Q839.67-160 813.33-160H146.67Z"],["d","M319.33-246.67h321.34v-66.66H319.33v66.66Zm0-166.66h321.34V-480H319.33v66.67ZM226.67-80q-27 0-46.84-19.83Q160-119.67 160-146.67v-666.66q0-27 19.83-46.84Q199.67-880 226.67-880H574l226 226v507.33q0 27-19.83 46.84Q760.33-80 733.33-80H226.67Zm314-542.67h192.66L540.67-813.33v190.66Z"],[1,"child"],[4,"ngFor","ngForOf"]],template:function(i,o){if(i&1){let s=P();u(0,"div",9),x(1,$I,5,0,"div",10)(2,uM,8,3,"ng-template",null,0,ge),d(),x(4,dM,3,0,"ng-template",null,1,ge)(6,wM,13,8,"ng-template",null,2,ge),u(8,"dialog",11,3),E("click",function(){return C(s),D(o.closeDeleteDialog())}),u(10,"div",12),E("click",function(l){return C(s),D(l.stopPropagation())}),u(11,"h2"),p(12,"Delete Trailer"),d(),u(13,"p"),p(14,"This will Delete the trailer file on disk for this Media"),d(),u(15,"p"),p(16,"Are you sure?"),d(),u(17,"button",13),E("click",function(){return C(s),D(o.onConfirmDelete())}),p(18,"Delete"),d(),u(19,"button",14),E("click",function(){return C(s),D(o.closeDeleteDialog())}),p(20,"Cancel"),d()()()}if(i&2){let s=pe(3);m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[Oe,De,St,Mt,rn,Dr,X0,gg,vg],styles:['.media-details-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;margin:1rem;border:1px solid var(--color-outline);border-radius:10px}@media (width < 768px){.media-details-container[_ngcontent-%COMP%]{margin:.5rem}}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto}.media-details-card[_ngcontent-%COMP%]{position:relative;display:grid;grid-template-columns:1fr 3fr;padding:2rem;gap:2rem}.media-fanart-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;z-index:0;height:100%;background-size:cover;background-position:center;opacity:.4;border-radius:10px}.media-poster[_ngcontent-%COMP%]{z-index:2;display:flex;width:100%}.media-poster[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;max-width:300px;height:auto;object-fit:contain;margin-bottom:auto}.media-details-col[_ngcontent-%COMP%]{z-index:2;flex:1;display:flex;flex-direction:column}.media-details-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;margin:.3rem;gap:.75rem}.media-details-row[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{font-size:2.5rem;display:inline-block;overflow:hidden;max-width:70%}.icon-link[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;text-decoration:none;transition:all .4s;cursor:pointer}.icon-link[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:40px;fill:var(--color-primary)}.nav-icons[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:1rem;margin-left:auto;margin-right:1rem}.icon-link[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] .success[_ngcontent-%COMP%]{fill:var(--color-success)}.xdb-icon[_ngcontent-%COMP%]{width:60px;cursor:pointer;border-radius:4px}.extras[_ngcontent-%COMP%]{flex-wrap:wrap}.labeled-text[_ngcontent-%COMP%]{display:flex;flex-direction:column}.labeled-text[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.75rem;opacity:.7;margin-bottom:.1rem}.labeled-input[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap!important;align-items:stretch;width:100%;border:1px solid var(--color-outline);border-radius:6px}.labeled-input[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;align-items:center;padding:.75rem;font-size:1rem;font-weight:400;color:var(--color-on-surface-variant);text-align:center;white-space:nowrap;background-color:var(--color-surface-container-high);border-right:1px solid var(--color-outline);border-top-left-radius:6px;border-bottom-left-radius:6px}.labeled-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1 1 auto;width:1%;min-width:100px;display:block;padding:.75rem;font-size:1rem;font-weight:400;color:var(--color-on-surface);border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-surface-container);border-top-right-radius:6px;border-bottom-right-radius:6px}.info-text[_ngcontent-%COMP%]{margin:.5rem;padding:.5rem;border-radius:.5rem;background-color:var(--color-info);color:var(--color-info-text);text-align:center}.loading-icon[_ngcontent-%COMP%]{display:inline-flex;justify-content:center;align-items:center}.loading-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:1rem;height:1rem}.loading[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin-animation 2s linear infinite}@keyframes _ngcontent-%COMP%_spin-animation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.media-files-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;margin:1rem}.media-files-container[_ngcontent-%COMP%] .media-files[_ngcontent-%COMP%]{width:100%;display:block;border:1px solid var(--color-outline);border-radius:4px;background-color:var(--color-surface-container-high);color:var(--color-on-surface-variant);overflow-y:auto}.media-files-container[_ngcontent-%COMP%] .files-title[_ngcontent-%COMP%]{margin:0;margin-block:0}.files-accordion[_ngcontent-%COMP%]{width:100%;display:grid;grid-template-rows:1fr auto;border-left:1px solid var(--color-outline);position:relative}.files-header[_ngcontent-%COMP%]{grid-row:1;display:grid;grid-template-columns:auto 6fr 1fr 2fr;gap:.5rem;align-items:center;text-align:center;padding:1rem;border:none;outline:none;transition:.4s;border-top:1px solid var(--color-outline);position:relative;font-size:.75rem}.files-header[_ngcontent-%COMP%]:before{content:"";display:block;position:absolute;top:50%;left:-1rem;width:1rem;height:1px;background-color:var(--color-outline)}.files-accordion[_ngcontent-%COMP%] .parent[_ngcontent-%COMP%]{cursor:pointer}.files-accordion[_ngcontent-%COMP%] .child[_ngcontent-%COMP%]{grid-row:2;padding:0 0 0 1rem;position:relative}.child[_ngcontent-%COMP%] .files-accordion[_ngcontent-%COMP%]:last-child{border-bottom:1px solid var(--color-outline);margin-bottom:1rem}.files-header[_ngcontent-%COMP%] .files-icon[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center}.files-header[_ngcontent-%COMP%] .files-name[_ngcontent-%COMP%]{font-size:1rem;text-align:left;display:flex;align-items:center;gap:.25rem}.files-header[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem;fill:var(--color-on-surface)}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}@media (max-width: 765px){.media-details-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:0;padding-top:2rem;gap:1rem}.media-poster[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:auto;height:30vh;margin:0 auto}.media-details-col[_ngcontent-%COMP%]{align-items:center;margin:1rem;margin-top:0}.media-details-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;margin:.3rem;gap:.75rem}.media-details-row[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{max-width:90%}.files-header[_ngcontent-%COMP%]{grid-template-columns:auto auto auto;grid-template-rows:1fr auto}.files-header[_ngcontent-%COMP%] .files-icon[_ngcontent-%COMP%]{grid-row:1 / span 2;grid-column:1;justify-self:center}.files-header[_ngcontent-%COMP%] .files-name[_ngcontent-%COMP%]{grid-row:1;grid-column:2 / span 2;justify-self:start}.files-header[_ngcontent-%COMP%] .files-size[_ngcontent-%COMP%]{grid-row:2;grid-column:2;justify-self:start;margin-left:.25rem}.files-header[_ngcontent-%COMP%] .files-modified[_ngcontent-%COMP%]{grid-row:2;grid-column:3;justify-self:end}}']});let t=e;return t})();var nv=(()=>{let e=class e{constructor(n){this.el=n,this.nearEnd=new ye,this.threshold=200}ngOnInit(){this.window=window}windowScrollEvent(n){let i=this.window.document.documentElement.scrollHeight,o=this.el.nativeElement.scrollHeight,s=this.window.scrollY,a=this.window.innerHeight,l=i-o;o-a-s+l[t];function DM(t,e){t&1&&(u(0,"div"),L(),u(1,"svg",4),w(2,"path",16),d()())}function bM(t,e){t&1&&(u(0,"div"),L(),u(1,"svg",4),w(2,"path",17),d()())}function xM(t,e){if(t&1){let r=P();u(0,"div",14),E("click",function(){let i=C(r).$implicit,o=g();return D(o.setMediaSort(i))}),p(1),x(2,DM,3,0,"div",15)(3,bM,3,0,"div",15),d()}if(t&2){let r=e.$implicit,n=g();m(),Z(" ",n.displayOptionTitle(r)," "),m(),_("ngIf",n.selectedSort==r&&n.sortAscending),m(),_("ngIf",n.selectedSort==r&&!n.sortAscending)}}function EM(t,e){t&1&&(u(0,"div"),L(),u(1,"svg",4),w(2,"path",19),d()())}function IM(t,e){if(t&1){let r=P();u(0,"div",18),E("click",function(){let i=C(r).$implicit,o=g();return D(o.setMediaFilter(i))}),p(1),x(2,EM,3,0,"div",15),d()}if(t&2){let r=e.$implicit,n=g();m(),Z(" ",n.displayOptionTitle(r)," "),m(),_("ngIf",n.selectedFilter==r)}}function MM(t,e){t&1&&(u(0,"div",20)(1,"div",21),w(2,"div",22)(3,"div",22)(4,"div",22)(5,"div",22),d()())}function SM(t,e){t&1&&(u(0,"div",20)(1,"p"),p(2,"No media items found matching the selected filter!"),d()())}function TM(t,e){t&1&&(ft(0),L(),u(1,"svg",30),w(2,"path",31),d(),pt())}function AM(t,e){if(t&1&&(L(),u(0,"svg",32),w(1,"path",33),d()),t&2){let r=g().$implicit;X("success",r.trailer_exists)}}function OM(t,e){if(t&1&&(u(0,"div",26),w(1,"img",27),u(2,"h5",28),p(3),d(),x(4,TM,3,0,"ng-container",29)(5,AM,2,2,"ng-template",null,1,ge),d()),t&2){let r=e.$implicit,n=pe(6);_("routerLink",fr(6,CM,r.id)),m(),Qe("src",r.poster_path||"assets/poster-sm.png",ot),Qe("alt",r.title),m(2),$(r.title),m(),_("ngIf",r.monitor)("ngIfElse",n)}}function NM(t,e){if(t&1){let r=P();x(0,SM,3,0,"div",23),u(1,"div",24),E("nearEnd",function(){C(r);let i=g();return D(i.onNearEndScroll())}),x(2,OM,7,8,"div",25),d()}if(t&2){let r=g();_("ngIf",r.displayMediaList.length===0),m(2),_("ngForOf",r.displayMediaList)}}var hf=(()=>{let e=class e{constructor(n,i,o){this.movieService=n,this.seriesService=i,this.route=o,this.title="Media",this.pageType="Media",this.displayCount=50,this.displayMediaList=[],this.filteredMediaList=[],this.allMedia=[],this.isLoading=!0,this.selectedSort="added_at",this.sortAscending=!0,this.sortOptions=["title","year","added_at","updated_at"],this.selectedFilter="missing",this.filterOptions=["all","monitored","unmonitored","downloaded","missing"],this.mediaService=this.seriesService}ngOnInit(){this.isLoading=!0;let n=this.route.snapshot.url[0].path;n==="movies"?(this.title="Movies",this.pageType="Movies",this.mediaService=this.movieService,this.mediaService.getAllMedia().subscribe(i=>{this.displayMedia(i)})):n==="series"?(this.title="Series",this.pageType="Series",this.mediaService=this.seriesService,this.mediaService.getAllMedia().subscribe(i=>{this.displayMedia(i)})):(this.title="All Media",this.pageType="AllMedia",this.mediaService=this.movieService,this.mediaService.getAllMedia().subscribe(i=>{this.displayMedia(i)}))}saveSortOption(){localStorage.setItem(`Trailarr${this.pageType}Sort`,this.selectedSort),localStorage.setItem(`Trailarr${this.pageType}SortAscending`,this.sortAscending.toString())}saveFilterOption(){localStorage.setItem(`Trailarr${this.pageType}Filter`,this.selectedFilter)}retrieveSortOption(){let n=localStorage.getItem(`Trailarr${this.pageType}Sort`),i=localStorage.getItem(`Trailarr${this.pageType}SortAscending`);n&&(this.selectedSort=n),i&&(this.sortAscending=i==="true")}retrieveFilterOption(){let n=localStorage.getItem(`Trailarr${this.pageType}Filter`);n&&(this.selectedFilter=n)}displayMedia(n){this.retrieveSortOption(),this.retrieveFilterOption(),this.displayMediaList=[],this.displayCount=50,this.allMedia=n,this.filteredMediaList=this.filterMediaList(this.selectedFilter,n),this.sortMediaList(this.selectedSort,this.filteredMediaList),this.isLoading=!1,this.displayMediaList=this.filteredMediaList.slice(0,this.displayCount)}displayOptionTitle(n){return n=n.replace("_at",""),n.charAt(0).toUpperCase()+n.slice(1)}sortMediaList(n,i){i.sort((o,s)=>o[n].toString().localeCompare(s[n].toString())),this.sortAscending||i.reverse()}setMediaSort(n){this.displayCount=50,this.selectedSort===n?this.sortAscending=!this.sortAscending:(this.selectedSort=n,this.sortAscending=!0),this.sortMediaList(n,this.filteredMediaList),this.displayMediaList=this.filteredMediaList.slice(0,this.displayCount),this.saveSortOption()}setMediaFilter(n){this.isLoading=!0,this.displayCount=50,this.displayMediaList=[],this.filteredMediaList=[],this.selectedFilter=n,this.filteredMediaList=this.filterMediaList(n,this.allMedia),this.sortMediaList(this.selectedSort,this.filteredMediaList),setTimeout(()=>{this.isLoading=!1,this.displayMediaList=this.filteredMediaList.slice(0,this.displayCount)},1e3),this.saveFilterOption()}filterMediaList(n,i){return i.length===0||n==="all"?i:n==="monitored"?i.filter(o=>o.monitor):n==="unmonitored"?i.filter(o=>!o.monitor&&!o.trailer_exists):n==="downloaded"?i.filter(o=>o.trailer_exists):n==="missing"?i.filter(o=>!o.trailer_exists):i}onNearEndScroll(){this.displayCount>=this.filteredMediaList.length||(this.displayMediaList.push(...this.filteredMediaList.slice(this.displayCount,this.displayCount+20)),this.displayCount+=20)}};e.\u0275fac=function(i){return new(i||e)(b(Ti),b(fl),b(yt))},e.\u0275cmp=ee({type:e,selectors:[["app-media"]],standalone:!0,features:[te],decls:19,vars:6,consts:[["mediaLoaded",""],["trailerExistsIcon",""],[1,"media-header"],[1,"media-header-sortitem"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"icon"],["d","M74-159v-135h304v135H74Zm0-255v-134h558v134H74Zm0-254v-135h812v135H74Z"],[1,"sortitem-dropdown"],["class","sortitem-dropdown-option",3,"click",4,"ngFor","ngForOf"],[1,"media-header-filteritem"],["d","M371-158v-135h219v135H371ZM200-413v-135h558v135H200ZM74-668v-135h812v135H74Z"],[1,"filteritem-dropdown"],["class","filteritem-dropdown-option",3,"click",4,"ngFor","ngForOf"],[1,"media-container"],["class","center",4,"ngIf","ngIfElse"],[1,"sortitem-dropdown-option",3,"click"],[4,"ngIf"],["d","M480-130 200-410l96-96 184 185 184-185 96 96-280 280Zm0-299L200-708l96-97 184 185 184-185 96 97-280 279Z"],["d","m296-155-96-97 280-279 280 279-96 97-184-185-184 185Zm0-299-96-96 280-280 280 280-96 96-184-185-184 185Z"],[1,"filteritem-dropdown-option",3,"click"],["d","M382-200 113-469l97-97 172 173 369-369 97 96-466 466Z"],[1,"center"],[1,"loading-wave"],[1,"loading-bar"],["class","center",4,"ngIf"],["appScrollNearEnd","",1,"media-row",3,"nearEnd"],["class","media-card",3,"routerLink",4,"ngFor","ngForOf"],[1,"media-card",3,"routerLink"],[3,"src","alt"],[1,"card-title"],[4,"ngIf","ngIfElse"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Monitored",1,"monitored-icon"],["d","M713-600 600-713l56-57 57 57 141-142 57 57-198 198ZM200-120v-640q0-33 23.5-56.5T280-840h280q-20 30-30 57.5T520-720q0 72 45.5 127T680-524q23 3 40 3t40-3v404L480-240 200-120Z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-label","Trailer Exists",1,"downloaded-icon"],["d","M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q65 0 123 19t107 53l-58 59q-38-24-81-37.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160q133 0 226.5-93.5T800-480q0-18-2-36t-6-35l65-65q11 32 17 66t6 70q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm-56-216L254-466l56-56 114 114 400-401 56 56-456 457Z"]],template:function(i,o){if(i&1&&(u(0,"div",2)(1,"div",3),L(),u(2,"svg",4),w(3,"path",5),d(),Ce(),u(4,"div"),p(5),d(),u(6,"div",6),x(7,xM,4,3,"div",7),d()(),u(8,"div",8),L(),u(9,"svg",4),w(10,"path",9),d(),Ce(),u(11,"div"),p(12),d(),u(13,"div",10),x(14,IM,3,2,"div",11),d()()(),u(15,"div",12),x(16,MM,6,0,"div",13)(17,NM,3,2,"ng-template",null,0,ge),d()),i&2){let s=pe(18);m(5),Z(" ",o.displayOptionTitle(o.selectedSort),""),m(2),_("ngForOf",o.sortOptions),m(5),Z(" ",o.displayOptionTitle(o.selectedFilter),""),m(2),_("ngForOf",o.filterOptions),m(2),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[St,Oe,De,lt,nv],styles:[".media-header[_ngcontent-%COMP%]{display:flex;position:sticky;top:76px;width:100%;justify-content:flex-end;background-color:var(--color-surface-container-high);color:var(--color-on-surface);align-items:center;padding:0 1rem;z-index:99}@media (width < 765px){.media-header[_ngcontent-%COMP%]{position:fixed;inset:auto 0 78px}}.media-header-sortitem[_ngcontent-%COMP%], .media-header-filteritem[_ngcontent-%COMP%]{position:relative;display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;cursor:pointer;font-weight:700;padding:1rem;gap:.5rem}.icon[_ngcontent-%COMP%]{margin:0}.media-header-sortitem[_ngcontent-%COMP%]:hover, .media-header-filteritem[_ngcontent-%COMP%]:hover{background-color:var(--color-surface-container-highest)}.sortitem-dropdown[_ngcontent-%COMP%], .filteritem-dropdown[_ngcontent-%COMP%]{display:none;position:absolute;min-width:8rem;top:3.5rem;right:0;background-color:var(--color-surface-container-highest);z-index:100;box-shadow:.5rem 1rem 1rem 0 var(--color-shadow)}@media (width < 765px){.sortitem-dropdown[_ngcontent-%COMP%], .filteritem-dropdown[_ngcontent-%COMP%]{top:auto;bottom:3.5rem;box-shadow:.5rem -1rem 1rem 0 var(--color-shadow)}}.filteritem-dropdown[_ngcontent-%COMP%]{min-width:11rem}.media-header-sortitem[_ngcontent-%COMP%]:hover .sortitem-dropdown[_ngcontent-%COMP%], .media-header-filteritem[_ngcontent-%COMP%]:hover .filteritem-dropdown[_ngcontent-%COMP%]{display:flex;flex-direction:column}.sortitem-dropdown-option[_ngcontent-%COMP%], .filteritem-dropdown-option[_ngcontent-%COMP%]{display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:.5rem;font-weight:400;height:2.75rem;padding:.5rem .25rem .5rem .75rem}.sortitem-dropdown-option[_ngcontent-%COMP%]:hover, .filteritem-dropdown-option[_ngcontent-%COMP%]:hover{background-color:var(--color-secondary-container);color:var(--color-primary)}.media-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;overflow-y:auto}@media (width < 765px){.media-container[_ngcontent-%COMP%]{margin-bottom:80px}}.text-center[_ngcontent-%COMP%]{text-align:center}.center[_ngcontent-%COMP%]{margin:auto;align-content:center;min-height:70vh}.media-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;padding:1rem}@media (width < 900px){.media-row[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.5rem;padding:.5rem}}.media-card[_ngcontent-%COMP%]{min-height:180px;display:flex;flex-direction:column;transition:all .4s;border-radius:10px;box-shadow:0 0 10px 5px #000000b4;cursor:pointer;position:relative}.media-card[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;border-radius:10px}.media-card[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;top:5px;height:24px;width:24px}.media-card[_ngcontent-%COMP%] .monitored-icon[_ngcontent-%COMP%], .media-card[_ngcontent-%COMP%] .downloaded-icon[_ngcontent-%COMP%]{fill:var(--color-info);right:5px}.media-card[_ngcontent-%COMP%] .success[_ngcontent-%COMP%]{fill:var(--color-success)}.media-card[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{display:none}.media-card[_ngcontent-%COMP%]:hover{border-radius:15px;box-shadow:0 0 10px 5px #000000b4}.media-card[_ngcontent-%COMP%]:hover img[_ngcontent-%COMP%]{border-radius:15px;filter:blur(2px);-webkit-filter:blur(2px)}.media-card[_ngcontent-%COMP%]:hover h5[_ngcontent-%COMP%]{position:absolute;inset:0%;display:flex;justify-content:center;align-items:center;width:100%;text-align:center;overflow:hidden;cursor:pointer;font-size:1.5rem;font-weight:900;color:var(--color-primary)}"]});let t=e;return t})();var on=(()=>{let e=class e{constructor(n){this.http=n,this.settingsUrl=Ne.apiUrl+Ne.settings,this.connectionsUrl=Ne.apiUrl+Ne.connections}getSettings(){return this.http.get(this.settingsUrl)}getServerStats(){var n=this.settingsUrl+"stats";return this.http.get(n)}updateSetting(n,i){let o=this.settingsUrl+"update",s={key:n,value:i};return this.http.put(o,s).pipe(qe(a=>{let l="";return a.error instanceof ErrorEvent?l=`Error: ${a.error.message}`:l=`Error: ${a.status} ${a.error.detail}`,O(l)}))}getConnections(){return this.http.get(this.connectionsUrl).pipe(A(n=>n.map(i=>J(M({},i),{added_at:new Date(i.added_at)}))))}getConnection(n){var i=this.connectionsUrl+n;return this.http.get(i).pipe(A(o=>J(M({},o),{added_at:new Date(o.added_at)})))}addConnection(n){return this.http.post(this.connectionsUrl,n).pipe(qe(i=>{let o="";return i.error instanceof ErrorEvent?o=`Error: ${i.error.message}`:o=`Error: ${i.status} ${i.error.detail}`,O(o)}))}updateConnection(n){var i=this.connectionsUrl+n.id;return this.http.put(i,n).pipe(qe(o=>{let s="";return o.error instanceof ErrorEvent?s=`Error: ${o.error.message}`:s=`Error: ${o.status} ${o.error.detail}`,O(s)}))}deleteConnection(n){var i=this.connectionsUrl+n;return this.http.delete(i).pipe(qe(o=>{let s="";return o.error instanceof ErrorEvent?s=`Error: ${o.error.message}`:s=`Error: ${o.status} ${o.error.detail}`,O(s)}))}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var rv=(()=>{let e=class e{constructor(n){this.settingsService=n}ngOnInit(){this.settingsService.getSettings().subscribe(n=>this.settings=n),this.settingsService.getServerStats().subscribe(n=>this.serverStats=n)}};e.\u0275fac=function(i){return new(i||e)(b(on))},e.\u0275cmp=ee({type:e,selectors:[["app-about"]],standalone:!0,features:[te],decls:79,vars:12,consts:[[1,"about-container"],[1,"about-section"],[1,"about-content"],["href","https://github.com/nandyalu/trailarr","target","_blank"],["href","https://nandyalu.github.io/trailarr","target","_blank"],["href","https://github.com/nandyalu/trailarr/issues","target","_blank"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"section",1)(2,"h1"),p(3,"About Trailarr"),d(),w(4,"hr"),u(5,"div",2)(6,"label"),p(7,"Version"),d(),u(8,"code"),p(9),d()(),u(10,"div",2)(11,"label"),p(12,"API Key"),d(),u(13,"code"),p(14),d()(),u(15,"div",2)(16,"label"),p(17,"Appdata Folder"),d(),u(18,"code"),p(19),d()(),u(20,"div",2)(21,"label"),p(22,"Server Stated"),d(),u(23,"code"),p(24),Se(25,"timeago"),d()(),u(26,"div",2)(27,"label"),p(28,"Timezone"),d(),u(29,"code"),p(30),d()()(),u(31,"section",1)(32,"h1"),p(33,"Statistics"),d(),w(34,"hr"),u(35,"div",2)(36,"label"),p(37,"Movies"),d(),u(38,"code"),p(39),d()(),u(40,"div",2)(41,"label"),p(42,"Movies Monitored"),d(),u(43,"code"),p(44),d()(),u(45,"div",2)(46,"label"),p(47,"Series"),d(),u(48,"code"),p(49),d()(),u(50,"div",2)(51,"label"),p(52,"Series Monitored"),d(),u(53,"code"),p(54),d()(),u(55,"div",2)(56,"label"),p(57,"Trailers downloaded"),d(),u(58,"code"),p(59),d()()(),u(60,"section",1)(61,"h1"),p(62,"Getting Support"),d(),w(63,"hr"),u(64,"div",2)(65,"label"),p(66,"Github"),d(),u(67,"a",3),p(68,"https://github.com/nandyalu/trailarr"),d()(),u(69,"div",2)(70,"label"),p(71,"Documentation"),d(),u(72,"a",4),p(73,"https://nandyalu.github.io/trailarr"),d()(),u(74,"div",2)(75,"label"),p(76,"Issues"),d(),u(77,"a",5),p(78,"https://github.com/nandyalu/trailarr/issues"),d()()()()),i&2&&(m(9),$(o.settings==null?null:o.settings.version),m(5),$(o.settings==null?null:o.settings.api_key),m(5),$(o.settings==null?null:o.settings.app_data_dir),m(5),$(o.settings!=null&&o.settings.server_start_time?Te(25,10,o.settings==null?null:o.settings.server_start_time):"Unknwon"),m(6),$(o.settings==null?null:o.settings.timezone),m(9),$(o.serverStats==null?null:o.serverStats.movies_count),m(5),$(o.serverStats==null?null:o.serverStats.movies_monitored),m(5),$(o.serverStats==null?null:o.serverStats.series_count),m(5),$(o.serverStats==null?null:o.serverStats.series_monitored),m(5),$(o.serverStats==null?null:o.serverStats.trailers_downloaded))},dependencies:[yi,el],styles:[".about-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.about-content[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;margin:1.5rem .5rem;gap:1rem}.about-content[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:700;text-align:left;width:40%}.about-content[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(2){text-decoration:none;text-align:left;margin:0;padding:.25rem}@media screen and (max-width: 768px){.about-content[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:.25rem}.about-content[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%;font-weight:unset;font-style:italic;font-size:small}}"]});let t=e;return t})();var kM=["cancelDialog"];function PM(t,e){t&1&&(u(0,"p",32),p(1,"Server Name is required! Minimum 3 characters"),d())}function RM(t,e){if(t&1){let r=P();u(0,"div",33),E("click",function(){let i=C(r).$implicit,o=g();return D(o.setArrType(i))})("keydown.enter",function(){let i=C(r).$implicit,o=g();return D(o.setArrType(i))})("keydown.space",function(){let i=C(r).$implicit,o=g();return D(o.setArrType(i))}),p(1),Se(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=g();X("selected",r===n.addConnectionForm.value.arrType),m(),Z(" ",Te(2,3,r)," ")}}function FM(t,e){if(t&1){let r=P();u(0,"div",34),E("click",function(){let i=C(r).$implicit,o=g();return D(o.setMonitorType(i))})("keydown.enter",function(){let i=C(r).$implicit,o=g();return D(o.setMonitorType(i))})("keydown.space",function(){let i=C(r).$implicit,o=g();return D(o.setMonitorType(i))}),p(1),Se(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=g();X("selected",r===n.addConnectionForm.value.monitorType),m(),Z(" ",Te(2,3,r)," ")}}function LM(t,e){t&1&&(u(0,"p",32),p(1,"Server URL is invalid!"),d())}function VM(t,e){t&1&&(u(0,"p",32),p(1,"APIKey is invalid!"),d())}function jM(t,e){if(t&1){let r=P();u(0,"div",35)(1,"div",3)(2,"label",36),p(3,"Path From"),d(),w(4,"input",37),d(),u(5,"div",3)(6,"label",38),p(7,"Path To"),d(),w(8,"input",39),d(),u(9,"button",40),E("click",function(){let i=C(r).index,o=g();return D(o.removePathMapping(i))}),L(),u(10,"svg",20),w(11,"path",24),d()()()}if(t&2){let r=e.index;_("formGroupName",r)}}function $M(t,e){if(t&1&&(u(0,"p"),p(1),d()),t&2){let r=g();m(),$(r.addConnResult)}}var iv=(()=>{let e=class e{constructor(n,i){this._location=n,this.settingsService=i,this.arrOptions=["radarr","sonarr"],this.monitorOptions=["missing","new","none","sync"],this.name=new be("",[_e.required,_e.minLength(3)]),this.url=new be("",[_e.required,_e.pattern("https?://.*:\\d{2,}")]),this.apiKey=new be("",[_e.required,_e.pattern("^[a-zA-Z0-9]*$"),_e.minLength(32),_e.maxLength(50)]),this.addConnectionForm=new nn({name:this.name,arrType:new be("radarr"),monitorType:new be("new"),url:this.url,apiKey:this.apiKey,path_mappings:new wi([])}),this.addConnResult=""}setArrType(n){this.addConnectionForm.patchValue({arrType:n}),this.addConnectionForm.markAsTouched(),this.addConnectionForm.markAsDirty()}setMonitorType(n){this.addConnectionForm.patchValue({monitorType:n}),this.addConnectionForm.markAsTouched(),this.addConnectionForm.markAsDirty()}get pathMappings(){return this.addConnectionForm.get("path_mappings")}addPathMapping(){let n=new nn({path_from:new be("",_e.required),path_to:new be("",_e.required)});this.pathMappings.push(n),this.addConnectionForm.markAsTouched(),this.addConnectionForm.markAsDirty()}removePathMapping(n){this.pathMappings.removeAt(n),this.addConnectionForm.markAsTouched(),this.addConnectionForm.markAsDirty()}showCancelDialog(){this.cancelDialog.nativeElement.showModal()}closeCancelDialog(){this.cancelDialog.nativeElement.close()}onCancel(){this.addConnectionForm.dirty?this.showCancelDialog():this._location.back()}onConfirmCancel(){this.showCancelDialog(),this._location.back()}onSubmit(){if(this.addConnectionForm.invalid)return;let n={name:this.addConnectionForm.value.name||"",arr_type:this.addConnectionForm.value.arrType||"",url:this.addConnectionForm.value.url||"",api_key:this.addConnectionForm.value.apiKey||"",monitor:this.addConnectionForm.value.monitorType||"",path_mappings:this.addConnectionForm.value.path_mappings||[]};this.settingsService.addConnection(n).subscribe(i=>{this.addConnResult=i,i.toLowerCase().includes("version")&&setTimeout(()=>{this._location.back()},3e3)})}};e.\u0275fac=function(i){return new(i||e)(b(Ht),b(on))},e.\u0275cmp=ee({type:e,selectors:[["app-add-connection"]],viewQuery:function(i,o){if(i&1&&Kt(kM,5),i&2){let s;bt(s=xt())&&(o.cancelDialog=s.first)}},standalone:!0,features:[te],decls:65,vars:9,consts:[["cancelDialog",""],[1,"form-container"],[3,"formGroup"],[1,"input-group"],["for","name"],["id","name","type","text","formControlName","name","placeholder","Connection Name","autocomplete","off","autocapitalize","words","tabindex","1","oninput","this.value = this.value.charAt(0).toUpperCase() + this.value.slice(1)"],["class","invalid-text",4,"ngIf"],[1,"d-row"],[1,"option-container"],["id","arrtype",1,"options-bar"],["class","option","tabindex","2",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["id","monitorType",1,"options-bar"],["class","option","tabindex","3",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","url"],["id","url","type","url","formControlName","url","placeholder","Server URL Ex: http://192.168.0.15:6969","tabindex","4","autocomplete","off"],["for","api_key"],["id","apiKey","type","text","formControlName","apiKey","placeholder","APIKEY","tabindex","5","autocomplete","off"],["formArrayName","path_mappings"],["class","d-row",3,"formGroupName",4,"ngFor","ngForOf"],["id","cancel","tabindex","10",1,"animated-button","tertiary",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z"],[1,"text"],["id","cancel","tabindex","11",1,"animated-button","secondary",3,"click"],["d","m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"],["id","submit","type","submit","tabindex","12",1,"animated-button","primary",3,"click","disabled"],["d","M840-680v480q0 33-23.5 56.5T760-120H200q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h480l160 160Zm-80 34L646-760H200v560h560v-446ZM480-240q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM240-560h360v-160H240v160Zm-40-86v446-560 114Z"],[4,"ngIf"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"secondary",3,"click"],["tabindex","1",1,"primary",3,"click"],[1,"invalid-text"],["tabindex","2",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","3",1,"option",3,"click","keydown.enter","keydown.space"],[1,"d-row",3,"formGroupName"],["for","path_from"],["id","path_from","type","text","formControlName","path_from","placeholder","Arr Internal Path","tabindex","6","autocomplete","off"],["for","path_to"],["id","path_to","type","text","formControlName","path_to","placeholder","Trailarr Internal Path","tabindex","6","autocomplete","off"],["id","remove","name","Remove Path Mapping","tabindex","6",1,"icononly-button","tertiary",3,"click"]],template:function(i,o){if(i&1){let s=P();u(0,"div",1)(1,"h2"),p(2,"Add Connection:"),d(),w(3,"hr"),u(4,"form",2)(5,"div",3)(6,"label",4),p(7,"Connection Name"),d(),w(8,"input",5),x(9,PM,2,0,"p",6),d(),u(10,"div",7)(11,"div",8)(12,"label"),p(13,"Arr Type: "),d(),u(14,"div",9),x(15,RM,3,5,"div",10),d()(),u(16,"div",8)(17,"label"),p(18,"Monitor Type: "),d(),u(19,"div",11),x(20,FM,3,5,"div",12),d()()(),u(21,"div",3)(22,"label",13),p(23,"Server URL"),d(),w(24,"input",14),x(25,LM,2,0,"p",6),d(),u(26,"div",3)(27,"label",15),p(28,"API Key"),d(),w(29,"input",16),x(30,VM,2,0,"p",6),d(),u(31,"h3"),p(32,"Path Mappings:"),d(),w(33,"hr"),u(34,"div",17),x(35,jM,12,1,"div",18),d(),u(36,"div",7)(37,"button",19),E("click",function(){return C(s),D(o.addPathMapping())}),L(),u(38,"svg",20),w(39,"path",21),d(),Ce(),u(40,"span",22),p(41,"Add Path Mapping"),d()()(),u(42,"div",7)(43,"button",23),E("click",function(){return C(s),D(o.onCancel())}),L(),u(44,"svg",20),w(45,"path",24),d(),Ce(),u(46,"span",22),p(47,"Cancel"),d()(),u(48,"button",25),E("click",function(){return C(s),D(o.onSubmit())}),L(),u(49,"svg",20),w(50,"path",26),d(),Ce(),u(51,"span",22),p(52,"submit"),d()()(),x(53,$M,2,1,"p",27),d()(),u(54,"dialog",28,0),E("click",function(){return C(s),D(o.closeCancelDialog())}),u(56,"div",29),E("click",function(l){return C(s),D(l.stopPropagation())}),u(57,"h2"),p(58,"Unsaved Changes"),d(),u(59,"p"),p(60,"Canges will be lost. Are you sure you want to cancel?"),d(),u(61,"button",30),E("click",function(){return C(s),D(o.onConfirmCancel())}),p(62,"Yes"),d(),u(63,"button",31),E("click",function(){return C(s),D(o.closeCancelDialog())}),p(64,"No"),d()()()}i&2&&(m(4),_("formGroup",o.addConnectionForm),m(5),_("ngIf",o.name.invalid&&o.name.touched),m(6),_("ngForOf",o.arrOptions),m(5),_("ngForOf",o.monitorOptions),m(5),_("ngIf",o.url.invalid&&o.url.touched),m(5),_("ngIf",o.apiKey.invalid&&o.apiKey.touched),m(5),_("ngForOf",o.pathMappings.controls),m(13),_("disabled",!o.addConnectionForm.valid),m(5),_("ngIf",o.addConnResult))},dependencies:[Si,xi,Mt,rn,Di,Ei,Ao,Ii,Mi,St,De,Oe,ri],styles:[".form-container[_ngcontent-%COMP%]{width:100%;border:2px solid var(--color-outline);padding:24px;display:flex;flex-direction:column;box-sizing:border-box;position:relative;border-radius:16px;background-color:var(--color-surface-container);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.form-container[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{display:block;padding:0;border:var(--color-outline);border-radius:8px}.input-group[_ngcontent-%COMP%]{flex-grow:1;display:flex;flex-direction:column;gap:2px;margin-bottom:1rem}.input-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-right:10px;display:block;margin-bottom:5px}.input-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:auto;padding:12px;font-family:inherit;background-color:var(--color-surface-container-high);color:var(--color-on-surface);border:2px solid var(--color-outline);border-radius:8px}input.ng-touched.ng-invalid[_ngcontent-%COMP%]{border:2px solid var(--color-error);opacity:.6;background-color:var(--color-error-container);color:var(--color-on-error-container);font-weight:700}.input-group[_ngcontent-%COMP%] .invalid-text[_ngcontent-%COMP%]{color:var(--color-error)}.d-row[_ngcontent-%COMP%]{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;justify-content:space-around;align-items:center}.option-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin:1rem 0 0}.option-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{padding:10px 10px 10px 0;display:block;margin-right:10px;background-color:var(--color-surface-container)}.option-container[_ngcontent-%COMP%] .options-bar[_ngcontent-%COMP%]{display:flex;background-color:var(--color-surface-container-high);border-radius:10px;border:.5px solid var(--color-outline)}.option-container[_ngcontent-%COMP%] .option[_ngcontent-%COMP%]{padding:10px;cursor:pointer;border-radius:10px;transition:.3s ease}.option-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background-color:var(--color-tertiary-container);font-weight:600;color:var(--color-on-tertiary-container)}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}"]});let t=e;return t})();var ov=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["app-connections"]],standalone:!0,features:[te],decls:1,vars:0,template:function(i,o){i&1&&w(0,"router-outlet")},dependencies:[wr]});let t=e;return t})();var UM=["cancelDialog"];function BM(t,e){t&1&&(u(0,"p",32),p(1,"Server Name is required! Minimum 3 characters"),d())}function HM(t,e){if(t&1){let r=P();u(0,"div",33),E("click",function(){let i=C(r).$implicit,o=g();return D(o.setArrType(i))})("keydown.enter",function(){let i=C(r).$implicit,o=g();return D(o.setArrType(i))})("keydown.space",function(){let i=C(r).$implicit,o=g();return D(o.setArrType(i))}),p(1),Se(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=g();X("selected",r===n.editConnectionForm.value.arrType),m(),Z(" ",Te(2,3,r)," ")}}function qM(t,e){if(t&1){let r=P();u(0,"div",34),E("click",function(){let i=C(r).$implicit,o=g();return D(o.setMonitorType(i))})("keydown.enter",function(){let i=C(r).$implicit,o=g();return D(o.setMonitorType(i))})("keydown.space",function(){let i=C(r).$implicit,o=g();return D(o.setMonitorType(i))}),p(1),Se(2,"uppercase"),d()}if(t&2){let r=e.$implicit,n=g();X("selected",r===n.editConnectionForm.value.monitorType),m(),Z(" ",Te(2,3,r)," ")}}function zM(t,e){t&1&&(u(0,"p",32),p(1,"Server URL is invalid!"),d())}function GM(t,e){t&1&&(u(0,"p",32),p(1,"APIKey is invalid!"),d())}function WM(t,e){if(t&1){let r=P();u(0,"div",35)(1,"div",3)(2,"label",36),p(3,"Path From"),d(),w(4,"input",37),d(),u(5,"div",3)(6,"label",38),p(7,"Path To"),d(),w(8,"input",39),d(),u(9,"button",40),E("click",function(){let i=C(r).index,o=g();return D(o.removePathMapping(i))}),L(),u(10,"svg",20),w(11,"path",24),d()()()}if(t&2){let r=e.index;_("formGroupName",r)}}function ZM(t,e){if(t&1&&(u(0,"p"),p(1),d()),t&2){let r=g();m(),$(r.addConnResult)}}var sv=(()=>{let e=class e{constructor(n,i,o){this._location=n,this.settingsService=i,this.route=o,this.connectionId=0,this.arrOptions=["radarr","sonarr"],this.monitorOptions=["missing","new","none","sync"],this.name=new be("",[_e.required,_e.minLength(3)]),this.url=new be("",[_e.required,_e.pattern("https?://.*:\\d{2,}")]),this.apiKey=new be("",[_e.required,_e.minLength(32),_e.maxLength(50)]),this.editConnectionForm=new nn({name:this.name,arrType:new be("radarr"),monitorType:new be("new"),url:this.url,apiKey:this.apiKey,path_mappings:new wi([])}),this.addConnResult=""}ngOnInit(){this.route.params.subscribe(n=>{this.connectionId=n.id,this.settingsService.getConnection(this.connectionId).subscribe(i=>{this.editConnectionForm.patchValue({name:i.name,arrType:i.arr_type,monitorType:i.monitor,url:i.url,apiKey:i.api_key}),this.pathMappings.clear(),i.path_mappings.forEach(o=>{this.addPathMapping(o,!1)})})})}setArrType(n){this.editConnectionForm.patchValue({arrType:n}),this.editConnectionForm.markAsTouched(),this.editConnectionForm.markAsDirty()}setMonitorType(n){this.editConnectionForm.patchValue({monitorType:n}),this.editConnectionForm.markAsTouched(),this.editConnectionForm.markAsDirty()}get pathMappings(){return this.editConnectionForm.get("path_mappings")}addPathMapping(n=null,i=!0){n||(n={id:null,connection_id:null,path_from:"",path_to:""});let o=new nn({id:new be(n.id),connection_id:new be(n.connection_id),path_from:new be(n.path_from,_e.required),path_to:new be(n.path_to,_e.required)});this.pathMappings.push(o),i&&(this.editConnectionForm.markAsTouched(),this.editConnectionForm.markAsDirty())}removePathMapping(n){this.pathMappings.removeAt(n),this.editConnectionForm.markAsTouched(),this.editConnectionForm.markAsDirty()}showCancelDialog(){this.cancelDialog.nativeElement.showModal()}closeCancelDialog(){this.cancelDialog.nativeElement.close()}onCancel(){this.editConnectionForm.dirty?this.showCancelDialog():this._location.back()}onConfirmCancel(){this.showCancelDialog(),this._location.back()}onSubmit(){if(this.editConnectionForm.invalid)return;let n={id:this.connectionId,name:this.editConnectionForm.value.name||"",arr_type:this.editConnectionForm.value.arrType||"",url:this.editConnectionForm.value.url||"",api_key:this.editConnectionForm.value.apiKey||"",monitor:this.editConnectionForm.value.monitorType||"",path_mappings:this.editConnectionForm.value.path_mappings||[]};this.settingsService.updateConnection(n).subscribe(i=>{this.addConnResult=i,i.toLowerCase().includes("success")&&setTimeout(()=>{this._location.back()},2e3)})}};e.\u0275fac=function(i){return new(i||e)(b(Ht),b(on),b(yt))},e.\u0275cmp=ee({type:e,selectors:[["app-edit-connection"]],viewQuery:function(i,o){if(i&1&&Kt(UM,5),i&2){let s;bt(s=xt())&&(o.cancelDialog=s.first)}},standalone:!0,features:[te],decls:65,vars:9,consts:[["cancelDialog",""],[1,"form-container"],[3,"formGroup"],[1,"input-group"],["for","name"],["id","name","type","text","formControlName","name","placeholder","Connection Name","autocomplete","off","autocapitalize","words","tabindex","1","oninput","this.value = this.value.charAt(0).toUpperCase() + this.value.slice(1)"],["class","invalid-text",4,"ngIf"],[1,"d-row"],[1,"option-container"],["id","arrtype",1,"options-bar"],["class","option","tabindex","2",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["id","monitorType",1,"options-bar"],["class","option","tabindex","3",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","url"],["id","url","type","url","formControlName","url","placeholder","Server URL Ex: http://192.168.0.15:6969","tabindex","4","autocomplete","off"],["for","api_key"],["id","apiKey","type","text","formControlName","apiKey","placeholder","APIKEY","tabindex","5","autocomplete","off"],["formArrayName","path_mappings"],["class","d-row",3,"formGroupName",4,"ngFor","ngForOf"],["id","add-path-mapping","tabindex","10",1,"animated-button","tertiary",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z"],[1,"text"],["id","cancel","tabindex","6",1,"animated-button","secondary",3,"click"],["d","m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"],["id","submit","type","submit","tabindex","7",1,"animated-button","primary",3,"click","disabled"],["d","M840-680v480q0 33-23.5 56.5T760-120H200q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h480l160 160Zm-80 34L646-760H200v560h560v-446ZM480-240q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM240-560h360v-160H240v160Zm-40-86v446-560 114Z"],[4,"ngIf"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"secondary",3,"click"],["tabindex","1",1,"primary",3,"click"],[1,"invalid-text"],["tabindex","2",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","3",1,"option",3,"click","keydown.enter","keydown.space"],[1,"d-row",3,"formGroupName"],["for","path_from"],["id","path_from","type","text","formControlName","path_from","placeholder","Arr Internal Path","tabindex","6","autocomplete","off"],["for","path_to"],["id","path_to","type","text","formControlName","path_to","placeholder","Trailarr Internal Path","tabindex","6","autocomplete","off"],["id","remove","name","Remove Path Mapping","tabindex","6",1,"icononly-button","tertiary",3,"click"]],template:function(i,o){if(i&1){let s=P();u(0,"div",1)(1,"h2"),p(2,"Edit Connection:"),d(),w(3,"hr"),u(4,"form",2)(5,"div",3)(6,"label",4),p(7,"Connection Name"),d(),w(8,"input",5),x(9,BM,2,0,"p",6),d(),u(10,"div",7)(11,"div",8)(12,"label"),p(13,"Arr Type: "),d(),u(14,"div",9),x(15,HM,3,5,"div",10),d()(),u(16,"div",8)(17,"label"),p(18,"Monitor Type: "),d(),u(19,"div",11),x(20,qM,3,5,"div",12),d()()(),u(21,"div",3)(22,"label",13),p(23,"Server URL"),d(),w(24,"input",14),x(25,zM,2,0,"p",6),d(),u(26,"div",3)(27,"label",15),p(28,"API Key"),d(),w(29,"input",16),x(30,GM,2,0,"p",6),d(),u(31,"h3"),p(32,"Path Mappings:"),d(),w(33,"hr"),u(34,"div",17),x(35,WM,12,1,"div",18),d(),u(36,"div",7)(37,"button",19),E("click",function(){return C(s),D(o.addPathMapping())}),L(),u(38,"svg",20),w(39,"path",21),d(),Ce(),u(40,"span",22),p(41,"Add Path Mapping"),d()()(),u(42,"div",7)(43,"button",23),E("click",function(){return C(s),D(o.onCancel())}),L(),u(44,"svg",20),w(45,"path",24),d(),Ce(),u(46,"span",22),p(47,"Cancel"),d()(),u(48,"button",25),E("click",function(){return C(s),D(o.onSubmit())}),L(),u(49,"svg",20),w(50,"path",26),d(),Ce(),u(51,"span",22),p(52,"submit"),d()()(),x(53,ZM,2,1,"p",27),d()(),u(54,"dialog",28,0),E("click",function(){return C(s),D(o.closeCancelDialog())}),u(56,"div",29),E("click",function(l){return C(s),D(l.stopPropagation())}),u(57,"h2"),p(58,"Unsaved Changes"),d(),u(59,"p"),p(60,"Canges will be lost. Are you sure you want to cancel?"),d(),u(61,"button",30),E("click",function(){return C(s),D(o.onConfirmCancel())}),p(62,"Yes"),d(),u(63,"button",31),E("click",function(){return C(s),D(o.closeCancelDialog())}),p(64,"No"),d()()()}i&2&&(m(4),_("formGroup",o.editConnectionForm),m(5),_("ngIf",o.name.invalid&&o.name.touched),m(6),_("ngForOf",o.arrOptions),m(5),_("ngForOf",o.monitorOptions),m(5),_("ngIf",o.url.invalid&&o.url.touched),m(5),_("ngIf",o.apiKey.invalid&&o.apiKey.touched),m(5),_("ngForOf",o.pathMappings.controls),m(13),_("disabled",!o.editConnectionForm.valid||o.editConnectionForm.untouched),m(5),_("ngIf",o.addConnResult))},dependencies:[Si,xi,Mt,rn,Di,Ei,Ao,Ii,Mi,De,Oe,ri],styles:[".form-container[_ngcontent-%COMP%]{width:100%;border:2px solid var(--color-outline);padding:24px;display:flex;flex-direction:column;box-sizing:border-box;position:relative;border-radius:16px;background-color:var(--color-surface-container);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.form-container[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{display:block;padding:0;border:var(--color-outline);border-radius:8px}.input-group[_ngcontent-%COMP%]{flex-grow:1;display:flex;flex-direction:column;gap:2px;margin-bottom:1rem}.input-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-right:10px;display:block;margin-bottom:5px}.input-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:auto;padding:12px;font-family:inherit;background-color:var(--color-surface-container-high);color:var(--color-on-surface);border:2px solid var(--color-outline);border-radius:8px}input.ng-touched.ng-invalid[_ngcontent-%COMP%]{border:2px solid var(--color-error);opacity:.6;background-color:var(--color-error-container);color:var(--color-on-error-container);font-weight:700}.input-group[_ngcontent-%COMP%] .invalid-text[_ngcontent-%COMP%]{color:var(--color-error)}.d-row[_ngcontent-%COMP%]{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;justify-content:space-around;align-items:center}.option-container[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:1rem 0 0 0}.option-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{padding:10px 10px 10px 0;display:block;margin-right:10px;background-color:var(--color-surface-container)}.option-container[_ngcontent-%COMP%] .options-bar[_ngcontent-%COMP%]{display:flex;background-color:var(--color-surface-container-high);border-radius:10px;border:.5px solid var(--color-outline)}.option-container[_ngcontent-%COMP%] .option[_ngcontent-%COMP%]{padding:10px;cursor:pointer;border-radius:10px;transition:.3s ease}.option-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background-color:var(--color-tertiary-container);font-weight:600;color:var(--color-on-tertiary-container)}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}"]});let t=e;return t})();var QM=["deleteConnectionDialog"],YM=t=>["edit",t],KM=()=>["/settings","connections","add"];function JM(t,e){t&1&&(u(0,"div",13),w(1,"div",14)(2,"div",14)(3,"div",14)(4,"div",14),d())}function XM(t,e){if(t&1&&(u(0,"p"),p(1),d()),t&2){let r=g(2);Bm("result-",r.resultType,""),m(),$(r.resultMessage)}}function eS(t,e){t&1&&w(0,"img",30)}function tS(t,e){t&1&&w(0,"img",31)}function nS(t,e){if(t&1){let r=P();u(0,"div",19)(1,"h3",20),p(2),d(),u(3,"div",21)(4,"p"),p(5),d(),u(6,"p"),p(7),Se(8,"uppercase"),d(),u(9,"p"),p(10),Se(11,"date"),d()(),u(12,"a",22),x(13,eS,1,0,"img",23)(14,tS,1,0,"img",24),d(),u(15,"div",25)(16,"button",26),E("click",function(){let i=C(r).$implicit,o=g(3);return o.selectedId=i.id,D(o.showDeleteDialog())}),L(),u(17,"svg",6),w(18,"path",27),d(),Ce(),u(19,"span",8),p(20,"Delete"),d()(),u(21,"button",28),L(),u(22,"svg",6),w(23,"path",29),d(),Ce(),u(24,"span",8),p(25,"Edit"),d()()()()}if(t&2){let r=e.$implicit;m(2),$(r.name),m(3),Z("Address: ",r.url,""),m(2),Z("Monitor: ",Te(8,8,r.monitor),""),m(3),Z("Added: ",Te(11,10,r.added_at),""),m(2),Qe("href",r.url,ot),m(),_("ngIf",r.arr_type=="sonarr"),m(),_("ngIf",r.arr_type=="radarr"),m(7),_("routerLink",fr(12,YM,r.id))}}function rS(t,e){if(t&1&&(u(0,"div",17),x(1,nS,26,14,"div",18),d()),t&2){let r=g(2);m(),_("ngForOf",r.connectionList)}}function iS(t,e){t&1&&(u(0,"div",32)(1,"div",33),p(2," Add New! "),d(),u(3,"p",34),p(4,`I'm all alone here!. Click the "ADD" button to add some Radarr/Sonarr instances to let the magic happen!`),d()()),t&2&&(m(),_("routerLink",ua(1,KM)))}function oS(t,e){if(t&1&&(u(0,"h2"),p(1,"Connections"),d(),w(2,"hr"),x(3,XM,2,4,"p",15)(4,rS,2,1,"div",16)(5,iS,5,2,"ng-template",null,2,ge)),t&2){let r=pe(6),n=g();m(3),_("ngIf",n.resultMessage),m(),_("ngIf",n.connectionList.length>0)("ngIfElse",r)}}var av=(()=>{let e=class e{constructor(n,i){this._location=n,this.settingsService=i,this.connectionList=[],this.isLoading=!1,this.resultMessage="",this.resultType="",this.selectedId=0}ngOnInit(){this.getConnections()}getConnections(){this.isLoading=!0,this.settingsService.getConnections().subscribe(n=>{this.connectionList=n,this.isLoading=!1})}showDeleteDialog(){this.deleteConnectionDialog.nativeElement.showModal()}closeDeleteDialog(){this.deleteConnectionDialog.nativeElement.close()}onConfirmDelete(){this.closeDeleteDialog(),this.settingsService.deleteConnection(this.selectedId).subscribe(n=>{this.resultType="error",n.toLowerCase().includes("success")&&(this.resultType="success"),this.resultMessage=n,this.getConnections(),setTimeout(()=>{this.resultMessage=""},3e3)})}};e.\u0275fac=function(i){return new(i||e)(b(Ht),b(on))},e.\u0275cmp=ee({type:e,selectors:[["app-show-connections"]],viewQuery:function(i,o){if(i&1&&Kt(QM,5),i&2){let s;bt(s=xt())&&(o.deleteConnectionDialog=s.first)}},standalone:!0,features:[te],decls:22,vars:2,consts:[["connectionsLoaded",""],["deleteConnectionDialog",""],["noConnections",""],[1,"sett-conn-container"],["class","loading-wave center",4,"ngIf","ngIfElse"],["routerLink","add",1,"animated-button","top-left-button"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z"],[1,"text"],[3,"click"],[1,"dialog-content",3,"click"],["tabindex","2",1,"danger",3,"click"],["tabindex","1",1,"secondary",3,"click"],[1,"loading-wave","center"],[1,"loading-bar"],[3,"class",4,"ngIf"],["class","connection-container",4,"ngIf","ngIfElse"],[1,"connection-container"],["class","connection-card",4,"ngFor","ngForOf"],[1,"connection-card"],[1,"title"],[1,"content"],["target","_blank",1,"link-image",3,"href"],["src","assets/sonarr_128.png",4,"ngIf"],["src","assets/radarr_128.png",4,"ngIf"],[1,"buttons"],[1,"animated-button","secondary",3,"click"],["d","M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"],[1,"animated-button","primary",3,"routerLink"],["d","M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z"],["src","assets/sonarr_128.png"],["src","assets/radarr_128.png"],[1,"center"],[1,"all-empty-card","center",3,"routerLink"],[1,"text-primary"]],template:function(i,o){if(i&1){let s=P();u(0,"div",3),x(1,JM,5,0,"div",4),u(2,"button",5),L(),u(3,"svg",6),w(4,"path",7),d(),Ce(),u(5,"span",8),p(6,"Add New"),d()(),x(7,oS,7,3,"ng-template",null,0,ge),d(),u(9,"dialog",9,1),E("click",function(){return C(s),D(o.closeDeleteDialog())}),u(11,"div",10),E("click",function(l){return C(s),D(l.stopPropagation())}),u(12,"h2"),p(13,"Delete Connection"),d(),u(14,"p"),p(15,"This will Delete the connection and no longer monitor its Media"),d(),u(16,"p"),p(17,"Delete the connection?"),d(),u(18,"button",11),E("click",function(){return C(s),D(o.onConfirmDelete())}),p(19,"Delete"),d(),u(20,"button",12),E("click",function(){return C(s),D(o.closeDeleteDialog())}),p(21,"Cancel"),d()()()}if(i&2){let s=pe(8);m(),_("ngIf",o.isLoading)("ngIfElse",s)}},dependencies:[Ln,Oe,De,lt,ri],styles:[".sett-conn-container[_ngcontent-%COMP%]{height:100%;width:100%;display:flex;flex-direction:column;position:relative;gap:12px}.top-left-button[_ngcontent-%COMP%]{position:absolute;top:0;right:0;margin:10px}.center[_ngcontent-%COMP%]{margin:auto}.result-success[_ngcontent-%COMP%]{padding:10px;display:block;border-radius:4px;color:var(--color-success-text);background-color:var(--color-success)}.result-error[_ngcontent-%COMP%]{padding:10px;display:block;border-radius:4px;color:var(--color-error-text);background-color:var(--color-error)}.connection-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem}.connection-card[_ngcontent-%COMP%]{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr auto;gap:10px;max-width:500px;padding:12px;border:2px solid var(--color-outline);border-radius:8px;background-color:var(--color-surface-container);color:var(--color-on-surface)}.connection-card[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{grid-row:1;grid-column:1 / span 2;color:var(--color-primary);text-align:center}.connection-card[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{grid-row:2;grid-column:1}.connection-card[_ngcontent-%COMP%] .link-image[_ngcontent-%COMP%]{grid-row:2;grid-column:2;width:auto}.connection-card[_ngcontent-%COMP%] .buttons[_ngcontent-%COMP%]{grid-row:3;grid-column:1 / span 2;display:flex;justify-content:space-between}.dialog-content[_ngcontent-%COMP%]{background-color:var(--color-on-error-container);color:var(--color-on-error);padding:1rem;text-align:center}dialog[_ngcontent-%COMP%]::backdrop{background-image:linear-gradient(0deg,gray,#690005)}.dialog-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:10px}"]});let t=e;return t})();var lv=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["app-settings"]],standalone:!0,features:[te],decls:10,vars:0,consts:[[1,"settingsnav"],["routerLink","connections","routerLinkActive","active",1,"setnav-btn"],["routerLink","trailer","routerLinkActive","active",1,"setnav-btn"],["routerLink","about","routerLinkActive","active",1,"setnav-btn"],[1,"settings-container"],[1,"settings-content"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"a",1),p(2,"Connections"),d(),u(3,"a",2),p(4,"Trailer"),d(),u(5,"a",3),p(6,"About"),d()(),u(7,"div",4)(8,"div",5),w(9,"router-outlet"),d()())},dependencies:[lt,Ja,wr],styles:[".settings-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:1rem}@media (width < 765px){.settings-container[_ngcontent-%COMP%]{margin:.5rem}}.settingsnav[_ngcontent-%COMP%]{position:sticky;top:76px;left:0;right:0;z-index:99;margin:0;padding:0;display:flex;flex-direction:row;background-color:var(--color-surface-container-high);color:var(--color-on-surface)}@media (width < 765px){.settingsnav[_ngcontent-%COMP%]{order:2;justify-content:space-around;position:fixed;top:auto;bottom:78px}}.settingsnav[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1}.settings-content[_ngcontent-%COMP%]{order:2;padding:.5rem}@media (width < 765px){.settings-content[_ngcontent-%COMP%]{margin-bottom:80px;order:1}}.setnav-btn[_ngcontent-%COMP%]{margin:0;padding:.8rem;box-sizing:border-box;text-decoration:none;color:inherit;text-align:center;font-weight:400;transition:.3s;cursor:pointer;border-radius:0;border-bottom:2px solid transparent}.setnav-btn.active[_ngcontent-%COMP%]{background-color:var(--color-secondary-container);opacity:1;font-weight:600;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}.setnav-btn[_ngcontent-%COMP%]:not(.active):hover{background-color:var(--color-secondary-container);opacity:.6;font-weight:500;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}"]});let t=e;return t})();function sS(t,e){if(t&1&&(u(0,"div",12),p(1),d()),t&2){let r=e.$implicit;X("error",r.toLowerCase().includes("error")),m(),Z(" ",r," ")}}function aS(t,e){t&1&&(u(0,"div",13)(1,"strong"),p(2,"Warning:"),d(),p(3," Log Level set to 'Debug', this will generate too many logs, change it if not needed! "),d())}function lS(t,e){if(t&1){let r=P();u(0,"div",14),E("click",function(){let i=C(r).$implicit,o=g();return D(o.updateSetting("monitor_enabled",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g();return D(o.updateSetting("monitor_enabled",i))})("keydown.space",function(){let i=C(r).$implicit,o=g();return D(o.updateSetting("monitor_enabled",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g();X("selected",r===(n.settings==null?null:n.settings.monitor_enabled)),m(),Z(" ",r," ")}}function cS(t,e){if(t&1){let r=P();u(0,"button",19),E("click",function(){C(r);let i=g(2);return D(i.updateSetting("monitor_interval",i.monitorInterval))}),L(),u(1,"svg",20),w(2,"path",21),d()()}}function uS(t,e){if(t&1){let r=P();u(0,"div",5)(1,"div",6)(2,"label",15),p(3,"Monitor Interval"),d(),u(4,"small"),p(5,"Frequency (in minutes) to get new media data from Radarr/Sonarr."),d(),u(6,"small"),p(7,"Default is 60. Minuimum is 10."),d()(),u(8,"div",16)(9,"input",17),Ut("ngModelChange",function(i){C(r);let o=g();return Jt(o.monitorInterval,i)||(o.monitorInterval=i),D(i)}),d(),x(10,cS,3,0,"button",18),d()()}if(t&2){let r=g();m(9),$t("ngModel",r.monitorInterval),m(),_("ngIf",(r.settings==null?null:r.settings.monitor_interval)!=r.monitorInterval)}}function dS(t,e){if(t&1){let r=P();u(0,"div",30),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("wait_for_media",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("wait_for_media",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("wait_for_media",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.wait_for_media)),m(),Z(" ",r," ")}}function fS(t,e){if(t&1){let r=P();u(0,"div",30),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_folder_movie",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_folder_movie",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_folder_movie",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_folder_movie)),m(),Z(" ",r," ")}}function pS(t,e){if(t&1){let r=P();u(0,"div",31),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_folder_series",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_folder_series",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_folder_series",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_folder_series)),m(),Z(" ",r," ")}}function hS(t,e){if(t&1&&(u(0,"section",4)(1,"h1"),p(2,"Files"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",22),p(7,"Wait for Media"),d(),u(8,"small"),p(9,"Wait for media to be imported into Radarr/Sonarr before downloading trailers."),d()(),u(10,"div",23),x(11,dS,2,3,"div",24),d()(),u(12,"div",5)(13,"div",6)(14,"label",25),p(15,"Trailer Folder Movie"),d(),u(16,"small"),p(17,"Save trailer file in a 'Trailers' folder inside Movie folder."),d()(),u(18,"div",26),x(19,fS,2,3,"div",24),d()(),u(20,"div",5)(21,"div",6)(22,"label",27),p(23,"Trailer Folder Series"),d(),u(24,"small"),p(25,"Save trailer file in a 'Trailers' folder inside Series folder."),d()(),u(26,"div",28),x(27,pS,2,3,"div",29),d()()()),t&2){let r=g();m(11),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions)}}function mS(t,e){if(t&1){let r=P();u(0,"button",47),E("click",function(){C(r);let i=g(2);return D(i.updateSetting("trailer_resolution",i.resolution))}),L(),u(1,"svg",20),w(2,"path",21),d()()}}function gS(t,e){if(t&1){let r=P();u(0,"div",48),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_file_format",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_file_format",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_file_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_file_format)),m(),Z(" ",r," ")}}function vS(t,e){if(t&1){let r=P();u(0,"div",49),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_video_format",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_video_format",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_video_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_video_format)),m(),Z(" ",r," ")}}function yS(t,e){if(t&1){let r=P();u(0,"div",50),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_audio_format",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_audio_format",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_audio_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_audio_format)),m(),Z(" ",r," ")}}function _S(t,e){if(t&1){let r=P();u(0,"div",51),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_subtitles_enabled",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_subtitles_enabled",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_subtitles_enabled",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_subtitles_enabled)),m(),Z(" ",r," ")}}function wS(t,e){if(t&1){let r=P();u(0,"div",55),E("click",function(){let i=C(r).$implicit,o=g(3);return D(o.updateSetting("trailer_subtitles_format",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(3);return D(o.updateSetting("trailer_subtitles_format",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(3);return D(o.updateSetting("trailer_subtitles_format",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(3);X("selected",r===(n.settings==null?null:n.settings.trailer_subtitles_format)),m(),Z(" ",r," ")}}function CS(t,e){if(t&1&&(u(0,"div",5)(1,"div",6)(2,"label",52),p(3,"Trailer Subtitles Format"),d(),u(4,"small"),p(5,"Final subtitles format in the trailer file."),d()(),u(6,"div",53),x(7,wS,2,3,"div",54),d()()),t&2){let r=g(2);m(7),_("ngForOf",r.subtitleFormats)}}function DS(t,e){if(t&1){let r=P();u(0,"button",59),E("click",function(){C(r);let i=g(3);return D(i.updateSetting("trailer_subtitles_language",i.subtitleLanguage))}),L(),u(1,"svg",20),w(2,"path",21),d()()}}function bS(t,e){if(t&1){let r=P();u(0,"div",5)(1,"div",6)(2,"label",56),p(3,"Trailer Subtitles Language"),d(),u(4,"small"),p(5,"Subtitles language of the trailer file. 2-letter ISO language code."),d()(),u(6,"div",16)(7,"input",57),Ut("ngModelChange",function(i){C(r);let o=g(2);return Jt(o.subtitleLanguage,i)||(o.subtitleLanguage=i),D(i)}),d(),x(8,DS,3,0,"button",58),d()()}if(t&2){let r=g(2);m(7),$t("ngModel",r.subtitleLanguage),m(),_("ngIf",r.subtitleLanguage!=(r.settings==null?null:r.settings.trailer_subtitles_language))}}function xS(t,e){if(t&1){let r=P();u(0,"section",4)(1,"h1"),p(2,"Trailer"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",32),p(7,"Trailer Resolution"),d(),u(8,"small"),p(9,"Resolution of the trailer video file."),d(),u(10,"small"),p(11,"Valid values: 240, 360, 480, 720, 1080, 1440, 2160"),d()(),u(12,"div",16)(13,"input",33),Ut("ngModelChange",function(i){C(r);let o=g();return Jt(o.resolution,i)||(o.resolution=i),D(i)}),d(),x(14,mS,3,0,"button",34),d()(),u(15,"div",5)(16,"div",6)(17,"label",35),p(18,"Trailer File Format"),d(),u(19,"small"),p(20,"Final file format(extension) of the trailer file."),d()(),u(21,"div",36),x(22,gS,2,3,"div",37),d()(),u(23,"div",5)(24,"div",6)(25,"label",38),p(26,"Trailer Video Format"),d(),u(27,"small"),p(28,"Final video format(codec) of the trailer file."),d()(),u(29,"div",39),x(30,vS,2,3,"div",40),d()(),u(31,"div",5)(32,"div",6)(33,"label",41),p(34,"Trailer Audio Format"),d(),u(35,"small"),p(36,"Final audio format(codec) of the trailer file."),d()(),u(37,"div",42),x(38,yS,2,3,"div",43),d()(),u(39,"div",5)(40,"div",6)(41,"label",44),p(42,"Trailer Subtitles Enabled"),d(),u(43,"small"),p(44,"Download subtitles and added them to trailer file, if available."),d()(),u(45,"div",45),x(46,_S,2,3,"div",46),d()(),x(47,CS,8,1,"div",10)(48,bS,9,2,"div",10),d()}if(t&2){let r=g();m(13),$t("ngModel",r.resolution),m(),_("ngIf",(r.settings==null?null:r.settings.trailer_resolution)!=r.resolution),m(8),_("ngForOf",r.fileFormats),m(8),_("ngForOf",r.videoFormats),m(8),_("ngForOf",r.audioFormats),m(8),_("ngForOf",r.trueFalseOptions),m(),_("ngIf",r.settings==null?null:r.settings.trailer_subtitles_enabled),m(),_("ngIf",r.settings==null?null:r.settings.trailer_subtitles_enabled)}}function ES(t,e){if(t&1){let r=P();u(0,"div",69),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_embed_metadata",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_embed_metadata",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_embed_metadata",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_embed_metadata)),m(),Z(" ",r," ")}}function IS(t,e){if(t&1){let r=P();u(0,"div",70),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_remove_sponsorblocks",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_remove_sponsorblocks",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_remove_sponsorblocks",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_remove_sponsorblocks)),m(),Z(" ",r," ")}}function MS(t,e){if(t&1){let r=P();u(0,"div",71),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_web_optimized",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_web_optimized",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("trailer_web_optimized",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r===(n.settings==null?null:n.settings.trailer_web_optimized)),m(),Z(" ",r," ")}}function SS(t,e){if(t&1&&(u(0,"section",4)(1,"h1"),p(2,"Other Options"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",60),p(7,"Trailer Embed Metadata"),d(),u(8,"small"),p(9,"Embed info from youtube video into the trailer file."),d()(),u(10,"div",61),x(11,ES,2,3,"div",62),d()(),u(12,"div",5)(13,"div",6)(14,"label",63),p(15,"Trailer Remove SponsorBlocks"),d(),u(16,"small"),p(17,"Remove Sponsor Blocks like intro, outro blocks from youtube video if available."),d()(),u(18,"div",64),x(19,IS,2,3,"div",65),d()(),u(20,"div",5)(21,"div",6)(22,"label",66),p(23,"Trailer Web Optimized"),d(),u(24,"small"),p(25,"Enabling this will convert the video to a web optimized video, useful for streaming video over network, might slightly increase file size."),d()(),u(26,"div",67),x(27,MS,2,3,"div",68),d()()()),t&2){let r=g();m(11),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions),m(8),_("ngForOf",r.trueFalseOptions)}}function TS(t,e){if(t&1){let r=P();u(0,"div",81),E("click",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("log_level",i))})("keydown.enter",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("log_level",i))})("keydown.space",function(){let i=C(r).$implicit,o=g(2);return D(o.updateSetting("log_level",i))}),p(1),d()}if(t&2){let r=e.$implicit,n=g(2);X("selected",r.toLowerCase()==(n.settings==null||n.settings.log_level==null?null:n.settings.log_level.toLowerCase())),m(),Z(" ",r," ")}}function AS(t,e){if(t&1){let r=P();u(0,"button",82),E("click",function(){C(r);let i=g(2);return D(i.updateSetting("trailer_file_name",i.trailerFileName))}),L(),u(1,"svg",20),w(2,"path",21),d()()}}function OS(t,e){if(t&1){let r=P();u(0,"button",83),E("click",function(){C(r);let i=g(2);return D(i.updateSetting("yt_cookies_path",i.ytCookiesPath))}),L(),u(1,"svg",20),w(2,"path",21),d()()}}function NS(t,e){if(t&1){let r=P();u(0,"section",4)(1,"h1"),p(2,"Advanced Options"),d(),w(3,"hr"),u(4,"div",5)(5,"div",6)(6,"label",72),p(7,"Log Level"),d(),u(8,"small"),p(9,"Set logging level for the app!"),d()(),u(10,"div",73),x(11,TS,2,3,"div",74),d()(),u(12,"div",5)(13,"div",6)(14,"label",75),p(15,"Trailer File Name"),d(),u(16,"small"),p(17,"Customize trailer file name to use for downloaded trailers. Available options: title, year, resolution, vcodec, acodec"),d()(),u(18,"div",16)(19,"input",76),Ut("ngModelChange",function(i){C(r);let o=g();return Jt(o.trailerFileName,i)||(o.trailerFileName=i),D(i)}),d(),x(20,AS,3,0,"button",77),d()(),u(21,"div",5)(22,"div",6)(23,"label",78),p(24,"Yt-dlp Cookies Path"),d(),u(25,"small"),p(26,"Use cookies from a file for downloading trailers with yt-dlp."),d()(),u(27,"div",16)(28,"input",79),Ut("ngModelChange",function(i){C(r);let o=g();return Jt(o.ytCookiesPath,i)||(o.ytCookiesPath=i),D(i)}),d(),x(29,OS,3,0,"button",80),d()()()}if(t&2){let r=g();m(11),_("ngForOf",r.loggingOptions),m(8),$t("ngModel",r.trailerFileName),m(),_("ngIf",r.trailerFileName!=(r.settings==null?null:r.settings.trailer_file_name)),m(8),$t("ngModel",r.ytCookiesPath),m(),_("ngIf",r.ytCookiesPath!=(r.settings==null?null:r.settings.yt_cookies_path))}}var cv=(()=>{let e=class e{constructor(n){this.settingsService=n,this.updateResults=[],this.monitorInterval=60,this.resolution=1080,this.subtitleLanguage="en",this.loggingOptions=["Debug","Info","Warning","Error"],this.trueFalseOptions=[!0,!1],this.fileFormats=["mkv","mp4","webm"],this.audioFormats=["aac","ac3","eac3","flac","opus"],this.videoFormats=["h264","h265","vp8","vp9","av1"],this.subtitleFormats=["srt","vtt","pgs"],this.trailerFileName="",this.ytCookiesPath=""}ngOnInit(){this.getSettings()}getSettings(){this.settingsService.getSettings().subscribe(n=>{this.settings=n,this.monitorInterval=n.monitor_interval,this.resolution=n.trailer_resolution,this.subtitleLanguage=n.trailer_subtitles_language,this.trailerFileName=n.trailer_file_name,this.ytCookiesPath=n.yt_cookies_path})}updateSetting(n,i){this.settings&&this.settings[n]===i||this.settingsService.updateSetting(n,i).subscribe(o=>{this.updateResults.push(o),this.getSettings(),setTimeout(()=>{this.updateResults.shift()},3e3)})}};e.\u0275fac=function(i){return new(i||e)(b(on))},e.\u0275cmp=ee({type:e,selectors:[["app-trailer"]],standalone:!0,features:[te],decls:21,vars:8,consts:[[1,"message-container"],["class","update-message",3,"error",4,"ngFor","ngForOf"],[1,"trailer-container"],["class","update-message error",4,"ngIf"],[1,"section"],[1,"trailer-content"],[1,"content-label"],["for","monitor_enabled"],["id","monitor_enabled",1,"options-bar"],["class","option","tabindex","2",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["class","trailer-content",4,"ngIf"],["class","section",4,"ngIf"],[1,"update-message"],[1,"update-message","error"],["tabindex","2",1,"option",3,"click","keydown.enter","keydown.space"],["for","monitor_interval"],[1,"text-input"],["id","monitor_interval","type","number","maxlength","6","placeholder","Monitor Interval","autocomplete","off","tabindex","3",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_monitor_interval","tabindex","4",3,"click",4,"ngIf"],["id","update_monitor_interval","tabindex","4",1,"primary","icononly-button",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z"],["for","wait_for_media"],["id","wait_for_media",1,"options-bar"],["class","option","tabindex","5",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_folder_movie"],["id","trailer_folder_movie",1,"options-bar"],["for","trailer_folder_series"],["id","trailer_folder_series",1,"options-bar"],["class","option","tabindex","6",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["tabindex","5",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","6",1,"option",3,"click","keydown.enter","keydown.space"],["for","trailer_resolution"],["id","trailer_resolution","type","number","maxlength","4","placeholder","Trailer Resolution","autocomplete","off","tabindex","7",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_trailer_resolution","tabindex","8",3,"click",4,"ngIf"],["for","trailer_file_format"],["id","trailer_file_format",1,"options-bar"],["class","option","tabindex","9",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_video_format"],["id","trailer_video_format",1,"options-bar"],["class","option","tabindex","10",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_audio_format"],["id","trailer_audio_format",1,"options-bar"],["class","option","tabindex","11",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_subtitles_enabled"],["id","trailer_subtitles_enabled",1,"options-bar"],["class","option","tabindex","12",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["id","update_trailer_resolution","tabindex","8",1,"primary","icononly-button",3,"click"],["tabindex","9",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","10",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","11",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","12",1,"option",3,"click","keydown.enter","keydown.space"],["for","trailer_subtitles_format"],["id","trailer_subtitles_format",1,"options-bar"],["class","option","tabindex","13",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["tabindex","13",1,"option",3,"click","keydown.enter","keydown.space"],["for","trailer_subtitles_language"],["id","trailer_subtitles_language","type","text","placeholder","Trailer Subtitles Language","autocomplete","off","tabindex","14",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_trailer_subtitles_language","tabindex","15",3,"click",4,"ngIf"],["id","update_trailer_subtitles_language","tabindex","15",1,"primary","icononly-button",3,"click"],["for","trailer_embed_metadata"],["id","trailer_embed_metadata",1,"options-bar"],["class","option","tabindex","16",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_remove_sponsorblocks"],["id","trailer_remove_sponsorblocks",1,"options-bar"],["class","option","tabindex","17",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_web_optimized"],["id","trailer_web_optimized",1,"options-bar"],["class","option","tabindex","18",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["tabindex","16",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","17",1,"option",3,"click","keydown.enter","keydown.space"],["tabindex","18",1,"option",3,"click","keydown.enter","keydown.space"],["for","log_level"],["id","log_level",1,"options-bar"],["class","option","tabindex","1",3,"selected","click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],["for","trailer_file_name"],["id","trailer_file_name","type","text","placeholder","Trailer File Name Format","autocomplete","off","tabindex","19",1,"input-path",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_trailer_file_name","tabindex","20",3,"click",4,"ngIf"],["for","yt_cookies_path"],["id","yt_cookies_path","type","text","placeholder","Yt-dlp cookies path","autocomplete","off","tabindex","21",1,"input-path",3,"ngModelChange","ngModel"],["class","primary icononly-button","id","update_yt_cookies_path","tabindex","22",3,"click",4,"ngIf"],["tabindex","1",1,"option",3,"click","keydown.enter","keydown.space"],["id","update_trailer_file_name","tabindex","20",1,"primary","icononly-button",3,"click"],["id","update_yt_cookies_path","tabindex","22",1,"primary","icononly-button",3,"click"]],template:function(i,o){i&1&&(u(0,"div",0),x(1,sS,2,3,"div",1),d(),u(2,"div",2),x(3,aS,4,0,"div",3),u(4,"section",4)(5,"h1"),p(6,"General"),d(),w(7,"hr"),u(8,"div",5)(9,"div",6)(10,"label",7),p(11,"Monitor Trailers"),d(),u(12,"small"),p(13,"Monitor media from Radarr/Sonarr to download trailers."),d()(),u(14,"div",8),x(15,lS,2,3,"div",9),d()(),x(16,uS,11,2,"div",10),d(),x(17,hS,28,3,"section",11)(18,xS,49,8,"section",11)(19,SS,28,3,"section",11)(20,NS,30,5,"section",11),d()),i&2&&(m(),_("ngForOf",o.updateResults),m(2),_("ngIf",(o.settings==null?null:o.settings.log_level)=="DEBUG"),m(12),_("ngForOf",o.trueFalseOptions),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled),m(),_("ngIf",o.settings==null?null:o.settings.monitor_enabled))},dependencies:[Oe,De,St,Mt,sf,rn,cf,Dr],styles:[".trailer-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.message-container[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;align-items:center;gap:1rem;position:fixed;top:5rem;right:3rem;z-index:999;max-width:25%}@media (width < 768px){.message-container[_ngcontent-%COMP%]{max-width:80%;right:1rem}}.update-message[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:center;align-items:center;padding:.5rem;border-radius:.5rem;font-weight:700;color:var(--color-success-text);background-color:var(--color-success);animation:_ngcontent-%COMP%_slideInDown .3s ease-out forwards}.error[_ngcontent-%COMP%]{color:var(--color-warning-text);background-color:var(--color-warning)}.trailer-content[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;margin:1.5rem .5rem;gap:1rem}.content-label[_ngcontent-%COMP%]{display:flex;flex-direction:column;text-align:left;gap:.5rem;width:60%}.trailer-content[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:700;text-wrap:nowrap}.trailer-content[_ngcontent-%COMP%] > svg[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem;cursor:pointer;fill:var(--color-success)}.trailer-content[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(2){text-decoration:none;text-align:left;margin:0;padding:.25rem}.text-input[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:.5rem}.text-input[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{width:5rem;height:3rem;padding:.25rem;text-align:center;font-family:inherit;background-color:var(--color-surface-container-high);color:var(--color-on-surface);border:1px solid var(--color-outline);border-radius:.5rem}.input-path[_ngcontent-%COMP%]{width:auto!important;max-width:25rem!important;font-size:larger}.options-bar[_ngcontent-%COMP%]{display:flex;background-color:var(--color-surface-container-high);border-radius:10px;border:.5px solid var(--color-outline)}.options-bar[_ngcontent-%COMP%] > .option[_ngcontent-%COMP%]{padding:10px;cursor:pointer;border-radius:10px;transition:.3s ease}.options-bar[_ngcontent-%COMP%] > .selected[_ngcontent-%COMP%]{background-color:var(--color-tertiary-container);font-weight:600;color:var(--color-on-tertiary-container)}@media screen and (max-width: 768px){.trailer-content[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:.25rem}.content-label[_ngcontent-%COMP%]{width:100%}}@keyframes _ngcontent-%COMP%_slideInDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}"]});let t=e;return t})();var uv=(()=>{let e=class e{constructor(n){this.http=n,this.tasksUrl=Ne.apiUrl+Ne.tasks,this.schedulesUrl=this.tasksUrl+"schedules",this.queueUrl=this.tasksUrl+"queue"}convertTime(n){let i=[{unit:"second",value:60},{unit:"minute",value:60},{unit:"hour",value:24},{unit:"day",value:7}];for(let{unit:o,value:s}of i){if(nObject.entries(n).map(([i,o])=>J(M({id:i},o),{interval:this.convertTime(o.interval),last_run_duration:this.formatDuration(o.last_run_duration),last_run_start:this.convertDate(o.last_run_start),next_run:this.convertDate(o.next_run)}))))}getQueuedTasks(){return this.http.get(this.queueUrl).pipe(A(n=>Object.entries(n).map(([i,o])=>J(M({id:i},o),{duration:this.formatDuration(o.duration),finished:this.convertDate(o.finished),started:this.convertDate(o.started)}))))}runScheduledTask(n){return this.http.get(this.tasksUrl+"run/"+n)}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function PS(t,e){t&1&&(u(0,"div",5),w(1,"div",6)(2,"div",6)(3,"div",6)(4,"div",6),d())}function RS(t,e){if(t&1){let r=P();u(0,"td",15),E("click",function(){C(r);let i=g().$implicit,o=g(2);return i.last_run_status="Running",D(o.runTask(i.task_id))}),L(),u(1,"svg",16),w(2,"path",17),d()()}}function FS(t,e){t&1&&(u(0,"td",18),L(),u(1,"svg",19),w(2,"path",20),d()())}function LS(t,e){if(t&1&&(u(0,"tr",12)(1,"td",10),p(2),d(),u(3,"td"),p(4),d(),u(5,"td"),p(6),Se(7,"timeago"),d(),u(8,"td"),p(9),d(),u(10,"td"),p(11),d(),u(12,"td"),p(13),Se(14,"timeago"),d(),x(15,RS,3,0,"td",13)(16,FS,3,0,"td",14),d()),t&2){let r=e.$implicit;m(2),$(r.name),m(2),$(r.interval),m(2),$(r.last_run_start?Te(7,8,r.last_run_start):"Not run yet"),m(3),$(r.last_run_status),m(2),$(r.last_run_duration),m(2),$(r.next_run?Te(14,10,r.next_run):"Not scheduled"),m(2),_("ngIf",r.last_run_status.toLowerCase()!="running"),m(),_("ngIf",r.last_run_status.toLowerCase()=="running")}}function VS(t,e){if(t&1&&(u(0,"div",7)(1,"table",8)(2,"tr",9)(3,"th",10),p(4,"Name"),d(),u(5,"th"),p(6,"Interval"),d(),u(7,"th"),p(8,"Last Run"),d(),u(9,"th"),p(10,"Last Run Status"),d(),u(11,"th"),p(12,"Last Run Duration"),d(),u(13,"th"),p(14,"Next Run"),d(),w(15,"th"),d(),x(16,LS,17,12,"tr",11),d()()),t&2){let r=g();m(16),_("ngForOf",r.scheduledTasks)}}function jS(t,e){t&1&&(u(0,"div",5),w(1,"div",6)(2,"div",6)(3,"div",6)(4,"div",6),d())}function $S(t,e){if(t&1&&(u(0,"tr",12)(1,"td",10),p(2),d(),u(3,"td"),p(4),d(),u(5,"td"),p(6),Se(7,"timeago"),d(),u(8,"td"),p(9),Se(10,"timeago"),d(),u(11,"td"),p(12),d()()),t&2){let r=e.$implicit;m(2),$(r.name),m(2),$(r.status),m(2),$(r.started?Te(7,5,r.started):"Pending"),m(3),$(r.finished?Te(10,7,r.finished):"-"),m(3),$(r.duration)}}function US(t,e){if(t&1&&(u(0,"div",21)(1,"table",8)(2,"tr",9)(3,"th",10),p(4,"Name"),d(),u(5,"th"),p(6,"Status"),d(),u(7,"th"),p(8,"Started"),d(),u(9,"th"),p(10,"Finished"),d(),u(11,"th"),p(12,"Duration"),d()(),x(13,$S,13,9,"tr",11),d()()),t&2){let r=g();m(13),_("ngForOf",r.queuedTasks)}}var dv=(()=>{let e=class e{constructor(n,i){this.tasksService=n,this.websocketService=i,this.scheduledTasks=[],this.queuedTasks=[],this.isLoading1=!0,this.isLoading2=!0}ngOnInit(){this.refreshTaskData();let n=()=>{this.refreshTaskData()},i=()=>{clearTimeout(this.timeoutRef),this.webSocketSubscription?.unsubscribe()};this.webSocketSubscription=this.websocketService.connect().subscribe({next:n,error:i,complete:i})}getSecondsToNextScheduledEvent(n,i){let o=30;for(let s of i)if(s.status==="Running")return 10;for(let s of n){let a=new Date().getTime(),l=s.next_run.getTime(),c=Math.floor((l-a)/1e3)+2;if(c=Math.max(c,3),c===3)return 3;o=Math.min(o,c)}return o}refreshTaskData(){clearTimeout(this.timeoutRef),this.tasksService.getScheduledTasks().subscribe(i=>{this.scheduledTasks=i,this.isLoading1=!1}),this.tasksService.getQueuedTasks().subscribe(i=>{this.queuedTasks=i,this.isLoading2=!1});let n=this.getSecondsToNextScheduledEvent(this.scheduledTasks,this.queuedTasks);this.timeoutRef=setTimeout(()=>{this.refreshTaskData()},n*1e3)}ngOnDestroy(){clearTimeout(this.timeoutRef),this.webSocketSubscription?.unsubscribe()}runTask(n){this.tasksService.runScheduledTask(n).subscribe(i=>{console.log(i)})}};e.\u0275fac=function(i){return new(i||e)(b(uv),b(Ai))},e.\u0275cmp=ee({type:e,selectors:[["app-tasks"]],standalone:!0,features:[st([]),te],decls:13,vars:4,consts:[["schedulesLoaded",""],["queueLoaded",""],[1,"tasks-container"],[1,"text-heading"],["class","loading-wave center",4,"ngIf","ngIfElse"],[1,"loading-wave","center"],[1,"loading-bar"],[1,"table-container"],[1,"tasks-table"],[1,"table-row","header"],[1,"name"],["class","table-row",4,"ngFor","ngForOf"],[1,"table-row"],["title","Run task now",3,"click",4,"ngIf"],["title","Task is running",4,"ngIf"],["title","Run task now",3,"click"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960"],["d","M382-306.67 653.33-480 382-653.33v346.66ZM480-80q-82.33 0-155.33-31.5-73-31.5-127.34-85.83Q143-251.67 111.5-324.67T80-480q0-83 31.5-156t85.83-127q54.34-54 127.34-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82.33-31.5 155.33-31.5 73-85.5 127.34Q709-143 636-111.5T480-80Z"],["title","Task is running"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"loading"],["d","M343-107q-120-42-194.5-146.5T74-490q0-29 4-57.5T91-604l-57 33-37-62 185-107 106 184-63 36-54-92q-13 30-18.5 60.5T147-490q0 113 65.5 200T381-171l-38 64Zm291-516v-73h107q-47-60-115.5-93.5T480-823q-66 0-123.5 24T255-734l-38-65q54-45 121-71t142-26q85 0 160.5 33T774-769v-67h73v213H634ZM598-1 413-107l107-184 62 37-54 94q123-17 204.5-110.5T814-489q0-19-2.5-37.5T805-563h74q4 18 6 36.5t2 36.5q0 142-87 251.5T578-96l56 33-36 62Z"],[1,"table-container","last-table"]],template:function(i,o){if(i&1&&(u(0,"div",2)(1,"div",3),p(2,"Scheduled"),d(),w(3,"hr"),x(4,PS,5,0,"div",4)(5,VS,17,1,"ng-template",null,0,ge),u(7,"div",3),p(8,"Queue"),d(),w(9,"hr"),x(10,jS,5,0,"div",4)(11,US,14,1,"ng-template",null,1,ge),d()),i&2){let s=pe(6),a=pe(12);m(4),_("ngIf",o.isLoading1)("ngIfElse",s),m(6),_("ngIf",o.isLoading1)("ngIfElse",a)}},dependencies:[Oe,De,yi,el],styles:[".tasks-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:1rem}@media (width < 765px){.tasks-container[_ngcontent-%COMP%]{padding:.5rem}}.text-heading[_ngcontent-%COMP%]{margin-top:1rem;text-align:left;font-size:2rem}.center[_ngcontent-%COMP%]{margin:auto}.table-container[_ngcontent-%COMP%]{width:100%;overflow-x:auto;min-height:25%;-webkit-overflow-scrolling:touch;margin-top:.5rem;margin-bottom:2rem}.last-table[_ngcontent-%COMP%]{margin-bottom:0}.tasks-table[_ngcontent-%COMP%]{width:100%;max-width:100%;white-space:nowrap;border-collapse:collapse}.tasks-table[_ngcontent-%COMP%] .table-row[_ngcontent-%COMP%]{border-bottom:1px solid var(--color-outline);white-space:nowrap;text-align:left}.tasks-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .tasks-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:1rem .5rem}.tasks-table[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{font-weight:700;border-bottom:2px solid var(--color-outline)}.tasks-table[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{width:100%}.table-row[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{margin:0 .5rem;width:1rem;fill:var(--color-primary);cursor:pointer}.loading[_ngcontent-%COMP%]{cursor:progress;animation:_ngcontent-%COMP%_spin-animation 2s linear infinite}.table-row[_ngcontent-%COMP%]:hover:not(:first-child){background-color:var(--color-tertiary-container)}@keyframes _ngcontent-%COMP%_spin-animation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"]});let t=e;return t})();var fv=[{path:"",redirectTo:"home",pathMatch:"full"},{path:"home",component:Y0},{path:"movies",component:hf},{path:"movies/:id",component:pf},{path:"series",component:hf},{path:"series/:id",component:pf},{path:"tasks",component:dv},{path:"logs",component:J0},{path:"settings",component:lv,children:[{path:"",redirectTo:"trailer",pathMatch:"full"},{path:"connections",component:ov,children:[{path:"",component:av},{path:"add",component:iv},{path:"edit/:id",component:sv}]},{path:"trailer",component:cv},{path:"about",component:rv}]}];var pv={providers:[y0(fv),ed(),{provide:Zu,useValue:{timezone:"UTC"}},nu(yi.forRoot())]};var hv=(()=>{let e=class e{};e.\u0275fac=function(i){return new(i||e)},e.\u0275cmp=ee({type:e,selectors:[["app-sidenav"]],standalone:!0,features:[te],decls:31,vars:0,consts:[[1,"navmenu"],["routerLink","home","routerLinkActive","active",1,"sidenav-button"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960",1,"icon"],["d","M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z"],[1,"btntext"],["routerLink","movies","routerLinkActive","active",1,"sidenav-button"],["d","m160-800 80 160h120l-80-160h80l80 160h120l-80-160h80l80 160h120l-80-160h120q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800Zm0 240v320h640v-320H160Zm0 0v320-320Z"],["routerLink","series","routerLinkActive","active",1,"sidenav-button"],["d","M320-120v-80H160q-33 0-56.5-23.5T80-280v-480q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v480q0 33-23.5 56.5T800-200H640v80H320ZM160-280h640v-480H160v480Zm0 0v-480 480Z"],["routerLink","tasks","routerLinkActive","active",1,"sidenav-button"],["d","M200-640h560v-80H200v80Zm0 0v-80 80Zm0 560q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v227q-19-9-39-15t-41-9v-43H200v400h252q7 22 16.5 42T491-80H200Zm520 40q-83 0-141.5-58.5T520-240q0-83 58.5-141.5T720-440q83 0 141.5 58.5T920-240q0 83-58.5 141.5T720-40Zm67-105 28-28-75-75v-112h-40v128l87 87Z"],["routerLink","logs","routerLinkActive","active",1,"sidenav-button"],["d","M280-280h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm-80 480q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm0-560v560-560Z"],["routerLink","settings","routerLinkActive","active",1,"sidenav-button"],["d","m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"a",1),L(),u(2,"svg",2),w(3,"path",3),d(),Ce(),u(4,"span",4),p(5,"Home"),d()(),u(6,"a",5),L(),u(7,"svg",2),w(8,"path",6),d(),Ce(),u(9,"span",4),p(10,"Movies"),d()(),u(11,"a",7),L(),u(12,"svg",2),w(13,"path",8),d(),Ce(),u(14,"span",4),p(15,"Series"),d()(),u(16,"a",9),L(),u(17,"svg",2),w(18,"path",10),d(),Ce(),u(19,"span",4),p(20,"Tasks"),d()(),u(21,"a",11),L(),u(22,"svg",2),w(23,"path",12),d(),Ce(),u(24,"span",4),p(25,"Logs"),d()(),u(26,"a",13),L(),u(27,"svg",2),w(28,"path",14),d(),Ce(),u(29,"span",4),p(30,"Settings"),d()()())},dependencies:[lt,Ja],styles:[".navmenu[_ngcontent-%COMP%]{overflow:auto;width:210px;height:100%;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:column;align-items:start;justify-items:stretch}.sidenav-button[_ngcontent-%COMP%]{margin:0;padding:1rem 1rem 1rem 2rem;box-sizing:border-box;width:100%;text-decoration:none;color:inherit;text-align:start;font-weight:400;display:flex;align-items:center;transition:.3s;cursor:pointer;border-radius:0;border-bottom:2px solid transparent}.sidenav-button.active[_ngcontent-%COMP%]{background-color:var(--color-secondary-container);opacity:1;font-weight:600;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}.sidenav-button[_ngcontent-%COMP%]:not(.active):hover{background-color:var(--color-secondary-container);opacity:.6;font-weight:500;color:var(--color-on-secondary-container);border-bottom:2px solid var(--color-primary)}.sidenav-button[_ngcontent-%COMP%]:first-child{margin-top:.25rem}.sidenav-button[_ngcontent-%COMP%]:last-child{margin-bottom:auto}.sidenav-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:0;margin-right:.5rem;height:1.75rem;width:1.75rem;padding:.25rem}@media (max-width: 1100px){.navmenu[_ngcontent-%COMP%]{width:auto}.sidenav-button[_ngcontent-%COMP%]{padding:1rem}.sidenav-button[_ngcontent-%COMP%] .btntext[_ngcontent-%COMP%]{display:none}.sidenav-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:auto}}@media (max-width: 765px){.navmenu[_ngcontent-%COMP%]{flex-direction:row;width:100%;height:auto;margin:0;padding:0;padding-top:1rem;padding-bottom:1rem;justify-content:space-evenly;align-items:center}.sidenav-button[_ngcontent-%COMP%]{padding:0;width:auto;border-radius:0;border-bottom:2px solid transparent}.sidenav-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:.5rem;height:1.75rem;width:1.75rem}.sidenav-button[_ngcontent-%COMP%]:first-child{margin-top:0}.sidenav-button[_ngcontent-%COMP%]:last-child{margin-bottom:0}}"]});let t=e;return t})();var mv=(()=>{let e=class e{constructor(n){this.http=n,this.searchUrl=Ne.apiUrl+Ne.search}searchMedia(n){return this.http.get(`${this.searchUrl}${n}`)}};e.\u0275fac=function(i){return new(i||e)(k(mt))},e.\u0275prov=T({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var HS=(t,e)=>[t,e];function qS(t,e){t&1&&w(0,"img",13)}function zS(t,e){t&1&&w(0,"img",14)}function GS(t,e){if(t&1){let r=P();u(0,"div",15),E("click",function(){C(r);let i=g();return D(i.searchResults=[])}),w(1,"img",16),u(2,"span",17),p(3),d()()}if(t&2){let r=e.$implicit,n=g();X("selected",r.id===n.selectedId),_("routerLink",da(6,HS,r.is_movie?"/movies":"/series",r.id)),m(),Qe("src",r.poster_path||"assets/poster-lg.png",ot),Qe("alt",r.title),m(2),$(r.title+" ("+r.year+")")}}var gv=(()=>{let e=class e{constructor(n,i,o,s){this.renderer=n,this.searchService=i,this.elementRef=o,this.router=s,this.isDarkModeEnabled=!0,this.searchQuery="",this.searchForm=new be,this.searchResults=[],this.selectedIndex=-1,this.selectedId=-1,this.searchForm.valueChanges.pipe(Pl(400),Fl()).subscribe(a=>{this.onSearch(a)})}clickout(n){this.elementRef.nativeElement.contains(n.target)||(this.searchResults=[],this.selectedId=-1,this.selectedIndex=-1)}disableSelection(n){this.searchResults.length>0&&(this.selectedId=-1,this.selectedIndex=-1)}handleKeyboardEvent(n){if(n.key==="f"){n.preventDefault(),document.getElementById("searchForm")?.querySelector("input")?.focus();return}if(this.searchResults.length>0){if(n.key==="Escape"){this.searchResults=[],this.selectedId=-1,this.selectedIndex=-1;return}let i=this.searchResults[0].id,o=this.searchResults[this.searchResults.length-1].id;if(n.key==="ArrowDown"||n.key==="Tab"&&!n.shiftKey){if(n.preventDefault(),this.selectedId===o){this.selectedIndex=0,this.selectedId=i;return}this.selectedIndex=this.selectedIndex+1,this.selectedId=this.searchResults[this.selectedIndex].id;return}else if(n.key==="ArrowUp"||n.shiftKey&&n.key==="Tab"){if(n.preventDefault(),this.selectedId===i){this.selectedIndex=this.searchResults.length-1,this.selectedId=o;return}this.selectedIndex=this.selectedIndex-1,this.selectedId=this.searchResults[this.selectedIndex].id;return}else if(n.key==="Enter"){let s=this.searchResults[this.selectedIndex];this.router.navigate([s.is_movie?"movies":"series",this.selectedId]),this.searchResults=[];return}}}ngOnInit(){let n=localStorage.getItem("theme");if(n){let i=n==="dark";this.setTheme(i)}else window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?this.setTheme(!0):this.setTheme(!1)}onThemeChange(n){this.setTheme(!!n)}setTheme(n=!0){let i=n?"dark":"light",o=n?"light":"dark";this.isDarkModeEnabled=n,this.renderer.setAttribute(document.documentElement,"theme",i),this.renderer.removeClass(document.body,o),this.renderer.addClass(document.body,i),localStorage.setItem("theme",i)}onSearch(n=""){if(n.length<3){this.searchResults=[];return}n.trim()!==this.searchQuery&&(this.searchQuery=n,this.searchService.searchMedia(this.searchQuery).subscribe(i=>{this.searchResults=i}))}};e.\u0275fac=function(i){return new(i||e)(b(jt),b(mv),b(Fe),b(hi))},e.\u0275cmp=ee({type:e,selectors:[["app-topnav"]],hostBindings:function(i,o){i&1&&E("click",function(a){return o.clickout(a)},!1,cr)("mousemove",function(a){return o.disableSelection(a)},!1,cr)("keydown",function(a){return o.handleKeyboardEvent(a)},!1,cr)},standalone:!0,features:[te],decls:13,vars:7,consts:[[1,"navbar"],["routerLink","home",1,"navlogo"],["src","/assets/logos/trailarr-full-512.png","alt","Trailarr Logo","height","40","class","sm-none",4,"ngIf"],["src","/assets/logos/trailarr-full-light-512.png","alt","Trailarr Logo","height","40","class","sm-none",4,"ngIf"],["src","favicon.ico","alt","Trailarr Logo","width","30","height","30",1,"sm-show"],[1,"navsearch"],["id","searchForm",1,"navsearch-form"],["type","text","autocomplete","off","name","query","placeholder","Search for media...","aria-label","search",3,"formControl"],[1,"navsearch-results"],["class","title",3,"selected","routerLink","click",4,"ngFor","ngForOf"],[1,"switch2","sm-none"],["id","theme-switch","type","checkbox",3,"ngModelChange","ngModel"],[1,"slider2"],["src","/assets/logos/trailarr-full-512.png","alt","Trailarr Logo","height","40",1,"sm-none"],["src","/assets/logos/trailarr-full-light-512.png","alt","Trailarr Logo","height","40",1,"sm-none"],[1,"title",3,"click","routerLink"],[1,"search-poster",3,"src","alt"],[1,"search-title"]],template:function(i,o){i&1&&(u(0,"div",0)(1,"a",1),x(2,qS,1,0,"img",2)(3,zS,1,0,"img",3),w(4,"img",4),d(),u(5,"div",5)(6,"form",6),w(7,"input",7),d(),u(8,"div",8),x(9,GS,4,9,"div",9),d()(),u(10,"label",10)(11,"input",11),Ut("ngModelChange",function(a){return Jt(o.isDarkModeEnabled,a)||(o.isDarkModeEnabled=a),a}),E("ngModelChange",function(a){return o.onThemeChange(a)}),d(),w(12,"span",12),d()()),i&2&&(m(2),_("ngIf",o.isDarkModeEnabled),m(),_("ngIf",!o.isDarkModeEnabled),m(4),_("formControl",o.searchForm),m(),X("active",o.searchResults.length>0),m(),_("ngForOf",o.searchResults),m(2),$t("ngModel",o.isDarkModeEnabled))},dependencies:[lt,St,xi,Mt,Yd,rn,Di,Dr,of,Si,lf,Oe,De],styles:['.navbar[_ngcontent-%COMP%]{padding:1rem .5rem;display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%}.navlogo[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:1.5rem;font-weight:500;color:var(--color-on-surface);text-decoration:none;margin:0;padding:0;width:210px}.navlogotext[_ngcontent-%COMP%]{margin-left:.5rem}.navsearch[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;justify-content:center;width:auto;flex-grow:1;padding:.25rem;position:relative}.navsearch-form[_ngcontent-%COMP%]{width:100%}.navsearch-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;padding:.5rem;border:1px solid var(--color-outline);border-radius:.5rem;margin:0;font-size:1rem;background-color:var(--color-surface-container-highest);color:var(--color-on-surface)}.navsearch-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{outline:var(--color-primary);border:1px solid var(--color-primary)}.navsearch-results[_ngcontent-%COMP%]{position:absolute;top:100%;left:2%;color:var(--color-on-surface);background-color:var(--color-surface-container-highest);border:.5px solid var(--color-outline);border-radius:5px;visibility:hidden;opacity:0;display:none;z-index:10}.active[_ngcontent-%COMP%]{visibility:visible;opacity:1;display:flex;flex-direction:column;max-height:40vh;max-width:60vw;overflow-x:hidden;overflow-y:auto;padding:.5rem;scroll-behavior:smooth;scroll-snap-type:y mandatory;transition:.25s}@media (width < 765px){.active[_ngcontent-%COMP%]{max-width:75vw}}.navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{display:flex;min-width:300px;width:auto;padding:.5rem;text-align:left;text-wrap:pretty;cursor:pointer}.search-poster[_ngcontent-%COMP%]{width:3rem}.search-title[_ngcontent-%COMP%]{margin:auto .5rem;text-align:left}.navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]:hover, .navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]:focus, .navsearch-results[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{background-color:var(--color-surface-variant);outline:none}.navsearch-results[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]:focus, .navsearch-results[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{scroll-snap-align:center}@media (max-width: 900px){.navlogo[_ngcontent-%COMP%]{width:auto;padding-left:1rem;padding-right:1rem}.navlogotext[_ngcontent-%COMP%]{display:none}}.switch2[_ngcontent-%COMP%]{margin:0 1rem;display:block;--width-of-switch: 3.5em;--height-of-switch: 2em;--size-of-icon: 1.4em;--slider-offset: .3em;position:relative;width:var(--width-of-switch);height:var(--height-of-switch)}.switch2[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{opacity:0;width:0;height:0}.slider2[_ngcontent-%COMP%]{position:absolute;cursor:pointer;inset:0;background-color:#fff;transition:.5s;border-radius:30px}.slider2[_ngcontent-%COMP%]:before{position:absolute;content:"";height:var(--size-of-icon, 1.4em);width:var(--size-of-icon, 1.4em);border-radius:20px;left:var(--slider-offset, .3em);top:50%;transform:translateY(-50%);background:linear-gradient(40deg,#775651,#904b40 70%);transition:.5s}input[_ngcontent-%COMP%]:checked + .slider2[_ngcontent-%COMP%]{background-color:#140c0b}input[_ngcontent-%COMP%]:checked + .slider2[_ngcontent-%COMP%]:before{left:calc(100% - (var(--size-of-icon, 1.4em) + var(--slider-offset, .3em)));background:#140c0b;box-shadow:inset -3px -2px 5px -2px #e7bdb6,inset -10px -4px #ffb4a8}']});let t=e;return t})();var WS=["sessionEndedDialog"];function ZS(t,e){if(t&1&&(u(0,"div",16)(1,"span"),p(2),d()()),t&2){let r=e.$implicit;_("ngClass",r.type.toLowerCase()),m(2),$(r.message)}}var vv=(()=>{let e=class e{constructor(n){this.websocketService=n,this.messages=[],this.IDLE_LIMIT=10*60*1e3}ngOnInit(){this.resetIdleTimer(),this.websocketSubscription=this.websocketService.connect().subscribe({next:n=>{this.messages.unshift(n),setTimeout(()=>{this.messages.pop()},3e3)},error:n=>{console.error("Error:",n)},complete:()=>{console.log("Connection closed")}}),this.toastSubscription=this.websocketService.toastMessage.subscribe({next:n=>{this.messages.unshift(n),setTimeout(()=>{this.messages.pop()},3e3)}})}resetIdleTimer(){clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.closeAllSubscriptions()},this.IDLE_LIMIT)}closeAllSubscriptions(){console.log("Session Idle, closing all subscriptions!"),this.showDialog(),this.websocketService.close(),this.websocketSubscription?.unsubscribe(),this.toastSubscription?.unsubscribe(),document.cookie="trailarr_api_key=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"}ngOnDestroy(){this.closeAllSubscriptions(),this.timeoutId&&clearTimeout(this.timeoutId)}showDialog(){this.sessionEndedDialog.nativeElement.showModal()}reloadPage(){window.location.reload()}};e.\u0275fac=function(i){return new(i||e)(b(Ai))},e.\u0275cmp=ee({type:e,selectors:[["app-root"]],viewQuery:function(i,o){if(i&1&&Kt(WS,5),i&2){let s;bt(s=xt())&&(o.sessionEndedDialog=s.first)}},hostBindings:function(i,o){i&1&&E("click",function(a){return o.resetIdleTimer(a)},!1,cr)("keypress",function(a){return o.resetIdleTimer(a)},!1,cr)},standalone:!0,features:[te],decls:25,vars:1,consts:[["sessionEndedDialog",""],[1,"mainroot"],[1,"topnavbar"],[1,"mainbody"],[1,"sidebar"],[1,"main-content"],[1,"toast-container"],["class","toast",3,"ngClass",4,"ngFor","ngForOf"],[1,"dialog-content",3,"click"],[1,"loading-container"],[1,"loading-container-inner"],[1,"dash","first"],[1,"dash","seconde"],[1,"dash","third"],[1,"dash","fourth"],["tabindex","1",1,"secondary",3,"click"],[1,"toast",3,"ngClass"]],template:function(i,o){if(i&1){let s=P();u(0,"div",1)(1,"header",2),w(2,"app-topnav"),d(),u(3,"div",3)(4,"div",4),w(5,"app-sidenav"),d(),u(6,"div",5),w(7,"router-outlet"),d()(),u(8,"div",6),x(9,ZS,3,2,"div",7),d()(),u(10,"dialog",null,0)(12,"div",8),E("click",function(l){return C(s),D(l.stopPropagation())}),u(13,"h2"),p(14,"Session Timed Out!"),d(),u(15,"p"),p(16,"You we gone for a while, we closed your session!"),d(),u(17,"div",9)(18,"div",10),w(19,"div",11)(20,"div",12)(21,"div",13)(22,"div",14),d()(),u(23,"button",15),E("click",function(){return C(s),D(o.reloadPage())}),p(24,"Refresh"),d()()()}i&2&&(m(9),_("ngForOf",o.messages))},dependencies:[wr,gv,hv,Tg,De,mg],styles:[".mainroot[_ngcontent-%COMP%]{height:100%;display:flex;flex-direction:column;background-color:var(--color-background);color:var(--color-on-background);position:relative}@media (width < 765px){.mainroot[_ngcontent-%COMP%]{height:auto}}.topnavbar[_ngcontent-%COMP%]{width:100%;height:auto;z-index:100;position:sticky;top:0;background-color:var(--color-surface-container);color:var(--color-on-surface)}.mainbody[_ngcontent-%COMP%]{margin:0;display:flex;flex-direction:row;flex:1 1 auto;background-color:var(--color-surface);color:var(--color-on-surface)}@media (width < 765px){.mainbody[_ngcontent-%COMP%]{flex-direction:column}}.sidebar[_ngcontent-%COMP%]{width:auto;z-index:100;background-color:var(--color-surface-container);color:var(--color-on-surface);order:1;position:sticky;top:76px;height:calc(100vh - 76px)}@media (width < 765px){.sidebar[_ngcontent-%COMP%]{width:100%;height:auto;position:fixed;bottom:0;top:auto;left:0;order:2}}.main-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1 1 auto;order:2;background-color:var(--color-surface);color:var(--color-on-surface)}@media (width < 765px){.main-content[_ngcontent-%COMP%]{order:1;margin:.5rem;margin-bottom:80px}}.toast-container[_ngcontent-%COMP%]{position:fixed;top:5rem;right:3rem;z-index:999;max-width:25%;padding:1rem;display:flex;flex-direction:column;gap:1rem}@media (width < 765px){.toast-container[_ngcontent-%COMP%]{max-width:80%;right:1rem;padding:.5rem}}.toast[_ngcontent-%COMP%]{text-wrap:wrap;padding:1rem;border-radius:.5rem;background-color:var(--color-surface-container-high);color:var(--color-on-surface);animation:_ngcontent-%COMP%_slideInRight .3s ease-out forwards}.info[_ngcontent-%COMP%]{background-color:var(--color-info);color:var(--color-info-text)}.success[_ngcontent-%COMP%]{background-color:var(--color-success);color:var(--color-success-text)}.error[_ngcontent-%COMP%]{background-color:var(--color-warning);color:var(--color-warning-text)}@keyframes _ngcontent-%COMP%_slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.dialog-content[_ngcontent-%COMP%]{padding:1rem}.loading-container[_ngcontent-%COMP%]{position:relative;height:6rem;margin:1rem}.loading-container-inner[_ngcontent-%COMP%]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.dash[_ngcontent-%COMP%]{margin:0 15px;width:35px;height:15px;border-radius:8px;background:var(--color-primary);box-shadow:var(--color-surface-tint) 0 0 15px 0}.first[_ngcontent-%COMP%]{margin-right:-18px;transform-origin:center left;animation:_ngcontent-%COMP%_spin 3s linear infinite}.seconde[_ngcontent-%COMP%]{transform-origin:center right;animation:_ngcontent-%COMP%_spin2 3s linear infinite;animation-delay:.2s}.third[_ngcontent-%COMP%]{transform-origin:center right;animation:_ngcontent-%COMP%_spin3 3s linear infinite;animation-delay:.3s}.fourth[_ngcontent-%COMP%]{transform-origin:center right;animation:_ngcontent-%COMP%_spin4 3s linear infinite;animation-delay:.4s}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}25%{transform:rotate(360deg)}30%{transform:rotate(370deg)}35%{transform:rotate(360deg)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_spin2{0%{transform:rotate(0)}20%{transform:rotate(0)}30%{transform:rotate(-180deg)}35%{transform:rotate(-190deg)}40%{transform:rotate(-180deg)}78%{transform:rotate(-180deg)}95%{transform:rotate(-360deg)}98%{transform:rotate(-370deg)}to{transform:rotate(-360deg)}}@keyframes _ngcontent-%COMP%_spin3{0%{transform:rotate(0)}27%{transform:rotate(0)}40%{transform:rotate(180deg)}45%{transform:rotate(190deg)}50%{transform:rotate(180deg)}62%{transform:rotate(180deg)}75%{transform:rotate(360deg)}80%{transform:rotate(370deg)}85%{transform:rotate(360deg)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_spin4{0%{transform:rotate(0)}38%{transform:rotate(0)}60%{transform:rotate(-360deg)}65%{transform:rotate(-370deg)}75%{transform:rotate(-360deg)}to{transform:rotate(-360deg)}}"]});let t=e;return t})();Lg(vv,pv).catch(t=>console.error(t)); diff --git a/frontend-build/browser/styles-6QXPIEYY.css b/frontend-build/browser/styles-6QXPIEYY.css new file mode 100644 index 0000000..9e1b66f --- /dev/null +++ b/frontend-build/browser/styles-6QXPIEYY.css @@ -0,0 +1 @@ +:root{font-size:16px;font-family:Roboto,open sans,Helvetica Neue,Helvetica,Arial,sans-serif;--transition-speed: .6s;--color-success: #00bc8c;--color-info: #3498db;--color-warning: #f39c12;--color-danger: #e74c3c;--color-success-text: #ccf2e8;--color-info-text: #d6eaf8;--color-warning-text: #fdebd0;--color-danger-text: #fadbd8}*{box-sizing:border-box}@media (width > 765px){*{scrollbar-width:thin!important;scrollbar-color:var(--color-secondary) transparent}}html{height:100%;color-scheme:dark light}body{margin:0;background-color:var(--color-surface);color:var(--color-on-surface);transition:background-color .5s ease,color .5s ease}@media (width < 765px){body{overflow-y:auto}}.sm-show{display:none!important}@media (max-width: 765px){.sm-none{display:none!important}.sm-show{display:block!important}}.dark{--color-primary: rgb(128 213 212);--color-surface-tint: rgb(128 213 212);--color-on-primary: rgb(0 55 55);--color-primary-container: rgb(0 79 79);--color-on-primary-container: rgb(156 241 240);--color-secondary: rgb(176 204 203);--color-on-secondary: rgb(27 53 52);--color-secondary-container: rgb(50 75 75);--color-on-secondary-container: rgb(204 232 231);--color-tertiary: rgb(179 200 232);--color-on-tertiary: rgb(28 49 75);--color-tertiary-container: rgb(51 72 99);--color-on-tertiary-container: rgb(211 228 255);--color-error: rgb(255 180 171);--color-on-error: rgb(105 0 5);--color-error-container: rgb(147 0 10);--color-on-error-container: rgb(255 218 214);--color-background: rgb(14 21 20);--color-on-background: rgb(221 228 227);--color-surface: rgb(14 21 20);--color-on-surface: rgb(221 228 227);--color-surface-variant: rgb(63 73 72);--color-on-surface-variant: rgb(190 201 200);--color-outline: rgb(136 147 146);--color-outline-variant: rgb(63 73 72);--color-shadow: rgb(0 0 0);--color-scrim: rgb(0 0 0);--color-inverse-surface: rgb(221 228 227);--color-inverse-on-surface: rgb(43 50 49);--color-inverse-primary: rgb(0 106 106);--color-primary-fixed: rgb(156 241 240);--color-on-primary-fixed: rgb(0 32 32);--color-primary-fixed-dim: rgb(128 213 212);--color-on-primary-fixed-variant: rgb(0 79 79);--color-secondary-fixed: rgb(204 232 231);--color-on-secondary-fixed: rgb(5 31 31);--color-secondary-fixed-dim: rgb(176 204 203);--color-on-secondary-fixed-variant: rgb(50 75 75);--color-tertiary-fixed: rgb(211 228 255);--color-on-tertiary-fixed: rgb(4 28 53);--color-tertiary-fixed-dim: rgb(179 200 232);--color-on-tertiary-fixed-variant: rgb(51 72 99);--color-surface-dim: rgb(14 21 20);--color-surface-bright: rgb(52 58 58);--color-surface-container-lowest: rgb(9 15 15);--color-surface-container-low: rgb(22 29 29);--color-surface-container: rgb(26 33 33);--color-surface-container-high: rgb(37 43 43);--color-surface-container-highest: rgb(47 54 54)}.light{--color-primary: rgb(0 106 106);--color-surface-tint: rgb(0 106 106);--color-on-primary: rgb(255 255 255);--color-primary-container: rgb(156 241 240);--color-on-primary-container: rgb(0 32 32);--color-secondary: rgb(74 99 99);--color-on-secondary: rgb(255 255 255);--color-secondary-container: rgb(204 232 231);--color-on-secondary-container: rgb(5 31 31);--color-tertiary: rgb(75 96 124);--color-on-tertiary: rgb(255 255 255);--color-tertiary-container: rgb(211 228 255);--color-on-tertiary-container: rgb(4 28 53);--color-error: rgb(186 26 26);--color-on-error: rgb(255 255 255);--color-error-container: rgb(255 218 214);--color-on-error-container: rgb(65 0 2);--color-background: rgb(244 251 250);--color-on-background: rgb(22 29 29);--color-surface: rgb(244 251 250);--color-on-surface: rgb(22 29 29);--color-surface-variant: rgb(218 229 228);--color-on-surface-variant: rgb(63 73 72);--color-outline: rgb(111 121 121);--color-outline-variant: rgb(190 201 200);--color-shadow: rgb(0 0 0);--color-scrim: rgb(0 0 0);--color-inverse-surface: rgb(43 50 49);--color-inverse-on-surface: rgb(236 242 241);--color-inverse-primary: rgb(128 213 212);--color-primary-fixed: rgb(156 241 240);--color-on-primary-fixed: rgb(0 32 32);--color-primary-fixed-dim: rgb(128 213 212);--color-on-primary-fixed-variant: rgb(0 79 79);--color-secondary-fixed: rgb(204 232 231);--color-on-secondary-fixed: rgb(5 31 31);--color-secondary-fixed-dim: rgb(176 204 203);--color-on-secondary-fixed-variant: rgb(50 75 75);--color-tertiary-fixed: rgb(211 228 255);--color-on-tertiary-fixed: rgb(4 28 53);--color-tertiary-fixed-dim: rgb(179 200 232);--color-on-tertiary-fixed-variant: rgb(51 72 99);--color-surface-dim: rgb(213 219 218);--color-surface-bright: rgb(244 251 250);--color-surface-container-lowest: rgb(255 255 255);--color-surface-container-low: rgb(239 245 244);--color-surface-container: rgb(233 239 238);--color-surface-container-high: rgb(227 233 233);--color-surface-container-highest: rgb(221 228 227)}hr{border:0;border-top:1px solid var(--color-outline);margin:0 0 .5rem}.text-lg{font-size:2.5rem}.text-md{font-size:1.5rem}.text-sm{font-size:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-primary{color:var(--color-primary)}.icon{margin:auto;padding:.25rem;height:1.5rem;width:1.5rem;fill:var(--color-on-surface)}button{padding:.5rem 1rem;border:none;border-radius:.25rem;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color var(--transition-speed);background-color:var(--color-primary);color:var(--color-on-primary)}button:disabled{cursor:not-allowed;opacity:.5}button.primary{background-color:var(--color-primary);color:var(--color-on-primary)}button.secondary{background-color:var(--color-secondary);color:var(--color-on-secondary)}button.tertiary{background-color:var(--color-tertiary);color:var(--color-on-tertiary)}button.danger{background-color:var(--color-danger);color:var(--color-danger-text)}.icononly-button{width:3rem;height:3rem;display:flex;justify-content:center;align-items:center;padding:.5rem;border:none;border-radius:50%;cursor:pointer}button>svg{height:1.5rem;width:1.5rem;fill:var(--color-on-primary)}.animated-button{display:flex;align-items:center;--size: 12px;padding:var(--size) calc(var(--size)*2);border:calc(var(--size)*.25) solid;border-color:transparent;font-size:var(--size);color:var(--color-on-secondary);background-color:var(--color-secondary);border-radius:calc(var(--size)*6);font-weight:600;cursor:pointer;position:relative;overflow:hidden;transition:all .4s cubic-bezier(.23,1,.32,1)}.animated-button svg{position:absolute;width:calc(var(--size)*1.5);fill:var(--color-on-secondary);z-index:9;right:var(--size);transition:all .3s cubic-bezier(.23,1,.32,1)}.animated-button .text{position:relative;text-transform:uppercase;z-index:1;transform:translate(calc(var(--size)*-.75));transition:all .6s cubic-bezier(.23,1,.32,1)}.animated-button:disabled{background-color:var(--color-outline);color:var(--color-on-outline);cursor:not-allowed}.animated-button:disabled svg{fill:var(--color-on-outline)}.animated-button:hover:not(:disabled){box-shadow:0 0 0 var(--size) transparent;background-color:var(--color-tertiary);border-radius:calc(var(--size)*.75)}.animated-button:hover:not(:disabled) svg{animation:anim-btn-move .3s forwards}@keyframes anim-btn-move{0%{right:var(--size)}50%{right:calc(var(--size)*-1.25)}51%{left:calc(var(--size)*-1.5)}to{left:var(--size)}}.animated-button:hover:not(:disabled) .text{transform:translate(calc(var(--size)*.75))}.animated-button:active{scale:.95;box-shadow:0 0 0 calc(var(--size)*.25) var(--color-outline-variant)}.loading-wave{height:6rem;display:flex;align-items:flex-end;z-index:100}.loading-bar{width:1.25rem;height:.75rem;margin:0 .25rem;background-color:var(--color-primary);border-radius:.3rem;animation:loading-wave-animation 1s ease-in-out infinite}.loading-bar:nth-child(2){animation-delay:.1s}.loading-bar:nth-child(3){animation-delay:.2s}.loading-bar:nth-child(4){animation-delay:.3s}@keyframes loading-wave-animation{0%{height:.6rem}50%{height:3rem}to{height:.6rem}}.tooltip{position:relative}.copy{cursor:copy}.tooltip .tooltiptext{visibility:hidden;width:auto;background-color:var(--color-surface-container-highest);color:var(--color-on-surface);border-radius:6px;padding:.25rem;position:absolute;z-index:1;top:125%;right:0%;margin:0;opacity:0;transition:opacity 1s}.tooltip .tooltiptext p{display:block;font-size:1rem;padding:.25rem;margin:0;white-space:nowrap;text-align:left}.tooltip:hover .tooltiptext{visibility:visible;opacity:1}@media (max-width: 765px){.tooltip .tooltiptext{position:absolute;top:125%;left:0%;right:unset}}dialog{display:none;padding:0;opacity:0;translate:0 25vh;transition-property:overlay display opacity;transition-duration:1s;transition-behavior:allow-discrete}dialog[open]{display:block;opacity:1;translate:0 0;text-align:center;background-color:var(--color-surface-container-highest);color:var(--color-on-surface)}@starting-style{dialog[open]{opacity:0;translate:0 -25vh}}dialog::backdrop{background-image:linear-gradient(0deg,var(--color-surface-variant),var(--color-background));transition-property:display opacity overlay;transition-duration:1s;transition-behavior:allow-discrete;opacity:0}dialog[open]::backdrop{opacity:.75}@starting-style{dialog[open]::backdrop{opacity:0}}.all-empty-card{box-sizing:border-box;width:12rem;height:16rem;background:var(--color-surface-container-highest);color:var(--color-primary);border:1px solid var(--color-surface-bright);box-shadow:12px 17px 51px var(--color-inverse-primary);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:17px;text-align:center;cursor:pointer;transition:all .5s;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;font-weight:bolder}.all-empty-card:hover{border:1px solid var(--color-on-primary-container);transform:scale(1.05)}.all-empty-card:active{transform:scale(.95) rotate(1.7deg)} diff --git a/frontend-build/browser/styles-AQLH7WIK.css b/frontend-build/browser/styles-AQLH7WIK.css deleted file mode 100644 index 03b61c8..0000000 --- a/frontend-build/browser/styles-AQLH7WIK.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-size:16px;font-family:Roboto,open sans,Helvetica Neue,Helvetica,Arial,sans-serif;--transition-speed: .6s;--color-success: #00bc8c;--color-info: #3498db;--color-warning: #f39c12;--color-danger: #e74c3c;--color-success-text: #ccf2e8;--color-info-text: #d6eaf8;--color-warning-text: #fdebd0;--color-danger-text: #fadbd8}*{box-sizing:border-box}@media (width > 765px){*{scrollbar-width:thin!important;scrollbar-color:var(--color-secondary) transparent}}html,body{height:100%}body{margin:0;background-color:var(--color-surface-container);color:var(--color-on-surface);transition:background-color .5s ease,color .5s ease;overflow:hidden}@media (width < 765px){body{overflow-y:auto}}.sm-show{display:none!important}@media (max-width: 765px){.sm-none{display:none!important}.sm-show{display:block!important}}.dark{--color-primary: rgb(128 213 212);--color-surface-tint: rgb(128 213 212);--color-on-primary: rgb(0 55 55);--color-primary-container: rgb(0 79 79);--color-on-primary-container: rgb(156 241 240);--color-secondary: rgb(176 204 203);--color-on-secondary: rgb(27 53 52);--color-secondary-container: rgb(50 75 75);--color-on-secondary-container: rgb(204 232 231);--color-tertiary: rgb(179 200 232);--color-on-tertiary: rgb(28 49 75);--color-tertiary-container: rgb(51 72 99);--color-on-tertiary-container: rgb(211 228 255);--color-error: rgb(255 180 171);--color-on-error: rgb(105 0 5);--color-error-container: rgb(147 0 10);--color-on-error-container: rgb(255 218 214);--color-background: rgb(14 21 20);--color-on-background: rgb(221 228 227);--color-surface: rgb(14 21 20);--color-on-surface: rgb(221 228 227);--color-surface-variant: rgb(63 73 72);--color-on-surface-variant: rgb(190 201 200);--color-outline: rgb(136 147 146);--color-outline-variant: rgb(63 73 72);--color-shadow: rgb(0 0 0);--color-scrim: rgb(0 0 0);--color-inverse-surface: rgb(221 228 227);--color-inverse-on-surface: rgb(43 50 49);--color-inverse-primary: rgb(0 106 106);--color-primary-fixed: rgb(156 241 240);--color-on-primary-fixed: rgb(0 32 32);--color-primary-fixed-dim: rgb(128 213 212);--color-on-primary-fixed-variant: rgb(0 79 79);--color-secondary-fixed: rgb(204 232 231);--color-on-secondary-fixed: rgb(5 31 31);--color-secondary-fixed-dim: rgb(176 204 203);--color-on-secondary-fixed-variant: rgb(50 75 75);--color-tertiary-fixed: rgb(211 228 255);--color-on-tertiary-fixed: rgb(4 28 53);--color-tertiary-fixed-dim: rgb(179 200 232);--color-on-tertiary-fixed-variant: rgb(51 72 99);--color-surface-dim: rgb(14 21 20);--color-surface-bright: rgb(52 58 58);--color-surface-container-lowest: rgb(9 15 15);--color-surface-container-low: rgb(22 29 29);--color-surface-container: rgb(26 33 33);--color-surface-container-high: rgb(37 43 43);--color-surface-container-highest: rgb(47 54 54)}.light{--color-primary: rgb(0 106 106);--color-surface-tint: rgb(0 106 106);--color-on-primary: rgb(255 255 255);--color-primary-container: rgb(156 241 240);--color-on-primary-container: rgb(0 32 32);--color-secondary: rgb(74 99 99);--color-on-secondary: rgb(255 255 255);--color-secondary-container: rgb(204 232 231);--color-on-secondary-container: rgb(5 31 31);--color-tertiary: rgb(75 96 124);--color-on-tertiary: rgb(255 255 255);--color-tertiary-container: rgb(211 228 255);--color-on-tertiary-container: rgb(4 28 53);--color-error: rgb(186 26 26);--color-on-error: rgb(255 255 255);--color-error-container: rgb(255 218 214);--color-on-error-container: rgb(65 0 2);--color-background: rgb(244 251 250);--color-on-background: rgb(22 29 29);--color-surface: rgb(244 251 250);--color-on-surface: rgb(22 29 29);--color-surface-variant: rgb(218 229 228);--color-on-surface-variant: rgb(63 73 72);--color-outline: rgb(111 121 121);--color-outline-variant: rgb(190 201 200);--color-shadow: rgb(0 0 0);--color-scrim: rgb(0 0 0);--color-inverse-surface: rgb(43 50 49);--color-inverse-on-surface: rgb(236 242 241);--color-inverse-primary: rgb(128 213 212);--color-primary-fixed: rgb(156 241 240);--color-on-primary-fixed: rgb(0 32 32);--color-primary-fixed-dim: rgb(128 213 212);--color-on-primary-fixed-variant: rgb(0 79 79);--color-secondary-fixed: rgb(204 232 231);--color-on-secondary-fixed: rgb(5 31 31);--color-secondary-fixed-dim: rgb(176 204 203);--color-on-secondary-fixed-variant: rgb(50 75 75);--color-tertiary-fixed: rgb(211 228 255);--color-on-tertiary-fixed: rgb(4 28 53);--color-tertiary-fixed-dim: rgb(179 200 232);--color-on-tertiary-fixed-variant: rgb(51 72 99);--color-surface-dim: rgb(213 219 218);--color-surface-bright: rgb(244 251 250);--color-surface-container-lowest: rgb(255 255 255);--color-surface-container-low: rgb(239 245 244);--color-surface-container: rgb(233 239 238);--color-surface-container-high: rgb(227 233 233);--color-surface-container-highest: rgb(221 228 227)}hr{border:0;border-top:1px solid var(--color-outline);margin:0 0 .5rem}.text-lg{font-size:2.5rem}.text-md{font-size:1.5rem}.text-sm{font-size:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-primary{color:var(--color-primary)}.icon{margin:auto;padding:.25rem;height:1.5rem;width:1.5rem;fill:var(--color-on-surface)}button{padding:.5rem 1rem;border:none;border-radius:.25rem;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color var(--transition-speed);background-color:var(--color-primary);color:var(--color-on-primary)}button:disabled{cursor:not-allowed;opacity:.5}button.primary{background-color:var(--color-primary);color:var(--color-on-primary)}button.secondary{background-color:var(--color-secondary);color:var(--color-on-secondary)}button.tertiary{background-color:var(--color-tertiary);color:var(--color-on-tertiary)}button.danger{background-color:var(--color-danger);color:var(--color-danger-text)}.icononly-button{width:3rem;height:3rem;display:flex;justify-content:center;align-items:center;padding:.5rem;border:none;border-radius:50%;cursor:pointer}button>svg{height:1.5rem;width:1.5rem;fill:var(--color-on-primary)}.animated-button{display:flex;align-items:center;--size: 12px;padding:var(--size) calc(var(--size)*2);border:calc(var(--size)*.25) solid;border-color:transparent;font-size:var(--size);color:var(--color-on-secondary);background-color:var(--color-secondary);border-radius:calc(var(--size)*6);font-weight:600;cursor:pointer;position:relative;overflow:hidden;transition:all .4s cubic-bezier(.23,1,.32,1)}.animated-button svg{position:absolute;width:calc(var(--size)*1.5);fill:var(--color-on-secondary);z-index:9;right:var(--size);transition:all .3s cubic-bezier(.23,1,.32,1)}.animated-button .text{position:relative;text-transform:uppercase;z-index:1;transform:translate(calc(var(--size)*-.75));transition:all .6s cubic-bezier(.23,1,.32,1)}.animated-button:disabled{background-color:var(--color-outline);color:var(--color-on-outline);cursor:not-allowed}.animated-button:disabled svg{fill:var(--color-on-outline)}.animated-button:hover:not(:disabled){box-shadow:0 0 0 var(--size) transparent;background-color:var(--color-tertiary);border-radius:calc(var(--size)*.75)}.animated-button:hover:not(:disabled) svg{animation:anim-btn-move .3s forwards}@keyframes anim-btn-move{0%{right:var(--size)}50%{right:calc(var(--size)*-1.25)}51%{left:calc(var(--size)*-1.5)}to{left:var(--size)}}.animated-button:hover:not(:disabled) .text{transform:translate(calc(var(--size)*.75))}.animated-button:active{scale:.95;box-shadow:0 0 0 calc(var(--size)*.25) var(--color-outline-variant)}.loading-wave{height:6rem;display:flex;align-items:flex-end;z-index:100}.loading-bar{width:1.25rem;height:.75rem;margin:0 .25rem;background-color:var(--color-primary);border-radius:.3rem;animation:loading-wave-animation 1s ease-in-out infinite}.loading-bar:nth-child(2){animation-delay:.1s}.loading-bar:nth-child(3){animation-delay:.2s}.loading-bar:nth-child(4){animation-delay:.3s}@keyframes loading-wave-animation{0%{height:.6rem}50%{height:3rem}to{height:.6rem}}.tooltip{position:relative}.copy{cursor:copy}.tooltip .tooltiptext{visibility:hidden;width:auto;background-color:var(--color-surface-container-highest);color:var(--color-on-surface);border-radius:6px;padding:.25rem;position:absolute;z-index:1;top:125%;right:0%;margin:0;opacity:0;transition:opacity 1s}.tooltip .tooltiptext p{display:block;font-size:1rem;padding:.25rem;margin:0;white-space:nowrap;text-align:left}.tooltip:hover .tooltiptext{visibility:visible;opacity:1}@media (max-width: 765px){.tooltip .tooltiptext{position:absolute;top:125%;left:0%;right:unset}}dialog{display:none;padding:0;opacity:0;translate:0 25vh;transition-property:overlay display opacity;transition-duration:1s;transition-behavior:allow-discrete}dialog[open]{display:block;opacity:1;translate:0 0;text-align:center;background-color:var(--color-surface-container-highest);color:var(--color-on-surface)}@starting-style{dialog[open]{opacity:0;translate:0 -25vh}}dialog::backdrop{background-image:linear-gradient(0deg,var(--color-surface-variant),var(--color-background));transition-property:display opacity overlay;transition-duration:1s;transition-behavior:allow-discrete;opacity:0}dialog[open]::backdrop{opacity:.75}@starting-style{dialog[open]::backdrop{opacity:0}}.all-empty-card{box-sizing:border-box;width:12rem;height:16rem;background:var(--color-surface-container-highest);color:var(--color-primary);border:1px solid var(--color-surface-bright);box-shadow:12px 17px 51px var(--color-inverse-primary);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:17px;text-align:center;cursor:pointer;transition:all .5s;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;font-weight:bolder}.all-empty-card:hover{border:1px solid var(--color-on-primary-container);transform:scale(1.05)}.all-empty-card:active{transform:scale(.95) rotate(1.7deg)} diff --git a/frontend/angular.json b/frontend/angular.json index 8d5fe3f..bcf3b03 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -84,12 +84,7 @@ "src/assets" ], "styles": [ - "src/styles/styles.css", - "node_modules/bootstrap/dist/css/bootstrap.css", - "node_modules/bootstrap-icons/font/bootstrap-icons.css", - "src/styles/bootstrap_journal.css", - "src/styles/bootstrap_solar.css", - "src/styles/bootstrap_vapor.css" + "src/styles/styles.css" ], "scripts": [] } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1695f3c..a9830d2 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -42,6 +42,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -51,12 +52,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1703.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.8.tgz", - "integrity": "sha512-lKxwG4/QABXZvJpqeSIn/kAwnY6MM9HdHZUV+o5o3UiTi+vO8rZApG4CCaITH3Bxebm7Nam7Xbk8RuukC5rq6g==", + "version": "0.1703.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.9.tgz", + "integrity": "sha512-kEPfTOVnzrJxPGTvaXy8653HU9Fucxttx9gVfQR1yafs+yIEGx3fKGKe89YPmaEay32bIm7ZUpxDF1FO14nkdQ==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.8", + "@angular-devkit/core": "17.3.9", "rxjs": "7.8.1" }, "engines": { @@ -66,15 +68,16 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.8.tgz", - "integrity": "sha512-ixsdXggWaFRP7Jvxd0AMukImnePuGflT9Yy7NJ9/y0cL/k//S/3RnkQv5i411KzN+7D4RIbNkRGGTYeqH24zlg==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.9.tgz", + "integrity": "sha512-EuAPSC4c2DSJLlL4ieviKLx1faTyY+ymWycq6KFwoxu1FgWly/dqBeWyXccYinLhPVZmoh6+A/5S4YWXlOGSnA==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1703.8", - "@angular-devkit/build-webpack": "0.1703.8", - "@angular-devkit/core": "17.3.8", + "@angular-devkit/architect": "0.1703.9", + "@angular-devkit/build-webpack": "0.1703.9", + "@angular-devkit/core": "17.3.9", "@babel/core": "7.24.0", "@babel/generator": "7.23.6", "@babel/helper-annotate-as-pure": "7.22.5", @@ -85,7 +88,7 @@ "@babel/preset-env": "7.24.0", "@babel/runtime": "7.24.0", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.3.8", + "@ngtools/webpack": "17.3.9", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.18", @@ -129,7 +132,7 @@ "undici": "6.11.1", "vite": "5.1.7", "watchpack": "2.4.0", - "webpack": "5.90.3", + "webpack": "5.94.0", "webpack-dev-middleware": "6.1.2", "webpack-dev-server": "4.15.1", "webpack-merge": "5.10.0", @@ -198,15 +201,17 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1703.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.8.tgz", - "integrity": "sha512-9u6fl8VVOxcLOEMzrUeaybSvi9hSLSRucHnybneYrabsgreDo32tuy/4G8p6YAHQjpWEj9jvF9Um13ertdni5Q==", + "version": "0.1703.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.9.tgz", + "integrity": "sha512-3b0LND39Nc+DwCQ0N7Tbsd7RAFWTeIc4VDwk/7RO8EMYTP5Kfgr/TK66nwTBypHsjmD69IMKHZZaZuiDfGfx2A==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1703.8", + "@angular-devkit/architect": "0.1703.9", "rxjs": "7.8.1" }, "engines": { @@ -220,10 +225,11 @@ } }, "node_modules/@angular-devkit/core": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.8.tgz", - "integrity": "sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.9.tgz", + "integrity": "sha512-/iKyn5YT7NW5ylrg9yufUydS8byExeQ2HHIwFC4Ebwb/JYYCz+k4tBf2LdP+zXpemDpLznXTQGWia0/yJjG8Vg==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -247,12 +253,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.8.tgz", - "integrity": "sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.9.tgz", + "integrity": "sha512-9qg+uWywgAtaQlvbnCQv47hcL6ZuA+d9ucgZ0upZftBllZ2vp5WIthCPb2mB0uBkj84Csmtz9MsErFjOQtTj4g==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.8", + "@angular-devkit/core": "17.3.9", "jsonc-parser": "3.2.1", "magic-string": "0.30.8", "ora": "5.4.1", @@ -268,6 +275,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.12.tgz", "integrity": "sha512-9hsdWF4gRRcVJtPcCcYLaX1CIyM9wUu6r+xRl6zU5hq8qhl35hig6ounz7CXFAzLf0WDBdM16bPHouVGaG76lg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -279,15 +287,16 @@ } }, "node_modules/@angular/cli": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.8.tgz", - "integrity": "sha512-X5ZOQ6ZTKVHjhIsfl32ZRqbs+FUoeHLbT7x4fh2Os/8ObDDwrUcCJPqxe2b2RB5E2d0vepYigknHeLE7gwzlNQ==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.9.tgz", + "integrity": "sha512-b5RGu5RO4VKZlMQDatwABAn1qocgD9u4IrGN2dvHDcrz5apTKYftUdGyG42vngyDNBCg1mWkSDQEWK4f2HfuGg==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1703.8", - "@angular-devkit/core": "17.3.8", - "@angular-devkit/schematics": "17.3.8", - "@schematics/angular": "17.3.8", + "@angular-devkit/architect": "0.1703.9", + "@angular-devkit/core": "17.3.9", + "@angular-devkit/schematics": "17.3.9", + "@schematics/angular": "17.3.9", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.2", @@ -316,6 +325,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.12.tgz", "integrity": "sha512-vabJzvrx76XXFrm1RJZ6o/CyG32piTB/1sfFfKHdlH1QrmArb8It4gyk9oEjZ1IkAD0HvBWlfWmn+T6Vx3pdUw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -331,6 +341,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.12.tgz", "integrity": "sha512-vwI8oOL/gM+wPnptOVeBbMfZYwzRxQsovojZf+Zol9szl0k3SZ3FycWlxxXZGFu3VIEfrP6pXplTmyODS/Lt1w==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -351,6 +362,7 @@ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.12.tgz", "integrity": "sha512-1F8M7nWfChzurb7obbvuE7mJXlHtY1UG58pcwcomVtpPb+kPavgAO8OEvJHYBMV+bzSxkXt5UIwL9lt9jHUxZA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "7.23.9", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -379,6 +391,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -408,13 +421,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -423,6 +438,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.12.tgz", "integrity": "sha512-MuFt5yKi161JmauUta4Dh0m8ofwoq6Ino+KoOtkYMBGsSx+A7dSm+DUxxNwdj7+DNyg3LjVGCFgBFnq4g8z06A==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -438,6 +454,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.12.tgz", "integrity": "sha512-tV6r12Q3yEUlXwpVko4E+XscunTIpPkLbaiDn/MTL3Vxi2LZnsLgHyd/i38HaHN+e/H3B0a1ToSOhV5wf3ay4Q==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -456,6 +473,7 @@ "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-17.3.12.tgz", "integrity": "sha512-b7J7zY/CgJhFVPtmu/pEjefU5SHuTy7lQgX6kTrJPaUSJ5i578R17xr4SwrWe7G4jzQwO6GXZZd17a62uNRyOA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "7.23.9", "@types/babel__core": "7.20.5", @@ -480,6 +498,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -509,13 +528,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@angular/localize/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -524,6 +545,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.12.tgz", "integrity": "sha512-DYY04ptWh/ulMHzd+y52WCE8QnEYGeIiW3hEIFjCN8z0kbIdFdUtEB0IK5vjNL3ejyhUmphcpeT5PYf3YXtqWQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -545,6 +567,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.12.tgz", "integrity": "sha512-DQwV7B2x/DRLRDSisngZRdLqHdYbbrqZv2Hmu4ZbnNYaWPC8qvzgE/0CvY+UkDat3nCcsfwsMnlDeB6TL7/IaA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -562,6 +585,7 @@ "version": "17.3.12", "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.12.tgz", "integrity": "sha512-dg7PHBSW9fmPKTVzwvHEeHZPZdpnUqW/U7kj8D29HTP9ur8zZnx9QcnbplwPeYb8yYa62JMnZSEel2X4PxdYBg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -580,6 +604,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" @@ -589,10 +614,11 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", - "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -602,6 +628,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -631,13 +658,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -647,6 +676,7 @@ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", @@ -662,6 +692,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -674,6 +705,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -683,12 +715,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.24.8", + "@babel/compat-data": "^7.25.2", "@babel/helper-validator-option": "^7.24.8", "browserslist": "^4.23.1", "lru-cache": "^5.1.1", @@ -703,24 +736,24 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", - "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.8", "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/traverse": "^7.25.4", "semver": "^6.3.1" }, "engines": { @@ -735,18 +768,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -759,15 +781,17 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", @@ -785,6 +809,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -797,6 +822,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -806,6 +832,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -822,31 +849,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -859,6 +862,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.8", "@babel/types": "^7.24.8" @@ -872,6 +876,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -881,16 +886,16 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", - "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -899,23 +904,12 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -928,19 +922,21 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -954,6 +950,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -962,14 +959,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -983,6 +981,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -996,6 +995,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -1009,6 +1009,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -1021,6 +1022,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1030,6 +1032,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1039,33 +1042,35 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", - "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.8" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" @@ -1076,6 +1081,7 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", @@ -1087,10 +1093,14 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", - "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -1099,12 +1109,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1118,6 +1129,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -1131,13 +1143,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1151,6 +1164,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -1163,6 +1177,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1175,6 +1190,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1187,6 +1203,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1202,6 +1219,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1214,6 +1232,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1222,12 +1241,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", + "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1237,12 +1257,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1256,6 +1277,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1268,6 +1290,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1280,6 +1303,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1292,6 +1316,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1304,6 +1329,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1316,6 +1342,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1328,6 +1355,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1340,6 +1368,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1352,6 +1381,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1367,6 +1397,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1382,6 +1413,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1398,6 +1430,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1413,6 +1446,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -1431,6 +1465,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1448,6 +1483,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1459,12 +1495,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1474,13 +1511,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1494,6 +1532,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1507,18 +1546,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", - "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", "globals": "^11.1.0" }, "engines": { @@ -1533,18 +1571,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -1557,6 +1584,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/template": "^7.24.7" @@ -1573,6 +1601,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -1588,6 +1617,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1604,6 +1634,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1619,6 +1650,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1635,6 +1667,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1651,6 +1684,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1667,6 +1701,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -1679,14 +1714,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1700,6 +1736,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1712,12 +1749,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1731,6 +1769,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1747,6 +1786,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1762,6 +1802,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1778,6 +1819,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.8", "@babel/helper-plugin-utils": "^7.24.8", @@ -1791,15 +1833,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1813,6 +1856,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1829,6 +1873,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1845,6 +1890,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1860,6 +1906,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1876,6 +1923,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1892,6 +1940,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1910,6 +1959,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7" @@ -1926,6 +1976,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1942,6 +1993,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -1959,6 +2011,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1970,13 +2023,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1990,6 +2044,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-create-class-features-plugin": "^7.24.7", @@ -2008,6 +2063,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -2020,6 +2076,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2035,6 +2092,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" @@ -2051,6 +2109,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2066,6 +2125,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0", @@ -2086,6 +2146,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2095,6 +2156,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2110,6 +2172,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -2126,6 +2189,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2141,6 +2205,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2156,6 +2221,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -2171,6 +2237,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2186,6 +2253,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2202,6 +2270,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2214,13 +2283,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2234,6 +2304,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -2328,6 +2399,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2337,6 +2409,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2350,13 +2423,15 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/runtime": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2365,33 +2440,32 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", - "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.8", - "@babel/types": "^7.24.8", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2400,12 +2474,13 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.24.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", - "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.9", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -2414,23 +2489,12 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", - "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", @@ -2445,6 +2509,7 @@ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.1.90" } @@ -2454,6 +2519,7 @@ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -2466,6 +2532,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -2482,6 +2549,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2498,6 +2566,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2514,6 +2583,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2530,6 +2600,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2546,6 +2617,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2562,6 +2634,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2578,6 +2651,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2594,6 +2668,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2610,6 +2685,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2626,6 +2702,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2642,6 +2719,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2658,6 +2736,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2674,6 +2753,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2690,6 +2770,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2706,6 +2787,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2722,6 +2804,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2738,6 +2821,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2754,6 +2838,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2770,6 +2855,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -2786,6 +2872,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2802,6 +2889,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2818,6 +2906,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2831,6 +2920,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2844,10 +2934,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2860,6 +2951,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2871,13 +2963,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2895,6 +2989,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2910,6 +3005,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2927,6 +3023,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2943,6 +3040,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2952,6 +3050,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2966,6 +3065,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -2975,6 +3075,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -2984,6 +3085,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -2993,13 +3095,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3009,13 +3113,15 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@ljharb/through": { "version": "2.3.13", "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -3024,10 +3130,11 @@ } }, "node_modules/@ngtools/webpack": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.8.tgz", - "integrity": "sha512-CjSVVa/9fzMpEDQP01SC4colKCbZwj7vUq0H2bivp8jVsmd21x9Fu0gDBH0Y9NdfAIm4eGZvmiZKMII3vIOaYQ==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.9.tgz", + "integrity": "sha512-2+NvEQuYKRWdZaJbRJWEnR48tpW0uYbhwfHBHLDI9Kazb3mb0oAwYBVXdq+TtDLBypXnMsFpCewjRHTvkVx4/A==", "dev": true, + "license": "MIT", "engines": { "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -3044,6 +3151,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3057,6 +3165,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -3066,6 +3175,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3079,6 +3189,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", "dev": true, + "license": "ISC", "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -3094,13 +3205,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@npmcli/fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -3113,6 +3226,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", "ini": "^4.1.3", @@ -3133,6 +3247,7 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3142,6 +3257,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -3150,13 +3266,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@npmcli/git/node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3166,6 +3284,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -3181,6 +3300,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, + "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -3197,6 +3317,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3206,6 +3327,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", @@ -3224,6 +3346,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -3233,6 +3356,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -3253,6 +3377,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3268,6 +3393,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3277,6 +3403,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", "dev": true, + "license": "ISC", "dependencies": { "which": "^4.0.0" }, @@ -3289,6 +3416,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -3298,6 +3426,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -3313,6 +3442,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", "dev": true, + "license": "ISC", "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -3322,6 +3452,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", @@ -3338,6 +3469,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -3347,6 +3479,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -3362,6 +3495,7 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -3371,227 +3505,245 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz", - "integrity": "sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz", - "integrity": "sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz", - "integrity": "sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz", - "integrity": "sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz", - "integrity": "sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz", - "integrity": "sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz", - "integrity": "sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz", - "integrity": "sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz", - "integrity": "sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz", - "integrity": "sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz", - "integrity": "sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz", - "integrity": "sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz", - "integrity": "sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz", - "integrity": "sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz", - "integrity": "sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz", - "integrity": "sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@schematics/angular": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.8.tgz", - "integrity": "sha512-2g4OmSyE9YGq50Uj7fNI26P/TSAFJ7ZuirwTF2O7Xc4XRQ29/tYIIqhezpNlTb6rlYblcQuMcUZBrMfWJHcqJw==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.9.tgz", + "integrity": "sha512-q6N8mbcYC6cgPyjTrMH7ehULQoUUwEYN4g7uo4ylZ/PFklSLJvpSp4BuuxANgW449qHSBvQfdIoui9ayAUXQzA==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.8", - "@angular-devkit/schematics": "17.3.8", + "@angular-devkit/core": "17.3.9", + "@angular-devkit/schematics": "17.3.9", "jsonc-parser": "3.2.1" }, "engines": { @@ -3605,6 +3757,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.3.2" }, @@ -3617,6 +3770,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -3626,6 +3780,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -3635,6 +3790,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", @@ -3652,6 +3808,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3661,6 +3818,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.3.2", "tuf-js": "^2.2.1" @@ -3674,6 +3832,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.1.0", @@ -3687,13 +3846,15 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, + "license": "MIT", "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -3703,6 +3864,7 @@ "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.4" @@ -3716,6 +3878,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -3725,6 +3888,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3740,6 +3904,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -3753,6 +3918,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -3762,6 +3928,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -3772,6 +3939,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } @@ -3781,6 +3949,7 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -3791,6 +3960,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3800,6 +3970,7 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3809,6 +3980,7 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -3818,48 +3990,32 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/eslint": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", - "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -3872,6 +4028,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3883,13 +4040,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3898,27 +4057,31 @@ "version": "5.1.4", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", - "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { @@ -3926,33 +4089,38 @@ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -3963,6 +4131,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } @@ -3972,6 +4141,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -3983,15 +4153,17 @@ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/ws": { - "version": "8.5.11", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", - "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4001,6 +4173,7 @@ "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.6.0" }, @@ -4013,6 +4186,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -4022,25 +4196,29 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -4051,13 +4229,15 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4070,6 +4250,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -4079,6 +4260,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -4087,13 +4269,15 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4110,6 +4294,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -4123,6 +4308,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4135,6 +4321,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -4149,6 +4336,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" @@ -4158,25 +4346,29 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4186,6 +4378,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4199,6 +4392,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4206,11 +4400,12 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -4220,6 +4415,7 @@ "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -4233,6 +4429,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -4247,6 +4444,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -4259,6 +4457,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4272,6 +4471,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -4288,6 +4488,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4305,6 +4506,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -4317,6 +4519,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4326,6 +4529,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4344,6 +4548,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -4353,6 +4558,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4362,6 +4568,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -4374,6 +4581,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4387,6 +4595,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -4399,6 +4608,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -4407,7 +4617,8 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/autoprefixer": { "version": "10.4.18", @@ -4428,6 +4639,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-lite": "^1.0.30001591", @@ -4451,6 +4663,7 @@ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -4468,6 +4681,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -4484,6 +4698,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.2", @@ -4498,6 +4713,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -4507,6 +4723,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.5.0", "core-js-compat": "^3.34.0" @@ -4520,6 +4737,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -4536,6 +4754,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.5.0" }, @@ -4548,6 +4767,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -4563,7 +4783,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -4583,13 +4804,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } @@ -4598,13 +4821,15 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -4614,6 +4839,7 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -4626,6 +4852,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4633,10 +4860,11 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -4646,7 +4874,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -4661,6 +4889,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -4669,13 +4898,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bonjour-service": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -4685,13 +4916,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4702,6 +4935,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -4710,9 +4944,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -4728,10 +4962,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", "update-browserslist-db": "^1.1.0" }, "bin": { @@ -4760,6 +4995,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -4769,13 +5005,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4785,6 +5023,7 @@ "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -4808,6 +5047,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -4817,6 +5057,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -4836,13 +5077,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/cacache/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4858,6 +5101,7 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -4877,6 +5121,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4886,14 +5131,15 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001643", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", - "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", "dev": true, "funding": [ { @@ -4908,13 +5154,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4928,13 +5176,15 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4959,6 +5209,7 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -4968,6 +5219,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -4977,6 +5229,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4986,6 +5239,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -4998,6 +5252,7 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -5010,6 +5265,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 12" } @@ -5019,6 +5275,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -5033,6 +5290,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5048,6 +5306,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5059,13 +5318,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5083,6 +5344,7 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -5092,6 +5354,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -5106,6 +5369,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -5114,31 +5378,36 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5151,6 +5420,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5169,6 +5439,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5178,6 +5449,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5186,25 +5458,29 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -5220,6 +5496,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -5229,6 +5506,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5237,13 +5515,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -5256,6 +5536,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5264,13 +5545,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5279,13 +5562,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, + "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -5298,6 +5583,7 @@ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, + "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -5322,6 +5608,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5330,12 +5617,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -5346,13 +5634,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -5366,6 +5656,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -5391,13 +5682,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/cosmiconfig/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5410,6 +5703,7 @@ "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.0", "css-select": "^5.1.0", @@ -5425,6 +5719,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5440,6 +5735,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5456,6 +5752,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5467,13 +5764,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/critters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5483,6 +5782,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5495,6 +5795,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5509,6 +5810,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5524,6 +5826,7 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -5559,6 +5862,7 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -5575,6 +5879,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -5587,6 +5892,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5598,24 +5904,27 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/date-format": { "version": "4.0.14", "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -5631,6 +5940,7 @@ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -5643,6 +5953,7 @@ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -5655,6 +5966,7 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5672,6 +5984,7 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5681,6 +5994,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5690,6 +6004,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -5699,19 +6014,22 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -5724,6 +6042,7 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -5736,6 +6055,7 @@ "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, + "license": "MIT", "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -5748,6 +6068,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -5767,13 +6088,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -5789,6 +6112,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -5802,31 +6126,36 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.832", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.832.tgz", - "integrity": "sha512-cTen3SB0H2SGU7x467NRe1eVcQgcuS6jckKfWJHia2eo0cHIGOqHoAxevIYZD4eRHcWjkvFzo93bi3vJ9W+1lA==", - "dev": true + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz", + "integrity": "sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -5836,6 +6165,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5845,6 +6175,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -5855,6 +6186,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -5868,6 +6200,7 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -5889,15 +6222,17 @@ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5911,6 +6246,7 @@ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^1.4.1" }, @@ -5923,6 +6259,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -5935,6 +6272,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5943,13 +6281,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -5963,6 +6303,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -5972,6 +6313,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -5984,6 +6326,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -5992,7 +6335,8 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.20.1", @@ -6000,6 +6344,7 @@ "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "bin": { "esbuild": "bin/esbuild" @@ -6038,6 +6383,7 @@ "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", "dev": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -6046,10 +6392,11 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6058,13 +6405,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -6074,6 +6423,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -6087,6 +6437,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -6100,6 +6451,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -6112,6 +6464,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -6121,6 +6474,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -6130,6 +6484,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -6139,6 +6494,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6147,13 +6503,15 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -6163,6 +6521,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -6185,40 +6544,42 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -6234,6 +6595,7 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6243,18 +6605,30 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -6269,13 +6643,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6284,13 +6660,15 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -6304,13 +6682,15 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -6326,13 +6706,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -6342,6 +6724,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -6354,6 +6737,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -6369,6 +6753,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6381,6 +6766,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -6399,6 +6785,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6407,13 +6794,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/finalhandler/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -6426,6 +6815,7 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, + "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -6442,6 +6832,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6455,6 +6846,7 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -6463,12 +6855,13 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -6476,6 +6869,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6486,10 +6880,11 @@ } }, "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -6506,6 +6901,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -6518,6 +6914,7 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6527,6 +6924,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -6540,6 +6938,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6549,6 +6948,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -6563,6 +6963,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -6574,13 +6975,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true + "dev": true, + "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -6588,6 +6991,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6601,6 +7005,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6610,6 +7015,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -6619,6 +7025,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6628,6 +7035,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -6647,6 +7055,7 @@ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -6656,6 +7065,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6669,6 +7079,7 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6689,6 +7100,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -6700,13 +7112,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6716,6 +7130,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, + "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -6735,6 +7150,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -6746,19 +7162,22 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6768,6 +7187,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -6780,6 +7200,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6792,6 +7213,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6804,6 +7226,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -6816,6 +7239,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -6827,13 +7251,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -6846,6 +7272,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6860,13 +7287,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -6885,13 +7314,15 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/htmlparser2": { "version": "8.0.2", @@ -6905,6 +7336,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -6916,19 +7348,22 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6945,6 +7380,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6953,13 +7389,15 @@ "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -6974,6 +7412,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -6987,6 +7426,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -7011,6 +7451,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -7024,6 +7465,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -7033,6 +7475,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -7045,6 +7488,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -7070,13 +7514,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -7086,6 +7532,7 @@ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -7098,6 +7545,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -7107,6 +7555,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7122,6 +7571,7 @@ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, + "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -7134,13 +7584,15 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7157,6 +7609,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7166,6 +7619,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -7175,6 +7629,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7185,6 +7640,7 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7194,13 +7650,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7210,6 +7668,7 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", "dev": true, + "license": "MIT", "dependencies": { "@ljharb/through": "^2.3.12", "ansi-escapes": "^4.3.2", @@ -7236,6 +7695,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -7248,6 +7708,7 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -7260,13 +7721,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -7275,13 +7738,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -7290,10 +7755,11 @@ } }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -7309,6 +7775,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -7324,6 +7791,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7333,6 +7801,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7342,6 +7811,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7354,6 +7824,7 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7362,13 +7833,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -7378,6 +7851,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7390,6 +7864,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -7402,6 +7877,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7414,6 +7890,7 @@ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7425,13 +7902,15 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -7443,13 +7922,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isbinaryfile": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -7461,13 +7942,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7477,6 +7960,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -7486,6 +7970,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -7502,6 +7987,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -7511,6 +7997,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -7525,6 +8012,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7534,6 +8022,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7546,6 +8035,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -7560,6 +8050,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7569,6 +8060,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -7582,6 +8074,7 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7596,13 +8089,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -7617,6 +8112,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7626,6 +8122,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7641,6 +8138,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -7649,13 +8147,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -7668,13 +8168,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7687,6 +8189,7 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7695,13 +8198,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -7713,13 +8218,15 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -7731,13 +8238,15 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/karma": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", - "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, + "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -7776,6 +8285,7 @@ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", "dev": true, + "license": "MIT", "dependencies": { "which": "^1.2.1" } @@ -7785,6 +8295,7 @@ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, + "license": "MIT", "dependencies": { "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-instrument": "^5.1.0", @@ -7802,6 +8313,7 @@ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", "dev": true, + "license": "MIT", "dependencies": { "jasmine-core": "^4.1.0" }, @@ -7817,6 +8329,7 @@ "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", "dev": true, + "license": "MIT", "peerDependencies": { "jasmine-core": "^4.0.0 || ^5.0.0", "karma": "^6.0.0", @@ -7827,13 +8340,15 @@ "version": "4.6.1", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, + "license": "MIT", "dependencies": { "source-map-support": "^0.5.5" } @@ -7843,6 +8358,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7858,6 +8374,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -7869,6 +8386,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7880,13 +8398,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/karma/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7896,6 +8416,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } @@ -7905,6 +8426,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7922,6 +8444,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -7940,6 +8463,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -7949,6 +8473,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7958,15 +8483,17 @@ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/launch-editor": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", - "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -7977,6 +8504,7 @@ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -8003,6 +8531,7 @@ "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4" }, @@ -8023,6 +8552,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -8037,6 +8567,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -8050,6 +8581,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -8060,6 +8592,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -8070,6 +8603,7 @@ "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, + "license": "ISC", "dependencies": { "webpack-sources": "^3.0.0" }, @@ -8086,13 +8620,15 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -8102,6 +8638,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" } @@ -8111,6 +8648,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -8122,19 +8660,22 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8151,6 +8692,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8166,6 +8708,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8182,6 +8725,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8193,13 +8737,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8209,6 +8755,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8221,6 +8768,7 @@ "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -8237,6 +8785,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -8246,6 +8795,7 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -8258,6 +8808,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -8273,6 +8824,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", @@ -8296,6 +8848,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -8305,6 +8858,7 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8314,6 +8868,7 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -8322,22 +8877,28 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -8347,15 +8908,17 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -8369,6 +8932,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8381,6 +8945,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -8393,6 +8958,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8402,6 +8968,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -8414,6 +8981,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8423,6 +8991,7 @@ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -8442,13 +9011,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8461,6 +9032,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8470,6 +9042,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -8479,6 +9052,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -8491,6 +9065,7 @@ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -8508,6 +9083,7 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8520,6 +9096,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8531,13 +9108,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", "dev": true, + "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -8548,6 +9127,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8559,13 +9139,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8578,6 +9160,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8589,13 +9172,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8608,6 +9193,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8619,13 +9205,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -8639,6 +9227,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8650,13 +9239,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -8669,21 +9260,24 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -8697,6 +9291,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -8712,6 +9307,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8724,6 +9320,7 @@ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.3", @@ -8741,6 +9338,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -8754,6 +9352,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8762,12 +9361,14 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ngx-timeago": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ngx-timeago/-/ngx-timeago-3.0.0.tgz", "integrity": "sha512-oz+X8qbPJD6uFHXVWUTE+scjLPskOKbrAVlUG0pUwrn8wru7woryGdK/xdjvS74n187tbo5+e8AXgLCqEvUSjw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -8782,6 +9383,7 @@ "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "!win32" @@ -8796,6 +9398,7 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/node-forge": { @@ -8803,6 +9406,7 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -8812,6 +9416,7 @@ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -8832,10 +9437,11 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", - "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", "dev": true, + "license": "MIT", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -8848,6 +9454,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -8857,6 +9464,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -8877,6 +9485,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -8886,6 +9495,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8901,6 +9511,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -8910,6 +9521,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -8924,13 +9536,15 @@ "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nopt": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -8946,6 +9560,7 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -8960,6 +9575,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8969,6 +9585,7 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8978,6 +9595,7 @@ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -8990,6 +9608,7 @@ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -9002,6 +9621,7 @@ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9011,6 +9631,7 @@ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", "dev": true, + "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^3.0.0", @@ -9026,6 +9647,7 @@ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", "dev": true, + "license": "ISC", "dependencies": { "ignore-walk": "^6.0.4" }, @@ -9038,6 +9660,7 @@ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", "dev": true, + "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -9053,6 +9676,7 @@ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/redact": "^1.1.0", "make-fetch-happen": "^13.0.0", @@ -9072,6 +9696,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9081,6 +9706,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -9093,6 +9719,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -9105,6 +9732,7 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9114,6 +9742,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9125,13 +9754,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -9144,6 +9775,7 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9153,6 +9785,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -9162,6 +9795,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -9177,6 +9811,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -9194,6 +9829,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -9217,6 +9853,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9232,6 +9869,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9248,6 +9886,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9259,13 +9898,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ora/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9275,6 +9916,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9287,6 +9929,7 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9296,6 +9939,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -9311,6 +9955,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -9323,6 +9968,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -9338,6 +9984,7 @@ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -9351,6 +9998,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -9360,6 +10008,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9368,13 +10017,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/pacote": { "version": "17.0.6", "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", @@ -9407,6 +10058,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -9419,6 +10071,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -9436,13 +10089,15 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -9452,6 +10107,7 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -9464,6 +10120,7 @@ "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.3.0", "parse5": "^7.0.0", @@ -9478,6 +10135,7 @@ "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", "dev": true, + "license": "MIT", "dependencies": { "parse5": "^7.0.0" }, @@ -9490,6 +10148,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9499,6 +10158,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9508,6 +10168,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9517,6 +10178,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9525,13 +10187,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -9547,34 +10211,39 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -9587,6 +10256,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -9597,6 +10267,7 @@ "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", "integrity": "sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==", "dev": true, + "license": "MIT", "optionalDependencies": { "nice-napi": "^1.0.2" } @@ -9606,6 +10277,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -9621,6 +10293,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -9637,6 +10310,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -9652,6 +10326,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -9667,6 +10342,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -9682,6 +10358,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -9705,6 +10382,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -9719,6 +10397,7 @@ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^9.0.0", "jiti": "^1.20.0", @@ -9749,13 +10428,15 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -9768,6 +10449,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -9785,6 +10467,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -9800,6 +10483,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -9811,10 +10495,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -9827,13 +10512,15 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9842,19 +10529,22 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -9868,6 +10558,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -9881,6 +10572,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -9890,30 +10582,34 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.9" } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -9940,13 +10636,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -9956,6 +10654,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9965,6 +10664,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -9981,6 +10681,7 @@ "integrity": "sha512-8PcDiZ8DXUjLf687Ol4BR8Bpm2umR7vhoZOzNRt+uxD9GpBh/K+CAAALVIiYFknmvlmyg7hM7BSNUXPaCCqd0Q==", "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, + "license": "ISC", "dependencies": { "glob": "^10.2.2", "json-parse-even-better-errors": "^3.0.0", @@ -9996,6 +10697,7 @@ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, + "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -10009,6 +10711,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -10018,6 +10721,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -10038,6 +10742,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10053,6 +10758,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -10067,6 +10773,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -10079,6 +10786,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -10090,19 +10798,22 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -10114,13 +10825,15 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -10129,13 +10842,15 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -10153,6 +10868,7 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -10174,6 +10890,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10183,6 +10900,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10191,13 +10909,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -10215,6 +10935,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10224,6 +10945,7 @@ "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, + "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -10240,6 +10962,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -10254,6 +10977,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -10263,6 +10987,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -10276,6 +11001,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -10285,6 +11011,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -10294,7 +11021,8 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", @@ -10302,6 +11030,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -10313,10 +11042,11 @@ } }, "node_modules/rollup": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.0.tgz", - "integrity": "sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -10328,22 +11058,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.19.0", - "@rollup/rollup-android-arm64": "4.19.0", - "@rollup/rollup-darwin-arm64": "4.19.0", - "@rollup/rollup-darwin-x64": "4.19.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.19.0", - "@rollup/rollup-linux-arm-musleabihf": "4.19.0", - "@rollup/rollup-linux-arm64-gnu": "4.19.0", - "@rollup/rollup-linux-arm64-musl": "4.19.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.19.0", - "@rollup/rollup-linux-riscv64-gnu": "4.19.0", - "@rollup/rollup-linux-s390x-gnu": "4.19.0", - "@rollup/rollup-linux-x64-gnu": "4.19.0", - "@rollup/rollup-linux-x64-musl": "4.19.0", - "@rollup/rollup-win32-arm64-msvc": "4.19.0", - "@rollup/rollup-win32-ia32-msvc": "4.19.0", - "@rollup/rollup-win32-x64-msvc": "4.19.0", + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", "fsevents": "~2.3.2" } }, @@ -10352,6 +11082,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -10375,6 +11106,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -10383,6 +11115,7 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -10405,19 +11138,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sass": { "version": "1.71.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -10435,6 +11171,7 @@ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", "dev": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -10475,6 +11212,7 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, + "license": "ISC", "optional": true }, "node_modules/schema-utils": { @@ -10482,6 +11220,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -10500,13 +11239,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -10520,6 +11261,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10535,6 +11277,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10546,13 +11289,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -10577,6 +11322,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10585,13 +11331,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -10599,17 +11347,12 @@ "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/send/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10619,6 +11362,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -10628,6 +11372,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -10646,6 +11391,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10655,6 +11401,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10664,6 +11411,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -10678,40 +11426,55 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -10728,13 +11491,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -10747,6 +11512,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -10759,6 +11525,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10768,6 +11535,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10777,6 +11545,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -10794,13 +11563,15 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/sigstore": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", @@ -10818,6 +11589,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10830,6 +11602,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -10840,6 +11613,7 @@ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -10858,6 +11632,7 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "~4.3.4", "ws": "~8.17.1" @@ -10868,6 +11643,7 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -10881,6 +11657,7 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -10892,6 +11669,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -10906,6 +11684,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", @@ -10920,15 +11699,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -10938,6 +11719,7 @@ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "^0.6.3", "source-map-js": "^1.0.2" @@ -10958,6 +11740,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -10970,6 +11753,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10980,6 +11764,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -10989,6 +11774,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -10998,29 +11784,33 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", - "dev": true + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -11037,6 +11827,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -11050,13 +11841,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/ssri": { "version": "10.0.6", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -11069,6 +11862,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11078,6 +11872,7 @@ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, + "license": "MIT", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -11092,6 +11887,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -11101,6 +11897,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11116,6 +11913,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11130,6 +11928,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11143,6 +11942,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11155,6 +11955,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11164,6 +11965,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -11176,6 +11978,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11188,6 +11991,7 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -11197,6 +12001,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11206,6 +12011,7 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -11223,6 +12029,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11235,6 +12042,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11247,6 +12055,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } @@ -11256,6 +12065,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -11267,13 +12077,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/terser": { "version": "5.29.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -11292,6 +12104,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -11326,6 +12139,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -11342,6 +12156,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -11350,13 +12165,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -11375,6 +12192,7 @@ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -11388,13 +12206,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -11407,6 +12227,7 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11416,6 +12237,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -11428,6 +12250,7 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -11437,20 +12260,23 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" }, "node_modules/tuf-js": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/models": "2.0.1", "debug": "^4.3.4", @@ -11465,6 +12291,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11477,6 +12304,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -11489,13 +12317,15 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/typescript": { "version": "5.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11505,9 +12335,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.38", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", - "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==", "dev": true, "funding": [ { @@ -11523,6 +12353,10 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -11532,21 +12366,24 @@ "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.0" } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11556,6 +12393,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -11565,10 +12403,11 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11578,6 +12417,7 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11587,6 +12427,7 @@ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -11599,6 +12440,7 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -11611,6 +12453,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -11620,6 +12463,7 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -11643,6 +12487,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.2", "picocolors": "^1.0.1" @@ -11659,6 +12504,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -11668,6 +12514,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11676,13 +12523,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -11692,6 +12541,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -11701,6 +12551,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -11711,6 +12562,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -11720,6 +12572,7 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -11729,6 +12582,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.19.3", "postcss": "^8.4.35", @@ -11787,6 +12641,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -11803,6 +12658,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -11819,6 +12675,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -11835,6 +12692,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -11851,6 +12709,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -11867,6 +12726,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -11883,6 +12743,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -11899,6 +12760,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -11915,6 +12777,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11931,6 +12794,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11947,6 +12811,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11963,6 +12828,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11979,6 +12845,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11995,6 +12862,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -12011,6 +12879,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -12027,6 +12896,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -12043,6 +12913,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -12059,6 +12930,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -12075,6 +12947,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -12091,6 +12964,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -12107,6 +12981,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -12123,6 +12998,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -12139,6 +13015,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -12153,6 +13030,7 @@ "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -12190,6 +13068,7 @@ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12199,6 +13078,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -12212,6 +13092,7 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -12221,31 +13102,32 @@ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, "node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -12253,7 +13135,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -12277,6 +13159,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -12305,6 +13188,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -12364,6 +13248,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -12387,6 +13272,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -12401,6 +13287,7 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -12410,6 +13297,7 @@ "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, + "license": "MIT", "dependencies": { "typed-assert": "^1.0.8" }, @@ -12431,6 +13319,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -12447,6 +13336,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -12455,19 +13345,22 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -12481,11 +13374,26 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/webpack/node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -12500,6 +13408,7 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -12509,6 +13418,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -12520,13 +13430,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12542,6 +13454,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12559,6 +13472,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12574,6 +13488,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12585,13 +13500,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12607,6 +13524,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12618,19 +13536,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12652,6 +13573,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -12660,13 +13582,15 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -12685,6 +13609,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -12694,6 +13619,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -12702,9 +13628,10 @@ } }, "node_modules/zone.js": { - "version": "0.14.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.8.tgz", - "integrity": "sha512-48uh7MnVp4/OQDuCHeFdXw5d8xwPqFTvlHgPJ1LBFb5GaustLSZV+YUH0to5ygNyGpqTsjpbpt141U/j3pCfqQ==" + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", + "license": "MIT" } } } diff --git a/frontend/src/app/app.component.css b/frontend/src/app/app.component.css index 7b332d4..d9efcb5 100644 --- a/frontend/src/app/app.component.css +++ b/frontend/src/app/app.component.css @@ -1,15 +1,15 @@ /* File: app.component.css */ .mainroot { - height: 100%; + height: 100%; /* scroll doesn't work on desktop without this */ display: flex; flex-direction: column; - background-color: #090f0f; - color: #dde4e3; + background-color: var(--color-background); + color: var(--color-on-background); position: relative; @media (width < 765px) { - min-height: 100%; - height: auto; + /* min-height: 100%; */ + height: auto; /* Browser toolbars doesn't hide on mobile without this */ } } @@ -28,14 +28,12 @@ display: flex; flex-direction: row; flex: 1 1 auto; - overflow-y: auto; - background-color: var(--color-surface-container-lowest); + /* overflow-y: auto; */ + background-color: var(--color-surface); color: var(--color-on-surface); @media (width < 765px) { flex-direction: column; - min-height: 100%; - height: auto; } } @@ -46,8 +44,11 @@ background-color: var(--color-surface-container); color: var(--color-on-surface); order: 1; + position: sticky; + top: 76px; + height: calc(100vh - 76px); - @media (width < 768px) { + @media (width < 765px) { width: 100%; height: auto; position: fixed; @@ -62,15 +63,15 @@ display: flex; flex-direction: column; flex: 1 1 auto; - overflow-x: hidden; - overflow-y: auto; + /* overflow-x: hidden; + overflow-y: auto; */ order: 2; background-color: var(--color-surface); color: var(--color-on-surface); - @media (width < 768px) { + @media (width < 765px) { order: 1; - padding: 0.5rem; + margin: 0.5rem; margin-bottom: 80px; } } @@ -86,7 +87,7 @@ flex-direction: column; gap: 1rem; - @media (width < 768px) { + @media (width < 765px) { max-width: 80%; right: 1rem; padding: 0.5rem; diff --git a/frontend/src/app/helpers/scroll-near-end-directive.ts b/frontend/src/app/helpers/scroll-near-end-directive.ts new file mode 100644 index 0000000..2ac3f52 --- /dev/null +++ b/frontend/src/app/helpers/scroll-near-end-directive.ts @@ -0,0 +1,69 @@ +import { + Directive, + ElementRef, + EventEmitter, + HostListener, + Input, + OnInit, + Output +} from '@angular/core'; + +@Directive({ + selector: '[appScrollNearEnd]', + standalone: true, +}) +export class ScrollNearEndDirective implements OnInit { + @Output() nearEnd: EventEmitter = new EventEmitter(); + + /** + * threshold in PX when to emit before page end scroll + */ + @Input() threshold = 200; + + private window!: Window; + + constructor(private el: ElementRef) { } + + ngOnInit(): void { + // save window object for type safety + this.window = window; + // console.log('Scroll near end directive initialized'); + } + + @HostListener('window:scroll', ['$event']) + windowScrollEvent(event: any) { + // height of whole window page + const heightOfWholePage = this.window.document.documentElement.scrollHeight; + + // how big in pixels the element is + const heightOfElement = this.el.nativeElement.scrollHeight; + + // currently scrolled Y position + const currentScrolledY = this.window.scrollY; + + // height of opened window - shrinks if console is opened + const innerHeight = this.window.innerHeight; + + const spaceOfElementAndPage = heightOfWholePage - heightOfElement; + + const scrollToBottom = + heightOfElement - innerHeight - currentScrolledY + spaceOfElementAndPage; + + // console.log('windowScrollToBottom:', scrollToBottom); + + // console.log( + // currentScrolledY, + // innerHeight, + // heightOfWholePage, + // spaceOfElementAndPage + // ); + + if (scrollToBottom < this.threshold) { + // console.log( + // '%c [WinScrollNearEndDirective]: emit', + // 'color: #bada55; font-size: 20px' + // ); + this.nearEnd.emit(); + } + } +} diff --git a/frontend/src/app/media/media-details/media-details.component.css b/frontend/src/app/media/media-details/media-details.component.css index e5860af..f87949d 100644 --- a/frontend/src/app/media/media-details/media-details.component.css +++ b/frontend/src/app/media/media-details/media-details.component.css @@ -6,6 +6,10 @@ margin: 1rem; border: 1px solid var(--color-outline); border-radius: 10px; + + @media (width < 768px) { + margin: 0.5rem; + } } .text-center { @@ -171,13 +175,38 @@ text-align: center; } +.loading-icon { + display: inline-flex; + justify-content: center; + align-items: center; +} + +.loading-icon svg { + width: 1rem; + height: 1rem; +} + +.loading { + animation: spin-animation 2s linear infinite; +} + +@keyframes spin-animation { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + .media-files-container { display: flex; flex-direction: column; gap: 1rem; margin: 1rem; } - + .media-files-container .media-files { width: 100%; display: block; diff --git a/frontend/src/app/media/media-details/media-details.component.html b/frontend/src/app/media/media-details/media-details.component.html index 520432f..b3a6888 100644 --- a/frontend/src/app/media/media-details/media-details.component.html +++ b/frontend/src/app/media/media-details/media-details.component.html @@ -14,23 +14,63 @@
-
- + IMDB - + TMDB - + TVDB @@ -80,7 +123,7 @@
- {{status}} + {{media.status | titlecase}}

Monitored: {{media.monitor}}

Downloaded: {{media.trailer_exists}}

@@ -106,13 +149,28 @@ Youtube ID/URL:
-

Click Download to download trailer from updated link!

+

Click Download to download + trailer from updated link!

- - - + + + +
@@ -150,43 +208,46 @@ -
-
-
- - - - - - - - - - - - - - - - - - - - - -
-
{{folder.name}}
-
{{folder.size}}
-
{{folder.modified}}
-
-
- - - +
+
+
+ + + + + + + + + + + + + + + + + + +
+
{{folder.name}}
+
{{folder.size}}
+
{{folder.modified}}
+
+ + + + + +
+
diff --git a/frontend/src/app/media/media-details/media-details.component.ts b/frontend/src/app/media/media-details/media-details.component.ts index 0fdf2ec..7f481b8 100644 --- a/frontend/src/app/media/media-details/media-details.component.ts +++ b/frontend/src/app/media/media-details/media-details.component.ts @@ -1,4 +1,4 @@ -import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common'; +import { NgFor, NgIf, NgTemplateOutlet, TitleCasePipe } from '@angular/common'; import { Component, ElementRef, ViewChild } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; @@ -12,7 +12,7 @@ import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-media-details', standalone: true, - imports: [NgIf, NgFor, FormsModule, DurationConvertPipe, NgTemplateOutlet], + imports: [NgIf, NgFor, FormsModule, DurationConvertPipe, NgTemplateOutlet, TitleCasePipe], templateUrl: './media-details.component.html', styleUrl: './media-details.component.css' }) @@ -22,9 +22,11 @@ export class MediaDetailsComponent { mediaFiles?: FolderInfo = undefined; mediaFilesResponse: string = 'No files found'; isLoading = true; + isLoadingMonitor = false; + isLoadingDownload = false; filesLoading = true; trailer_url: string = ''; - status = 'Missing'; + // status = 'Missing'; private mediaService: MovieService | SeriesService = this.seriesService; private webSocketSubscription?: Subscription; @@ -98,11 +100,11 @@ export class MediaDetailsComponent { this.media = media_res; this.trailer_url = media_res.youtube_trailer_id this.isLoading = false; - if (media_res.trailer_exists) { - this.status = 'Downloaded'; - } else { - this.status = media_res.monitor ? 'Monitored' : 'Missing'; - } + // if (media_res.trailer_exists) { + // this.status = 'Downloaded'; + // } else { + // this.status = media_res.monitor ? 'Monitored' : 'Missing'; + // } }); // Get Media Files this.mediaService.getMediaFiles(this.mediaId).subscribe((files: FolderInfo | string) => { @@ -122,6 +124,7 @@ export class MediaDetailsComponent { // Trailer id is the same, no need to download return; } + this.isLoadingDownload = true; // console.log('Downloading trailer'); this.mediaService.downloadMediaTrailer(this.mediaId, this.trailer_url).subscribe((res: string) => { console.log(res); @@ -130,10 +133,12 @@ export class MediaDetailsComponent { monitorSeries() { // console.log('Toggling Media Monitoring'); + this.isLoadingMonitor = true; const monitor = !this.media?.monitor; this.mediaService.monitorMedia(this.mediaId, monitor).subscribe((res: string) => { console.log(res); this.media!.monitor = monitor; + this.isLoadingMonitor = false; }); } diff --git a/frontend/src/app/media/media.component.css b/frontend/src/app/media/media.component.css index 1d71294..b8bd9a1 100644 --- a/frontend/src/app/media/media.component.css +++ b/frontend/src/app/media/media.component.css @@ -1,6 +1,99 @@ +.media-header { + display: flex; + position: sticky; + top: 76px; + width: 100%; + justify-content: flex-end; + background-color: var(--color-surface-container-high); + color: var(--color-on-surface); + align-items: center; + padding: 0 1rem; + z-index: 99; + @media (width < 765px) { + position: fixed; + top: auto; + bottom: 78px; + left: 0; + right: 0; + } +} + +.media-header-sortitem, +.media-header-filteritem { + position: relative; + display: flex; + flex-wrap: nowrap; + align-items: center; + justify-content: flex-start; + cursor: pointer; + font-weight: bold; + padding: 1rem; + /* min-width: 8rem; */ + gap: 0.5rem; +} + +.icon { + margin: 0; +} + +.media-header-sortitem:hover, +.media-header-filteritem:hover { + background-color: var(--color-surface-container-highest); +} + +.sortitem-dropdown, +.filteritem-dropdown { + display: none; + position: absolute; + min-width: 8rem; + top: 3.5rem; + /* left: 0; */ + right: 0; + background-color: var(--color-surface-container-highest); + z-index: 100; + box-shadow: 0.5rem 1rem 1rem 0px var(--color-shadow); + @media (width < 765px) { + top: auto; + bottom: 3.5rem; + box-shadow: 0.5rem -1rem 1rem 0 var(--color-shadow); + } +} + +.filteritem-dropdown { + min-width: 11rem; +} + +.media-header-sortitem:hover .sortitem-dropdown, +.media-header-filteritem:hover .filteritem-dropdown { + display: flex; + flex-direction: column; +} + +.sortitem-dropdown-option, +.filteritem-dropdown-option { + display: flex; + cursor: pointer; + align-items: center; + justify-content: space-between; + gap: 0.5rem; + font-weight: 400; + height: 2.75rem; + padding: 0.5rem 0.25rem 0.5rem 0.75rem; +} + +.sortitem-dropdown-option:hover, +.filteritem-dropdown-option:hover { + background-color: var(--color-secondary-container); + color: var(--color-primary); +} + .media-container { display: flex; flex-direction: column; + overflow-y: auto; + @media (width < 765px) { + margin-bottom: 80px; + } } .text-center { @@ -9,22 +102,25 @@ .center { margin: auto; + align-content: center; + min-height: 70vh; } .media-row { display: grid; - grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 1rem; padding: 1rem; @media (width < 900px) { - grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 0.5rem; padding: 0.5rem; } } .media-card { + min-height: 180px; /* 120px (width) * 1.5 (aspect ratio) */ display: flex; flex-direction: column; transition: all 0.4s; diff --git a/frontend/src/app/media/media.component.html b/frontend/src/app/media/media.component.html index e20e127..0d0498d 100644 --- a/frontend/src/app/media/media.component.html +++ b/frontend/src/app/media/media.component.html @@ -1,24 +1,74 @@ +
+ +
+ + + +
{{displayOptionTitle(selectedSort)}}
+
+
+ {{displayOptionTitle(sortOption)}} +
+ + + +
+
+ + + +
+
+
+
+ +
+ + + +
{{displayOptionTitle(selectedFilter)}}
+
+
+ {{displayOptionTitle(filterOption)}} +
+ + + +
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+

No media items found matching the selected filter!

+
-
-
+ +
+
{{media.title}}
{{media.title}}
- + diff --git a/frontend/src/app/media/media.component.ts b/frontend/src/app/media/media.component.ts index 6b7c66d..d56c645 100644 --- a/frontend/src/app/media/media.component.ts +++ b/frontend/src/app/media/media.component.ts @@ -2,6 +2,7 @@ import { NgFor, NgIf, UpperCasePipe } from '@angular/common'; import { Component } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { ActivatedRoute, RouterLink } from '@angular/router'; +import { ScrollNearEndDirective } from '../helpers/scroll-near-end-directive'; import { Media } from '../models/media'; import { MovieService } from '../services/movie.service'; import { SeriesService } from '../services/series.service'; @@ -9,14 +10,23 @@ import { SeriesService } from '../services/series.service'; @Component({ selector: 'app-media', standalone: true, - imports: [UpperCasePipe, FormsModule, NgIf, NgFor, RouterLink], + imports: [UpperCasePipe, FormsModule, NgIf, NgFor, RouterLink, ScrollNearEndDirective], templateUrl: './media.component.html', styleUrl: './media.component.css' }) export class MediaComponent { title = 'Media'; - media_list: Media[] = []; + pageType = 'Media'; + displayCount = 50; + displayMediaList: Media[] = []; + filteredMediaList: Media[] = []; + allMedia: Media[] = []; isLoading = true; + selectedSort: keyof Media = 'added_at'; + sortAscending = true; + sortOptions: (keyof Media)[] = ['title', 'year', 'added_at', 'updated_at']; + selectedFilter = 'missing'; + filterOptions: string[] = ['all', 'monitored', 'unmonitored', 'downloaded', 'missing']; private mediaService: MovieService | SeriesService = this.seriesService; constructor( @@ -24,26 +34,168 @@ export class MediaComponent { private seriesService: SeriesService, private route: ActivatedRoute ) { } - + ngOnInit(): void { this.isLoading = true; let type = this.route.snapshot.url[0].path; if (type === 'movies') { this.title = 'Movies'; + this.pageType = 'Movies'; this.mediaService = this.movieService; - } else { + this.mediaService.getAllMedia().subscribe((mediaList: Media[]) => { + this.displayMedia(mediaList); + }); + } else if (type === 'series') { this.title = 'Series'; + this.pageType = 'Series'; this.mediaService = this.seriesService; + this.mediaService.getAllMedia().subscribe((mediaList: Media[]) => { + this.displayMedia(mediaList); + }); + } else { + this.title = 'All Media'; + this.pageType = 'AllMedia'; + this.mediaService = this.movieService; + this.mediaService.getAllMedia().subscribe((mediaList: Media[]) => { + this.displayMedia(mediaList); + }); + } + } + + saveSortOption(): void { + // Save the sort option to the local session + localStorage.setItem(`Trailarr${this.pageType}Sort`, this.selectedSort); + localStorage.setItem(`Trailarr${this.pageType}SortAscending`, this.sortAscending.toString()); + } + + saveFilterOption(): void { + // Save the filter option to the local session + localStorage.setItem(`Trailarr${this.pageType}Filter`, this.selectedFilter); + } + + retrieveSortOption(): void { + // Retrieve the sort option from the local session + let sortOption = localStorage.getItem(`Trailarr${this.pageType}Sort`); + let sortAscending = localStorage.getItem(`Trailarr${this.pageType}SortAscending`); + if (sortOption) { + this.selectedSort = sortOption as keyof Media; + } + if (sortAscending) { + this.sortAscending = sortAscending === 'true'; + } + } + + retrieveFilterOption(): void { + // Retrieve the filter option from the local session + let filterOption = localStorage.getItem(`Trailarr${this.pageType}Filter`); + if (filterOption) { + this.selectedFilter = filterOption; + } + } + + displayMedia(mediaList: Media[]): void { + this.retrieveSortOption(); + this.retrieveFilterOption(); + this.displayMediaList = []; + this.displayCount = 50; + this.allMedia = mediaList; + // debugger; + this.filteredMediaList = this.filterMediaList(this.selectedFilter, mediaList); + this.sortMediaList(this.selectedSort, this.filteredMediaList); + this.isLoading = false; + this.displayMediaList = this.filteredMediaList.slice(0, this.displayCount); + // this.filteredMediaList.forEach((media, index) => { + // if (index < this.displayCount) { + // this.displayMediaList.push(media); + // } + // // this.displayMediaList.push(media); + // // if (index > 60) { + // // setTimeout(() => { + // // this.displayMediaList.push(media); + // // }, 61 * 20); // 20 milliseconds delay for each item + // // } else { + // // setTimeout(() => { + // // this.displayMediaList.push(media); + // // }, index * 20); // 20 milliseconds delay for each item + // // } + // }); + } + + displayOptionTitle(option: string): string { + option = option.replace('_at', ''); + return option.charAt(0).toUpperCase() + option.slice(1); + } + + sortMediaList(sortBy: keyof Media, mediaList: Media[]): void { + // Sort the media list by the selected sort option + // Sorts the list in place. If sortAscending is false, reverses the list + mediaList.sort((a, b) => (a[sortBy].toString().localeCompare(b[sortBy].toString()))); + if (!this.sortAscending) { + mediaList.reverse(); } - this.mediaService.getRecentMedia().subscribe((media_list: Media[]) => { - this.media_list = []; + } + + setMediaSort(sortBy: keyof Media): void { + this.displayCount = 50; + if (this.selectedSort === sortBy) { + this.sortAscending = !this.sortAscending; + } else { + this.selectedSort = sortBy; + this.sortAscending = true; + } + this.sortMediaList(sortBy, this.filteredMediaList); + this.displayMediaList = this.filteredMediaList.slice(0, this.displayCount); + this.saveSortOption(); + return; + } + + setMediaFilter(filterBy: string): void { + this.isLoading = true; + this.displayCount = 50; + this.displayMediaList = []; + this.filteredMediaList = []; + this.selectedFilter = filterBy; + this.filteredMediaList = this.filterMediaList(filterBy, this.allMedia); + this.sortMediaList(this.selectedSort, this.filteredMediaList); + setTimeout(() => { this.isLoading = false; - media_list.forEach((media, index) => { - setTimeout(() => { - this.media_list.push(media); - }, index * 20); // 20 milliseconds delay for each item - }); - }); + this.displayMediaList = this.filteredMediaList.slice(0, this.displayCount); + }, 1000); + this.saveFilterOption(); + return; + } + + filterMediaList(filterBy: string, mediaList: Media[]): Media[] { + if (mediaList.length === 0) { + return mediaList; + } + if (filterBy === 'all') { + return mediaList; + } + if (filterBy === 'monitored') { + return mediaList.filter((media) => media.monitor); + } + if (filterBy === 'unmonitored') { + return mediaList.filter((media) => !media.monitor && !media.trailer_exists); + } + if (filterBy === 'downloaded') { + return mediaList.filter((media) => media.trailer_exists); + } + if (filterBy === 'missing') { + return mediaList.filter((media) => !media.trailer_exists); + } + return mediaList; + } + + onNearEndScroll(): void { + // Load more media when near the end of the scroll + // console.log('Near end of scroll'); + if (this.displayCount >= this.filteredMediaList.length) { + return; + } + this.displayMediaList.push( + ...this.filteredMediaList.slice(this.displayCount, this.displayCount + 20) + ); + this.displayCount += 20; } - } diff --git a/frontend/src/app/models/media.ts b/frontend/src/app/models/media.ts index 60d37b5..17eff9d 100644 --- a/frontend/src/app/models/media.ts +++ b/frontend/src/app/models/media.ts @@ -20,16 +20,16 @@ export interface Media { trailer_exists: boolean; monitor: boolean; arr_monitored: boolean; + status: string; id: number; added_at: Date; updated_at: Date; downloaded_at: Date; } -export function mapMedia(media: any, is_movie: boolean): Media { +export function mapMedia(media: any): Media { return { ...media, - is_movie: is_movie, added_at: new DatePipe('en-US').transform(media.added_at, 'medium'), updated_at: new DatePipe('en-US').transform(media.updated_at, 'medium'), downloaded_at: new DatePipe('en-US').transform(media.downloaded_at, 'medium') diff --git a/frontend/src/app/models/settings.ts b/frontend/src/app/models/settings.ts index ab15608..49262c7 100644 --- a/frontend/src/app/models/settings.ts +++ b/frontend/src/app/models/settings.ts @@ -4,9 +4,10 @@ export interface Settings { version: string server_start_time: string timezone: string - debug: boolean + log_level: string monitor_enabled: boolean monitor_interval: number + trailer_file_name: string trailer_folder_movie: boolean trailer_folder_series: boolean trailer_resolution: number diff --git a/frontend/src/app/nav/topnav/topnav.component.ts b/frontend/src/app/nav/topnav/topnav.component.ts index 3ce45e2..1636f6f 100644 --- a/frontend/src/app/nav/topnav/topnav.component.ts +++ b/frontend/src/app/nav/topnav/topnav.component.ts @@ -56,7 +56,8 @@ export class TopnavComponent { @HostListener('document:keydown', ['$event']) handleKeyboardEvent(event: KeyboardEvent) { - if (event.ctrlKey && event.key === 'f') { + // if (event.ctrlKey && event.key === 'f') { + if (event.key === 'f') { event.preventDefault(); // Prevent the browser's default Ctrl+F behavior const searchInput = document.getElementById('searchForm')?.querySelector('input'); searchInput?.focus(); // Focus the search input field diff --git a/frontend/src/app/services/movie.service.ts b/frontend/src/app/services/movie.service.ts index 26979b0..22f1306 100644 --- a/frontend/src/app/services/movie.service.ts +++ b/frontend/src/app/services/movie.service.ts @@ -13,21 +13,27 @@ export class MovieService { constructor(private http: HttpClient) { } + getAllMedia(): Observable { + return this.http.get(`${this.moviesUrl}all`).pipe( + map((movie_list: any[]) => movie_list.map(movie => mapMedia(movie))) + ); + } + getRecentMedia(): Observable { return this.http.get(`${this.moviesUrl}?limit=50`).pipe( - map((movie_list: any[]) => movie_list.map(movie => mapMedia(movie, true))) + map((movie_list: any[]) => movie_list.map(movie => mapMedia(movie))) ); } getRecentlyDownloaded(): Observable { return this.http.get(`${this.moviesUrl}downloaded?limit=50`).pipe( - map((movie_list: any[]) => movie_list.map(movie => mapMedia(movie, movie.is_movie))) + map((movie_list: any[]) => movie_list.map(movie => mapMedia(movie))) ); } getMediaById(id: number): Observable { return this.http.get(`${this.moviesUrl}${id}`).pipe( - map(movie => mapMedia(movie, true)) + map(movie => mapMedia(movie)) ); } diff --git a/frontend/src/app/services/series.service.ts b/frontend/src/app/services/series.service.ts index 93411d1..d2759d0 100644 --- a/frontend/src/app/services/series.service.ts +++ b/frontend/src/app/services/series.service.ts @@ -13,15 +13,21 @@ export class SeriesService { constructor(private http: HttpClient) { } + getAllMedia(): Observable { + return this.http.get(`${this.seriesUrl}all`).pipe( + map(series_list => series_list.map(series => mapMedia(series))) + ); + } + getRecentMedia(): Observable { return this.http.get(`${this.seriesUrl}?limit=50`).pipe( - map(series_list => series_list.map(series => mapMedia(series, false))) + map(series_list => series_list.map(series => mapMedia(series))) ); } getMediaById(id: number): Observable { return this.http.get(`${this.seriesUrl}${id}`).pipe( - map(series => mapMedia(series, false)) + map(series => mapMedia(series)) ); } diff --git a/frontend/src/app/settings/about/about.component.html b/frontend/src/app/settings/about/about.component.html index 843a59d..f4a7f21 100644 --- a/frontend/src/app/settings/about/about.component.html +++ b/frontend/src/app/settings/about/about.component.html @@ -57,12 +57,12 @@

Getting Support

\ No newline at end of file diff --git a/frontend/src/app/settings/connections/add-connection/add-connection.component.html b/frontend/src/app/settings/connections/add-connection/add-connection.component.html index 103a474..7b8ef55 100644 --- a/frontend/src/app/settings/connections/add-connection/add-connection.component.html +++ b/frontend/src/app/settings/connections/add-connection/add-connection.component.html @@ -98,7 +98,7 @@

Path Mappings:

{{ addConnResult }}

- +

Unsaved Changes

Canges will be lost. Are you sure you want to cancel?

diff --git a/frontend/src/app/settings/connections/add-connection/add-connection.component.ts b/frontend/src/app/settings/connections/add-connection/add-connection.component.ts index 35763c6..57e6a0d 100644 --- a/frontend/src/app/settings/connections/add-connection/add-connection.component.ts +++ b/frontend/src/app/settings/connections/add-connection/add-connection.component.ts @@ -35,9 +35,13 @@ export class AddConnectionComponent { setArrType(selectedArrType: string) { this.addConnectionForm.patchValue({ arrType: selectedArrType }); + this.addConnectionForm.markAsTouched(); + this.addConnectionForm.markAsDirty(); } setMonitorType(selectedMonitorType: string) { this.addConnectionForm.patchValue({ monitorType: selectedMonitorType }); + this.addConnectionForm.markAsTouched(); + this.addConnectionForm.markAsDirty(); } get pathMappings(): FormArray { @@ -50,10 +54,14 @@ export class AddConnectionComponent { path_to: new FormControl('', Validators.required) }); this.pathMappings.push(pathMappingGroup); + this.addConnectionForm.markAsTouched(); + this.addConnectionForm.markAsDirty(); } removePathMapping(index: number) { this.pathMappings.removeAt(index); + this.addConnectionForm.markAsTouched(); + this.addConnectionForm.markAsDirty(); } // Reference to the dialog element diff --git a/frontend/src/app/settings/connections/edit-connection/edit-connection.component.html b/frontend/src/app/settings/connections/edit-connection/edit-connection.component.html index 7628670..33dae43 100644 --- a/frontend/src/app/settings/connections/edit-connection/edit-connection.component.html +++ b/frontend/src/app/settings/connections/edit-connection/edit-connection.component.html @@ -69,7 +69,7 @@

Path Mappings:

-
- +

Unsaved Changes

Canges will be lost. Are you sure you want to cancel?

diff --git a/frontend/src/app/settings/connections/edit-connection/edit-connection.component.ts b/frontend/src/app/settings/connections/edit-connection/edit-connection.component.ts index bab4576..62d3a72 100644 --- a/frontend/src/app/settings/connections/edit-connection/edit-connection.component.ts +++ b/frontend/src/app/settings/connections/edit-connection/edit-connection.component.ts @@ -36,7 +36,7 @@ export class EditConnectionComponent { // Add path_mappings from the connection conn.path_mappings.forEach(mapping => { - this.addPathMapping(mapping); + this.addPathMapping(mapping, false); }); }); }); @@ -58,16 +58,20 @@ export class EditConnectionComponent { setArrType(selectedArrType: string) { this.editConnectionForm.patchValue({ arrType: selectedArrType }); + this.editConnectionForm.markAsTouched(); + this.editConnectionForm.markAsDirty(); } setMonitorType(selectedMonitorType: string) { this.editConnectionForm.patchValue({ monitorType: selectedMonitorType }); + this.editConnectionForm.markAsTouched(); + this.editConnectionForm.markAsDirty(); } get pathMappings(): FormArray { return this.editConnectionForm.get('path_mappings') as FormArray; } - addPathMapping(path_mapping: PathMapping | null = null) { + addPathMapping(path_mapping: PathMapping | null = null, markAsTouched = true) { if (!path_mapping) { path_mapping = { id: null, connection_id: null, path_from: '', path_to: '' }; } @@ -78,10 +82,16 @@ export class EditConnectionComponent { path_to: new FormControl(path_mapping.path_to, Validators.required) }); this.pathMappings.push(pathMappingGroup); + if (markAsTouched) { + this.editConnectionForm.markAsTouched(); + this.editConnectionForm.markAsDirty(); + } } removePathMapping(index: number) { this.pathMappings.removeAt(index); + this.editConnectionForm.markAsTouched(); + this.editConnectionForm.markAsDirty(); } // Reference to the dialog element diff --git a/frontend/src/app/settings/settings.component.css b/frontend/src/app/settings/settings.component.css index f21966c..7ff89dd 100644 --- a/frontend/src/app/settings/settings.component.css +++ b/frontend/src/app/settings/settings.component.css @@ -5,13 +5,13 @@ margin: 1rem; @media (width < 765px) { - padding: 0.5rem; + margin: 0.5rem; } } .settingsnav { position: sticky; - top: 0; + top: 76px; left: 0; right: 0; z-index: 99; diff --git a/frontend/src/app/settings/trailer/trailer.component.css b/frontend/src/app/settings/trailer/trailer.component.css index 0820419..7045170 100644 --- a/frontend/src/app/settings/trailer/trailer.component.css +++ b/frontend/src/app/settings/trailer/trailer.component.css @@ -94,6 +94,12 @@ border-radius: 0.5rem; } +.input-path { + width: auto !important; + max-width: 25rem !important; + font-size: larger; +} + .options-bar { display: flex; background-color: var(--color-surface-container-high); diff --git a/frontend/src/app/settings/trailer/trailer.component.html b/frontend/src/app/settings/trailer/trailer.component.html index 86a1519..3c1cc67 100644 --- a/frontend/src/app/settings/trailer/trailer.component.html +++ b/frontend/src/app/settings/trailer/trailer.component.html @@ -3,26 +3,12 @@ [class.error]="message.toLowerCase().includes('error')"> {{message}}
-
- Warning: Debug mode is enabled, disable it if not needed! +
+ Warning: Log Level set to 'Debug', this will generate too many logs, change it if not needed!

General


-
- -
-
- {{option}} -
-
-