From 2c191aed23f43e5d2a949a46dadfb9b1152db399 Mon Sep 17 00:00:00 2001
From: yagonavajas <uo287746@uniovi.es>
Date: Mon, 12 Feb 2024 18:22:45 +0100
Subject: [PATCH 01/61] cambios en 01adoc

---
 .vscode/settings.json                   |  3 ++
 docs/src/01_introduction_and_goals.adoc | 37 +++++++++++++------------
 2 files changed, 23 insertions(+), 17 deletions(-)
 create mode 100644 .vscode/settings.json

diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..ae1c8ac
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "asciidoc.antora.enableAntoraSupport": true
+}
\ No newline at end of file
diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index aa23a98..c2d5364 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -3,13 +3,14 @@ ifndef::imagesdir[:imagesdir: ../images]
 [[section-introduction-and-goals]]
 == Introduction and Goals (wiq_es04c)
 
-Trabajo realizado por David Alvarez, Zohaib Akhtar Kausar, Sara Lamuño Garcia, Yago Navajas Gonzalez y Santiago Lopez Laso.
+nombre_del_proyecto es un proyecto desarrollado en la asignatura  Arquitectura del Software. Consiste en la creacion de una aplicacion web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general.
+
+Los desarrolladores de la aplicacion son por David Alvarez, Zohaib Akhtar Kausar, Sara Lamuño Garcia, Yago Navajas Gonzalez y Santiago Lopez Laso.
 
 
 [role="arc42help"]
 ****
-Describes the relevant requirements and the driving forces that software architects and development team must consider. 
-These include
+La aplicacion tendra su base para las preguntas y las respuestas en Wikidata , la base de conocimiento editada en colaboracion.
 
 * underlying business goals, 
 * essential features, 
@@ -23,9 +24,8 @@ These include
 [role="arc42help"]
 ****
 .Contents
-Short description of the functional requirements, driving forces, extract (or abstract)
-of requirements. Link to (hopefully existing) requirements documents
-(with version number and information where to find it).
+* Los usuarios se deberan loggear en la pagina, esto servira para tener registro de unas serie de parametros, como puede ser las veces que se ha jugado. 
+* Se podran responder preguntas autogeneradas y ver si han acertado fallado asi como la respuesta correcta.
 
 .Motivation
 From the point of view of the end users a system is created or modified to
@@ -38,22 +38,21 @@ If requirements documents exist this overview should refer to these documents.
 Keep these excerpts as short as possible. Balance readability of this document with potential redundancy w.r.t to requirements documents.
 
 
-.Further Information
-
-See https://docs.arc42.org/section-1/[Introduction and Goals] in the arc42 documentation.
-
 ****
 
 === Quality Goals
 
 [role="arc42help"]
 ****
-.Contents
-The top three (max five) quality goals for the architecture whose fulfillment is of highest importance to the major stakeholders. 
-We really mean quality goals for the architecture. Don't confuse them with project goals.
-They are not necessarily identical.
+[options="header",cols="1,2,2"]
+|===
+|Prioridad | Objetivo | Descripcion
+|Usabilidad | |
+|Privacidad | |
+|Mantenibilidad | |
+|===
+
 
-Consider this overview of potential topics (based upon the ISO 25010 standard):
 
 image::01_2_iso-25010-topics-EN.drawio.png["Categories of Quality Requirements"]
 
@@ -91,6 +90,10 @@ Table with role names, person names, and their expectations with respect to the
 [options="header",cols="1,2,2"]
 |===
 |Role/Name|Contact|Expectations
-| _<Role-1>_ | _<Contact-1>_ | _<Expectation-1>_
-| _<Role-2>_ | _<Contact-2>_ | _<Expectation-2>_
+| Equipo de Desarrollo | Yago Navajas Gonzalez -> UO287746@uniovi.es +
+David Alvarez -> UOxxxxxx@uniovi.es +
+Zohaib Akhtar Kausar -> UOxxxxxx@uniovi.es +
+Sara Lamuño Garcia -> UOxxxxxx@uniovi.es +
+Santiago Lopez Laso -> UOxxxxxx@uniovi.es | Los estudiantes que llevaran a cabo el desarrollo de la aplicacion
+| Profesores | _<Contact-2>_ | Supervisores de los avances y encargados de evaluar la aplicacion final
 |===

From 269611de74ef1d4e39951738bbaa06727ceb717a Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Mon, 12 Feb 2024 18:34:57 +0100
Subject: [PATCH 02/61] Puesta de UO en doc01.adoc

---
 docs/src/01_introduction_and_goals.adoc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index c2d5364..961d4cb 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -5,7 +5,7 @@ ifndef::imagesdir[:imagesdir: ../images]
 
 nombre_del_proyecto es un proyecto desarrollado en la asignatura  Arquitectura del Software. Consiste en la creacion de una aplicacion web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general.
 
-Los desarrolladores de la aplicacion son por David Alvarez, Zohaib Akhtar Kausar, Sara Lamuño Garcia, Yago Navajas Gonzalez y Santiago Lopez Laso.
+Los desarrolladores de la aplicacion son por David Álvarez Díaz, Zohaib Akhtar Kausar, Sara Lamuño García, Yago Navajas González y Santiago López Laso.
 
 
 [role="arc42help"]
@@ -91,9 +91,9 @@ Table with role names, person names, and their expectations with respect to the
 |===
 |Role/Name|Contact|Expectations
 | Equipo de Desarrollo | Yago Navajas Gonzalez -> UO287746@uniovi.es +
-David Alvarez -> UOxxxxxx@uniovi.es +
+David Álvarez Díaz -> UO283196@uniovi.es +
 Zohaib Akhtar Kausar -> UOxxxxxx@uniovi.es +
-Sara Lamuño Garcia -> UOxxxxxx@uniovi.es +
-Santiago Lopez Laso -> UOxxxxxx@uniovi.es | Los estudiantes que llevaran a cabo el desarrollo de la aplicacion
+Sara Lamuño García -> UO283706@uniovi.es +
+Santiago Lopez Laso -> UOxxxxxx@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación
 | Profesores | _<Contact-2>_ | Supervisores de los avances y encargados de evaluar la aplicacion final
 |===

From 14a39bd18ddc1c875076c66a2cfbb037f4429993 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Mon, 12 Feb 2024 20:34:56 +0100
Subject: [PATCH 03/61] Cambio en los UO del grupo en doc01.adoc

---
 docs/src/01_introduction_and_goals.adoc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index 961d4cb..6ee631e 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -92,8 +92,8 @@ Table with role names, person names, and their expectations with respect to the
 |Role/Name|Contact|Expectations
 | Equipo de Desarrollo | Yago Navajas Gonzalez -> UO287746@uniovi.es +
 David Álvarez Díaz -> UO283196@uniovi.es +
-Zohaib Akhtar Kausar -> UOxxxxxx@uniovi.es +
+Zohaib Akhtar Kausar -> UO291060@uniovi.es +
 Sara Lamuño García -> UO283706@uniovi.es +
-Santiago Lopez Laso -> UOxxxxxx@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación
+Santiago Lopez Laso -> UO277369@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación
 | Profesores | _<Contact-2>_ | Supervisores de los avances y encargados de evaluar la aplicacion final
 |===

From 1d405dbb559e984f5ec69b564ca56dbf79737d96 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Mon, 12 Feb 2024 22:50:37 +0100
Subject: [PATCH 04/61] =?UTF-8?q?A=C3=B1adidos=20diagramas=20para=20la=20d?=
 =?UTF-8?q?ocumentaci=C3=B3n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ...e casos de uso para el juego de palabras.jpg | Bin 0 -> 19358 bytes
 .../Digrama de secuencia Juego de preguntas.jpg | Bin 0 -> 41232 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 docs/images/Diagrama de casos de uso para el juego de palabras.jpg
 create mode 100644 docs/images/Digrama de secuencia Juego de preguntas.jpg

diff --git a/docs/images/Diagrama de casos de uso para el juego de palabras.jpg b/docs/images/Diagrama de casos de uso para el juego de palabras.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d002bc24a16347c9ec25ff4361535c83c60c29be
GIT binary patch
literal 19358
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

literal 0
HcmV?d00001

diff --git a/docs/images/Digrama de secuencia Juego de preguntas.jpg b/docs/images/Digrama de secuencia Juego de preguntas.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c48c2654b7db2f10fa7ddf685ac88d9e3bdf1886
GIT binary patch
literal 41232
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

literal 0
HcmV?d00001


From 7b455e0075b7c33ba0cd401e0ce9a03d06146c69 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Mon, 12 Feb 2024 22:53:29 +0100
Subject: [PATCH 05/61] =?UTF-8?q?A=C3=B1adido=20diagrama=20b=C3=A1sico=20d?=
 =?UTF-8?q?e=20secuencia?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/06_runtime_view.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc
index e10f375..eae7c7e 100644
--- a/docs/src/06_runtime_view.adoc
+++ b/docs/src/06_runtime_view.adoc
@@ -60,6 +60,6 @@ Alice <-- Bob: another authentication Response
 
 === <Runtime Scenario 2>
 
-=== ...
+image::Digrama de secuencia Juego de preguntas.jpg["Diagrama de secuencia"]
 
 === <Runtime Scenario n>

From 7219dfa5a7e2cda1b9897e5e348ea608d3d949b8 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Mon, 12 Feb 2024 23:16:39 +0100
Subject: [PATCH 06/61] =?UTF-8?q?A=C3=B1adido=20diagrama=20de=20casos=20de?=
 =?UTF-8?q?=20uso?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/06_runtime_view.adoc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc
index eae7c7e..c9f24b0 100644
--- a/docs/src/06_runtime_view.adoc
+++ b/docs/src/06_runtime_view.adoc
@@ -62,4 +62,6 @@ Alice <-- Bob: another authentication Response
 
 image::Digrama de secuencia Juego de preguntas.jpg["Diagrama de secuencia"]
 
-=== <Runtime Scenario n>
+=== <Runtime Scenario 3>
+
+image::Diagrama de casos de uso para el juego de palabras.jpg["Diagrama de caso de uso"]

From 4d36ebef1da6ddb2b7423f2d7d3f369c05de7873 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Tue, 13 Feb 2024 20:43:02 +0100
Subject: [PATCH 07/61] Avance documentacion06.adoc

---
 docs/src/06_runtime_view.adoc | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc
index c9f24b0..637df5b 100644
--- a/docs/src/06_runtime_view.adoc
+++ b/docs/src/06_runtime_view.adoc
@@ -59,9 +59,26 @@ Alice <-- Bob: another authentication Response
 ----
 
 === <Runtime Scenario 2>
-
+-------------------------------------------------------------------------------------------------------------------------------------
+| -> Diagrama de secuencia                                                                                                          |
+| -> Descripción: diagrama de los usos básicos en la aplicación, como inicio de sesión, empezar a jugar y contestar las preguntas.  |
+| -> Aspectos notables:                                                                                                             |
+|    - El usuario tiene que estar autentificado en la aplicación para poder entrar al juego.                                        |
+|    - Los usuarios estarán en una base de datos para recoger los datos de manera más sencilla.                                     |
+|    - En el diagrama se pone la opción de respuesta correcta, pero si fuera incorrecta también se seguiría jugando.                |
+-------------------------------------------------------------------------------------------------------------------------------------
 image::Digrama de secuencia Juego de preguntas.jpg["Diagrama de secuencia"]
 
 === <Runtime Scenario 3>
+--------------------------------------------------------------------------------------------------------------------------------------
+| -> Diagrama de casos de uso                                                                                                        |
+| -> Descripción: diagrama básico de los distintos casos de uso que hay en el proyecto                                               |
+| -> Aspectos notables:                                                                                                              |
+|    - El caso de uso de iniciar sesión del usuario está relacionado con el caso de uso de autentificar sesión del sistema,          |
+|    - ya que para que el usuario pueda iniciar sesión debe de estar autentificado.                                                  |
+|    - Lo mismo ocurre con el caso de uso de contestar preguntas del usuario con el caso de uso de verificar respuestas del sistema, | 
+|    - ya que para que el usuario pueda contestar preguntas, el sistema primero debe de verificar si dicha respuesta es correcta     |
+|    - o no para pasar a la siguiente pregunta.                                                                                      |
+--------------------------------------------------------------------------------------------------------------------------------------
 
 image::Diagrama de casos de uso para el juego de palabras.jpg["Diagrama de caso de uso"]

From c5433a0cc4cf851db2e81c4e0e4120eb0c05bbd0 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 14 Feb 2024 12:00:52 +0100
Subject: [PATCH 08/61] =?UTF-8?q?A=C3=B1adidos=20t=C3=A9rminos=20al=20glos?=
 =?UTF-8?q?ario=20del=20documento12.adoc?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/12_glossary.adoc | 35 ++++++++++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc
index 192b235..0959e74 100644
--- a/docs/src/12_glossary.adoc
+++ b/docs/src/12_glossary.adoc
@@ -34,9 +34,34 @@ See https://docs.arc42.org/section-12/[Glossary] in the arc42 documentation.
 |===
 |Term |Definition
 
-|<Term-1>
-|<definition-1>
+|React
+|Biblioteca de Javascript que se encarga en la creación de interfaces de usuario de una manera fácil. Es eficiente y se puede incorporar
+al código de una forma sencilla.
+
+|Node.js
+|Entorno que usa Javascript, donde destaca en la creación de servidores web. Su programación es dirigida por eventos, es multi-plataforma, open-source
+y soporta la concurrencia.
+
+|Microservicio
+|Enfoque arquitectónico, donde el software se va a dividir en servicios de tamaño pequeño, que estarán unidos por la intervención de API's 
+(en nuestro caso Wikidata). Son rápidos, sencillos a la hora de su desarrollo y autonómos cuando estos están en ejecución.
+
+|API
+|O también Application Programming Interface, es un intermediario que ayuda a las diferentes aplicaciones del proyecto a posibilitar la comunicación
+entre ellas. Favorece a la eficiencia y agilidad del funcionamiento de dichas aplicaciones.
+
+|MongoDB
+|Es uno de los tantos tipos de bases de datos, como MariaDB. Usa NoSQL, soporta múltiples lenguajes de programación y también soporta su funcionamiento en 
+gran variedad de sistemas operativos. Algo a tener en cuenta es que MongoDB realiza el guardado de datos de una forma distinta a la de las bases de datos de 
+tipo relacional, con tablas de datos, este lo guarda en archivos BSON, que es un derivado de JSON.
+
+|BSON
+|O Binary JSON, son los archivos que usa la base de datos MongoDB para almacenar los datos de una manera más ágil y sencilla que con las tablas. Una 
+curiosidad de este tipo de archivo es que no tiene un tipo de MIME definido, mientras que JSON sí que lo tiene.
+
+|Mongoose
+|Biblioteca que es encargada de crear una conexión con la base de datos MongoDB con el entorno de Node.js. Hace que el acceso y creación de los datos de MongoDB sea más fácil de realizar que con MongoDB en sí.
+
+|Docker
+|Aplicación que realiza el despliegue de cualquier aplicación en formato de contenedores, similares a los contenedores que tienen los barcos. Es open-source y permite que el proceso de desplegar una aplicación sea bastante más fácil y ordenado. 
 
-|<Term-2>
-|<definition-2>
-|===

From 0813774fe5c04e906d4033387949bdfea9316713 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 14 Feb 2024 12:25:59 +0100
Subject: [PATCH 09/61] =?UTF-8?q?A=C3=B1adido=20diagrama=20de=20secuencia?=
 =?UTF-8?q?=20con=20plantuml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/06_runtime_view.adoc | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc
index 637df5b..fb80e36 100644
--- a/docs/src/06_runtime_view.adoc
+++ b/docs/src/06_runtime_view.adoc
@@ -58,6 +58,31 @@ Alice -> Bob: Another authentication Request
 Alice <-- Bob: another authentication Response
 ----
 
+[plantuml,"Sequence diagram",png]
+Diagrama de secuencia con plantuml (se contempla sólo el uso correcto de la aplicación)
+----
+actor usuario
+actor system
+database bbdd as "bbdd"
+actor juego
+usuario -> system: inicio sesión
+system --> usuario: pedir nombre/contraseña
+usuario -> system: dar nombre/contraseña
+system -> bbdd: verificar usuario
+bbdd --> system: verificación correcta
+system --> usuario: inicio sesión correcto
+usuario -> system: acceder al juego
+system -> juego: iniciar juego
+juego --> system: generar pregunta/respuestas
+system --> usuario: mostrar pregunta/respuestas
+usuario -> system: responder
+system -> juego: verificar respuesta
+juego --> system: respuesta correcta
+system --> usuario: correcta
+system -> juego: generar siguiente pregunta/respuestas
+
+----
+
 === <Runtime Scenario 2>
 -------------------------------------------------------------------------------------------------------------------------------------
 | -> Diagrama de secuencia                                                                                                          |

From 076a4d96cad5edc9c5fab95fc8fb9a53ac217136 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 14 Feb 2024 12:48:17 +0100
Subject: [PATCH 10/61] =?UTF-8?q?Puesta=20de=20decisi=C3=B3n=20de=20la=20o?=
 =?UTF-8?q?rganizaci=C3=B3n=20en=20el=20documento04.adoc?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/04_solution_strategy.adoc | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc
index 7bf03f7..75bca28 100644
--- a/docs/src/04_solution_strategy.adoc
+++ b/docs/src/04_solution_strategy.adoc
@@ -25,6 +25,24 @@ based upon problem statement, quality goals and key constraints.
 Refer to details in the following sections.
 
 
+Decisiones organizativas
+
+En la primera semana nos hemos dividido en dos equipos con el objetivo de tocar todas las partes del proyecto. La estructura de los equipos es la siguiente:
+
+----
+-> Equipo documentación
+     Sara Lamuño García -> UO283706@uniovi.es 
+     Yago Navajas Gonzalez -> UO287746@uniovi.es
+-> Equipo desarrollo del proyecto
+     David Álvarez Díaz -> UO283196@uniovi.es
+     Zohaib Akhtar Kausar -> UO291060@uniovi.es
+     Santiago Lopez Laso -> UO277369@uniovi.es
+----
+
+La realización de las actas de las reuniones diarias se le ha asignado la tarea a Sara Lamuño García.
+
+En las siguientes semanas habrá rotación o cambio de miembros en ambos equipos.
+
 .Further Information
 
 See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentation.

From 408324fd6eb6f0541732237d29da6b9d955ed728 Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Thu, 15 Feb 2024 00:06:42 +0100
Subject: [PATCH 11/61] =?UTF-8?q?Hechos=20los=20apartados=202=20y=203=20de?=
 =?UTF-8?q?=20la=20documentaci=C3=B3n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/images/diagrama_contexto_tecnico.png | Bin 0 -> 13753 bytes
 docs/src/02_architecture_constraints.adoc |  33 +++------
 docs/src/03_system_scope_and_context.adoc |  82 ++++------------------
 3 files changed, 21 insertions(+), 94 deletions(-)
 create mode 100644 docs/images/diagrama_contexto_tecnico.png

diff --git a/docs/images/diagrama_contexto_tecnico.png b/docs/images/diagrama_contexto_tecnico.png
new file mode 100644
index 0000000000000000000000000000000000000000..797aa6afc079a25752ddae28597eb3837dd326ee
GIT binary patch
literal 13753
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
Ts(s<_P&f)Qs#go8Zg~GMLKoj|

literal 0
HcmV?d00001

diff --git a/docs/src/02_architecture_constraints.adoc b/docs/src/02_architecture_constraints.adoc
index 226e501..4c16bef 100644
--- a/docs/src/02_architecture_constraints.adoc
+++ b/docs/src/02_architecture_constraints.adoc
@@ -1,27 +1,12 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-architecture-constraints]]
-== Architecture Constraints
-
-
-[role="arc42help"]
-****
-.Contents
-Any requirement that constraints software architects in their freedom of design and implementation decisions or decision about the development process. These constraints sometimes go beyond individual systems and are valid for whole organizations and companies.
-
-.Motivation
-Architects should know exactly where they are free in their design decisions and where they must adhere to constraints.
-Constraints must always be dealt with; they may be negotiable, though.
-
-.Form
-Simple tables of constraints with explanations.
-If needed you can subdivide them into
-technical constraints, organizational and political constraints and
-conventions (e.g. programming or versioning guidelines, documentation or naming conventions)
-
-
-.Further Information
-
-See https://docs.arc42.org/section-2/[Architecture Constraints] in the arc42 documentation.
-
-****
+== Restricciones de arquitectura
+.Restricciones
+[options="header",cols="1,2"]
+|===
+|Restricción|Descripción
+|Wikidata|Se usará la API de WIkidata para generar las preguntas automáticamente.
+|Git|Control de versiones del proyecto. 
+|GitHub|Portal donde se guardará el código fuente del proyecto.
+|===
\ No newline at end of file
diff --git a/docs/src/03_system_scope_and_context.adoc b/docs/src/03_system_scope_and_context.adoc
index c528e90..7173c5c 100644
--- a/docs/src/03_system_scope_and_context.adoc
+++ b/docs/src/03_system_scope_and_context.adoc
@@ -3,73 +3,15 @@ ifndef::imagesdir[:imagesdir: ../images]
 [[section-system-scope-and-context]]
 == System Scope and Context
 
-
-[role="arc42help"]
-****
-.Contents
-System scope and context - as the name suggests - delimits your system (i.e. your scope) from all its communication partners
-(neighboring systems and users, i.e. the context of your system). It thereby specifies the external interfaces.
-
-If necessary, differentiate the business context (domain specific inputs and outputs) from the technical context (channels, protocols, hardware).
-
-.Motivation
-The domain interfaces and technical interfaces to communication partners are among your system's most critical aspects. Make sure that you completely understand them.
-
-.Form
-Various options:
-
-* Context diagrams
-* Lists of communication partners and their interfaces.
-
-
-.Further Information
-
-See https://docs.arc42.org/section-3/[Context and Scope] in the arc42 documentation.
-
-****
-
-
-=== Business Context
-
-[role="arc42help"]
-****
-.Contents
-Specification of *all* communication partners (users, IT-systems, ...) with explanations of domain specific inputs and outputs or interfaces.
-Optionally you can add domain specific formats or communication protocols.
-
-.Motivation
-All stakeholders should understand which data are exchanged with the environment of the system.
-
-.Form
-All kinds of diagrams that show the system as a black box and specify the domain interfaces to communication partners.
-
-Alternatively (or additionally) you can use a table.
-The title of the table is the name of your system, the three columns contain the name of the communication partner, the inputs, and the outputs.
-
-****
-
-**<Diagram or Table>**
-
-**<optionally: Explanation of external domain interfaces>**
-
-=== Technical Context
-
-[role="arc42help"]
-****
-.Contents
-Technical interfaces (channels and transmission media) linking your system to its environment. In addition a mapping of domain specific input/output to the channels, i.e. an explanation which I/O uses which channel.
-
-.Motivation
-Many stakeholders make architectural decision based on the technical interfaces between the system and its context. Especially infrastructure or hardware designers decide these technical interfaces.
-
-.Form
-E.g. UML deployment diagram describing channels to neighboring systems,
-together with a mapping table showing the relationships between channels and input/output.
-
-****
-
-**<Diagram or Table>**
-
-**<optionally: Explanation of technical interfaces>**
-
-**<Mapping Input/Output to Channels>**
+=== Contexto de negocio
+En esta tabla se muestra el contexto de negocio de la aplicación. Las entradas son los mensajes que van desde el agente externo hacia la aplicación, y las salidas son los mensajes que van desde la aplicación hacia al agente externo.
+[options="header",cols="1,2,3"]
+|===
+|Agente externo|Entradas|Salidas
+|Usuario|Datos registro, datos login, respuesta a cada pregunta|Preguntas, histórico
+|Wikidata|Ítems(elementos) de Wikidata|Petición a la API de Wikidata
+|===
+
+=== Contexto técnico
+
+image::diagrama_contexto_tecnico.png["Diagrama de contexto técnico"]
\ No newline at end of file

From 0a66741c1f8210633b67d8748eb381e7c9a82a81 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Thu, 15 Feb 2024 12:27:11 +0100
Subject: [PATCH 12/61] =?UTF-8?q?Decisiones=20organizativas=202=C2=AAseman?=
 =?UTF-8?q?a=20en=2004?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/04_solution_strategy.adoc | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc
index 75bca28..54b671b 100644
--- a/docs/src/04_solution_strategy.adoc
+++ b/docs/src/04_solution_strategy.adoc
@@ -43,6 +43,26 @@ La realización de las actas de las reuniones diarias se le ha asignado la tarea
 
 En las siguientes semanas habrá rotación o cambio de miembros en ambos equipos.
 
+En la segunda semana hemos decidido ponernos de manera más profunda con la documentación, asignando diferentes apartados de esta a cada miembro del equipo:
+
+[options="header",cols="1,2"]
+|===
+| Miembro
+| Documentación
+| Sara Lamuño García
+| 4, 6, 12
+| Yago Navajas Gonzalez
+| 1
+| David Álvarez Díaz
+| 
+| Zohaib Akhtar Kausar
+| 10, 11
+| Santiago Lopez Laso
+| 2, 3
+|===
+
+Se han creado el mismo número de Issues como apartados de la documentación hay para asignarla a cada miembro.
+
 .Further Information
 
 See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentation.

From 48a8090f7ce41aeacd859932b7e40dd5efa6bb48 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Thu, 15 Feb 2024 12:37:12 +0100
Subject: [PATCH 13/61] =?UTF-8?q?A=C3=B1adidos=20m=C3=A1s=20t=C3=A9rminos?=
 =?UTF-8?q?=20en=20la=20documentacion12?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/12_glossary.adoc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc
index 0959e74..d534de7 100644
--- a/docs/src/12_glossary.adoc
+++ b/docs/src/12_glossary.adoc
@@ -65,3 +65,7 @@ curiosidad de este tipo de archivo es que no tiene un tipo de MIME definido, mie
 |Docker
 |Aplicación que realiza el despliegue de cualquier aplicación en formato de contenedores, similares a los contenedores que tienen los barcos. Es open-source y permite que el proceso de desplegar una aplicación sea bastante más fácil y ordenado. 
 
+|GitHub Actions
+|Plataforma que ayuda a automatizar los proyectos, haciendo posible el despliegue de estos desde el mismo Github. Soporta una gran variedad de lenguajes de 
+programación y sistemas operativos.
+

From 5c0eed4a27651d02bc17a03219768445369bee90 Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Fri, 16 Feb 2024 20:30:27 +0100
Subject: [PATCH 14/61] cambiado diagrama contexto tecnico a .drawio.png

---
 .../images/diagrama_contexto_tecnico.drawio.png | Bin 0 -> 18628 bytes
 docs/images/diagrama_contexto_tecnico.png       | Bin 13753 -> 0 bytes
 docs/src/03_system_scope_and_context.adoc       |   2 +-
 3 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 docs/images/diagrama_contexto_tecnico.drawio.png
 delete mode 100644 docs/images/diagrama_contexto_tecnico.png

diff --git a/docs/images/diagrama_contexto_tecnico.drawio.png b/docs/images/diagrama_contexto_tecnico.drawio.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5f0cf85dbb3039e2391e3f0d698cc6bc608985d
GIT binary patch
literal 18628
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
D0+Kam

literal 0
HcmV?d00001

diff --git a/docs/images/diagrama_contexto_tecnico.png b/docs/images/diagrama_contexto_tecnico.png
deleted file mode 100644
index 797aa6afc079a25752ddae28597eb3837dd326ee..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13753
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
Ts(s<_P&f)Qs#go8Zg~GMLKoj|

diff --git a/docs/src/03_system_scope_and_context.adoc b/docs/src/03_system_scope_and_context.adoc
index 7173c5c..ca6d7da 100644
--- a/docs/src/03_system_scope_and_context.adoc
+++ b/docs/src/03_system_scope_and_context.adoc
@@ -14,4 +14,4 @@ En esta tabla se muestra el contexto de negocio de la aplicación. Las entradas
 
 === Contexto técnico
 
-image::diagrama_contexto_tecnico.png["Diagrama de contexto técnico"]
\ No newline at end of file
+image::diagrama_contexto_tecnico.drawio.png["Diagrama de contexto técnico"]
\ No newline at end of file

From 1076168d76f49f83b465b22524bad258f5c0a983 Mon Sep 17 00:00:00 2001
From: Verzidee <Zohaib0614@gmail.com>
Date: Sat, 17 Feb 2024 19:03:13 +0100
Subject: [PATCH 15/61] Requisitos de calidad

---
 docs/src/10_quality_requirements.adoc | 78 ++++-----------------------
 1 file changed, 9 insertions(+), 69 deletions(-)

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index 68475e8..c165e1c 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -1,73 +1,13 @@
 ifndef::imagesdir[:imagesdir: ../images]
+= Requisitos de Calidad 🌟
 
-[[section-quality-scenarios]]
-== Quality Requirements
+== Árbol de Calidad 🌳
 
+El árbol de calidad se organiza con "calidad" como raíz, desglosándose en varias ramas principales que representan categorías de calidad relevantes para el proyecto WIQ. Estas ramas incluyen:
 
-[role="arc42help"]
-****
-
-.Content
-This section contains all quality requirements as quality tree with scenarios. The most important ones have already been described in section 1.2. (quality goals)
-
-Here you can also capture quality requirements with lesser priority,
-which will not create high risks when they are not fully achieved.
-
-.Motivation
-Since quality requirements will have a lot of influence on architectural
-decisions you should know for every stakeholder what is really important to them,
-concrete and measurable.
-
-
-.Further Information
-
-See https://docs.arc42.org/section-10/[Quality Requirements] in the arc42 documentation.
-
-****
-
-=== Quality Tree
-
-[role="arc42help"]
-****
-.Content
-The quality tree (as defined in ATAM – Architecture Tradeoff Analysis Method) with quality/evaluation scenarios as leafs.
-
-.Motivation
-The tree structure with priorities provides an overview for a sometimes large number of quality requirements.
-
-.Form
-The quality tree is a high-level overview of the quality goals and requirements:
-
-* tree-like refinement of the term "quality". Use "quality" or "usefulness" as a root
-* a mind map with quality categories as main branches
-
-In any case the tree should include links to the scenarios of the following section.
-
-
-****
-
-=== Quality Scenarios
-
-[role="arc42help"]
-****
-.Contents
-Concretization of (sometimes vague or implicit) quality requirements using (quality) scenarios.
-
-These scenarios describe what should happen when a stimulus arrives at the system.
-
-For architects, two kinds of scenarios are important:
-
-* Usage scenarios (also called application scenarios or use case scenarios) describe the system’s runtime reaction to a certain stimulus. This also includes scenarios that describe the system’s efficiency or performance. Example: The system reacts to a user’s request within one second.
-* Change scenarios describe a modification of the system or of its immediate environment. Example: Additional functionality is implemented or requirements for a quality attribute change.
-
-.Motivation
-Scenarios make quality requirements concrete and allow to
-more easily measure or decide whether they are fulfilled.
-
-Especially when you want to assess your architecture using methods like
-ATAM you need to describe your quality goals (from section 1.2)
-more precisely down to a level of scenarios that can be discussed and evaluated.
-
-.Form
-Tabular or free form text.
-****
+- *Usabilidad* 💡: Se refiere a la facilidad con la que los usuarios pueden utilizar un sistema para alcanzar sus objetivos de manera eficiente y satisfactoria. La usabilidad implica interfaces intuitivas, accesibilidad y una experiencia de usuario agradable.
+- *Rendimiento* ⚡: Evalúa la eficiencia del sistema en términos de velocidad de respuesta, consumo de recursos y escalabilidad. Un buen rendimiento asegura que el sistema puede manejar cargas de trabajo elevadas con tiempos de respuesta rápidos.
+- *Seguridad* 🔒: Implica proteger la información y los sistemas contra accesos no autorizados, divulgación, alteración o destrucción, garantizando la confidencialidad, integridad y disponibilidad de los datos.
+- *Fiabilidad* 🛡️: La capacidad del sistema de funcionar correctamente y sin fallos durante un período determinado bajo condiciones específicas. La fiabilidad se centra en la consistencia del rendimiento y la prevención de fallos.
+- *Mantenibilidad* 🔧: Se refiere a la facilidad con la que un sistema puede ser modificado para corregir fallos, mejorar su funcionamiento o adaptarse a un entorno cambiante. Una alta mantenibilidad facilita las actualizaciones y reduce los costos a largo plazo.
+- *Portabilidad 🌍*: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
\ No newline at end of file

From 939e16f9ba007b1109d8f6e72c0bce79d70554eb Mon Sep 17 00:00:00 2001
From: Verzidee <Zohaib0614@gmail.com>
Date: Sat, 17 Feb 2024 20:27:01 +0100
Subject: [PATCH 16/61] =?UTF-8?q?A=C3=B1adido=20arbol=20de=20calidad?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/images/Arbol de calidad.jpg      | Bin 0 -> 21922 bytes
 docs/src/10_quality_requirements.adoc |   4 +++-
 2 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100644 docs/images/Arbol de calidad.jpg

diff --git a/docs/images/Arbol de calidad.jpg b/docs/images/Arbol de calidad.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1cf0fbc9591e6f60440a9269d9a20afb78e45943
GIT binary patch
literal 21922
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

literal 0
HcmV?d00001

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index c165e1c..dc116c8 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -10,4 +10,6 @@ El árbol de calidad se organiza con "calidad" como raíz, desglosándose en var
 - *Seguridad* 🔒: Implica proteger la información y los sistemas contra accesos no autorizados, divulgación, alteración o destrucción, garantizando la confidencialidad, integridad y disponibilidad de los datos.
 - *Fiabilidad* 🛡️: La capacidad del sistema de funcionar correctamente y sin fallos durante un período determinado bajo condiciones específicas. La fiabilidad se centra en la consistencia del rendimiento y la prevención de fallos.
 - *Mantenibilidad* 🔧: Se refiere a la facilidad con la que un sistema puede ser modificado para corregir fallos, mejorar su funcionamiento o adaptarse a un entorno cambiante. Una alta mantenibilidad facilita las actualizaciones y reduce los costos a largo plazo.
-- *Portabilidad 🌍*: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
\ No newline at end of file
+- *Portabilidad 🌍*: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
+
+image::Arbol de calidad.jpg[Árbol de Calidad,align="center"]
\ No newline at end of file

From df260e719e01f8b75eda55038f29d1addbfd7b5f Mon Sep 17 00:00:00 2001
From: Verzidee <Zohaib0614@gmail.com>
Date: Sat, 17 Feb 2024 21:16:51 +0100
Subject: [PATCH 17/61] =?UTF-8?q?A=C3=B1adido=20escenarios=20de=20calidad?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/10_quality_requirements.adoc | 28 ++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index dc116c8..832c3d3 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -12,4 +12,30 @@ El árbol de calidad se organiza con "calidad" como raíz, desglosándose en var
 - *Mantenibilidad* 🔧: Se refiere a la facilidad con la que un sistema puede ser modificado para corregir fallos, mejorar su funcionamiento o adaptarse a un entorno cambiante. Una alta mantenibilidad facilita las actualizaciones y reduce los costos a largo plazo.
 - *Portabilidad 🌍*: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
 
-image::Arbol de calidad.jpg[Árbol de Calidad,align="center"]
\ No newline at end of file
+image::Arbol de calidad.jpg[Árbol de Calidad,align="center"]
+
+== Escenarios de Calidad
+
+=== Usabilidad 💡
+
+- *Escenario*: Un nuevo usuario puede registrarse e iniciar a jugar en menos de 5 minutos después de su primer acceso al sitio web. La interfaz intuitiva y la guía de inicio rápido facilitan este proceso. 🚀
+
+=== Rendimiento ⚡
+
+- *Escenario*: El sistema responde a las solicitudes de los usuarios en menos de 2 segundos bajo condiciones normales de carga, asegurando una experiencia de juego fluida. 🏎️
+
+=== Seguridad 🔒
+
+- *Escenario*: Todos los datos personales de los usuarios están cifrados tanto en tránsito como en reposo, utilizando estándares de seguridad actuales para prevenir accesos no autorizados. 🔐
+
+=== Mantenibilidad 🔧
+
+- *Escenario*: El sistema permite la adición de nuevas funcionalidades (como tipos de preguntas o temáticas) sin necesidad de una reestructuración mayor, promoviendo una arquitectura modular. 🛠️
+
+=== Fiabilidad 🛡️
+
+- *Escenario*: En caso de fallo del sistema, este debe ser capaz de recuperarse y volver a estar operativo en menos de 5 minutos, garantizando una alta disponibilidad. 🔄
+
+=== Portabilidad 🌍
+
+- *Escenario*: La aplicación web es compatible con los navegadores web más utilizados (Chrome, Firefox, Safari, Edge) en sus últimas dos versiones principales, asegurando un amplio acceso. 🌐
\ No newline at end of file

From 5c06cb9b39e831ad7e7f9cfe5f4be40fc6437f1a Mon Sep 17 00:00:00 2001
From: Verzidee <Zohaib0614@gmail.com>
Date: Sat, 17 Feb 2024 21:35:00 +0100
Subject: [PATCH 18/61] Arreglo de arbol de calidad

---
 docs/images/10_Arbol_de_calidad.jpg   | Bin 0 -> 23597 bytes
 docs/images/Arbol de calidad.jpg      | Bin 21922 -> 0 bytes
 docs/src/10_quality_requirements.adoc |   2 +-
 3 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 docs/images/10_Arbol_de_calidad.jpg
 delete mode 100644 docs/images/Arbol de calidad.jpg

diff --git a/docs/images/10_Arbol_de_calidad.jpg b/docs/images/10_Arbol_de_calidad.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bc70eea8750eb2ed25df3096234f87136ba15218
GIT binary patch
literal 23597
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

literal 0
HcmV?d00001

diff --git a/docs/images/Arbol de calidad.jpg b/docs/images/Arbol de calidad.jpg
deleted file mode 100644
index 1cf0fbc9591e6f60440a9269d9a20afb78e45943..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21922
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

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index 832c3d3..98f1c11 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -12,7 +12,7 @@ El árbol de calidad se organiza con "calidad" como raíz, desglosándose en var
 - *Mantenibilidad* 🔧: Se refiere a la facilidad con la que un sistema puede ser modificado para corregir fallos, mejorar su funcionamiento o adaptarse a un entorno cambiante. Una alta mantenibilidad facilita las actualizaciones y reduce los costos a largo plazo.
 - *Portabilidad 🌍*: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
 
-image::Arbol de calidad.jpg[Árbol de Calidad,align="center"]
+image::10_Arbol_de_calidad.jpg[Árbol de Calidad,align="center"]
 
 == Escenarios de Calidad
 

From 24df1ed763ae6069694f61b69bcc80e46a9d4bb5 Mon Sep 17 00:00:00 2001
From: yagonavajas <uo287746@uniovi.es>
Date: Sun, 18 Feb 2024 11:59:47 +0100
Subject: [PATCH 19/61] Acabado documento 01

---
 docs/src/01_introduction_and_goals.adoc | 76 +++++--------------------
 1 file changed, 13 insertions(+), 63 deletions(-)

diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index 6ee631e..7e10b9f 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -1,92 +1,42 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-introduction-and-goals]]
-== Introduction and Goals (wiq_es04c)
+== Introducción y Ojetivos (wiq_es04c)
 
 nombre_del_proyecto es un proyecto desarrollado en la asignatura  Arquitectura del Software. Consiste en la creacion de una aplicacion web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general.
 
 Los desarrolladores de la aplicacion son por David Álvarez Díaz, Zohaib Akhtar Kausar, Sara Lamuño García, Yago Navajas González y Santiago López Laso.
 
-
-[role="arc42help"]
-****
 La aplicacion tendra su base para las preguntas y las respuestas en Wikidata , la base de conocimiento editada en colaboracion.
 
-* underlying business goals, 
-* essential features, 
-* essential functional requirements, 
-* quality goals for the architecture and
-* relevant stakeholders and their expectations
-****
 
-=== Requirements Overview
+=== Requisitos Funcionales
 
-[role="arc42help"]
 ****
-.Contents
 * Los usuarios se deberan loggear en la pagina, esto servira para tener registro de unas serie de parametros, como puede ser las veces que se ha jugado. 
 * Se podran responder preguntas autogeneradas y ver si han acertado fallado asi como la respuesta correcta.
-
-.Motivation
-From the point of view of the end users a system is created or modified to
-improve support of a business activity and/or improve the quality.
-
-.Form
-Short textual description, probably in tabular use-case format.
-If requirements documents exist this overview should refer to these documents.
-
-Keep these excerpts as short as possible. Balance readability of this document with potential redundancy w.r.t to requirements documents.
+* Las preguntas deberan ser respondidas en un tiempo limite.
+* Las preguntas seran seguiran la misma estructura: 1 pregunta correcta y 3 incorrectas, generadas automaticamente.
+* Los usuarios prodran consultar datos sobre su cuentan, como pueden ser las veces que han jugado o el numero de preguntas que han acertadoo fallado. 
 
 
 ****
 
-=== Quality Goals
+=== Atributos de Calidad
 
-[role="arc42help"]
-****
 [options="header",cols="1,2,2"]
 |===
 |Prioridad | Objetivo | Descripcion
-|Usabilidad | |
-|Privacidad | |
-|Mantenibilidad | |
+| 1 | Usabilidad | Todos los usuarios deben poder usar la aplicacion sin tener en cuenta sus limitaciones.
+| 2 | Privacidad |  Los datos sensibles de los usuarios deben estar restingidos al mismo usuario.
+| 3 |Mantenibilidad | El código y documentación de la aplicación ha de estar conformado de tal forma que sea factible hacer cambios y ampliaciones en la aplicación.
+| 4 | Eficiciencia | Los tiempos entre operaciones han de ser asumibles.
+| 5 | Fiabilidad | Los datos usados en la aplicación deben ser los correctos.
 |===
 
 
-
-image::01_2_iso-25010-topics-EN.drawio.png["Categories of Quality Requirements"]
-
-.Motivation
-You should know the quality goals of your most important stakeholders, since they will influence fundamental architectural decisions. 
-Make sure to be very concrete about these qualities, avoid buzzwords.
-If you as an architect do not know how the quality of your work will be judged...
-
-.Form
-A table with quality goals and concrete scenarios, ordered by priorities
-****
-
 === Stakeholders
 
-[role="arc42help"]
-****
-.Contents
-Explicit overview of stakeholders of the system, i.e. all person, roles or organizations that
-
-* should know the architecture
-* have to be convinced of the architecture
-* have to work with the architecture or with code
-* need the documentation of the architecture for their work
-* have to come up with decisions about the system or its development
-
-.Motivation
-You should know all parties involved in development of the system or affected by the system.
-Otherwise, you may get nasty surprises later in the development process.
-These stakeholders determine the extent and the level of detail of your work and its results.
-
-.Form
-Table with role names, person names, and their expectations with respect to the architecture and its documentation.
-****
-
 [options="header",cols="1,2,2"]
 |===
 |Role/Name|Contact|Expectations
@@ -94,6 +44,6 @@ Table with role names, person names, and their expectations with respect to the
 David Álvarez Díaz -> UO283196@uniovi.es +
 Zohaib Akhtar Kausar -> UO291060@uniovi.es +
 Sara Lamuño García -> UO283706@uniovi.es +
-Santiago Lopez Laso -> UO277369@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación
-| Profesores | _<Contact-2>_ | Supervisores de los avances y encargados de evaluar la aplicacion final
+Santiago Lopez Laso -> UO277369@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación. Seran los encargados de la arquitectura, la documentación y la codificación.
+| Profesores | labra@uniovi.es | Supervisores de los avances y encargados de evaluar la aplicacion final y el desarrollo de la misma.
 |===

From 04669c0e85b74b736f5bc0c152001fb7f0fac6f2 Mon Sep 17 00:00:00 2001
From: yagonavajas <uo287746@uniovi.es>
Date: Sun, 18 Feb 2024 12:57:53 +0100
Subject: [PATCH 20/61] =?UTF-8?q?A=C3=B1adida=20tabla=20doc8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/09_architecture_decisions.adoc | 40 +++++--------------------
 1 file changed, 8 insertions(+), 32 deletions(-)

diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc
index 51e9aad..9c3f130 100644
--- a/docs/src/09_architecture_decisions.adoc
+++ b/docs/src/09_architecture_decisions.adoc
@@ -1,35 +1,11 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-design-decisions]]
-== Architecture Decisions
-
-
-[role="arc42help"]
-****
-.Contents
-Important, expensive, large scale or risky architecture decisions including rationales.
-With "decisions" we mean selecting one alternative based on given criteria.
-
-Please use your judgement to decide whether an architectural decision should be documented
-here in this central section or whether you better document it locally
-(e.g. within the white box template of one building block).
-
-Avoid redundancy. 
-Refer to section 4, where you already captured the most important decisions of your architecture.
-
-.Motivation
-Stakeholders of your system should be able to comprehend and retrace your decisions.
-
-.Form
-Various options:
-
-* ADR (https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions[Documenting Architecture Decisions]) for every important decision
-* List or table, ordered by importance and consequences or:
-* more detailed in form of separate sections per decision
-
-.Further Information
-
-See https://docs.arc42.org/section-9/[Architecture Decisions] in the arc42 documentation.
-There you will find links and examples about ADR.
-
-****
+== Decisiones de Arquitectura
+
+|===
+| Decisión | Ventajas | Inconvenientes
+| JavaScript / React | La base de la aplicación ya esta creada con este lenguaje y lo para la creación de sitios web es un versatil. | La baja o nula esperiencia con el lenguaje de algunos integrantes del grupo asi como sus limitaciones tecninas.
+| Microservicios | La aplicacion se podra dividir en problemas que se podran solucionar dandole diferentes enfoques con diferentes lenguajes y metodologias. | AL igual que el primer punto, la baja experiencia con esta forma de trabajo al cual se tendra que adaptar el grupo.
+| MongoDB | |
+|===

From 922fae8dc823107c8c768a761780a7db48e977ad Mon Sep 17 00:00:00 2001
From: yagonavajas <uo287746@uniovi.es>
Date: Sun, 18 Feb 2024 13:26:41 +0100
Subject: [PATCH 21/61] =?UTF-8?q?a=C3=B1adida=20decision=20base=20de=20dat?=
 =?UTF-8?q?os?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/09_architecture_decisions.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc
index 9c3f130..2640737 100644
--- a/docs/src/09_architecture_decisions.adoc
+++ b/docs/src/09_architecture_decisions.adoc
@@ -7,5 +7,5 @@ ifndef::imagesdir[:imagesdir: ../images]
 | Decisión | Ventajas | Inconvenientes
 | JavaScript / React | La base de la aplicación ya esta creada con este lenguaje y lo para la creación de sitios web es un versatil. | La baja o nula esperiencia con el lenguaje de algunos integrantes del grupo asi como sus limitaciones tecninas.
 | Microservicios | La aplicacion se podra dividir en problemas que se podran solucionar dandole diferentes enfoques con diferentes lenguajes y metodologias. | AL igual que el primer punto, la baja experiencia con esta forma de trabajo al cual se tendra que adaptar el grupo.
-| MongoDB | |
+| MongoDB | Parte de la implementacion ya está hecha. Por otra parte es de uso libre y existe bastante documentacion online para usarse correctamente | Al igual que los dos puntos anteriores, el grupo cuenta con poca experiencia usando esta tecnología y no somos concientes de todas sus limitaciones y fortalezas.
 |===

From c47f5526e5e6feb6eae0698b646f80a435bab37a Mon Sep 17 00:00:00 2001
From: yagonavajas <uo287746@uniovi.es>
Date: Sun, 18 Feb 2024 13:27:07 +0100
Subject: [PATCH 22/61] finalizada primera version doc08

---
 docs/images/08_diagrama_modelo_dominio.png | Bin 0 -> 20869 bytes
 docs/src/08_concepts.adoc                  |  67 ++++-----------------
 2 files changed, 13 insertions(+), 54 deletions(-)
 create mode 100644 docs/images/08_diagrama_modelo_dominio.png

diff --git a/docs/images/08_diagrama_modelo_dominio.png b/docs/images/08_diagrama_modelo_dominio.png
new file mode 100644
index 0000000000000000000000000000000000000000..54fe0a4363ac79c5edfc40de514e269bc80532d4
GIT binary patch
literal 20869
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

literal 0
HcmV?d00001

diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc
index 591ccf1..23e724c 100644
--- a/docs/src/08_concepts.adoc
+++ b/docs/src/08_concepts.adoc
@@ -1,73 +1,32 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-concepts]]
-== Cross-cutting Concepts
+== Conceptos Transversales
+Estos conceptos todavia no han sido aprobados ni implemenmtados pero dan una idea general al proyecto.
 
+=== Modelo de Dominio
+Esta es una primera version del modelo del dominio muy simple para hacerse una idea como funcionara la aplicacion.
 
-[role="arc42help"]
-****
-.Content
-This section describes overall, principal regulations and solution ideas that are relevant in multiple parts (= cross-cutting) of your system.
-Such concepts are often related to multiple building blocks.
-They can include many different topics, such as
 
-* models, especially domain models
-* architecture or design patterns
-* rules for using specific technology
-* principal, often technical decisions of an overarching (= cross-cutting) nature
-* implementation rules
 
+=== Experiencia de Usuario
 
-.Motivation
-Concepts form the basis for _conceptual integrity_ (consistency, homogeneity) of the architecture. 
-Thus, they are an important contribution to achieve inner qualities of your system.
+El usuario sera capaz de interactura con una aplicacion web donde se podra registrar y jugar al juego de manera sencilla.
 
-Some of these concepts cannot be assigned to individual building blocks, e.g. security or safety. 
+image::08_diagrama_modelo_dominio.png["Modelo de dominio simple provisional"]
 
-
-.Form
-The form can be varied:
-
-* concept papers with any kind of structure
-* cross-cutting model excerpts or scenarios using notations of the architecture views
-* sample implementations, especially for technical concepts
-* reference to typical usage of standard frameworks (e.g. using Hibernate for object/relational mapping)
-
-.Structure
-A potential (but not mandatory) structure for this section could be:
-
-* Domain concepts
-* User Experience concepts (UX)
-* Safety and security concepts
-* Architecture and design patterns
-* "Under-the-hood"
-* development concepts
-* operational concepts
-
-Note: it might be difficult to assign individual concepts to one specific topic
-on this list.
-
-image::08-Crosscutting-Concepts-Structure-EN.png["Possible topics for crosscutting concepts"]
-
-
-.Further Information
-
-See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation.
-****
-
-
-=== _<Concept 1>_
+=== Seguridad
 
 _<explanation>_
 
+=== Arquitectura y Patrones de Diseño
 
+_<explanation>_
 
-=== _<Concept 2>_
+=== Desarrollo
 
 _<explanation>_
 
-...
-
-=== _<Concept n>_
+=== Operaciones
 
-_<explanation>_
+_<explanation>_
\ No newline at end of file

From d119680dd4916472e43e427a3b8144a7f6e12e38 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Sun, 18 Feb 2024 19:09:56 +0100
Subject: [PATCH 23/61] =?UTF-8?q?Decisiones=20tecnol=C3=B3gicas=20y=20de?=
 =?UTF-8?q?=20metas=20actualizadas=20en=2006.adoc?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/04_solution_strategy.adoc | 47 ++++++++++++++++++++++++++++--
 1 file changed, 45 insertions(+), 2 deletions(-)

diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc
index 54b671b..35764a9 100644
--- a/docs/src/04_solution_strategy.adoc
+++ b/docs/src/04_solution_strategy.adoc
@@ -24,6 +24,46 @@ Motivate what was decided and why it was decided that way,
 based upon problem statement, quality goals and key constraints.
 Refer to details in the following sections.
 
+Decisiones tecnológicas
+
+Hemos decidido realizar la parte de Front-End con React y la parte de Back-End con la estructura de los microservicios. 
+El despliegue se realizará a través de una máquina virtual de Azure, con ayuda de Docker y GitHub Actions.
+
+[options="header",cols="1,2"]
+|===
+|Aplicación
+|Breve explicación
+|React
+|Biblioteca de JavaScript que nos servirá para realizar las interfaces de usuario necesarias para el Front-End.
+|Microservicios
+|Aquí es donde se unirá el uso de la API (Application Programming Interface) de WikiData, la cual nos sacará los datos para las preguntas y las respuestas
+de la aplicación con el proyecto en sí.
+|Azure
+|Plataforma para la creación de la máquina virtual que servirá para desplegar la aplicación.
+|Docker
+|Encargado de dividir el contenido del proyecto en diversos contenedores (en nuestro caso 4) y sea más fácil de manipular el contenido de dicho proyecto.
+|GitHub Actions
+|Nos servirá para el despliegue del proyecto, pero de forma automática en vez de desplegarlo todo a mano. Cabe a destacar que también están implementados
+unos test para asegurar el correcto despliegue del proyecto.
+|===
+
+Decisiones de cómo llegar a las metas principales (En desarrollo):
+[options="header",cols="1,2"]
+|===
+|Usabilidad
+|
+|Privacidad
+|
+|Mantenibilidad
+|
+|Eficiciencia
+|
+|Fiabilidad
+|
+
+|===
+
+
 
 Decisiones organizativas
 
@@ -52,9 +92,9 @@ En la segunda semana hemos decidido ponernos de manera más profunda con la docu
 | Sara Lamuño García
 | 4, 6, 12
 | Yago Navajas Gonzalez
-| 1
+| 1, 8, 9
 | David Álvarez Díaz
-| 
+| 5, 7
 | Zohaib Akhtar Kausar
 | 10, 11
 | Santiago Lopez Laso
@@ -63,6 +103,9 @@ En la segunda semana hemos decidido ponernos de manera más profunda con la docu
 
 Se han creado el mismo número de Issues como apartados de la documentación hay para asignarla a cada miembro.
 
+En cuanto al despliegue de la aplicación se van a arreglar los errores que salen en los test al intentar desplegarla, ya que se han cambiado
+algunos valores predefinidos, por lo que los test también predefinidos fallarán.
+
 .Further Information
 
 See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentation.

From e0a6b82bb9e44ec2c42223da95f8edc9121f539d Mon Sep 17 00:00:00 2001
From: Verzidee <Zohaib0614@gmail.com>
Date: Mon, 19 Feb 2024 17:25:22 +0100
Subject: [PATCH 24/61] Primera version de riesgos #23

---
 docs/src/11_technical_risks.adoc | 39 ++++++++++++--------------------
 1 file changed, 15 insertions(+), 24 deletions(-)

diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc
index dc5575f..6998b64 100644
--- a/docs/src/11_technical_risks.adoc
+++ b/docs/src/11_technical_risks.adoc
@@ -1,25 +1,16 @@
-ifndef::imagesdir[:imagesdir: ../images]
 
-[[section-technical-risks]]
-== Risks and Technical Debts
-
-
-[role="arc42help"]
-****
-.Contents
-A list of identified technical risks or technical debts, ordered by priority
-
-.Motivation
-“Risk management is project management for grown-ups” (Tim Lister, Atlantic Systems Guild.) 
-
-This should be your motto for systematic detection and evaluation of risks and technical debts in the architecture, which will be needed by management stakeholders (e.g. project managers, product owners) as part of the overall risk analysis and measurement planning.
-
-.Form
-List of risks and/or technical debts, probably including suggested measures to minimize, mitigate or avoid risks or reduce technical debts.
-
-
-.Further Information
-
-See https://docs.arc42.org/section-11/[Risks and Technical Debt] in the arc42 documentation.
-
-****
+= Risks and Technical Debts 🚀
+
+[width="100%",options="header",cols="^,^"]
+|======================
+| Riesgo | Descripción
+| Tiempo de entrega ⏳ | Estamos limitados por el plazo de entrega y también por el tiempo que dedicaremos a trabajar en otras asignaturas.
+| Proyecto grande y equipo grande 👥 | La coordinación y comunicación en un equipo grande pueden ser desafiantes. 
+| Diseño inadecuado o enfoque incorrecto 🎨 | La presencia de errores en etapas tempranas puede ser devastadora, ya que estas son cruciales. Un mal diseño detectado en etapas avanzadas podría ser irreparable, subrayando la importancia de una planificación y visión previsoras.
+| Falta de familiaridad con las tecnologías 🔧 | El equipo comienza con conocimiento limitado sobre las herramientas necesarias, lo que puede resultar en un uso subóptimo de estas.
+| Errores de implementación 🚨 | Errores no críticos en la lógica de negocio pueden permanecer ocultos por largo tiempo, afectando la calidad del sistema.
+| Comunicación deficiente entre miembros 📢 | Las diferencias y desacuerdos pueden obstaculizar la colaboración efectiva, esencial para el éxito del equipo. 
+| Distribución desigual del trabajo ⚖️ | Una asignación desequilibrada puede sobrecargar a algunos miembros mientras deja a otros con menos responsabilidades.
+| Reducción del tamaño del equipo 👥 | La salida inesperada de miembros puede desafiar la continuidad y el avance del proyecto, requiriendo adaptaciones rápidas y eficientes.
+
+|======================

From af82de074780098e584414254ec38f858cff7bb0 Mon Sep 17 00:00:00 2001
From: bidoff <uo283196@uniovi.es>
Date: Mon, 19 Feb 2024 20:41:32 +0100
Subject: [PATCH 25/61] Revertir el revert y volver al commit de arreglar el
 despliegue

---
 package-lock.json      |  6 ------
 webapp/package.json    |  1 -
 webapp/src/App.js      | 33 ++++++---------------------------
 webapp/src/App.test.js |  2 +-
 webapp/src/index.js    |  5 -----
 5 files changed, 7 insertions(+), 40 deletions(-)
 delete mode 100644 package-lock.json

diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 9bdaa85..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "name": "wiq_es04c",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {}
-}
diff --git a/webapp/package.json b/webapp/package.json
index 442d0f4..74e31be 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -51,6 +51,5 @@
     "puppeteer": "^21.7.0",
     "serve": "^14.2.1",
     "start-server-and-test": "^2.0.3"
-
   }
 }
diff --git a/webapp/src/App.js b/webapp/src/App.js
index 178c407..0de25d2 100644
--- a/webapp/src/App.js
+++ b/webapp/src/App.js
@@ -46,49 +46,28 @@ function App() {
 }
 
 export default App; */
-import React, { useState } from 'react';
-import AddUser from './components/AddUser';
+import React from 'react';
+import GenerateQuestion from './components/GenerateQuestion'; // Asegúrate de importar GenerateQuestion correctamente
 import Login from './components/Login';
 import CssBaseline from '@mui/material/CssBaseline';
 import Container from '@mui/material/Container';
 import Typography from '@mui/material/Typography';
-import Link from '@mui/material/Link';
+import Footer from './components/Footer';
 function App() {
-
-  
-  const [showLogin, setShowLogin] = useState(true);
-
-  const handleToggleView = () => {
-    setShowLogin(!showLogin);
-  };
-  
   return (
 
   <Container component="main" maxWidth="xs">
       <CssBaseline />
-
-
       <Typography component="h1" variant="h5" align="center" sx={{ marginTop: 2 }}>
-      wiq_es04c
-      {showLogin ? <Login /> : <AddUser />}
-      {showLogin ? (
-          <Link name="gotoregister" component="button" variant="body2" onClick={handleToggleView}>
-            Don't have an account? Register here.
-          </Link>
-        ) : (
-          <Link component="button" variant="body2" onClick={handleToggleView}>
-            Already have an account? Login here.
-          </Link>
-        )}
-       
+        Welcome to the 2024 edition of the Software Architecture course
       </Typography>
       {/* Aquí se muestra el componente GenerateQuestion */}
       
-      
+      <GenerateQuestion />
 
+      <Footer> </Footer>
     </Container>
   );
-  
 }
 
 export default App;
diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index 85a0c1c..5e3b731 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -3,6 +3,6 @@ import App from './App';
 
 test('renders learn react link', () => {
   render(<App />);
-  const linkElement = screen.getByText(/wiq_es04c/i);
+  const linkElement = screen.getByText(/Welcome to the 2024 edition of the Software Architecture course/i);
   expect(linkElement).toBeInTheDocument();
 });
diff --git a/webapp/src/index.js b/webapp/src/index.js
index 4ac7ec6..efa143b 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -5,8 +5,6 @@ import App from './App';
 import reportWebVitals from './reportWebVitals';
 /*funcion q representa la barra de navegacion superior*/
 import Navbar from './components/NavBar';
-import Footer from './components/Footer';
-
 const root = ReactDOM.createRoot(document.getElementById('root'));
 
 root.render(
@@ -16,9 +14,6 @@ root.render(
     
     <App />
     
-
-    <Footer> </Footer>
-
   </React.StrictMode>
 );
 

From 9e591d4af3dfa3292461c72ac24e98de2ca2a497 Mon Sep 17 00:00:00 2001
From: david <kingn@bidoff>
Date: Mon, 19 Feb 2024 20:51:13 +0100
Subject: [PATCH 26/61] arreglar problema del ssh en el depsliegue

---
 .github/workflows/release.yml | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 77a4606..715c1f9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -110,6 +110,24 @@ jobs:
         password: ${{ secrets.GITHUB_TOKEN }}
         registry: ghcr.io
         workdir: gatewayservice
+  docker-push-questionservice:
+    name: Push question service Docker Image to GitHub Packages
+    runs-on: ubuntu-latest
+    permissions:
+      contents: read
+      packages: write
+    needs: [e2e-tests]
+    steps:
+      - uses: actions/checkout@v4
+      - name: Publish to Registry
+        uses: elgohr/Publish-Docker-Github-Action@v5
+        with:
+          name: arquisoft/wiq_es04c/questionservice
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+          registry: ghcr.io
+          workdir: questionservice
+
   deploy:
     name: Deploy over SSH
     runs-on: ubuntu-latest
@@ -125,4 +143,4 @@ jobs:
           wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/docker-compose.yml -O docker-compose.yml
           wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/.env -O .env
           docker compose down
-          docker compose --profile prod up -d
+          docker compose --profile prod up -d
\ No newline at end of file

From 6c8014d1e89b97d86624c973671a8e4c1c1148ff Mon Sep 17 00:00:00 2001
From: david <kingn@bidoff>
Date: Mon, 19 Feb 2024 20:58:11 +0100
Subject: [PATCH 27/61] arreglar problema despliegue(2)

---
 webapp/src/App.js      | 18 +++++++-----------
 webapp/src/App.test.js |  2 +-
 webapp/src/index.js    |  2 ++
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/webapp/src/App.js b/webapp/src/App.js
index 0de25d2..849ff74 100644
--- a/webapp/src/App.js
+++ b/webapp/src/App.js
@@ -1,4 +1,4 @@
-/* import React, { useState } from 'react';
+ import React, { useState } from 'react';
 import AddUser from './components/AddUser';
 import Login from './components/Login';
 import CssBaseline from '@mui/material/CssBaseline';
@@ -25,6 +25,7 @@ function App() {
   // {showLogin ? <Login /> : <AddUser />} muestra el componente Login si showLogin es true, y AddUser en caso contrario
   return (
     <Container component="main" maxWidth="xs">
+    
       <CssBaseline />
       <Typography component="h1" variant="h5" align="center" sx={{ marginTop: 2 }}>
         WIQ_ES04C
@@ -41,11 +42,14 @@ function App() {
           </Link>
         )}
       </Typography>
+      
     </Container>
   );
 }
 
-export default App; */
+export default App; 
+
+/*
 import React from 'react';
 import GenerateQuestion from './components/GenerateQuestion'; // Asegúrate de importar GenerateQuestion correctamente
 import Login from './components/Login';
@@ -61,13 +65,5 @@ function App() {
       <Typography component="h1" variant="h5" align="center" sx={{ marginTop: 2 }}>
         Welcome to the 2024 edition of the Software Architecture course
       </Typography>
-      {/* Aquí se muestra el componente GenerateQuestion */}
+      { Aquí se muestra el componente GenerateQuestion */
       
-      <GenerateQuestion />
-
-      <Footer> </Footer>
-    </Container>
-  );
-}
-
-export default App;
diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js
index 5e3b731..2a50f56 100644
--- a/webapp/src/App.test.js
+++ b/webapp/src/App.test.js
@@ -3,6 +3,6 @@ import App from './App';
 
 test('renders learn react link', () => {
   render(<App />);
-  const linkElement = screen.getByText(/Welcome to the 2024 edition of the Software Architecture course/i);
+  const linkElement = screen.getByText(/WIQ_ES04C/i);
   expect(linkElement).toBeInTheDocument();
 });
diff --git a/webapp/src/index.js b/webapp/src/index.js
index efa143b..149c74e 100644
--- a/webapp/src/index.js
+++ b/webapp/src/index.js
@@ -4,6 +4,7 @@ import './index.css';
 import App from './App';
 import reportWebVitals from './reportWebVitals';
 /*funcion q representa la barra de navegacion superior*/
+import Footer from './components/Footer';
 import Navbar from './components/NavBar';
 const root = ReactDOM.createRoot(document.getElementById('root'));
 
@@ -14,6 +15,7 @@ root.render(
     
     <App />
     
+    <Footer></Footer>
   </React.StrictMode>
 );
 

From 4e529b86de56f0f3f7f41300dc4e82a2398420f4 Mon Sep 17 00:00:00 2001
From: david alvarez <99325990+bidof@users.noreply.github.com>
Date: Mon, 19 Feb 2024 21:12:41 +0100
Subject: [PATCH 28/61] Update release.yml

---
 .github/workflows/release.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 715c1f9..efe44ac 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -131,7 +131,7 @@ jobs:
   deploy:
     name: Deploy over SSH
     runs-on: ubuntu-latest
-    needs: [docker-push-userservice,docker-push-authservice,docker-push-gatewayservice,docker-push-webapp]
+    needs: [docker-push-userservice,docker-push-authservice,docker-push-gatewayservice,docker-push-webapp,docker-push-questionservice]
     steps:
     - name: Deploy over SSH
       uses: fifsky/ssh-action@master
@@ -143,4 +143,4 @@ jobs:
           wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/docker-compose.yml -O docker-compose.yml
           wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/.env -O .env
           docker compose down
-          docker compose --profile prod up -d
\ No newline at end of file
+          docker compose --profile prod up -d

From 33a6cbf624a3bc4808051316a02d6cd30513be8d Mon Sep 17 00:00:00 2001
From: david <kingn@bidoff>
Date: Mon, 19 Feb 2024 21:42:22 +0100
Subject: [PATCH 29/61] agregar el servicio al build.yml

---
 .github/workflows/build.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index c926570..b281041 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -18,6 +18,7 @@ jobs:
     - run: npm --prefix users/authservice ci
     - run: npm --prefix users/userservice ci
     - run: npm --prefix gatewayservice ci
+    - run: npm --prefix questionsservice ci  # Agrega la tarea para questionsservice
     - run: npm --prefix webapp ci
     - run: npm --prefix users/authservice test -- --coverage
     - run: npm --prefix users/userservice test -- --coverage

From 01396d448152e6fa84200fbda73d3ffb408e3371 Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Mon, 19 Feb 2024 23:11:44 +0100
Subject: [PATCH 30/61] =?UTF-8?q?Arreglados=20errores=20compilaci=C3=B3n?=
 =?UTF-8?q?=20doc=20(no=20usar=20'=3D'=20(level=200))?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/10_quality_requirements.adoc | 18 +++++++++---------
 docs/src/11_technical_risks.adoc      |  2 +-
 docs/src/12_glossary.adoc             |  2 +-
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index 98f1c11..f51f8f2 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -1,7 +1,7 @@
 ifndef::imagesdir[:imagesdir: ../images]
-= Requisitos de Calidad 🌟
+== Requisitos de Calidad 🌟
 
-== Árbol de Calidad 🌳
+=== Árbol de Calidad 🌳
 
 El árbol de calidad se organiza con "calidad" como raíz, desglosándose en varias ramas principales que representan categorías de calidad relevantes para el proyecto WIQ. Estas ramas incluyen:
 
@@ -14,28 +14,28 @@ El árbol de calidad se organiza con "calidad" como raíz, desglosándose en var
 
 image::10_Arbol_de_calidad.jpg[Árbol de Calidad,align="center"]
 
-== Escenarios de Calidad
+=== Escenarios de Calidad
 
-=== Usabilidad 💡
+==== Usabilidad 💡
 
 - *Escenario*: Un nuevo usuario puede registrarse e iniciar a jugar en menos de 5 minutos después de su primer acceso al sitio web. La interfaz intuitiva y la guía de inicio rápido facilitan este proceso. 🚀
 
-=== Rendimiento ⚡
+==== Rendimiento ⚡
 
 - *Escenario*: El sistema responde a las solicitudes de los usuarios en menos de 2 segundos bajo condiciones normales de carga, asegurando una experiencia de juego fluida. 🏎️
 
-=== Seguridad 🔒
+==== Seguridad 🔒
 
 - *Escenario*: Todos los datos personales de los usuarios están cifrados tanto en tránsito como en reposo, utilizando estándares de seguridad actuales para prevenir accesos no autorizados. 🔐
 
-=== Mantenibilidad 🔧
+==== Mantenibilidad 🔧
 
 - *Escenario*: El sistema permite la adición de nuevas funcionalidades (como tipos de preguntas o temáticas) sin necesidad de una reestructuración mayor, promoviendo una arquitectura modular. 🛠️
 
-=== Fiabilidad 🛡️
+==== Fiabilidad 🛡️
 
 - *Escenario*: En caso de fallo del sistema, este debe ser capaz de recuperarse y volver a estar operativo en menos de 5 minutos, garantizando una alta disponibilidad. 🔄
 
-=== Portabilidad 🌍
+==== Portabilidad 🌍
 
 - *Escenario*: La aplicación web es compatible con los navegadores web más utilizados (Chrome, Firefox, Safari, Edge) en sus últimas dos versiones principales, asegurando un amplio acceso. 🌐
\ No newline at end of file
diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc
index 6998b64..f21bea9 100644
--- a/docs/src/11_technical_risks.adoc
+++ b/docs/src/11_technical_risks.adoc
@@ -1,5 +1,5 @@
 
-= Risks and Technical Debts 🚀
+== Risks and Technical Debts 🚀
 
 [width="100%",options="header",cols="^,^"]
 |======================
diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc
index d534de7..e1c8150 100644
--- a/docs/src/12_glossary.adoc
+++ b/docs/src/12_glossary.adoc
@@ -68,4 +68,4 @@ curiosidad de este tipo de archivo es que no tiene un tipo de MIME definido, mie
 |GitHub Actions
 |Plataforma que ayuda a automatizar los proyectos, haciendo posible el despliegue de estos desde el mismo Github. Soporta una gran variedad de lenguajes de 
 programación y sistemas operativos.
-
+|===

From 663d63510dd20e194f1c9fc459caf361f47101e7 Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Mon, 19 Feb 2024 23:16:54 +0100
Subject: [PATCH 31/61] Devuelto el [[section-x]] para que salga numerado en la
 doc

---
 docs/src/10_quality_requirements.adoc | 1 +
 docs/src/11_technical_risks.adoc      | 1 +
 2 files changed, 2 insertions(+)

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index f51f8f2..32e96a1 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -1,4 +1,5 @@
 ifndef::imagesdir[:imagesdir: ../images]
+[[section-quality-scenarios]]
 == Requisitos de Calidad 🌟
 
 === Árbol de Calidad 🌳
diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc
index f21bea9..a287e26 100644
--- a/docs/src/11_technical_risks.adoc
+++ b/docs/src/11_technical_risks.adoc
@@ -1,4 +1,5 @@
 
+[[section-technical-risks]]
 == Risks and Technical Debts 🚀
 
 [width="100%",options="header",cols="^,^"]

From 9963843521cd24ba488be3bd0782e5eab66c2bef Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Mon, 19 Feb 2024 23:21:04 +0100
Subject: [PATCH 32/61] =?UTF-8?q?Cosas=20a=20tener=20en=20cuenta=20para=20?=
 =?UTF-8?q?que=20compile=20la=20documentaci=C3=B3n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/README.md b/README.md
index 49a3962..84e1704 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,10 @@
 # wiq_es04c
 
+No hacer secciones nivel 0 (con solo un '=') porque no compila.
+Ejemplo: no poner '= Requisitos de Calidad', sino '== Requisitos de Calidad'
+No quitar el [[section-x]] del principio de un .adoc, porque si no no sale numerado.
+Ejemplo: 12_glossary.adoc -> no quitar [[section-glossary]]
+
 [![Deploy on release](https://github.com/Arquisoft/wiq_es04c/actions/workflows/release.yml/badge.svg)](https://github.com/Arquisoft/wiq_es04c/actions/workflows/release.yml)
 [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Arquisoft_wiq_es04c&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Arquisoft_wiq_es04c)
 [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=Arquisoft_wiq_es04c&metric=coverage)](https://sonarcloud.io/summary/new_code?id=Arquisoft_wiq_es04c)

From e21929d1c8cd2b083859e11edb388ee33993c667 Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Mon, 19 Feb 2024 23:33:09 +0100
Subject: [PATCH 33/61] Arreglado 04 doc. El contenido estaba oculto por ser de
 [role="arc42help"]

---
 docs/src/04_solution_strategy.adoc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc
index 35764a9..054548c 100644
--- a/docs/src/04_solution_strategy.adoc
+++ b/docs/src/04_solution_strategy.adoc
@@ -23,7 +23,9 @@ Keep the explanations of such key decisions short.
 Motivate what was decided and why it was decided that way,
 based upon problem statement, quality goals and key constraints.
 Refer to details in the following sections.
+****
 
+****
 Decisiones tecnológicas
 
 Hemos decidido realizar la parte de Front-End con React y la parte de Back-End con la estructura de los microservicios. 

From 006dbb228a4adcd59d776e7c8d2b8d9d4aa02cca Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 21 Feb 2024 18:31:41 +0100
Subject: [PATCH 34/61] Arreglo del documento01.adoc

---
 docs/src/01_introduction_and_goals.adoc | 27 +++++++++++++------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index 7e10b9f..77d1c1d 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -3,21 +3,21 @@ ifndef::imagesdir[:imagesdir: ../images]
 [[section-introduction-and-goals]]
 == Introducción y Ojetivos (wiq_es04c)
 
-nombre_del_proyecto es un proyecto desarrollado en la asignatura  Arquitectura del Software. Consiste en la creacion de una aplicacion web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general.
+El proyecto de wiq_es04c es un proyecto desarrollado en la asignatura  Arquitectura del Software. Consiste en la creacion de una aplicacion web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general.
 
 Los desarrolladores de la aplicacion son por David Álvarez Díaz, Zohaib Akhtar Kausar, Sara Lamuño García, Yago Navajas González y Santiago López Laso.
 
-La aplicacion tendra su base para las preguntas y las respuestas en Wikidata , la base de conocimiento editada en colaboracion.
+La aplicación tendra su base para las preguntas y las respuestas en Wikidata , la base de conocimiento editada en colaboracion.
 
 
 === Requisitos Funcionales
 
 ****
-* Los usuarios se deberan loggear en la pagina, esto servira para tener registro de unas serie de parametros, como puede ser las veces que se ha jugado. 
-* Se podran responder preguntas autogeneradas y ver si han acertado fallado asi como la respuesta correcta.
-* Las preguntas deberan ser respondidas en un tiempo limite.
-* Las preguntas seran seguiran la misma estructura: 1 pregunta correcta y 3 incorrectas, generadas automaticamente.
-* Los usuarios prodran consultar datos sobre su cuentan, como pueden ser las veces que han jugado o el numero de preguntas que han acertadoo fallado. 
+* Los usuarios se deberan loggear en la página, esto servirá para tener registro de unas serie de parámetros, como puede ser las veces que se ha jugado. 
+* Se podrán responder preguntas autogeneradas y ver si han acertado fallado, así como la respuesta correcta.
+* Las preguntas deberán ser respondidas en un tiempo límite.
+* Las preguntas seguirán la misma estructura: 1 pregunta correcta y 3 incorrectas, generadas automáticamente.
+* Los usuarios podrán consultar datos sobre su cuentas, como pueden ser las veces que han jugado o el número de preguntas que han acertado o fallado. 
 
 
 ****
@@ -26,10 +26,10 @@ La aplicacion tendra su base para las preguntas y las respuestas en Wikidata , l
 
 [options="header",cols="1,2,2"]
 |===
-|Prioridad | Objetivo | Descripcion
-| 1 | Usabilidad | Todos los usuarios deben poder usar la aplicacion sin tener en cuenta sus limitaciones.
-| 2 | Privacidad |  Los datos sensibles de los usuarios deben estar restingidos al mismo usuario.
-| 3 |Mantenibilidad | El código y documentación de la aplicación ha de estar conformado de tal forma que sea factible hacer cambios y ampliaciones en la aplicación.
+| Prioridad | Objetivo | Descripción
+| 1 | Usabilidad | Todos los usuarios deben poder usar la aplicación sin tener en cuenta sus limitaciones.
+| 2 | Privacidad |  Los datos sensibles de los usuarios deben estar restringidos al mismo usuario.
+| 3 | Mantenibilidad | El código y documentación de la aplicación ha de estar conformado de tal forma que sea factible hacer cambios y ampliaciones en la aplicación.
 | 4 | Eficiciencia | Los tiempos entre operaciones han de ser asumibles.
 | 5 | Fiabilidad | Los datos usados en la aplicación deben ser los correctos.
 |===
@@ -44,6 +44,7 @@ La aplicacion tendra su base para las preguntas y las respuestas en Wikidata , l
 David Álvarez Díaz -> UO283196@uniovi.es +
 Zohaib Akhtar Kausar -> UO291060@uniovi.es +
 Sara Lamuño García -> UO283706@uniovi.es +
-Santiago Lopez Laso -> UO277369@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación. Seran los encargados de la arquitectura, la documentación y la codificación.
-| Profesores | labra@uniovi.es | Supervisores de los avances y encargados de evaluar la aplicacion final y el desarrollo de la misma.
+Santiago Lopez Laso -> UO277369@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación. Serán los encargados de la arquitectura, la documentación y la codificación.
+| Profesores | Jose Emilio Labra Gayo | Supervisores de los avances y encargados de evaluar la aplicacion final y el desarrollo de la misma.
+| Usuario | Jugador de la aplicación | Personas que puedan interactuar tanto con el registro de usuarios como con el juego en sí y pueda completar correctamente una partida.
 |===

From f8074605bda1aab0c66f3c2c6fba019acd2bfe6c Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 21 Feb 2024 18:34:02 +0100
Subject: [PATCH 35/61] =?UTF-8?q?Cambio=20de=20t=C3=ADtulo=20y=20arreglos?=
 =?UTF-8?q?=20en=20index.adoc?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/index.adoc | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/docs/index.adoc b/docs/index.adoc
index 468be5f..58bbabf 100644
--- a/docs/index.adoc
+++ b/docs/index.adoc
@@ -6,7 +6,7 @@
 // configure EN settings for asciidoc
 include::src/config.adoc[]
 
-= image:arc42-logo.png[arc42] Template
+= image:arc42-logo.png[arc42] Generador de preguntas
 :revnumber: 8.2 EN
 :revdate: January 2023
 :revremark: (based upon AsciiDoc version)
@@ -34,16 +34,6 @@ include::src/about-arc42.adoc[]
 // horizontal line
 ***
 
-[role="arc42help"]
-****
-[NOTE]
-====
-This version of the template contains some help and explanations.
-It is used for familiarization with arc42 and the understanding of the concepts.
-For documentation of your own system you use better the _plain_ version.
-====
-****
-
 
 // numbering from here on
 :numbered:

From 8d52916dd5366142d5f697c2570a245cc2c007f2 Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Thu, 22 Feb 2024 01:41:06 +0100
Subject: [PATCH 36/61] Creada la interfaz de preguntas y definida (se puede
 cambiar) la api de questionservice

---
 api_interfaces/api_questionservice.txt     |  13 +++
 users/authservice/package-lock.json        |   6 +-
 users/userservice/package-lock.json        |   6 +-
 webapp/src/components/Login.js             |   2 +
 webapp/src/components/game/Game.js         | 100 +++++++++++++++++++++
 webapp/src/components/game/example_data.js |   8 ++
 6 files changed, 129 insertions(+), 6 deletions(-)
 create mode 100644 api_interfaces/api_questionservice.txt
 create mode 100644 webapp/src/components/game/Game.js
 create mode 100644 webapp/src/components/game/example_data.js

diff --git a/api_interfaces/api_questionservice.txt b/api_interfaces/api_questionservice.txt
new file mode 100644
index 0000000..ad891f2
--- /dev/null
+++ b/api_interfaces/api_questionservice.txt
@@ -0,0 +1,13 @@
+petición HTTP GET getquestion
+devuelve json -> {question: string, answers: answer[]}
+
+-------------------------------------------
+answer: {answer: string, correct: boolean}
+
+EJEMPLO
+const example_data = {question: 'pregunta ejemplo', answers: [
+    {answer: 'respuesta correcta', correct: true},
+    {answer: 'respuesta incorrecta1', correct: false},
+    {answer: 'respuesta incorrecta2', correct: false},
+    {answer: 'respuesta incorrecta3', correct: false}
+]};
\ No newline at end of file
diff --git a/users/authservice/package-lock.json b/users/authservice/package-lock.json
index e0ceb0b..0716101 100644
--- a/users/authservice/package-lock.json
+++ b/users/authservice/package-lock.json
@@ -2788,9 +2788,9 @@
             "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
         },
         "node_modules/ip": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
-            "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz",
+            "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==",
             "devOptional": true
         },
         "node_modules/ipaddr.js": {
diff --git a/users/userservice/package-lock.json b/users/userservice/package-lock.json
index f21b26c..5988507 100644
--- a/users/userservice/package-lock.json
+++ b/users/userservice/package-lock.json
@@ -2786,9 +2786,9 @@
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "node_modules/ip": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
-      "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz",
+      "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==",
       "devOptional": true
     },
     "node_modules/ipaddr.js": {
diff --git a/webapp/src/components/Login.js b/webapp/src/components/Login.js
index 0ad6268..35ce305 100644
--- a/webapp/src/components/Login.js
+++ b/webapp/src/components/Login.js
@@ -2,6 +2,7 @@
 import React, { useState } from 'react';
 import axios from 'axios';
 import { Container, Typography, TextField, Button, Snackbar } from '@mui/material';
+import Game from './game/Game.js';
 
 const Login = () => {
   const [username, setUsername] = useState('');
@@ -43,6 +44,7 @@ const Login = () => {
           <Typography component="p" variant="body1" sx={{ textAlign: 'center', marginTop: 2 }}>
             Your account was created on {new Date(createdAt).toLocaleDateString()}.
           </Typography>
+          <Game></Game>
         </div>
       ) : (
         <div>
diff --git a/webapp/src/components/game/Game.js b/webapp/src/components/game/Game.js
new file mode 100644
index 0000000..18acaf4
--- /dev/null
+++ b/webapp/src/components/game/Game.js
@@ -0,0 +1,100 @@
+// Importa React, useState para manejar el estado, axios para hacer solicitudes HTTP, y componentes de Material UI para la interfaz.
+import React, { useState } from 'react';
+import axios from 'axios';
+import { Container, Typography, Button, Box, Paper, Snackbar } from '@mui/material';
+import MuiAlert from '@mui/material/Alert';
+import exampleData from './example_data.js';
+
+// Define el endpoint de la API, utilizando una variable de entorno o un valor predeterminado.
+const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000';
+
+const Game = () => {
+
+    const [question, setQuestion] = useState('');
+    const [answers, setAnswers] = useState([]);
+    const [snackbarOpen, setSnackbarOpen] = useState(false);
+    const [snackbarMessage, setSnackbarMessage] = useState('');
+    const [snackbarSeverity, setSnackbarSeverity] = useState('success');
+    const handleSnackbarClose = (event, reason) => {
+        if (reason === 'clickaway') {
+            return;
+        }
+        setSnackbarOpen(false);
+    };
+
+    const handleAnswerButtonClick = (correct) => {
+        if (correct) {
+            setSnackbarMessage('Respuesta correcta');
+            setSnackbarSeverity('success');
+            fetchQuestionAndAnswers();
+        } else {
+            setSnackbarMessage('Respuesta incorrecta');
+            setSnackbarSeverity('error');
+        }
+        setSnackbarOpen(true);
+    };
+
+    // Función para llamar al questionservice y obtener la pregunta y las respuestas
+    const fetchQuestionAndAnswers = async () => {
+        try {
+            const response = await axios.get(`${apiEndpoint}/getquestion`);
+            // Almacena la pregunta y las respuestas en los estado.
+            setQuestion(response.data.question);
+            setAnswers(response.data.answers);
+            // setQuestion(exampleData.question);
+            // setAnswers(exampleData.answers);
+        } catch (error) {
+            // Manejo básico de errores: imprime el error en la consola.
+            console.error('Error fetching question and answers', error);
+        }
+    };
+
+    // Renderiza el componente.
+    return (
+        <Container component="main" maxWidth="sm" sx={{ mt: 4 }}>
+            <Typography component="h1" variant="h5" gutterBottom>
+                Generate Question and Answers
+            </Typography>
+            <Box sx={{ mb: 2 }}>
+                <Button variant="contained" color="primary" onClick={fetchQuestionAndAnswers}>
+                    Generate Question
+                </Button>
+            </Box>
+            {/* Muestra la pregunta y las respuesta si existen */}
+            {question && (
+                <Paper elevation={3} sx={{ p: 2, mb: 2 }}>
+                    <Typography variant="subtitle1">Question:</Typography>
+                    <Typography variant="body1">{question}</Typography>
+                </Paper>
+            )}
+            {answers && answers.map((answer, index) => (
+                <div key={index} style={{ marginTop: '10px' }}>
+                    <Button
+                        variant="contained"
+                        color="primary"
+                        onClick={() => handleAnswerButtonClick(answer.correct)}
+                    >
+                        {answer.answer}
+                    </Button>
+                </div>
+            ))}
+            <Snackbar
+                open={snackbarOpen}
+                autoHideDuration={3000}
+                onClose={handleSnackbarClose}
+            >
+                <MuiAlert
+                    elevation={6}
+                    variant="filled"
+                    severity={snackbarSeverity}
+                    onClose={handleSnackbarClose}
+                >
+                    {snackbarMessage}
+                </MuiAlert>
+            </Snackbar>
+        </Container>
+    );
+};
+
+// Exporta el componente para su uso en otras partes de la aplicación.
+export default Game;
\ No newline at end of file
diff --git a/webapp/src/components/game/example_data.js b/webapp/src/components/game/example_data.js
new file mode 100644
index 0000000..4b5e3ef
--- /dev/null
+++ b/webapp/src/components/game/example_data.js
@@ -0,0 +1,8 @@
+const example_data = {question: 'pregunta ejemplo', answers: [
+    {answer: 'respuesta correcta', correct: true},
+    {answer: 'respuesta incorrecta1', correct: false},
+    {answer: 'respuesta incorrecta2', correct: false},
+    {answer: 'respuesta incorrecta3', correct: false}
+]};
+
+export default example_data;
\ No newline at end of file

From d30cee3c291584fb26c95e96b2c48fd4fc68989b Mon Sep 17 00:00:00 2001
From: bidof <uo283196@uniovi.es>
Date: Fri, 23 Feb 2024 23:19:04 +0100
Subject: [PATCH 37/61] arreglar el release.yml

---
 .github/workflows/release.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index efe44ac..8bece02 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -142,5 +142,5 @@ jobs:
         command: |
           wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/docker-compose.yml -O docker-compose.yml
           wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/.env -O .env
-          docker compose down
+          docker compose --profile prod down
           docker compose --profile prod up -d

From 7e82bd2247e43ee4338fafcc93db3dc020af3b99 Mon Sep 17 00:00:00 2001
From: david alvarez <99325990+bidof@users.noreply.github.com>
Date: Sat, 24 Feb 2024 01:46:08 +0100
Subject: [PATCH 38/61] Update release.yml

---
 .github/workflows/release.yml | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8bece02..9ddf038 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,8 +1,10 @@
 name: Deploy on release
 
 on:
-  release:
-    types: [published]
+  push:
+    branches:
+      -master
+      -releases
 
 jobs:
   unit-tests:
@@ -51,7 +53,9 @@ jobs:
     - name: Publish to Registry
       uses: elgohr/Publish-Docker-Github-Action@v5
       env:
-        API_URI: http://${{ secrets.DEPLOY_HOST }}:8000
+        API_URI: http://${{ secrets.DEPLOY_HOST || 'localhost' }}:8000
+
+
       with:
           name: arquisoft/wiq_es04c/webapp
           username: ${{ github.actor }}
@@ -109,7 +113,7 @@ jobs:
         username: ${{ github.actor }}
         password: ${{ secrets.GITHUB_TOKEN }}
         registry: ghcr.io
-        workdir: gatewayservice
+        workdir: ./gatewayservice
   docker-push-questionservice:
     name: Push question service Docker Image to GitHub Packages
     runs-on: ubuntu-latest
@@ -126,7 +130,7 @@ jobs:
           username: ${{ github.actor }}
           password: ${{ secrets.GITHUB_TOKEN }}
           registry: ghcr.io
-          workdir: questionservice
+          workdir: ./questionservice
 
   deploy:
     name: Deploy over SSH
@@ -140,7 +144,8 @@ jobs:
         user: ${{ secrets.DEPLOY_USER }}
         key: ${{ secrets.DEPLOY_KEY }}
         command: |
-          wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/docker-compose.yml -O docker-compose.yml
-          wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/master/.env -O .env
+          wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/releases/docker-compose.yml -O docker-compose.yml
+          wget https://raw.githubusercontent.com/arquisoft/wiq_es04c/releases/.env -O .env
+          git clone -b releases https://github.com/Arquisoft/wiq_es04c.git
           docker compose --profile prod down
           docker compose --profile prod up -d

From 47bc9746560add4bcaa5d21fc111fad50e6cbba8 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Sun, 25 Feb 2024 17:26:16 +0100
Subject: [PATCH 39/61] Quitados ejemplos y arreglado diagrama plantuml

---
 docs/src/06_runtime_view.adoc | 95 ++++++++---------------------------
 1 file changed, 22 insertions(+), 73 deletions(-)

diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc
index fb80e36..14fce42 100644
--- a/docs/src/06_runtime_view.adoc
+++ b/docs/src/06_runtime_view.adoc
@@ -4,67 +4,14 @@ ifndef::imagesdir[:imagesdir: ../images]
 == Runtime View
 
 
-[role="arc42help"]
-****
-.Contents
-The runtime view describes concrete behavior and interactions of the system’s building blocks in form of scenarios from the following areas:
-
-* important use cases or features: how do building blocks execute them?
-* interactions at critical external interfaces: how do building blocks cooperate with users and neighboring systems?
-* operation and administration: launch, start-up, stop
-* error and exception scenarios
-
-Remark: The main criterion for the choice of possible scenarios (sequences, workflows) is their *architectural relevance*. It is *not* important to describe a large number of scenarios. You should rather document a representative selection.
-
-.Motivation
-You should understand how (instances of) building blocks of your system perform their job and communicate at runtime.
-You will mainly capture scenarios in your documentation to communicate your architecture to stakeholders that are less willing or able to read and understand the static models (building block view, deployment view).
-
-.Form
-There are many notations for describing scenarios, e.g.
-
-* numbered list of steps (in natural language)
-* activity diagrams or flow charts
-* sequence diagrams
-* BPMN or EPCs (event process chains)
-* state machines
-* ...
-
-
-.Further Information
-
-See https://docs.arc42.org/section-6/[Runtime View] in the arc42 documentation.
-
-****
-
 === <Runtime Scenario 1>
 
-
-* _<insert runtime diagram or textual description of the scenario>_
-* _<insert description of the notable aspects of the interactions between the
-building block instances depicted in this diagram.>_
-
-It is possible to use a sequence diagram:
-
-[plantuml,"Sequence diagram",png]
-----
-actor Alice
-actor Bob
-database Pod as "Bob's Pod"
-Alice -> Bob: Authentication Request
-Bob --> Alice: Authentication Response
-Alice  --> Pod: Store route
-Alice -> Bob: Another authentication Request
-Alice <-- Bob: another authentication Response
-----
-
 [plantuml,"Sequence diagram",png]
-Diagrama de secuencia con plantuml (se contempla sólo el uso correcto de la aplicación)
 ----
 actor usuario
 actor system
-database bbdd as "bbdd"
 actor juego
+database bbdd as "bbdd"
 usuario -> system: inicio sesión
 system --> usuario: pedir nombre/contraseña
 usuario -> system: dar nombre/contraseña
@@ -80,30 +27,32 @@ system -> juego: verificar respuesta
 juego --> system: respuesta correcta
 system --> usuario: correcta
 system -> juego: generar siguiente pregunta/respuestas
-
 ----
 
+Diagrama de secuencia con plantuml (se contempla sólo el uso correcto de la aplicación)
+
+
 === <Runtime Scenario 2>
--------------------------------------------------------------------------------------------------------------------------------------
-| -> Diagrama de secuencia                                                                                                          |
-| -> Descripción: diagrama de los usos básicos en la aplicación, como inicio de sesión, empezar a jugar y contestar las preguntas.  |
-| -> Aspectos notables:                                                                                                             |
-|    - El usuario tiene que estar autentificado en la aplicación para poder entrar al juego.                                        |
-|    - Los usuarios estarán en una base de datos para recoger los datos de manera más sencilla.                                     |
-|    - En el diagrama se pone la opción de respuesta correcta, pero si fuera incorrecta también se seguiría jugando.                |
--------------------------------------------------------------------------------------------------------------------------------------
+
+ -> Diagrama de secuencia                                                                                                          
+ -> Descripción: diagrama de los usos básicos en la aplicación, como inicio de sesión, empezar a jugar y contestar las preguntas.  
+ -> Aspectos notables:                                                                                                             
+    - El usuario tiene que estar autentificado en la aplicación para poder entrar al juego.                                        
+    - Los usuarios estarán en una base de datos para recoger los datos de manera más sencilla.                                     
+    - En el diagrama se pone la opción de respuesta correcta, pero si fuera incorrecta también se seguiría jugando.                
+
 image::Digrama de secuencia Juego de preguntas.jpg["Diagrama de secuencia"]
 
 === <Runtime Scenario 3>
---------------------------------------------------------------------------------------------------------------------------------------
-| -> Diagrama de casos de uso                                                                                                        |
-| -> Descripción: diagrama básico de los distintos casos de uso que hay en el proyecto                                               |
-| -> Aspectos notables:                                                                                                              |
-|    - El caso de uso de iniciar sesión del usuario está relacionado con el caso de uso de autentificar sesión del sistema,          |
-|    - ya que para que el usuario pueda iniciar sesión debe de estar autentificado.                                                  |
-|    - Lo mismo ocurre con el caso de uso de contestar preguntas del usuario con el caso de uso de verificar respuestas del sistema, | 
-|    - ya que para que el usuario pueda contestar preguntas, el sistema primero debe de verificar si dicha respuesta es correcta     |
-|    - o no para pasar a la siguiente pregunta.                                                                                      |
---------------------------------------------------------------------------------------------------------------------------------------
+
+ -> Diagrama de casos de uso                                                                                                        
+ -> Descripción: diagrama básico de los distintos casos de uso que hay en el proyecto                                               
+ -> Aspectos notables:                                                                                                              
+    - El caso de uso de iniciar sesión del usuario está relacionado con el caso de uso de autentificar sesión del sistema,          
+    - ya que para que el usuario pueda iniciar sesión debe de estar autentificado.                                                  
+    - Lo mismo ocurre con el caso de uso de contestar preguntas del usuario con el caso de uso de verificar respuestas del sistema, 
+    - ya que para que el usuario pueda contestar preguntas, el sistema primero debe de verificar si dicha respuesta es correcta     
+    - o no para pasar a la siguiente pregunta.                                                                                      
+
 
 image::Diagrama de casos de uso para el juego de palabras.jpg["Diagrama de caso de uso"]

From 68fd70ad91d2524a61add9debda36aa5c3e81442 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Sun, 25 Feb 2024 17:26:50 +0100
Subject: [PATCH 40/61] =?UTF-8?q?Actualizaci=C3=B3n=20del=20diagrama=20de?=
 =?UTF-8?q?=20casos=20de=20uso?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ...casos de uso para el juego de palabras.jpg | Bin 19358 -> 20559 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/docs/images/Diagrama de casos de uso para el juego de palabras.jpg b/docs/images/Diagrama de casos de uso para el juego de palabras.jpg
index d002bc24a16347c9ec25ff4361535c83c60c29be..0b340ad9fa76c2c0c91e7bd761706cc0facdb9a7 100644
GIT binary patch
literal 20559
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

literal 19358
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


From cbae98979c766497a14c180851e76b516947d7d9 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Sun, 25 Feb 2024 17:28:47 +0100
Subject: [PATCH 41/61] Quitado ejemplos de documento12.adoc

---
 docs/src/12_glossary.adoc | 26 --------------------------
 1 file changed, 26 deletions(-)

diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc
index e1c8150..a412537 100644
--- a/docs/src/12_glossary.adoc
+++ b/docs/src/12_glossary.adoc
@@ -3,32 +3,6 @@ ifndef::imagesdir[:imagesdir: ../images]
 [[section-glossary]]
 == Glossary
 
-[role="arc42help"]
-****
-.Contents
-The most important domain and technical terms that your stakeholders use when discussing the system.
-
-You can also see the glossary as source for translations if you work in multi-language teams.
-
-.Motivation
-You should clearly define your terms, so that all stakeholders
-
-* have an identical understanding of these terms
-* do not use synonyms and homonyms
-
-
-.Form
-
-A table with columns <Term> and <Definition>.
-
-Potentially more columns in case you need translations.
-
-
-.Further Information
-
-See https://docs.arc42.org/section-12/[Glossary] in the arc42 documentation.
-
-****
 
 [cols="e,2e" options="header"]
 |===

From 7f9a8eed73c85a222925ec38ef8c780596249d1f Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Sun, 25 Feb 2024 17:34:21 +0100
Subject: [PATCH 42/61] Arregladas tablas y quitados ejemplos en la
 documentacion04

---
 docs/src/04_solution_strategy.adoc | 38 +++++++-----------------------
 1 file changed, 9 insertions(+), 29 deletions(-)

diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc
index 054548c..7362990 100644
--- a/docs/src/04_solution_strategy.adoc
+++ b/docs/src/04_solution_strategy.adoc
@@ -3,29 +3,6 @@ ifndef::imagesdir[:imagesdir: ../images]
 [[section-solution-strategy]]
 == Solution Strategy
 
-
-[role="arc42help"]
-****
-.Contents
-A short summary and explanation of the fundamental decisions and solution strategies, that shape system architecture. It includes
-
-* technology decisions
-* decisions about the top-level decomposition of the system, e.g. usage of an architectural pattern or design pattern
-* decisions on how to achieve key quality goals
-* relevant organizational decisions, e.g. selecting a development process or delegating certain tasks to third parties.
-
-.Motivation
-These decisions form the cornerstones for your architecture. They are the foundation for many other detailed decisions or implementation rules.
-
-.Form
-Keep the explanations of such key decisions short.
-
-Motivate what was decided and why it was decided that way,
-based upon problem statement, quality goals and key constraints.
-Refer to details in the following sections.
-****
-
-****
 Decisiones tecnológicas
 
 Hemos decidido realizar la parte de Front-End con React y la parte de Back-End con la estructura de los microservicios. 
@@ -71,15 +48,18 @@ Decisiones organizativas
 
 En la primera semana nos hemos dividido en dos equipos con el objetivo de tocar todas las partes del proyecto. La estructura de los equipos es la siguiente:
 
-----
--> Equipo documentación
-     Sara Lamuño García -> UO283706@uniovi.es 
+[options="header",cols="1,2"]
+|===
+|Equipo
+|Miembros
+|Equipo documentación
+|     Sara Lamuño García -> UO283706@uniovi.es 
      Yago Navajas Gonzalez -> UO287746@uniovi.es
--> Equipo desarrollo del proyecto
-     David Álvarez Díaz -> UO283196@uniovi.es
+|Equipo desarrollo del proyecto
+|     David Álvarez Díaz -> UO283196@uniovi.es
      Zohaib Akhtar Kausar -> UO291060@uniovi.es
      Santiago Lopez Laso -> UO277369@uniovi.es
-----
+|===
 
 La realización de las actas de las reuniones diarias se le ha asignado la tarea a Sara Lamuño García.
 

From ff12db979f29bc53c59e06ba753c706178f3b48a Mon Sep 17 00:00:00 2001
From: Zohaib Akhtar Kausar <zohaib0614@gmail.com>
Date: Mon, 26 Feb 2024 21:08:38 +0100
Subject: [PATCH 43/61] =?UTF-8?q?Refactorizaci=C3=B3n=20de=20question-serv?=
 =?UTF-8?q?ice.js=20y=20Modularizaci=C3=B3n=20del=20C=C3=B3digo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 gatewayservice/gateway-service.js      | 15 +++++++
 questionservice/question-service.js    | 29 ++++++++++++++
 questionservice/questionTemplates.js   | 33 ++++++++++++++++
 questionservice/wikiUtils/wikiCall.js  | 22 +++++++++++
 questionservice/wikiUtils/wikiQuery.js | 55 ++++++++++++++++++++++++++
 5 files changed, 154 insertions(+)
 create mode 100644 questionservice/question-service.js
 create mode 100644 questionservice/questionTemplates.js
 create mode 100644 questionservice/wikiUtils/wikiCall.js
 create mode 100644 questionservice/wikiUtils/wikiQuery.js

diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index 88b84c8..5df3271 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -8,6 +8,7 @@ const port = 8000;
 
 const authServiceUrl = process.env.AUTH_SERVICE_URL || 'http://localhost:8002';
 const userServiceUrl = process.env.USER_SERVICE_URL || 'http://localhost:8001';
+const generateServiceURL = process.env.GENERATE_SERVICE_URL || 'http://localhost:8003';
 
 app.use(cors());
 app.use(express.json());
@@ -41,6 +42,20 @@ app.post('/adduser', async (req, res) => {
   }
 });
 
+app.post('/getquestion', async(req,res)=> {
+  try{
+    // Redirige la solicitud al servicio de generación de preguntas sin enviar un cuerpo de solicitud.
+    const response = await axios.post(`${generateServiceURL}/getquestion`);
+
+    // Devuelve la respuesta del servicio de generación de preguntas al cliente original.
+    res.json(response.data);
+
+  } catch(error) {
+    res.status(error.response.status).json({ error: error.response.data.error });
+  }
+});
+
+
 // Start the gateway service
 const server = app.listen(port, () => {
   console.log(`Gateway Service listening at http://localhost:${port}`);
diff --git a/questionservice/question-service.js b/questionservice/question-service.js
new file mode 100644
index 0000000..fd98a73
--- /dev/null
+++ b/questionservice/question-service.js
@@ -0,0 +1,29 @@
+const express = require('express');
+const app = express();
+const port = 8003;
+
+// Importamos la función desde questionTemplates.js
+const getQuestionTemplate = require('./questionTemplates');
+
+app.use(express.json());
+
+app.post('/getquestion', async (req, res) => {
+    try {
+        const questionAndAnswer = await getQuestionTemplate(); // Obtenemos el json de pregunta y sus respuestas
+
+        if (questionAndAnswer) {
+            res.json(questionAndAnswer); //Devolvemos a la gateway el json
+        } else {
+            // Si no se obtuvo una pregunta por alguna razón, enviamos un error genérico
+            res.status(500).json({ error: "Could not get a question and answers" });
+        }
+    } catch (error) {
+        // En caso de cualquier error en el proceso, lo capturamos y enviamos un mensaje de error
+        console.error("Error generating question:", error);
+        res.status(500).json({ error: "Internal server error when generating the question" });
+    }
+});
+
+app.listen(port, () => {
+    console.log(`Server listening on http://localhost:${port}`);
+});
diff --git a/questionservice/questionTemplates.js b/questionservice/questionTemplates.js
new file mode 100644
index 0000000..27e1e17
--- /dev/null
+++ b/questionservice/questionTemplates.js
@@ -0,0 +1,33 @@
+const wikiQuery = require("./wikiUtils/wikiQuery")
+
+const templates = [
+    async () => {
+        const country = await wikiQuery.getRandomCountryAndCity();
+        //Obtenemos los fakeCities
+        const fakeCities = await wikiQuery.getFakeCity(country.capital); 
+        const correctAnswer = { answer: country.capital, correct: true };
+        const fakeAnswers = fakeCities.map(city => ({ answer: city, correct: false }));
+        const answers = [correctAnswer, ...fakeAnswers];
+
+        // Mezclamos las respuestas para que la posición de la correcta sea aleatoria
+        const shuffledAnswers = shuffleArray(answers);
+
+        return {
+            question: `¿Cuál es la capital de ${country.name}?`,
+            answers: shuffledAnswers
+        };
+    },
+    // Aquí podemos añadir más templates
+];
+
+// Función para mezclar las respuestas
+function shuffleArray(array) {
+    for (let i = array.length - 1; i > 0; i--) {
+        const j = Math.floor(Math.random() * (i + 1));
+        [array[i], array[j]] = [array[j], array[i]]; 
+    }
+    return array;
+}
+
+// Seleccionamos aleatoriamente un template y lo ejecutamos
+module.exports = () => templates[Math.floor(Math.random()*templates.length)]();
diff --git a/questionservice/wikiUtils/wikiCall.js b/questionservice/wikiUtils/wikiCall.js
new file mode 100644
index 0000000..15c5d45
--- /dev/null
+++ b/questionservice/wikiUtils/wikiCall.js
@@ -0,0 +1,22 @@
+const fetch = require('node-fetch');
+
+const ENDPOINT_URL = 'https://query.wikidata.org/sparql';
+
+async function wikiCall(sparqlQuery) {
+    const url = ENDPOINT_URL + '?query=' + encodeURIComponent(sparqlQuery);
+    const headers = { 'Accept': 'application/sparql-results+json' };
+
+    try {
+        const response = await fetch(url, { headers });
+        if (!response.ok) {
+            throw new Error(`HTTP error! status: ${response.status}`);
+        }
+        const data = await response.json();
+        return data.results.bindings;
+    } catch (error) {
+        console.error(`Could not fetch data from Wikidata: ${error}`);
+        return [];
+    }
+}
+
+module.exports = wikiCall;
diff --git a/questionservice/wikiUtils/wikiQuery.js b/questionservice/wikiUtils/wikiQuery.js
new file mode 100644
index 0000000..99ff162
--- /dev/null
+++ b/questionservice/wikiUtils/wikiQuery.js
@@ -0,0 +1,55 @@
+const wikiCall = require("./wikiCall");
+
+//Selecionar un resultado de las consultas aleatorio
+const randomElement = (items) => items[Math.floor(Math.random() * items.length)];
+
+class wikiQuery {
+    
+    static async getRandomCountryAndCity() {
+        const query = `
+        SELECT ?country ?countryLabel ?capitalLabel WHERE {
+            ?country wdt:P31 wd:Q6256; # Tipo de entidad: País
+                     wdt:P36 ?capital. # Propiedad: Tiene por capital
+            SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es". }
+          }
+          LIMIT 50`;
+    
+        const results = randomElement(await wikiCall(query));
+        
+        return {
+            name: results['countryLabel'].value,
+            capital: results['capitalLabel'].value
+        };
+    }
+
+    static async getRandomCity() {
+        const query = `
+        SELECT ?city ?cityLabel WHERE {
+            ?city wdt:P31 wd:Q515; # Tipo de entidad: Ciudad
+            SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es". }
+        }
+        LIMIT 50`;
+    
+        
+        const results = randomElement(await wikiCall(query));
+        
+        return results['cityLabel'].value;
+
+    }    
+    static async getFakeCity(capital) {
+        let Fakecitys = [];
+    
+        while(Fakecitys.length < 3) {
+            let randomCity = await this.getRandomCity();
+            if(randomCity !== capital && !Fakecitys.includes(randomCity)) {
+                Fakecitys.push(randomCity);
+            }
+        }
+    
+        return Fakecitys;
+    }
+    
+
+}
+
+module.exports = wikiQuery
\ No newline at end of file

From 3e84095cfb20481c75acb0ff189f9bc7b0efc4b2 Mon Sep 17 00:00:00 2001
From: Santiago <uo277369@uniovi.es>
Date: Tue, 27 Feb 2024 11:09:06 +0100
Subject: [PATCH 44/61] =?UTF-8?q?Convertido=20questionservice=20en=20micro?=
 =?UTF-8?q?servicio.=20S=C3=B3lo=20comprobe=20que=20funcionara=20en=20loca?=
 =?UTF-8?q?l=20con=20npm?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docker-compose.yml                |   10 +
 gatewayservice/gateway-service.js |    2 +-
 questionservice/.dockerignore     |    2 +
 questionservice/Dockerfile        |   20 +
 questionservice/package-lock.json | 5600 +++++++++++++++++++++++++++++
 questionservice/package.json      |   32 +
 6 files changed, 5665 insertions(+), 1 deletion(-)
 create mode 100644 questionservice/.dockerignore
 create mode 100644 questionservice/Dockerfile
 create mode 100644 questionservice/package-lock.json
 create mode 100644 questionservice/package.json

diff --git a/docker-compose.yml b/docker-compose.yml
index c105ed5..8ea4e22 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -53,9 +53,19 @@ services:
     networks:
       - mynetwork
     environment:
+      GENERATE_SERVICE_URL: http://questionservice:8003
       AUTH_SERVICE_URL: http://authservice:8002
       USER_SERVICE_URL: http://userservice:8001
 
+
+  questionservice:
+    container_name: questionservice-${teamname:-defaultASW}
+    build: ./questionservice
+    ports:
+      - "8003:8003"
+    networks:
+      - mynetwork
+
   webapp:
     container_name: webapp-${teamname:-defaultASW}
     image: ghcr.io/arquisoft/wiq_0/webapp:latest
diff --git a/gatewayservice/gateway-service.js b/gatewayservice/gateway-service.js
index 5df3271..e781a2a 100644
--- a/gatewayservice/gateway-service.js
+++ b/gatewayservice/gateway-service.js
@@ -42,7 +42,7 @@ app.post('/adduser', async (req, res) => {
   }
 });
 
-app.post('/getquestion', async(req,res)=> {
+app.get('/getquestion', async(req,res)=> {
   try{
     // Redirige la solicitud al servicio de generación de preguntas sin enviar un cuerpo de solicitud.
     const response = await axios.post(`${generateServiceURL}/getquestion`);
diff --git a/questionservice/.dockerignore b/questionservice/.dockerignore
new file mode 100644
index 0000000..3091757
--- /dev/null
+++ b/questionservice/.dockerignore
@@ -0,0 +1,2 @@
+node_modules
+coverage
\ No newline at end of file
diff --git a/questionservice/Dockerfile b/questionservice/Dockerfile
new file mode 100644
index 0000000..ae8f3e4
--- /dev/null
+++ b/questionservice/Dockerfile
@@ -0,0 +1,20 @@
+# Use an official Node.js runtime as a parent image
+FROM node:20
+
+# Set the working directory in the container
+WORKDIR /usr/src/questionservice
+
+# Copy package.json and package-lock.json to the working directory
+COPY package*.json ./
+
+# Install app dependencies
+RUN npm install
+
+# Copy the app source code to the working directory
+COPY . .
+
+# Expose the port the app runs on
+EXPOSE 8003
+
+# Define the command to run your app
+CMD ["node", "question-service.js"]
diff --git a/questionservice/package-lock.json b/questionservice/package-lock.json
new file mode 100644
index 0000000..ccd0f3d
--- /dev/null
+++ b/questionservice/package-lock.json
@@ -0,0 +1,5600 @@
+{
+  "name": "questionservice",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "questionservice",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "bcrypt": "^5.1.1",
+        "body-parser": "^1.20.2",
+        "express": "^4.18.2",
+        "jsonwebtoken": "^9.0.2",
+        "mongoose": "^8.0.4"
+      },
+      "devDependencies": {
+        "jest": "^29.7.0",
+        "mongodb-memory-server": "^9.1.5",
+        "supertest": "^6.3.4"
+      }
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+      "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+      "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/highlight": "^7.23.4",
+        "chalk": "^2.4.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/code-frame/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,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/@babel/code-frame/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,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/@babel/code-frame/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/code-frame/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+      "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.23.9",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
+      "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
+      "dev": true,
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.23.5",
+        "@babel/generator": "^7.23.6",
+        "@babel/helper-compilation-targets": "^7.23.6",
+        "@babel/helper-module-transforms": "^7.23.3",
+        "@babel/helpers": "^7.23.9",
+        "@babel/parser": "^7.23.9",
+        "@babel/template": "^7.23.9",
+        "@babel/traverse": "^7.23.9",
+        "@babel/types": "^7.23.9",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
+    },
+    "node_modules/@babel/core/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@babel/core/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
+    },
+    "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,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+      "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.23.6",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.23.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+      "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.23.5",
+        "@babel/helper-validator-option": "^7.23.5",
+        "browserslist": "^4.22.2",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets/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,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.22.15",
+        "@babel/types": "^7.23.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+      "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+      "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-module-imports": "^7.22.15",
+        "@babel/helper-simple-access": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@babel/helper-validator-identifier": "^7.22.20"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+      "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+      "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.22.6",
+      "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,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+      "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+      "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.23.9",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
+      "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.23.9",
+        "@babel/traverse": "^7.23.9",
+        "@babel/types": "^7.23.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.23.4",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+      "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "chalk": "^2.4.2",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/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,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/@babel/highlight/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,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/@babel/highlight/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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.23.9",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
+      "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
+      "dev": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-bigint": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+      "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "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,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-typescript": {
+      "version": "7.23.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+      "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.23.9",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
+      "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.23.5",
+        "@babel/parser": "^7.23.9",
+        "@babel/types": "^7.23.9"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.23.9",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
+      "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.23.5",
+        "@babel/generator": "^7.23.6",
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-function-name": "^7.23.0",
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@babel/parser": "^7.23.9",
+        "@babel/types": "^7.23.9",
+        "debug": "^4.3.1",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@babel/traverse/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
+    },
+    "node_modules/@babel/types": {
+      "version": "7.23.9",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
+      "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.23.4",
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@bcoe/v8-coverage": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+      "dev": true
+    },
+    "node_modules/@istanbuljs/load-nyc-config": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+      "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^5.3.1",
+        "find-up": "^4.1.0",
+        "get-package-type": "^0.1.0",
+        "js-yaml": "^3.13.1",
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@istanbuljs/schema": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+      "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@jest/console": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
+      "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/core": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
+      "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.7.0",
+        "@jest/reporters": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "jest-changed-files": "^29.7.0",
+        "jest-config": "^29.7.0",
+        "jest-haste-map": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-regex-util": "^29.6.3",
+        "jest-resolve": "^29.7.0",
+        "jest-resolve-dependencies": "^29.7.0",
+        "jest-runner": "^29.7.0",
+        "jest-runtime": "^29.7.0",
+        "jest-snapshot": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "jest-watcher": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.7.0",
+        "slash": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@jest/environment": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+      "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/fake-timers": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "jest-mock": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/expect": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
+      "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
+      "dev": true,
+      "dependencies": {
+        "expect": "^29.7.0",
+        "jest-snapshot": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/expect-utils": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
+      "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
+      "dev": true,
+      "dependencies": {
+        "jest-get-type": "^29.6.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/fake-timers": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+      "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@sinonjs/fake-timers": "^10.0.2",
+        "@types/node": "*",
+        "jest-message-util": "^29.7.0",
+        "jest-mock": "^29.7.0",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/globals": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
+      "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/expect": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "jest-mock": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/reporters": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
+      "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
+      "dev": true,
+      "dependencies": {
+        "@bcoe/v8-coverage": "^0.2.3",
+        "@jest/console": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@jridgewell/trace-mapping": "^0.3.18",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "exit": "^0.1.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-instrument": "^6.0.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^4.0.0",
+        "istanbul-reports": "^3.1.3",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-worker": "^29.7.0",
+        "slash": "^3.0.0",
+        "string-length": "^4.0.1",
+        "strip-ansi": "^6.0.0",
+        "v8-to-istanbul": "^9.0.1"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@jest/schemas": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+      "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+      "dev": true,
+      "dependencies": {
+        "@sinclair/typebox": "^0.27.8"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/source-map": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
+      "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.18",
+        "callsites": "^3.0.0",
+        "graceful-fs": "^4.2.9"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/test-result": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
+      "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "collect-v8-coverage": "^1.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/test-sequencer": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
+      "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/test-result": "^29.7.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/transform": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
+      "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@jest/types": "^29.6.3",
+        "@jridgewell/trace-mapping": "^0.3.18",
+        "babel-plugin-istanbul": "^6.1.1",
+        "chalk": "^4.0.0",
+        "convert-source-map": "^2.0.0",
+        "fast-json-stable-stringify": "^2.1.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "jest-regex-util": "^29.6.3",
+        "jest-util": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "pirates": "^4.0.4",
+        "slash": "^3.0.0",
+        "write-file-atomic": "^4.0.2"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jest/types": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+      "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/schemas": "^29.6.3",
+        "@types/istanbul-lib-coverage": "^2.0.0",
+        "@types/istanbul-reports": "^3.0.0",
+        "@types/node": "*",
+        "@types/yargs": "^17.0.8",
+        "chalk": "^4.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.4",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz",
+      "integrity": "sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.23",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz",
+      "integrity": "sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
+      }
+    },
+    "node_modules/@mapbox/node-pre-gyp": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
+      "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
+      "dependencies": {
+        "detect-libc": "^2.0.0",
+        "https-proxy-agent": "^5.0.0",
+        "make-dir": "^3.1.0",
+        "node-fetch": "^2.6.7",
+        "nopt": "^5.0.0",
+        "npmlog": "^5.0.1",
+        "rimraf": "^3.0.2",
+        "semver": "^7.3.5",
+        "tar": "^6.1.11"
+      },
+      "bin": {
+        "node-pre-gyp": "bin/node-pre-gyp"
+      }
+    },
+    "node_modules/@mongodb-js/saslprep": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz",
+      "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==",
+      "dependencies": {
+        "sparse-bitfield": "^3.0.3"
+      }
+    },
+    "node_modules/@sinclair/typebox": {
+      "version": "0.27.8",
+      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+      "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+      "dev": true
+    },
+    "node_modules/@sinonjs/commons": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+      "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+      "dev": true,
+      "dependencies": {
+        "type-detect": "4.0.8"
+      }
+    },
+    "node_modules/@sinonjs/fake-timers": {
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+      "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+      "dev": true,
+      "dependencies": {
+        "@sinonjs/commons": "^3.0.0"
+      }
+    },
+    "node_modules/@types/babel__core": {
+      "version": "7.20.5",
+      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+      "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.7",
+        "@babel/types": "^7.20.7",
+        "@types/babel__generator": "*",
+        "@types/babel__template": "*",
+        "@types/babel__traverse": "*"
+      }
+    },
+    "node_modules/@types/babel__generator": {
+      "version": "7.6.8",
+      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+      "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__template": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+      "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "node_modules/@types/babel__traverse": {
+      "version": "7.20.5",
+      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
+      "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.20.7"
+      }
+    },
+    "node_modules/@types/graceful-fs": {
+      "version": "4.1.9",
+      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+      "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/istanbul-lib-coverage": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+      "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+      "dev": true
+    },
+    "node_modules/@types/istanbul-lib-report": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+      "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+      "dev": true,
+      "dependencies": {
+        "@types/istanbul-lib-coverage": "*"
+      }
+    },
+    "node_modules/@types/istanbul-reports": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+      "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/istanbul-lib-report": "*"
+      }
+    },
+    "node_modules/@types/node": {
+      "version": "20.11.20",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz",
+      "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==",
+      "dev": true,
+      "dependencies": {
+        "undici-types": "~5.26.4"
+      }
+    },
+    "node_modules/@types/stack-utils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+      "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+      "dev": true
+    },
+    "node_modules/@types/webidl-conversions": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
+      "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
+    },
+    "node_modules/@types/whatwg-url": {
+      "version": "8.2.2",
+      "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
+      "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "@types/webidl-conversions": "*"
+      }
+    },
+    "node_modules/@types/yargs": {
+      "version": "17.0.32",
+      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
+      "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
+      "dev": true,
+      "dependencies": {
+        "@types/yargs-parser": "*"
+      }
+    },
+    "node_modules/@types/yargs-parser": {
+      "version": "21.0.3",
+      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+      "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+      "dev": true
+    },
+    "node_modules/abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+    },
+    "node_modules/accepts": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+      "dependencies": {
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "dependencies": {
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/agent-base/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/agent-base/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=="
+    },
+    "node_modules/ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.21.3"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "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,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/aproba": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+      "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
+    },
+    "node_modules/are-we-there-yet": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
+      "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+      "dependencies": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^3.6.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+    },
+    "node_modules/asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+      "dev": true
+    },
+    "node_modules/async-mutex": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz",
+      "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^2.4.0"
+      }
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "dev": true
+    },
+    "node_modules/b4a": {
+      "version": "1.6.6",
+      "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
+      "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
+      "dev": true
+    },
+    "node_modules/babel-jest": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
+      "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/transform": "^29.7.0",
+        "@types/babel__core": "^7.1.14",
+        "babel-plugin-istanbul": "^6.1.1",
+        "babel-preset-jest": "^29.6.3",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.8.0"
+      }
+    },
+    "node_modules/babel-plugin-istanbul": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+      "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@istanbuljs/load-nyc-config": "^1.0.0",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-instrument": "^5.0.4",
+        "test-exclude": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+      "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.12.3",
+        "@babel/parser": "^7.14.7",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-coverage": "^3.2.0",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/babel-plugin-istanbul/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,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/babel-plugin-jest-hoist": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
+      "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.3.3",
+        "@babel/types": "^7.3.3",
+        "@types/babel__core": "^7.1.14",
+        "@types/babel__traverse": "^7.0.6"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/babel-preset-current-node-syntax": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-bigint": "^7.8.3",
+        "@babel/plugin-syntax-class-properties": "^7.8.3",
+        "@babel/plugin-syntax-import-meta": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-top-level-await": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/babel-preset-jest": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
+      "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
+      "dev": true,
+      "dependencies": {
+        "babel-plugin-jest-hoist": "^29.6.3",
+        "babel-preset-current-node-syntax": "^1.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "node_modules/bare-events": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz",
+      "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/bcrypt": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz",
+      "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==",
+      "hasInstallScript": true,
+      "dependencies": {
+        "@mapbox/node-pre-gyp": "^1.0.11",
+        "node-addon-api": "^5.0.0"
+      },
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "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==",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "content-type": "~1.0.5",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "on-finished": "2.4.1",
+        "qs": "6.11.0",
+        "raw-body": "2.5.2",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "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==",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.23.0",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+      "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001587",
+        "electron-to-chromium": "^1.4.668",
+        "node-releases": "^2.0.14",
+        "update-browserslist-db": "^1.0.13"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/bser": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+      "dev": true,
+      "dependencies": {
+        "node-int64": "^0.4.0"
+      }
+    },
+    "node_modules/bson": {
+      "version": "5.5.1",
+      "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz",
+      "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==",
+      "dev": true,
+      "engines": {
+        "node": ">=14.20.1"
+      }
+    },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/buffer-equal-constant-time": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+      "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+    },
+    "node_modules/buffer-from": {
+      "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
+    },
+    "node_modules/bytes": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz",
+      "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.3",
+        "set-function-length": "^1.2.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001591",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz",
+      "integrity": "sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ]
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/char-regex": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/chownr": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+      "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+      "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/sibiraj-s"
+        }
+      ],
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cjs-module-lexer": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+      "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+      "dev": true
+    },
+    "node_modules/cliui": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+      "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.1",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+      "dev": true,
+      "engines": {
+        "iojs": ">= 1.0.0",
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/collect-v8-coverage": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+      "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+      "dev": true
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "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
+    },
+    "node_modules/color-support": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+      "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+      "bin": {
+        "color-support": "bin.js"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+      "dev": true
+    },
+    "node_modules/component-emitter": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+      "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+    },
+    "node_modules/console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
+    },
+    "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==",
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "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
+    },
+    "node_modules/cookie": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+    },
+    "node_modules/cookiejar": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+      "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
+      "dev": true
+    },
+    "node_modules/create-jest": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
+      "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "chalk": "^4.0.0",
+        "exit": "^0.1.2",
+        "graceful-fs": "^4.2.9",
+        "jest-config": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "prompts": "^2.0.1"
+      },
+      "bin": {
+        "create-jest": "bin/create-jest.js"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/dedent": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
+      "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
+      "dev": true,
+      "peerDependencies": {
+        "babel-plugin-macros": "^3.1.0"
+      },
+      "peerDependenciesMeta": {
+        "babel-plugin-macros": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/deepmerge": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz",
+      "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.2",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+      "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/detect-libc": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
+      "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/detect-newline": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/dezalgo": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
+      "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
+      "dev": true,
+      "dependencies": {
+        "asap": "^2.0.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/diff-sequences": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+      "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+      "dev": true,
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/ecdsa-sig-formatter": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "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=="
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.682",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.682.tgz",
+      "integrity": "sha512-oCglfs8yYKs9RQjJFOHonSnhikPK3y+0SvSYc/YpYJV//6rqc0/hbwd0c7vgK4vrl6y2gJAwjkhkSGWK+z4KRA==",
+      "dev": true
+    },
+    "node_modules/emittery": {
+      "version": "0.13.1",
+      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+      "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+      }
+    },
+    "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=="
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+      "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/execa": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/exit": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/expect": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
+      "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/expect-utils": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "jest-matcher-utils": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.18.2",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+      "dependencies": {
+        "accepts": "~1.3.8",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.20.1",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.5.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.2.0",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.11.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.18.0",
+        "serve-static": "1.15.0",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/body-parser": {
+      "version": "1.20.1",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+      "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "on-finished": "2.4.1",
+        "qs": "6.11.0",
+        "raw-body": "2.5.1",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/express/node_modules/raw-body": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/fast-fifo": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+      "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+      "dev": true
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "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
+    },
+    "node_modules/fast-safe-stringify": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+      "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+      "dev": true
+    },
+    "node_modules/fb-watchman": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+      "dev": true,
+      "dependencies": {
+        "bser": "2.1.1"
+      }
+    },
+    "node_modules/fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+      "dev": true,
+      "dependencies": {
+        "pend": "~1.2.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "2.0.1",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/find-cache-dir": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+      "dev": true,
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.15.5",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+      "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dev": true,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/formidable": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
+      "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
+      "dev": true,
+      "dependencies": {
+        "dezalgo": "^1.0.4",
+        "hexoid": "^1.0.0",
+        "once": "^1.4.0",
+        "qs": "^6.11.0"
+      },
+      "funding": {
+        "url": "https://ko-fi.com/tunnckoCore/commissions"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fs-minipass": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+      "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+      "dependencies": {
+        "minipass": "^3.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/fs-minipass/node_modules/minipass": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+      "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/fs-minipass/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
+    "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=="
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gauge": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
+      "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+      "dependencies": {
+        "aproba": "^1.0.3 || ^2.0.0",
+        "color-support": "^1.1.2",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.1",
+        "object-assign": "^4.1.1",
+        "signal-exit": "^3.0.0",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^6.0.1",
+        "wide-align": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-package-type": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+      "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "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,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "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
+    },
+    "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,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+      "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+      "dependencies": {
+        "get-intrinsic": "^1.2.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+      "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
+    },
+    "node_modules/hasown": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+      "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/hexoid": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
+      "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "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
+    },
+    "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==",
+      "dependencies": {
+        "depd": "2.0.0",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "toidentifier": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "dependencies": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/https-proxy-agent/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/https-proxy-agent/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=="
+    },
+    "node_modules/human-signals": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.17.0"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/import-local": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+      "dev": true,
+      "dependencies": {
+        "pkg-dir": "^4.2.0",
+        "resolve-cwd": "^3.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
+    "node_modules/ip-address": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+      "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+      "devOptional": true,
+      "dependencies": {
+        "jsbn": "1.1.0",
+        "sprintf-js": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/ip-address/node_modules/sprintf-js": {
+      "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==",
+      "devOptional": true
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+      "dev": true
+    },
+    "node_modules/is-core-module": {
+      "version": "2.13.1",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+      "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+      "dev": true,
+      "dependencies": {
+        "hasown": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-generator-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "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,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "node_modules/istanbul-lib-coverage": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+      "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/istanbul-lib-instrument": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz",
+      "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.23.9",
+        "@babel/parser": "^7.23.9",
+        "@istanbuljs/schema": "^0.1.3",
+        "istanbul-lib-coverage": "^3.2.0",
+        "semver": "^7.5.4"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-lib-report": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+      "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+      "dev": true,
+      "dependencies": {
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^4.0.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-lib-report/node_modules/make-dir": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+      "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^7.5.3"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/istanbul-lib-source-maps": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+      "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "istanbul-lib-coverage": "^3.0.0",
+        "source-map": "^0.6.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/istanbul-lib-source-maps/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/istanbul-lib-source-maps/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
+    },
+    "node_modules/istanbul-reports": {
+      "version": "3.1.7",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+      "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+      "dev": true,
+      "dependencies": {
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/jest": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
+      "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/core": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "import-local": "^3.0.2",
+        "jest-cli": "^29.7.0"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-changed-files": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
+      "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
+      "dev": true,
+      "dependencies": {
+        "execa": "^5.0.0",
+        "jest-util": "^29.7.0",
+        "p-limit": "^3.1.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-circus": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
+      "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/expect": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "co": "^4.6.0",
+        "dedent": "^1.0.0",
+        "is-generator-fn": "^2.0.0",
+        "jest-each": "^29.7.0",
+        "jest-matcher-utils": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-runtime": "^29.7.0",
+        "jest-snapshot": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "p-limit": "^3.1.0",
+        "pretty-format": "^29.7.0",
+        "pure-rand": "^6.0.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-cli": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
+      "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
+      "dev": true,
+      "dependencies": {
+        "@jest/core": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "chalk": "^4.0.0",
+        "create-jest": "^29.7.0",
+        "exit": "^0.1.2",
+        "import-local": "^3.0.2",
+        "jest-config": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "yargs": "^17.3.1"
+      },
+      "bin": {
+        "jest": "bin/jest.js"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+      },
+      "peerDependenciesMeta": {
+        "node-notifier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-config": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
+      "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@jest/test-sequencer": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "babel-jest": "^29.7.0",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "deepmerge": "^4.2.2",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-circus": "^29.7.0",
+        "jest-environment-node": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "jest-regex-util": "^29.6.3",
+        "jest-resolve": "^29.7.0",
+        "jest-runner": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "parse-json": "^5.2.0",
+        "pretty-format": "^29.7.0",
+        "slash": "^3.0.0",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@types/node": "*",
+        "ts-node": ">=9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "ts-node": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-diff": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+      "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "diff-sequences": "^29.6.3",
+        "jest-get-type": "^29.6.3",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-docblock": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
+      "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
+      "dev": true,
+      "dependencies": {
+        "detect-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-each": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
+      "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.6.3",
+        "jest-util": "^29.7.0",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-environment-node": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+      "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/fake-timers": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "jest-mock": "^29.7.0",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-get-type": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+      "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+      "dev": true,
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-haste-map": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
+      "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/graceful-fs": "^4.1.3",
+        "@types/node": "*",
+        "anymatch": "^3.0.3",
+        "fb-watchman": "^2.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-regex-util": "^29.6.3",
+        "jest-util": "^29.7.0",
+        "jest-worker": "^29.7.0",
+        "micromatch": "^4.0.4",
+        "walker": "^1.0.8"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "^2.3.2"
+      }
+    },
+    "node_modules/jest-leak-detector": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
+      "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
+      "dev": true,
+      "dependencies": {
+        "jest-get-type": "^29.6.3",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-matcher-utils": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
+      "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "jest-diff": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-message-util": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+      "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.12.13",
+        "@jest/types": "^29.6.3",
+        "@types/stack-utils": "^2.0.0",
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "micromatch": "^4.0.4",
+        "pretty-format": "^29.7.0",
+        "slash": "^3.0.0",
+        "stack-utils": "^2.0.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-mock": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+      "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "jest-util": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-pnp-resolver": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "jest-resolve": "*"
+      },
+      "peerDependenciesMeta": {
+        "jest-resolve": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/jest-regex-util": {
+      "version": "29.6.3",
+      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+      "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
+      "dev": true,
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-resolve": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
+      "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.0.0",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "jest-pnp-resolver": "^1.2.2",
+        "jest-util": "^29.7.0",
+        "jest-validate": "^29.7.0",
+        "resolve": "^1.20.0",
+        "resolve.exports": "^2.0.0",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-resolve-dependencies": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
+      "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
+      "dev": true,
+      "dependencies": {
+        "jest-regex-util": "^29.6.3",
+        "jest-snapshot": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-runner": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
+      "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/console": "^29.7.0",
+        "@jest/environment": "^29.7.0",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
+        "graceful-fs": "^4.2.9",
+        "jest-docblock": "^29.7.0",
+        "jest-environment-node": "^29.7.0",
+        "jest-haste-map": "^29.7.0",
+        "jest-leak-detector": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-resolve": "^29.7.0",
+        "jest-runtime": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "jest-watcher": "^29.7.0",
+        "jest-worker": "^29.7.0",
+        "p-limit": "^3.1.0",
+        "source-map-support": "0.5.13"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-runtime": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
+      "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/environment": "^29.7.0",
+        "@jest/fake-timers": "^29.7.0",
+        "@jest/globals": "^29.7.0",
+        "@jest/source-map": "^29.6.3",
+        "@jest/test-result": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "cjs-module-lexer": "^1.0.0",
+        "collect-v8-coverage": "^1.0.0",
+        "glob": "^7.1.3",
+        "graceful-fs": "^4.2.9",
+        "jest-haste-map": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-mock": "^29.7.0",
+        "jest-regex-util": "^29.6.3",
+        "jest-resolve": "^29.7.0",
+        "jest-snapshot": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "slash": "^3.0.0",
+        "strip-bom": "^4.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-snapshot": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
+      "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.11.6",
+        "@babel/generator": "^7.7.2",
+        "@babel/plugin-syntax-jsx": "^7.7.2",
+        "@babel/plugin-syntax-typescript": "^7.7.2",
+        "@babel/types": "^7.3.3",
+        "@jest/expect-utils": "^29.7.0",
+        "@jest/transform": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "babel-preset-current-node-syntax": "^1.0.0",
+        "chalk": "^4.0.0",
+        "expect": "^29.7.0",
+        "graceful-fs": "^4.2.9",
+        "jest-diff": "^29.7.0",
+        "jest-get-type": "^29.6.3",
+        "jest-matcher-utils": "^29.7.0",
+        "jest-message-util": "^29.7.0",
+        "jest-util": "^29.7.0",
+        "natural-compare": "^1.4.0",
+        "pretty-format": "^29.7.0",
+        "semver": "^7.5.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-util": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+      "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "chalk": "^4.0.0",
+        "ci-info": "^3.2.0",
+        "graceful-fs": "^4.2.9",
+        "picomatch": "^2.2.3"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-validate": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
+      "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
+      "dev": true,
+      "dependencies": {
+        "@jest/types": "^29.6.3",
+        "camelcase": "^6.2.0",
+        "chalk": "^4.0.0",
+        "jest-get-type": "^29.6.3",
+        "leven": "^3.1.0",
+        "pretty-format": "^29.7.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-validate/node_modules/camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/jest-watcher": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
+      "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
+      "dev": true,
+      "dependencies": {
+        "@jest/test-result": "^29.7.0",
+        "@jest/types": "^29.6.3",
+        "@types/node": "*",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.0.0",
+        "emittery": "^0.13.1",
+        "jest-util": "^29.7.0",
+        "string-length": "^4.0.1"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-worker": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+      "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "jest-util": "^29.7.0",
+        "merge-stream": "^2.0.0",
+        "supports-color": "^8.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/jest-worker/node_modules/supports-color": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/supports-color?sponsor=1"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "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,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsbn": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+      "devOptional": true
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "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
+    },
+    "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,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/jsonwebtoken": {
+      "version": "9.0.2",
+      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+      "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+      "dependencies": {
+        "jws": "^3.2.2",
+        "lodash.includes": "^4.3.0",
+        "lodash.isboolean": "^3.0.3",
+        "lodash.isinteger": "^4.0.4",
+        "lodash.isnumber": "^3.0.3",
+        "lodash.isplainobject": "^4.0.6",
+        "lodash.isstring": "^4.0.1",
+        "lodash.once": "^4.0.0",
+        "ms": "^2.1.1",
+        "semver": "^7.5.4"
+      },
+      "engines": {
+        "node": ">=12",
+        "npm": ">=6"
+      }
+    },
+    "node_modules/jsonwebtoken/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=="
+    },
+    "node_modules/jwa": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+      "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+      "dependencies": {
+        "buffer-equal-constant-time": "1.0.1",
+        "ecdsa-sig-formatter": "1.0.11",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/jws": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+      "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+      "dependencies": {
+        "jwa": "^1.4.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/kareem": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz",
+      "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==",
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/kleur": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/leven": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "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
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash.includes": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+      "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
+    },
+    "node_modules/lodash.isboolean": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+      "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+    },
+    "node_modules/lodash.isinteger": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+      "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
+    },
+    "node_modules/lodash.isnumber": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+      "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
+    },
+    "node_modules/lodash.isplainobject": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+    },
+    "node_modules/lodash.isstring": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+      "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
+    },
+    "node_modules/lodash.once": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+      "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/make-dir/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/makeerror": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+      "dev": true,
+      "dependencies": {
+        "tmpl": "1.0.5"
+      }
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/memory-pager": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+      "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
+    },
+    "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=="
+    },
+    "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
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minipass": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+      "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minizlib": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+      "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+      "dependencies": {
+        "minipass": "^3.0.0",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/minizlib/node_modules/minipass": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+      "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/minizlib/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
+    "node_modules/mkdirp": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/mongodb": {
+      "version": "5.9.2",
+      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.2.tgz",
+      "integrity": "sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==",
+      "dev": true,
+      "dependencies": {
+        "bson": "^5.5.0",
+        "mongodb-connection-string-url": "^2.6.0",
+        "socks": "^2.7.1"
+      },
+      "engines": {
+        "node": ">=14.20.1"
+      },
+      "optionalDependencies": {
+        "@mongodb-js/saslprep": "^1.1.0"
+      },
+      "peerDependencies": {
+        "@aws-sdk/credential-providers": "^3.188.0",
+        "@mongodb-js/zstd": "^1.0.0",
+        "kerberos": "^1.0.0 || ^2.0.0",
+        "mongodb-client-encryption": ">=2.3.0 <3",
+        "snappy": "^7.2.2"
+      },
+      "peerDependenciesMeta": {
+        "@aws-sdk/credential-providers": {
+          "optional": true
+        },
+        "@mongodb-js/zstd": {
+          "optional": true
+        },
+        "kerberos": {
+          "optional": true
+        },
+        "mongodb-client-encryption": {
+          "optional": true
+        },
+        "snappy": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/mongodb-connection-string-url": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
+      "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/whatwg-url": "^8.2.1",
+        "whatwg-url": "^11.0.0"
+      }
+    },
+    "node_modules/mongodb-memory-server": {
+      "version": "9.1.6",
+      "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-9.1.6.tgz",
+      "integrity": "sha512-gzcpgGYlPhuKmria37W+bvYy6W+OkX2UVG7MoP41OWFvQv2Hn7A+fLXkV+lsMmhog1lMQprdV6AR+gixgheLaw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "mongodb-memory-server-core": "9.1.6",
+        "tslib": "^2.6.2"
+      },
+      "engines": {
+        "node": ">=14.20.1"
+      }
+    },
+    "node_modules/mongodb-memory-server-core": {
+      "version": "9.1.6",
+      "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-9.1.6.tgz",
+      "integrity": "sha512-3H/dq5II+XcSbK80hicMw4zFlDxcpjt4oWJq76RlOVuLoaf3AFqVheR6Vqx9ymlIqER4Jni58FMCIIRbesia1A==",
+      "dev": true,
+      "dependencies": {
+        "async-mutex": "^0.4.0",
+        "camelcase": "^6.3.0",
+        "debug": "^4.3.4",
+        "find-cache-dir": "^3.3.2",
+        "follow-redirects": "^1.15.3",
+        "https-proxy-agent": "^7.0.2",
+        "mongodb": "^5.9.1",
+        "new-find-package-json": "^2.0.0",
+        "semver": "^7.5.4",
+        "tar-stream": "^3.0.0",
+        "tslib": "^2.6.2",
+        "yauzl": "^2.10.0"
+      },
+      "engines": {
+        "node": ">=14.20.1"
+      }
+    },
+    "node_modules/mongodb-memory-server-core/node_modules/agent-base": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
+      "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/mongodb-memory-server-core/node_modules/camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/mongodb-memory-server-core/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/mongodb-memory-server-core/node_modules/https-proxy-agent": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
+      "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+      "dev": true,
+      "dependencies": {
+        "agent-base": "^7.0.2",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/mongodb-memory-server-core/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
+    },
+    "node_modules/mongoose": {
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.0.tgz",
+      "integrity": "sha512-la93n6zCYRbPS+c5N9oTDAktvREy5OT9OCljp1Tah0y3+p8UPMTAoabWaLZMdzYruOtF9/9GRf6MasaZjiZP1A==",
+      "dependencies": {
+        "bson": "^6.2.0",
+        "kareem": "2.5.1",
+        "mongodb": "6.3.0",
+        "mpath": "0.9.0",
+        "mquery": "5.0.0",
+        "ms": "2.1.3",
+        "sift": "16.0.1"
+      },
+      "engines": {
+        "node": ">=16.20.1"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mongoose"
+      }
+    },
+    "node_modules/mongoose/node_modules/@types/whatwg-url": {
+      "version": "11.0.4",
+      "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz",
+      "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==",
+      "dependencies": {
+        "@types/webidl-conversions": "*"
+      }
+    },
+    "node_modules/mongoose/node_modules/bson": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz",
+      "integrity": "sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==",
+      "engines": {
+        "node": ">=16.20.1"
+      }
+    },
+    "node_modules/mongoose/node_modules/mongodb": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.3.0.tgz",
+      "integrity": "sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==",
+      "dependencies": {
+        "@mongodb-js/saslprep": "^1.1.0",
+        "bson": "^6.2.0",
+        "mongodb-connection-string-url": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=16.20.1"
+      },
+      "peerDependencies": {
+        "@aws-sdk/credential-providers": "^3.188.0",
+        "@mongodb-js/zstd": "^1.1.0",
+        "gcp-metadata": "^5.2.0",
+        "kerberos": "^2.0.1",
+        "mongodb-client-encryption": ">=6.0.0 <7",
+        "snappy": "^7.2.2",
+        "socks": "^2.7.1"
+      },
+      "peerDependenciesMeta": {
+        "@aws-sdk/credential-providers": {
+          "optional": true
+        },
+        "@mongodb-js/zstd": {
+          "optional": true
+        },
+        "gcp-metadata": {
+          "optional": true
+        },
+        "kerberos": {
+          "optional": true
+        },
+        "mongodb-client-encryption": {
+          "optional": true
+        },
+        "snappy": {
+          "optional": true
+        },
+        "socks": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/mongoose/node_modules/mongodb-connection-string-url": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz",
+      "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==",
+      "dependencies": {
+        "@types/whatwg-url": "^11.0.2",
+        "whatwg-url": "^13.0.0"
+      }
+    },
+    "node_modules/mongoose/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=="
+    },
+    "node_modules/mongoose/node_modules/tr46": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
+      "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
+      "dependencies": {
+        "punycode": "^2.3.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/mongoose/node_modules/whatwg-url": {
+      "version": "13.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz",
+      "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==",
+      "dependencies": {
+        "tr46": "^4.1.1",
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "node_modules/mpath": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
+      "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/mquery": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
+      "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
+      "dependencies": {
+        "debug": "4.x"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      }
+    },
+    "node_modules/mquery/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/mquery/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=="
+    },
+    "node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/new-find-package-json": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz",
+      "integrity": "sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": ">=12.22.0"
+      }
+    },
+    "node_modules/new-find-package-json/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/new-find-package-json/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
+    },
+    "node_modules/node-addon-api": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
+      "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
+    },
+    "node_modules/node-fetch": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/node-fetch/node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+    },
+    "node_modules/node-fetch/node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+    },
+    "node_modules/node-fetch/node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
+    "node_modules/node-int64": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+      "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+      "dev": true
+    },
+    "node_modules/nopt": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+      "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+      "dependencies": {
+        "abbrev": "1"
+      },
+      "bin": {
+        "nopt": "bin/nopt.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/npmlog": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
+      "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
+      "dependencies": {
+        "are-we-there-yet": "^2.0.0",
+        "console-control-strings": "^1.1.0",
+        "gauge": "^3.0.0",
+        "set-blocking": "^2.0.0"
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+      "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "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==",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-locate/node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "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
+    },
+    "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=="
+    },
+    "node_modules/pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+      "dev": true
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pirates": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+      "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pretty-format": {
+      "version": "29.7.0",
+      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+      "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+      "dev": true,
+      "dependencies": {
+        "@jest/schemas": "^29.6.3",
+        "ansi-styles": "^5.0.0",
+        "react-is": "^18.0.0"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
+    "node_modules/pretty-format/node_modules/ansi-styles": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/prompts": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+      "dev": true,
+      "dependencies": {
+        "kleur": "^3.0.3",
+        "sisteransi": "^1.0.5"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pure-rand": {
+      "version": "6.0.4",
+      "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz",
+      "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/dubzzz"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/fast-check"
+        }
+      ]
+    },
+    "node_modules/qs": {
+      "version": "6.11.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/queue-tick": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+      "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+      "dev": true
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+      "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/react-is": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+      "dev": true
+    },
+    "node_modules/readable-stream": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "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,
+      "dependencies": {
+        "is-core-module": "^2.13.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/resolve-cwd": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+      "dev": true,
+      "dependencies": {
+        "resolve-from": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/resolve.exports": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+      "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "node_modules/semver": {
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+      "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/semver/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/semver/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
+    "node_modules/send": {
+      "version": "0.18.0",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "2.4.1",
+        "range-parser": "~1.2.1",
+        "statuses": "2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "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=="
+    },
+    "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==",
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.18.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
+    "node_modules/set-function-length": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
+      "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
+      "dependencies": {
+        "define-data-property": "^1.1.2",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.3",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz",
+      "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==",
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4",
+        "object-inspect": "^1.13.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/sift": {
+      "version": "16.0.1",
+      "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz",
+      "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+    },
+    "node_modules/sisteransi": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+      "dev": true
+    },
+    "node_modules/slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+      "devOptional": true,
+      "engines": {
+        "node": ">= 6.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "node_modules/socks": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz",
+      "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==",
+      "devOptional": true,
+      "dependencies": {
+        "ip-address": "^9.0.5",
+        "smart-buffer": "^4.2.0"
+      },
+      "engines": {
+        "node": ">= 10.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "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,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.13",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+      "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+      "dev": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/sparse-bitfield": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+      "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+      "dependencies": {
+        "memory-pager": "^1.0.2"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
+    },
+    "node_modules/stack-utils": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+      "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/streamx": {
+      "version": "2.16.1",
+      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz",
+      "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==",
+      "dev": true,
+      "dependencies": {
+        "fast-fifo": "^1.1.0",
+        "queue-tick": "^1.0.1"
+      },
+      "optionalDependencies": {
+        "bare-events": "^2.2.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/string-length": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+      "dev": true,
+      "dependencies": {
+        "char-regex": "^1.0.2",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/superagent": {
+      "version": "8.1.2",
+      "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
+      "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
+      "dev": true,
+      "dependencies": {
+        "component-emitter": "^1.3.0",
+        "cookiejar": "^2.1.4",
+        "debug": "^4.3.4",
+        "fast-safe-stringify": "^2.1.1",
+        "form-data": "^4.0.0",
+        "formidable": "^2.1.2",
+        "methods": "^1.1.2",
+        "mime": "2.6.0",
+        "qs": "^6.11.0",
+        "semver": "^7.3.8"
+      },
+      "engines": {
+        "node": ">=6.4.0 <13 || >=14"
+      }
+    },
+    "node_modules/superagent/node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/superagent/node_modules/mime": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+      "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/superagent/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
+    },
+    "node_modules/supertest": {
+      "version": "6.3.4",
+      "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz",
+      "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==",
+      "dev": true,
+      "dependencies": {
+        "methods": "^1.1.2",
+        "superagent": "^8.1.2"
+      },
+      "engines": {
+        "node": ">=6.4.0"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/tar": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
+      "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+      "dependencies": {
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.0.0",
+        "minipass": "^5.0.0",
+        "minizlib": "^2.1.1",
+        "mkdirp": "^1.0.3",
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/tar-stream": {
+      "version": "3.1.7",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+      "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+      "dev": true,
+      "dependencies": {
+        "b4a": "^1.6.4",
+        "fast-fifo": "^1.2.0",
+        "streamx": "^2.15.0"
+      }
+    },
+    "node_modules/tar/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
+    "node_modules/test-exclude": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+      "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+      "dev": true,
+      "dependencies": {
+        "@istanbuljs/schema": "^0.1.2",
+        "glob": "^7.1.4",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/tmpl": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+      "dev": true
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+      "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+      "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+      "dev": true
+    },
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.21.3",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "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
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.13",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+      "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+    },
+    "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==",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/v8-to-istanbul": {
+      "version": "9.2.0",
+      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz",
+      "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/trace-mapping": "^0.3.12",
+        "@types/istanbul-lib-coverage": "^2.0.1",
+        "convert-source-map": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10.12.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/walker": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+      "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+      "dev": true,
+      "dependencies": {
+        "makeerror": "1.0.12"
+      }
+    },
+    "node_modules/webidl-conversions": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+      "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/whatwg-url": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+      "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+      "dev": true,
+      "dependencies": {
+        "tr46": "^3.0.0",
+        "webidl-conversions": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/wide-align": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+      "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+      "dependencies": {
+        "string-width": "^1.0.2 || 2 || 3 || 4"
+      }
+    },
+    "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,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "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=="
+    },
+    "node_modules/write-file-atomic": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+      "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+      "dev": true,
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^3.0.7"
+      },
+      "engines": {
+        "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true
+    },
+    "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,
+      "dependencies": {
+        "cliui": "^8.0.1",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.3",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^21.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "21.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+      "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+      "dev": true,
+      "dependencies": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    }
+  }
+}
diff --git a/questionservice/package.json b/questionservice/package.json
new file mode 100644
index 0000000..ad9e8d9
--- /dev/null
+++ b/questionservice/package.json
@@ -0,0 +1,32 @@
+{
+  "name": "questionservice",
+  "version": "1.0.0",
+  "description": "Microservicio de generar preguntas",
+  "main": "service.js",
+  "scripts": {
+    "start": "node question-Service.js",
+    "test": "jest"
+},
+"repository": {
+    "type": "git",
+    "url": "git+https://github.com/arquisoft/wiq_0.git"
+},
+"author": "",
+"license": "ISC",
+"bugs": {
+    "url": "https://github.com/arquisoft/wiq_0/issues"
+},
+"homepage": "https://github.com/arquisoft/wiq_0#readme",
+"dependencies": {
+    "bcrypt": "^5.1.1",
+    "body-parser": "^1.20.2",
+    "express": "^4.18.2",
+    "jsonwebtoken": "^9.0.2",
+    "mongoose": "^8.0.4"
+},
+"devDependencies": {
+    "jest": "^29.7.0",
+    "mongodb-memory-server": "^9.1.5",
+    "supertest": "^6.3.4"
+}
+}

From 5d85914471b89a817226495b4cbf88a610d6974a Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:17:10 +0100
Subject: [PATCH 45/61] =?UTF-8?q?A=C3=B1adido=20diagrama=20de=20clases?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Diagrama de clases juego de preguntas.jpg   | Bin 0 -> 14101 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 docs/images/Diagrama de clases juego de preguntas.jpg

diff --git a/docs/images/Diagrama de clases juego de preguntas.jpg b/docs/images/Diagrama de clases juego de preguntas.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..407a109ad23d08291879f348fcea473961b90611
GIT binary patch
literal 14101
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

literal 0
HcmV?d00001


From 3c993568b8789db14e2651ba5d564c3690e4a4fa Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:23:51 +0100
Subject: [PATCH 46/61] Arreglado el documento08.adoc

---
 docs/src/08_concepts.adoc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc
index 23e724c..b4a6b50 100644
--- a/docs/src/08_concepts.adoc
+++ b/docs/src/08_concepts.adoc
@@ -2,18 +2,18 @@ ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-concepts]]
 == Conceptos Transversales
-Estos conceptos todavia no han sido aprobados ni implemenmtados pero dan una idea general al proyecto.
+Estos conceptos todavía no han sido aprobados ni implementados, pero dan una idea general del proyecto.
 
 === Modelo de Dominio
-Esta es una primera version del modelo del dominio muy simple para hacerse una idea como funcionara la aplicacion.
+Esta es una primera versión del modelo de dominio muy simple para hacerse una idea como funcionará la aplicación.
 
+image::Diagrama de clases juego de preguntas.jpg["Modelo de dominio simple provisional"]
 
 
 === Experiencia de Usuario
 
-El usuario sera capaz de interactura con una aplicacion web donde se podra registrar y jugar al juego de manera sencilla.
+El usuario será capaz de interactuar con una aplicación web, donde se podrá registrar y jugar al juego de manera sencilla.
 
-image::08_diagrama_modelo_dominio.png["Modelo de dominio simple provisional"]
 
 === Seguridad
 
@@ -29,4 +29,4 @@ _<explanation>_
 
 === Operaciones
 
-_<explanation>_
\ No newline at end of file
+_<explanation>_

From b942e0fdb5de9f8234e3da4e7ca8361994b58b93 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:34:56 +0100
Subject: [PATCH 47/61] =?UTF-8?q?Mejorado=20estilo=20documentaci=C3=B3n=20?=
 =?UTF-8?q?y=20correcci=C3=B3n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/01_introduction_and_goals.adoc | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index 77d1c1d..01ce2c8 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -1,20 +1,20 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-introduction-and-goals]]
-== Introducción y Ojetivos (wiq_es04c)
+== Introducción y Objetivos (wiq_es04c) 🎇
 
-El proyecto de wiq_es04c es un proyecto desarrollado en la asignatura  Arquitectura del Software. Consiste en la creacion de una aplicacion web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general.
+El proyecto de wiq_es04c es un proyecto desarrollado en la asignatura Arquitectura del Software. Consiste en la creación de una aplicación web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general.
 
 Los desarrolladores de la aplicacion son por David Álvarez Díaz, Zohaib Akhtar Kausar, Sara Lamuño García, Yago Navajas González y Santiago López Laso.
 
-La aplicación tendra su base para las preguntas y las respuestas en Wikidata , la base de conocimiento editada en colaboracion.
+La aplicación tendrá su base para las preguntas y las respuestas en Wikidata, la base de conocimiento editada en colaboración.
 
 
-=== Requisitos Funcionales
+=== Requisitos Funcionales 🛠️
 
 ****
-* Los usuarios se deberan loggear en la página, esto servirá para tener registro de unas serie de parámetros, como puede ser las veces que se ha jugado. 
-* Se podrán responder preguntas autogeneradas y ver si han acertado fallado, así como la respuesta correcta.
+* Los usuarios se deberán loggearse en la página; esto servirá para tener registro de una serie de parámetros, como puede ser las veces que se ha jugado. 
+* Se podrán responder preguntas autogeneradas y se verá si han acertado o fallado, así como la respuesta correcta.
 * Las preguntas deberán ser respondidas en un tiempo límite.
 * Las preguntas seguirán la misma estructura: 1 pregunta correcta y 3 incorrectas, generadas automáticamente.
 * Los usuarios podrán consultar datos sobre su cuentas, como pueden ser las veces que han jugado o el número de preguntas que han acertado o fallado. 
@@ -22,7 +22,7 @@ La aplicación tendra su base para las preguntas y las respuestas en Wikidata ,
 
 ****
 
-=== Atributos de Calidad
+=== Atributos de Calidad 👑
 
 [options="header",cols="1,2,2"]
 |===
@@ -35,7 +35,7 @@ La aplicación tendra su base para las preguntas y las respuestas en Wikidata ,
 |===
 
 
-=== Stakeholders
+=== Stakeholders 👨‍👩‍👦‍👦
 
 [options="header",cols="1,2,2"]
 |===
@@ -45,6 +45,6 @@ David Álvarez Díaz -> UO283196@uniovi.es +
 Zohaib Akhtar Kausar -> UO291060@uniovi.es +
 Sara Lamuño García -> UO283706@uniovi.es +
 Santiago Lopez Laso -> UO277369@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación. Serán los encargados de la arquitectura, la documentación y la codificación.
-| Profesores | Jose Emilio Labra Gayo | Supervisores de los avances y encargados de evaluar la aplicacion final y el desarrollo de la misma.
+| Profesores | Jose Emilio Labra Gayo | Supervisores de los avances y encargados de evaluar la aplicación final y el desarrollo de la misma.
 | Usuario | Jugador de la aplicación | Personas que puedan interactuar tanto con el registro de usuarios como con el juego en sí y pueda completar correctamente una partida.
 |===

From fdff4d2a9cb0edf6feebcdff9e8ab21e60b41b44 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:36:43 +0100
Subject: [PATCH 48/61] =?UTF-8?q?Mejorado=20dise=C3=B1o=20documentaci?=
 =?UTF-8?q?=C3=B3n=2002?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/02_architecture_constraints.adoc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/src/02_architecture_constraints.adoc b/docs/src/02_architecture_constraints.adoc
index 4c16bef..0cd13f5 100644
--- a/docs/src/02_architecture_constraints.adoc
+++ b/docs/src/02_architecture_constraints.adoc
@@ -1,12 +1,12 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-architecture-constraints]]
-== Restricciones de arquitectura
+== Restricciones de arquitectura ⛔
 .Restricciones
 [options="header",cols="1,2"]
 |===
 |Restricción|Descripción
-|Wikidata|Se usará la API de WIkidata para generar las preguntas automáticamente.
+|Wikidata|Se usará la API de Wikidata para generar las preguntas automáticamente.
 |Git|Control de versiones del proyecto. 
 |GitHub|Portal donde se guardará el código fuente del proyecto.
-|===
\ No newline at end of file
+|===

From 69cdca4bd5af5773a9c7d3df52450d411873038f Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:40:06 +0100
Subject: [PATCH 49/61] =?UTF-8?q?Mejorado=20dise=C3=B1o=20documentaci?=
 =?UTF-8?q?=C3=B3n=2003?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/03_system_scope_and_context.adoc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/src/03_system_scope_and_context.adoc b/docs/src/03_system_scope_and_context.adoc
index ca6d7da..19d74c5 100644
--- a/docs/src/03_system_scope_and_context.adoc
+++ b/docs/src/03_system_scope_and_context.adoc
@@ -1,9 +1,9 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-system-scope-and-context]]
-== System Scope and Context
+== System Scope and Context 💭
 
-=== Contexto de negocio
+=== Contexto de negocio 💰
 En esta tabla se muestra el contexto de negocio de la aplicación. Las entradas son los mensajes que van desde el agente externo hacia la aplicación, y las salidas son los mensajes que van desde la aplicación hacia al agente externo.
 [options="header",cols="1,2,3"]
 |===
@@ -12,6 +12,6 @@ En esta tabla se muestra el contexto de negocio de la aplicación. Las entradas
 |Wikidata|Ítems(elementos) de Wikidata|Petición a la API de Wikidata
 |===
 
-=== Contexto técnico
+=== Contexto técnico 🔧
 
-image::diagrama_contexto_tecnico.drawio.png["Diagrama de contexto técnico"]
\ No newline at end of file
+image::diagrama_contexto_tecnico.drawio.png["Diagrama de contexto técnico"]

From f62b46d031d03d678abfd0e9aacd3b675aee2d09 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:45:24 +0100
Subject: [PATCH 50/61] =?UTF-8?q?Mejorado=20estilo=20documentaci=C3=B3n=20?=
 =?UTF-8?q?04?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/04_solution_strategy.adoc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc
index 7362990..0eda79e 100644
--- a/docs/src/04_solution_strategy.adoc
+++ b/docs/src/04_solution_strategy.adoc
@@ -1,9 +1,9 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-solution-strategy]]
-== Solution Strategy
+== Solution Strategy 📚
 
-Decisiones tecnológicas
+Decisiones tecnológicas 💻
 
 Hemos decidido realizar la parte de Front-End con React y la parte de Back-End con la estructura de los microservicios. 
 El despliegue se realizará a través de una máquina virtual de Azure, con ayuda de Docker y GitHub Actions.
@@ -44,7 +44,7 @@ Decisiones de cómo llegar a las metas principales (En desarrollo):
 
 
 
-Decisiones organizativas
+Decisiones organizativas 👥
 
 En la primera semana nos hemos dividido en dos equipos con el objetivo de tocar todas las partes del proyecto. La estructura de los equipos es la siguiente:
 

From fc7e58ee9b3090f46748029e6793591ca474a9d1 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:48:24 +0100
Subject: [PATCH 51/61] =?UTF-8?q?Arreglado=20fallos=20en=20documentaci?=
 =?UTF-8?q?=C3=B3n=2005?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/05_building_block_view.adoc | 38 ++--------------------------
 1 file changed, 2 insertions(+), 36 deletions(-)

diff --git a/docs/src/05_building_block_view.adoc b/docs/src/05_building_block_view.adoc
index 7020c23..f45bc48 100644
--- a/docs/src/05_building_block_view.adoc
+++ b/docs/src/05_building_block_view.adoc
@@ -3,45 +3,11 @@ ifndef::imagesdir[:imagesdir: ../images]
 [[section-building-block-view]]
 
 
-== Building Block View  EN desarollo 
+== Building Block View  EN desarollo 🗳️
 image::whiteBoxGeneral.png[]
 
-[role="arc42help"]
-****
-.Content
-The building block view shows the static decomposition of the system into building blocks (modules, components, subsystems, classes, interfaces, packages, libraries, frameworks, layers, partitions, tiers, functions, macros, operations, data structures, ...) as well as their dependencies (relationships, associations, ...)
-
-This view is mandatory for every architecture documentation.
-In analogy to a house this is the _floor plan_.
-
-.Motivation
-Maintain an overview of your source code by making its structure understandable through
-abstraction.
-
-This allows you to communicate with your stakeholder on an abstract level without disclosing implementation details.
-
-.Form
-The building block view is a hierarchical collection of black boxes and white boxes
-(see figure below) and their descriptions.
-
-image::05_building_blocks-EN.png["Hierarchy of building blocks"]
-
-*Level 1* is the white box description of the overall system together with black
-box descriptions of all contained building blocks.
-
-*Level 2* zooms into some building blocks of level 1.
-Thus it contains the white box description of selected building blocks of level 1, together with black box descriptions of their internal building blocks.
-
-*Level 3* zooms into selected building blocks of level 2, and so on.
-
-
-.Further Information
-
-See https://docs.arc42.org/section-5/[Building Block View] in the arc42 documentation.
-
-****
 
-=== Whitebox Overall System
+=== Whitebox Overall System 📏
 image::whiteLevel1.png[]
 
 [role="arc42help"]

From e8e190a08c2b7165641883f816efdab6b3bc6179 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 12:51:13 +0100
Subject: [PATCH 52/61] Mejorado estilo documentacion 06

---
 docs/src/06_runtime_view.adoc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc
index 14fce42..428c411 100644
--- a/docs/src/06_runtime_view.adoc
+++ b/docs/src/06_runtime_view.adoc
@@ -1,10 +1,10 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-runtime-view]]
-== Runtime View
+== Runtime View 📽️
 
 
-=== <Runtime Scenario 1>
+=== <Runtime Scenario 1> 1️⃣
 
 [plantuml,"Sequence diagram",png]
 ----
@@ -32,7 +32,7 @@ system -> juego: generar siguiente pregunta/respuestas
 Diagrama de secuencia con plantuml (se contempla sólo el uso correcto de la aplicación)
 
 
-=== <Runtime Scenario 2>
+=== <Runtime Scenario 2> 2️⃣
 
  -> Diagrama de secuencia                                                                                                          
  -> Descripción: diagrama de los usos básicos en la aplicación, como inicio de sesión, empezar a jugar y contestar las preguntas.  
@@ -43,7 +43,7 @@ Diagrama de secuencia con plantuml (se contempla sólo el uso correcto de la apl
 
 image::Digrama de secuencia Juego de preguntas.jpg["Diagrama de secuencia"]
 
-=== <Runtime Scenario 3>
+=== <Runtime Scenario 3> 3️⃣
 
  -> Diagrama de casos de uso                                                                                                        
  -> Descripción: diagrama básico de los distintos casos de uso que hay en el proyecto                                               

From 0a715eb2ae96cd0a1c99cb81bbb7c29a2d041d4b Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 22:54:51 +0100
Subject: [PATCH 53/61] =?UTF-8?q?Mejorado=20estilo=20y=20errores=20documen?=
 =?UTF-8?q?taci=C3=B3n=2007?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/07_deployment_view.adoc | 69 +++++++++-----------------------
 1 file changed, 18 insertions(+), 51 deletions(-)

diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc
index 5480718..dc8d8b6 100644
--- a/docs/src/07_deployment_view.adoc
+++ b/docs/src/07_deployment_view.adoc
@@ -3,46 +3,12 @@ ifndef::imagesdir[:imagesdir: ../images]
 [[section-deployment-view]]
 
 
-== Deployment View
+== Deployment View 👀
 
-[role="arc42help"]
-****
-.Content
-The deployment view describes:
-
- 1. technical infrastructure used to execute your system, with infrastructure elements like geographical locations, environments, computers, processors, channels and net topologies as well as other infrastructure elements and
-
-2. mapping of (software) building blocks to that infrastructure elements.
-
-Often systems are executed in different environments, e.g. development environment, test environment, production environment. In such cases you should document all relevant environments.
-
-Especially document a deployment view if your software is executed as distributed system with more than one computer, processor, server or container or when you design and construct your own hardware processors and chips.
-
-From a software perspective it is sufficient to capture only those elements of an infrastructure that are needed to show a deployment of your building blocks. Hardware architects can go beyond that and describe an infrastructure to any level of detail they need to capture.
-
-.Motivation
-Software does not run without hardware.
-This underlying infrastructure can and will influence a system and/or some
-cross-cutting concepts. Therefore, there is a need to know the infrastructure.
 
-.Form
+=== Infrastructure Level 1 ☝️
 
-Maybe a highest level deployment diagram is already contained in section 3.2. as
-technical context with your own infrastructure as ONE black box. In this section one can
-zoom into this black box using additional deployment diagrams:
-
-* UML offers deployment diagrams to express that view. Use it, probably with nested diagrams,
-when your infrastructure is more complex.
-* When your (hardware) stakeholders prefer other kinds of diagrams rather than a deployment diagram, let them use any kind that is able to show nodes and channels of the infrastructure.
-
-
-.Further Information
-
-See https://docs.arc42.org/section-7/[Deployment View] in the arc42 documentation.
-
-****
-
-=== Infrastructure Level 1
+EN DESARROLLO.
 
 [role="arc42help"]
 ****
@@ -56,34 +22,35 @@ Describe (usually in a combination of diagrams, tables, and text):
 For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments.
 ****
 
-_**<Overview Diagram>**_
-ESTO SE HARA MAS ADELANTE 
+_**<Overview Diagram>**_ 🎀
+
+EN DESARROLLO.
 
-Motivation::
+Motivation:: 🤩
 
-1. Disponibilidad: se busca una aplicacion que sea capaz de prestar servicio de manera continuada, con resistencia a fallos.
-2. Eficiencia:Se busca una aplicacion que ofreza un rendimiento optimo para la generacion de preguntas desde dispositivos con pocas capacidades.
-3. Cumplimiento de Requisitos Regulatorios:El uso de Wikidata como fuente de datos en nuestra aplicación está respaldado por la necesidad de cumplir con requisitos regulatorios y normativos específicos. Esta elección se basa en las siguientes consideraciones:
+1. Disponibilidad: Se busca una aplicación que sea capaz de prestar servicio de manera continuada, con resistencia a fallos.
+2. Eficiencia: Se busca una aplicación que ofreza un rendimiento óptimo para la generación de preguntas desde dispositivos con pocas capacidades.
+3. Cumplimiento de Requisitos Regulatorios: El uso de Wikidata como fuente de datos en nuestra aplicación está respaldado por la necesidad de cumplir con requisitos regulatorios y normativos específicos. Esta elección se basa en las siguientes consideraciones:
 
 
 
-Quality and/or Performance Features::
+Quality and/or Performance Features:: 🎉
 
-1.Rencimiento:se busca que la aplicacion tenga un rendimiento optimo en dispositivos mobiles y tablets.
-2.Adaptabilidad: la aplicacion tiene que ser adaptable en diferentes dispositivos para asi poder garantizar su uso .
+1.Rendimiento: Se busca que la aplicación tenga un rendimiento óptimo en dispositivos móviles y tablets.
+2.Adaptabilidad: La aplicación tiene que ser adaptable en diferentes dispositivos para así poder garantizar su uso.
 
 
 
 
-Se hara mas adelante 
+EN DESARROLLO.
 
-Mapping of Building Blocks to Infrastructure::
+Mapping of Building Blocks to Infrastructure:: 📜
 
-SE HARA MAS ADELANTE 
+EN DESARROLLO.
 _<description of the mapping>_
 
 
-=== Infrastructure Level 2
+=== Infrastructure Level 2 ☝️
 
 [role="arc42help"]
 ****
@@ -92,7 +59,7 @@ Here you can include the internal structure of (some) infrastructure elements fr
 Please copy the structure from level 1 for each selected element.
 ****
 
-SE HARA MAS ADELANTE 
+EN DESARROLLO.
 
 
 ==== _<Infrastructure Element 1>_

From 15e400d52b63fb9523f2e068045dc4ab6f95542d Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 23:00:11 +0100
Subject: [PATCH 54/61] Mejorado estilo documento 08

---
 docs/src/08_concepts.adoc | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc
index b4a6b50..e7e9ae2 100644
--- a/docs/src/08_concepts.adoc
+++ b/docs/src/08_concepts.adoc
@@ -1,32 +1,32 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-concepts]]
-== Conceptos Transversales
+== Conceptos Transversales 🧭
 Estos conceptos todavía no han sido aprobados ni implementados, pero dan una idea general del proyecto.
 
-=== Modelo de Dominio
-Esta es una primera versión del modelo de dominio muy simple para hacerse una idea como funcionará la aplicación.
+=== Modelo de Dominio 🗺️
+Esta es una primera versión del modelo de dominio muy simple, para hacerse una idea como funcionará la aplicación.
 
 image::Diagrama de clases juego de preguntas.jpg["Modelo de dominio simple provisional"]
 
 
-=== Experiencia de Usuario
+=== Experiencia de Usuario 👨‍🦰
 
 El usuario será capaz de interactuar con una aplicación web, donde se podrá registrar y jugar al juego de manera sencilla.
 
 
-=== Seguridad
+=== Seguridad 🔒
 
 _<explanation>_
 
-=== Arquitectura y Patrones de Diseño
+=== Arquitectura y Patrones de Diseño 📒
 
 _<explanation>_
 
-=== Desarrollo
+=== Desarrollo ⚙️
 
 _<explanation>_
 
-=== Operaciones
+=== Operaciones 🔢
 
 _<explanation>_

From 231f2ec41c1b9afed34c512bf4baba24eaeb7c8e Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 23:00:47 +0100
Subject: [PATCH 55/61] =?UTF-8?q?Mejorado=20estilo=20documentaci=C3=B3n=20?=
 =?UTF-8?q?09?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/09_architecture_decisions.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc
index 2640737..4b56236 100644
--- a/docs/src/09_architecture_decisions.adoc
+++ b/docs/src/09_architecture_decisions.adoc
@@ -1,7 +1,7 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-design-decisions]]
-== Decisiones de Arquitectura
+== Decisiones de Arquitectura 🗣️
 
 |===
 | Decisión | Ventajas | Inconvenientes

From 949b2234d2c05eb65aacf0495955594d887bc270 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 23:05:10 +0100
Subject: [PATCH 56/61] Mejorado estilo documento 10

---
 docs/src/10_quality_requirements.adoc | 40 +++++++++++++--------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc
index 32e96a1..57811a0 100644
--- a/docs/src/10_quality_requirements.adoc
+++ b/docs/src/10_quality_requirements.adoc
@@ -4,39 +4,39 @@ ifndef::imagesdir[:imagesdir: ../images]
 
 === Árbol de Calidad 🌳
 
-El árbol de calidad se organiza con "calidad" como raíz, desglosándose en varias ramas principales que representan categorías de calidad relevantes para el proyecto WIQ. Estas ramas incluyen:
+El árbol de calidad se organiza con "calidad" como raíz, desglosándose en varias ramas principales, que representan categorías de calidad relevantes para el proyecto WIQ. Estas ramas incluyen:
 
-- *Usabilidad* 💡: Se refiere a la facilidad con la que los usuarios pueden utilizar un sistema para alcanzar sus objetivos de manera eficiente y satisfactoria. La usabilidad implica interfaces intuitivas, accesibilidad y una experiencia de usuario agradable.
-- *Rendimiento* ⚡: Evalúa la eficiencia del sistema en términos de velocidad de respuesta, consumo de recursos y escalabilidad. Un buen rendimiento asegura que el sistema puede manejar cargas de trabajo elevadas con tiempos de respuesta rápidos.
-- *Seguridad* 🔒: Implica proteger la información y los sistemas contra accesos no autorizados, divulgación, alteración o destrucción, garantizando la confidencialidad, integridad y disponibilidad de los datos.
-- *Fiabilidad* 🛡️: La capacidad del sistema de funcionar correctamente y sin fallos durante un período determinado bajo condiciones específicas. La fiabilidad se centra en la consistencia del rendimiento y la prevención de fallos.
-- *Mantenibilidad* 🔧: Se refiere a la facilidad con la que un sistema puede ser modificado para corregir fallos, mejorar su funcionamiento o adaptarse a un entorno cambiante. Una alta mantenibilidad facilita las actualizaciones y reduce los costos a largo plazo.
-- *Portabilidad 🌍*: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
+- *Usabilidad*: Se refiere a la facilidad con la que los usuarios pueden utilizar un sistema para alcanzar sus objetivos de manera eficiente y satisfactoria. La usabilidad implica interfaces intuitivas, accesibilidad y una experiencia de usuario agradable.
+- *Rendimiento*: Evalúa la eficiencia del sistema en términos de velocidad de respuesta, consumo de recursos y escalabilidad. Un buen rendimiento asegura que el sistema puede manejar cargas de trabajo elevadas con tiempos de respuesta rápidos.
+- *Seguridad*: Implica proteger la información y los sistemas contra accesos no autorizados, divulgación, alteración o destrucción, garantizando la confidencialidad, integridad y disponibilidad de los datos.
+- *Fiabilidad*: La capacidad del sistema de funcionar correctamente y sin fallos durante un período determinado bajo condiciones específicas. La fiabilidad se centra en la consistencia del rendimiento y la prevención de fallos.
+- *Mantenibilidad*: Se refiere a la facilidad con la que un sistema puede ser modificado para corregir fallos, mejorar su funcionamiento o adaptarse a un entorno cambiante. Una alta mantenibilidad facilita las actualizaciones y reduce los costos a largo plazo.
+- *Portabilidad*: La capacidad de un sistema para ser utilizado en diferentes entornos operativos con mínimas modificaciones. La portabilidad permite que el software sea compatible con diversos dispositivos, sistemas operativos o navegadores web.
 
 image::10_Arbol_de_calidad.jpg[Árbol de Calidad,align="center"]
 
-=== Escenarios de Calidad
+=== Escenarios de Calidad 🕹️
 
-==== Usabilidad 💡
+==== Usabilidad 
 
-- *Escenario*: Un nuevo usuario puede registrarse e iniciar a jugar en menos de 5 minutos después de su primer acceso al sitio web. La interfaz intuitiva y la guía de inicio rápido facilitan este proceso. 🚀
+- *Escenario*: Un nuevo usuario puede registrarse e iniciar a jugar en menos de 5 minutos después de su primer acceso al sitio web. La interfaz intuitiva y la guía de inicio rápido facilitan este proceso. 
 
-==== Rendimiento ⚡
+==== Rendimiento 
 
-- *Escenario*: El sistema responde a las solicitudes de los usuarios en menos de 2 segundos bajo condiciones normales de carga, asegurando una experiencia de juego fluida. 🏎️
+- *Escenario*: El sistema responde a las solicitudes de los usuarios en menos de 2 segundos bajo condiciones normales de carga, asegurando una experiencia de juego fluida. 
 
-==== Seguridad 🔒
+==== Seguridad 
 
-- *Escenario*: Todos los datos personales de los usuarios están cifrados tanto en tránsito como en reposo, utilizando estándares de seguridad actuales para prevenir accesos no autorizados. 🔐
+- *Escenario*: Todos los datos personales de los usuarios están cifrados tanto en tránsito como en reposo, utilizando estándares de seguridad actuales para prevenir accesos no autorizados. 
 
-==== Mantenibilidad 🔧
+==== Mantenibilidad 
 
-- *Escenario*: El sistema permite la adición de nuevas funcionalidades (como tipos de preguntas o temáticas) sin necesidad de una reestructuración mayor, promoviendo una arquitectura modular. 🛠️
+- *Escenario*: El sistema permite la adición de nuevas funcionalidades (como tipos de preguntas o temáticas) sin necesidad de una reestructuración mayor, promoviendo una arquitectura modular.
 
-==== Fiabilidad 🛡️
+==== Fiabilidad 
 
-- *Escenario*: En caso de fallo del sistema, este debe ser capaz de recuperarse y volver a estar operativo en menos de 5 minutos, garantizando una alta disponibilidad. 🔄
+- *Escenario*: En caso de fallo del sistema, este debe ser capaz de recuperarse y volver a estar operativo en menos de 5 minutos, garantizando una alta disponibilidad.
 
-==== Portabilidad 🌍
+==== Portabilidad
 
-- *Escenario*: La aplicación web es compatible con los navegadores web más utilizados (Chrome, Firefox, Safari, Edge) en sus últimas dos versiones principales, asegurando un amplio acceso. 🌐
\ No newline at end of file
+- *Escenario*: La aplicación web es compatible con los navegadores web más utilizados (Chrome, Firefox, Safari, Edge) en sus últimas dos versiones principales, asegurando un amplio acceso.

From 3c82cd8681bdb5c2d7d9235e4c7604c5e52f0099 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 23:06:04 +0100
Subject: [PATCH 57/61] Mejora estilo documento 12

---
 docs/src/12_glossary.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc
index a412537..72371c4 100644
--- a/docs/src/12_glossary.adoc
+++ b/docs/src/12_glossary.adoc
@@ -1,7 +1,7 @@
 ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-glossary]]
-== Glossary
+== Glossary ⁉️
 
 
 [cols="e,2e" options="header"]

From 621ec985affeb80f065c077af66179ba93a12192 Mon Sep 17 00:00:00 2001
From: SaraLG <145345951+Etihw32@users.noreply.github.com>
Date: Wed, 28 Feb 2024 23:06:44 +0100
Subject: [PATCH 58/61] Mejorado estilo documento 11

---
 docs/src/11_technical_risks.adoc | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc
index a287e26..af5b852 100644
--- a/docs/src/11_technical_risks.adoc
+++ b/docs/src/11_technical_risks.adoc
@@ -5,13 +5,13 @@
 [width="100%",options="header",cols="^,^"]
 |======================
 | Riesgo | Descripción
-| Tiempo de entrega ⏳ | Estamos limitados por el plazo de entrega y también por el tiempo que dedicaremos a trabajar en otras asignaturas.
-| Proyecto grande y equipo grande 👥 | La coordinación y comunicación en un equipo grande pueden ser desafiantes. 
-| Diseño inadecuado o enfoque incorrecto 🎨 | La presencia de errores en etapas tempranas puede ser devastadora, ya que estas son cruciales. Un mal diseño detectado en etapas avanzadas podría ser irreparable, subrayando la importancia de una planificación y visión previsoras.
-| Falta de familiaridad con las tecnologías 🔧 | El equipo comienza con conocimiento limitado sobre las herramientas necesarias, lo que puede resultar en un uso subóptimo de estas.
-| Errores de implementación 🚨 | Errores no críticos en la lógica de negocio pueden permanecer ocultos por largo tiempo, afectando la calidad del sistema.
-| Comunicación deficiente entre miembros 📢 | Las diferencias y desacuerdos pueden obstaculizar la colaboración efectiva, esencial para el éxito del equipo. 
-| Distribución desigual del trabajo ⚖️ | Una asignación desequilibrada puede sobrecargar a algunos miembros mientras deja a otros con menos responsabilidades.
-| Reducción del tamaño del equipo 👥 | La salida inesperada de miembros puede desafiar la continuidad y el avance del proyecto, requiriendo adaptaciones rápidas y eficientes.
+| Tiempo de entrega | Estamos limitados por el plazo de entrega y también por el tiempo que dedicaremos a trabajar en otras asignaturas.
+| Proyecto grande y equipo grande | La coordinación y comunicación en un equipo grande pueden ser desafiantes. 
+| Diseño inadecuado o enfoque incorrecto | La presencia de errores en etapas tempranas puede ser devastadora, ya que estas son cruciales. Un mal diseño detectado en etapas avanzadas podría ser irreparable, subrayando la importancia de una planificación y visión previsoras.
+| Falta de familiaridad con las tecnologías | El equipo comienza con conocimiento limitado sobre las herramientas necesarias, lo que puede resultar en un uso subóptimo de estas.
+| Errores de implementación | Errores no críticos en la lógica de negocio pueden permanecer ocultos por largo tiempo, afectando la calidad del sistema.
+| Comunicación deficiente entre miembros | Las diferencias y desacuerdos pueden obstaculizar la colaboración efectiva, esencial para el éxito del equipo. 
+| Distribución desigual del trabajo | Una asignación desequilibrada puede sobrecargar a algunos miembros mientras deja a otros con menos responsabilidades.
+| Reducción del tamaño del equipo | La salida inesperada de miembros puede desafiar la continuidad y el avance del proyecto, requiriendo adaptaciones rápidas y eficientes.
 
 |======================

From f1a2b17f17625a72e3bc3734b750094ce0363f37 Mon Sep 17 00:00:00 2001
From: yagonavajas <uo287746@uniovi.es>
Date: Thu, 29 Feb 2024 16:28:35 +0100
Subject: [PATCH 59/61] Doc 1 acabado

---
 docs/src/01_introduction_and_goals.adoc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc
index 01ce2c8..b8066c2 100644
--- a/docs/src/01_introduction_and_goals.adoc
+++ b/docs/src/01_introduction_and_goals.adoc
@@ -47,4 +47,6 @@ Sara Lamuño García -> UO283706@uniovi.es +
 Santiago Lopez Laso -> UO277369@uniovi.es | Los estudiantes que llevarán a cabo el desarrollo de la aplicación. Serán los encargados de la arquitectura, la documentación y la codificación.
 | Profesores | Jose Emilio Labra Gayo | Supervisores de los avances y encargados de evaluar la aplicación final y el desarrollo de la misma.
 | Usuario | Jugador de la aplicación | Personas que puedan interactuar tanto con el registro de usuarios como con el juego en sí y pueda completar correctamente una partida.
+| HappySw | Empresa responsable | Empresa contratada, cuyo trabajo sera el desarrollo del juego de la mano del equipo de desarrollo.
+| RTVE | Empleador | Interesados en la creacion del juego e impulsores de su creacion.
 |===

From 589f0bcafe695611764903f82d97cdf6d8d05512 Mon Sep 17 00:00:00 2001
From: yagonavajas <uo287746@uniovi.es>
Date: Thu, 29 Feb 2024 16:35:04 +0100
Subject: [PATCH 60/61] =?UTF-8?q?Cambiada=20la=20presentacion=20de=20doc?=
 =?UTF-8?q?=209=20sin=20a=C3=B1adir=20las=20decisiones?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/src/09_architecture_decisions.adoc | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc
index 4b56236..9def3a8 100644
--- a/docs/src/09_architecture_decisions.adoc
+++ b/docs/src/09_architecture_decisions.adoc
@@ -2,10 +2,7 @@ ifndef::imagesdir[:imagesdir: ../images]
 
 [[section-design-decisions]]
 == Decisiones de Arquitectura 🗣️
+Los enlaces proporcionan las decisiones de aquitectura via GitHub.
 
-|===
-| Decisión | Ventajas | Inconvenientes
-| JavaScript / React | La base de la aplicación ya esta creada con este lenguaje y lo para la creación de sitios web es un versatil. | La baja o nula esperiencia con el lenguaje de algunos integrantes del grupo asi como sus limitaciones tecninas.
-| Microservicios | La aplicacion se podra dividir en problemas que se podran solucionar dandole diferentes enfoques con diferentes lenguajes y metodologias. | AL igual que el primer punto, la baja experiencia con esta forma de trabajo al cual se tendra que adaptar el grupo.
-| MongoDB | Parte de la implementacion ya está hecha. Por otra parte es de uso libre y existe bastante documentacion online para usarse correctamente | Al igual que los dos puntos anteriores, el grupo cuenta con poca experiencia usando esta tecnología y no somos concientes de todas sus limitaciones y fortalezas.
-|===
+* Enlace: Decision...
+* Enlace: Decision...
\ No newline at end of file

From 5c350ccb57c703a45c32fba5cceb566da505c1b1 Mon Sep 17 00:00:00 2001
From: Santiago21112001 <minesanti2001@gmail.com>
Date: Fri, 1 Mar 2024 11:20:06 +0100
Subject: [PATCH 61/61] Bloquear botones mientras se pide otra pregunta

---
 webapp/src/components/game/Game.js | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/webapp/src/components/game/Game.js b/webapp/src/components/game/Game.js
index 18acaf4..0644228 100644
--- a/webapp/src/components/game/Game.js
+++ b/webapp/src/components/game/Game.js
@@ -12,6 +12,7 @@ const Game = () => {
 
     const [question, setQuestion] = useState('');
     const [answers, setAnswers] = useState([]);
+    const [loadingMessage, setLoadingMessage] = useState('');
     const [snackbarOpen, setSnackbarOpen] = useState(false);
     const [snackbarMessage, setSnackbarMessage] = useState('');
     const [snackbarSeverity, setSnackbarSeverity] = useState('success');
@@ -26,6 +27,9 @@ const Game = () => {
         if (correct) {
             setSnackbarMessage('Respuesta correcta');
             setSnackbarSeverity('success');
+            setQuestion('');
+            setAnswers([]);
+            setLoadingMessage('Generando próxima pregunta');
             fetchQuestionAndAnswers();
         } else {
             setSnackbarMessage('Respuesta incorrecta');
@@ -41,6 +45,7 @@ const Game = () => {
             // Almacena la pregunta y las respuestas en los estado.
             setQuestion(response.data.question);
             setAnswers(response.data.answers);
+            setLoadingMessage('');
             // setQuestion(exampleData.question);
             // setAnswers(exampleData.answers);
         } catch (error) {
@@ -60,6 +65,7 @@ const Game = () => {
                     Generate Question
                 </Button>
             </Box>
+            {loadingMessage && (<Typography variant="h2">{loadingMessage}</Typography>)}
             {/* Muestra la pregunta y las respuesta si existen */}
             {question && (
                 <Paper elevation={3} sx={{ p: 2, mb: 2 }}>