skypilot-nightly 1.0.0.dev20251203__py3-none-any.whl → 1.0.0.dev20260112__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.
Files changed (245) hide show
  1. sky/__init__.py +6 -2
  2. sky/adaptors/aws.py +1 -61
  3. sky/adaptors/slurm.py +565 -0
  4. sky/backends/backend_utils.py +95 -12
  5. sky/backends/cloud_vm_ray_backend.py +224 -65
  6. sky/backends/task_codegen.py +380 -4
  7. sky/catalog/__init__.py +0 -3
  8. sky/catalog/data_fetchers/fetch_gcp.py +9 -1
  9. sky/catalog/data_fetchers/fetch_nebius.py +1 -1
  10. sky/catalog/data_fetchers/fetch_vast.py +4 -2
  11. sky/catalog/kubernetes_catalog.py +12 -4
  12. sky/catalog/seeweb_catalog.py +30 -15
  13. sky/catalog/shadeform_catalog.py +5 -2
  14. sky/catalog/slurm_catalog.py +236 -0
  15. sky/catalog/vast_catalog.py +30 -6
  16. sky/check.py +25 -11
  17. sky/client/cli/command.py +391 -32
  18. sky/client/interactive_utils.py +190 -0
  19. sky/client/sdk.py +64 -2
  20. sky/client/sdk_async.py +9 -0
  21. sky/clouds/__init__.py +2 -0
  22. sky/clouds/aws.py +60 -2
  23. sky/clouds/azure.py +2 -0
  24. sky/clouds/cloud.py +7 -0
  25. sky/clouds/kubernetes.py +2 -0
  26. sky/clouds/runpod.py +38 -7
  27. sky/clouds/slurm.py +610 -0
  28. sky/clouds/ssh.py +3 -2
  29. sky/clouds/vast.py +39 -16
  30. sky/core.py +197 -37
  31. sky/dashboard/out/404.html +1 -1
  32. sky/dashboard/out/_next/static/3nu-b8raeKRNABZ2d4GAG/_buildManifest.js +1 -0
  33. sky/dashboard/out/_next/static/chunks/1871-0565f8975a7dcd10.js +6 -0
  34. sky/dashboard/out/_next/static/chunks/2109-55a1546d793574a7.js +11 -0
  35. sky/dashboard/out/_next/static/chunks/2521-099b07cd9e4745bf.js +26 -0
  36. sky/dashboard/out/_next/static/chunks/2755.a636e04a928a700e.js +31 -0
  37. sky/dashboard/out/_next/static/chunks/3495.05eab4862217c1a5.js +6 -0
  38. sky/dashboard/out/_next/static/chunks/3785.cfc5dcc9434fd98c.js +1 -0
  39. sky/dashboard/out/_next/static/chunks/3850-fd5696f3bbbaddae.js +1 -0
  40. sky/dashboard/out/_next/static/chunks/3981.645d01bf9c8cad0c.js +21 -0
  41. sky/dashboard/out/_next/static/chunks/4083-0115d67c1fb57d6c.js +21 -0
  42. sky/dashboard/out/_next/static/chunks/{8640.5b9475a2d18c5416.js → 429.a58e9ba9742309ed.js} +2 -2
  43. sky/dashboard/out/_next/static/chunks/4555.8e221537181b5dc1.js +6 -0
  44. sky/dashboard/out/_next/static/chunks/4725.937865b81fdaaebb.js +6 -0
  45. sky/dashboard/out/_next/static/chunks/6082-edabd8f6092300ce.js +25 -0
  46. sky/dashboard/out/_next/static/chunks/6989-49cb7dca83a7a62d.js +1 -0
  47. sky/dashboard/out/_next/static/chunks/6990-630bd2a2257275f8.js +1 -0
  48. sky/dashboard/out/_next/static/chunks/7248-a99800d4db8edabd.js +1 -0
  49. sky/dashboard/out/_next/static/chunks/754-cfc5d4ad1b843d29.js +18 -0
  50. sky/dashboard/out/_next/static/chunks/8050-dd8aa107b17dce00.js +16 -0
  51. sky/dashboard/out/_next/static/chunks/8056-d4ae1e0cb81e7368.js +1 -0
  52. sky/dashboard/out/_next/static/chunks/8555.011023e296c127b3.js +6 -0
  53. sky/dashboard/out/_next/static/chunks/8821-93c25df904a8362b.js +1 -0
  54. sky/dashboard/out/_next/static/chunks/8969-0662594b69432ade.js +1 -0
  55. sky/dashboard/out/_next/static/chunks/9025.f15c91c97d124a5f.js +6 -0
  56. sky/dashboard/out/_next/static/chunks/9353-7ad6bd01858556f1.js +1 -0
  57. sky/dashboard/out/_next/static/chunks/pages/_app-5a86569acad99764.js +34 -0
  58. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-8297476714acb4ac.js +6 -0
  59. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-337c3ba1085f1210.js +1 -0
  60. sky/dashboard/out/_next/static/chunks/pages/{clusters-ee39056f9851a3ff.js → clusters-57632ff3684a8b5c.js} +1 -1
  61. sky/dashboard/out/_next/static/chunks/pages/{config-dfb9bf07b13045f4.js → config-718cdc365de82689.js} +1 -1
  62. sky/dashboard/out/_next/static/chunks/pages/infra/[context]-5fd3a453c079c2ea.js +1 -0
  63. sky/dashboard/out/_next/static/chunks/pages/infra-9f85c02c9c6cae9e.js +1 -0
  64. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-90f16972cbecf354.js +1 -0
  65. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-2dd42fc37aad427a.js +16 -0
  66. sky/dashboard/out/_next/static/chunks/pages/jobs-ed806aeace26b972.js +1 -0
  67. sky/dashboard/out/_next/static/chunks/pages/plugins/[...slug]-449a9f5a3bb20fb3.js +1 -0
  68. sky/dashboard/out/_next/static/chunks/pages/users-bec34706b36f3524.js +1 -0
  69. sky/dashboard/out/_next/static/chunks/pages/{volumes-b84b948ff357c43e.js → volumes-a83ba9b38dff7ea9.js} +1 -1
  70. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-84a40f8c7c627fe4.js → [name]-c781e9c3e52ef9fc.js} +1 -1
  71. sky/dashboard/out/_next/static/chunks/pages/workspaces-91e0942f47310aae.js +1 -0
  72. sky/dashboard/out/_next/static/chunks/webpack-cfe59cf684ee13b9.js +1 -0
  73. sky/dashboard/out/_next/static/css/b0dbca28f027cc19.css +3 -0
  74. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  75. sky/dashboard/out/clusters/[cluster].html +1 -1
  76. sky/dashboard/out/clusters.html +1 -1
  77. sky/dashboard/out/config.html +1 -1
  78. sky/dashboard/out/index.html +1 -1
  79. sky/dashboard/out/infra/[context].html +1 -1
  80. sky/dashboard/out/infra.html +1 -1
  81. sky/dashboard/out/jobs/[job].html +1 -1
  82. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  83. sky/dashboard/out/jobs.html +1 -1
  84. sky/dashboard/out/plugins/[...slug].html +1 -0
  85. sky/dashboard/out/users.html +1 -1
  86. sky/dashboard/out/volumes.html +1 -1
  87. sky/dashboard/out/workspace/new.html +1 -1
  88. sky/dashboard/out/workspaces/[name].html +1 -1
  89. sky/dashboard/out/workspaces.html +1 -1
  90. sky/data/data_utils.py +26 -12
  91. sky/data/mounting_utils.py +44 -5
  92. sky/global_user_state.py +111 -19
  93. sky/jobs/client/sdk.py +8 -3
  94. sky/jobs/controller.py +191 -31
  95. sky/jobs/recovery_strategy.py +109 -11
  96. sky/jobs/server/core.py +81 -4
  97. sky/jobs/server/server.py +14 -0
  98. sky/jobs/state.py +417 -19
  99. sky/jobs/utils.py +73 -80
  100. sky/models.py +11 -0
  101. sky/optimizer.py +8 -6
  102. sky/provision/__init__.py +12 -9
  103. sky/provision/common.py +20 -0
  104. sky/provision/docker_utils.py +15 -2
  105. sky/provision/kubernetes/utils.py +163 -20
  106. sky/provision/kubernetes/volume.py +52 -17
  107. sky/provision/provisioner.py +17 -7
  108. sky/provision/runpod/instance.py +3 -1
  109. sky/provision/runpod/utils.py +13 -1
  110. sky/provision/runpod/volume.py +25 -9
  111. sky/provision/slurm/__init__.py +12 -0
  112. sky/provision/slurm/config.py +13 -0
  113. sky/provision/slurm/instance.py +618 -0
  114. sky/provision/slurm/utils.py +689 -0
  115. sky/provision/vast/instance.py +4 -1
  116. sky/provision/vast/utils.py +11 -6
  117. sky/resources.py +135 -13
  118. sky/schemas/api/responses.py +4 -0
  119. sky/schemas/db/global_user_state/010_save_ssh_key.py +1 -1
  120. sky/schemas/db/spot_jobs/008_add_full_resources.py +34 -0
  121. sky/schemas/db/spot_jobs/009_job_events.py +32 -0
  122. sky/schemas/db/spot_jobs/010_job_events_timestamp_with_timezone.py +43 -0
  123. sky/schemas/db/spot_jobs/011_add_links.py +34 -0
  124. sky/schemas/generated/jobsv1_pb2.py +9 -5
  125. sky/schemas/generated/jobsv1_pb2.pyi +12 -0
  126. sky/schemas/generated/jobsv1_pb2_grpc.py +44 -0
  127. sky/schemas/generated/managed_jobsv1_pb2.py +32 -28
  128. sky/schemas/generated/managed_jobsv1_pb2.pyi +11 -2
  129. sky/serve/serve_utils.py +232 -40
  130. sky/serve/server/impl.py +1 -1
  131. sky/server/common.py +17 -0
  132. sky/server/constants.py +1 -1
  133. sky/server/metrics.py +6 -3
  134. sky/server/plugins.py +238 -0
  135. sky/server/requests/executor.py +5 -2
  136. sky/server/requests/payloads.py +30 -1
  137. sky/server/requests/request_names.py +4 -0
  138. sky/server/requests/requests.py +33 -11
  139. sky/server/requests/serializers/encoders.py +22 -0
  140. sky/server/requests/serializers/return_value_serializers.py +70 -0
  141. sky/server/server.py +506 -109
  142. sky/server/server_utils.py +30 -0
  143. sky/server/uvicorn.py +5 -0
  144. sky/setup_files/MANIFEST.in +1 -0
  145. sky/setup_files/dependencies.py +22 -9
  146. sky/sky_logging.py +2 -1
  147. sky/skylet/attempt_skylet.py +13 -3
  148. sky/skylet/constants.py +55 -13
  149. sky/skylet/events.py +10 -4
  150. sky/skylet/executor/__init__.py +1 -0
  151. sky/skylet/executor/slurm.py +187 -0
  152. sky/skylet/job_lib.py +91 -5
  153. sky/skylet/log_lib.py +22 -6
  154. sky/skylet/log_lib.pyi +8 -6
  155. sky/skylet/services.py +18 -3
  156. sky/skylet/skylet.py +5 -1
  157. sky/skylet/subprocess_daemon.py +2 -1
  158. sky/ssh_node_pools/constants.py +12 -0
  159. sky/ssh_node_pools/core.py +40 -3
  160. sky/ssh_node_pools/deploy/__init__.py +4 -0
  161. sky/{utils/kubernetes/deploy_ssh_node_pools.py → ssh_node_pools/deploy/deploy.py} +279 -504
  162. sky/ssh_node_pools/deploy/tunnel/ssh-tunnel.sh +379 -0
  163. sky/ssh_node_pools/deploy/tunnel_utils.py +199 -0
  164. sky/ssh_node_pools/deploy/utils.py +173 -0
  165. sky/ssh_node_pools/server.py +11 -13
  166. sky/{utils/kubernetes/ssh_utils.py → ssh_node_pools/utils.py} +9 -6
  167. sky/templates/kubernetes-ray.yml.j2 +12 -6
  168. sky/templates/slurm-ray.yml.j2 +115 -0
  169. sky/templates/vast-ray.yml.j2 +1 -0
  170. sky/templates/websocket_proxy.py +18 -41
  171. sky/users/model.conf +1 -1
  172. sky/users/permission.py +85 -52
  173. sky/users/rbac.py +31 -3
  174. sky/utils/annotations.py +108 -8
  175. sky/utils/auth_utils.py +42 -0
  176. sky/utils/cli_utils/status_utils.py +19 -5
  177. sky/utils/cluster_utils.py +10 -3
  178. sky/utils/command_runner.py +389 -35
  179. sky/utils/command_runner.pyi +43 -4
  180. sky/utils/common_utils.py +47 -31
  181. sky/utils/context.py +32 -0
  182. sky/utils/db/db_utils.py +36 -6
  183. sky/utils/db/migration_utils.py +41 -21
  184. sky/utils/infra_utils.py +5 -1
  185. sky/utils/instance_links.py +139 -0
  186. sky/utils/interactive_utils.py +49 -0
  187. sky/utils/kubernetes/generate_kubeconfig.sh +42 -33
  188. sky/utils/kubernetes/kubernetes_deploy_utils.py +2 -94
  189. sky/utils/kubernetes/rsync_helper.sh +5 -1
  190. sky/utils/kubernetes/ssh-tunnel.sh +7 -376
  191. sky/utils/plugin_extensions/__init__.py +14 -0
  192. sky/utils/plugin_extensions/external_failure_source.py +176 -0
  193. sky/utils/resources_utils.py +10 -8
  194. sky/utils/rich_utils.py +9 -11
  195. sky/utils/schemas.py +93 -19
  196. sky/utils/status_lib.py +7 -0
  197. sky/utils/subprocess_utils.py +17 -0
  198. sky/volumes/client/sdk.py +6 -3
  199. sky/volumes/server/core.py +65 -27
  200. sky_templates/ray/start_cluster +8 -4
  201. {skypilot_nightly-1.0.0.dev20251203.dist-info → skypilot_nightly-1.0.0.dev20260112.dist-info}/METADATA +67 -59
  202. {skypilot_nightly-1.0.0.dev20251203.dist-info → skypilot_nightly-1.0.0.dev20260112.dist-info}/RECORD +208 -180
  203. sky/dashboard/out/_next/static/96_E2yl3QAiIJGOYCkSpB/_buildManifest.js +0 -1
  204. sky/dashboard/out/_next/static/chunks/1141-e6aa9ab418717c59.js +0 -11
  205. sky/dashboard/out/_next/static/chunks/1871-7e202677c42f43fe.js +0 -6
  206. sky/dashboard/out/_next/static/chunks/2260-7703229c33c5ebd5.js +0 -1
  207. sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js +0 -1
  208. sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +0 -15
  209. sky/dashboard/out/_next/static/chunks/2755.edd818326d489a1d.js +0 -26
  210. sky/dashboard/out/_next/static/chunks/3294.20a8540fe697d5ee.js +0 -1
  211. sky/dashboard/out/_next/static/chunks/3785.7e245f318f9d1121.js +0 -1
  212. sky/dashboard/out/_next/static/chunks/3800-7b45f9fbb6308557.js +0 -1
  213. sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -1
  214. sky/dashboard/out/_next/static/chunks/4725.172ede95d1b21022.js +0 -1
  215. sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +0 -15
  216. sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +0 -13
  217. sky/dashboard/out/_next/static/chunks/6856-8f27d1c10c98def8.js +0 -1
  218. sky/dashboard/out/_next/static/chunks/6989-01359c57e018caa4.js +0 -1
  219. sky/dashboard/out/_next/static/chunks/6990-9146207c4567fdfd.js +0 -1
  220. sky/dashboard/out/_next/static/chunks/7359-c8d04e06886000b3.js +0 -30
  221. sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +0 -41
  222. sky/dashboard/out/_next/static/chunks/7615-019513abc55b3b47.js +0 -1
  223. sky/dashboard/out/_next/static/chunks/8969-452f9d5cbdd2dc73.js +0 -1
  224. sky/dashboard/out/_next/static/chunks/9025.fa408f3242e9028d.js +0 -6
  225. sky/dashboard/out/_next/static/chunks/9353-cff34f7e773b2e2b.js +0 -1
  226. sky/dashboard/out/_next/static/chunks/9360.a536cf6b1fa42355.js +0 -31
  227. sky/dashboard/out/_next/static/chunks/9847.3aaca6bb33455140.js +0 -30
  228. sky/dashboard/out/_next/static/chunks/pages/_app-bde01e4a2beec258.js +0 -34
  229. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-792db96d918c98c9.js +0 -16
  230. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-abfcac9c137aa543.js +0 -1
  231. sky/dashboard/out/_next/static/chunks/pages/infra/[context]-c0b5935149902e6f.js +0 -1
  232. sky/dashboard/out/_next/static/chunks/pages/infra-aed0ea19df7cf961.js +0 -1
  233. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-d66997e2bfc837cf.js +0 -16
  234. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-9faf940b253e3e06.js +0 -21
  235. sky/dashboard/out/_next/static/chunks/pages/jobs-2072b48b617989c9.js +0 -1
  236. sky/dashboard/out/_next/static/chunks/pages/users-f42674164aa73423.js +0 -1
  237. sky/dashboard/out/_next/static/chunks/pages/workspaces-531b2f8c4bf89f82.js +0 -1
  238. sky/dashboard/out/_next/static/chunks/webpack-64e05f17bf2cf8ce.js +0 -1
  239. sky/dashboard/out/_next/static/css/0748ce22df867032.css +0 -3
  240. /sky/dashboard/out/_next/static/{96_E2yl3QAiIJGOYCkSpB → 3nu-b8raeKRNABZ2d4GAG}/_ssgManifest.js +0 -0
  241. /sky/{utils/kubernetes → ssh_node_pools/deploy/tunnel}/cleanup-tunnel.sh +0 -0
  242. {skypilot_nightly-1.0.0.dev20251203.dist-info → skypilot_nightly-1.0.0.dev20260112.dist-info}/WHEEL +0 -0
  243. {skypilot_nightly-1.0.0.dev20251203.dist-info → skypilot_nightly-1.0.0.dev20260112.dist-info}/entry_points.txt +0 -0
  244. {skypilot_nightly-1.0.0.dev20251203.dist-info → skypilot_nightly-1.0.0.dev20260112.dist-info}/licenses/LICENSE +0 -0
  245. {skypilot_nightly-1.0.0.dev20251203.dist-info → skypilot_nightly-1.0.0.dev20260112.dist-info}/top_level.txt +0 -0
@@ -1,31 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9360,8640],{88507:function(e,s,t){t.d(s,{Z:function(){return r}});/**
2
- * @license lucide-react v0.407.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */let r=(0,t(60998).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},81260:function(e,s,t){t.d(s,{Z:function(){return r}});/**
7
- * @license lucide-react v0.407.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */let r=(0,t(60998).Z)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},47603:function(e,s,t){t.d(s,{Z:function(){return r}});/**
12
- * @license lucide-react v0.407.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */let r=(0,t(60998).Z)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},28586:function(e,s,t){t.d(s,{Z:function(){return r}});/**
17
- * @license lucide-react v0.407.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */let r=(0,t(60998).Z)("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]])},43767:function(e,s,t){t.d(s,{Z:function(){return r}});/**
22
- * @license lucide-react v0.407.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */let r=(0,t(60998).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},1812:function(e,s,t){t.d(s,{X:function(){return l}});var r=t(85893),a=t(67294);let n=e=>{if(!(null==e?void 0:e.message))return"An unexpected error occurred.";let s=e.message;return s.includes("failed:")&&(s=s.split("failed:")[1].trim()),s},l=e=>{let{error:s,title:t="Error",onDismiss:l}=e,[o,i]=(0,a.useState)(!1);if((0,a.useEffect)(()=>{s&&i(!1)},[s]),!s||o)return null;let c="string"==typeof s?s:n(s);return(0,r.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3 mb-4",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex",children:[(0,r.jsx)("div",{className:"flex-shrink-0",children:(0,r.jsx)("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),(0,r.jsx)("div",{className:"ml-3",children:(0,r.jsxs)("div",{className:"text-sm text-red-800",children:[(0,r.jsxs)("strong",{children:[t,":"]})," ",c]})})]}),(0,r.jsx)("button",{onClick:()=>{i(!0),l&&l()},className:"flex-shrink-0 ml-4 text-red-400 hover:text-red-600 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-red-50 rounded","aria-label":"Dismiss error",children:(0,r.jsx)("svg",{className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]})})}},82077:function(e,s,t){t.r(s),t.d(s,{Workspaces:function(){return z},getWorkspaceClusters:function(){return _},getWorkspaceManagedJobs:function(){return L}});var r=t(85893),a=t(67294),n=t(11163),l=t(17324),o=t(37673),i=t(68764),c=t(30803),d=t(55739),u=t(1272),m=t(50326);t(53850);var h=t(1812),x=t(13626),p=t(81260);/**
27
- * @license lucide-react v0.407.0 - ISC
28
- *
29
- * This source code is licensed under the ISC license.
30
- * See the LICENSE file in the root directory of this source tree.
31
- */let f=(0,t(60998).Z)("SquarePen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);var g=t(47603),j=t(23001),v=t(47615),w=t(6378),k=t(51214),b=t(36856),y=t(47145),N=t(94545),C=t(93225),E=t(41664),S=t.n(E);async function _(e){try{return(await y.x.fetch("/status",{cluster_names:null,all_users:!0,include_credentials:!1,include_handle:!1,override_skypilot_config:{active_workspace:e}})).map(e=>({status:"UP"===e.status?"RUNNING":"STOPPED"===e.status?"STOPPED":"INIT"===e.status?"LAUNCHING":"TERMINATED",cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,zone:e.zone,launched_at:e.launched_at,handle:e.handle,last_use:e.last_use,autostop:e.autostop,to_down:e.to_down,resources_str:e.resources_str,workspace:e.workspace||"default"})).filter(s=>s.workspace===e)}catch(t){let s="Error fetching clusters for workspace ".concat(e,": ").concat(t);throw console.error(s),Error(s)}}async function L(e){try{let s=await y.x.post("/jobs/queue/v2",{all_users:!0,verbose:!0,skip_finished:!0,workspace_match:e,fields:["workspace","status"],override_skypilot_config:{active_workspace:e}});if(!s.ok){let t="Initial API request to get managed jobs failed with status ".concat(s.status," for workspace ").concat(e);throw Error(t)}let t=s.headers.get("X-Skypilot-Request-ID");if(!t){let s="No request ID received from server for getting managed jobs for workspace ".concat(e);throw Error(s)}let r=await y.x.get("/api/get?request_id=".concat(t)),a=r.statusText;if(500===r.status)try{let e=await r.json();if(e.detail&&e.detail.error)try{let s=JSON.parse(e.detail.error);if(s.type&&s.type===C.iW)return{jobs:[]};a=s.message||String(e.detail.error)}catch(s){console.error("Error parsing JSON from data.detail.error:",s),a=String(e.detail.error)}}catch(e){console.error("Error parsing response JSON:",e),a=String(e)}if(!r.ok){let s="API request to get managed jobs result failed with status ".concat(r.status,", error: ").concat(a," for workspace ").concat(e);throw Error(s)}let n=await r.json(),l=n.return_value?JSON.parse(n.return_value):{jobs:[]};return l.jobs&&(l.jobs=l.jobs.map(e=>({...e,workspace:e.workspace||"default"})),l.jobs=l.jobs.filter(s=>s.workspace===e)),l}catch(t){let s="Error fetching managed jobs for workspace ".concat(e,": ").concat(t);throw console.error(s),Error(s)}}let Z=e=>{let{isPrivate:s}=e;return s?(0,r.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-700 border border-gray-300",children:"Private"}):(0,r.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-700 border border-green-300",children:"Public"})};function z(){let[e,s]=(0,a.useState)([]),[t,E]=(0,a.useState)({runningClusters:0,totalClusters:0,managedJobs:0}),[z,D]=(0,a.useState)(!0),[M,R]=(0,a.useState)(null),[O,P]=(0,a.useState)({key:"name",direction:"asc"}),[T,W]=(0,a.useState)(""),[J,A]=(0,a.useState)(!1),[I,F]=(0,a.useState)({confirmOpen:!1,workspaceToDelete:null,deleting:!1,error:null}),[q,V]=(0,a.useState)({open:!1,message:"",userName:""}),[B,H]=(0,a.useState)(null),[X,U]=(0,a.useState)(!1),[G,K]=(0,a.useState)(null),[$,Q]=(0,a.useState)(null),Y=(0,n.useRouter)(),ee=(0,j.X)(),es=async()=>{if(B&&Date.now()-B.timestamp<3e5)return B;U(!0);try{let e=await y.x.get("/users/role");if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to get user role")}let s=await e.json(),t={role:s.role,name:s.name,timestamp:Date.now()};return H(t),U(!1),t}catch(e){throw U(!1),e}},et=async(e,s)=>{try{let t=await es();if("admin"!==t.role)return V({open:!0,message:e,userName:t.name.toLowerCase()}),!1;return s(),!0}catch(e){return console.error("Failed to check user role:",e),V({open:!0,message:"Error: ".concat(e.message),userName:""}),!1}},er=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&D(!0);try{let e=await w.default.get(l.getWorkspaces);R(e);let t=Object.keys(e),r=t.map(async e=>{try{let[s,t,r]=await Promise.all([w.default.get(l.getEnabledClouds,[e]),w.default.get(_,[e]),w.default.get(L,[e])]);return{workspaceName:e,enabledClouds:s,clusters:t||[],managedJobs:r||{jobs:[]}}}catch(s){return console.error("Error fetching workspace data:",s),{workspaceName:e,enabledClouds:[],clusters:[],managedJobs:{jobs:[]}}}}),a=await Promise.all(r),n=[],o=[],i={};a.forEach(e=>{let{workspaceName:s,enabledClouds:t,clusters:r,managedJobs:a}=e;r.forEach(e=>{n.push(e)}),a.jobs.forEach(e=>{o.push(e)}),i[s]=t}),Object.fromEntries(n.map(e=>[e.cluster,e.workspace||"default"]));let c={};t.forEach(e=>{c[e]={name:e,totalClusterCount:0,runningClusterCount:0,managedJobsCount:0,clouds:new Set}});let d=0;n.forEach(e=>{let s=e.workspace||"default";c[s]||(c[s]={name:s,totalClusterCount:0,runningClusterCount:0,managedJobsCount:0,clouds:new Set}),c[s].totalClusterCount++,("RUNNING"===e.status||"LAUNCHING"===e.status)&&(c[s].runningClusterCount++,d++),e.cloud&&c[s].clouds.add(e.cloud)});let u=new Set(v.statusGroups.active),m=0;(o||[]).forEach(e=>{let s=e.workspace||"default";c[s]&&u.has(e.status)&&c[s].managedJobsCount++,u.has(e.status)&&m++});let h=Object.values(c).filter(e=>t.includes(e.name)).map(e=>{let s=Array.isArray(i[e.name])?i[e.name]:[];return{...e,clouds:s}}).sort((e,s)=>e.name.localeCompare(s.name));s(h),E({runningClusters:d,totalClusters:n.length,managedJobs:m})}catch(e){console.error("Error fetching workspace data:",e),s([]),E({runningClusters:0,totalClusters:0,managedJobs:0})}e&&D(!1)};(0,a.useEffect)(()=>{(async()=>{await b.ZP.preloadForPage("workspaces"),er(!0)})();let e=setInterval(()=>{"visible"===window.document.visibilityState&&er(!1)},k.nb.REFRESH_INTERVAL);return()=>clearInterval(e)},[]);let ea=e=>{let s="asc";O.key===e&&"asc"===O.direction&&(s="desc"),P({key:e,direction:s})},en=e=>O.key===e?"asc"===O.direction?" ↑":" ↓":"",el=a.useMemo(()=>{if(!e)return[];let s=e;if(T&&""!==T.trim()){let t=T.toLowerCase().trim();s=e.filter(e=>!!(e.name.toLowerCase().includes(t)||e.clouds.some(e=>{let s=C.Z2[e.toLowerCase()]||e;return e.toLowerCase().includes(t)||s.toLowerCase().includes(t)}))||!!(!0===((null==M?void 0:M[e.name])||{}).private?"private":"public").includes(t))}return(0,N.R0)(s,O.key,O.direction)},[e,O,T,M]),eo=e=>{et("cannot delete workspace",()=>{F({confirmOpen:!0,workspaceToDelete:e,deleting:!1,error:null})})},ei=async()=>{if(I.workspaceToDelete){F(e=>({...e,deleting:!0,error:null}));try{await (0,l.zl)(I.workspaceToDelete),Q('Workspace "'.concat(I.workspaceToDelete,'" deleted successfully!')),F({confirmOpen:!1,workspaceToDelete:null,deleting:!1,error:null}),w.default.invalidate(l.getWorkspaces),w.default.invalidateFunction(_),w.default.invalidateFunction(L),await er(!0)}catch(e){console.error("Error deleting workspace:",e),F(e=>({...e,deleting:!1,error:null})),K(e)}}},ec=()=>{F({confirmOpen:!1,workspaceToDelete:null,deleting:!1,error:null})},ed=e=>{et("cannot edit workspace",()=>{Y.push("/workspaces/".concat(e))})};return z&&0===e.length?(0,r.jsxs)("div",{className:"flex justify-center items-center h-64",children:[(0,r.jsx)(d.Z,{}),(0,r.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading workspaces..."})]}):(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"fixed top-20 right-4 z-[9999] max-w-md",children:[$&&(0,r.jsx)("div",{className:"bg-green-50 border border-green-200 rounded p-4 mb-4",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("div",{className:"flex-shrink-0",children:(0,r.jsx)("svg",{className:"h-5 w-5 text-green-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"})})}),(0,r.jsx)("div",{className:"ml-3",children:(0,r.jsx)("p",{className:"text-sm font-medium text-green-800",children:$})})]}),(0,r.jsx)("div",{className:"ml-auto pl-3",children:(0,r.jsxs)("button",{type:"button",onClick:()=>Q(null),className:"inline-flex rounded-md bg-green-50 p-1.5 text-green-500 hover:bg-green-100",children:[(0,r.jsx)("span",{className:"sr-only",children:"Dismiss"}),(0,r.jsx)("svg",{className:"h-5 w-5",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})]})})]})}),(0,r.jsx)(h.X,{error:G,title:"Error",onDismiss:()=>K(null)})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mb-2 h-5",children:[(0,r.jsx)("div",{className:"text-base flex items-center",children:(0,r.jsx)("span",{className:"text-sky-blue leading-none",children:"Workspaces"})}),(0,r.jsxs)("div",{className:"flex items-center",children:[z&&(0,r.jsxs)("div",{className:"flex items-center mr-2",children:[(0,r.jsx)(d.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500 text-xs",children:"Refreshing..."})]}),(0,r.jsxs)("button",{onClick:()=>{w.default.invalidate(l.getWorkspaces),w.default.invalidateFunction(l.getEnabledClouds),w.default.invalidateFunction(_),w.default.invalidateFunction(L),er(!0)},disabled:z,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:[(0,r.jsx)(x.Z,{className:"h-4 w-4 mr-1.5"}),!ee&&(0,r.jsx)("span",{children:"Refresh"})]})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,r.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,r.jsx)("input",{type:"text",placeholder:"Filter workspaces",value:T,onChange:e=>W(e.target.value),className:"h-8 w-full px-3 pr-8 text-sm border border-gray-300 rounded-md focus:ring-1 focus:ring-sky-500 focus:border-sky-500 outline-none"}),T&&(0,r.jsx)("button",{onClick:()=>W(""),className:"absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600",title:"Clear search",children:(0,r.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,r.jsx)("button",{onClick:()=>{et("cannot create workspace",()=>{Y.push("/workspace/new")})},disabled:X,className:"ml-4 bg-sky-600 hover:bg-sky-700 text-white flex items-center rounded-md px-3 py-1 text-sm font-medium transition-colors duration-200",title:"Create Workspace",children:X?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(d.Z,{size:12,className:"mr-2"}),(0,r.jsx)("span",{children:"Create Workspace"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.Z,{className:"h-4 w-4 mr-2"}),"Create Workspace"]})})]}),0!==e.length||z?(0,r.jsx)(o.Zb,{children:(0,r.jsx)("div",{className:"overflow-x-auto rounded-lg",children:(0,r.jsxs)(i.iA,{className:"min-w-full",children:[(0,r.jsx)(i.xD,{children:(0,r.jsxs)(i.SC,{children:[(0,r.jsxs)(i.ss,{className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50",onClick:()=>ea("name"),children:["Workspace",en("name")]}),(0,r.jsxs)(i.ss,{className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50",onClick:()=>ea("totalClusterCount"),children:["Clusters ",en("totalClusterCount")]}),(0,r.jsxs)(i.ss,{className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50",onClick:()=>ea("managedJobsCount"),children:["Jobs",en("managedJobsCount")]}),(0,r.jsx)(i.ss,{className:"whitespace-nowrap",children:"Enabled infra"}),(0,r.jsx)(i.ss,{className:"whitespace-nowrap",children:"Actions"})]})}),(0,r.jsx)(i.RM,{children:z&&0===el.length?(0,r.jsx)(i.SC,{children:(0,r.jsx)(i.pj,{colSpan:5,className:"text-center py-6 text-gray-500",children:(0,r.jsxs)("div",{className:"flex justify-center items-center",children:[(0,r.jsx)(d.Z,{size:20,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]})})}):el.length>0?el.map(e=>{let s=!0===((null==M?void 0:M[e.name])||{}).private;return(0,r.jsxs)(i.SC,{className:"hover:bg-gray-50",children:[(0,r.jsxs)(i.pj,{className:"",children:[(0,r.jsx)("button",{onClick:()=>ed(e.name),disabled:X,className:"text-blue-600 hover:text-blue-600 hover:underline text-left",children:e.name}),(0,r.jsx)("span",{className:"ml-2",children:(0,r.jsx)(Z,{isPrivate:s})})]}),(0,r.jsx)(i.pj,{children:(0,r.jsxs)("button",{onClick:()=>{Y.push({pathname:"/clusters",query:{workspace:e.name}})},className:"text-gray-700 hover:text-blue-600 hover:underline",children:[e.runningClusterCount," running,"," ",e.totalClusterCount," total"]})}),(0,r.jsx)(i.pj,{children:(0,r.jsx)("button",{onClick:()=>{Y.push({pathname:"/jobs",query:{workspace:e.name}})},className:"text-gray-700 hover:text-blue-600 hover:underline",children:e.managedJobsCount})}),(0,r.jsx)(i.pj,{children:e.clouds.length>0?[...e.clouds].sort().map((s,t)=>{let a=C.Z2[s.toLowerCase()]||s;return(0,r.jsxs)("span",{children:[(0,r.jsx)(S(),{href:"/infra",className:"inline-flex items-center px-2 py-1 rounded text-sm bg-sky-100 text-sky-800 hover:bg-sky-200 hover:text-sky-900 transition-colors duration-200",children:a}),t<e.clouds.length-1&&" "]},s)}):(0,r.jsx)("span",{className:"text-gray-500 text-sm",children:"-"})}),(0,r.jsxs)(i.pj,{children:[(0,r.jsx)(c.z,{variant:"ghost",size:"sm",onClick:()=>ed(e.name),disabled:X,className:"text-gray-600 hover:text-gray-800 mr-1",children:(0,r.jsx)(f,{className:"w-4 h-4"})}),(0,r.jsx)(c.z,{variant:"ghost",size:"sm",onClick:()=>eo(e.name),disabled:"default"===e.name||X,title:"default"===e.name?"Cannot delete default workspace":"Delete workspace",className:"text-red-600 hover:text-red-700 hover:bg-red-50",children:(0,r.jsx)(g.Z,{className:"w-4 h-4"})})]})]},e.name)}):(0,r.jsx)(i.SC,{children:(0,r.jsx)(i.pj,{colSpan:5,className:"text-center py-6 text-gray-500",children:"No workspaces found"})})})]})})}):(0,r.jsxs)("div",{className:"text-center py-10",children:[(0,r.jsx)("p",{className:"text-lg text-gray-600",children:"No workspaces found."}),(0,r.jsx)("p",{className:"text-sm text-gray-500 mt-2",children:"Create a cluster to see its workspace here."})]}),M&&(0,r.jsx)(m.Vq,{open:J,onOpenChange:A,children:(0,r.jsxs)(m.cZ,{className:"sm:max-w-md md:max-w-lg lg:max-w-xl xl:max-w-2xl w-full max-h-[90vh] flex flex-col",children:[(0,r.jsx)(m.fK,{children:(0,r.jsx)(m.$N,{className:"pr-10",children:"All Workspaces Configuration"})}),(0,r.jsx)("div",{className:"flex-grow overflow-y-auto py-4",children:(0,r.jsx)("pre",{style:{backgroundColor:"#f5f5f5",padding:"16px",borderRadius:"8px",overflowX:"auto",whiteSpace:"pre",wordBreak:"normal"},children:u.ZP.dump(M,{indent:2})})})]})}),(0,r.jsx)(m.Vq,{open:q.open,onOpenChange:e=>{V(s=>({...s,open:e})),e||K(null)},children:(0,r.jsxs)(m.cZ,{className:"sm:max-w-md transition-all duration-200 ease-in-out",children:[(0,r.jsxs)(m.fK,{children:[(0,r.jsx)(m.$N,{children:"Permission Denied"}),(0,r.jsx)(m.Be,{children:X?(0,r.jsxs)("div",{className:"flex items-center py-2",children:[(0,r.jsx)(d.Z,{size:16,className:"mr-2"}),(0,r.jsx)("span",{children:"Checking permissions..."})]}):(0,r.jsx)(r.Fragment,{children:q.userName?(0,r.jsxs)(r.Fragment,{children:[q.userName," is logged in as non-admin and ",q.message,"."]}):q.message})})]}),(0,r.jsx)(m.cN,{children:(0,r.jsx)(c.z,{variant:"outline",onClick:()=>V(e=>({...e,open:!1})),disabled:X,children:"OK"})})]})}),(0,r.jsx)(m.Vq,{open:I.confirmOpen,onOpenChange:e=>{e||(ec(),K(null))},children:(0,r.jsxs)(m.cZ,{className:"sm:max-w-md",children:[(0,r.jsxs)(m.fK,{children:[(0,r.jsx)(m.$N,{children:"Delete Workspace"}),(0,r.jsxs)(m.Be,{children:['Are you sure you want to delete workspace "',I.workspaceToDelete,'"? This action cannot be undone.']})]}),(0,r.jsxs)(m.cN,{children:[(0,r.jsx)(c.z,{variant:"outline",onClick:ec,disabled:I.deleting,children:"Cancel"}),(0,r.jsx)(c.z,{variant:"destructive",onClick:ei,disabled:I.deleting,children:I.deleting?"Deleting...":"Delete"})]})]})})]})}k.nb.REFRESH_INTERVAL},23001:function(e,s,t){t.d(s,{X:function(){return a}});var r=t(67294);function a(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:768,[s,t]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let s=()=>{t(window.innerWidth<e)};return s(),window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s)}},[e]),s}},12003:function(e,s,t){t.d(s,{j:function(){return l}});var r=t(90512);let a=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=r.W,l=(e,s)=>t=>{var r;if((null==s?void 0:s.variants)==null)return n(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:l,defaultVariants:o}=s,i=Object.keys(l).map(e=>{let s=null==t?void 0:t[e],r=null==o?void 0:o[e];if(null===s)return null;let n=a(s)||a(r);return l[e][n]}),c=t&&Object.entries(t).reduce((e,s)=>{let[t,r]=s;return void 0===r||(e[t]=r),e},{});return n(e,i,null==s?void 0:null===(r=s.compoundVariants)||void 0===r?void 0:r.reduce((e,s)=>{let{class:t,className:r,...a}=s;return Object.entries(a).every(e=>{let[s,t]=e;return Array.isArray(t)?t.includes({...o,...c}[s]):({...o,...c})[s]===t})?[...e,t,r]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}}}]);
@@ -1,30 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9847],{65168:function(e,t,n){n.d(t,{ZP:function(){return eB}});var r=n(87462),o=n(63366),i=n(67294),l=n(90512),a=n(94780);function s(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function u(...e){return i.useMemo(()=>e.every(e=>null==e)?null:t=>{e.forEach(e=>{s(e,t)})},e)}var c=function(e){return"string"==typeof e},d=function(e,t=[]){if(void 0===e)return{};let n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n},p=function(e){if(void 0===e)return{};let t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},f=function(e){let{getSlotProps:t,additionalProps:n,externalSlotProps:o,externalForwardedProps:i,className:a}=e;if(!t){let e=(0,l.Z)(null==n?void 0:n.className,a,null==i?void 0:i.className,null==o?void 0:o.className),t=(0,r.Z)({},null==n?void 0:n.style,null==i?void 0:i.style,null==o?void 0:o.style),s=(0,r.Z)({},n,i,o);return e.length>0&&(s.className=e),Object.keys(t).length>0&&(s.style=t),{props:s,internalRef:void 0}}let s=d((0,r.Z)({},i,o)),u=p(o),c=p(i),f=t(s),v=(0,l.Z)(null==f?void 0:f.className,null==n?void 0:n.className,a,null==i?void 0:i.className,null==o?void 0:o.className),m=(0,r.Z)({},null==f?void 0:f.style,null==n?void 0:n.style,null==i?void 0:i.style,null==o?void 0:o.style),h=(0,r.Z)({},f,n,c,u);return v.length>0&&(h.className=v),Object.keys(m).length>0&&(h.style=m),{props:h,internalRef:f.ref}};let v=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];var m=function(e){var t,n;let{elementType:i,externalSlotProps:l,ownerState:a,skipResolvingSlotProps:s=!1}=e,d=(0,o.Z)(e,v),p=s?{}:"function"==typeof l?l(a,void 0):l,{props:m,internalRef:h}=f((0,r.Z)({},d,{externalSlotProps:p})),g=u(h,null==p?void 0:p.ref,null==(t=e.additionalProps)?void 0:t.ref);return n=(0,r.Z)({},m,{ref:g}),void 0===i||c(i)?n:(0,r.Z)({},n,{ownerState:(0,r.Z)({},n.ownerState,a)})},h=n(30957),g=n(81079),y=function(e,t=166){let n;function r(...o){clearTimeout(n),n=setTimeout(()=>{e.apply(this,o)},t)}return r.clear=()=>{clearTimeout(n)},r};function E(e){return e&&e.ownerDocument||document}function x(e){return E(e).defaultView||window}let b={},R=[];class k{constructor(){this.currentId=null,this.clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)},this.disposeEffect=()=>this.clear}static create(){return new k}start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}}function N(e){if(parseInt(i.version,10)>=19){var t;return(null==e||null==(t=e.props)?void 0:t.ref)||null}return(null==e?void 0:e.ref)||null}function P(e,t){return(P=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}var Z=n(73935),T={disabled:!1},w=i.createContext(null),O="unmounted",M="exited",C="entering",I="entered",S="exiting",D=function(e){function t(t,n){r=e.call(this,t,n)||this;var r,o,i=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?i?(o=M,r.appearStatus=C):o=I:o=t.unmountOnExit||t.mountOnEnter?O:M,r.state={status:o},r.nextCallback=null,r}t.prototype=Object.create(e.prototype),t.prototype.constructor=t,P(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===O?{status:M}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==C&&n!==I&&(t=C):(n===C||n===I)&&(t=S)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){if(this.cancelNextCallback(),t===C){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:Z.findDOMNode(this);n&&n.scrollTop}this.performEnter(e)}else this.performExit()}else this.props.unmountOnExit&&this.state.status===M&&this.setState({status:O})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[Z.findDOMNode(this),r],i=o[0],l=o[1],a=this.getTimeouts(),s=r?a.appear:a.enter;if(!e&&!n||T.disabled){this.safeSetState({status:I},function(){t.props.onEntered(i)});return}this.props.onEnter(i,l),this.safeSetState({status:C},function(){t.props.onEntering(i,l),t.onTransitionEnd(s,function(){t.safeSetState({status:I},function(){t.props.onEntered(i,l)})})})},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:Z.findDOMNode(this);if(!t||T.disabled){this.safeSetState({status:M},function(){e.props.onExited(r)});return}this.props.onExit(r),this.safeSetState({status:S},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:M},function(){e.props.onExited(r)})})})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:Z.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(!n||r){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],i=o[0],l=o[1];this.props.addEndListener(i,l)}null!=e&&setTimeout(this.nextCallback,e)},n.render=function(){var e=this.state.status;if(e===O)return null;var t=this.props,n=t.children,r=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,o.Z)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return i.createElement(w.Provider,{value:null},"function"==typeof n?n(e,r):i.cloneElement(i.Children.only(n),r))},t}(i.Component);function j(){}D.contextType=w,D.propTypes={},D.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:j,onEntering:j,onEntered:j,onExit:j,onExiting:j,onExited:j},D.UNMOUNTED=O,D.EXITED=M,D.ENTERING=C,D.ENTERED=I,D.EXITING=S;var A=n(17172),F=n(87685),L=function(e=null){let t=i.useContext(F.T);return t&&0!==Object.keys(t).length?t:e};let _=(0,A.Z)();var U=n(2418),W=n(22453);function z(){let e=function(e=_){return L(e)}(U.Z);return e[W.Z]||e}let H=e=>e.scrollTop;function V(e,t){var n,r;let{timeout:o,easing:i,style:l={}}=e;return{duration:null!=(n=l.transitionDuration)?n:"number"==typeof o?o:o[t.mode]||0,easing:null!=(r=l.transitionTimingFunction)?r:"object"==typeof i?i[t.mode]:i,delay:l.transitionDelay}}var B=n(85893);let q=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function K(e){return"scale(".concat(e,", ").concat(e**2,")")}let X={entering:{opacity:1,transform:K(1)},entered:{opacity:1,transform:"none"}},Y="undefined"!=typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),$=i.forwardRef(function(e,t){let{addEndListener:n,appear:l=!0,children:a,easing:s,in:c,onEnter:d,onEntered:p,onEntering:f,onExit:v,onExited:m,onExiting:h,style:g,timeout:y="auto",TransitionComponent:E=D}=e,x=(0,o.Z)(e,q),P=function(){var e;let t=function(e,t){let n=i.useRef(b);return n.current===b&&(n.current=e(void 0)),n}(k.create).current;return e=t.disposeEffect,i.useEffect(e,R),t}(),Z=i.useRef(),T=z(),w=i.useRef(null),O=u(w,N(a),t),M=e=>t=>{if(e){let n=w.current;void 0===t?e(n):e(n,t)}},C=M(f),I=M((e,t)=>{let n;H(e);let{duration:r,delay:o,easing:i}=V({style:g,timeout:y,easing:s},{mode:"enter"});"auto"===y?(n=T.transitions.getAutoHeightDuration(e.clientHeight),Z.current=n):n=r,e.style.transition=[T.transitions.create("opacity",{duration:n,delay:o}),T.transitions.create("transform",{duration:Y?n:.666*n,delay:o,easing:i})].join(","),d&&d(e,t)}),S=M(p),j=M(h),A=M(e=>{let t;let{duration:n,delay:r,easing:o}=V({style:g,timeout:y,easing:s},{mode:"exit"});"auto"===y?(t=T.transitions.getAutoHeightDuration(e.clientHeight),Z.current=t):t=n,e.style.transition=[T.transitions.create("opacity",{duration:t,delay:r}),T.transitions.create("transform",{duration:Y?t:.666*t,delay:Y?r:r||.333*t,easing:o})].join(","),e.style.opacity=0,e.style.transform=K(.75),v&&v(e)}),F=M(m);return(0,B.jsx)(E,(0,r.Z)({appear:l,in:c,nodeRef:w,onEnter:I,onEntered:S,onEntering:C,onExit:A,onExited:F,onExiting:j,addEndListener:e=>{"auto"===y&&P.start(Z.current||0,e),n&&n(w.current,e)},timeout:"auto"===y?null:y},x,{children:(e,t)=>i.cloneElement(a,(0,r.Z)({style:(0,r.Z)({opacity:0,transform:K(.75),visibility:"exited"!==e||c?void 0:"hidden"},X[e],g,a.props.style),ref:O},t))}))});function G(e){let t=[],n=[];return Array.from(e.querySelectorAll('input,select,textarea,a[href],button,[tabindex],audio[controls],video[controls],[contenteditable]:not([contenteditable="false"])')).forEach((e,r)=>{let o=function(e){let t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1===o||e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type||!e.name)return!1;let t=t=>e.ownerDocument.querySelector('input[type="radio"]'.concat(t)),n=t('[name="'.concat(e.name,'"]:checked'));return n||(n=t('[name="'.concat(e.name,'"]'))),n!==e}(e)||(0===o?t.push(e):n.push({documentOrder:r,tabIndex:o,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function J(){return!0}$.muiSupportAuto=!0;var Q=function(e){let{children:t,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:o=!1,getTabbable:l=G,isEnabled:a=J,open:s}=e,c=i.useRef(!1),d=i.useRef(null),p=i.useRef(null),f=i.useRef(null),v=i.useRef(null),m=i.useRef(!1),h=i.useRef(null),g=u(N(t),h),y=i.useRef(null);i.useEffect(()=>{s&&h.current&&(m.current=!n)},[n,s]),i.useEffect(()=>{if(!s||!h.current)return;let e=E(h.current);return!h.current.contains(e.activeElement)&&(h.current.hasAttribute("tabIndex")||h.current.setAttribute("tabIndex","-1"),m.current&&h.current.focus()),()=>{o||(f.current&&f.current.focus&&(c.current=!0,f.current.focus()),f.current=null)}},[s]),i.useEffect(()=>{if(!s||!h.current)return;let e=E(h.current),t=t=>{y.current=t,!r&&a()&&"Tab"===t.key&&e.activeElement===h.current&&t.shiftKey&&(c.current=!0,p.current&&p.current.focus())},n=()=>{let t=h.current;if(null===t)return;if(!e.hasFocus()||!a()||c.current){c.current=!1;return}if(t.contains(e.activeElement)||r&&e.activeElement!==d.current&&e.activeElement!==p.current)return;if(e.activeElement!==v.current)v.current=null;else if(null!==v.current)return;if(!m.current)return;let n=[];if((e.activeElement===d.current||e.activeElement===p.current)&&(n=l(h.current)),n.length>0){var o,i;let e=!!((null==(o=y.current)?void 0:o.shiftKey)&&(null==(i=y.current)?void 0:i.key)==="Tab"),t=n[0],r=n[n.length-1];"string"!=typeof t&&"string"!=typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);let o=setInterval(()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()},50);return()=>{clearInterval(o),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}},[n,r,o,a,s,l]);let x=e=>{null===f.current&&(f.current=e.relatedTarget),m.current=!0};return(0,B.jsxs)(i.Fragment,{children:[(0,B.jsx)("div",{tabIndex:s?0:-1,onFocus:x,ref:d,"data-testid":"sentinelStart"}),i.cloneElement(t,{ref:g,onFocus:e=>{null===f.current&&(f.current=e.relatedTarget),m.current=!0,v.current=e.target;let n=t.props.onFocus;n&&n(e)}}),(0,B.jsx)("div",{tabIndex:s?0:-1,onFocus:x,ref:p,"data-testid":"sentinelEnd"})]})};let ee="undefined"!=typeof window?i.useLayoutEffect:i.useEffect,et=i.forwardRef(function(e,t){let{children:n,container:r,disablePortal:o=!1}=e,[l,a]=i.useState(null),c=u(i.isValidElement(n)?N(n):null,t);return(ee(()=>{!o&&a(("function"==typeof r?r():r)||document.body)},[r,o]),ee(()=>{if(l&&!o)return s(t,l),()=>{s(t,null)}},[t,l,o]),o)?i.isValidElement(n)?i.cloneElement(n,{ref:c}):(0,B.jsx)(i.Fragment,{children:n}):(0,B.jsx)(i.Fragment,{children:l?Z.createPortal(n,l):l})}),en=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],er={entering:{opacity:1},entered:{opacity:1}},eo=i.forwardRef(function(e,t){let n=z(),l={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:s=!0,children:c,easing:d,in:p,onEnter:f,onEntered:v,onEntering:m,onExit:h,onExited:g,onExiting:y,style:E,timeout:x=l,TransitionComponent:b=D}=e,R=(0,o.Z)(e,en),k=i.useRef(null),P=u(k,N(c),t),Z=e=>t=>{if(e){let n=k.current;void 0===t?e(n):e(n,t)}},T=Z(m),w=Z((e,t)=>{H(e);let r=V({style:E,timeout:x,easing:d},{mode:"enter"});e.style.webkitTransition=n.transitions.create("opacity",r),e.style.transition=n.transitions.create("opacity",r),f&&f(e,t)}),O=Z(v),M=Z(y),C=Z(e=>{let t=V({style:E,timeout:x,easing:d},{mode:"exit"});e.style.webkitTransition=n.transitions.create("opacity",t),e.style.transition=n.transitions.create("opacity",t),h&&h(e)}),I=Z(g);return(0,B.jsx)(b,(0,r.Z)({appear:s,in:p,nodeRef:k,onEnter:w,onEntered:O,onEntering:T,onExit:C,onExited:I,onExiting:M,addEndListener:e=>{a&&a(k.current,e)},timeout:x},R,{children:(e,t)=>i.cloneElement(c,(0,r.Z)({style:(0,r.Z)({opacity:0,visibility:"exited"!==e||p?void 0:"hidden"},er[e],E,c.props.style),ref:P},t))}))});var ei=n(1588),el=n(27621);function ea(e){return(0,el.ZP)("MuiBackdrop",e)}(0,ei.Z)("MuiBackdrop",["root","invisible"]);let es=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],eu=e=>{let{classes:t,invisible:n}=e;return(0,a.Z)({root:["root",n&&"invisible"]},ea,t)},ec=(0,h.ZP)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.invisible&&t.invisible]}})(e=>{let{ownerState:t}=e;return(0,r.Z)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},t.invisible&&{backgroundColor:"transparent"})}),ed=i.forwardRef(function(e,t){var n,i,a;let s=(0,g.i)({props:e,name:"MuiBackdrop"}),{children:u,className:c,component:d="div",components:p={},componentsProps:f={},invisible:v=!1,open:m,slotProps:h={},slots:y={},TransitionComponent:E=eo,transitionDuration:x}=s,b=(0,o.Z)(s,es),R=(0,r.Z)({},s,{component:d,invisible:v}),k=eu(R),N=null!=(n=h.root)?n:f.root;return(0,B.jsx)(E,(0,r.Z)({in:m,timeout:x},b,{children:(0,B.jsx)(ec,(0,r.Z)({"aria-hidden":!0},N,{as:null!=(i=null!=(a=y.root)?a:p.Root)?i:d,className:(0,l.Z)(k.root,c,null==N?void 0:N.className),ownerState:(0,r.Z)({},R,null==N?void 0:N.ownerState),classes:k,ref:t,children:u}))}))});var ep=function(e){let t=i.useRef(e);return ee(()=>{t.current=e}),i.useRef((...e)=>(0,t.current)(...e)).current};function ef(...e){return e.reduce((e,t)=>null==t?e:function(...n){e.apply(this,n),t.apply(this,n)},()=>{})}function ev(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function em(e){return parseInt(x(e).getComputedStyle(e).paddingRight,10)||0}function eh(e,t,n,r,o){let i=[t,n,...r];[].forEach.call(e.children,e=>{let t=-1===i.indexOf(e),n=!function(e){let t=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&ev(e,o)})}function eg(e,t){let n=-1;return e.some((e,r)=>!!t(e)&&(n=r,!0)),n}class ey{add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&ev(e.modalRef,!1);let r=function(e){let t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}(t);eh(t,e.mount,e.modalRef,r,!0);let o=eg(this.containers,e=>e.container===t);return -1!==o?this.containers[o].modals.push(e):this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n}mount(e,t){let n=eg(this.containers,t=>-1!==t.modals.indexOf(e)),r=this.containers[n];r.restore||(r.restore=function(e,t){let n=[],r=e.container;if(!t.disableScrollLock){let e;if(function(e){let t=E(e);return t.body===e?x(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){let e=function(e){let t=e.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}(E(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight="".concat(em(r)+e,"px");let t=E(r).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight="".concat(em(t)+e,"px")})}if(r.parentNode instanceof DocumentFragment)e=E(r).body;else{let t=r.parentElement,n=x(r);e=(null==t?void 0:t.nodeName)==="HTML"&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(e=>{let{value:t,el:n,property:r}=e;t?n.style.setProperty(r,t):n.style.removeProperty(r)})}}(r,t))}remove(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=this.modals.indexOf(e);if(-1===n)return n;let r=eg(this.containers,t=>-1!==t.modals.indexOf(e)),o=this.containers[r];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(n,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&ev(e.modalRef,t),eh(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(r,1);else{let e=o.modals[o.modals.length-1];e.modalRef&&ev(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}}let eE=new ey;var ex=function(e){let{container:t,disableEscapeKeyDown:n=!1,disableScrollLock:o=!1,manager:l=eE,closeAfterTransition:a=!1,onTransitionEnter:s,onTransitionExited:c,children:p,onClose:f,open:v,rootRef:m}=e,h=i.useRef({}),g=i.useRef(null),y=i.useRef(null),x=u(y,m),[b,R]=i.useState(!v),k=!!p&&p.props.hasOwnProperty("in"),N=!0;("false"===e["aria-hidden"]||!1===e["aria-hidden"])&&(N=!1);let P=()=>E(g.current),Z=()=>(h.current.modalRef=y.current,h.current.mount=g.current,h.current),T=()=>{l.mount(Z(),{disableScrollLock:o}),y.current&&(y.current.scrollTop=0)},w=ep(()=>{let e=("function"==typeof t?t():t)||P().body;l.add(Z(),e),y.current&&T()}),O=i.useCallback(()=>l.isTopModal(Z()),[l]),M=ep(e=>{g.current=e,e&&(v&&O()?T():y.current&&ev(y.current,N))}),C=i.useCallback(()=>{l.remove(Z(),N)},[N,l]);i.useEffect(()=>()=>{C()},[C]),i.useEffect(()=>{v?w():k&&a||C()},[v,C,k,a,w]);let I=e=>t=>{var r;null==(r=e.onKeyDown)||r.call(e,t),"Escape"===t.key&&229!==t.which&&O()&&!n&&(t.stopPropagation(),f&&f(t,"escapeKeyDown"))},S=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.target===t.currentTarget&&f&&f(t,"backdropClick")};return{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=d(e);delete n.onTransitionEnter,delete n.onTransitionExited;let o=(0,r.Z)({},n,t);return(0,r.Z)({role:"presentation"},o,{onKeyDown:I(o),ref:x})},getBackdropProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Z)({"aria-hidden":!0},e,{onClick:S(e),open:v})},getTransitionProps:()=>({onEnter:ef(()=>{R(!1),s&&s()},null==p?void 0:p.props.onEnter),onExited:ef(()=>{R(!0),c&&c(),a&&C()},null==p?void 0:p.props.onExited)}),rootRef:x,portalRef:M,isTopModal:O,exited:b,hasTransition:k}};function eb(e){return(0,el.ZP)("MuiModal",e)}(0,ei.Z)("MuiModal",["root","hidden","backdrop"]);let eR=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],ek=e=>{let{open:t,exited:n,classes:r}=e;return(0,a.Z)({root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]},eb,r)},eN=(0,h.ZP)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(e=>{let{theme:t,ownerState:n}=e;return(0,r.Z)({position:"fixed",zIndex:(t.vars||t).zIndex.modal,right:0,bottom:0,top:0,left:0},!n.open&&n.exited&&{visibility:"hidden"})}),eP=(0,h.ZP)(ed,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),eZ=i.forwardRef(function(e,t){var n,a,s,u,c,d;let p=(0,g.i)({name:"MuiModal",props:e}),{BackdropComponent:f=eP,BackdropProps:v,className:h,closeAfterTransition:y=!1,children:E,container:x,component:b,components:R={},componentsProps:k={},disableAutoFocus:N=!1,disableEnforceFocus:P=!1,disableEscapeKeyDown:Z=!1,disablePortal:T=!1,disableRestoreFocus:w=!1,disableScrollLock:O=!1,hideBackdrop:M=!1,keepMounted:C=!1,onBackdropClick:I,open:S,slotProps:D,slots:j}=p,A=(0,o.Z)(p,eR),F=(0,r.Z)({},p,{closeAfterTransition:y,disableAutoFocus:N,disableEnforceFocus:P,disableEscapeKeyDown:Z,disablePortal:T,disableRestoreFocus:w,disableScrollLock:O,hideBackdrop:M,keepMounted:C}),{getRootProps:L,getBackdropProps:_,getTransitionProps:U,portalRef:W,isTopModal:z,exited:H,hasTransition:V}=ex((0,r.Z)({},F,{rootRef:t})),q=(0,r.Z)({},F,{exited:H}),K=ek(q),X={};if(void 0===E.props.tabIndex&&(X.tabIndex="-1"),V){let{onEnter:e,onExited:t}=U();X.onEnter=e,X.onExited=t}let Y=null!=(n=null!=(a=null==j?void 0:j.root)?a:R.Root)?n:eN,$=null!=(s=null!=(u=null==j?void 0:j.backdrop)?u:R.Backdrop)?s:f,G=null!=(c=null==D?void 0:D.root)?c:k.root,J=null!=(d=null==D?void 0:D.backdrop)?d:k.backdrop,ee=m({elementType:Y,externalSlotProps:G,externalForwardedProps:A,getSlotProps:L,additionalProps:{ref:t,as:b},ownerState:q,className:(0,l.Z)(h,null==G?void 0:G.className,null==K?void 0:K.root,!q.open&&q.exited&&(null==K?void 0:K.hidden))}),en=m({elementType:$,externalSlotProps:J,additionalProps:v,getSlotProps:e=>_((0,r.Z)({},e,{onClick:t=>{I&&I(t),null!=e&&e.onClick&&e.onClick(t)}})),className:(0,l.Z)(null==J?void 0:J.className,null==v?void 0:v.className,null==K?void 0:K.backdrop),ownerState:q});return C||S||V&&!H?(0,B.jsx)(et,{ref:W,container:x,disablePortal:T,children:(0,B.jsxs)(Y,(0,r.Z)({},ee,{children:[!M&&f?(0,B.jsx)($,(0,r.Z)({},en)):null,(0,B.jsx)(Q,{disableEnforceFocus:P,disableAutoFocus:N,disableRestoreFocus:w,isEnabled:z,open:S,children:i.cloneElement(E,X)})]}))}):null});var eT=n(2101),ew=e=>((e<1?5.11916*e**2:4.5*Math.log(e+1)+2)/100).toFixed(2);function eO(e){return(0,el.ZP)("MuiPaper",e)}(0,ei.Z)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);let eM=["className","component","elevation","square","variant"],eC=e=>{let{square:t,elevation:n,variant:r,classes:o}=e;return(0,a.Z)({root:["root",r,!t&&"rounded","elevation"===r&&"elevation".concat(n)]},eO,o)},eI=(0,h.ZP)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t["elevation".concat(n.elevation)]]}})(e=>{var t;let{theme:n,ownerState:o}=e;return(0,r.Z)({backgroundColor:(n.vars||n).palette.background.paper,color:(n.vars||n).palette.text.primary,transition:n.transitions.create("box-shadow")},!o.square&&{borderRadius:n.shape.borderRadius},"outlined"===o.variant&&{border:"1px solid ".concat((n.vars||n).palette.divider)},"elevation"===o.variant&&(0,r.Z)({boxShadow:(n.vars||n).shadows[o.elevation]},!n.vars&&"dark"===n.palette.mode&&{backgroundImage:"linear-gradient(".concat((0,eT.Fq)("#fff",ew(o.elevation)),", ").concat((0,eT.Fq)("#fff",ew(o.elevation)),")")},n.vars&&{backgroundImage:null==(t=n.vars.overlays)?void 0:t[o.elevation]}))}),eS=i.forwardRef(function(e,t){let n=(0,g.i)({props:e,name:"MuiPaper"}),{className:i,component:a="div",elevation:s=1,square:u=!1,variant:c="elevation"}=n,d=(0,o.Z)(n,eM),p=(0,r.Z)({},n,{component:a,elevation:s,square:u,variant:c}),f=eC(p);return(0,B.jsx)(eI,(0,r.Z)({as:a,ownerState:p,className:(0,l.Z)(f.root,i),ref:t},d))});function eD(e){return(0,el.ZP)("MuiPopover",e)}(0,ei.Z)("MuiPopover",["root","paper"]);let ej=["onEntering"],eA=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],eF=["slotProps"];function eL(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function e_(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function eU(e){return[e.horizontal,e.vertical].map(e=>"number"==typeof e?"".concat(e,"px"):e).join(" ")}function eW(e){return"function"==typeof e?e():e}let ez=e=>{let{classes:t}=e;return(0,a.Z)({root:["root"],paper:["paper"]},eD,t)},eH=(0,h.ZP)(eZ,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),eV=(0,h.ZP)(eS,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0});var eB=i.forwardRef(function(e,t){var n,a,s;let d=(0,g.i)({props:e,name:"MuiPopover"}),{action:p,anchorEl:f,anchorOrigin:v={vertical:"top",horizontal:"left"},anchorPosition:h,anchorReference:b="anchorEl",children:R,className:k,container:N,elevation:P=8,marginThreshold:Z=16,open:T,PaperProps:w={},slots:O,slotProps:M,transformOrigin:C={vertical:"top",horizontal:"left"},TransitionComponent:I=$,transitionDuration:S="auto",TransitionProps:{onEntering:D}={},disableScrollLock:j=!1}=d,A=(0,o.Z)(d.TransitionProps,ej),F=(0,o.Z)(d,eA),L=null!=(n=null==M?void 0:M.paper)?n:w,_=i.useRef(),U=u(_,L.ref),W=(0,r.Z)({},d,{anchorOrigin:v,anchorReference:b,elevation:P,marginThreshold:Z,externalPaperSlotProps:L,transformOrigin:C,TransitionComponent:I,transitionDuration:S,TransitionProps:A}),z=ez(W),H=i.useCallback(()=>{if("anchorPosition"===b)return h;let e=eW(f),t=(e&&1===e.nodeType?e:E(_.current).body).getBoundingClientRect();return{top:t.top+eL(t,v.vertical),left:t.left+e_(t,v.horizontal)}},[f,v.horizontal,v.vertical,h,b]),V=i.useCallback(e=>({vertical:eL(e,C.vertical),horizontal:e_(e,C.horizontal)}),[C.horizontal,C.vertical]),q=i.useCallback(e=>{let t={width:e.offsetWidth,height:e.offsetHeight},n=V(t);if("none"===b)return{top:null,left:null,transformOrigin:eU(n)};let r=H(),o=r.top-n.vertical,i=r.left-n.horizontal,l=o+t.height,a=i+t.width,s=x(eW(f)),u=s.innerHeight-Z,c=s.innerWidth-Z;if(null!==Z&&o<Z){let e=o-Z;o-=e,n.vertical+=e}else if(null!==Z&&l>u){let e=l-u;o-=e,n.vertical+=e}if(null!==Z&&i<Z){let e=i-Z;i-=e,n.horizontal+=e}else if(a>c){let e=a-c;i-=e,n.horizontal+=e}return{top:"".concat(Math.round(o),"px"),left:"".concat(Math.round(i),"px"),transformOrigin:eU(n)}},[f,b,H,V,Z]),[K,X]=i.useState(T),Y=i.useCallback(()=>{let e=_.current;if(!e)return;let t=q(e);null!==t.top&&(e.style.top=t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,X(!0)},[q]);i.useEffect(()=>(j&&window.addEventListener("scroll",Y),()=>window.removeEventListener("scroll",Y)),[f,j,Y]),i.useEffect(()=>{T&&Y()}),i.useImperativeHandle(p,()=>T?{updatePosition:()=>{Y()}}:null,[T,Y]),i.useEffect(()=>{if(!T)return;let e=y(()=>{Y()}),t=x(f);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[f,T,Y]);let G=S;"auto"!==S||I.muiSupportAuto||(G=void 0);let J=N||(f?E(eW(f)).body:void 0),Q=null!=(a=null==O?void 0:O.root)?a:eH,ee=null!=(s=null==O?void 0:O.paper)?s:eV,et=m({elementType:ee,externalSlotProps:(0,r.Z)({},L,{style:K?L.style:(0,r.Z)({},L.style,{opacity:0})}),additionalProps:{elevation:P,ref:U},ownerState:W,className:(0,l.Z)(z.paper,null==L?void 0:L.className)}),en=m({elementType:Q,externalSlotProps:(null==M?void 0:M.root)||{},externalForwardedProps:F,additionalProps:{ref:t,slotProps:{backdrop:{invisible:!0}},container:J,open:T},ownerState:W,className:(0,l.Z)(z.root,k)}),{slotProps:er}=en,eo=(0,o.Z)(en,eF);return(0,B.jsx)(Q,(0,r.Z)({},eo,!c(Q)&&{slotProps:er,disableScrollLock:j},{children:(0,B.jsx)(I,(0,r.Z)({appear:!0,in:T,onEntering:(e,t)=>{D&&D(e,t),Y()},onExited:()=>{X(!1)},timeout:G},A,{children:(0,B.jsx)(ee,(0,r.Z)({},et,{children:R}))}))}))})},88507:function(e,t,n){n.d(t,{Z:function(){return r}});/**
2
- * @license lucide-react v0.407.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */let r=(0,n(60998).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},13626:function(e,t,n){n.d(t,{Z:function(){return r}});/**
7
- * @license lucide-react v0.407.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */let r=(0,n(60998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},47603:function(e,t,n){n.d(t,{Z:function(){return r}});/**
12
- * @license lucide-react v0.407.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */let r=(0,n(60998).Z)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},28586:function(e,t,n){n.d(t,{Z:function(){return r}});/**
17
- * @license lucide-react v0.407.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */let r=(0,n(60998).Z)("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]])},43767:function(e,t,n){n.d(t,{Z:function(){return r}});/**
22
- * @license lucide-react v0.407.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */let r=(0,n(60998).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},6327:function(e,t,n){n.d(t,{x8:function(){return ea},VY:function(){return eo},dk:function(){return el},aV:function(){return er},h_:function(){return en},fC:function(){return ee},Dx:function(){return ei},xz:function(){return et}});var r=n(67294),o=n(36206),i=n(28771),l=n(25360),a=n(91276),s=n(77342),u=n(46063),c=n(95420),d=n(42651),p=n(9981),f=e=>{let t,n;let{present:o,children:l}=e,a=function(e){var t,n;let[o,i]=r.useState(),l=r.useRef(null),a=r.useRef(e),s=r.useRef("none"),[u,c]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>n[e][t]??e,t));return r.useEffect(()=>{let e=v(l.current);s.current="mounted"===u?e:"none"},[u]),(0,p.b)(()=>{let t=l.current,n=a.current;if(n!==e){let r=s.current,o=v(t);e?c("MOUNT"):"none"===o||t?.display==="none"?c("UNMOUNT"):n&&r!==o?c("ANIMATION_OUT"):c("UNMOUNT"),a.current=e}},[e,c]),(0,p.b)(()=>{if(o){let e;let t=o.ownerDocument.defaultView??window,n=n=>{let r=v(l.current).includes(n.animationName);if(n.target===o&&r&&(c("ANIMATION_END"),!a.current)){let n=o.style.animationFillMode;o.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=n)})}},r=e=>{e.target===o&&(s.current=v(l.current))};return o.addEventListener("animationstart",r),o.addEventListener("animationcancel",n),o.addEventListener("animationend",n),()=>{t.clearTimeout(e),o.removeEventListener("animationstart",r),o.removeEventListener("animationcancel",n),o.removeEventListener("animationend",n)}}c("ANIMATION_END")},[o,c]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:r.useCallback(e=>{l.current=e?getComputedStyle(e):null,i(e)},[])}}(o),s="function"==typeof l?l({present:a.isPresent}):r.Children.only(l),u=(0,i.e)(a.ref,(t=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?s.ref:(t=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?s.props.ref:s.props.ref||s.ref);return"function"==typeof l||a.isPresent?r.cloneElement(s,{ref:u}):null};function v(e){return e?.animationName||"none"}f.displayName="Presence";var m=n(75320),h=n(27552),g=n(6223),y=n(23541),E=n(88426),x=n(85893),b="Dialog",[R,k]=(0,l.b)(b),[N,P]=R(b),Z=e=>{let{__scopeDialog:t,children:n,open:o,defaultOpen:i,onOpenChange:l,modal:u=!0}=e,c=r.useRef(null),d=r.useRef(null),[p,f]=(0,s.T)({prop:o,defaultProp:i??!1,onChange:l,caller:b});return(0,x.jsx)(N,{scope:t,triggerRef:c,contentRef:d,contentId:(0,a.M)(),titleId:(0,a.M)(),descriptionId:(0,a.M)(),open:p,onOpenChange:f,onOpenToggle:r.useCallback(()=>f(e=>!e),[f]),modal:u,children:n})};Z.displayName=b;var T="DialogTrigger",w=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,l=P(T,n),a=(0,i.e)(t,l.triggerRef);return(0,x.jsx)(m.WV.button,{type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":X(l.open),...r,ref:a,onClick:(0,o.M)(e.onClick,l.onOpenToggle)})});w.displayName=T;var O="DialogPortal",[M,C]=R(O,{forceMount:void 0}),I=e=>{let{__scopeDialog:t,forceMount:n,children:o,container:i}=e,l=P(O,t);return(0,x.jsx)(M,{scope:t,forceMount:n,children:r.Children.map(o,e=>(0,x.jsx)(f,{present:n||l.open,children:(0,x.jsx)(d.h,{asChild:!0,container:i,children:e})}))})};I.displayName=O;var S="DialogOverlay",D=r.forwardRef((e,t)=>{let n=C(S,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=P(S,e.__scopeDialog);return i.modal?(0,x.jsx)(f,{present:r||i.open,children:(0,x.jsx)(A,{...o,ref:t})}):null});D.displayName=S;var j=(0,E.Z8)("DialogOverlay.RemoveScroll"),A=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=P(S,n);return(0,x.jsx)(g.Z,{as:j,allowPinchZoom:!0,shards:[o.contentRef],children:(0,x.jsx)(m.WV.div,{"data-state":X(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),F="DialogContent",L=r.forwardRef((e,t)=>{let n=C(F,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=P(F,e.__scopeDialog);return(0,x.jsx)(f,{present:r||i.open,children:i.modal?(0,x.jsx)(_,{...o,ref:t}):(0,x.jsx)(U,{...o,ref:t})})});L.displayName=F;var _=r.forwardRef((e,t)=>{let n=P(F,e.__scopeDialog),l=r.useRef(null),a=(0,i.e)(t,n.contentRef,l);return r.useEffect(()=>{let e=l.current;if(e)return(0,y.Ry)(e)},[]),(0,x.jsx)(W,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.M)(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:(0,o.M)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,o.M)(e.onFocusOutside,e=>e.preventDefault())})}),U=r.forwardRef((e,t)=>{let n=P(F,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,x.jsx)(W,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(o.current||n.triggerRef.current?.focus(),t.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(o.current=!0,"pointerdown"!==t.detail.originalEvent.type||(i.current=!0));let r=t.target;n.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),W=r.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:l,onCloseAutoFocus:a,...s}=e,d=P(F,n),p=r.useRef(null),f=(0,i.e)(t,p);return(0,h.EW)(),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(c.M,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:l,onUnmountAutoFocus:a,children:(0,x.jsx)(u.XB,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":X(d.open),...s,ref:f,onDismiss:()=>d.onOpenChange(!1)})}),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(J,{titleId:d.titleId}),(0,x.jsx)(Q,{contentRef:p,descriptionId:d.descriptionId})]})]})}),z="DialogTitle",H=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=P(z,n);return(0,x.jsx)(m.WV.h2,{id:o.titleId,...r,ref:t})});H.displayName=z;var V="DialogDescription",B=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=P(V,n);return(0,x.jsx)(m.WV.p,{id:o.descriptionId,...r,ref:t})});B.displayName=V;var q="DialogClose",K=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=P(q,n);return(0,x.jsx)(m.WV.button,{type:"button",...r,ref:t,onClick:(0,o.M)(e.onClick,()=>i.onOpenChange(!1))})});function X(e){return e?"open":"closed"}K.displayName=q;var Y="DialogTitleWarning",[$,G]=(0,l.k)(Y,{contentName:F,titleName:z,docsSlug:"dialog"}),J=({titleId:e})=>{let t=G(Y),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
27
-
28
- If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
29
-
30
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&!document.getElementById(e)&&console.error(n)},[n,e]),null},Q=({contentRef:e,descriptionId:t})=>{let n=G("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let n=e.current?.getAttribute("aria-describedby");t&&n&&!document.getElementById(t)&&console.warn(o)},[o,e,t]),null},ee=Z,et=w,en=I,er=D,eo=L,ei=H,el=B,ea=K},12003:function(e,t,n){n.d(t,{j:function(){return l}});var r=n(90512);let o=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,i=r.W,l=(e,t)=>n=>{var r;if((null==t?void 0:t.variants)==null)return i(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:l,defaultVariants:a}=t,s=Object.keys(l).map(e=>{let t=null==n?void 0:n[e],r=null==a?void 0:a[e];if(null===t)return null;let i=o(t)||o(r);return l[e][i]}),u=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return i(e,s,null==t?void 0:null===(r=t.compoundVariants)||void 0===r?void 0:r.reduce((e,t)=>{let{class:n,className:r,...o}=t;return Object.entries(o).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...a,...u}[t]):({...a,...u})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}}}]);
@@ -1,34 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{83454:function(e,t,n){"use strict";var o,r;e.exports=(null==(o=n.g.process)?void 0:o.env)&&"object"==typeof(null==(r=n.g.process)?void 0:r.env)?n.g.process:n(77663)},91118:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return n(32586)}])},19606:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return s},noSSR:function(){return l}});let o=n(10260);n(85893),n(67294);let r=o._(n(6119));function i(e){return{default:(null==e?void 0:e.default)||e}}function l(e,t){return delete t.webpack,delete t.modules,e(t)}function s(e,t){let n=r.default,o={loading:e=>{let{error:t,isLoading:n,pastDelay:o}=e;return null}};e instanceof Promise?o.loader=()=>e:"function"==typeof e?o.loader=e:"object"==typeof e&&(o={...o,...e});let s=(o={...o,...t}).loader;return(o.loadableGenerated&&(o={...o,...o.loadableGenerated},delete o.loadableGenerated),"boolean"!=typeof o.ssr||o.ssr)?n({...o,loader:()=>null!=s?s().then(i):Promise.resolve(i(()=>null))}):(delete o.webpack,delete o.modules,l(n,o))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16725:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"LoadableContext",{enumerable:!0,get:function(){return o}});let o=n(10260)._(n(67294)).default.createContext(null)},6119:function(e,t,n){"use strict";/**
2
- @copyright (c) 2017-present James Kyle <me@thejameskyle.com>
3
- MIT License
4
- Permission is hereby granted, free of charge, to any person obtaining
5
- a copy of this software and associated documentation files (the
6
- "Software"), to deal in the Software without restriction, including
7
- without limitation the rights to use, copy, modify, merge, publish,
8
- distribute, sublicense, and/or sell copies of the Software, and to
9
- permit persons to whom the Software is furnished to do so, subject to
10
- the following conditions:
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
17
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
18
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
19
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
20
- */Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return h}});let o=n(10260)._(n(67294)),r=n(16725),i=[],l=[],s=!1;function a(e){let t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then(e=>(n.loading=!1,n.loaded=e,e)).catch(e=>{throw n.loading=!1,n.error=e,e}),n}class c{promise(){return this._res.promise}retry(){this._clearTimeouts(),this._res=this._loadFn(this._opts.loader),this._state={pastDelay:!1,timedOut:!1};let{_res:e,_opts:t}=this;e.loading&&("number"==typeof t.delay&&(0===t.delay?this._state.pastDelay=!0:this._delay=setTimeout(()=>{this._update({pastDelay:!0})},t.delay)),"number"==typeof t.timeout&&(this._timeout=setTimeout(()=>{this._update({timedOut:!0})},t.timeout))),this._res.promise.then(()=>{this._update({}),this._clearTimeouts()}).catch(e=>{this._update({}),this._clearTimeouts()}),this._update({})}_update(e){this._state={...this._state,error:this._res.error,loaded:this._res.loaded,loading:this._res.loading,...e},this._callbacks.forEach(e=>e())}_clearTimeouts(){clearTimeout(this._delay),clearTimeout(this._timeout)}getCurrentValue(){return this._state}subscribe(e){return this._callbacks.add(e),()=>{this._callbacks.delete(e)}}constructor(e,t){this._loadFn=e,this._opts=t,this._callbacks=new Set,this._delay=null,this._timeout=null,this.retry()}}function u(e){return function(e,t){let n=Object.assign({loader:null,loading:null,delay:200,timeout:null,webpack:null,modules:null},t),i=null;function a(){if(!i){let t=new c(e,n);i={getCurrentValue:t.getCurrentValue.bind(t),subscribe:t.subscribe.bind(t),retry:t.retry.bind(t),promise:t.promise.bind(t)}}return i.promise()}if(!s){let e=n.webpack?n.webpack():n.modules;e&&l.push(t=>{for(let n of e)if(t.includes(n))return a()})}function u(e,t){!function(){a();let e=o.default.useContext(r.LoadableContext);e&&Array.isArray(n.modules)&&n.modules.forEach(t=>{e(t)})}();let l=o.default.useSyncExternalStore(i.subscribe,i.getCurrentValue,i.getCurrentValue);return o.default.useImperativeHandle(t,()=>({retry:i.retry}),[]),o.default.useMemo(()=>{var t;return l.loading||l.error?o.default.createElement(n.loading,{isLoading:l.loading,pastDelay:l.pastDelay,timedOut:l.timedOut,error:l.error,retry:i.retry}):l.loaded?o.default.createElement((t=l.loaded)&&t.default?t.default:t,e):null},[e,l])}return u.preload=()=>a(),u.displayName="LoadableComponent",o.default.forwardRef(u)}(a,e)}function d(e,t){let n=[];for(;e.length;){let o=e.pop();n.push(o(t))}return Promise.all(n).then(()=>{if(e.length)return d(e,t)})}u.preloadAll=()=>new Promise((e,t)=>{d(i).then(e,t)}),u.preloadReady=e=>(void 0===e&&(e=[]),new Promise(t=>{let n=()=>(s=!0,t());d(l,e).then(n,n)})),window.__NEXT_PRELOADREADY=u.preloadReady;let h=u},93225:function(e,t,n){"use strict";n.d(t,{$m:function(){return a},Bo:function(){return l},GW:function(){return r},Z2:function(){return c},f4:function(){return o},iW:function(){return s},mF:function(){return i}}),n(83454);let o=function(){{let e=window.location.pathname,t=e.indexOf("/dashboard");if(-1!==t){let n=e.substring(0,t);return"".concat(n,"/internal/dashboard")}return"/internal/dashboard"}}(),r=function(){{let e=window.location.pathname,t=e.indexOf("/dashboard");return -1!==t?e.substring(0,t+10):"/dashboard"}}();"/api/v1".replace(/^http/,"ws");let i="ClusterDoesNotExist",l="NotSupportedError",s="ClusterNotUpError",a=["AWS","Azure","GCP","IBM","Lambda","SCP","OCI","RunPod","VAST","vSphere","Cudo","FluidStack","Paperspace","DO","Nebius"],c=Object.fromEntries([...a.map(e=>[e.toLowerCase(),e]),["kubernetes","Kubernetes"],["ssh","SSH Node Pool"]])},6556:function(e,t,n){"use strict";n.d(t,{n:function(){return l}});var o=n(67294);let r="skypilot-dashboard-first-visit",i="skypilot-dashboard-tour-completed";function l(){let[e,t]=(0,o.useState)(!1),[n,l]=(0,o.useState)(!1),[s,a]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{a(!0);let e=localStorage.getItem(r),n=localStorage.getItem(i);e||(t(!0),localStorage.setItem(r,"true")),n&&l(!0)},[]),{isFirstVisit:!!s&&e,tourCompleted:!!s&&n,shouldShowTourPrompt:s&&e&&!n,shouldPulseHelpButton:s&&e&&!n,markTourCompleted:()=>{localStorage.setItem(i,"true"),l(!0)},resetFirstVisit:()=>{localStorage.removeItem(r),localStorage.removeItem(i),t(!0),l(!1)},isClient:s}}},94849:function(e,t,n){"use strict";let o,r;n.d(t,{C:function(){return t5},r:function(){return t3}});var i,l,s=n(85893),a=n(67294),c=n(11163);function u(e){return e instanceof HTMLElement}function d(e){return"function"==typeof e}function h(e){return"string"==typeof e}function f(e){return void 0===e}class p{on(e,t,n,o=!1){var r;return f(this.bindings)&&(this.bindings={}),f(this.bindings[e])&&(this.bindings[e]=[]),null==(r=this.bindings[e])||r.push({handler:t,ctx:n,once:o}),this}once(e,t,n){return this.on(e,t,n,!0)}off(e,t){if(f(this.bindings)||f(this.bindings[e]))return this;if(f(t))delete this.bindings[e];else{var n;null==(n=this.bindings[e])||n.forEach((n,o)=>{if(n.handler===t){var r;null==(r=this.bindings[e])||r.splice(o,1)}})}return this}trigger(e,...t){if(!f(this.bindings)&&this.bindings[e]){var n;null==(n=this.bindings[e])||n.forEach((n,o)=>{let{ctx:r,handler:i,once:l}=n;if(i.apply(r||this,t),l){var s;null==(s=this.bindings[e])||s.splice(o,1)}})}return this}}function m(){return(m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(null,arguments)}function g(e,t){if(null==e)return{};var n={};for(var o in e)if(({}).hasOwnProperty.call(e,o)){if(t.includes(o))continue;n[o]=e[o]}return n}let y={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")};function b(e,t){return t}function v(e,t){return e.filter(e=>void 0!==e)}function x(e){return"object"!=typeof e||null===e?0:Array.isArray(e)?2:!function(e){if(!E.has(Object.prototype.toString.call(e)))return!1;let{constructor:t}=e;if(void 0===t)return!0;let n=t.prototype;return!!(null!==n&&"object"==typeof n&&E.has(Object.prototype.toString.call(n))&&n.hasOwnProperty("isPrototypeOf"))}(e)?e instanceof Set?3:e instanceof Map?4:5:1}function w(e){return{*[Symbol.iterator](){for(let t of e)for(let e of t)yield e}}}y.defaultMerge,(i=l||(l={}))[i.NOT=0]="NOT",i[i.RECORD=1]="RECORD",i[i.ARRAY=2]="ARRAY",i[i.SET=3]="SET",i[i.MAP=4]="MAP",i[i.OTHER=5]="OTHER";let E=new Set(["[object Object]","[object Module]"]),S={mergeRecords:function(e,t,n){let o={};for(let r of function(e){let t=new Set;for(let n of e)for(let e of[...Object.keys(n),...Object.getOwnPropertySymbols(n)])t.add(e);return t}(e)){let i=[];for(let t of e)"object"==typeof t&&Object.prototype.propertyIsEnumerable.call(t,r)&&i.push(t[r]);if(0===i.length)continue;let l=t.metaDataUpdater(n,{key:r,parents:e}),s=$(i,t,l);s!==y.skip&&("__proto__"===r?Object.defineProperty(o,r,{value:s,configurable:!0,enumerable:!0,writable:!0}):o[r]=s)}return o},mergeArrays:function(e){return e.flat()},mergeSets:function(e){return new Set(w(e))},mergeMaps:function(e){return new Map(w(e))},mergeOthers:function(e){return e.at(-1)}};function T(...e){return(function(e,t){var n,o,r;let i={defaultMergeFunctions:S,mergeFunctions:m({},S,Object.fromEntries(Object.entries(e).filter(([e,t])=>Object.hasOwn(S,e)).map(([e,t])=>!1===t?[e,S.mergeOthers]:[e,t]))),metaDataUpdater:null!=(n=e.metaDataUpdater)?n:b,deepmerge:l,useImplicitDefaultMerging:null!=(o=e.enableImplicitDefaultMerging)&&o,filterValues:!1===e.filterValues?void 0:null!=(r=e.filterValues)?r:v,actions:y};function l(...e){return $(e,i,void 0)}return l})({})(...e)}function $(e,t,n){var o;let r=null!=(o=null==t.filterValues?void 0:t.filterValues(e,n))?o:e;if(0===r.length)return;if(1===r.length)return k(r,t,n);let i=x(r[0]);if(0!==i&&5!==i){for(let e=1;e<r.length;e++)if(x(r[e])!==i)return k(r,t,n)}switch(i){case 1:return function(e,t,n){let o=t.mergeFunctions.mergeRecords(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeRecords!==t.defaultMergeFunctions.mergeRecords?t.defaultMergeFunctions.mergeRecords(e,t,n):o}(r,t,n);case 2:return function(e,t,n){let o=t.mergeFunctions.mergeArrays(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeArrays!==t.defaultMergeFunctions.mergeArrays?t.defaultMergeFunctions.mergeArrays(e):o}(r,t,n);case 3:return function(e,t,n){let o=t.mergeFunctions.mergeSets(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeSets!==t.defaultMergeFunctions.mergeSets?t.defaultMergeFunctions.mergeSets(e):o}(r,t,n);case 4:return function(e,t,n){let o=t.mergeFunctions.mergeMaps(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeMaps!==t.defaultMergeFunctions.mergeMaps?t.defaultMergeFunctions.mergeMaps(e):o}(r,t,n);default:return k(r,t,n)}}function k(e,t,n){let o=t.mergeFunctions.mergeOthers(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeOthers!==t.defaultMergeFunctions.mergeOthers?t.defaultMergeFunctions.mergeOthers(e):o}function _(e){let t=Object.getOwnPropertyNames(e.constructor.prototype);for(let n=0;n<t.length;n++){let o=t[n],r=e[o];"constructor"!==o&&"function"==typeof r&&(e[o]=r.bind(e))}return e}class C{constructor(e){}}class O{constructor(e,t){}}function P(e){return h(e)&&""!==e?"-"!==e.charAt(e.length-1)?`${e}-`:e:""}function A(e){return null==e||!e.element||!e.on}function L(){let e=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?n:3&n|8).toString(16)})}let M=["top","right","bottom","left"].reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]),I=Math.min,R=Math.max,q=Math.round,B=Math.floor,H=e=>({x:e,y:e}),j={left:"right",right:"left",bottom:"top",top:"bottom"},D={start:"end",end:"start"};function F(e,t){return"function"==typeof e?e(t):e}function N(e){return e.split("-")[0]}function V(e){return e.split("-")[1]}function W(e){return"x"===e?"y":"x"}function z(e){return"y"===e?"height":"width"}function U(e){return["top","bottom"].includes(N(e))?"y":"x"}function Y(e,t,n){void 0===n&&(n=!1);let o=V(e),r=W(U(e)),i=z(r),l="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=K(l)),[l,K(l)]}function G(e){return e.replace(/start|end/g,e=>D[e])}function K(e){return e.replace(/left|right|bottom|top/g,e=>j[e])}function J(e){return"number"!=typeof e?m({top:0,right:0,bottom:0,left:0},e):{top:e,right:e,bottom:e,left:e}}function X(e){let{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}let Z=["crossAxis","alignment","allowedPlacements","autoAlignment"],Q=["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment"],ee=["mainAxis","crossAxis","limiter"];function et(e,t,n){let o,{reference:r,floating:i}=e,l=U(t),s=W(U(t)),a=z(s),c=N(t),u="y"===l,d=r.x+r.width/2-i.width/2,h=r.y+r.height/2-i.height/2,f=r[a]/2-i[a]/2;switch(c){case"top":o={x:d,y:r.y-i.height};break;case"bottom":o={x:d,y:r.y+r.height};break;case"right":o={x:r.x+r.width,y:h};break;case"left":o={x:r.x-i.width,y:h};break;default:o={x:r.x,y:r.y}}switch(V(t)){case"start":o[s]-=f*(n&&u?-1:1);break;case"end":o[s]+=f*(n&&u?-1:1)}return o}let en=async(e,t,n)=>{let{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:l}=n,s=i.filter(Boolean),a=await (null==l.isRTL?void 0:l.isRTL(t)),c=await l.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=et(c,o,a),h=o,f={},p=0;for(let n=0;n<s.length;n++){let{name:i,fn:g}=s[n],{x:y,y:b,data:v,reset:x}=await g({x:u,y:d,initialPlacement:o,placement:h,strategy:r,middlewareData:f,rects:c,platform:l,elements:{reference:e,floating:t}});u=null!=y?y:u,d=null!=b?b:d,f=m({},f,{[i]:m({},f[i],v)}),x&&p<=50&&(p++,"object"==typeof x&&(x.placement&&(h=x.placement),x.rects&&(c=!0===x.rects?await l.getElementRects({reference:e,floating:t,strategy:r}):x.rects),{x:u,y:d}=et(c,h,a)),n=-1)}return{x:u,y:d,placement:h,strategy:r,middlewareData:f}};async function eo(e,t){var n;void 0===t&&(t={});let{x:o,y:r,platform:i,rects:l,elements:s,strategy:a}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:h=!1,padding:f=0}=F(t,e),p=J(f),m=s[h?"floating"===d?"reference":"floating":d],g=X(await i.getClippingRect({element:null==(n=await (null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await (null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:a})),y="floating"===d?{x:o,y:r,width:l.floating.width,height:l.floating.height}:l.reference,b=await (null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),v=await (null==i.isElement?void 0:i.isElement(b))&&await (null==i.getScale?void 0:i.getScale(b))||{x:1,y:1},x=X(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:y,offsetParent:b,strategy:a}):y);return{top:(g.top-x.top+p.top)/v.y,bottom:(x.bottom-g.bottom+p.bottom)/v.y,left:(g.left-x.left+p.left)/v.x,right:(x.right-g.right+p.right)/v.x}}function er(){return"undefined"!=typeof window}function ei(e){return ea(e)?(e.nodeName||"").toLowerCase():"#document"}function el(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function es(e){var t;return null==(t=(ea(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ea(e){return!!er()&&(e instanceof Node||e instanceof el(e).Node)}function ec(e){return!!er()&&(e instanceof Element||e instanceof el(e).Element)}function eu(e){return!!er()&&(e instanceof HTMLElement||e instanceof el(e).HTMLElement)}function ed(e){return!!er()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof el(e).ShadowRoot)}function eh(e){let{overflow:t,overflowX:n,overflowY:o,display:r}=ey(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function ef(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch(e){return!1}})}function ep(e){let t=em(),n=ec(e)?ey(e):e;return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some(e=>(n.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(n.contain||"").includes(e))}function em(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function eg(e){return["html","body","#document"].includes(ei(e))}function ey(e){return el(e).getComputedStyle(e)}function eb(e){return ec(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ev(e){if("html"===ei(e))return e;let t=e.assignedSlot||e.parentNode||ed(e)&&e.host||es(e);return ed(t)?t.host:t}function ex(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);let r=function e(t){let n=ev(t);return eg(n)?t.ownerDocument?t.ownerDocument.body:t.body:eu(n)&&eh(n)?n:e(n)}(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),l=el(r);if(i){let e=ew(l);return t.concat(l,l.visualViewport||[],eh(r)?r:[],e&&n?ex(e):[])}return t.concat(r,ex(r,[],n))}function ew(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function eE(e){let t=ey(e),n=parseFloat(t.width)||0,o=parseFloat(t.height)||0,r=eu(e),i=r?e.offsetWidth:n,l=r?e.offsetHeight:o,s=q(n)!==i||q(o)!==l;return s&&(n=i,o=l),{width:n,height:o,$:s}}function eS(e){return ec(e)?e:e.contextElement}function eT(e){let t=eS(e);if(!eu(t))return H(1);let n=t.getBoundingClientRect(),{width:o,height:r,$:i}=eE(t),l=(i?q(n.width):n.width)/o,s=(i?q(n.height):n.height)/r;return l&&Number.isFinite(l)||(l=1),s&&Number.isFinite(s)||(s=1),{x:l,y:s}}let e$=H(0);function ek(e){let t=el(e);return em()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:e$}function e_(e,t,n,o){var r;void 0===t&&(t=!1),void 0===n&&(n=!1);let i=e.getBoundingClientRect(),l=eS(e),s=H(1);t&&(o?ec(o)&&(s=eT(o)):s=eT(e));let a=(void 0===(r=n)&&(r=!1),o&&(!r||o===el(l))&&r)?ek(l):H(0),c=(i.left+a.x)/s.x,u=(i.top+a.y)/s.y,d=i.width/s.x,h=i.height/s.y;if(l){let e=el(l),t=o&&ec(o)?el(o):o,n=e,r=ew(n);for(;r&&o&&t!==n;){let e=eT(r),t=r.getBoundingClientRect(),o=ey(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,l=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;c*=e.x,u*=e.y,d*=e.x,h*=e.y,c+=i,u+=l,r=ew(n=el(r))}}return X({width:d,height:h,x:c,y:u})}function eC(e,t){let n=eb(e).scrollLeft;return t?t.left+n:e_(es(e)).left+n}function eO(e,t,n){void 0===n&&(n=!1);let o=e.getBoundingClientRect();return{x:o.left+t.scrollLeft-(n?0:eC(e,o)),y:o.top+t.scrollTop}}function eP(e,t,n){let o;if("viewport"===t)o=function(e,t){let n=el(e),o=es(e),r=n.visualViewport,i=o.clientWidth,l=o.clientHeight,s=0,a=0;if(r){i=r.width,l=r.height;let e=em();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,a=r.offsetTop)}return{width:i,height:l,x:s,y:a}}(e,n);else if("document"===t)o=function(e){let t=es(e),n=eb(e),o=e.ownerDocument.body,r=R(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=R(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight),l=-n.scrollLeft+eC(e),s=-n.scrollTop;return"rtl"===ey(o).direction&&(l+=R(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:l,y:s}}(es(e));else if(ec(t))o=function(e,t){let n=e_(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=eu(e)?eT(e):H(1),l=e.clientWidth*i.x;return{width:l,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{let n=ek(e);o={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return X(o)}function eA(e){return"static"===ey(e).position}function eL(e,t){if(!eu(e)||"fixed"===ey(e).position)return null;if(t)return t(e);let n=e.offsetParent;return es(e)===n&&(n=n.ownerDocument.body),n}function eM(e,t){let n=el(e);if(ef(e))return n;if(!eu(e)){let t=ev(e);for(;t&&!eg(t);){if(ec(t)&&!eA(t))return t;t=ev(t)}return n}let o=eL(e,t);for(;o&&["table","td","th"].includes(ei(o))&&eA(o);)o=eL(o,t);return o&&eg(o)&&eA(o)&&!ep(o)?n:o||function(e){let t=ev(e);for(;eu(t)&&!eg(t);){if(ep(t))return t;if(ef(t))break;t=ev(t)}return null}(e)||n}let eI=async function(e){let t=this.getOffsetParent||eM,n=this.getDimensions,o=await n(e.floating);return{reference:function(e,t,n){let o=eu(t),r=es(t),i="fixed"===n,l=e_(e,!0,i,t),s={scrollLeft:0,scrollTop:0},a=H(0);if(o||!o&&!i){if(("body"!==ei(t)||eh(r))&&(s=eb(t)),o){let e=e_(t,!0,i,t);a.x=e.x+t.clientLeft,a.y=e.y+t.clientTop}else r&&(a.x=eC(r))}let c=!r||o||i?H(0):eO(r,s);return{x:l.left+s.scrollLeft-a.x-c.x,y:l.top+s.scrollTop-a.y-c.y,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}},eR={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e,i="fixed"===r,l=es(o),s=!!t&&ef(t.floating);if(o===l||s&&i)return n;let a={scrollLeft:0,scrollTop:0},c=H(1),u=H(0),d=eu(o);if((d||!d&&!i)&&(("body"!==ei(o)||eh(l))&&(a=eb(o)),eu(o))){let e=e_(o);c=eT(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}let h=!l||d||i?H(0):eO(l,a,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-a.scrollLeft*c.x+u.x+h.x,y:n.y*c.y-a.scrollTop*c.y+u.y+h.y}},getDocumentElement:es,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e,i=[..."clippingAncestors"===n?ef(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let o=ex(e,[],!1).filter(e=>ec(e)&&"body"!==ei(e)),r=null,i="fixed"===ey(e).position,l=i?ev(e):e;for(;ec(l)&&!eg(l);){let t=ey(l),n=ep(l);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&!!r&&["absolute","fixed"].includes(r.position)||eh(l)&&!n&&function e(t,n){let o=ev(t);return!(o===n||!ec(o)||eg(o))&&("fixed"===ey(o).position||e(o,n))}(e,l))?o=o.filter(e=>e!==l):r=t,l=ev(l)}return t.set(e,o),o}(t,this._c):[].concat(n),o],l=i[0],s=i.reduce((e,n)=>{let o=eP(t,n,r);return e.top=R(o.top,e.top),e.right=I(o.right,e.right),e.bottom=I(o.bottom,e.bottom),e.left=R(o.left,e.left),e},eP(t,l,r));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:eM,getElementRects:eI,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=eE(e);return{width:t,height:n}},getScale:eT,isElement:ec,isRTL:function(e){return"rtl"===ey(e).direction}},eq=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:o,placement:r,rects:i,platform:l,elements:s,middlewareData:a}=t,{element:c,padding:u=0}=F(e,t)||{};if(null==c)return{};let d=J(u),h={x:n,y:o},f=W(U(r)),p=z(f),g=await l.getDimensions(c),y="y"===f,b=y?"clientHeight":"clientWidth",v=i.reference[p]+i.reference[f]-h[f]-i.floating[p],x=h[f]-i.reference[f],w=await (null==l.getOffsetParent?void 0:l.getOffsetParent(c)),E=w?w[b]:0;E&&await (null==l.isElement?void 0:l.isElement(w))||(E=s.floating[b]||i.floating[p]);let S=E/2-g[p]/2-1,T=I(d[y?"top":"left"],S),$=I(d[y?"bottom":"right"],S),k=E-g[p]-$,_=E/2-g[p]/2+(v/2-x/2),C=R(T,I(_,k)),O=!a.arrow&&null!=V(r)&&_!==C&&i.reference[p]/2-(_<T?T:$)-g[p]/2<0,P=O?_<T?_-T:_-k:0;return{[f]:h[f]+P,data:m({[f]:C,centerOffset:_-C-P},O&&{alignmentOffset:P}),reset:O}}}),eB=(e,t,n)=>{let o=new Map,r=m({platform:eR},n),i=m({},r.platform,{_c:o});return en(e,t,m({},r,{platform:i}))};function eH(){}function ej(e){return e()}function eD(){return Object.create(null)}function eF(e){e.forEach(ej)}function eN(e){return"function"==typeof e}function eV(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function eW(e,t){e.appendChild(t)}function ez(e,t,n){e.insertBefore(t,n||null)}function eU(e){e.parentNode&&e.parentNode.removeChild(e)}function eY(e){return document.createElement(e)}function eG(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function eK(e){return document.createTextNode(e)}function eJ(){return eK(" ")}function eX(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function eZ(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}let eQ=["width","height"];function e0(e,t){let n=Object.getOwnPropertyDescriptors(e.__proto__);for(let o in t)null==t[o]?e.removeAttribute(o):"style"===o?e.style.cssText=t[o]:"__value"===o?e.value=e[o]=t[o]:n[o]&&n[o].set&&-1===eQ.indexOf(o)?e[o]=t[o]:eZ(e,o,t[o])}function e1(e,t,n){e.classList.toggle(t,!!n)}function e2(){if(!o)throw Error("Function called outside component initialization");return o}function e4(e){e2().$$.after_update.push(e)}let e6=[],e3=[],e5=[],e9=[],e8=Promise.resolve(),e7=!1;function te(e){e5.push(e)}let tt=new Set,tn=0;function to(){if(0!==tn)return;let e=o;do{try{for(;tn<e6.length;){let e=e6[tn];tn++,o=e,function(e){if(null!==e.fragment){e.update(),eF(e.before_update);let t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(te)}}(e.$$)}}catch(e){throw e6.length=0,tn=0,e}for(o=null,e6.length=0,tn=0;e3.length;)e3.pop()();for(let e=0;e<e5.length;e+=1){let t=e5[e];tt.has(t)||(tt.add(t),t())}e5.length=0}while(e6.length);for(;e9.length;)e9.pop()();e7=!1,tt.clear(),o=e}let tr=new Set;function ti(){r={r:0,c:[],p:r}}function tl(){r.r||eF(r.c),r=r.p}function ts(e,t){e&&e.i&&(tr.delete(e),e.i(t))}function ta(e,t,n,o){e&&e.o?tr.has(e)||(tr.add(e),r.c.push(()=>{tr.delete(e),o&&(n&&e.d(1),o())}),e.o(t)):o&&o()}function tc(e){return(null==e?void 0:e.length)!==void 0?e:Array.from(e)}function tu(e){e&&e.c()}function td(e,t,n){let{fragment:o,after_update:r}=e.$$;o&&o.m(t,n),te(()=>{let t=e.$$.on_mount.map(ej).filter(eN);e.$$.on_destroy?e.$$.on_destroy.push(...t):eF(t),e.$$.on_mount=[]}),r.forEach(te)}function th(e,t){let n=e.$$;null!==n.fragment&&(!function(e){let t=[],n=[];e5.forEach(o=>-1===e.indexOf(o)?t.push(o):n.push(o)),n.forEach(e=>e()),e5=t}(n.after_update),eF(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function tf(e,t,n,r,i,l,s=null,a=[-1]){let c=o;o=e;let u=e.$$={fragment:null,ctx:[],props:l,update:eH,not_equal:i,bound:eD(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(c?c.$$.context:[])),callbacks:eD(),dirty:a,skip_bound:!1,root:t.target||c.$$.root};s&&s(u.root);let d=!1;if(u.ctx=n?n(e,t.props||{},(t,n,...o)=>{let r=o.length?o[0]:n;return u.ctx&&i(u.ctx[t],u.ctx[t]=r)&&(!u.skip_bound&&u.bound[t]&&u.bound[t](r),d)&&(-1===e.$$.dirty[0]&&(e6.push(e),e7||(e7=!0,e8.then(to)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31),n}):[],u.update(),d=!0,eF(u.before_update),u.fragment=!!r&&r(u.ctx),t.target){if(t.hydrate){let e=Array.from(t.target.childNodes);u.fragment&&u.fragment.l(e),e.forEach(eU)}else u.fragment&&u.fragment.c();t.intro&&ts(e.$$.fragment),td(e,t.target,t.anchor),to()}o=c}class tp{constructor(){this.$$=void 0,this.$$set=void 0}$destroy(){th(this,1),this.$destroy=eH}$on(e,t){if(!eN(t))return eH;let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{let e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){this.$$set&&0!==Object.keys(e).length&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}function tm(e){let t,n,o,r,i;return{c(){eZ(t=eY("button"),"aria-label",n=e[3]?e[3]:null),eZ(t,"class",o=`${e[1]||""} shepherd-button ${e[4]?"shepherd-button-secondary":""}`),t.disabled=e[2],eZ(t,"tabindex","0"),eZ(t,"type","button")},m(n,o){ez(n,t,o),t.innerHTML=e[5],r||(i=eX(t,"click",function(){eN(e[0])&&e[0].apply(this,arguments)}),r=!0)},p(r,[i]){e=r,32&i&&(t.innerHTML=e[5]),8&i&&n!==(n=e[3]?e[3]:null)&&eZ(t,"aria-label",n),18&i&&o!==(o=`${e[1]||""} shepherd-button ${e[4]?"shepherd-button-secondary":""}`)&&eZ(t,"class",o),4&i&&(t.disabled=e[2])},i:eH,o:eH,d(e){e&&eU(t),r=!1,i()}}}function tg(e,t,n){let o,r,i,l,s,a,{config:c,step:u}=t;function h(e){return d(e)?e=e.call(u):e}return e.$$set=e=>{"config"in e&&n(6,c=e.config),"step"in e&&n(7,u=e.step)},e.$$.update=()=>{192&e.$$.dirty&&(n(0,o=c.action?c.action.bind(u.tour):null),n(1,r=c.classes),n(2,i=!!c.disabled&&h(c.disabled)),n(3,l=c.label?h(c.label):null),n(4,s=c.secondary),n(5,a=c.text?h(c.text):null))},[o,r,i,l,s,a,c,u]}"undefined"!=typeof window&&(window.__svelte||(window.__svelte={v:new Set})).v.add("4");class ty extends tp{constructor(e){super(),tf(this,e,tg,tm,eV,{config:6,step:7})}}function tb(e,t,n){let o=e.slice();return o[2]=t[n],o}function tv(e){let t,n;let o=tc(e[1]),r=[];for(let t=0;t<o.length;t+=1)r[t]=tx(tb(e,o,t));let i=e=>ta(r[e],1,1,()=>{r[e]=null});return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=eK("")},m(e,o){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,o);ez(e,t,o),n=!0},p(e,n){if(3&n){let l;for(l=0,o=tc(e[1]);l<o.length;l+=1){let i=tb(e,o,l);r[l]?(r[l].p(i,n),ts(r[l],1)):(r[l]=tx(i),r[l].c(),ts(r[l],1),r[l].m(t.parentNode,t))}for(ti(),l=o.length;l<r.length;l+=1)i(l);tl()}},i(e){if(!n){for(let e=0;e<o.length;e+=1)ts(r[e]);n=!0}},o(e){r=r.filter(Boolean);for(let e=0;e<r.length;e+=1)ta(r[e]);n=!1},d(e){e&&eU(t),function(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}(r,e)}}}function tx(e){let t,n;return t=new ty({props:{config:e[2],step:e[0]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};2&n&&(o.config=e[2]),1&n&&(o.step=e[0]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tw(e){let t,n;let o=e[1]&&tv(e);return{c(){t=eY("footer"),o&&o.c(),eZ(t,"class","shepherd-footer")},m(e,r){ez(e,t,r),o&&o.m(t,null),n=!0},p(e,[n]){e[1]?o?(o.p(e,n),2&n&&ts(o,1)):((o=tv(e)).c(),ts(o,1),o.m(t,null)):o&&(ti(),ta(o,1,1,()=>{o=null}),tl())},i(e){n||(ts(o),n=!0)},o(e){ta(o),n=!1},d(e){e&&eU(t),o&&o.d()}}}function tE(e,t,n){let o;let{step:r}=t;return e.$$set=e=>{"step"in e&&n(0,r=e.step)},e.$$.update=()=>{1&e.$$.dirty&&n(1,o=r.options.buttons)},[r,o]}class tS extends tp{constructor(e){super(),tf(this,e,tE,tw,eV,{step:0})}}function tT(e){let t,n,o,r,i;return{c(){t=eY("button"),(n=eY("span")).textContent="\xd7",eZ(n,"aria-hidden","true"),eZ(t,"aria-label",o=e[0].label?e[0].label:"Close Tour"),eZ(t,"class","shepherd-cancel-icon"),eZ(t,"type","button")},m(o,l){ez(o,t,l),eW(t,n),r||(i=eX(t,"click",e[1]),r=!0)},p(e,[n]){1&n&&o!==(o=e[0].label?e[0].label:"Close Tour")&&eZ(t,"aria-label",o)},i:eH,o:eH,d(e){e&&eU(t),r=!1,i()}}}function t$(e,t,n){let{cancelIcon:o,step:r}=t;return e.$$set=e=>{"cancelIcon"in e&&n(0,o=e.cancelIcon),"step"in e&&n(2,r=e.step)},[o,e=>{e.preventDefault(),r.cancel()},r]}class tk extends tp{constructor(e){super(),tf(this,e,t$,tT,eV,{cancelIcon:0,step:2})}}function t_(e){let t;return{c(){eZ(t=eY("h3"),"id",e[1]),eZ(t,"class","shepherd-title")},m(n,o){ez(n,t,o),e[3](t)},p(e,[n]){2&n&&eZ(t,"id",e[1])},i:eH,o:eH,d(n){n&&eU(t),e[3](null)}}}function tC(e,t,n){let{labelId:o,element:r,title:i}=t;return e4(()=>{d(i)&&n(2,i=i()),n(0,r.innerHTML=i,r)}),e.$$set=e=>{"labelId"in e&&n(1,o=e.labelId),"element"in e&&n(0,r=e.element),"title"in e&&n(2,i=e.title)},[r,o,i,function(e){e3[e?"unshift":"push"](()=>{n(0,r=e)})}]}class tO extends tp{constructor(e){super(),tf(this,e,tC,t_,eV,{labelId:1,element:0,title:2})}}function tP(e){let t,n;return t=new tO({props:{labelId:e[0],title:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};1&n&&(o.labelId=e[0]),4&n&&(o.title=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tA(e){let t,n;return t=new tk({props:{cancelIcon:e[3],step:e[1]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};8&n&&(o.cancelIcon=e[3]),2&n&&(o.step=e[1]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tL(e){let t,n,o;let r=e[2]&&tP(e),i=e[3]&&e[3].enabled&&tA(e);return{c(){t=eY("header"),r&&r.c(),n=eJ(),i&&i.c(),eZ(t,"class","shepherd-header")},m(e,l){ez(e,t,l),r&&r.m(t,null),eW(t,n),i&&i.m(t,null),o=!0},p(e,[o]){e[2]?r?(r.p(e,o),4&o&&ts(r,1)):((r=tP(e)).c(),ts(r,1),r.m(t,n)):r&&(ti(),ta(r,1,1,()=>{r=null}),tl()),e[3]&&e[3].enabled?i?(i.p(e,o),8&o&&ts(i,1)):((i=tA(e)).c(),ts(i,1),i.m(t,null)):i&&(ti(),ta(i,1,1,()=>{i=null}),tl())},i(e){o||(ts(r),ts(i),o=!0)},o(e){ta(r),ta(i),o=!1},d(e){e&&eU(t),r&&r.d(),i&&i.d()}}}function tM(e,t,n){let o,r,{labelId:i,step:l}=t;return e.$$set=e=>{"labelId"in e&&n(0,i=e.labelId),"step"in e&&n(1,l=e.step)},e.$$.update=()=>{2&e.$$.dirty&&(n(2,o=l.options.title),n(3,r=l.options.cancelIcon))},[i,l,o,r]}class tI extends tp{constructor(e){super(),tf(this,e,tM,tL,eV,{labelId:0,step:1})}}function tR(e){let t;return{c(){eZ(t=eY("div"),"class","shepherd-text"),eZ(t,"id",e[1])},m(n,o){ez(n,t,o),e[3](t)},p(e,[n]){2&n&&eZ(t,"id",e[1])},i:eH,o:eH,d(n){n&&eU(t),e[3](null)}}}function tq(e,t,n){let{descriptionId:o,element:r,step:i}=t;return e4(()=>{let{text:e}=i.options;d(e)&&(e=e.call(i)),u(e)?r.appendChild(e):n(0,r.innerHTML=e,r)}),e.$$set=e=>{"descriptionId"in e&&n(1,o=e.descriptionId),"element"in e&&n(0,r=e.element),"step"in e&&n(2,i=e.step)},[r,o,i,function(e){e3[e?"unshift":"push"](()=>{n(0,r=e)})}]}class tB extends tp{constructor(e){super(),tf(this,e,tq,tR,eV,{descriptionId:1,element:0,step:2})}}function tH(e){let t,n;return t=new tI({props:{labelId:e[1],step:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};2&n&&(o.labelId=e[1]),4&n&&(o.step=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tj(e){let t,n;return t=new tB({props:{descriptionId:e[0],step:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};1&n&&(o.descriptionId=e[0]),4&n&&(o.step=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tD(e){let t,n;return t=new tS({props:{step:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};4&n&&(o.step=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tF(e){let t,n,o,r;let i=!f(e[2].options.title)||e[2].options.cancelIcon&&e[2].options.cancelIcon.enabled,l=!f(e[2].options.text),s=Array.isArray(e[2].options.buttons)&&e[2].options.buttons.length,a=i&&tH(e),c=l&&tj(e),u=s&&tD(e);return{c(){t=eY("div"),a&&a.c(),n=eJ(),c&&c.c(),o=eJ(),u&&u.c(),eZ(t,"class","shepherd-content")},m(e,i){ez(e,t,i),a&&a.m(t,null),eW(t,n),c&&c.m(t,null),eW(t,o),u&&u.m(t,null),r=!0},p(e,[r]){4&r&&(i=!f(e[2].options.title)||e[2].options.cancelIcon&&e[2].options.cancelIcon.enabled),i?a?(a.p(e,r),4&r&&ts(a,1)):((a=tH(e)).c(),ts(a,1),a.m(t,n)):a&&(ti(),ta(a,1,1,()=>{a=null}),tl()),4&r&&(l=!f(e[2].options.text)),l?c?(c.p(e,r),4&r&&ts(c,1)):((c=tj(e)).c(),ts(c,1),c.m(t,o)):c&&(ti(),ta(c,1,1,()=>{c=null}),tl()),4&r&&(s=Array.isArray(e[2].options.buttons)&&e[2].options.buttons.length),s?u?(u.p(e,r),4&r&&ts(u,1)):((u=tD(e)).c(),ts(u,1),u.m(t,null)):u&&(ti(),ta(u,1,1,()=>{u=null}),tl())},i(e){r||(ts(a),ts(c),ts(u),r=!0)},o(e){ta(a),ta(c),ta(u),r=!1},d(e){e&&eU(t),a&&a.d(),c&&c.d(),u&&u.d()}}}function tN(e,t,n){let{descriptionId:o,labelId:r,step:i}=t;return e.$$set=e=>{"descriptionId"in e&&n(0,o=e.descriptionId),"labelId"in e&&n(1,r=e.labelId),"step"in e&&n(2,i=e.step)},[o,r,i]}class tV extends tp{constructor(e){super(),tf(this,e,tN,tF,eV,{descriptionId:0,labelId:1,step:2})}}function tW(e){let t;return{c(){eZ(t=eY("div"),"class","shepherd-arrow"),eZ(t,"data-popper-arrow","")},m(e,n){ez(e,t,n)},d(e){e&&eU(t)}}}function tz(e){let t,n,o,r,i,l,s,a;let c=e[4].options.arrow&&e[4].options.attachTo&&e[4].options.attachTo.element&&e[4].options.attachTo.on&&tW();o=new tV({props:{descriptionId:e[2],labelId:e[3],step:e[4]}});let u=[{"aria-describedby":r=f(e[4].options.text)?null:e[2]},{"aria-labelledby":i=e[4].options.title?e[3]:null},e[1],{open:"true"}],d={};for(let e=0;e<u.length;e+=1)d=function(e,t){for(let n in t)e[n]=t[n];return e}(d,u[e]);return{c(){t=eY("dialog"),c&&c.c(),n=eJ(),tu(o.$$.fragment),e0(t,d),e1(t,"shepherd-has-cancel-icon",e[5]),e1(t,"shepherd-has-title",e[6]),e1(t,"shepherd-element",!0)},m(r,i){ez(r,t,i),c&&c.m(t,null),eW(t,n),td(o,t,null),e[13](t),l=!0,s||(a=eX(t,"keydown",e[7]),s=!0)},p(e,[s]){e[4].options.arrow&&e[4].options.attachTo&&e[4].options.attachTo.element&&e[4].options.attachTo.on?c||((c=tW()).c(),c.m(t,n)):c&&(c.d(1),c=null);let a={};4&s&&(a.descriptionId=e[2]),8&s&&(a.labelId=e[3]),16&s&&(a.step=e[4]),o.$set(a),e0(t,d=function(e,t){let n={},o={},r={$$scope:1},i=e.length;for(;i--;){let l=e[i],s=t[i];if(s){for(let e in l)e in s||(o[e]=1);for(let e in s)r[e]||(n[e]=s[e],r[e]=1);e[i]=s}else for(let e in l)r[e]=1}for(let e in o)e in n||(n[e]=void 0);return n}(u,[(!l||20&s&&r!==(r=f(e[4].options.text)?null:e[2]))&&{"aria-describedby":r},(!l||24&s&&i!==(i=e[4].options.title?e[3]:null))&&{"aria-labelledby":i},2&s&&e[1],{open:"true"}])),e1(t,"shepherd-has-cancel-icon",e[5]),e1(t,"shepherd-has-title",e[6]),e1(t,"shepherd-element",!0)},i(e){l||(ts(o.$$.fragment,e),l=!0)},o(e){ta(o.$$.fragment,e),l=!1},d(n){n&&eU(t),c&&c.d(),th(o),e[13](null),s=!1,a()}}}function tU(e){return e.split(" ").filter(e=>!!e.length)}function tY(e,t,n){var o;let r,i,l,{classPrefix:s,element:a,descriptionId:c,firstFocusableElement:u,focusableElements:d,labelId:f,lastFocusableElement:p,step:m,dataStepId:g}=t;return o=()=>{n(1,g={[`data-${s}shepherd-step-id`]:m.id}),n(9,d=a.querySelectorAll('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex="0"]')),n(8,u=d[0]),n(10,p=d[d.length-1])},e2().$$.on_mount.push(o),e4(()=>{l!==m.options.classes&&(function(e){if(h(e)){let t=tU(e);t.length&&a.classList.remove(...t)}}(l),function(e){if(h(e)){let t=tU(e);t.length&&a.classList.add(...t)}}(l=m.options.classes))}),e.$$set=e=>{"classPrefix"in e&&n(11,s=e.classPrefix),"element"in e&&n(0,a=e.element),"descriptionId"in e&&n(2,c=e.descriptionId),"firstFocusableElement"in e&&n(8,u=e.firstFocusableElement),"focusableElements"in e&&n(9,d=e.focusableElements),"labelId"in e&&n(3,f=e.labelId),"lastFocusableElement"in e&&n(10,p=e.lastFocusableElement),"step"in e&&n(4,m=e.step),"dataStepId"in e&&n(1,g=e.dataStepId)},e.$$.update=()=>{16&e.$$.dirty&&(n(5,r=m.options&&m.options.cancelIcon&&m.options.cancelIcon.enabled),n(6,i=m.options&&m.options.title))},[a,g,c,f,m,r,i,e=>{let{tour:t}=m;switch(e.keyCode){case 9:if(0===d.length){e.preventDefault();break}e.shiftKey?(document.activeElement===u||document.activeElement.classList.contains("shepherd-element"))&&(e.preventDefault(),p.focus()):document.activeElement===p&&(e.preventDefault(),u.focus());break;case 27:t.options.exitOnEsc&&(e.preventDefault(),e.stopPropagation(),m.cancel());break;case 37:t.options.keyboardNavigation&&(e.preventDefault(),e.stopPropagation(),t.back());break;case 39:t.options.keyboardNavigation&&(e.preventDefault(),e.stopPropagation(),t.next())}},u,d,p,s,()=>a,function(e){e3[e?"unshift":"push"](()=>{n(0,a=e)})}]}class tG extends tp{constructor(e){super(),tf(this,e,tY,tz,eV,{classPrefix:11,element:0,descriptionId:2,firstFocusableElement:8,focusableElements:9,labelId:3,lastFocusableElement:10,step:4,dataStepId:1,getElement:12})}get getElement(){return this.$$.ctx[12]}}class tK extends p{constructor(e,t={}){return super(),this._resolvedAttachTo=void 0,this._resolvedExtraHighlightElements=void 0,this.classPrefix=void 0,this.el=void 0,this.target=void 0,this.tour=void 0,this.tour=e,this.classPrefix=this.tour.options?P(this.tour.options.classPrefix):"",this.styles=e.styles,this._resolvedAttachTo=null,_(this),this._setOptions(t),this}cancel(){this.tour.cancel(),this.trigger("cancel")}complete(){this.tour.complete(),this.trigger("complete")}destroy(){this.cleanup&&this.cleanup(),this.cleanup=null,u(this.el)&&(this.el.remove(),this.el=null),this._updateStepTargetOnHide(),this.trigger("destroy")}getTour(){return this.tour}hide(){var e;null==(e=this.tour.modal)||e.hide(),this.trigger("before-hide"),this.el&&(this.el.hidden=!0),this._updateStepTargetOnHide(),this.trigger("hide")}_resolveExtraHiglightElements(){return this._resolvedExtraHighlightElements=this.options.extraHighlights?this.options.extraHighlights.flatMap(e=>Array.from(document.querySelectorAll(e))):[],this._resolvedExtraHighlightElements}_resolveAttachToOptions(){return this._resolvedAttachTo=function(e){let t=e.options.attachTo||{},n=Object.assign({},t);if(d(n.element)&&(n.element=n.element.call(e)),h(n.element)){try{n.element=document.querySelector(n.element)}catch(e){}n.element||console.error(`The element for this Shepherd step was not found ${t.element}`)}return n}(this),this._resolvedAttachTo}_getResolvedAttachToOptions(){return null===this._resolvedAttachTo?this._resolveAttachToOptions():this._resolvedAttachTo}isOpen(){return!!(this.el&&!this.el.hidden)}show(){return d(this.options.beforeShowPromise)?Promise.resolve(this.options.beforeShowPromise()).then(()=>this._show()):Promise.resolve(this._show())}updateStepOptions(e){Object.assign(this.options,e),this.shepherdElementComponent&&this.shepherdElementComponent.$set({step:this})}getElement(){return this.el}getTarget(){return this.target}_createTooltipContent(){let e=`${this.id}-description`,t=`${this.id}-label`;return this.shepherdElementComponent=new tG({target:this.tour.options.stepsContainer||document.body,props:{classPrefix:this.classPrefix,descriptionId:e,labelId:t,step:this,styles:this.styles}}),this.shepherdElementComponent.getElement()}_scrollTo(e){let{element:t}=this._getResolvedAttachToOptions();d(this.options.scrollToHandler)?this.options.scrollToHandler(t):t instanceof Element&&"function"==typeof t.scrollIntoView&&t.scrollIntoView(e)}_getClassOptions(e){let t=this.tour&&this.tour.options&&this.tour.options.defaultStepOptions,n=e.classes?e.classes:"",o=t&&t.classes?t.classes:"";return Array.from(new Set([...n.split(" "),...o.split(" ")])).join(" ").trim()}_setOptions(e={}){let t=this.tour&&this.tour.options&&this.tour.options.defaultStepOptions;t=T({},t||{}),this.options=Object.assign({arrow:!0},t,e,{floatingUIOptions:T(t.floatingUIOptions||{},e.floatingUIOptions||{})});let{when:n}=this.options;this.options.classes=this._getClassOptions(e),this.destroy(),this.id=this.options.id||`step-${L()}`,n&&Object.keys(n).forEach(e=>{this.on(e,n[e],this)})}_setupElements(){f(this.el)||this.destroy(),this.el=this._createTooltipContent(),this.options.advanceOn&&function(e){let{event:t,selector:n}=e.options.advanceOn||{};if(!t)return console.error("advanceOn was defined, but no event name was passed.");{let o=t=>{if(e.isOpen()){let o=e.el&&t.currentTarget===e.el;(!f(n)&&t.currentTarget.matches(n)||o)&&e.tour.next()}},r=null;if(!f(n)&&!(r=document.querySelector(n)))return console.error(`No element was found for the selector supplied to advanceOn: ${n}`);r?(r.addEventListener(t,o),e.on("destroy",()=>r.removeEventListener(t,o))):(document.body.addEventListener(t,o,!0),e.on("destroy",()=>document.body.removeEventListener(t,o,!0)))}}(this),function(e){e.cleanup&&e.cleanup();let t=e._getResolvedAttachToOptions(),n=t.element,o=function(e,t){var n,o,r,i,l,s,a,c;let u={strategy:"absolute"};u.middleware=[];let d=!!t.options.arrow&&!!t.el&&t.el.querySelector(".shepherd-arrow"),h=A(e),f=null==(n=e.on)?void 0:n.includes("auto"),p=(null==e||null==(o=e.on)?void 0:o.includes("-start"))||(null==e||null==(r=e.on)?void 0:r.includes("-end"));if(!h){if(f?u.middleware.push({name:"autoPlacement",options:l={crossAxis:!0,alignment:p?null==e||null==(i=e.on)?void 0:i.split("-").pop():null},async fn(e){var t,n,o,r;let{rects:i,middlewareData:s,placement:a,platform:c,elements:u}=e,d=F(l,e),{crossAxis:h=!1,alignment:f,allowedPlacements:p=M,autoAlignment:m=!0}=d,y=g(d,Z),b=void 0!==f||p===M?((r=f||null)?[...p.filter(e=>V(e)===r),...p.filter(e=>V(e)!==r)]:p.filter(e=>N(e)===e)).filter(e=>!r||V(e)===r||!!m&&G(e)!==e):p,v=await eo(e,y),x=(null==(t=s.autoPlacement)?void 0:t.index)||0,w=b[x];if(null==w)return{};let E=Y(w,i,await (null==c.isRTL?void 0:c.isRTL(u.floating)));if(a!==w)return{reset:{placement:b[0]}};let S=[v[N(w)],v[E[0]],v[E[1]]],T=[...(null==(n=s.autoPlacement)?void 0:n.overflows)||[],{placement:w,overflows:S}],$=b[x+1];if($)return{data:{index:x+1,overflows:T},reset:{placement:$}};let k=T.map(e=>{let t=V(e.placement);return[e.placement,t&&h?e.overflows.slice(0,2).reduce((e,t)=>e+t,0):e.overflows[0],e.overflows]}).sort((e,t)=>e[1]-t[1]),_=(null==(o=k.filter(e=>e[2].slice(0,V(e[0])?2:3).every(e=>e<=0))[0])?void 0:o[0])||k[0][0];return _!==a?{data:{index:x+1,overflows:T},reset:{placement:_}}:{}}}):u.middleware.push((void 0===s&&(s={}),{name:"flip",options:s,async fn(e){var t,n,o,r,i;let{placement:l,middlewareData:a,rects:c,initialPlacement:u,platform:d,elements:h}=e,f=F(s,e),{mainAxis:p=!0,crossAxis:m=!0,fallbackPlacements:y,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:v="none",flipAlignment:x=!0}=f,w=g(f,Q);if(null!=(t=a.arrow)&&t.alignmentOffset)return{};let E=N(l),S=U(u),T=N(u)===u,$=await (null==d.isRTL?void 0:d.isRTL(h.floating)),k=y||(T||!x?[K(u)]:function(e){let t=K(e);return[G(e),t,G(t)]}(u)),_="none"!==v;!y&&_&&k.push(...function(e,t,n,o){let r=V(e),i=function(e,t,n){let o=["left","right"],r=["right","left"];switch(e){case"top":case"bottom":if(n)return t?r:o;return t?o:r;case"left":case"right":return t?["top","bottom"]:["bottom","top"];default:return[]}}(N(e),"start"===n,o);return r&&(i=i.map(e=>e+"-"+r),t&&(i=i.concat(i.map(G)))),i}(u,x,v,$));let C=[u,...k],O=await eo(e,w),P=[],A=(null==(n=a.flip)?void 0:n.overflows)||[];if(p&&P.push(O[E]),m){let e=Y(l,c,$);P.push(O[e[0]],O[e[1]])}if(A=[...A,{placement:l,overflows:P}],!P.every(e=>e<=0)){let e=((null==(o=a.flip)?void 0:o.index)||0)+1,t=C[e];if(t)return{data:{index:e,overflows:A},reset:{placement:t}};let n=null==(r=A.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:r.placement;if(!n)switch(b){case"bestFit":{let e=null==(i=A.filter(e=>{if(_){let t=U(e.placement);return t===S||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:i[0];e&&(n=e);break}case"initialPlacement":n=u}if(l!==n)return{reset:{placement:n}}}return{}}})),u.middleware.push({name:"shift",options:c={limiter:(void 0===a&&(a={}),{options:a,fn(e){let{x:t,y:n,placement:o,rects:r,middlewareData:i}=e,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=F(a,e),u={x:t,y:n},d=U(o),h=W(d),f=u[h],p=u[d],g=F(l,e),y="number"==typeof g?{mainAxis:g,crossAxis:0}:m({mainAxis:0,crossAxis:0},g);if(s){let e="y"===h?"height":"width",t=r.reference[h]-r.floating[e]+y.mainAxis,n=r.reference[h]+r.reference[e]-y.mainAxis;f<t?f=t:f>n&&(f=n)}if(c){var b,v;let e="y"===h?"width":"height",t=["top","left"].includes(N(o)),n=r.reference[d]-r.floating[e]+(t&&(null==(b=i.offset)?void 0:b[d])||0)+(t?0:y.crossAxis),l=r.reference[d]+r.reference[e]+(t?0:(null==(v=i.offset)?void 0:v[d])||0)-(t?y.crossAxis:0);p<n?p=n:p>l&&(p=l)}return{[h]:f,[d]:p}}}),crossAxis:!0},async fn(e){let{x:t,y:n,placement:o}=e,r=F(c,e),{mainAxis:i=!0,crossAxis:l=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}}}=r,a=g(r,ee),u={x:t,y:n},d=await eo(e,a),h=U(N(o)),f=W(h),p=u[f],y=u[h];if(i){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",n=p+d[e],o=p-d[t];p=R(n,I(p,o))}if(l){let e="y"===h?"top":"left",t="y"===h?"bottom":"right",n=y+d[e],o=y-d[t];y=R(n,I(y,o))}let b=s.fn(m({},e,{[f]:p,[h]:y}));return m({},b,{data:{x:b.x-t,y:b.y-n}})}}),d){let e="object"==typeof t.options.arrow?t.options.arrow:{padding:4};u.middleware.push(eq({element:d,padding:p?e.padding:0}))}f||(u.placement=e.on)}return T(u,t.options.floatingUIOptions||{})}(t,e),r=A(t);r&&(n=document.body,e.shepherdElementComponent.getElement().classList.add("shepherd-centered")),e.cleanup=function(e,t,n,o){let r;void 0===o&&(o={});let{ancestorScroll:i=!0,ancestorResize:l=!0,elementResize:s="function"==typeof ResizeObserver,layoutShift:a="function"==typeof IntersectionObserver,animationFrame:c=!1}=o,u=eS(e),d=i||l?[...u?ex(u):[],...ex(t)]:[];d.forEach(e=>{i&&e.addEventListener("scroll",n,{passive:!0}),l&&e.addEventListener("resize",n)});let h=u&&a?function(e,t){let n,o=null,r=es(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function l(s,a){void 0===s&&(s=!1),void 0===a&&(a=1),i();let{left:c,top:u,width:d,height:h}=e.getBoundingClientRect();if(s||t(),!d||!h)return;let f=B(u),p=B(r.clientWidth-(c+d)),g={rootMargin:-f+"px "+-p+"px "+-B(r.clientHeight-(u+h))+"px "+-B(c)+"px",threshold:R(0,I(1,a))||1},y=!0;function b(e){let t=e[0].intersectionRatio;if(t!==a){if(!y)return l();t?l(!1,t):n=setTimeout(()=>{l(!1,1e-7)},1e3)}y=!1}try{o=new IntersectionObserver(b,m({},g,{root:r.ownerDocument}))}catch(e){o=new IntersectionObserver(b,g)}o.observe(e)}(!0),i}(u,n):null,f=-1,p=null;s&&(p=new ResizeObserver(e=>{let[o]=e;o&&o.target===u&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;null==(e=p)||e.observe(t)})),n()}),u&&!c&&p.observe(u),p.observe(t));let g=c?e_(e):null;return c&&function t(){let o=e_(e);g&&(o.x!==g.x||o.y!==g.y||o.width!==g.width||o.height!==g.height)&&n(),g=o,r=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{i&&e.removeEventListener("scroll",n),l&&e.removeEventListener("resize",n)}),null==h||h(),null==(e=p)||e.disconnect(),p=null,c&&cancelAnimationFrame(r)}}(n,e.el,()=>{if(!e.el){null==e.cleanup||e.cleanup();return}(function(e,t,n,o){eB(e,t.el,n).then(({x:e,y:n,placement:r,middlewareData:i})=>(t.el&&(o?Object.assign(t.el.style,{position:"fixed",left:"50%",top:"50%",transform:"translate(-50%, -50%)"}):Object.assign(t.el.style,{position:"absolute",left:`${e}px`,top:`${n}px`}),t.el.dataset.popperPlacement=r,function(e,t){let n=e.querySelector(".shepherd-arrow");if(u(n)&&t.arrow){let{x:e,y:o}=t.arrow;Object.assign(n.style,{left:null!=e?`${e}px`:"",top:null!=o?`${o}px`:""})}}(t.el,i)),t)).then(e=>new Promise(t=>{setTimeout(()=>t(e),300)})).then(e=>{null!=e&&e.el&&e.el.focus({preventScroll:!0})})})(n,e,o,r)}),e.target=t.element}(this)}_show(){var e;this.trigger("before-show"),this._resolveAttachToOptions(),this._resolveExtraHiglightElements(),this._setupElements(),this.tour.modal||this.tour.setupModal(),null==(e=this.tour.modal)||e.setupForStep(this),this._styleTargetElementForStep(this),this.el&&(this.el.hidden=!1),this.options.scrollTo&&setTimeout(()=>{this._scrollTo(this.options.scrollTo)}),this.el&&(this.el.hidden=!1);let t=this.shepherdElementComponent.getElement(),n=this.target||document.body,o=this._resolvedExtraHighlightElements;n.classList.add(`${this.classPrefix}shepherd-enabled`),n.classList.add(`${this.classPrefix}shepherd-target`),t.classList.add("shepherd-enabled"),null==o||o.forEach(e=>{e.classList.add(`${this.classPrefix}shepherd-enabled`),e.classList.add(`${this.classPrefix}shepherd-target`)}),this.trigger("show")}_styleTargetElementForStep(e){let t=e.target,n=e._resolvedExtraHighlightElements;if(!t)return;let o=e.options.highlightClass;o&&(t.classList.add(o),null==n||n.forEach(e=>e.classList.add(o))),t.classList.remove("shepherd-target-click-disabled"),null==n||n.forEach(e=>e.classList.remove("shepherd-target-click-disabled")),!1===e.options.canClickTarget&&(t.classList.add("shepherd-target-click-disabled"),null==n||n.forEach(e=>e.classList.add("shepherd-target-click-disabled")))}_updateStepTargetOnHide(){let e=this.target||document.body,t=this._resolvedExtraHighlightElements,n=this.options.highlightClass;n&&(e.classList.remove(n),null==t||t.forEach(e=>e.classList.remove(n))),e.classList.remove("shepherd-target-click-disabled",`${this.classPrefix}shepherd-enabled`,`${this.classPrefix}shepherd-target`),null==t||t.forEach(e=>{e.classList.remove("shepherd-target-click-disabled",`${this.classPrefix}shepherd-enabled`,`${this.classPrefix}shepherd-target`)})}}function tJ(e){let t,n,o,r,i;return{c(){t=eG("svg"),eZ(n=eG("path"),"d",e[2]),eZ(t,"class",o=`${e[1]?"shepherd-modal-is-visible":""} shepherd-modal-overlay-container`)},m(o,l){ez(o,t,l),eW(t,n),e[11](t),r||(i=eX(t,"touchmove",e[3]),r=!0)},p(e,[r]){4&r&&eZ(n,"d",e[2]),2&r&&o!==(o=`${e[1]?"shepherd-modal-is-visible":""} shepherd-modal-overlay-container`)&&eZ(t,"class",o)},i:eH,o:eH,d(n){n&&eU(t),e[11](null),r=!1,i()}}}function tX(e,t,n){let o,r,{element:i,openingProperties:l}=t,s=!1;function a(){n(4,l=[{width:0,height:0,x:0,y:0,r:0}])}function c(){n(1,s=!1),f()}function u(e=0,t=0,o=0,r=0,i,s,c){if(s){let a=[s,...c||[]];for(let s of(n(4,l=[]),a)){if(!s||a.indexOf(s)!==a.lastIndexOf(s))continue;let{y:n,height:c}=function(e,t){let n=e.getBoundingClientRect(),o=n.y||n.top,r=n.bottom||o+n.height;if(t){let e=t.getBoundingClientRect(),n=e.y||e.top,i=e.bottom||n+e.height;o=Math.max(o,n),r=Math.min(r,i)}let i=Math.max(r-o,0);return{y:o,height:i}}(s,i),{x:u,width:d,left:h}=s.getBoundingClientRect();a.some(e=>{if(e===s)return!1;let t=e.getBoundingClientRect();return u>=t.left&&u+d<=t.right&&n>=t.top&&n+c<=t.bottom})||l.push({width:d+2*e,height:c+2*e,x:(u||h)+o-e,y:n+r-e,r:t})}}else a()}function d(){n(1,s=!0)}a();let h=e=>{e.preventDefault()};function f(){o&&(cancelAnimationFrame(o),o=void 0),window.removeEventListener("touchmove",h,{passive:!1})}return e.$$set=e=>{"element"in e&&n(0,i=e.element),"openingProperties"in e&&n(4,l=e.openingProperties)},e.$$.update=()=>{16&e.$$.dirty&&n(2,r=function(e){let t="",{innerWidth:n,innerHeight:o}=window;return e.forEach(e=>{let{width:n,height:o,x:r=0,y:i=0,r:l=0}=e,{topLeft:s=0,topRight:a=0,bottomRight:c=0,bottomLeft:u=0}="number"==typeof l?{topLeft:l,topRight:l,bottomRight:l,bottomLeft:l}:l;t+=`M${r+s},${i}\
21
- a${s},${s},0,0,0-${s},${s}\
22
- V${o+i-u}\
23
- a${u},${u},0,0,0,${u},${u}\
24
- H${n+r-c}\
25
- a${c},${c},0,0,0,${c}-${c}\
26
- V${i+a}\
27
- a${a},${a},0,0,0-${a}-${a}\
28
- Z`}),`M${n},${o}\
29
- H0\
30
- V0\
31
- H${n}\
32
- V${o}\
33
- Z\
34
- ${t}`.replace(/\s/g,"")}(l))},[i,s,r,e=>{e.stopPropagation()},l,()=>i,a,c,u,function(e){f(),e.tour.options.useModalOverlay?(function(e){let{modalOverlayOpeningPadding:t,modalOverlayOpeningRadius:n,modalOverlayOpeningXOffset:r=0,modalOverlayOpeningYOffset:i=0}=e.options,l=function(e){let t={top:0,left:0};if(!e)return t;let n=e.ownerDocument.defaultView;for(;n!==window.top;){var o,r,i;let e=null==(o=n)?void 0:o.frameElement;if(e){let n=e.getBoundingClientRect();t.top+=n.top+(null!=(r=n.scrollTop)?r:0),t.left+=n.left+(null!=(i=n.scrollLeft)?i:0)}n=n.parent}return t}(e.target),s=function e(t){if(!t)return null;let n=t instanceof HTMLElement&&window.getComputedStyle(t).overflowY;return"hidden"!==n&&"visible"!==n&&t.scrollHeight>=t.clientHeight?t:e(t.parentElement)}(e.target),a=()=>{o=void 0,u(t,n,r+l.left,i+l.top,s,e.target,e._resolvedExtraHighlightElements),o=requestAnimationFrame(a)};a(),window.addEventListener("touchmove",h,{passive:!1})}(e),d()):c()},d,function(e){e3[e?"unshift":"push"](()=>{n(0,i=e)})}]}class tZ extends tp{constructor(e){super(),tf(this,e,tX,tJ,eV,{element:0,openingProperties:4,getElement:5,closeModalOpening:6,hide:7,positionModal:8,setupForStep:9,show:10})}get getElement(){return this.$$.ctx[5]}get closeModalOpening(){return this.$$.ctx[6]}get hide(){return this.$$.ctx[7]}get positionModal(){return this.$$.ctx[8]}get setupForStep(){return this.$$.ctx[9]}get show(){return this.$$.ctx[10]}}class tQ extends p{constructor(){super(),this.activeTour=void 0,_(this)}}class t0 extends p{constructor(e={}){return super(),this.trackedEvents=["active","cancel","complete","show"],this.classPrefix=void 0,this.currentStep=void 0,this.focusedElBeforeOpen=void 0,this.id=void 0,this.modal=void 0,this.options=void 0,this.steps=void 0,_(this),this.options=Object.assign({},{exitOnEsc:!0,keyboardNavigation:!0},e),this.classPrefix=P(this.options.classPrefix),this.steps=[],this.addSteps(this.options.steps),["active","cancel","complete","inactive","show","start"].map(e=>{(e=>{this.on(e,t=>{(t=t||{}).tour=this,t1.trigger(e,t)})})(e)}),this._setTourID(e.id),this}addStep(e,t){let n=e;return n instanceof tK?n.tour=this:n=new tK(this,n),f(t)?this.steps.push(n):this.steps.splice(t,0,n),n}addSteps(e){return Array.isArray(e)&&e.forEach(e=>{this.addStep(e)}),this}back(){let e=this.steps.indexOf(this.currentStep);this.show(e-1,!1)}async cancel(){if(this.options.confirmCancel){let e=this.options.confirmCancelMessage||"Are you sure you want to stop the tour?";(d(this.options.confirmCancel)?await this.options.confirmCancel():window.confirm(e))&&this._done("cancel")}else this._done("cancel")}complete(){this._done("complete")}getById(e){return this.steps.find(t=>t.id===e)}getCurrentStep(){return this.currentStep}hide(){let e=this.getCurrentStep();if(e)return e.hide()}isActive(){return t1.activeTour===this}next(){let e=this.steps.indexOf(this.currentStep);e===this.steps.length-1?this.complete():this.show(e+1,!0)}removeStep(e){let t=this.getCurrentStep();this.steps.some((t,n)=>{if(t.id===e)return t.isOpen()&&t.hide(),t.destroy(),this.steps.splice(n,1),!0}),t&&t.id===e&&(this.currentStep=void 0,this.steps.length?this.show(0):this.cancel())}show(e=0,t=!0){let n=h(e)?this.getById(e):this.steps[e];n&&(this._updateStateBeforeShow(),d(n.options.showOn)&&!n.options.showOn()?this._skipStep(n,t):(this.currentStep=n,this.trigger("show",{step:n,previous:this.currentStep}),n.show()))}async start(){this.trigger("start"),this.focusedElBeforeOpen=document.activeElement,this.currentStep=null,this.setupModal(),this._setupActiveTour(),this.next()}_done(e){let t=this.steps.indexOf(this.currentStep);if(Array.isArray(this.steps)&&this.steps.forEach(e=>e.destroy()),!function(e){if(e){let{steps:t}=e;t.forEach(e=>{e.options&&!1===e.options.canClickTarget&&e.options.attachTo&&(u(e.target)&&e.target.classList.remove("shepherd-target-click-disabled"),e._resolvedExtraHighlightElements&&e._resolvedExtraHighlightElements.forEach(e=>{u(e)&&e.classList.remove("shepherd-target-click-disabled")}))})}}(this),this.trigger(e,{index:t}),t1.activeTour=null,this.trigger("inactive",{tour:this}),this.modal&&this.modal.hide(),("cancel"===e||"complete"===e)&&this.modal){let e=document.querySelector(".shepherd-modal-overlay-container");e&&(e.remove(),this.modal=null)}u(this.focusedElBeforeOpen)&&this.focusedElBeforeOpen.focus()}_setupActiveTour(){this.trigger("active",{tour:this}),t1.activeTour=this}setupModal(){this.modal=new tZ({target:this.options.modalContainer||document.body,props:{styles:this.styles}})}_skipStep(e,t){let n=this.steps.indexOf(e);n===this.steps.length-1?this.complete():this.show(t?n+1:n-1,t)}_updateStateBeforeShow(){this.currentStep&&this.currentStep.hide(),this.isActive()||this._setupActiveTour()}_setTourID(e){let t=this.options.tourName||"tour",n=e||L();this.id=`${t}--${n}`}}let t1=new tQ,t2="undefined"==typeof window;t1.Step=t2?C:tK,t1.Tour=t2?O:t0;var t4=n(6556);let t6=(0,a.createContext)(null);function t3(){let e=(0,a.useContext)(t6);if(!e)throw Error("useTour must be used within a TourProvider");return e}function t5(e){let{children:t}=e,n=(0,a.useRef)(null),o=(0,c.useRouter)(),{isFirstVisit:r,markTourCompleted:i}=(0,t4.n)(),[l,u]=(0,a.useState)(!1),[d,h]=(0,a.useState)(!1),[f,p]=(0,a.useState)(!1),m=(0,a.useRef)(!1),g=()=>{n.current&&(h(!0),p(!0),n.current.start(),setTimeout(()=>{p(!1)},1e3))};(0,a.useEffect)(()=>{if(!n.current){n.current=new t1.Tour({useModalOverlay:!1,defaultStepOptions:{cancelIcon:{enabled:!0},scrollTo:{behavior:"smooth",block:"center"},arrow:!1,highlightClass:"shepherd-highlight",when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}let s=null==o?void 0:o.getTarget();s&&s instanceof HTMLElement&&(s.style.outline="3px solid #3b82f6",s.style.outlineOffset="2px",s.style.borderRadius="8px",s.style.position="relative",s.style.zIndex="9999",s.setAttribute("data-shepherd-highlighted","true"))},hide(){let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted")),document.documentElement.style.removeProperty("--shepherd-dialog-height");let t=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');t&&t instanceof HTMLElement&&(t.style.removeProperty("height"),t.style.removeProperty("max-height"))}}}});let e=document.createElement("style");e.id="shepherd-global-custom-style",e.textContent='\n .shepherd-element {\n /* Uniform 1px border using inner box-shadow so corners stay consistent */\n border: none !important;\n border-radius: 10px !important;\n z-index: 30000 !important;\n box-shadow: 0 0 0 1px #d1d5db inset, 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n overflow: visible !important;\n background-clip: padding-box !important;\n }\n\n .shepherd-title {\n font-weight: bold;\n color: #111827;\n margin: 0;\n }\n\n .shepherd-element .shepherd-header {\n padding: 1rem 1rem 0.5rem 1rem;\n }\n\n .shepherd-element .shepherd-text {\n padding: 0.5rem 1rem 1rem 1rem;\n }\n\n /* Fix mobile menu gap when tour dialog is present */\n @media (max-width: 767px) {\n /* Very specific selector to override Tailwind\'s h-[calc(100vh-56px)] class */\n div.fixed.top-14.left-0.w-64.bg-white.border-r.shadow-lg.z-50.transform,\n .fixed.top-14.left-0.w-64.bg-white.shadow-lg.z-50,\n div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"][class*="bg-white"][class*="shadow-lg"][class*="z-50"] {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n max-height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Target the mobile menu by its exact class combination from the HTML */\n .fixed.w-64.bg-white.border-r.border-gray-200.shadow-lg.z-50.transform,\n .fixed[class*="w-64"][class*="bg-white"][class*="border-r"][class*="shadow-lg"][class*="z-50"][class*="transform"] {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Even more specific - target by multiple class combinations */\n .fixed.top-14.left-0[class*="w-64"],\n div.fixed[class*="top-14"][class*="left-0"][class*="w-64"] {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Super aggressive approach - use high specificity to override Tailwind */\n body div.fixed.w-64:not(.shepherd-element),\n html body div.fixed.w-64:not(.shepherd-element) {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Fallback selectors for other mobile menu patterns */\n nav[data-state="open"],\n .mobile-menu.open,\n [data-mobile-menu="true"] {\n height: calc(100vh - var(--shepherd-dialog-height, 200px)) !important;\n max-height: calc(100vh - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Ensure mobile menu content flows properly */\n .fixed.w-64 nav,\n .fixed[class*="w-64"] nav {\n height: 100% !important;\n overflow-y: auto !important;\n }\n }\n\n ',document.getElementById("shepherd-global-custom-style")||document.head.appendChild(e),n.current.on("complete",()=>{let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted"));let t=document.getElementById("shepherd-column-overlay");t&&t.remove();let n=document.getElementById("shepherd-column-anchor");n&&n.remove();let o=document.getElementById("shepherd-user-column-overlay");o&&o.remove();let r=document.getElementById("shepherd-user-column-anchor");r&&r.remove();let l=document.getElementById("shepherd-global-custom-style");l&&l.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let s=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');s&&s instanceof HTMLElement&&(s.style.removeProperty("height"),s.style.removeProperty("max-height")),h(!1),p(!1),i()}),n.current.on("cancel",()=>{let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted"));let t=document.getElementById("shepherd-column-overlay");t&&t.remove();let n=document.getElementById("shepherd-column-anchor");n&&n.remove();let o=document.getElementById("shepherd-user-column-overlay");o&&o.remove();let r=document.getElementById("shepherd-user-column-anchor");r&&r.remove();let l=document.getElementById("shepherd-global-custom-style");l&&l.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let s=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');s&&s instanceof HTMLElement&&(s.style.removeProperty("height"),s.style.removeProperty("max-height")),h(!1),p(!1),i()}),[{title:"\uD83D\uDC4B Welcome to SkyPilot!",text:"\n <p>SkyPilot is a system for managing AI workloads on any cluster and cloud infrastructure.</p>\n ",buttons:[{text:"Skip Tour",action(){this.cancel()},classes:"shepherd-button-secondary"},{text:"Start Tour",action(){this.next()}}]},{title:"Clusters",text:"\n <p>Spin up <strong>Sky Clusters</strong> on any infrastructure you have access to.</p>\n <p>Easily SSH into any node, connect an IDE, or queue development jobs.</p>\n ",attachTo:{element:'a[href="/dashboard/clusters"]',on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{let t=()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()};"/dashboard/clusters"!==o.pathname?(m.current=!0,o.push("/clusters").then(()=>{m.current=!1,setTimeout(t,200)})):t()})},when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}let s=document.querySelector('a[href="/dashboard/clusters"]');s&&s instanceof HTMLElement&&(s.style.outline="3px solid #3b82f6",s.style.outlineOffset="2px",s.style.borderRadius="8px",s.style.position="relative",s.style.zIndex="9999",s.setAttribute("data-shepherd-highlighted","true"))},hide(){let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted")),document.documentElement.style.removeProperty("--shepherd-dialog-height");let t=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');t&&t instanceof HTMLElement&&(t.style.removeProperty("height"),t.style.removeProperty("max-height"))}},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"SkyPilot is infra-agnostic",text:"\n <p>Run compute on any hyperscaler, neocloud, or Kubernetes cluster — all within a unified system.</p>\n ",attachTo:{element:function(){let e=document.getElementById("shepherd-column-anchor");if(e)return e;let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(t){let e=t.closest("table"),n=Array.from(t.parentElement.children).indexOf(t);if(e){let t=e.querySelectorAll("tbody tr"),o=null;for(let e=t.length-1;e>=0;e--){let r=t[e].children[n];if(r){o=r;break}}if(o)return o}return t}return document.querySelector("table")||"body"},on:"bottom",offset:{skidding:0,distance:15}},beforeShowPromise:function(){return new Promise(e=>{let t=()=>{let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(t&&t instanceof HTMLElement){let o=t.closest("table");if(o){let r=t.getBoundingClientRect(),i=window.innerWidth,l=o.closest('.overflow-x-auto, .overflow-auto, [style*="overflow"]')||o.parentElement;if((r.right>i||r.left<0)&&l&&l instanceof HTMLElement){let o=l.getBoundingClientRect(),i=t.offsetLeft-o.width/2+r.width/2;l.scrollTo({left:Math.max(0,i),behavior:"smooth"}),setTimeout(()=>{n(),e()},300);return}n()}}e()},n=()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=i.bottom+4,s=document.createElement("div");s.id="shepherd-column-anchor",s.style.position="fixed",s.style.left="".concat(o.left+o.width/2,"px"),s.style.top="".concat(l,"px"),s.style.width="1px",s.style.height="1px",s.style.zIndex="9999",s.style.pointerEvents="none",s.style.backgroundColor="transparent",s.style.transform="translate(-50%, -50%)",document.body.appendChild(s)}}};"/dashboard/clusters"!==window.location.pathname?(m.current=!0,o.push("/clusters").then(()=>{m.current=!1,setTimeout(t,200)})):t()})},when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}setTimeout(()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=document.createElement("div");l.id="shepherd-column-overlay",l.style.position="fixed",l.style.left="".concat(o.left-4,"px"),l.style.top="".concat(o.top-4,"px"),l.style.width="".concat(o.width+8,"px"),l.style.height="".concat(i.bottom-o.top+8,"px"),l.style.outline="3px solid #3b82f6",l.style.outlineOffset="2px",l.style.borderRadius="8px",l.style.zIndex="9998",l.style.pointerEvents="none",l.style.backgroundColor="transparent",document.body.appendChild(l)}}},100)},hide(){let e=document.getElementById("shepherd-column-overlay");e&&e.remove();let t=document.getElementById("shepherd-column-anchor");t&&t.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let n=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');n&&n instanceof HTMLElement&&(n.style.removeProperty("height"),n.style.removeProperty("max-height"));let o=document.getElementById("shepherd-global-custom-style");o&&o.remove()}},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Multi-user support",text:"\n <p>SkyPilot supports multiple users in an organization.</p>\n <p>Each user can have their own clusters and jobs, with proper access controls.</p>\n ",attachTo:{element:function(){let e=document.getElementById("shepherd-user-column-anchor");if(e)return e;let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(t){let e=t.closest("table"),n=Array.from(t.parentElement.children).indexOf(t);if(e){let t=e.querySelectorAll("tbody tr"),o=null;for(let e=t.length-1;e>=0;e--){let r=t[e].children[n];if(r){o=r;break}}if(o)return o}return t}return document.querySelector("table")||"body"},on:"bottom",offset:{skidding:0,distance:15}},beforeShowPromise:function(){return new Promise(e=>{let t=()=>{let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(t&&t instanceof HTMLElement){let o=t.closest("table");if(o){let r=t.getBoundingClientRect(),i=window.innerWidth,l=o.closest('.overflow-x-auto, .overflow-auto, [style*="overflow"]')||o.parentElement;if((r.right>i||r.left<0)&&l&&l instanceof HTMLElement){let o=l.getBoundingClientRect(),i=t.offsetLeft-o.width/2+r.width/2;l.scrollTo({left:Math.max(0,i),behavior:"smooth"}),setTimeout(()=>{n(),e()},300);return}n()}}e()},n=()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=i.bottom+4,s=document.createElement("div");s.id="shepherd-user-column-anchor",s.style.position="fixed",s.style.left="".concat(o.left+o.width/2,"px"),s.style.top="".concat(l,"px"),s.style.width="1px",s.style.height="1px",s.style.zIndex="9999",s.style.pointerEvents="none",s.style.backgroundColor="transparent",s.style.transform="translate(-50%, -50%)",document.body.appendChild(s)}}};"/dashboard/clusters"!==window.location.pathname?(m.current=!0,o.push("/clusters").then(()=>{m.current=!1,setTimeout(t,200)})):t()})},when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}setTimeout(()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=document.createElement("div");l.id="shepherd-user-column-overlay",l.style.position="fixed",l.style.left="".concat(o.left-4,"px"),l.style.top="".concat(o.top-4,"px"),l.style.width="".concat(o.width+8,"px"),l.style.height="".concat(i.bottom-o.top+8,"px"),l.style.outline="3px solid #3b82f6",l.style.outlineOffset="2px",l.style.borderRadius="8px",l.style.zIndex="9998",l.style.pointerEvents="none",l.style.backgroundColor="transparent",document.body.appendChild(l)}}},100)},hide(){let e=document.getElementById("shepherd-user-column-overlay");e&&e.remove();let t=document.getElementById("shepherd-user-column-anchor");t&&t.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let n=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');n&&n instanceof HTMLElement&&(n.style.removeProperty("height"),n.style.removeProperty("max-height"));let o=document.getElementById("shepherd-global-custom-style");o&&o.remove()}},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Spin up compute in seconds",text:'\n <p>Spin up clusters using the Python SDK or the CLI.</p>\n <div class="space-y-2">\n <div class="rounded-lg border text-card-foreground shadow-sm p-3 bg-gray-50">\n <div class="flex items-center justify-between">\n <pre class="text-sm w-full whitespace-pre-wrap">\n <code class="block">sky launch</code>\n </pre>\n <button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-8 w-8 rounded-full" onclick="copyDashboardCodeBlock(this)" title="Copy to clipboard">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy h-4 w-4">\n <rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect>\n <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path>\n </svg>\n </button>\n </div>\n </div>\n <div class="rounded-lg border text-card-foreground shadow-sm p-3 bg-gray-50">\n <div class="flex items-center justify-between">\n <pre class="text-sm w-full whitespace-pre-wrap">\n <code class="block">sky launch --gpus L4:8</code>\n </pre>\n <button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-8 w-8 rounded-full" onclick="copyDashboardCodeBlock(this)" title="Copy to clipboard">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy h-4 w-4">\n <rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect>\n <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path>\n </svg>\n </button>\n </div>\n </div>\n <div class="rounded-lg border text-card-foreground shadow-sm p-3 bg-gray-50">\n <div class="flex items-center justify-between">\n <pre class="text-sm w-full whitespace-pre-wrap">\n <code class="block">sky launch --num-nodes 10 --cpus 32+</code>\n </pre>\n <button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-8 w-8 rounded-full" onclick="copyDashboardCodeBlock(this)" title="Copy to clipboard">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy h-4 w-4">\n <rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect>\n <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path>\n </svg>\n </button>\n </div>\n </div>\n </div>\n ',buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Jobs",text:"\n <p>Use <strong>Managed Jobs</strong> for long-running workloads.</p>\n <p>They provide automatic recovery against failures, such as recovering from preemptions or transient errors.</p>\n ",attachTo:{element:function(){return document.querySelector('a[href="/dashboard/jobs"]')||document.querySelector('a[href="/dashboard/jobs"]')||'a[href="/dashboard/jobs"]'},on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Bring one or many infrastructure",text:"\n <p>SkyPilot combines your Kubernetes clusters, cloud VMs, or on-premise nodes into a unified compute pool.</p>\n <p>You can monitor them in this page.</p>\n ",attachTo:{element:function(){return document.querySelector('a[href="/dashboard/infra"]')||document.querySelector('a[href="/dashboard/infra"]')||'a[href="/dashboard/infra"]'},on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Workspaces",text:"\n <p>For team deployments, admins can use Workspaces to manage teams or projects.</p>\n ",attachTo:{element:'a[href="/dashboard/workspaces"]',on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Users",text:"\n <p>SkyPilot provides user management with RBAC and SSO support. Admins can manage users in this page.</p>\n ",attachTo:{element:'a[href="/dashboard/users"]',on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"\uD83C\uDF89 Tour complete!",text:'\n <p>We invite you to to explore the rest of the dashboard.</p>\n <p>To get started with SkyPilot, refer to <a href="https://docs.skypilot.co/en/latest/getting-started/quickstart.html">Quickstart</a>. You can restart this tour by clicking the <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="inline-block h-4 w-4 align-middle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg> icon in the bottom right corner.</p>\n <p>Have questions? Join Slack to directly chat with the SkyPilot team.</p>\n ',buttons:[{text:"Finish",action(){this.complete()},classes:"shepherd-button-secondary"},{text:"Join Slack",action(){window.open("https://slack.skypilot.co/","_blank"),this.complete()}}]}].forEach(e=>{n.current.addStep(e)})}return r&&!l&&(g(),u(!0)),()=>{n.current&&n.current.complete()}},[r]),(0,a.useEffect)(()=>{if(!d||f)return;let e=e=>{if(!m.current){if(window.confirm("The tour is currently in progress. Do you want to abort the tour and navigate away?\n\nYou can resume the tour by clicking the question mark on the bottom right."))n.current&&n.current.cancel();else throw o.events.emit("routeChangeError"),"Route change aborted by user during tour."}},t=e=>(e.preventDefault(),e.returnValue="The tour is currently in progress. Are you sure you want to leave?",e.returnValue);return o.events.on("routeChangeStart",e),window.addEventListener("beforeunload",t),()=>{o.events.off("routeChangeStart",e),window.removeEventListener("beforeunload",t)}},[d,f,o]);let y={startTour:g,completeTour:()=>{n.current&&n.current.complete(),p(!1)},tour:n.current};return(0,s.jsx)(t6.Provider,{value:y,children:t})}window.copyDashboardCodeBlock=function(e){let t=e.closest(".bg-gray-50").querySelector("pre").querySelector("code.block").textContent;navigator.clipboard.writeText(t).then(()=>{let t=e.innerHTML;e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check h-5 w-5 text-green-600"><path d="m9 12 2 2 4-4"/></svg>',setTimeout(()=>{e.innerHTML=t},2e3)})}},32586:function(e,t,n){"use strict";n.r(t);var o=n(85893),r=n(67294),i=n(5152),l=n.n(i),s=n(45697),a=n.n(s);n(36501);var c=n(93225),u=n(94849);let d=l()(()=>Promise.all([n.e(616),n.e(6130),n.e(7411),n.e(6989),n.e(3850),n.e(9353),n.e(2350)]).then(n.bind(n,9353)).then(e=>e.Layout),{loadableGenerated:{webpack:()=>[9353]},ssr:!1});function h(e){let{Component:t,pageProps:n}=e;return(0,r.useEffect)(()=>{let e=document.createElement("link");e.rel="icon",e.href="".concat(c.GW,"/favicon.ico"),document.head.appendChild(e)},[]),(0,o.jsx)(u.C,{children:(0,o.jsx)(d,{highlighted:n.highlighted,children:(0,o.jsx)(t,{...n})})})}h.propTypes={Component:a().elementType.isRequired,pageProps:a().object.isRequired},t.default=h},36501:function(){},77663:function(e){!function(){var t={229:function(e){var t,n,o,r=e.exports={};function i(){throw Error("setTimeout has not been defined")}function l(){throw Error("clearTimeout has not been defined")}function s(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{n="function"==typeof clearTimeout?clearTimeout:l}catch(e){n=l}}();var a=[],c=!1,u=-1;function d(){c&&o&&(c=!1,o.length?a=o.concat(a):u=-1,a.length&&h())}function h(){if(!c){var e=s(d);c=!0;for(var t=a.length;t;){for(o=a,a=[];++u<t;)o&&o[u].run();u=-1,t=a.length}o=null,c=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===l||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function f(e,t){this.fun=e,this.array=t}function p(){}r.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];a.push(new f(e,t)),1!==a.length||c||s(h)},f.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=p,r.addListener=p,r.once=p,r.off=p,r.removeListener=p,r.removeAllListeners=p,r.emit=p,r.prependListener=p,r.prependOnceListener=p,r.listeners=function(e){return[]},r.binding=function(e){throw Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw Error("process.chdir is not supported")},r.umask=function(){return 0}}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var i=n[e]={exports:{}},l=!0;try{t[e](i,i.exports,o),l=!1}finally{l&&delete n[e]}return i.exports}o.ab="//";var r=o(229);e.exports=r}()},5152:function(e,t,n){e.exports=n(19606)},11163:function(e,t,n){e.exports=n(26036)},92703:function(e,t,n){"use strict";var o=n(50414);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,l){if(l!==o){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},45697:function(e,t,n){e.exports=n(92703)()},50414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},function(e){var t=function(t){return e(e.s=t)};e.O(0,[9774,179],function(){return t(91118),t(26036)}),_N_E=e.O()}]);
@@ -1,16 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9826,2350],{94966:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]/[job]",function(){return s(50190)}])},27325:function(e,t,s){"use strict";s.d(t,{Z:function(){return r}});/**
2
- * @license lucide-react v0.407.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */let r=(0,s(60998).Z)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},16826:function(e,t,s){"use strict";s.d(t,{Z:function(){return r}});/**
7
- * @license lucide-react v0.407.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */let r=(0,s(60998).Z)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},13626:function(e,t,s){"use strict";s.d(t,{Z:function(){return r}});/**
12
- * @license lucide-react v0.407.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */let r=(0,s(60998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},99307:function(e,t,s){"use strict";s.d(t,{Cl:function(){return l},OE:function(){return d}});var r=s(85893);s(67294);var a=s(55739),n=s(36989),c=s(53850);let l=e=>{switch(e){case"LAUNCHING":return"bg-blue-100 text-sky-blue";case"RUNNING":case"IN_USE":case"READY":return"bg-green-50 text-green-700";case"STOPPED":return"bg-yellow-100 text-yellow-800";case"TERMINATED":case"PENDING":case"UNKNOWN":default:return"bg-gray-100 text-gray-800";case"SUCCEEDED":case"PROVISIONING":case"CONTROLLER_INIT":case"REPLICA_INIT":return"bg-blue-50 text-blue-700";case"FAILED":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":return"bg-red-50 text-red-700";case"CANCELLED":case"CANCELLING":case"NOT_READY":return"bg-yellow-50 text-yellow-700";case"RECOVERING":case"SHUTTING_DOWN":return"bg-orange-50 text-orange-700";case"SUBMITTED":return"bg-indigo-50 text-indigo-700";case"STARTING":return"bg-cyan-50 text-cyan-700";case"FAILED_SETUP":return"bg-pink-50 text-pink-700";case"PREEMPTED":case"NO_REPLICA":return"bg-purple-50 text-purple-700"}},o=e=>{switch(e){case"LAUNCHING":case"STARTING":case"PROVISIONING":case"SHUTTING_DOWN":return(0,r.jsx)(a.Z,{size:12,className:"w-3 h-3 mr-1"});case"RUNNING":case"IN_USE":default:return(0,r.jsx)(c.W2,{className:"w-3 h-3 mr-1"});case"STOPPED":case"PREEMPTED":return(0,r.jsx)(c.fp,{className:"w-3 h-3 mr-1"});case"TERMINATED":case"FAILED":case"CANCELLED":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":case"UNKNOWN":return(0,r.jsx)(c.Ps,{className:"w-3 h-3 mr-1"});case"SUCCEEDED":return(0,r.jsx)(c.Ye,{className:"w-3 h-3 mr-1"});case"PENDING":case"RECOVERING":case"SUBMITTED":case"CANCELLING":case"FAILED_SETUP":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"READY":case"NOT_READY":case"CONTROLLER_INIT":case"REPLICA_INIT":case"NO_REPLICA":return(0,r.jsx)(c.J$,{className:"w-3 h-3 mr-1"})}},i=e=>{let t=l(e),s=o(e);return(0,r.jsxs)("span",{className:"".concat("inline-flex items-center px-2 py-1 rounded-full text-sm"," ").concat(t),children:[s,e]})},d=e=>{let{status:t}=e;return(0,r.jsx)(n.WH,{content:t,className:"text-muted-foreground text-sm",children:(0,r.jsx)("span",{children:i(t)})})}},20546:function(e,t,s){"use strict";s.d(t,{H:function(){return d}});var r=s(85893);s(67294);var a=s(41664),n=s.n(a),c=s(45697),l=s.n(c);function o(e){return!!e&&"string"==typeof e&&e.toLowerCase().startsWith("sa-")}let i=()=>(0,r.jsx)("span",{className:"px-2 py-0.5 text-xs bg-blue-100 text-blue-700 rounded font-medium ml-1",children:"SA"}),d=e=>{let{username:t,userHash:s,className:a="flex items-center gap-1",linkClassName:c="text-gray-700 hover:text-blue-600 hover:underline",showBadge:l=!0}=e,d=o(s),u=o(s)?"/users?tab=service-accounts":"/users";return(0,r.jsxs)("div",{className:a,children:[(0,r.jsx)(n(),{href:u,className:c,children:t}),l&&d&&(0,r.jsx)(i,{})]})};d.propTypes={username:l().string.isRequired,userHash:l().string,className:l().string,linkClassName:l().string,showBadge:l().bool}},37673:function(e,t,s){"use strict";s.d(t,{Ol:function(){return i},Zb:function(){return o},aY:function(){return h},ll:function(){return d}});var r=s(85893),a=s(67294),n=s(45697),c=s.n(n),l=s(32350);let o=a.forwardRef((e,t)=>{let{className:s,children:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...n,children:a})});o.displayName="Card",o.propTypes={className:c().string,children:c().node};let i=a.forwardRef((e,t)=>{let{className:s,children:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",s),...n,children:a})});i.displayName="CardHeader",i.propTypes={className:c().string,children:c().node};let d=a.forwardRef((e,t)=>{let{className:s,children:a,...n}=e;return(0,r.jsx)("h3",{ref:t,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",s),...n,children:a})});d.displayName="CardTitle",d.propTypes={className:c().string,children:c().node};let u=a.forwardRef((e,t)=>{let{className:s,children:a,...n}=e;return(0,r.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",s),...n,children:a})});u.displayName="CardDescription",u.propTypes={className:c().string,children:c().node};let h=a.forwardRef((e,t)=>{let{className:s,children:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",s),...n,children:a})});h.displayName="CardContent",h.propTypes={className:c().string,children:c().node};let m=a.forwardRef((e,t)=>{let{className:s,children:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",s),...n,children:a})});m.displayName="CardFooter",m.propTypes={className:c().string,children:c().node}},47145:function(e,t,s){"use strict";s.d(t,{x:function(){return n}});var r=s(94545),a=s(93225);let n={fetch:async function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST";try{let n=window.location.origin,c="".concat(n).concat(a.f4).concat(e),l=await fetch(c,{method:s,headers:"POST"===s?{"Content-Type":"application/json"}:{},body:"POST"===s?JSON.stringify(t):void 0});if(!l.ok){let t="Initial API request ".concat(e," failed with status ").concat(l.status);throw Error(t)}let o=l.headers.get("X-Skypilot-Request-ID")||l.headers.get("X-Request-ID");if(!o){let t="No request ID received from server for ".concat(e);throw Error(t)}let i=await fetch("".concat(n).concat(a.f4,"/api/get?request_id=").concat(o));if(!i.ok){let t=await (0,r.oN)(i),s="API request to get ".concat(e," result failed with status ").concat(i.status,", error: ").concat(t);throw Error(s)}let d=await i.json();return d.return_value?JSON.parse(d.return_value):[]}catch(s){let t="Error in apiClient.fetch for ".concat(e,": ").concat(s);throw console.error(t),Error(t)}},post:async(e,t)=>{let s=window.location.origin,r="".concat(s).concat(a.f4).concat(e);return await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})},stream:async(e,t,s)=>{let r=await n.post(e,t);if(!r.ok){let t="API request ".concat(e," failed with status ").concat(r.status);throw console.error(t),Error(t)}let a=r.body.getReader();try{for(;;){let{done:e,value:t}=await a.read();if(e)break;let r=new TextDecoder().decode(t);s(r)}}catch(e){throw console.error("Error in stream:",e),e}},get:async e=>{let t=window.location.origin,s="".concat(t).concat(a.f4).concat(e);return await fetch(s)}}},23266:function(e,t,s){"use strict";s.d(t,{GH:function(){return h},QL:function(){return f},Sl:function(){return u},getClusters:function(){return i},uR:function(){return d}});var r=s(67294),a=s(15821),n=s(47145),c=s(93225),l=s(6378);let o={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function i(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await n.x.fetch("/status",{cluster_names:e,all_users:!0,include_credentials:!1,include_handle:!1,summary_response:null==e})).map(e=>{let t="",s=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let s=Math.floor((t-3)/2),r=s+(t-3)%2;return 0===s?e.substring(0,r)+"...":e.substring(0,r)+"..."+e.substring(e.length-s)}(t,25)),{status:o[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:s?"".concat(e.cloud," (").concat(s,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,cluster_name_on_cloud:e.cluster_name_on_cloud,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){throw console.error("Error fetching clusters:",e),e}}async function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30;try{let s={days:t,dashboard_summary_response:!0};e&&(s.cluster_hashes=[e]);let r=await n.x.fetch("/cost_report",s);console.log("Raw cluster history data:",r);let a=r.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let s=e.user_name||"-";return{status:e.status?o[e.status]:"TERMINATED",cluster:e.name,user:s,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,last_event:e.last_event,to_down:!1,cluster_name_on_cloud:null,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",a),a}catch(e){throw console.error("Error fetching cluster history:",e),e}}async function u(e){let{clusterName:t,jobId:s,onNewLog:r,workspace:c}=e;try{await n.x.stream("/logs",{follow:!1,cluster_name:t,job_id:s,tail:1e4,override_skypilot_config:{active_workspace:c||"default"}},r)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,a.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function h(e){let{clusterName:t,jobIds:s=null,workspace:r}=e;try{let e=await n.x.fetch("/download_logs",{cluster_name:t,job_ids:s?s.map(String):null,override_skypilot_config:{active_workspace:r||"default"}}),l=Object.values(e||{});if(!l.length){(0,a.C)("No logs found to download.","warning");return}let o=window.location.origin,i="".concat(o).concat(c.f4,"/download"),d=await fetch("".concat(i,"?relative=items"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_paths:l})});if(!d.ok){let e=await d.text();throw Error("Download failed: ".concat(d.status," ").concat(e))}let u=await d.blob(),h=window.URL.createObjectURL(u),m=document.createElement("a"),f=new Date().toISOString().replace(/[:.]/g,"-"),g=s&&1===s.length?"job-".concat(s[0]):"jobs";m.href=h,m.download="".concat(t,"-").concat(g,"-logs-").concat(f,".zip"),document.body.appendChild(m),m.click(),m.remove(),window.URL.revokeObjectURL(h)}catch(e){console.error("Error downloading logs:",e),(0,a.C)("Error downloading logs: ".concat(e.message),"error")}}async function m(e){let{clusterName:t,workspace:s}=e;try{return(await n.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:s}})).map(e=>{var r;let a=e.end_at?e.end_at:Date.now()/1e3,n=0,c=0;return e.submitted_at&&(n=a-e.submitted_at),e.start_at&&(c=a-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:n,job_duration:c,infra:"",logs:"",workspace:s||"default",git_commit:(null===(r=e.metadata)||void 0===r?void 0:r.git_commit)||"-"}})}catch(e){throw console.error("Error fetching cluster jobs:",e),e}}function f(e){let{cluster:t,job:s=null}=e,[a,n]=(0,r.useState)(null),[c,o]=(0,r.useState)(null),[d,u]=(0,r.useState)(!0),[h,f]=(0,r.useState)(!0),g=(0,r.useCallback)(async()=>{if(t)try{u(!0);let e=await l.default.get(i,[{clusterNames:[t]}]);if(e.length>0)return n(e[0]),e[0];return console.error("No cluster data found for cluster:",t),null}catch(e){console.error("Error fetching cluster data:",e)}finally{u(!1)}return null},[t]),x=(0,r.useCallback)(async e=>{if(t)try{f(!0);let s=await l.default.get(m,[{clusterName:t,workspace:e||"default"}]);o(s)}catch(e){console.error("Error fetching cluster job data:",e)}finally{f(!1)}},[t]),N=(0,r.useCallback)(async()=>{l.default.invalidate(i,[{clusterNames:[t]}]);let e=await g();e&&(l.default.invalidate(m,[{clusterName:t,workspace:e.workspace||"default"}]),await x(e.workspace))},[g,x,t]),p=(0,r.useCallback)(async()=>{a&&(l.default.invalidate(m,[{clusterName:t,workspace:a.workspace||"default"}]),await x(a.workspace))},[x,a,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await g();e&&x(e.workspace)})()},[t,s,g,x]),{clusterData:a,clusterJobData:c,loading:d,clusterDetailsLoading:d,clusterJobsLoading:h,refreshData:N,refreshClusterJobsOnly:p}}},15821:function(e,t,s){"use strict";function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,r=document.getElementById("toast-container");r||((r=document.createElement("div")).id="toast-container",r.className="fixed top-0 right-0 p-4 z-[9999] flex flex-col items-end space-y-2",document.body.appendChild(r));let a=document.createElement("div");switch(a.className="rounded-md border-l-4 p-4 shadow-md flex items-center justify-between max-w-md w-full mb-2 pointer-events-auto",t){case"success":a.className+=" bg-green-100 border-green-500 text-green-800";break;case"error":a.className+=" bg-red-100 border-red-500 text-red-800";break;case"warning":a.className+=" bg-yellow-100 border-yellow-500 text-yellow-800";break;default:a.className+=" bg-blue-100 border-blue-500 text-blue-800"}return a.innerHTML='\n <div class="flex-1 mr-2">\n <p class="text-sm font-medium">'.concat(e,'</p>\n </div>\n <button class="text-gray-500 hover:text-gray-700 focus:outline-none" aria-label="Close toast">\n <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <line x1="18" y1="6" x2="6" y2="18"></line>\n <line x1="6" y1="6" x2="18" y2="18"></line>\n </svg>\n </button>\n '),r.appendChild(a),a.querySelector("button").addEventListener("click",()=>{r.removeChild(a)}),setTimeout(()=>{r.contains(a)&&r.removeChild(a)},s),a}s.d(t,{C:function(){return r}})},94545:function(e,t,s){"use strict";function r(e){return e.startsWith("sky-jobs-controller-")}function a(e,t,s){return null===t?e:[...e].sort((e,r)=>e[t]<r[t]?"ascending"===s?-1:1:e[t]>r[t]?"ascending"===s?1:-1:0)}async function n(e){let t=e.statusText;if(500===e.status)try{let s=await e.json();if(s.detail&&s.detail.error)try{t=JSON.parse(s.detail.error).message||String(s.detail.error)}catch(e){console.error("Error parsing JSON from data.detail.error:",e),t=String(s.detail.error)}}catch(e){console.error("Error parsing response JSON:",e),t=String(e)}return t}s.d(t,{R0:function(){return a},Ym:function(){return r},oN:function(){return n}})},6378:function(e,t,s){"use strict";s.r(t),s.d(t,{DashboardCache:function(){return n},dashboardCache:function(){return c}});let r=s(51214).ej.DEFAULT_TTL;function a(e){let t=5381;for(let s=0;s<e.length;s++)t=(t<<5)+t+e.charCodeAt(s);return t>>>0}class n{setPreloader(e){this.preloader=e}async get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=s.ttl||r,n=!1!==s.refreshOnAccess,c=this._generateKey(e,t),l=e.name||"anonymous",o=this.cache.get(c),i=Date.now();if(o&&i-o.lastUpdated<a){let s=Math.round((i-o.lastUpdated)/1e3);if(this._debug("Cache HIT for ".concat(l," (age: ").concat(s,"s, TTL: ").concat(Math.round(a/1e3),"s)")),n&&(this.cache.set(c,{data:o.data,lastUpdated:i}),this._debug("Cache TTL refreshed for ".concat(l))),!this.backgroundJobs.has(c)){var d;(null===(d=this.preloader)||void 0===d?void 0:d.wasRecentlyPreloaded(e,t))?this._debug("Skipping background refresh for ".concat(l," - recently preloaded")):this._refreshInBackground(e,t,c)}return o.data}if(this.pendingRequests.has(c))return this._debug("Request deduplication: Waiting for pending request for ".concat(l)),this.pendingRequests.get(c);let u=(async()=>{try{let s=await e(...t);if(s&&s.__skipCache){if(this._debug("Skip caching for ".concat(l," due to __skipCache flag on result")),o)return o.data;return s}return this.cache.set(c,{data:s,lastUpdated:Date.now()}),s}catch(e){if(o)return console.warn("Failed to fetch fresh data for ".concat(c,"/").concat(l,", returning stale data:"),e),o.data;throw e}finally{this.pendingRequests.delete(c)}})();return this.pendingRequests.set(c,u),u}invalidate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=this._generateKey(e,t);this.cache.delete(s),this.backgroundJobs.delete(s),this.pendingRequests.delete(s)}invalidateFunction(e){let t=a(e.toString()),s=[];for(let e of this.cache.keys())e.startsWith("".concat(t,"_"))&&s.push(e);s.forEach(e=>{this.cache.delete(e),this.backgroundJobs.delete(e),this.pendingRequests.delete(e)})}clear(){this.cache.clear(),this.backgroundJobs.clear(),this.pendingRequests.clear()}getStats(){return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,pendingRequests:this.pendingRequests.size,keys:Array.from(this.cache.keys())}}getDetailedStats(){let e=Date.now(),t=[];for(let[s,r]of this.cache.entries()){let a=e-r.lastUpdated;t.push({key:s,age:Math.round(a/1e3),lastUpdated:new Date(r.lastUpdated).toISOString(),hasBackgroundJob:this.backgroundJobs.has(s),hasPendingRequest:this.pendingRequests.has(s)})}return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,pendingRequests:this.pendingRequests.size,entries:t.sort((e,t)=>e.age-t.age)}}setDebugMode(e){this.debugMode=e}_debug(e){for(var t=arguments.length,s=Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];this.debugMode&&console.log("[DashboardCache] ".concat(e),...s)}_refreshInBackground(e,t,s){this.backgroundJobs.set(s,!0),e(...t).then(e=>{e&&e.__skipCache||this.cache.set(s,{data:e,lastUpdated:Date.now()})}).catch(e=>{console.warn("Background refresh failed for ".concat(s,":"),e)}).finally(()=>{this.backgroundJobs.delete(s)})}_generateKey(e,t){let s=a(e.toString()),r=t.length>0?JSON.stringify(t):"";return"".concat(s,"_").concat(r)}constructor(){this.cache=new Map,this.backgroundJobs=new Map,this.pendingRequests=new Map,this.debugMode=!1,this.preloader=null}}let c=new n;t.default=c},32350:function(e,t,s){"use strict";s.d(t,{cn:function(){return n}});var r=s(90512),a=s(98388);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,a.m6)((0,r.W)(t))}},50190:function(e,t,s){"use strict";s.r(t),s.d(t,{JobDetailPage:function(){return w}});var r=s(85893),a=s(67294);s(9353);var n=s(37673),c=s(41664),l=s.n(c),o=s(11163),i=s(23266),d=s(36989),u=s(13626),h=s(16826),m=s(55739),f=s(99307),g=s(23001),x=s(9008),N=s.n(x),p=s(20546),b=s(70282),_=s(27325);function y(e){let{cluster:t,job:s,jobData:a,onRefresh:n,isRefreshing:c,loading:o}=e,i=(0,g.X)();return(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,r.jsxs)("div",{className:"text-base flex items-center",children:[(0,r.jsx)(l(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,r.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,r.jsx)(l(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t}),(0,r.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,r.jsxs)(l(),{href:"/clusters/".concat(t,"/").concat(s),className:"text-sky-blue hover:underline",children:[s,a.job&&"-"!=a.job?" (".concat(a.job,")"):""]})]}),(0,r.jsxs)("div",{className:"flex items-center",children:[(o||c)&&(0,r.jsxs)("div",{className:"flex items-center mr-2",children:[(0,r.jsx)(m.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"text-sm ml-2 text-gray-500",children:"Loading..."})]}),(0,r.jsx)(d.WH,{content:"Refresh",className:"text-muted-foreground",children:(0,r.jsxs)("button",{onClick:n,disabled:o||c,className:"text-sm text-sky-blue hover:text-sky-blue-bright font-medium mx-2 flex items-center",children:[(0,r.jsx)(u.Z,{className:"w-4 h-4 mr-1.5"}),!i&&(0,r.jsx)("span",{children:"Refresh"})]})})]})]})}function w(){let e=(0,o.useRouter)(),{cluster:t,job:s}=e.query,{clusterData:c,clusterJobData:g,loading:x,refreshData:w}=(0,i.QL)({cluster:t}),[j,v]=(0,a.useState)(!1),[E,k]=(0,a.useState)(!0),[I,C]=(0,a.useState)(!1),[R,D]=(0,a.useState)(""),[L,T]=(0,a.useState)(!1),[S,O]=(0,a.useState)(!1),A=(0,a.useMemo)(()=>["INIT","PENDING","SETTING_UP"],[]),P=(0,a.useMemo)(()=>{if(!g||!s)return!0;let e=g.find(e=>e.id==s);return e&&A.includes(e.status)},[g,s,A]);a.useEffect(()=>{!x&&E&&k(!1)},[x,E]),(0,a.useEffect)(()=>{let e=!0;return t&&s&&!P?(C(!0),(0,i.Sl)({clusterName:t,jobId:s,onNewLog:t=>{e&&D(e=>{let s=t.split("\n").filter(e=>e.trim()),r=e;for(let e of s){let t=(0,d.Zn)(e);if(/\d+%\s*\|/.test(t)){let e=t.match(/^\(([^)]+)\)/);if(e&&r){let s=r.split("\n"),a=!1;for(let n=s.length-1;n>=0;n--){let c=s[n];if(/\d+%\s*\|/.test(c)){let l=c.match(/^\(([^)]+)\)/);if(l&&l[1]===e[1]){s[n]=t,r=s.join("\n"),a=!0;break}}}a||(r+=(r?"\n":"")+t)}else r+=(r?"\n":"")+t}else r+=(r?"\n":"")+t}return r})},workspace:null==c?void 0:c.workspace}).then(()=>{e&&C(!1)}).catch(t=>{e&&(console.error("Error streaming logs:",t),C(!1))})):C(!1),()=>{e=!1}},[t,s,L,P,c]);let U=async()=>{v(!0),T(e=>!e),D("");try{w&&await w()}catch(e){console.error("Error refreshing data:",e)}finally{v(!1)}};if(!e.isReady)return(0,r.jsx)("div",{children:"Loading..."});let q={id:s};if(c&&g){let e=g.find(e=>e.id==s);e&&(q={...e,infra:c.infra,cluster:c.cluster,user:c.user,user_hash:c.user_hash})}let J=t&&s?"Job: ".concat(s," @ ").concat(t," | SkyPilot Dashboard"):"Job Details | SkyPilot Dashboard";return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(N(),{children:(0,r.jsx)("title",{children:J})}),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(y,{cluster:t,job:s,jobData:q,onRefresh:U,isRefreshing:j,loading:x}),x&&E?(0,r.jsxs)("div",{className:"flex items-center justify-center h-64",children:[(0,r.jsx)(m.Z,{size:24,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]}):(0,r.jsxs)("div",{className:"space-y-8",children:[(0,r.jsx)("div",{id:"details",children:(0,r.jsxs)(n.Zb,{children:[(0,r.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"Details"})}),(0,r.jsx)("div",{className:"p-4",children:(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job ID"}),(0,r.jsx)("div",{className:"text-base mt-1",children:q.id})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job Name"}),(0,r.jsx)("div",{className:"text-base mt-1",children:q.job})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,r.jsx)("div",{className:"text-base mt-1",children:(0,r.jsx)(f.OE,{status:q.status})})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,r.jsx)("div",{className:"text-base mt-1",children:(0,r.jsx)(p.H,{username:q.user,userHash:q.user_hash})})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Submitted"}),(0,r.jsx)("div",{className:"text-base mt-1",children:q.submitted_at?(0,d.xn)(q.submitted_at):"N/A"})]}),q.resources&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Requested Resources"}),(0,r.jsx)("div",{className:"text-base mt-1",children:q.resources||"N/A"})]}),q.cluster&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,r.jsx)("div",{className:"text-base mt-1",children:(0,r.jsx)(l(),{href:"/clusters/".concat(q.cluster),className:"text-sky-blue hover:underline",children:q.cluster})})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Git Commit"}),(0,r.jsx)("div",{className:"text-base mt-1 flex items-center",children:q.git_commit&&"-"!==q.git_commit?(0,r.jsxs)("span",{className:"flex items-center mr-2",children:[q.git_commit,(0,r.jsx)(d.WH,{content:S?"Copied!":"Copy commit",className:"text-muted-foreground",children:(0,r.jsx)("button",{onClick:async()=>{await navigator.clipboard.writeText(q.git_commit),O(!0),setTimeout(()=>O(!1),2e3)},className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:S?(0,r.jsx)(b.Z,{className:"w-4 h-4 text-green-600"}):(0,r.jsx)(_.Z,{className:"w-4 h-4"})})})]}):(0,r.jsx)("span",{className:"text-gray-400",children:"-"})})]})]})})]})}),(0,r.jsx)("div",{id:"logs",className:"mt-6",children:(0,r.jsxs)(n.Zb,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 pt-4",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"Logs"}),(0,r.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:"(Logs are not streaming; click refresh to fetch the latest logs.)"})]}),(0,r.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,r.jsx)(d.WH,{content:"Download full logs",className:"text-muted-foreground",children:(0,r.jsx)("button",{onClick:()=>(0,i.GH)({clusterName:t,jobIds:s?[s]:null,workspace:null==c?void 0:c.workspace}),className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,r.jsx)(h.Z,{className:"w-4 h-4"})})}),(0,r.jsx)(d.WH,{content:"Refresh logs",className:"text-muted-foreground",children:(0,r.jsx)("button",{onClick:()=>{T(e=>!e),D("")},disabled:I,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,r.jsx)(u.Z,{className:"w-4 h-4 ".concat(I?"animate-spin":"")})})})]})]}),(0,r.jsx)("div",{className:"p-4",children:P?(0,r.jsx)("div",{className:"bg-[#f7f7f7] flex items-center justify-center py-4 text-gray-500",children:(0,r.jsx)("span",{children:"Waiting for the job to start; refresh in a few moments."})}):I?(0,r.jsxs)("div",{className:"flex items-center justify-center py-4",children:[(0,r.jsx)(m.Z,{size:20,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]}):(0,r.jsx)("div",{className:"max-h-96 overflow-y-auto",children:(0,r.jsx)(d.$B,{logs:R})})})]})})]})]})]})}t.default=w},9008:function(e,t,s){e.exports=s(37219)}},function(e){e.O(0,[616,6130,5739,7411,6989,3850,9353,2888,9774,179],function(){return e(e.s=94966)}),_N_E=e.O()}]);