solace-agent-mesh 1.6.1__py3-none-any.whl → 1.13.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of solace-agent-mesh might be problematic. Click here for more details.

Files changed (481) hide show
  1. solace_agent_mesh/agent/adk/alembic/README +74 -0
  2. solace_agent_mesh/agent/adk/alembic/env.py +77 -0
  3. solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
  4. solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
  5. solace_agent_mesh/agent/adk/alembic.ini +112 -0
  6. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  7. solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +165 -1
  8. solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
  9. solace_agent_mesh/agent/adk/callbacks.py +852 -109
  10. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +234 -36
  11. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
  12. solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
  13. solace_agent_mesh/agent/adk/models/lite_llm.py +77 -21
  14. solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
  15. solace_agent_mesh/agent/adk/runner.py +85 -20
  16. solace_agent_mesh/agent/adk/schema_migration.py +88 -0
  17. solace_agent_mesh/agent/adk/services.py +94 -18
  18. solace_agent_mesh/agent/adk/setup.py +281 -65
  19. solace_agent_mesh/agent/adk/stream_parser.py +231 -37
  20. solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
  21. solace_agent_mesh/agent/protocol/event_handlers.py +472 -137
  22. solace_agent_mesh/agent/proxies/a2a/app.py +3 -2
  23. solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
  24. solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
  25. solace_agent_mesh/agent/proxies/base/app.py +3 -2
  26. solace_agent_mesh/agent/proxies/base/component.py +188 -22
  27. solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
  28. solace_agent_mesh/agent/sac/app.py +91 -3
  29. solace_agent_mesh/agent/sac/component.py +591 -157
  30. solace_agent_mesh/agent/sac/patch_adk.py +8 -16
  31. solace_agent_mesh/agent/sac/task_execution_context.py +146 -4
  32. solace_agent_mesh/agent/tools/__init__.py +3 -0
  33. solace_agent_mesh/agent/tools/audio_tools.py +3 -3
  34. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +710 -171
  35. solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
  36. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
  37. solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
  38. solace_agent_mesh/agent/tools/time_tools.py +126 -0
  39. solace_agent_mesh/agent/tools/tool_config_types.py +57 -2
  40. solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
  41. solace_agent_mesh/agent/tools/web_tools.py +125 -17
  42. solace_agent_mesh/agent/utils/artifact_helpers.py +248 -6
  43. solace_agent_mesh/agent/utils/context_helpers.py +17 -0
  44. solace_agent_mesh/assets/docs/404.html +6 -6
  45. solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
  46. solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
  51. solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -0
  52. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/3ac1795d.7f7ab1c1.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
  62. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/81a99df0.7ed65d45.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/f284c35a.cc97854c.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
  103. solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
  104. solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
  105. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
  106. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
  107. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
  108. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
  109. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +82 -68
  110. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  111. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +67 -50
  112. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
  114. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
  115. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
  116. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
  117. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  118. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +45 -45
  119. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
  120. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
  121. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +208 -125
  122. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
  123. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -49
  124. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -30
  125. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
  126. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
  127. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  128. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +90 -0
  129. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -16
  130. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
  131. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +38 -38
  132. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +162 -171
  133. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
  134. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
  135. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
  136. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
  137. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
  138. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
  139. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
  140. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
  141. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
  142. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
  143. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
  144. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
  145. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
  146. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
  147. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +23 -19
  151. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
  152. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +112 -87
  154. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +87 -64
  156. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +44 -44
  158. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -37
  159. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
  160. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
  161. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +311 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +39 -42
  164. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
  165. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
  166. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
  167. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
  168. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
  169. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
  170. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +42 -42
  171. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
  172. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  173. solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
  174. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  175. solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
  176. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  177. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  178. solace_agent_mesh/cli/__init__.py +1 -1
  179. solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
  180. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
  181. solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
  182. solace_agent_mesh/cli/commands/docs_cmd.py +4 -1
  183. solace_agent_mesh/cli/commands/eval_cmd.py +1 -1
  184. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  185. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  186. solace_agent_mesh/cli/commands/init_cmd/env_step.py +30 -3
  187. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
  188. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  189. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
  190. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
  191. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
  192. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
  193. solace_agent_mesh/cli/commands/run_cmd.py +64 -49
  194. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  195. solace_agent_mesh/cli/main.py +15 -0
  196. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-BTf6dqwp.js → authCallback-KnKMP_vb.js} +1 -1
  197. solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
  198. solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
  199. solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
  200. solace_agent_mesh/client/webui/frontend/static/assets/vendor-CGk8Suyh.js +565 -0
  201. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  202. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  203. solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
  204. solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
  205. solace_agent_mesh/common/a2a/events.py +2 -1
  206. solace_agent_mesh/common/a2a/protocol.py +5 -0
  207. solace_agent_mesh/common/a2a/types.py +2 -1
  208. solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
  209. solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
  210. solace_agent_mesh/common/agent_registry.py +38 -11
  211. solace_agent_mesh/common/data_parts.py +144 -4
  212. solace_agent_mesh/common/error_handlers.py +83 -0
  213. solace_agent_mesh/common/exceptions.py +24 -0
  214. solace_agent_mesh/common/oauth/__init__.py +17 -0
  215. solace_agent_mesh/common/oauth/oauth_client.py +408 -0
  216. solace_agent_mesh/common/oauth/utils.py +50 -0
  217. solace_agent_mesh/common/rag_dto.py +156 -0
  218. solace_agent_mesh/common/sac/sam_component_base.py +97 -19
  219. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  220. solace_agent_mesh/common/services/employee_service.py +1 -1
  221. solace_agent_mesh/common/utils/embeds/constants.py +1 -0
  222. solace_agent_mesh/common/utils/embeds/converter.py +1 -8
  223. solace_agent_mesh/common/utils/embeds/modifiers.py +4 -28
  224. solace_agent_mesh/common/utils/embeds/resolver.py +152 -31
  225. solace_agent_mesh/common/utils/embeds/types.py +9 -0
  226. solace_agent_mesh/common/utils/log_formatters.py +20 -0
  227. solace_agent_mesh/common/utils/mime_helpers.py +12 -5
  228. solace_agent_mesh/common/utils/pydantic_utils.py +90 -3
  229. solace_agent_mesh/common/utils/rbac_utils.py +69 -0
  230. solace_agent_mesh/common/utils/templates/__init__.py +8 -0
  231. solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
  232. solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
  233. solace_agent_mesh/config_portal/backend/common.py +12 -0
  234. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
  235. solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
  236. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
  237. solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
  238. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
  239. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
  240. solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
  241. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  242. solace_agent_mesh/core_a2a/service.py +3 -2
  243. solace_agent_mesh/gateway/adapter/__init__.py +1 -0
  244. solace_agent_mesh/gateway/adapter/base.py +170 -0
  245. solace_agent_mesh/gateway/adapter/types.py +230 -0
  246. solace_agent_mesh/gateway/base/app.py +39 -2
  247. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  248. solace_agent_mesh/gateway/base/component.py +1027 -151
  249. solace_agent_mesh/gateway/generic/__init__.py +1 -0
  250. solace_agent_mesh/gateway/generic/app.py +50 -0
  251. solace_agent_mesh/gateway/generic/component.py +894 -0
  252. solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
  253. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
  254. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
  255. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
  256. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
  257. solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
  258. solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
  259. solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
  260. solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
  261. solace_agent_mesh/gateway/http_sse/alembic.ini +0 -36
  262. solace_agent_mesh/gateway/http_sse/app.py +40 -11
  263. solace_agent_mesh/gateway/http_sse/component.py +285 -160
  264. solace_agent_mesh/gateway/http_sse/dependencies.py +149 -114
  265. solace_agent_mesh/gateway/http_sse/main.py +68 -450
  266. solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
  267. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  268. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
  269. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
  270. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +26 -3
  271. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
  272. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
  273. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +114 -6
  274. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +13 -0
  275. solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
  276. solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
  277. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
  278. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +8 -2
  279. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
  280. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
  281. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
  282. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +177 -11
  283. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
  284. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
  285. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +256 -58
  286. solace_agent_mesh/gateway/http_sse/routers/auth.py +168 -134
  287. solace_agent_mesh/gateway/http_sse/routers/config.py +302 -8
  288. solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
  289. solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
  290. solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
  291. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +14 -1
  292. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  293. solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
  294. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +5 -2
  295. solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
  296. solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
  297. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  298. solace_agent_mesh/gateway/http_sse/routers/projects.py +768 -0
  299. solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
  300. solace_agent_mesh/gateway/http_sse/routers/sessions.py +167 -7
  301. solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
  302. solace_agent_mesh/gateway/http_sse/routers/sse.py +131 -8
  303. solace_agent_mesh/gateway/http_sse/routers/tasks.py +670 -18
  304. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  305. solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
  306. solace_agent_mesh/gateway/http_sse/routers/visualization.py +92 -9
  307. solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
  308. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
  309. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  310. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  311. solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
  312. solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
  313. solace_agent_mesh/gateway/http_sse/services/session_service.py +361 -12
  314. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
  315. solace_agent_mesh/gateway/http_sse/session_manager.py +15 -15
  316. solace_agent_mesh/gateway/http_sse/sse_manager.py +286 -166
  317. solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
  318. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
  319. solace_agent_mesh/services/__init__.py +0 -0
  320. solace_agent_mesh/services/platform/__init__.py +29 -0
  321. solace_agent_mesh/services/platform/alembic/env.py +85 -0
  322. solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
  323. solace_agent_mesh/services/platform/alembic.ini +109 -0
  324. solace_agent_mesh/services/platform/api/__init__.py +3 -0
  325. solace_agent_mesh/services/platform/api/dependencies.py +154 -0
  326. solace_agent_mesh/services/platform/api/main.py +314 -0
  327. solace_agent_mesh/services/platform/api/middleware.py +51 -0
  328. solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
  329. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  330. solace_agent_mesh/services/platform/app.py +215 -0
  331. solace_agent_mesh/services/platform/component.py +777 -0
  332. solace_agent_mesh/shared/__init__.py +14 -0
  333. solace_agent_mesh/shared/api/__init__.py +42 -0
  334. solace_agent_mesh/shared/auth/__init__.py +26 -0
  335. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  336. solace_agent_mesh/shared/auth/middleware.py +347 -0
  337. solace_agent_mesh/shared/database/__init__.py +20 -0
  338. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  339. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  340. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  341. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  342. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +19 -5
  343. solace_agent_mesh/shared/utils/__init__.py +21 -0
  344. solace_agent_mesh/templates/logging_config_template.yaml +48 -0
  345. solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
  346. solace_agent_mesh/templates/platform.yaml +49 -0
  347. solace_agent_mesh/templates/plugin_readme_template.md +3 -25
  348. solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
  349. solace_agent_mesh/templates/proxy_template.yaml +62 -0
  350. solace_agent_mesh/templates/webui.yaml +148 -6
  351. solace_agent_mesh/tools/web_search/__init__.py +18 -0
  352. solace_agent_mesh/tools/web_search/base.py +84 -0
  353. solace_agent_mesh/tools/web_search/google_search.py +247 -0
  354. solace_agent_mesh/tools/web_search/models.py +99 -0
  355. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +31 -12
  356. solace_agent_mesh-1.13.2.dist-info/RECORD +591 -0
  357. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
  358. solace_agent_mesh/agent/adk/adk_llm.txt +0 -232
  359. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  360. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  361. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -142
  362. solace_agent_mesh/agent/agent_llm.txt +0 -378
  363. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  364. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  365. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  366. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  367. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  368. solace_agent_mesh/agent/testing/testing_llm.txt +0 -57
  369. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  370. solace_agent_mesh/agent/tools/tools_llm.txt +0 -263
  371. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -274
  372. solace_agent_mesh/agent/utils/utils_llm.txt +0 -138
  373. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  374. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
  375. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
  376. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +0 -1
  377. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  378. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  379. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +0 -1
  380. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
  381. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
  382. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
  383. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
  384. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +0 -1
  385. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
  386. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
  387. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
  388. solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +0 -1
  389. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
  390. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
  391. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
  392. solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
  393. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +0 -1
  394. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
  395. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
  396. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +0 -1
  397. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
  398. solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
  399. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
  400. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
  401. solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
  402. solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
  403. solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +0 -1
  404. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +0 -1
  405. solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +0 -1
  406. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
  407. solace_agent_mesh/assets/docs/assets/js/main.b12eac43.js +0 -2
  408. solace_agent_mesh/assets/docs/assets/js/runtime~main.e268214e.js +0 -1
  409. solace_agent_mesh/assets/docs/lunr-index-1761248203150.json +0 -1
  410. solace_agent_mesh/assets/docs/search-doc-1761248203150.json +0 -1
  411. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  412. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  413. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  414. solace_agent_mesh/client/webui/frontend/static/assets/client-CaY59VuC.js +0 -25
  415. solace_agent_mesh/client/webui/frontend/static/assets/main-B32noGmR.js +0 -342
  416. solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +0 -1
  417. solace_agent_mesh/client/webui/frontend/static/assets/vendor-BEmvJSYz.js +0 -405
  418. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -182
  419. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  420. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -407
  421. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  422. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -313
  423. solace_agent_mesh/common/common_llm.txt +0 -251
  424. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  425. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  426. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  427. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  428. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  429. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  430. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  431. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -80
  432. solace_agent_mesh/common/services/services_llm.txt +0 -363
  433. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  434. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  435. solace_agent_mesh/common/utils/utils_llm.txt +0 -336
  436. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  437. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +0 -98
  438. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
  439. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
  440. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
  441. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  442. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  443. solace_agent_mesh/gateway/base/base_llm.txt +0 -224
  444. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  445. solace_agent_mesh/gateway/gateway_llm.txt +0 -373
  446. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  447. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -295
  448. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -155
  449. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  450. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  451. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  452. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -263
  453. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -266
  454. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -340
  455. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -346
  456. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -83
  457. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -107
  458. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -314
  459. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -297
  460. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  461. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -285
  462. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  463. solace_agent_mesh/llm.txt +0 -228
  464. solace_agent_mesh/llm_detail.txt +0 -2835
  465. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  466. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  467. solace_agent_mesh/templates/logging_config_template.ini +0 -45
  468. solace_agent_mesh/templates/templates_llm.txt +0 -147
  469. solace_agent_mesh-1.6.1.dist-info/RECORD +0 -525
  470. /solace_agent_mesh/assets/docs/assets/js/{main.b12eac43.js.LICENSE.txt → main.d634009f.js.LICENSE.txt} +0 -0
  471. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  472. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  473. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  474. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  475. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  476. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  477. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  478. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  479. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  480. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
  481. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
- var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var j=(e,t,r)=>Be(e,typeof t!="symbol"?t+"":t,r);import{p as Ye,A as Xe,D as Ve,i as pe,g as We,h as ve,E as U,r as c,k as Ge,m as we,l as Ke,n as Ze,o as Qe,q as qe,u as ge,s as Ee,N as et,L as tt,F as rt}from"./index-DzNKzXrc.js";var nt=-1,at=-2,it=-3,ot=-4,lt=-5,st=-6,ut=-7,ct="B",dt="D",Se="E",ft="M",ht="N",Re="P",mt="R",yt="S",pt="Y",vt="U",wt="Z",xe=class{constructor(){j(this,"promise");j(this,"resolve");j(this,"reject");this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};function gt(){const e=new TextDecoder;let t="";return new TransformStream({transform(r,n){const a=e.decode(r,{stream:!0}),i=(t+a).split(`
2
- `);t=i.pop()||"";for(const s of i)n.enqueue(s)},flush(r){t&&r.enqueue(t)}})}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var V=typeof window<"u"?window:typeof globalThis<"u"?globalThis:void 0;function K(e){const{hydrated:t,values:r}=this;if(typeof e=="number")return ue.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;const n=r.length;for(const a of e)r.push(a);return t.length=r.length,ue.call(this,n)}function ue(e){const{hydrated:t,values:r,deferred:n,plugins:a}=this;let i;const s=[[e,o=>{i=o}]];let l=[];for(;s.length>0;){const[o,h]=s.pop();switch(o){case ut:h(void 0);continue;case lt:h(null);continue;case at:h(NaN);continue;case st:h(1/0);continue;case it:h(-1/0);continue;case ot:h(-0);continue}if(t[o]){h(t[o]);continue}const m=r[o];if(!m||typeof m!="object"){t[o]=m,h(m);continue}if(Array.isArray(m))if(typeof m[0]=="string"){const[u,d,y]=m;switch(u){case dt:h(t[o]=new Date(d));continue;case vt:h(t[o]=new URL(d));continue;case ct:h(t[o]=BigInt(d));continue;case mt:h(t[o]=new RegExp(d,y));continue;case pt:h(t[o]=Symbol.for(d));continue;case yt:const f=new Set;t[o]=f;for(let w=1;w<m.length;w++)s.push([m[w],S=>{f.add(S)}]);h(f);continue;case ft:const p=new Map;t[o]=p;for(let w=1;w<m.length;w+=2){const S=[];s.push([m[w+1],v=>{S[1]=v}]),s.push([m[w],v=>{S[0]=v}]),l.push(()=>{p.set(S[0],S[1])})}h(p);continue;case ht:const g=Object.create(null);t[o]=g;for(const w of Object.keys(d).reverse()){const S=[];s.push([d[w],v=>{S[1]=v}]),s.push([Number(w.slice(1)),v=>{S[0]=v}]),l.push(()=>{g[S[0]]=S[1]})}h(g);continue;case Re:if(t[d])h(t[o]=t[d]);else{const w=new xe;n[d]=w,h(t[o]=w.promise)}continue;case Se:const[,E,b]=m;let x=b&&V&&V[b]?new V[b](E):new Error(E);t[o]=x,h(x);continue;case wt:h(t[o]=t[d]);continue;default:if(Array.isArray(a)){const w=[],S=m.slice(1);for(let v=0;v<S.length;v++){const R=S[v];s.push([R,_=>{w[v]=_}])}l.push(()=>{for(const v of a){const R=v(m[0],...w);if(R){h(t[o]=R.value);return}}throw new SyntaxError});continue}throw new SyntaxError}}else{const u=[];t[o]=u;for(let d=0;d<m.length;d++){const y=m[d];y!==nt&&s.push([y,f=>{u[d]=f}])}h(u);continue}else{const u={};t[o]=u;for(const d of Object.keys(m).reverse()){const y=[];s.push([m[d],f=>{y[1]=f}]),s.push([Number(d.slice(1)),f=>{y[0]=f}]),l.push(()=>{u[y[0]]=y[1]})}h(u);continue}}for(;l.length>0;)l.pop()();return i}async function Et(e,t){const{plugins:r}=t??{},n=new xe,a=e.pipeThrough(gt()).getReader(),i={values:[],hydrated:[],deferred:{},plugins:r},s=await St.call(i,a);let l=n.promise;return s.done?n.resolve():l=Rt.call(i,a).then(n.resolve).catch(o=>{for(const h of Object.values(i.deferred))h.reject(o);n.reject(o)}),{done:l.then(()=>a.closed),value:s.value}}async function St(e){const t=await e.read();if(!t.value)throw new SyntaxError;let r;try{r=JSON.parse(t.value)}catch{throw new SyntaxError}return{done:t.done,value:K.call(this,r)}}async function Rt(e){let t=await e.read();for(;!t.done;){if(!t.value)continue;const r=t.value;switch(r[0]){case Re:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let l;try{l=JSON.parse(s)}catch{throw new SyntaxError}const o=K.call(this,l);i.resolve(o);break}case Se:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let l;try{l=JSON.parse(s)}catch{throw new SyntaxError}const o=K.call(this,l);i.reject(o);break}default:throw new SyntaxError}t=await e.read()}}/**
3
- * @remix-run/server-runtime v2.16.2
1
+ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var $=(e,t,r)=>Be(e,typeof t!="symbol"?t+"":t,r);import{p as Ye,A as Xe,D as Ve,i as pe,g as We,h as we,E as U,r as c,k as Ge,m as ve,l as Ke,n as Ze,o as Qe,q as qe,u as ge,s as Ee,N as et,L as tt,F as rt}from"./index-CnFykb2v.js";var nt=-1,at=-2,it=-3,ot=-4,lt=-5,st=-6,ut=-7,ct="B",dt="D",Se="E",ft="M",ht="N",Re="P",mt="R",yt="S",pt="Y",wt="U",vt="Z",xe=class{constructor(){$(this,"promise");$(this,"resolve");$(this,"reject");this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};function gt(){const e=new TextDecoder;let t="";return new TransformStream({transform(r,n){const a=e.decode(r,{stream:!0}),i=(t+a).split(`
2
+ `);t=i.pop()||"";for(const s of i)n.enqueue(s)},flush(r){t&&r.enqueue(t)}})}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var V=typeof window<"u"?window:typeof globalThis<"u"?globalThis:void 0;function K(e){const{hydrated:t,values:r}=this;if(typeof e=="number")return ue.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;const n=r.length;for(const a of e)r.push(a);return t.length=r.length,ue.call(this,n)}function ue(e){const{hydrated:t,values:r,deferred:n,plugins:a}=this;let i;const s=[[e,o=>{i=o}]];let l=[];for(;s.length>0;){const[o,h]=s.pop();switch(o){case ut:h(void 0);continue;case lt:h(null);continue;case at:h(NaN);continue;case st:h(1/0);continue;case it:h(-1/0);continue;case ot:h(-0);continue}if(t[o]){h(t[o]);continue}const m=r[o];if(!m||typeof m!="object"){t[o]=m,h(m);continue}if(Array.isArray(m))if(typeof m[0]=="string"){const[u,d,y]=m;switch(u){case dt:h(t[o]=new Date(d));continue;case wt:h(t[o]=new URL(d));continue;case ct:h(t[o]=BigInt(d));continue;case mt:h(t[o]=new RegExp(d,y));continue;case pt:h(t[o]=Symbol.for(d));continue;case yt:const f=new Set;t[o]=f;for(let v=1;v<m.length;v++)s.push([m[v],S=>{f.add(S)}]);h(f);continue;case ft:const p=new Map;t[o]=p;for(let v=1;v<m.length;v+=2){const S=[];s.push([m[v+1],w=>{S[1]=w}]),s.push([m[v],w=>{S[0]=w}]),l.push(()=>{p.set(S[0],S[1])})}h(p);continue;case ht:const g=Object.create(null);t[o]=g;for(const v of Object.keys(d).reverse()){const S=[];s.push([d[v],w=>{S[1]=w}]),s.push([Number(v.slice(1)),w=>{S[0]=w}]),l.push(()=>{g[S[0]]=S[1]})}h(g);continue;case Re:if(t[d])h(t[o]=t[d]);else{const v=new xe;n[d]=v,h(t[o]=v.promise)}continue;case Se:const[,E,b]=m;let x=b&&V&&V[b]?new V[b](E):new Error(E);t[o]=x,h(x);continue;case vt:h(t[o]=t[d]);continue;default:if(Array.isArray(a)){const v=[],S=m.slice(1);for(let w=0;w<S.length;w++){const R=S[w];s.push([R,_=>{v[w]=_}])}l.push(()=>{for(const w of a){const R=w(m[0],...v);if(R){h(t[o]=R.value);return}}throw new SyntaxError});continue}throw new SyntaxError}}else{const u=[];t[o]=u;for(let d=0;d<m.length;d++){const y=m[d];y!==nt&&s.push([y,f=>{u[d]=f}])}h(u);continue}else{const u={};t[o]=u;for(const d of Object.keys(m).reverse()){const y=[];s.push([m[d],f=>{y[1]=f}]),s.push([Number(d.slice(1)),f=>{y[0]=f}]),l.push(()=>{u[y[0]]=y[1]})}h(u);continue}}for(;l.length>0;)l.pop()();return i}async function Et(e,t){const{plugins:r}=t??{},n=new xe,a=e.pipeThrough(gt()).getReader(),i={values:[],hydrated:[],deferred:{},plugins:r},s=await St.call(i,a);let l=n.promise;return s.done?n.resolve():l=Rt.call(i,a).then(n.resolve).catch(o=>{for(const h of Object.values(i.deferred))h.reject(o);n.reject(o)}),{done:l.then(()=>a.closed),value:s.value}}async function St(e){const t=await e.read();if(!t.value)throw new SyntaxError;let r;try{r=JSON.parse(t.value)}catch{throw new SyntaxError}return{done:t.done,value:K.call(this,r)}}async function Rt(e){let t=await e.read();for(;!t.done;){if(!t.value)continue;const r=t.value;switch(r[0]){case Re:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let l;try{l=JSON.parse(s)}catch{throw new SyntaxError}const o=K.call(this,l);i.resolve(o);break}case Se:{const n=r.indexOf(":"),a=Number(r.slice(1,n)),i=this.deferred[a];if(!i)throw new Error(`Deferred ID ${a} not found in stream`);const s=r.slice(n+1);let l;try{l=JSON.parse(s)}catch{throw new SyntaxError}const o=K.call(this,l);i.reject(o);break}default:throw new SyntaxError}t=await e.read()}}/**
3
+ * @remix-run/server-runtime v2.17.4
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -9,7 +9,7 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
9
9
  *
10
10
  * @license MIT
11
11
  */const be=Symbol("SingleFetchRedirect");/**
12
- * @remix-run/react v2.16.2
12
+ * @remix-run/react v2.17.4
13
13
  *
14
14
  * Copyright (c) Remix Software Inc.
15
15
  *
@@ -18,7 +18,7 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
18
18
  *
19
19
  * @license MIT
20
20
  */function L(){return L=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},L.apply(this,arguments)}/**
21
- * @remix-run/react v2.16.2
21
+ * @remix-run/react v2.17.4
22
22
  *
23
23
  * Copyright (c) Remix Software Inc.
24
24
  *
@@ -27,7 +27,7 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
27
27
  *
28
28
  * @license MIT
29
29
  */function P(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}/**
30
- * @remix-run/react v2.16.2
30
+ * @remix-run/react v2.17.4
31
31
  *
32
32
  * Copyright (c) Remix Software Inc.
33
33
  *
@@ -36,7 +36,7 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
36
36
  *
37
37
  * @license MIT
38
38
  */async function _e(e,t){if(e.id in t)return t[e.id];try{let r=await import(e.module);return t[e.id]=r,r}catch(r){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(r),window.__remixContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}/**
39
- * @remix-run/react v2.16.2
39
+ * @remix-run/react v2.17.4
40
40
  *
41
41
  * Copyright (c) Remix Software Inc.
42
42
  *
@@ -44,8 +44,8 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
44
44
  * LICENSE.md file in the root directory of this source tree.
45
45
  *
46
46
  * @license MIT
47
- */function xt(e,t,r){let n=e.map(i=>{var s;let l=t[i.route.id],o=r.routes[i.route.id];return[o.css?o.css.map(h=>({rel:"stylesheet",href:h})):[],(l==null||(s=l.links)===null||s===void 0?void 0:s.call(l))||[]]}).flat(2),a=Pt(e,r);return Oe(n,a)}async function Le(e,t){var r,n;if(!e.css&&!t.links||!Nt())return;let a=[((r=e.css)===null||r===void 0?void 0:r.map(l=>({rel:"stylesheet",href:l})))??[],((n=t.links)===null||n===void 0?void 0:n.call(t))??[]].flat(1);if(a.length===0)return;let i=[];for(let l of a)!q(l)&&l.rel==="stylesheet"&&i.push({...l,rel:"preload",as:"style"});let s=i.filter(l=>(!l.media||window.matchMedia(l.media).matches)&&!document.querySelector(`link[rel="stylesheet"][href="${l.href}"]`));await Promise.all(s.map(bt))}async function bt(e){return new Promise(t=>{let r=document.createElement("link");Object.assign(r,e);function n(){document.head.contains(r)&&document.head.removeChild(r)}r.onload=()=>{n(),t()},r.onerror=()=>{n(),t()},document.head.appendChild(r)})}function q(e){return e!=null&&typeof e.page=="string"}function _t(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Lt(e,t,r){let n=await Promise.all(e.map(async a=>{let i=await _e(t.routes[a.route.id],r);return i.links?i.links():[]}));return Oe(n.flat(1).filter(_t).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function ce(e,t,r,n,a,i,s){let l=ke(e),o=(u,d)=>r[d]?u.route.id!==r[d].route.id:!0,h=(u,d)=>{var y;return r[d].pathname!==u.pathname||((y=r[d].route.path)===null||y===void 0?void 0:y.endsWith("*"))&&r[d].params["*"]!==u.params["*"]};return s==="data"&&(i.v3_singleFetch||a.search!==l.search)?t.filter((u,d)=>{if(!n.routes[u.route.id].hasLoader)return!1;if(o(u,d)||h(u,d))return!0;let f=i.v3_singleFetch||a.search!==l.search;if(u.route.shouldRevalidate){var p;let g=u.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:((p=r[0])===null||p===void 0?void 0:p.params)||{},nextUrl:new URL(e,window.origin),nextParams:u.params,defaultShouldRevalidate:f});if(typeof g=="boolean")return g}return f}):t.filter((u,d)=>{let y=n.routes[u.route.id];return(s==="assets"||y.hasLoader)&&(o(u,d)||h(u,d))})}function Ot(e,t,r){let n=ke(e);return ee(t.filter(a=>r.routes[a.route.id].hasLoader&&!r.routes[a.route.id].hasClientLoader).map(a=>{let{pathname:i,search:s}=n,l=new URLSearchParams(s);return l.set("_data",a.route.id),`${i}?${l}`}))}function kt(e,t){return ee(e.map(r=>{let n=t.routes[r.route.id],a=[n.module];return n.imports&&(a=a.concat(n.imports)),a}).flat(1))}function Pt(e,t){return ee(e.map(r=>{let n=t.routes[r.route.id],a=[n.module];return n.imports&&(a=a.concat(n.imports)),a}).flat(1))}function ee(e){return[...new Set(e)]}function Dt(e){let t={},r=Object.keys(e).sort();for(let n of r)t[n]=e[n];return t}function Oe(e,t){let r=new Set,n=new Set(t);return e.reduce((a,i)=>{if(t&&!q(i)&&i.as==="script"&&i.href&&n.has(i.href))return a;let l=JSON.stringify(Dt(i));return r.has(l)||(r.add(l),a.push({key:l,link:i})),a},[])}function ke(e){let t=Ye(e);return t.search===void 0&&(t.search=""),t}let $;function Nt(){if($!==void 0)return $;let e=document.createElement("link");return $=e.relList.supports("preload"),e=null,$}/**
48
- * @remix-run/react v2.16.2
47
+ */function xt(e,t,r){let n=e.map(i=>{var s;let l=t[i.route.id],o=r.routes[i.route.id];return[o.css?o.css.map(h=>({rel:"stylesheet",href:h})):[],(l==null||(s=l.links)===null||s===void 0?void 0:s.call(l))||[]]}).flat(2),a=Pt(e,r);return Oe(n,a)}async function Le(e,t){var r,n;if(!e.css&&!t.links||!Nt())return;let a=[((r=e.css)===null||r===void 0?void 0:r.map(l=>({rel:"stylesheet",href:l})))??[],((n=t.links)===null||n===void 0?void 0:n.call(t))??[]].flat(1);if(a.length===0)return;let i=[];for(let l of a)!q(l)&&l.rel==="stylesheet"&&i.push({...l,rel:"preload",as:"style"});let s=i.filter(l=>(!l.media||window.matchMedia(l.media).matches)&&!document.querySelector(`link[rel="stylesheet"][href="${l.href}"]`));await Promise.all(s.map(bt))}async function bt(e){return new Promise(t=>{let r=document.createElement("link");Object.assign(r,e);function n(){document.head.contains(r)&&document.head.removeChild(r)}r.onload=()=>{n(),t()},r.onerror=()=>{n(),t()},document.head.appendChild(r)})}function q(e){return e!=null&&typeof e.page=="string"}function _t(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Lt(e,t,r){let n=await Promise.all(e.map(async a=>{let i=await _e(t.routes[a.route.id],r);return i.links?i.links():[]}));return Oe(n.flat(1).filter(_t).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function ce(e,t,r,n,a,i,s){let l=ke(e),o=(u,d)=>r[d]?u.route.id!==r[d].route.id:!0,h=(u,d)=>{var y;return r[d].pathname!==u.pathname||((y=r[d].route.path)===null||y===void 0?void 0:y.endsWith("*"))&&r[d].params["*"]!==u.params["*"]};return s==="data"&&(i.v3_singleFetch||a.search!==l.search)?t.filter((u,d)=>{if(!n.routes[u.route.id].hasLoader)return!1;if(o(u,d)||h(u,d))return!0;let f=i.v3_singleFetch||a.search!==l.search;if(u.route.shouldRevalidate){var p;let g=u.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:((p=r[0])===null||p===void 0?void 0:p.params)||{},nextUrl:new URL(e,window.origin),nextParams:u.params,defaultShouldRevalidate:f});if(typeof g=="boolean")return g}return f}):t.filter((u,d)=>{let y=n.routes[u.route.id];return(s==="assets"||y.hasLoader)&&(o(u,d)||h(u,d))})}function Ot(e,t,r){let n=ke(e);return ee(t.filter(a=>r.routes[a.route.id].hasLoader&&!r.routes[a.route.id].hasClientLoader).map(a=>{let{pathname:i,search:s}=n,l=new URLSearchParams(s);return l.set("_data",a.route.id),`${i}?${l}`}))}function kt(e,t){return ee(e.map(r=>{let n=t.routes[r.route.id],a=[n.module];return n.imports&&(a=a.concat(n.imports)),a}).flat(1))}function Pt(e,t){return ee(e.map(r=>{let n=t.routes[r.route.id],a=[n.module];return n.imports&&(a=a.concat(n.imports)),a}).flat(1))}function ee(e){return[...new Set(e)]}function Dt(e){let t={},r=Object.keys(e).sort();for(let n of r)t[n]=e[n];return t}function Oe(e,t){let r=new Set,n=new Set(t);return e.reduce((a,i)=>{if(t&&!q(i)&&i.as==="script"&&i.href&&n.has(i.href))return a;let l=JSON.stringify(Dt(i));return r.has(l)||(r.add(l),a.push({key:l,link:i})),a},[])}function ke(e){let t=Ye(e);return t.search===void 0&&(t.search=""),t}let F;function Nt(){if(F!==void 0)return F;let e=document.createElement("link");return F=e.relList.supports("preload"),e=null,F}/**
48
+ * @remix-run/react v2.17.4
49
49
  *
50
50
  * Copyright (c) Remix Software Inc.
51
51
  *
@@ -53,8 +53,8 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
53
53
  * LICENSE.md file in the root directory of this source tree.
54
54
  *
55
55
  * @license MIT
56
- */const Tt={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},At=/[&><\u2028\u2029]/g;function F(e){return e.replace(At,t=>Tt[t])}function de(e){return{__html:e}}/**
57
- * @remix-run/react v2.16.2
56
+ */const Tt={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},At=/[&><\u2028\u2029]/g;function j(e){return e.replace(At,t=>Tt[t])}function de(e){return{__html:e}}/**
57
+ * @remix-run/react v2.17.4
58
58
  *
59
59
  * Copyright (c) Remix Software Inc.
60
60
  *
@@ -69,7 +69,7 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
69
69
  `))]),n.length>0)break}catch{continue}}return n.length>0||r.length>0&&(n=s.decode(fe(...r)).split(`
70
70
 
71
71
  `).filter(m=>m),r=[]),n.shift()},o=await l();for(;o;)yield o,o=await l()}function fe(...e){let t=new Uint8Array(e.reduce((n,a)=>n+a.length,0)),r=0;for(let n of e)t.set(n,r),r+=n.length;return t}/**
72
- * @remix-run/react v2.16.2
72
+ * @remix-run/react v2.17.4
73
73
  *
74
74
  * Copyright (c) Remix Software Inc.
75
75
  *
@@ -77,8 +77,8 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
77
77
  * LICENSE.md file in the root directory of this source tree.
78
78
  *
79
79
  * @license MIT
80
- */function wr(e,t,r){return async({request:n,matches:a,fetcherKey:i})=>n.method!=="GET"?zt(n,a):i?Yt(n,a):Bt(e,t,r(),n,a)}async function zt(e,t){let r=t.find(i=>i.shouldLoad);P(r,"No action match found");let n,a=await r.resolve(async i=>await i(async()=>{let l=B(e.url),o=await z(e),{data:h,status:m}=await re(l,o);return n=m,Z(h,r.route.id)}));return te(a.result)||pe(a.result)?{[r.route.id]:a}:{[r.route.id]:{type:a.type,result:We(a.result,n)}}}async function Bt(e,t,r,n,a){let i=new Set,s=!1,l=a.map(()=>he()),o=Promise.all(l.map(f=>f.promise)),h=he(),m=Ne(B(n.url)),u=await z(n),d={},y=Promise.all(a.map(async(f,p)=>f.resolve(async g=>{if(l[p].resolve(),!f.shouldLoad){var E;if(!r.state.initialized)return;if(f.route.id in r.state.loaderData&&e.routes[f.route.id]&&(E=t[f.route.id])!==null&&E!==void 0&&E.shouldRevalidate){e.routes[f.route.id].hasLoader&&(s=!0);return}}if(e.routes[f.route.id].hasClientLoader){e.routes[f.route.id].hasLoader&&(s=!0);try{let b=await De(g,m,u,f.route.id);d[f.route.id]={type:"data",result:b}}catch(b){d[f.route.id]={type:"error",result:b}}return}e.routes[f.route.id].hasLoader&&i.add(f.route.id);try{let b=await g(async()=>{let x=await h.promise;return Te(x,f.route.id)});d[f.route.id]={type:"data",result:b}}catch(b){d[f.route.id]={type:"error",result:b}}})));if(await o,(!r.state.initialized||i.size===0)&&!window.__remixHdrActive)h.resolve({});else try{s&&i.size>0&&m.searchParams.set("_routes",a.filter(p=>i.has(p.route.id)).map(p=>p.route.id).join(","));let f=await re(m,u);h.resolve(f.data)}catch(f){h.reject(f)}return await y,d}async function Yt(e,t){let r=t.find(a=>a.shouldLoad);P(r,"No fetcher match found");let n=await r.resolve(async a=>{let i=Ne(B(e.url)),s=await z(e);return De(a,i,s,r.route.id)});return{[r.route.id]:n}}function De(e,t,r,n){return e(async()=>{let a=new URL(t);a.searchParams.set("_routes",n);let{data:i}=await re(a,r);return Te(i,n)})}function Ne(e){let t=e.searchParams.getAll("index");e.searchParams.delete("index");let r=[];for(let n of t)n&&r.push(n);for(let n of r)e.searchParams.append("index",n);return e}function B(e){let t=typeof e=="string"?new URL(e,window.location.origin):e;return t.pathname==="/"?t.pathname="_root.data":t.pathname=`${t.pathname.replace(/\/$/,"")}.data`,t}async function re(e,t){let r=await fetch(e,t);if(new Set([100,101,204,205]).has(r.status))return!t.method||t.method==="GET"?{status:r.status,data:{}}:{status:r.status,data:{data:null}};P(r.body,"No response body to decode");try{let a=await Xt(r.body,window);return{status:r.status,data:a.value}}catch(a){throw console.error(a),new Error(`Unable to decode turbo-stream response from URL: ${e.toString()}`)}}function Xt(e,t){return Et(e,{plugins:[(r,...n)=>{if(r==="SanitizedError"){let[a,i,s]=n,l=Error;a&&a in t&&typeof t[a]=="function"&&(l=t[a]);let o=new l(i);return o.stack=s,{value:o}}if(r==="ErrorResponse"){let[a,i,s]=n;return{value:new U(i,s,a)}}if(r==="SingleFetchRedirect")return{value:{[be]:n[0]}}},(r,n)=>{if(r==="SingleFetchFallback")return{value:void 0};if(r==="SingleFetchClassInstance")return{value:n}}]})}function Te(e,t){let r=e[be];return r?Z(r,t):e[t]!==void 0?Z(e[t],t):null}function Z(e,t){if("error"in e)throw e.error;if("redirect"in e){let r={};throw e.revalidate&&(r["X-Remix-Revalidate"]="yes"),e.reload&&(r["X-Remix-Reload-Document"]="yes"),e.replace&&(r["X-Remix-Replace"]="yes"),ve(e.redirect,{status:e.status,headers:r})}else{if("data"in e)return e.data;throw new Error(`No response found for routeId "${t}"`)}}function he(){let e,t,r=new Promise((n,a)=>{e=async i=>{n(i);try{await r}catch{}},t=async i=>{a(i);try{await r}catch{}}});return{promise:r,resolve:e,reject:t}}/**
81
- * @remix-run/react v2.16.2
80
+ */function vr(e,t,r){return async({request:n,matches:a,fetcherKey:i})=>n.method!=="GET"?zt(n,a):i?Yt(n,a):Bt(e,t,r(),n,a)}async function zt(e,t){let r=t.find(i=>i.shouldLoad);P(r,"No action match found");let n,a=await r.resolve(async i=>await i(async()=>{let l=B(e.url),o=await z(e),{data:h,status:m}=await re(l,o);return n=m,Z(h,r.route.id)}));return te(a.result)||pe(a.result)?{[r.route.id]:a}:{[r.route.id]:{type:a.type,result:We(a.result,n)}}}async function Bt(e,t,r,n,a){let i=new Set,s=!1,l=a.map(()=>he()),o=Promise.all(l.map(f=>f.promise)),h=he(),m=Ne(B(n.url)),u=await z(n),d={},y=Promise.all(a.map(async(f,p)=>f.resolve(async g=>{if(l[p].resolve(),!f.shouldLoad){var E;if(!r.state.initialized)return;if(f.route.id in r.state.loaderData&&e.routes[f.route.id]&&(E=t[f.route.id])!==null&&E!==void 0&&E.shouldRevalidate){e.routes[f.route.id].hasLoader&&(s=!0);return}}if(e.routes[f.route.id].hasClientLoader){e.routes[f.route.id].hasLoader&&(s=!0);try{let b=await De(g,m,u,f.route.id);d[f.route.id]={type:"data",result:b}}catch(b){d[f.route.id]={type:"error",result:b}}return}e.routes[f.route.id].hasLoader&&i.add(f.route.id);try{let b=await g(async()=>{let x=await h.promise;return Te(x,f.route.id)});d[f.route.id]={type:"data",result:b}}catch(b){d[f.route.id]={type:"error",result:b}}})));if(await o,(!r.state.initialized||i.size===0)&&!window.__remixHdrActive)h.resolve({});else try{s&&i.size>0&&m.searchParams.set("_routes",a.filter(p=>i.has(p.route.id)).map(p=>p.route.id).join(","));let f=await re(m,u);h.resolve(f.data)}catch(f){h.reject(f)}return await y,d}async function Yt(e,t){let r=t.find(a=>a.shouldLoad);P(r,"No fetcher match found");let n=await r.resolve(async a=>{let i=Ne(B(e.url)),s=await z(e);return De(a,i,s,r.route.id)});return{[r.route.id]:n}}function De(e,t,r,n){return e(async()=>{let a=new URL(t);a.searchParams.set("_routes",n);let{data:i}=await re(a,r);return Te(i,n)})}function Ne(e){let t=e.searchParams.getAll("index");e.searchParams.delete("index");let r=[];for(let n of t)n&&r.push(n);for(let n of r)e.searchParams.append("index",n);return e}function B(e){let t=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return t.pathname==="/"?t.pathname="_root.data":t.pathname=`${t.pathname.replace(/\/$/,"")}.data`,t}async function re(e,t){let r=await fetch(e,t);if(new Set([100,101,204,205]).has(r.status))return!t.method||t.method==="GET"?{status:r.status,data:{}}:{status:r.status,data:{data:null}};P(r.body,"No response body to decode");try{let a=await Xt(r.body,window);return{status:r.status,data:a.value}}catch(a){throw console.error(a),new Error(`Unable to decode turbo-stream response from URL: ${e.toString()}`)}}function Xt(e,t){return Et(e,{plugins:[(r,...n)=>{if(r==="SanitizedError"){let[a,i,s]=n,l=Error;a&&a in t&&typeof t[a]=="function"&&(l=t[a]);let o=new l(i);return o.stack=s,{value:o}}if(r==="ErrorResponse"){let[a,i,s]=n;return{value:new U(i,s,a)}}if(r==="SingleFetchRedirect")return{value:{[be]:n[0]}}},(r,n)=>{if(r==="SingleFetchFallback")return{value:void 0};if(r==="SingleFetchClassInstance")return{value:n}}]})}function Te(e,t){let r=e[be];return r?Z(r,t):e[t]!==void 0?Z(e[t],t):null}function Z(e,t){if("error"in e)throw e.error;if("redirect"in e){let r={};throw e.revalidate&&(r["X-Remix-Revalidate"]="yes"),e.reload&&(r["X-Remix-Reload-Document"]="yes"),e.replace&&(r["X-Remix-Replace"]="yes"),we(e.redirect,{status:e.status,headers:r})}else{if("data"in e)return e.data;throw new Error(`No response found for routeId "${t}"`)}}function he(){let e,t,r=new Promise((n,a)=>{e=async i=>{n(i);try{await r}catch{}},t=async i=>{a(i);try{await r}catch{}}});return{promise:r,resolve:e,reject:t}}/**
81
+ * @remix-run/react v2.17.4
82
82
  *
83
83
  * Copyright (c) Remix Software Inc.
84
84
  *
@@ -91,7 +91,7 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
91
91
  "💿 Hey developer 👋. You can provide a way better UX than this when your app throws errors. Check out https://remix.run/guides/errors for more information."
92
92
  );
93
93
  `}});if(pe(e))return c.createElement(Q,{title:"Unhandled Thrown Response!"},c.createElement("h1",{style:{fontSize:"24px"}},e.status," ",e.statusText),r);let n;if(e instanceof Error)n=e;else{let a=e==null?"Unknown Error":typeof e=="object"&&"toString"in e?e.toString():JSON.stringify(e);n=new Error(a)}return c.createElement(Q,{title:"Application Error!",isOutsideRemixApp:t},c.createElement("h1",{style:{fontSize:"24px"}},"Application Error"),c.createElement("pre",{style:{padding:"2rem",background:"hsla(10, 50%, 50%, 0.1)",color:"red",overflow:"auto"}},n.stack),r)}function Q({title:e,renderScripts:t,isOutsideRemixApp:r,children:n}){var a;let{routeModules:i}=T();return(a=i.root)!==null&&a!==void 0&&a.Layout&&!r?n:c.createElement("html",{lang:"en"},c.createElement("head",null,c.createElement("meta",{charSet:"utf-8"}),c.createElement("meta",{name:"viewport",content:"width=device-width,initial-scale=1,viewport-fit=cover"}),c.createElement("title",null,e)),c.createElement("body",null,c.createElement("main",{style:{fontFamily:"system-ui, sans-serif",padding:"2rem"}},n,t?c.createElement(hr,null):null)))}/**
94
- * @remix-run/react v2.16.2
94
+ * @remix-run/react v2.17.4
95
95
  *
96
96
  * Copyright (c) Remix Software Inc.
97
97
  *
@@ -107,7 +107,7 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
107
107
  "for more information."
108
108
  );
109
109
  `}}))}/**
110
- * @remix-run/react v2.16.2
110
+ * @remix-run/react v2.17.4
111
111
  *
112
112
  * Copyright (c) Remix Software Inc.
113
113
  *
@@ -115,8 +115,8 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
115
115
  * LICENSE.md file in the root directory of this source tree.
116
116
  *
117
117
  * @license MIT
118
- */function Ce(e){let t={};return Object.values(e).forEach(r=>{let n=r.parentId||"";t[n]||(t[n]=[]),t[n].push(r)}),t}function Wt(e,t,r){let n=je(t),a=t.HydrateFallback&&(!r||e.id==="root")?t.HydrateFallback:e.id==="root"?Vt:void 0,i=t.ErrorBoundary?t.ErrorBoundary:e.id==="root"?()=>c.createElement(Ae,{error:Ge()}):void 0;return e.id==="root"&&t.Layout?{...n?{element:c.createElement(t.Layout,null,c.createElement(n,null))}:{Component:n},...i?{errorElement:c.createElement(t.Layout,null,c.createElement(i,null))}:{ErrorBoundary:i},...a?{hydrateFallbackElement:c.createElement(t.Layout,null,c.createElement(a,null))}:{HydrateFallback:a}}:{Component:n,ErrorBoundary:i,HydrateFallback:a}}function Er(e,t,r,n,a,i){return ne(t,r,n,a,i,"",Ce(t),e)}function I(e,t,r){if(r){let s=`You cannot call ${e==="action"?"serverAction()":"serverLoader()"} in SPA Mode (routeId: "${t.id}")`;throw console.error(s),new U(400,"Bad Request",new Error(s),!0)}let a=`You are trying to call ${e==="action"?"serverAction()":"serverLoader()"} on a route that does not have a server ${e} (routeId: "${t.id}")`;if(e==="loader"&&!t.hasLoader||e==="action"&&!t.hasAction)throw console.error(a),new U(400,"Bad Request",new Error(a),!0)}function W(e,t){let r=e==="clientAction"?"a":"an",n=`Route "${t}" does not have ${r} ${e}, but you are trying to submit to it. To fix this, please add ${r} \`${e}\` function to the route`;throw console.error(n),new U(405,"Method Not Allowed",new Error(n),!0)}function ne(e,t,r,n,a,i="",s=Ce(e),l){return(s[i]||[]).map(o=>{let h=t[o.id];async function m(x,w,S){if(typeof S=="function")return await S();let v=await Zt(x,o);return w?Qt(v):v}function u(x,w,S){return o.hasLoader?m(x,w,S):Promise.resolve(null)}function d(x,w,S){if(!o.hasAction)throw W("action",o.id);return m(x,w,S)}async function y(x){let w=t[o.id],S=w?Le(o,w):Promise.resolve();try{return x()}finally{await S}}let f={id:o.id,index:o.index,path:o.path};if(h){var p,g,E;Object.assign(f,{...f,...Wt(o,h,a),handle:h.handle,shouldRevalidate:me(n,h,o.id,l)});let x=r==null||(p=r.loaderData)===null||p===void 0?void 0:p[o.id],w=r==null||(g=r.errors)===null||g===void 0?void 0:g[o.id],S=l==null&&(((E=h.clientLoader)===null||E===void 0?void 0:E.hydrate)===!0||!o.hasLoader);f.loader=async({request:v,params:R},_)=>{try{return await y(async()=>(P(h,"No `routeModule` available for critical-route loader"),h.clientLoader?h.clientLoader({request:v,params:R,async serverLoader(){if(I("loader",o,a),S){if(x!==void 0)return x;if(w!==void 0)throw w;return null}return u(v,!0,_)}}):a?null:u(v,!1,_)))}finally{S=!1}},f.loader.hydrate=er(o,h,a),f.action=({request:v,params:R},_)=>y(async()=>{if(P(h,"No `routeModule` available for critical-route action"),!h.clientAction){if(a)throw W("clientAction",o.id);return d(v,!1,_)}return h.clientAction({request:v,params:R,async serverAction(){return I("action",o,a),d(v,!0,_)}})})}else o.hasClientLoader||(f.loader=({request:x},w)=>y(()=>a?Promise.resolve(null):u(x,!1,w))),o.hasClientAction||(f.action=({request:x},w)=>y(()=>{if(a)throw W("clientAction",o.id);return d(x,!1,w)})),f.lazy=async()=>{let x=await Kt(o,t),w={...x};if(x.clientLoader){let S=x.clientLoader;w.loader=(v,R)=>S({...v,async serverLoader(){return I("loader",o,a),u(v.request,!0,R)}})}if(x.clientAction){let S=x.clientAction;w.action=(v,R)=>S({...v,async serverAction(){return I("action",o,a),d(v.request,!0,R)}})}return{...w.loader?{loader:w.loader}:{},...w.action?{action:w.action}:{},hasErrorBoundary:w.hasErrorBoundary,shouldRevalidate:me(n,w,o.id,l),handle:w.handle,Component:w.Component,ErrorBoundary:w.ErrorBoundary}};let b=ne(e,t,r,n,a,o.id,s,l);return b.length>0&&(f.children=b),f})}function me(e,t,r,n){if(n)return Gt(r,t.shouldRevalidate,n);if(e.v3_singleFetch&&t.shouldRevalidate){let a=t.shouldRevalidate;return i=>a({...i,defaultShouldRevalidate:!0})}return t.shouldRevalidate}function Gt(e,t,r){let n=!1;return a=>n?t?t(a):a.defaultShouldRevalidate:(n=!0,r.has(e))}async function Kt(e,t){let r=await _e(e,t);return await Le(e,r),{Component:je(r),ErrorBoundary:r.ErrorBoundary,clientAction:r.clientAction,clientLoader:r.clientLoader,handle:r.handle,links:r.links,meta:r.meta,shouldRevalidate:r.shouldRevalidate}}async function Zt(e,t){let r=await Pe(e,t.id);if(r instanceof Error)throw r;if(Ft(r))throw qt(r);if(Ct(r))throw r;return It(r)&&r.body?await Ut(r.body):r}function Qt(e){if(Ht(e))return e.data;if(te(e)){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.json():e.text()}return e}function qt(e){let t=parseInt(e.headers.get("X-Remix-Status"),10)||302,r=e.headers.get("X-Remix-Redirect"),n={},a=e.headers.get("X-Remix-Revalidate");a&&(n["X-Remix-Revalidate"]=a);let i=e.headers.get("X-Remix-Reload-Document");i&&(n["X-Remix-Reload-Document"]=i);let s=e.headers.get("X-Remix-Replace");return s&&(n["X-Remix-Replace"]=s),ve(r,{status:t,headers:n})}function je(e){if(e.default==null)return;if(!(typeof e.default=="object"&&Object.keys(e.default).length===0))return e.default}function er(e,t,r){return r&&e.id!=="root"||t.clientLoader!=null&&(t.clientLoader.hydrate===!0||e.hasLoader!==!0)}/**
119
- * @remix-run/react v2.16.2
118
+ */function Ce(e){let t={};return Object.values(e).forEach(r=>{let n=r.parentId||"";t[n]||(t[n]=[]),t[n].push(r)}),t}function Wt(e,t,r){let n=je(t),a=t.HydrateFallback&&(!r||e.id==="root")?t.HydrateFallback:e.id==="root"?Vt:void 0,i=t.ErrorBoundary?t.ErrorBoundary:e.id==="root"?()=>c.createElement(Ae,{error:Ge()}):void 0;return e.id==="root"&&t.Layout?{...n?{element:c.createElement(t.Layout,null,c.createElement(n,null))}:{Component:n},...i?{errorElement:c.createElement(t.Layout,null,c.createElement(i,null))}:{ErrorBoundary:i},...a?{hydrateFallbackElement:c.createElement(t.Layout,null,c.createElement(a,null))}:{HydrateFallback:a}}:{Component:n,ErrorBoundary:i,HydrateFallback:a}}function Er(e,t,r,n,a,i){return ne(t,r,n,a,i,"",Ce(t),e)}function I(e,t,r){if(r){let s=`You cannot call ${e==="action"?"serverAction()":"serverLoader()"} in SPA Mode (routeId: "${t.id}")`;throw console.error(s),new U(400,"Bad Request",new Error(s),!0)}let a=`You are trying to call ${e==="action"?"serverAction()":"serverLoader()"} on a route that does not have a server ${e} (routeId: "${t.id}")`;if(e==="loader"&&!t.hasLoader||e==="action"&&!t.hasAction)throw console.error(a),new U(400,"Bad Request",new Error(a),!0)}function W(e,t){let r=e==="clientAction"?"a":"an",n=`Route "${t}" does not have ${r} ${e}, but you are trying to submit to it. To fix this, please add ${r} \`${e}\` function to the route`;throw console.error(n),new U(405,"Method Not Allowed",new Error(n),!0)}function ne(e,t,r,n,a,i="",s=Ce(e),l){return(s[i]||[]).map(o=>{let h=t[o.id];async function m(x,v,S){if(typeof S=="function")return await S();let w=await Zt(x,o);return v?Qt(w):w}function u(x,v,S){return o.hasLoader?m(x,v,S):Promise.resolve(null)}function d(x,v,S){if(!o.hasAction)throw W("action",o.id);return m(x,v,S)}async function y(x){let v=t[o.id],S=v?Le(o,v):Promise.resolve();try{return x()}finally{await S}}let f={id:o.id,index:o.index,path:o.path};if(h){var p,g,E;Object.assign(f,{...f,...Wt(o,h,a),handle:h.handle,shouldRevalidate:me(n,h,o.id,l)});let x=r==null||(p=r.loaderData)===null||p===void 0?void 0:p[o.id],v=r==null||(g=r.errors)===null||g===void 0?void 0:g[o.id],S=l==null&&(((E=h.clientLoader)===null||E===void 0?void 0:E.hydrate)===!0||!o.hasLoader);f.loader=async({request:w,params:R},_)=>{try{return await y(async()=>(P(h,"No `routeModule` available for critical-route loader"),h.clientLoader?h.clientLoader({request:w,params:R,async serverLoader(){if(I("loader",o,a),S){if(x!==void 0)return x;if(v!==void 0)throw v;return null}return u(w,!0,_)}}):a?null:u(w,!1,_)))}finally{S=!1}},f.loader.hydrate=er(o,h,a),f.action=({request:w,params:R},_)=>y(async()=>{if(P(h,"No `routeModule` available for critical-route action"),!h.clientAction){if(a)throw W("clientAction",o.id);return d(w,!1,_)}return h.clientAction({request:w,params:R,async serverAction(){return I("action",o,a),d(w,!0,_)}})})}else o.hasClientLoader||(f.loader=({request:x},v)=>y(()=>a?Promise.resolve(null):u(x,!1,v))),o.hasClientAction||(f.action=({request:x},v)=>y(()=>{if(a)throw W("clientAction",o.id);return d(x,!1,v)})),f.lazy=async()=>{let x=await Kt(o,t),v={...x};if(x.clientLoader){let S=x.clientLoader;v.loader=(w,R)=>S({...w,async serverLoader(){return I("loader",o,a),u(w.request,!0,R)}})}if(x.clientAction){let S=x.clientAction;v.action=(w,R)=>S({...w,async serverAction(){return I("action",o,a),d(w.request,!0,R)}})}return{...v.loader?{loader:v.loader}:{},...v.action?{action:v.action}:{},hasErrorBoundary:v.hasErrorBoundary,shouldRevalidate:me(n,v,o.id,l),handle:v.handle,Component:v.Component,ErrorBoundary:v.ErrorBoundary}};let b=ne(e,t,r,n,a,o.id,s,l);return b.length>0&&(f.children=b),f})}function me(e,t,r,n){if(n)return Gt(r,t.shouldRevalidate,n);if(e.v3_singleFetch&&t.shouldRevalidate){let a=t.shouldRevalidate;return i=>a({...i,defaultShouldRevalidate:!0})}return t.shouldRevalidate}function Gt(e,t,r){let n=!1;return a=>n?t?t(a):a.defaultShouldRevalidate:(n=!0,r.has(e))}async function Kt(e,t){let r=await _e(e,t);return await Le(e,r),{Component:je(r),ErrorBoundary:r.ErrorBoundary,clientAction:r.clientAction,clientLoader:r.clientLoader,handle:r.handle,links:r.links,meta:r.meta,shouldRevalidate:r.shouldRevalidate}}async function Zt(e,t){let r=await Pe(e,t.id);if(r instanceof Error)throw r;if(Ft(r))throw qt(r);if(Ct(r))throw r;return It(r)&&r.body?await Ut(r.body):r}function Qt(e){if(Ht(e))return e.data;if(te(e)){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.json():e.text()}return e}function qt(e){let t=parseInt(e.headers.get("X-Remix-Status"),10)||302,r=e.headers.get("X-Remix-Redirect"),n={},a=e.headers.get("X-Remix-Revalidate");a&&(n["X-Remix-Revalidate"]=a);let i=e.headers.get("X-Remix-Reload-Document");i&&(n["X-Remix-Reload-Document"]=i);let s=e.headers.get("X-Remix-Replace");return s&&(n["X-Remix-Replace"]=s),we(r,{status:t,headers:n})}function je(e){if(e.default==null)return;if(!(typeof e.default=="object"&&Object.keys(e.default).length===0))return e.default}function er(e,t,r){return r&&e.id!=="root"||t.clientLoader!=null&&(t.clientLoader.hydrate===!0||e.hasLoader!==!0)}/**
119
+ * @remix-run/react v2.17.4
120
120
  *
121
121
  * Copyright (c) Remix Software Inc.
122
122
  *
@@ -124,17 +124,17 @@ var ze=Object.defineProperty;var Be=(e,t,r)=>t in e?ze(e,t,{enumerable:!0,config
124
124
  * LICENSE.md file in the root directory of this source tree.
125
125
  *
126
126
  * @license MIT
127
- */const H=new Set,tr=1e3,J=new Set,rr=7680;function ae(e,t){return e.v3_lazyRouteDiscovery===!0&&!t}function nr(e,t){let r=new Set(t.state.matches.map(s=>s.route.id)),n=t.state.location.pathname.split("/").filter(Boolean),a=["/"];for(n.pop();n.length>0;)a.push(`/${n.join("/")}`),n.pop();a.forEach(s=>{let l=we(t.routes,s,t.basename);l&&l.forEach(o=>r.add(o.route.id))});let i=[...r].reduce((s,l)=>Object.assign(s,{[l]:e.routes[l]}),{});return{...e,routes:i}}function Sr(e,t,r,n,a){if(ae(r,n))return async({path:i,patch:s,signal:l,fetcherKey:o})=>{J.has(i)||await $e([i],o?window.location.href:i,e,t,r,n,a,s,l)}}function Rr(e,t,r,n,a){c.useEffect(()=>{var i;if(!ae(n,a)||((i=navigator.connection)===null||i===void 0?void 0:i.saveData)===!0)return;function s(u){let d=u.tagName==="FORM"?u.getAttribute("action"):u.getAttribute("href");if(!d)return;let y=new URL(d,window.location.origin);J.has(y.pathname)||H.add(y.pathname)}async function l(){let u=Array.from(H.keys()).filter(d=>J.has(d)?(H.delete(d),!1):!0);if(u.length!==0)try{await $e(u,null,t,r,n,a,e.basename,e.patchRoutes)}catch(d){console.error("Failed to fetch manifest patches",d)}}document.body.querySelectorAll("a[data-discover], form[data-discover]").forEach(u=>s(u)),l();let o=ir(l,100);function h(u){return u.nodeType===Node.ELEMENT_NODE}let m=new MutationObserver(u=>{let d=new Set;u.forEach(y=>{[y.target,...y.addedNodes].forEach(f=>{h(f)&&((f.tagName==="A"&&f.getAttribute("data-discover")||f.tagName==="FORM"&&f.getAttribute("data-discover"))&&d.add(f),f.tagName!=="A"&&f.querySelectorAll("a[data-discover], form[data-discover]").forEach(p=>d.add(p)))})}),d.forEach(y=>s(y)),o()});return m.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["data-discover","href","action"]}),()=>m.disconnect()},[n,a,t,r,e])}const G="remix-manifest-version";async function $e(e,t,r,n,a,i,s,l,o){let h=`${s??"/"}/__manifest`.replace(/\/+/g,"/"),m=new URL(h,window.location.origin);if(e.sort().forEach(p=>m.searchParams.append("p",p)),m.searchParams.set("version",r.version),m.toString().length>rr){H.clear();return}let u;try{let p=await fetch(m,{signal:o});if(p.ok){if(p.status===204&&p.headers.has("X-Remix-Reload-Document")){if(!t){console.warn("Detected a manifest version mismatch during eager route discovery. The next navigation/fetch to an undiscovered route will result in a new document navigation to sync up with the latest manifest.");return}if(sessionStorage.getItem(G)===r.version){console.error("Unable to discover routes due to manifest version mismatch.");return}throw sessionStorage.setItem(G,r.version),window.location.href=t,new Error("Detected manifest version mismatch, reloading...")}else if(p.status>=400)throw new Error(await p.text())}else throw new Error(`${p.status} ${p.statusText}`);sessionStorage.removeItem(G),u=await p.json()}catch(p){if(o!=null&&o.aborted)return;throw p}let d=new Set(Object.keys(r.routes)),y=Object.values(u).reduce((p,g)=>d.has(g.id)?p:Object.assign(p,{[g.id]:g}),{});Object.assign(r.routes,y),e.forEach(p=>ar(p,J));let f=new Set;Object.values(y).forEach(p=>{(!p.parentId||!y[p.parentId])&&f.add(p.parentId)}),f.forEach(p=>l(p||null,ne(y,n,null,a,i,p)))}function ar(e,t){if(t.size>=tr){let r=t.values().next().value;typeof r=="string"&&t.delete(r)}t.add(e)}function ir(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}function Fe(){let e=c.useContext(Ke);return P(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Y(){let e=c.useContext(Ze);return P(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}const Ie=c.createContext(void 0);Ie.displayName="Remix";function T(){let e=c.useContext(Ie);return P(e,"You must render this element inside a <Remix> element"),e}function He(e,t){let[r,n]=c.useState(!1),[a,i]=c.useState(!1),{onFocus:s,onBlur:l,onMouseEnter:o,onMouseLeave:h,onTouchStart:m}=t,u=c.useRef(null);c.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let f=g=>{g.forEach(E=>{i(E.isIntersecting)})},p=new IntersectionObserver(f,{threshold:.5});return u.current&&p.observe(u.current),()=>{p.disconnect()}}},[e]);let d=()=>{e==="intent"&&n(!0)},y=()=>{e==="intent"&&(n(!1),i(!1))};return c.useEffect(()=>{if(r){let f=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(f)}}},[r]),[a,u,{onFocus:C(s,d),onBlur:C(l,y),onMouseEnter:C(o,d),onMouseLeave:C(h,y),onTouchStart:C(m,d)}]}const ie=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function oe(e,t,r){return e==="render"&&!t&&!r?"true":void 0}let or=c.forwardRef(({to:e,prefetch:t="none",discover:r="render",...n},a)=>{let i=typeof e=="string"&&ie.test(e),s=Ee(e),[l,o,h]=He(t,n);return c.createElement(c.Fragment,null,c.createElement(et,L({},n,h,{ref:Me(a,o),to:e,"data-discover":oe(r,i,n.reloadDocument)})),l&&!i?c.createElement(se,{page:s}):null)});or.displayName="NavLink";let lr=c.forwardRef(({to:e,prefetch:t="none",discover:r="render",...n},a)=>{let i=typeof e=="string"&&ie.test(e),s=Ee(e),[l,o,h]=He(t,n);return c.createElement(c.Fragment,null,c.createElement(tt,L({},n,h,{ref:Me(a,o),to:e,"data-discover":oe(r,i,n.reloadDocument)})),l&&!i?c.createElement(se,{page:s}):null)});lr.displayName="Link";let sr=c.forwardRef(({discover:e="render",...t},r)=>{let n=typeof t.action=="string"&&ie.test(t.action);return c.createElement(rt,L({},t,{ref:r,"data-discover":oe(e,n,t.reloadDocument)}))});sr.displayName="Form";function C(e,t){return r=>{e&&e(r),r.defaultPrevented||t(r)}}function le(e,t,r){if(r&&!M)return[e[0]];if(t){let n=e.findIndex(a=>t[a.route.id]!==void 0);return e.slice(0,n+1)}return e}function xr(){let{isSpaMode:e,manifest:t,routeModules:r,criticalCss:n}=T(),{errors:a,matches:i}=Y(),s=le(i,a,e),l=c.useMemo(()=>xt(s,r,t),[s,r,t]);return c.createElement(c.Fragment,null,n?c.createElement("style",{dangerouslySetInnerHTML:{__html:n}}):null,l.map(({key:o,link:h})=>q(h)?c.createElement(se,L({key:o},h)):c.createElement("link",L({key:o},h))))}function se({page:e,...t}){let{router:r}=Fe(),n=c.useMemo(()=>we(r.routes,e,r.basename),[r.routes,e,r.basename]);return n?c.createElement(cr,L({page:e,matches:n},t)):(console.warn(`Tried to prefetch ${e} but no routes matched.`),null)}function ur(e){let{manifest:t,routeModules:r}=T(),[n,a]=c.useState([]);return c.useEffect(()=>{let i=!1;return Lt(e,t,r).then(s=>{i||a(s)}),()=>{i=!0}},[e,t,r]),n}function cr({page:e,matches:t,...r}){let n=ge(),{future:a,manifest:i,routeModules:s}=T(),{loaderData:l,matches:o}=Y(),h=c.useMemo(()=>ce(e,t,o,i,n,a,"data"),[e,t,o,i,n,a]),m=c.useMemo(()=>{if(!a.v3_singleFetch)return Ot(e,h,i);if(e===n.pathname+n.search+n.hash)return[];let f=new Set,p=!1;if(t.forEach(E=>{var b;i.routes[E.route.id].hasLoader&&(!h.some(x=>x.route.id===E.route.id)&&E.route.id in l&&(b=s[E.route.id])!==null&&b!==void 0&&b.shouldRevalidate||i.routes[E.route.id].hasClientLoader?p=!0:f.add(E.route.id))}),f.size===0)return[];let g=B(e);return p&&f.size>0&&g.searchParams.set("_routes",t.filter(E=>f.has(E.route.id)).map(E=>E.route.id).join(",")),[g.pathname+g.search]},[a.v3_singleFetch,l,n,i,h,t,e,s]),u=c.useMemo(()=>ce(e,t,o,i,n,a,"assets"),[e,t,o,i,n,a]),d=c.useMemo(()=>kt(u,i),[u,i]),y=ur(u);return c.createElement(c.Fragment,null,m.map(f=>c.createElement("link",L({key:f,rel:"prefetch",as:"fetch",href:f},r))),d.map(f=>c.createElement("link",L({key:f,rel:"modulepreload",href:f},r))),y.map(({key:f,link:p})=>c.createElement("link",L({key:f},p))))}function br(){let{isSpaMode:e,routeModules:t}=T(),{errors:r,matches:n,loaderData:a}=Y(),i=ge(),s=le(n,r,e),l=null;r&&(l=r[s[s.length-1].route.id]);let o=[],h=null,m=[];for(let u=0;u<s.length;u++){let d=s[u],y=d.route.id,f=a[y],p=d.params,g=t[y],E=[],b={id:y,data:f,meta:[],params:d.params,pathname:d.pathname,handle:d.route.handle,error:l};if(m[u]=b,g!=null&&g.meta?E=typeof g.meta=="function"?g.meta({data:f,params:p,location:i,matches:m,error:l}):Array.isArray(g.meta)?[...g.meta]:g.meta:h&&(E=[...h]),E=E||[],!Array.isArray(E))throw new Error("The route at "+d.route.path+` returns an invalid value. All route meta functions must return an array of meta objects.
127
+ */const H=new Set,tr=1e3,J=new Set,rr=7680;function ae(e,t){return e.v3_lazyRouteDiscovery===!0&&!t}function nr(e,t){let r=new Set(t.state.matches.map(s=>s.route.id)),n=t.state.location.pathname.split("/").filter(Boolean),a=["/"];for(n.pop();n.length>0;)a.push(`/${n.join("/")}`),n.pop();a.forEach(s=>{let l=ve(t.routes,s,t.basename);l&&l.forEach(o=>r.add(o.route.id))});let i=[...r].reduce((s,l)=>Object.assign(s,{[l]:e.routes[l]}),{});return{...e,routes:i}}function Sr(e,t,r,n,a){if(ae(r,n))return async({path:i,patch:s,signal:l,fetcherKey:o})=>{J.has(i)||await $e([i],o?window.location.href:i,e,t,r,n,a,s,l)}}function Rr(e,t,r,n,a){c.useEffect(()=>{var i;if(!ae(n,a)||((i=navigator.connection)===null||i===void 0?void 0:i.saveData)===!0)return;function s(u){let d=u.tagName==="FORM"?u.getAttribute("action"):u.getAttribute("href");if(!d)return;let y=new URL(d,window.location.origin);J.has(y.pathname)||H.add(y.pathname)}async function l(){let u=Array.from(H.keys()).filter(d=>J.has(d)?(H.delete(d),!1):!0);if(u.length!==0)try{await $e(u,null,t,r,n,a,e.basename,e.patchRoutes)}catch(d){console.error("Failed to fetch manifest patches",d)}}document.body.querySelectorAll("a[data-discover], form[data-discover]").forEach(u=>s(u)),l();let o=ir(l,100);function h(u){return u.nodeType===Node.ELEMENT_NODE}let m=new MutationObserver(u=>{let d=new Set;u.forEach(y=>{[y.target,...y.addedNodes].forEach(f=>{h(f)&&((f.tagName==="A"&&f.getAttribute("data-discover")||f.tagName==="FORM"&&f.getAttribute("data-discover"))&&d.add(f),f.tagName!=="A"&&f.querySelectorAll("a[data-discover], form[data-discover]").forEach(p=>d.add(p)))})}),d.forEach(y=>s(y)),o()});return m.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["data-discover","href","action"]}),()=>m.disconnect()},[n,a,t,r,e])}const G="remix-manifest-version";async function $e(e,t,r,n,a,i,s,l,o){let h=`${s??"/"}/__manifest`.replace(/\/+/g,"/"),m=new URL(h,window.location.origin);if(e.sort().forEach(p=>m.searchParams.append("p",p)),m.searchParams.set("version",r.version),m.toString().length>rr){H.clear();return}let u;try{let p=await fetch(m,{signal:o});if(p.ok){if(p.status===204&&p.headers.has("X-Remix-Reload-Document")){if(!t){console.warn("Detected a manifest version mismatch during eager route discovery. The next navigation/fetch to an undiscovered route will result in a new document navigation to sync up with the latest manifest.");return}if(sessionStorage.getItem(G)===r.version){console.error("Unable to discover routes due to manifest version mismatch.");return}throw sessionStorage.setItem(G,r.version),window.location.href=t,new Error("Detected manifest version mismatch, reloading...")}else if(p.status>=400)throw new Error(await p.text())}else throw new Error(`${p.status} ${p.statusText}`);sessionStorage.removeItem(G),u=await p.json()}catch(p){if(o!=null&&o.aborted)return;throw p}let d=new Set(Object.keys(r.routes)),y=Object.values(u).reduce((p,g)=>d.has(g.id)?p:Object.assign(p,{[g.id]:g}),{});Object.assign(r.routes,y),e.forEach(p=>ar(p,J));let f=new Set;Object.values(y).forEach(p=>{(!p.parentId||!y[p.parentId])&&f.add(p.parentId)}),f.forEach(p=>l(p||null,ne(y,n,null,a,i,p)))}function ar(e,t){if(t.size>=tr){let r=t.values().next().value;typeof r=="string"&&t.delete(r)}t.add(e)}function ir(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}function Fe(){let e=c.useContext(Ke);return P(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Y(){let e=c.useContext(Ze);return P(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}const Ie=c.createContext(void 0);Ie.displayName="Remix";function T(){let e=c.useContext(Ie);return P(e,"You must render this element inside a <Remix> element"),e}function He(e,t){let[r,n]=c.useState(!1),[a,i]=c.useState(!1),{onFocus:s,onBlur:l,onMouseEnter:o,onMouseLeave:h,onTouchStart:m}=t,u=c.useRef(null);c.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let f=g=>{g.forEach(E=>{i(E.isIntersecting)})},p=new IntersectionObserver(f,{threshold:.5});return u.current&&p.observe(u.current),()=>{p.disconnect()}}},[e]);let d=()=>{e==="intent"&&n(!0)},y=()=>{e==="intent"&&(n(!1),i(!1))};return c.useEffect(()=>{if(r){let f=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(f)}}},[r]),[a,u,{onFocus:C(s,d),onBlur:C(l,y),onMouseEnter:C(o,d),onMouseLeave:C(h,y),onTouchStart:C(m,d)}]}const ie=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function oe(e,t,r){return e==="render"&&!t&&!r?"true":void 0}let or=c.forwardRef(({to:e,prefetch:t="none",discover:r="render",...n},a)=>{let i=typeof e=="string"&&ie.test(e),s=Ee(e),[l,o,h]=He(t,n);return c.createElement(c.Fragment,null,c.createElement(et,L({},n,h,{ref:Me(a,o),to:e,"data-discover":oe(r,i,n.reloadDocument)})),l&&!i?c.createElement(se,{page:s}):null)});or.displayName="NavLink";let lr=c.forwardRef(({to:e,prefetch:t="none",discover:r="render",...n},a)=>{let i=typeof e=="string"&&ie.test(e),s=Ee(e),[l,o,h]=He(t,n);return c.createElement(c.Fragment,null,c.createElement(tt,L({},n,h,{ref:Me(a,o),to:e,"data-discover":oe(r,i,n.reloadDocument)})),l&&!i?c.createElement(se,{page:s}):null)});lr.displayName="Link";let sr=c.forwardRef(({discover:e="render",...t},r)=>{let n=typeof t.action=="string"&&ie.test(t.action);return c.createElement(rt,L({},t,{ref:r,"data-discover":oe(e,n,t.reloadDocument)}))});sr.displayName="Form";function C(e,t){return r=>{e&&e(r),r.defaultPrevented||t(r)}}function le(e,t,r){if(r&&!M)return[e[0]];if(t){let n=e.findIndex(a=>t[a.route.id]!==void 0);return e.slice(0,n+1)}return e}function xr(){let{isSpaMode:e,manifest:t,routeModules:r,criticalCss:n}=T(),{errors:a,matches:i}=Y(),s=le(i,a,e),l=c.useMemo(()=>xt(s,r,t),[s,r,t]);return c.createElement(c.Fragment,null,n?c.createElement("style",{dangerouslySetInnerHTML:{__html:n}}):null,l.map(({key:o,link:h})=>q(h)?c.createElement(se,L({key:o},h)):c.createElement("link",L({key:o},h))))}function se({page:e,...t}){let{router:r}=Fe(),n=c.useMemo(()=>ve(r.routes,e,r.basename),[r.routes,e,r.basename]);return n?c.createElement(cr,L({page:e,matches:n},t)):(console.warn(`Tried to prefetch ${e} but no routes matched.`),null)}function ur(e){let{manifest:t,routeModules:r}=T(),[n,a]=c.useState([]);return c.useEffect(()=>{let i=!1;return Lt(e,t,r).then(s=>{i||a(s)}),()=>{i=!0}},[e,t,r]),n}function cr({page:e,matches:t,...r}){let n=ge(),{future:a,manifest:i,routeModules:s}=T(),{loaderData:l,matches:o}=Y(),h=c.useMemo(()=>ce(e,t,o,i,n,a,"data"),[e,t,o,i,n,a]),m=c.useMemo(()=>{if(!a.v3_singleFetch)return Ot(e,h,i);if(e===n.pathname+n.search+n.hash)return[];let f=new Set,p=!1;if(t.forEach(E=>{var b;i.routes[E.route.id].hasLoader&&(!h.some(x=>x.route.id===E.route.id)&&E.route.id in l&&(b=s[E.route.id])!==null&&b!==void 0&&b.shouldRevalidate||i.routes[E.route.id].hasClientLoader?p=!0:f.add(E.route.id))}),f.size===0)return[];let g=B(e);return p&&f.size>0&&g.searchParams.set("_routes",t.filter(E=>f.has(E.route.id)).map(E=>E.route.id).join(",")),[g.pathname+g.search]},[a.v3_singleFetch,l,n,i,h,t,e,s]),u=c.useMemo(()=>ce(e,t,o,i,n,a,"assets"),[e,t,o,i,n,a]),d=c.useMemo(()=>kt(u,i),[u,i]),y=ur(u);return c.createElement(c.Fragment,null,m.map(f=>c.createElement("link",L({key:f,rel:"prefetch",as:"fetch",href:f},r))),d.map(f=>c.createElement("link",L({key:f,rel:"modulepreload",href:f},r))),y.map(({key:f,link:p})=>c.createElement("link",L({key:f},p))))}function br(){let{isSpaMode:e,routeModules:t}=T(),{errors:r,matches:n,loaderData:a}=Y(),i=ge(),s=le(n,r,e),l=null;r&&(l=r[s[s.length-1].route.id]);let o=[],h=null,m=[];for(let u=0;u<s.length;u++){let d=s[u],y=d.route.id,f=a[y],p=d.params,g=t[y],E=[],b={id:y,data:f,meta:[],params:d.params,pathname:d.pathname,handle:d.route.handle,error:l};if(m[u]=b,g!=null&&g.meta?E=typeof g.meta=="function"?g.meta({data:f,params:p,location:i,matches:m,error:l}):Array.isArray(g.meta)?[...g.meta]:g.meta:h&&(E=[...h]),E=E||[],!Array.isArray(E))throw new Error("The route at "+d.route.path+` returns an invalid value. All route meta functions must return an array of meta objects.
128
128
 
129
- To reference the meta function API, see https://remix.run/route/meta`);b.meta=E,m[u]=b,o=[...E],h=o}return c.createElement(c.Fragment,null,o.flat().map(u=>{if(!u)return null;if("tagName"in u){let{tagName:d,...y}=u;if(!dr(d))return console.warn(`A meta object uses an invalid tagName: ${d}. Expected either 'link' or 'meta'`),null;let f=d;return c.createElement(f,L({key:JSON.stringify(y)},y))}if("title"in u)return c.createElement("title",{key:"title"},String(u.title));if("charset"in u&&(u.charSet??(u.charSet=u.charset),delete u.charset),"charSet"in u&&u.charSet!=null)return typeof u.charSet=="string"?c.createElement("meta",{key:"charSet",charSet:u.charSet}):null;if("script:ld+json"in u)try{let d=JSON.stringify(u["script:ld+json"]);return c.createElement("script",{key:`script:ld+json:${d}`,type:"application/ld+json",dangerouslySetInnerHTML:{__html:d}})}catch{return null}return c.createElement("meta",L({key:JSON.stringify(u)},u))}))}function dr(e){return typeof e=="string"&&/^(meta|link)$/.test(e)}function fr(e){return c.createElement(Qe,e)}let M=!1;function hr(e){let{manifest:t,serverHandoffString:r,abortDelay:n,serializeError:a,isSpaMode:i,future:s,renderMeta:l}=T(),{router:o,static:h,staticContext:m}=Fe(),{matches:u}=Y(),d=ae(s,i);l&&(l.didRenderScripts=!0);let y=le(u,null,i);c.useEffect(()=>{M=!0},[]);let f=(v,R)=>{let _;return a&&R instanceof Error?_=a(R):_=R,`${JSON.stringify(v)}:__remixContext.p(!1, ${F(JSON.stringify(_))})`},p=(v,R,_)=>{let O;try{O=JSON.stringify(_)}catch(A){return f(R,A)}return`${JSON.stringify(R)}:__remixContext.p(${F(O)})`},g=(v,R,_)=>{let O;return a&&_ instanceof Error?O=a(_):O=_,`__remixContext.r(${JSON.stringify(v)}, ${JSON.stringify(R)}, !1, ${F(JSON.stringify(O))})`},E=(v,R,_)=>{let O;try{O=JSON.stringify(_)}catch(A){return g(v,R,A)}return`__remixContext.r(${JSON.stringify(v)}, ${JSON.stringify(R)}, ${F(O)})`},b=[],x=c.useMemo(()=>{var v;let R=s.v3_singleFetch?"window.__remixContext.stream = new ReadableStream({start(controller){window.__remixContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());":"",_=m?`window.__remixContext = ${r};${R}`:" ",O=s.v3_singleFetch||m==null?void 0:m.activeDeferreds;_+=O?["__remixContext.p = function(v,e,p,x) {"," if (typeof e !== 'undefined') {",` x=new Error("Unexpected Server Error");
129
+ To reference the meta function API, see https://remix.run/route/meta`);b.meta=E,m[u]=b,o=[...E],h=o}return c.createElement(c.Fragment,null,o.flat().map(u=>{if(!u)return null;if("tagName"in u){let{tagName:d,...y}=u;if(!dr(d))return console.warn(`A meta object uses an invalid tagName: ${d}. Expected either 'link' or 'meta'`),null;let f=d;return c.createElement(f,L({key:JSON.stringify(y)},y))}if("title"in u)return c.createElement("title",{key:"title"},String(u.title));if("charset"in u&&(u.charSet??(u.charSet=u.charset),delete u.charset),"charSet"in u&&u.charSet!=null)return typeof u.charSet=="string"?c.createElement("meta",{key:"charSet",charSet:u.charSet}):null;if("script:ld+json"in u)try{let d=JSON.stringify(u["script:ld+json"]);return c.createElement("script",{key:`script:ld+json:${d}`,type:"application/ld+json",dangerouslySetInnerHTML:{__html:j(d)}})}catch{return null}return c.createElement("meta",L({key:JSON.stringify(u)},u))}))}function dr(e){return typeof e=="string"&&/^(meta|link)$/.test(e)}function fr(e){return c.createElement(Qe,e)}let M=!1;function hr(e){let{manifest:t,serverHandoffString:r,abortDelay:n,serializeError:a,isSpaMode:i,future:s,renderMeta:l}=T(),{router:o,static:h,staticContext:m}=Fe(),{matches:u}=Y(),d=ae(s,i);l&&(l.didRenderScripts=!0);let y=le(u,null,i);c.useEffect(()=>{M=!0},[]);let f=(w,R)=>{let _;return a&&R instanceof Error?_=a(R):_=R,`${JSON.stringify(w)}:__remixContext.p(!1, ${j(JSON.stringify(_))})`},p=(w,R,_)=>{let O;try{O=JSON.stringify(_)}catch(A){return f(R,A)}return`${JSON.stringify(R)}:__remixContext.p(${j(O)})`},g=(w,R,_)=>{let O;return a&&_ instanceof Error?O=a(_):O=_,`__remixContext.r(${JSON.stringify(w)}, ${JSON.stringify(R)}, !1, ${j(JSON.stringify(O))})`},E=(w,R,_)=>{let O;try{O=JSON.stringify(_)}catch(A){return g(w,R,A)}return`__remixContext.r(${JSON.stringify(w)}, ${JSON.stringify(R)}, ${j(O)})`},b=[],x=c.useMemo(()=>{var w;let R=s.v3_singleFetch?"window.__remixContext.stream = new ReadableStream({start(controller){window.__remixContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());":"",_=m?`window.__remixContext = ${r};${R}`:" ",O=s.v3_singleFetch||m==null?void 0:m.activeDeferreds;_+=O?["__remixContext.p = function(v,e,p,x) {"," if (typeof e !== 'undefined') {",` x=new Error("Unexpected Server Error");
130
130
  x.stack=undefined;`," p=Promise.reject(x);"," } else {"," p=Promise.resolve(v);"," }"," return p;","};","__remixContext.n = function(i,k) {"," __remixContext.t = __remixContext.t || {};"," __remixContext.t[i] = __remixContext.t[i] || {};"," let p = new Promise((r, e) => {__remixContext.t[i][k] = {r:(v)=>{r(v);},e:(v)=>{e(v);}};});",typeof n=="number"?`setTimeout(() => {if(typeof p._error !== "undefined" || typeof p._data !== "undefined"){return;} __remixContext.t[i][k].e(new Error("Server timeout."))}, ${n});`:""," return p;","};","__remixContext.r = function(i,k,v,e,p,x) {"," p = __remixContext.t[i][k];"," if (typeof e !== 'undefined') {",` x=new Error("Unexpected Server Error");
131
131
  x.stack=undefined;`," p.e(x);"," } else {"," p.r(v);"," }","};"].join(`
132
132
  `)+Object.entries(O).map(([k,D])=>{let Ue=new Set(D.pendingKeys),Je=D.deferredKeys.map(N=>{if(Ue.has(N))return b.push(c.createElement(ye,{key:`${k} | ${N}`,deferredData:D,routeId:k,dataKey:N,scriptProps:e,serializeData:E,serializeError:g})),`${JSON.stringify(N)}:__remixContext.n(${JSON.stringify(k)}, ${JSON.stringify(N)})`;{let X=D.data[N];return typeof X._error<"u"?f(N,X._error):p(k,N,X._data)}}).join(`,
133
133
  `);return`Object.assign(__remixContext.state.loaderData[${JSON.stringify(k)}], {${Je}});`}).join(`
134
- `)+(b.length>0?`__remixContext.a=${b.length};`:""):"";let A=h?`${(v=t.hmr)!==null&&v!==void 0&&v.runtime?`import ${JSON.stringify(t.hmr.runtime)};`:""}${d?"":`import ${JSON.stringify(t.url)}`};
134
+ `)+(b.length>0?`__remixContext.a=${b.length};`:""):"";let A=h?`${(w=t.hmr)!==null&&w!==void 0&&w.runtime?`import ${JSON.stringify(t.hmr.runtime)};`:""}${d?"":`import ${JSON.stringify(t.url)}`};
135
135
  ${y.map((k,D)=>`import * as route${D} from ${JSON.stringify(t.routes[k.route.id].module)};`).join(`
136
136
  `)}
137
137
  ${d?`window.__remixManifest = ${JSON.stringify(nr(t,o),null,2)};`:""}
138
138
  window.__remixRouteModules = {${y.map((k,D)=>`${JSON.stringify(k.route.id)}:route${D}`).join(",")}};
139
139
 
140
- import(${JSON.stringify(t.entry.module)});`:" ";return c.createElement(c.Fragment,null,c.createElement("script",L({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:de(_),type:void 0})),c.createElement("script",L({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:de(A),type:"module",async:!0})))},[]);if(!h&&typeof __remixContext=="object"&&__remixContext.a)for(let v=0;v<__remixContext.a;v++)b.push(c.createElement(ye,{key:v,scriptProps:e,serializeData:E,serializeError:g}));let w=y.map(v=>{let R=t.routes[v.route.id];return(R.imports||[]).concat([R.module])}).flat(1),S=M?[]:t.entry.imports.concat(w);return M?null:c.createElement(c.Fragment,null,d?null:c.createElement("link",{rel:"modulepreload",href:t.url,crossOrigin:e.crossOrigin}),c.createElement("link",{rel:"modulepreload",href:t.entry.module,crossOrigin:e.crossOrigin}),yr(S).map(v=>c.createElement("link",{key:v,rel:"modulepreload",href:v,crossOrigin:e.crossOrigin})),x,b)}function ye({dataKey:e,deferredData:t,routeId:r,scriptProps:n,serializeData:a,serializeError:i}){return typeof document>"u"&&t&&e&&r&&P(t.pendingKeys.includes(e),`Deferred data for route ${r} with key ${e} was not pending but tried to render a script for it.`),c.createElement(c.Suspense,{fallback:typeof document>"u"&&t&&e&&r?null:c.createElement("script",L({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:" "}}))},typeof document>"u"&&t&&e&&r?c.createElement(fr,{resolve:t.data[e],errorElement:c.createElement(mr,{dataKey:e,routeId:r,scriptProps:n,serializeError:i}),children:s=>c.createElement("script",L({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:a(r,e,s)}}))}):c.createElement("script",L({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:" "}})))}function mr({dataKey:e,routeId:t,scriptProps:r,serializeError:n}){let a=qe();return c.createElement("script",L({},r,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:n(t,e,a)}}))}function yr(e){return[...new Set(e)]}function Me(...e){return t=>{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})}}export{xr as L,br as M,Ie as R,hr as S,L as _,wr as a,Er as b,ne as c,Xt as d,gr as e,T as f,Sr as g,P as i,er as s,Rr as u};
140
+ import(${JSON.stringify(t.entry.module)});`:" ";return c.createElement(c.Fragment,null,c.createElement("script",L({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:de(_),type:void 0})),c.createElement("script",L({},e,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:de(A),type:"module",async:!0})))},[]);if(!h&&typeof __remixContext=="object"&&__remixContext.a)for(let w=0;w<__remixContext.a;w++)b.push(c.createElement(ye,{key:w,scriptProps:e,serializeData:E,serializeError:g}));let v=y.map(w=>{let R=t.routes[w.route.id];return(R.imports||[]).concat([R.module])}).flat(1),S=M?[]:t.entry.imports.concat(v);return M?null:c.createElement(c.Fragment,null,d?null:c.createElement("link",{rel:"modulepreload",href:t.url,crossOrigin:e.crossOrigin}),c.createElement("link",{rel:"modulepreload",href:t.entry.module,crossOrigin:e.crossOrigin}),yr(S).map(w=>c.createElement("link",{key:w,rel:"modulepreload",href:w,crossOrigin:e.crossOrigin})),x,b)}function ye({dataKey:e,deferredData:t,routeId:r,scriptProps:n,serializeData:a,serializeError:i}){return typeof document>"u"&&t&&e&&r&&P(t.pendingKeys.includes(e),`Deferred data for route ${r} with key ${e} was not pending but tried to render a script for it.`),c.createElement(c.Suspense,{fallback:typeof document>"u"&&t&&e&&r?null:c.createElement("script",L({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:" "}}))},typeof document>"u"&&t&&e&&r?c.createElement(fr,{resolve:t.data[e],errorElement:c.createElement(mr,{dataKey:e,routeId:r,scriptProps:n,serializeError:i}),children:s=>c.createElement("script",L({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:a(r,e,s)}}))}):c.createElement("script",L({},n,{async:!0,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:" "}})))}function mr({dataKey:e,routeId:t,scriptProps:r,serializeError:n}){let a=qe();return c.createElement("script",L({},r,{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:n(t,e,a)}}))}function yr(e){return[...new Set(e)]}function Me(...e){return t=>{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})}}export{xr as L,br as M,Ie as R,hr as S,L as _,vr as a,Er as b,ne as c,Xt as d,gr as e,T as f,Sr as g,j as h,P as i,er as s,Rr as u};
@@ -1,5 +1,5 @@
1
- import{E as C,m as h,c as M,a as y,r,R as g,b as E,d as S,j as v}from"./index-DzNKzXrc.js";import{i as b,d as F,c as P,s as D,g as k,a as z,b as H,u as L,R as O,e as T}from"./components-Rk0n-9cK.js";/**
2
- * @remix-run/react v2.16.2
1
+ import{E as C,m as h,c as M,a as y,r,R as g,b as E,d as S,j as v}from"./index-CnFykb2v.js";import{i as b,d as F,c as P,s as D,g as k,a as z,b as H,u as L,R as O,e as T}from"./components-CaC6hG8d.js";/**
2
+ * @remix-run/react v2.17.4
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -8,7 +8,7 @@ import{E as C,m as h,c as M,a as y,r,R as g,b as E,d as S,j as v}from"./index-Dz
8
8
  *
9
9
  * @license MIT
10
10
  */function j(n){if(!n)return null;let x=Object.entries(n),u={};for(let[a,e]of x)if(e&&e.__type==="RouteErrorResponse")u[a]=new C(e.status,e.statusText,e.data,e.internal===!0);else if(e&&e.__type==="Error"){if(e.__subType){let i=window[e.__subType];if(typeof i=="function")try{let o=new i(e.message);o.stack=e.stack,u[a]=o}catch{}}if(u[a]==null){let i=new Error(e.message);i.stack=e.stack,u[a]=i}}else u[a]=e;return u}/**
11
- * @remix-run/react v2.16.2
11
+ * @remix-run/react v2.17.4
12
12
  *
13
13
  * Copyright (c) Remix Software Inc.
14
14
  *