watch-tail 0.3.1 → 0.4.0

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 (96) hide show
  1. package/README.md +27 -3
  2. package/build/client/_app/immutable/assets/0.BPmQoXaO.css +2 -0
  3. package/build/client/_app/immutable/assets/0.BPmQoXaO.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.BPmQoXaO.css.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{DyIYFD7i.js → Bw_9uNRP.js} +1 -1
  6. package/build/client/_app/immutable/chunks/Bw_9uNRP.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/Bw_9uNRP.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/De_x7GQi.js +1 -0
  9. package/build/client/_app/immutable/chunks/De_x7GQi.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/De_x7GQi.js.gz +0 -0
  11. package/build/client/_app/immutable/entry/{app.D0_YFW4X.js → app.Be166AxG.js} +2 -2
  12. package/build/client/_app/immutable/entry/app.Be166AxG.js.br +0 -0
  13. package/build/client/_app/immutable/entry/app.Be166AxG.js.gz +0 -0
  14. package/build/client/_app/immutable/entry/start.clEDpQL9.js +1 -0
  15. package/build/client/_app/immutable/entry/start.clEDpQL9.js.br +0 -0
  16. package/build/client/_app/immutable/entry/start.clEDpQL9.js.gz +0 -0
  17. package/build/client/_app/immutable/nodes/0.BJ6Zdc8H.js +1 -0
  18. package/build/client/_app/immutable/nodes/0.BJ6Zdc8H.js.br +4 -0
  19. package/build/client/_app/immutable/nodes/0.BJ6Zdc8H.js.gz +0 -0
  20. package/build/client/_app/immutable/nodes/{1.D1vhnOgO.js → 1.xMNWuLLz.js} +1 -1
  21. package/build/client/_app/immutable/nodes/1.xMNWuLLz.js.br +0 -0
  22. package/build/client/_app/immutable/nodes/1.xMNWuLLz.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/2.CaxDXwmh.js +5 -0
  24. package/build/client/_app/immutable/nodes/2.CaxDXwmh.js.br +0 -0
  25. package/build/client/_app/immutable/nodes/2.CaxDXwmh.js.gz +0 -0
  26. package/build/client/_app/version.json +1 -1
  27. package/build/client/_app/version.json.br +0 -0
  28. package/build/client/_app/version.json.gz +0 -0
  29. package/build/handler.js +4 -4
  30. package/build/index.js +4 -4
  31. package/build/server/chunks/chunks/{env2.js-D7xrfc37.js → env2.js-DXveJt1Y.js} +18 -12
  32. package/build/server/chunks/chunks/env2.js-DXveJt1Y.js.map +1 -0
  33. package/build/server/chunks/chunks/{internal.js-B-DZpK-L.js → internal.js-Cc3oBhL-.js} +3 -3
  34. package/build/server/chunks/chunks/{internal.js-B-DZpK-L.js.map → internal.js-Cc3oBhL-.js.map} +1 -1
  35. package/build/server/chunks/chunks/{state.js-V2NYGhy_.js → state.js-9DxsWxU-.js} +2 -2
  36. package/build/server/chunks/chunks/{state.js-V2NYGhy_.js.map → state.js-9DxsWxU-.js.map} +1 -1
  37. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-aiNZfkco.js → _server.ts.js-BOjix7GN.js} +3 -2
  38. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-BOjix7GN.js.map +1 -0
  39. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-g13uvmrX.js +72 -0
  40. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-g13uvmrX.js.map +1 -0
  41. package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-D143-vRl.js → _server.ts.js-CmHRxdZK.js} +3 -2
  42. package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-D143-vRl.js.map → _server.ts.js-CmHRxdZK.js.map} +1 -1
  43. package/build/server/chunks/entries/endpoints/api/regions/{_server.ts.js-CDNL7msU.js → _server.ts.js-BgUwioxp.js} +3 -2
  44. package/build/server/chunks/entries/endpoints/api/regions/{_server.ts.js-CDNL7msU.js.map → _server.ts.js-BgUwioxp.js.map} +1 -1
  45. package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-D_i-xW6_.js → _server.ts.js-CIYo4C-0.js} +3 -2
  46. package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-D_i-xW6_.js.map → _server.ts.js-CIYo4C-0.js.map} +1 -1
  47. package/build/server/chunks/entries/fallbacks/{error.svelte.js-CAasf3PF.js → error.svelte.js-CFonuZkV.js} +3 -3
  48. package/build/server/chunks/entries/fallbacks/{error.svelte.js-CAasf3PF.js.map → error.svelte.js-CFonuZkV.js.map} +1 -1
  49. package/build/server/chunks/entries/pages/_layout.svelte.js-Dzluuq12.js +22 -0
  50. package/build/server/chunks/entries/pages/_layout.svelte.js-Dzluuq12.js.map +1 -0
  51. package/build/server/chunks/entries/pages/{_page.svelte.js-DzAAqWz2.js → _page.svelte.js-CpwYbxbM.js} +36 -9
  52. package/build/server/chunks/entries/pages/_page.svelte.js-CpwYbxbM.js.map +1 -0
  53. package/build/server/chunks/{handler-CuWqZDuC.js → handler-DS32NMsJ.js} +3 -3
  54. package/build/server/chunks/{handler-CuWqZDuC.js.map → handler-DS32NMsJ.js.map} +1 -1
  55. package/build/server/chunks/{index.js-NHTL74z2.js → index.js-HHu-yOEK.js} +2 -2
  56. package/build/server/chunks/{index.js-NHTL74z2.js.map → index.js-HHu-yOEK.js.map} +1 -1
  57. package/build/server/chunks/{manifest.js-8g4gjxwf.js → manifest.js-BUrA7Zyr.js} +16 -9
  58. package/build/server/chunks/manifest.js-BUrA7Zyr.js.map +1 -0
  59. package/build/server/chunks/nodes/{0.js-Bg4_hDjk.js → 0.js-gSRmrAt_.js} +4 -4
  60. package/build/server/chunks/nodes/{0.js-Bg4_hDjk.js.map → 0.js-gSRmrAt_.js.map} +1 -1
  61. package/build/server/chunks/nodes/{1.js-CDSk3TvW.js → 1.js-D68K7Ad_.js} +3 -3
  62. package/build/server/chunks/nodes/{1.js-CDSk3TvW.js.map → 1.js-D68K7Ad_.js.map} +1 -1
  63. package/build/server/chunks/nodes/2.js-ChYsaaoC.js +9 -0
  64. package/build/server/chunks/nodes/{2.js-BVhBcWrN.js.map → 2.js-ChYsaaoC.js.map} +1 -1
  65. package/dist/cli/index.js +129 -30
  66. package/dist/cli/preflight.js +42 -0
  67. package/dist/cli/ui.js +7 -3
  68. package/package.json +2 -1
  69. package/build/client/_app/immutable/assets/0.CocWI5K4.css +0 -2
  70. package/build/client/_app/immutable/assets/0.CocWI5K4.css.br +0 -0
  71. package/build/client/_app/immutable/assets/0.CocWI5K4.css.gz +0 -0
  72. package/build/client/_app/immutable/chunks/05WsiB4A.js +0 -1
  73. package/build/client/_app/immutable/chunks/05WsiB4A.js.br +0 -0
  74. package/build/client/_app/immutable/chunks/05WsiB4A.js.gz +0 -0
  75. package/build/client/_app/immutable/chunks/DyIYFD7i.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/DyIYFD7i.js.gz +0 -0
  77. package/build/client/_app/immutable/entry/app.D0_YFW4X.js.br +0 -0
  78. package/build/client/_app/immutable/entry/app.D0_YFW4X.js.gz +0 -0
  79. package/build/client/_app/immutable/entry/start.D1rrHrg2.js +0 -1
  80. package/build/client/_app/immutable/entry/start.D1rrHrg2.js.br +0 -0
  81. package/build/client/_app/immutable/entry/start.D1rrHrg2.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/0.DHBUWbOo.js +0 -1
  83. package/build/client/_app/immutable/nodes/0.DHBUWbOo.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/0.DHBUWbOo.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/1.D1vhnOgO.js.br +0 -0
  86. package/build/client/_app/immutable/nodes/1.D1vhnOgO.js.gz +0 -0
  87. package/build/client/_app/immutable/nodes/2.BPdL6B7F.js +0 -5
  88. package/build/client/_app/immutable/nodes/2.BPdL6B7F.js.br +0 -0
  89. package/build/client/_app/immutable/nodes/2.BPdL6B7F.js.gz +0 -0
  90. package/build/server/chunks/chunks/env2.js-D7xrfc37.js.map +0 -1
  91. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-aiNZfkco.js.map +0 -1
  92. package/build/server/chunks/entries/pages/_layout.svelte.js-Bx7lXkAi.js +0 -22
  93. package/build/server/chunks/entries/pages/_layout.svelte.js-Bx7lXkAi.js.map +0 -1
  94. package/build/server/chunks/entries/pages/_page.svelte.js-DzAAqWz2.js.map +0 -1
  95. package/build/server/chunks/manifest.js-8g4gjxwf.js.map +0 -1
  96. package/build/server/chunks/nodes/2.js-BVhBcWrN.js +0 -9
package/README.md CHANGED
@@ -36,7 +36,9 @@ work for every line.
36
36
  with the full value on hover - so a 95-character Lambda stream name cannot push your message off
37
37
  screen.
38
38
  - **Logs arrive as payloads, not prose.** JSON entries are pretty-printed with syntax colouring by
39
- default, and one toggle shows the raw line when you need the wire format.
39
+ default, and one toggle shows the raw line when you need the wire format. With that toggle off,
40
+ **click a line that carries JSON** and just that payload opens beneath it - indented, coloured, and
41
+ without losing the raw line - and clicking again closes it.
40
42
  - **"What happened an hour ago?" is the normal question.** Flip to **Historic** and scan 15 min, 1 h,
41
43
  3 h, 12 h, 24 h, 5 days - or pick a custom `from`/`to` window. The scan finishes on its own and the
42
44
  window lives in the URL, so `…&mode=historic&range=24h` is a shareable view of an incident.
@@ -54,8 +56,9 @@ or handing a teammate a link that shows exactly the window you are staring at.
54
56
  - **Region-first UI** - pick a region, see its log groups (with stored size), click one to stream.
55
57
  - **Live and historic** - follow new events over SSE, or scan a fixed window up to the 14 days
56
58
  CloudWatch Logs keeps.
57
- - **A log window built for real logs** - horizontal scrolling or wrapping, JSON pretty-printing,
58
- drag-resizable stream-name column and group-list pane, level colouring, pause/clear/auto-scroll.
59
+ - **A log window built for real logs** - horizontal scrolling or wrapping, JSON pretty-printing with
60
+ click-to-open payloads, drag-resizable stream-name column and group-list pane, level colouring,
61
+ pause/clear/auto-scroll.
59
62
  - **Shareable views** - region, group, mode and window all live in the URL.
60
63
  - **Local emulation friendly** - `--floci` points at [floci](https://floci.io) on port 4566 for
61
64
  development without an AWS account.
@@ -153,6 +156,27 @@ running aws sso login --profile my-profile
153
156
  signed in - credentials work now
154
157
  ```
155
158
 
159
+ If you did not name a profile and you have more than one, it asks which one first. The answer decides
160
+ both the login and the profile the app runs with, so a chosen profile is applied by restarting the
161
+ server with it (and with that profile's own region). **A profile that already works is never sent to a
162
+ login prompt**: the CLI asks `sts:GetCallerIdentity` about the chosen profile first, and only offers a
163
+ login when that profile really has nothing usable.
164
+
165
+ ```text
166
+ ? Which AWS profile should watch-tail use? (type to search, then Enter)
167
+ using profile beyond-mzansi
168
+ restarting with profile beyond-mzansi
169
+ profile beyond-mzansi already works (AWSReservedSSO_AWSAdministratorAccess) - using it
170
+ ```
171
+
172
+ ```text
173
+ ? Which AWS profile should watch-tail use? (type to search, then Enter)
174
+ using profile beyond-mzansi
175
+ ? Sign in to the SSO session for beyond-mzansi. Run `aws sso login --profile beyond-mzansi` now? › yes
176
+ restarting with profile beyond-mzansi
177
+ signed in as beyond-mzansi - credentials work now
178
+ ```
179
+
156
180
  | Your profile | What it runs |
157
181
  | -------------------------------------- | ------------------------------------------------------------------------------------------ |
158
182
  | `sso_session` / `sso_start_url` | `aws sso login --profile <name>` |
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-sky-950:oklch(29.3% .066 243.157);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-900:oklch(38% .189 293.745);--color-violet-950:oklch(28.3% .141 291.089);--color-fuchsia-300:oklch(83.3% .145 321.434);--color-neutral-100:oklch(97% 0 none);--color-neutral-200:oklch(92.2% 0 none);--color-neutral-300:oklch(87% 0 none);--color-neutral-400:oklch(70.8% 0 none);--color-neutral-500:oklch(55.6% 0 none);--color-neutral-600:oklch(43.9% 0 none);--color-neutral-700:oklch(37.1% 0 none);--color-neutral-800:oklch(26.9% 0 none);--color-neutral-900:oklch(20.5% 0 none);--color-neutral-950:oklch(14.5% 0 none);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wider:.05em;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-y-0{inset-block:0}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.h-5{height:calc(var(--spacing) * 5)}.h-dvh{height:100dvh}.min-h-0{min-height:0}.min-h-\[30rem\]{min-height:30rem}.min-h-full{min-height:100%}.w-2{width:calc(var(--spacing) * 2)}.w-40{width:calc(var(--spacing) * 40)}.w-\[7\.5rem\]{width:7.5rem}.w-full{width:100%}.w-max{width:max-content}.max-w-\[22rem\]{max-width:22rem}.min-w-0{min-width:0}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.animate-pulse{animation:var(--animate-pulse)}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-amber-700{border-color:var(--color-amber-700)}.border-amber-900{border-color:var(--color-amber-900)}.border-emerald-900{border-color:var(--color-emerald-900)}.border-neutral-700{border-color:var(--color-neutral-700)}.border-neutral-800{border-color:var(--color-neutral-800)}.border-neutral-900{border-color:var(--color-neutral-900)}.border-red-900{border-color:var(--color-red-900)}.border-sky-700{border-color:var(--color-sky-700)}.border-sky-800{border-color:var(--color-sky-800)}.border-sky-900{border-color:var(--color-sky-900)}.border-transparent{border-color:#0000}.border-violet-900{border-color:var(--color-violet-900)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-950\/40{background-color:#46190166}@supports (color:color-mix(in lab, red, red)){.bg-amber-950\/40{background-color:color-mix(in oklab, var(--color-amber-950) 40%, transparent)}}.bg-amber-950\/50{background-color:#46190180}@supports (color:color-mix(in lab, red, red)){.bg-amber-950\/50{background-color:color-mix(in oklab, var(--color-amber-950) 50%, transparent)}}.bg-amber-950\/70{background-color:#461901b3}@supports (color:color-mix(in lab, red, red)){.bg-amber-950\/70{background-color:color-mix(in oklab, var(--color-amber-950) 70%, transparent)}}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-950\/70{background-color:#002c22b3}@supports (color:color-mix(in lab, red, red)){.bg-emerald-950\/70{background-color:color-mix(in oklab, var(--color-emerald-950) 70%, transparent)}}.bg-neutral-500{background-color:var(--color-neutral-500)}.bg-neutral-800\/60{background-color:#26262699}@supports (color:color-mix(in lab, red, red)){.bg-neutral-800\/60{background-color:color-mix(in oklab, var(--color-neutral-800) 60%, transparent)}}.bg-neutral-800\/80{background-color:#262626cc}@supports (color:color-mix(in lab, red, red)){.bg-neutral-800\/80{background-color:color-mix(in oklab, var(--color-neutral-800) 80%, transparent)}}.bg-neutral-900{background-color:var(--color-neutral-900)}.bg-neutral-900\/40{background-color:#17171766}@supports (color:color-mix(in lab, red, red)){.bg-neutral-900\/40{background-color:color-mix(in oklab, var(--color-neutral-900) 40%, transparent)}}.bg-neutral-900\/60{background-color:#17171799}@supports (color:color-mix(in lab, red, red)){.bg-neutral-900\/60{background-color:color-mix(in oklab, var(--color-neutral-900) 60%, transparent)}}.bg-neutral-900\/70{background-color:#171717b3}@supports (color:color-mix(in lab, red, red)){.bg-neutral-900\/70{background-color:color-mix(in oklab, var(--color-neutral-900) 70%, transparent)}}.bg-neutral-950{background-color:var(--color-neutral-950)}.bg-neutral-950\/60{background-color:#0a0a0a99}@supports (color:color-mix(in lab, red, red)){.bg-neutral-950\/60{background-color:color-mix(in oklab, var(--color-neutral-950) 60%, transparent)}}.bg-neutral-950\/90{background-color:#0a0a0ae6}@supports (color:color-mix(in lab, red, red)){.bg-neutral-950\/90{background-color:color-mix(in oklab, var(--color-neutral-950) 90%, transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-red-950\/50{background-color:#46080980}@supports (color:color-mix(in lab, red, red)){.bg-red-950\/50{background-color:color-mix(in oklab, var(--color-red-950) 50%, transparent)}}.bg-red-950\/70{background-color:#460809b3}@supports (color:color-mix(in lab, red, red)){.bg-red-950\/70{background-color:color-mix(in oklab, var(--color-red-950) 70%, transparent)}}.bg-sky-400{background-color:var(--color-sky-400)}.bg-sky-950\/50{background-color:#052f4a80}@supports (color:color-mix(in lab, red, red)){.bg-sky-950\/50{background-color:color-mix(in oklab, var(--color-sky-950) 50%, transparent)}}.bg-sky-950\/60{background-color:#052f4a99}@supports (color:color-mix(in lab, red, red)){.bg-sky-950\/60{background-color:color-mix(in oklab, var(--color-sky-950) 60%, transparent)}}.bg-sky-950\/70{background-color:#052f4ab3}@supports (color:color-mix(in lab, red, red)){.bg-sky-950\/70{background-color:color-mix(in oklab, var(--color-sky-950) 70%, transparent)}}.bg-transparent{background-color:#0000}.bg-violet-950\/60{background-color:#2f0d6899}@supports (color:color-mix(in lab, red, red)){.bg-violet-950\/60{background-color:color-mix(in oklab, var(--color-violet-950) 60%, transparent)}}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.pr-1{padding-right:var(--spacing)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6875rem\]{font-size:.6875rem}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-200{color:var(--color-amber-200)}.text-amber-300{color:var(--color-amber-300)}.text-amber-300\/80{color:#ffd236cc}@supports (color:color-mix(in lab, red, red)){.text-amber-300\/80{color:color-mix(in oklab, var(--color-amber-300) 80%, transparent)}}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab, red, red)){.text-amber-400\/80{color:color-mix(in oklab, var(--color-amber-400) 80%, transparent)}}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400\/80{color:#00d294cc}@supports (color:color-mix(in lab, red, red)){.text-emerald-400\/80{color:color-mix(in oklab, var(--color-emerald-400) 80%, transparent)}}.text-fuchsia-300{color:var(--color-fuchsia-300)}.text-neutral-100{color:var(--color-neutral-100)}.text-neutral-200{color:var(--color-neutral-200)}.text-neutral-300{color:var(--color-neutral-300)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-sky-200{color:var(--color-sky-200)}.text-sky-300{color:var(--color-sky-300)}.text-sky-400{color:var(--color-sky-400)}.text-sky-400\/80{color:#00bcfecc}@supports (color:color-mix(in lab, red, red)){.text-sky-400\/80{color:color-mix(in oklab, var(--color-sky-400) 80%, transparent)}}.text-violet-300{color:var(--color-violet-300)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.selection\:bg-sky-900\/60 ::selection{background-color:#024a7099}@supports (color:color-mix(in lab, red, red)){.selection\:bg-sky-900\/60 ::selection{background-color:color-mix(in oklab, var(--color-sky-900) 60%, transparent)}}.selection\:bg-sky-900\/60::selection{background-color:#024a7099}@supports (color:color-mix(in lab, red, red)){.selection\:bg-sky-900\/60::selection{background-color:color-mix(in oklab, var(--color-sky-900) 60%, transparent)}}.placeholder\:text-neutral-600::placeholder{color:var(--color-neutral-600)}@media (hover:hover){.hover\:border-neutral-700:hover{border-color:var(--color-neutral-700)}.hover\:border-neutral-800:hover{border-color:var(--color-neutral-800)}.hover\:border-sky-600:hover{border-color:var(--color-sky-600)}.hover\:bg-neutral-900\/60:hover{background-color:#17171799}@supports (color:color-mix(in lab, red, red)){.hover\:bg-neutral-900\/60:hover{background-color:color-mix(in oklab, var(--color-neutral-900) 60%, transparent)}}.hover\:bg-sky-500\/30:hover{background-color:#00a5ef4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-sky-500\/30:hover{background-color:color-mix(in oklab, var(--color-sky-500) 30%, transparent)}}.hover\:text-neutral-100:hover{color:var(--color-neutral-100)}.hover\:text-neutral-200:hover{color:var(--color-neutral-200)}}.focus\:border-sky-600:focus{border-color:var(--color-sky-600)}.focus\:bg-sky-500\/50:focus{background-color:#00a5ef80}@supports (color:color-mix(in lab, red, red)){.focus\:bg-sky-500\/50:focus{background-color:color-mix(in oklab, var(--color-sky-500) 50%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\:inline{display:inline}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}}@media (width>=64rem){.lg\:block{display:block}.lg\:w-2{width:calc(var(--spacing) * 2)}.lg\:shrink-0{flex-shrink:0}.lg\:flex-row{flex-direction:row}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
@@ -1 +1 @@
1
- import"./ZAD2y5xJ.js";import{i as e}from"./05WsiB4A.js";var t={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};export{t};
1
+ import"./ZAD2y5xJ.js";import{i as e}from"./De_x7GQi.js";var t={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};export{t};
@@ -0,0 +1 @@
1
+ import{A as e,K as t,M as n,U as r,W as i,j as a,k as o,n as s,t as c}from"./ZAD2y5xJ.js";var l=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},u=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},d=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function ee(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var te=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),te(e,t));var v=new Map;function y(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ne(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function b(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${g(...e)}"]`}return n}var re=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,ie=/^\/\((?:[^)]+)\)$/;function ae(e){let t=[];return{pattern:e===`/`||ie.test(e)?/^\/$/:RegExp(`^${se(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return le(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return le(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=re.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return le(e)}).join(``)}).join(``)}/?$`),params:t}}function oe(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function se(e){return e.slice(1).split(`/`).filter(oe)}function ce(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0){if(s.rest)c=``;else continue}if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function le(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ue({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ae(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return ce(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function de(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function fe(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var x=globalThis.__sveltekit_nn6fis?.base??``,pe=globalThis.__sveltekit_nn6fis?.assets??x??``,me=`1789172167839`,he=`sveltekit:snapshot`,ge=`sveltekit:scroll`,_e=`sveltekit:states`,ve=`sveltekit:pageurl`,S=`sveltekit:history`,C=`sveltekit:navigation`,w={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ye=location.origin;function be(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function T(){return{x:pageXOffset,y:pageYOffset}}function E(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var xe={...w,"":w.hover};function Se(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ce(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=Se(e)}}function we(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||O(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ye&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function D(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=E(s,`preload-code`)),i===null&&(i=E(s,`preload-data`)),t===null&&(t=E(s,`keepfocus`)),n===null&&(n=E(s,`noscroll`)),a===null&&(a=E(s,`reload`)),o===null&&(o=E(s,`replacestate`)),s=Se(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:xe[r??`off`],preload_data:xe[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Te(e){let n=t(e),r=!0;function i(){r=!0,n.update(e=>e)}function a(e){r=!1,n.set(e)}function o(e){let t;return n.subscribe(n=>{(t===void 0||r&&n!==t)&&e(t=n)})}return{notify:i,set:a,subscribe:o}}var Ee={v:h};function De(){let{set:e,subscribe:n}=t(!1),r;async function i(){clearTimeout(r);try{let t=await fetch(`${pe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==me;return n&&(e(!0),Ee.v(),clearTimeout(r)),n}catch{return!1}}return{subscribe:n,check:i}}function O(e,t,n){return e.origin!==ye||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Oe(e){}var ke=2**32-1-1,Ae=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function je(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getPrototypeOf(t)===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===Ae}function Me(e){return Object.prototype.toString.call(e).slice(8,-1)}function Ne(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.getOwnPropertyDescriptor(e,t).enumerable)}function Pe(e){return!(!Number.isInteger(e)||e<0||e>ke)}function Fe(e){if(e.length===0||e.length>1&&e.charCodeAt(0)===48)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<48||n>57)return!1}return Pe(+e)}function Ie(e){for(var t=e.length-1;t>=0&&!Fe(e[t]);t--);return t+1}function Le(e){let t=Object.keys(e);return t.length=Ie(t),t}Uint8Array.fromBase64,typeof process==`object`&&process.versions?.node;var Re=Object.freeze({kind:`not-plain`}),ze=Object.freeze({kind:`symbol-keys`});Object.freeze({identify:e=>e,typeOf:e=>e===null?`null`:typeof e,toPrimitive:e=>e,tagOf:e=>Me(e),isThenable:e=>typeof e.then==`function`,toPromise:e=>Promise.resolve(e),unbox:e=>e.valueOf(),toISOString:e=>isNaN(e.getDate())?``:e.toISOString(),toStringValue:e=>e.toString(),regExpInfo:e=>({source:e.source,flags:e.flags}),valuesOf:e=>e,entriesOf:e=>e,viewInfo:e=>({buffer:e.buffer,byteOffset:e.byteOffset,byteLength:e.byteLength,length:e.length,bufferByteLength:e.buffer.byteLength}),toArrayBuffer:e=>e,lengthOf:e=>e.length,hasOwn:(e,t)=>Object.hasOwn(e,t),indicesOf:e=>Le(e),shapeOf:e=>je(e)?Ne(e).length>0?ze:{kind:Object.getPrototypeOf(e)===null?`null-proto`:`plain`,keys:Object.keys(e)}:Re,get:(e,t)=>e[t]}),Object.freeze({fromPrimitive:e=>e,fromISOString:e=>new Date(e),fromStringValue:(e,t)=>e===`URL`?new URL(t):e===`URLSearchParams`?new URLSearchParams(t):Temporal[e.slice(9)].from(t),fromArrayBuffer:e=>e,fromRegExpInfo:(e,t)=>new RegExp(e,t),fromViewInfo:(e,t,n,r)=>{let i=globalThis[e];return n===void 0?new i(t):new i(t,n,r)},box:e=>Object(e),createArray:e=>Array(e),createSparseArray:e=>{let t=[];return t[ke]=void 0,delete t[ke],t.length=e,t},createObject:()=>({}),createNullPrototypeObject:()=>Object.create(null),createSet:()=>new Set,createMap:()=>new Map,set:(e,t,n)=>{e[t]=n},addValue:(e,t)=>{e.add(t)},addEntry:(e,t,n)=>{e.set(t,n)}});var Be=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Be],[...new Set([...Be])];function Ve(e){return e.filter(e=>e!=null)}function k(e,t){return e+`/`+t}function He(e){return e instanceof l||e instanceof d?e.status:500}function Ue(e){return e instanceof d?e.text:`Internal Error`}var A,j,We,Ge=s.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(s.toString()),Ke=`a:`;Ge?(A={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ke)},j={current:null},We={current:!1}):(A=new class{#e=i({});get data(){return o(this.#e)}set data(e){r(this.#e,e)}#t=i(null);get form(){return o(this.#t)}set form(e){r(this.#t,e)}#n=i(null);get error(){return o(this.#n)}set error(e){r(this.#n,e)}#r=i({});get params(){return o(this.#r)}set params(e){r(this.#r,e)}#i=i({id:null});get route(){return o(this.#i)}set route(e){r(this.#i,e)}#a=i({});get state(){return o(this.#a)}set state(e){r(this.#a,e)}#o=i(-1);get status(){return o(this.#o)}set status(e){r(this.#o,e)}#s=i(new URL(Ke));get url(){return o(this.#s)}set url(e){r(this.#s,e)}},j=new class{#e=i(null);get current(){return o(this.#e)}set current(e){r(this.#e,e)}},We=new class{#e=i(!1);get current(){return o(this.#e)}set current(e){r(this.#e,e)}},Ee.v=()=>We.current=!0);function qe(e){Object.assign(A,e)}var{onMount:Je,tick:Ye}=c,Xe=n??(e=>e()),Ze=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),M=null,N=de(`sveltekit:scroll`)??{},P=de(`sveltekit:snapshot`)??{},F={url:Te({}),page:Te({}),navigating:t(null),updated:De()};function Qe(e){N[e]=T()}function $e(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;P[n];)delete P[n],n+=1}function I(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function et(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(x||`/`);e&&await e.update()}}var tt,nt,L,R,rt,z,it={},at={},B=[],V=[],H=null;function ot(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var st=new Map,ct=new Set,lt=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},ut=!1,G=!1,dt=!0,K=!1,q=!1,ft=!1,pt=!1,mt,J,Y,X,ht=new Set,gt=new Map,_t=new Map;async function vt(e,t,n){if(globalThis.__sveltekit_nn6fis.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_nn6fis.data;for(let t in e)it[t]=e[t];for(let e in n)it[e]=n[e];for(let e in r)it[e]=r[e];for(let e in t)at[e]=t[e]}document.URL!==location.href&&(location.href=location.href),z=e,await e.hooks.init?.(),tt=ue(e),R=document.documentElement,rt=t,nt=e.nodes[0],L=e.nodes[1],nt(),L(),J=history.state?.[S],Y=history.state?.[C],J||(J=Y=Date.now(),history.replaceState({...history.state,[S]:J,[C]:Y},``));let r=N[J];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await qt(rt,n)):(await Z({type:`enter`,url:be(z.hash?$t(new URL(location.href)):location.href),replace_state:!0}),i()),Kt()}function yt(){B.length=0,pt=!1}function bt(e){V.some(e=>e?.snapshot)&&(P[e]=V.map(e=>e?.snapshot?.capture()))}function xt(e){P[e]?.forEach((e,t)=>{V[t]?.snapshot?.restore(e)})}function St(){Qe(J),fe(ge,N),bt(Y),fe(he,P)}async function Ct(e,t,n,r){let i,o;t.invalidateAll&&ot(),await Z({type:`goto`,url:be(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{if(t.invalidateAll){pt=!0,i=new Set;for(let[e,t]of gt)for(let[n,r]of t)r.resource?.reset(),i.add(k(e,n));o=new Set;for(let[e,t]of _t)for(let n of t.keys())o.add(k(e,n))}t.invalidate&&t.invalidate.forEach(Wt)}}),t.invalidateAll&&a().then(a).then(()=>{for(let[e,t]of gt)for(let[n,{resource:r}]of t)i?.has(k(e,n))&&r.start();for(let[e,t]of _t)for(let[n,{resource:r}]of t)o?.has(k(e,n))&&r.reconnect()})}async function wt(e){if(e.id!==H?.id){ot();let t={};ht.add(t),H={id:e.id,token:t,promise:Pt({...e,preload:t}).then(e=>(ht.delete(t),e.type===`loaded`&&e.state.error&&ot(),e)),fork:null}}return H.promise}async function Tt(e){let t=(await Rt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function Et(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},qe(e.props.page),mt=new z.root({target:t,props:{...e.props,stores:F,components:V},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:N[J]??T()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}xt(Y),G=!0}async function Dt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(x&&(e.pathname===x||e.pathname===x+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Ve(n).map(e=>e.node.component),page:Qt(A)}};s!==void 0&&(l.props.form=s);let u={},d=!A,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==A.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:A.data}),l}async function Ot({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function kt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:G?ne(r,i.href,t):y(r,t)}}function At(e,t,n,r,i,a){if(pt)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(B.some(t=>t(new URL(e))))return!0;return!1}function jt(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Mt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function Nt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Qt(A),constructors:[]}}}async function Pt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return ht.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=W.url?e!==Bt(W.url):!1,p=W.route?i.id!==W.route.id:!1,ee=Mt(W.url,n),m=!1,g=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!At(m,p,f,ee,a.universal?.uses,r)?a:(m=!0,Ot({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await g[n])?.data);return e},server_data_node:jt(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of g)e.catch(h);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await g[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(a&&ht.has(a))return Nt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=He(t),c;if(t instanceof l)c=t.body;else{if(await F.updated.check())return await et(),await I(n);c=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await Ft(e,_,o);return d?Dt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await Ht(n,{id:i.id},c,s)}else _.push(void 0);return Dt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function Ft(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function It({status:e,error:t,url:n,route:r}){let i={};try{return Dt({url:n,params:i,branch:[await Ot({loader:nt,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:jt(null)}),{node:await L(),loader:L,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof u){await Ct(new URL(t.location,location.href),{},0);return}let a=await z.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Lt(e){let t=e.href;if(st.has(t))return st.get(t);let n;try{let r=(async()=>{let t=await z.hooks.reroute({url:new URL(e),fetch:async(t,n)=>kt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);z.hash?n.hash=t:n.pathname=t,t=n}return t})();st.set(t,r),n=await r}catch{st.delete(t);return}return n}async function Rt(e,t){if(e&&!O(e,x,z.hash)){let n=await Lt(e);if(!n)return;let r=zt(n);for(let n of tt){let i=n.exec(r);if(i)return{id:Bt(e),invalidating:t,route:n,params:ee(i),url:e}}}}function zt(e){return p(z.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(x.length))||`/`}function Bt(e){return(z.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Vt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Zt(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return K||ct.forEach(e=>e(c)),o?null:s}async function Z({type:t,url:n,popped:r,keepfocus:i,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:u={},accept:f=h,block:p=h,event:ee}){let m=X;X=u;let g=await Rt(n,!1),_=t===`enter`?Zt(W,g,n,t):Vt({url:n,type:t,delta:r?.delta,intent:g,scroll:r?.scroll,event:ee});if(!_){p(),X===u&&(X=m);return}let te=J,v=Y;f(),K=!0,G&&_.navigation.type!==`enter`&&F.navigating.set(j.current=_.navigation);let y=g&&await Pt(g);if(!y){if(O(n,x,z.hash))return await I(n,s);y=await Ht(n,{id:null},await $(new d(404,`Not Found`,`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404,s)}if(n=g?.url||n,X!==u){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:t,url:new URL(y.location,n),popped:r,keepfocus:i,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:u}),_.fulfil(void 0);return}if(y=await It({status:500,error:await $(Error(`Redirect loop`),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await F.updated.check())return await et(),await I(n,s);if(yt(),Qe(te),bt(v),y.props.page.url.pathname!==n.pathname&&(n.pathname=y.props.page.url.pathname),c=r?r.state:c,!r){let e=+!s,t={[S]:J+=e,[C]:Y+=e,[_e]:c};(s?history.replaceState:history.pushState).call(history,t,``,n),s||$e(J,Y)}let ne=g&&H?.id===g.id?H.fork:null;H?.fork&&!ne?ot():(H=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let b;if(G){let t=(await Promise.all(Array.from(lt,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{U.delete(e)})}t.push(e),t.forEach(e=>{U.add(e)})}let r=_.navigation.to;W={...y.state,nav:{params:r.params,route:r.route,url:r.url}},y.props.page&&(y.props.page.url=n),!i&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let a=ne&&await ne;a?b=a.commit():(M=null,mt.$set(y.props),M&&Object.assign(y.props.page,M),qe(y.props.page),b=e?.()),ft=!0}else await Et(y,rt,!1);let{activeElement:re}=document;if(await b,await a(),await a(),X!==u){_.reject(Error(`navigation aborted`));return}y.props.page&&M&&Object.assign(y.props.page,M);let ie=null;if(dt){let e=r?r.scroll:o?T():null;e?scrollTo(e.x,e.y):(ie=n.hash&&document.getElementById(en(n)))?ie.scrollIntoView():scrollTo(0,0)}let ae=document.activeElement!==re&&document.activeElement!==document.body;!i&&!ae&&Xt(n,!ie),dt=!0,K=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=T()),U.forEach(e=>e(_.navigation)),t===`popstate`&&xt(Y),F.navigating.set(j.current=null)}async function Ht(e,t,n,r,i){return e.origin===ye&&e.pathname===location.pathname&&!ut?await It({status:r,error:n,url:e,route:t}):await I(e,i)}var Q={element:void 0,href:void 0};function Ut(){let e,t;R.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,w.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],w.tap)}R.addEventListener(`mousedown`,n),R.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(Tt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Ce(e,R),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=we(r,x,z.hash);if(o||s)return;let c=D(r),l=a&&Bt(W.url)===Bt(a);if(!(c.reload||l)){if(n<=c.preload_data){Q={element:r,href:r.href},t=w.tap;let e=await Rt(a,!1);if(!e)return;wt(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,Tt(a))}}function a(){r.disconnect();for(let e of R.querySelectorAll(`a`)){let{url:t,external:n,download:i}=we(e,x,z.hash);if(n||i)continue;let a=D(e);a.reload||(a.preload_code===w.viewport&&r.observe(e),a.preload_code===w.eager&&Tt(t))}}U.add(a),a()}function $(e,t){if(e instanceof l)return e.body;let n=He(e),r=Ue(e);return z.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Wt(e){if(typeof e==`function`)B.push(e);else{let{href:t}=new URL(e,location.href);B.push(e=>e.href===t)}}function Gt(e,t){let n={[S]:J,[C]:Y,[ve]:A.url.href,[_e]:t};history.replaceState(n,``,be(e)),A.state=t,mt.$set({page:Xe(()=>Qt(A))})}function Kt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(St(),!K){let e=Zt(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};ct.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&St()}),navigator.connection?.saveData||Ut(),R.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ce(t.composedPath()[0],R);if(!n)return;let{url:r,external:i,target:a,download:o}=we(n,x,z.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=D(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(z.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Vt({url:r,type:`link`,event:t})?K=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(q=!0,Qe(J),e(r),!s.replace_state)return;q=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),R.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(O(r,x,!1))return;let i=e.target,a=D(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Yt){if(t.state?.[`sveltekit:history`]){let n=t.state[S];if(X={},n===J)return;let r=N[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[C],s=W.url?m(location)===m(W.url):!1;if(o===Y&&(ft||s)){i!==A.state&&(A.state=i),e(a),N[J]=T(),r&&scrollTo(r.x,r.y),J=n;return}let c=n-J;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{J=n,Y=o},block:()=>{history.go(-c)},nav_token:X,event:t})}else q||(e(new URL(location.href)),z.hash&&location.reload())}}),addEventListener(`hashchange`,()=>{q&&(q=!1,history.replaceState({...history.state,[S]:++J,[C]:Y},``,location.href))});for(let e of document.querySelectorAll(`link`))Ze.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&F.navigating.set(j.current=null)});function e(e){W.url=A.url=e,F.page.set(Qt(A)),F.page.notify()}}async function qt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){ut=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await Rt(l,!1)||{}),d=tt.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Jt(r.uses)),Ot({loader:z.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:jt(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await Dt({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u)return await I(new URL(t.location,location.href));f=await It({status:He(t),error:await $(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await Et(f,e,p))}function Jt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Yt=!1;function Xt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=en(e);if(n&&document.getElementById(n)){let{x:r,y:i}=T();setTimeout(()=>{let a=history.state;Yt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Yt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Zt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:T()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Qt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function $t(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function en(e){let t;if(z.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Oe as a,A as i,vt as n,j as r,Gt as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DHBUWbOo.js","../chunks/ZAD2y5xJ.js","../chunks/xihTtKlq.js","../assets/0.CocWI5K4.css","../nodes/1.D1vhnOgO.js","../chunks/DyIYFD7i.js","../chunks/05WsiB4A.js","../nodes/2.BPdL6B7F.js"])))=>i.map(i=>d[i]);
2
- import{C as e,F as t,G as n,I as r,J as i,P as a,Q as o,R as s,S as c,T as l,U as u,V as d,W as f,Y as p,a as m,b as h,g,i as _,j as v,k as y,n as b,r as x,w as S,x as C,z as w}from"../chunks/ZAD2y5xJ.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=S(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),j=S(`<!> <!>`,1);function M(x,S){p(S,!0);let T=_(S,`components`,23,()=>[]),E=_(S,`data_0`,3,null),D=_(S,`data_1`,3,null);r(()=>S.stores.page.set(S.page)),t(()=>{S.stores,S.page,S.constructors,T(),S.form,E(),D(),S.stores.page.notify()});let O=f(!1),k=f(!1),M=f(null);b(()=>{let e=S.stores.page.subscribe(()=>{y(O)&&(u(k,!0),v().then(()=>{u(M,document.title||`untitled page`,!0)}))});return u(O,!0),e});let N=n(()=>S.constructors[1]);var P=j(),F=w(P),I=t=>{let r=n(()=>S.constructors[0]);var i=e(),a=w(i);g(a,()=>y(r),(t,n)=>{m(n(t,{get data(){return E()},get form(){return S.form},get params(){return S.page.params},children:(t,n)=>{var r=e(),i=w(r);g(i,()=>y(N),(e,t)=>{m(t(e,{get data(){return D()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),c(t,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),c(t,i)},L=t=>{let r=n(()=>S.constructors[0]);var i=e(),a=w(i);g(a,()=>y(r),(e,t)=>{m(t(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),c(t,i)};h(F,e=>{S.constructors[1]?e(I):e(L,-1)});var R=d(F,2),z=e=>{var t=A(),n=s(t),r=e=>{var t=l();a(()=>C(t,y(M))),c(e,t)};h(n,e=>{y(k)&&e(r)}),o(t),c(e,t)};h(R,e=>{y(O)&&e(z)}),c(x,P),i()}var N=x(M),P=[()=>O(()=>import(`../nodes/0.DHBUWbOo.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>O(()=>import(`../nodes/1.D1vhnOgO.js`),__vite__mapDeps([4,1,2,5,6]),import.meta.url),()=>O(()=>import(`../nodes/2.BPdL6B7F.js`),__vite__mapDeps([7,1,6,2,5]),import.meta.url)],F=[],I={"/":[2]},L={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},R=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.decode])),z=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.encode])),B=!1,V=(e,t)=>R[e](t),H=()=>O(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{V as decode,R as decoders,I as dictionary,z as encoders,H as get_error_template,B as hash,L as hooks,k as matchers,P as nodes,N as root,F as server_loads};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BJ6Zdc8H.js","../chunks/ZAD2y5xJ.js","../chunks/xihTtKlq.js","../assets/0.BPmQoXaO.css","../nodes/1.xMNWuLLz.js","../chunks/Bw_9uNRP.js","../chunks/De_x7GQi.js","../nodes/2.CaxDXwmh.js"])))=>i.map(i=>d[i]);
2
+ import{C as e,F as t,G as n,I as r,J as i,P as a,Q as o,R as s,S as c,T as l,U as u,V as d,W as f,Y as p,a as m,b as h,g,i as _,j as v,k as y,n as b,r as x,w as S,x as C,z as w}from"../chunks/ZAD2y5xJ.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=S(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),j=S(`<!> <!>`,1);function M(x,S){p(S,!0);let T=_(S,`components`,23,()=>[]),E=_(S,`data_0`,3,null),D=_(S,`data_1`,3,null);r(()=>S.stores.page.set(S.page)),t(()=>{S.stores,S.page,S.constructors,T(),S.form,E(),D(),S.stores.page.notify()});let O=f(!1),k=f(!1),M=f(null);b(()=>{let e=S.stores.page.subscribe(()=>{y(O)&&(u(k,!0),v().then(()=>{u(M,document.title||`untitled page`,!0)}))});return u(O,!0),e});let N=n(()=>S.constructors[1]);var P=j(),F=w(P),I=t=>{let r=n(()=>S.constructors[0]);var i=e(),a=w(i);g(a,()=>y(r),(t,n)=>{m(n(t,{get data(){return E()},get form(){return S.form},get params(){return S.page.params},children:(t,n)=>{var r=e(),i=w(r);g(i,()=>y(N),(e,t)=>{m(t(e,{get data(){return D()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),c(t,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),c(t,i)},L=t=>{let r=n(()=>S.constructors[0]);var i=e(),a=w(i);g(a,()=>y(r),(e,t)=>{m(t(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),c(t,i)};h(F,e=>{S.constructors[1]?e(I):e(L,-1)});var R=d(F,2),z=e=>{var t=A(),n=s(t),r=e=>{var t=l();a(()=>C(t,y(M))),c(e,t)};h(n,e=>{y(k)&&e(r)}),o(t),c(e,t)};h(R,e=>{y(O)&&e(z)}),c(x,P),i()}var N=x(M),P=[()=>O(()=>import(`../nodes/0.BJ6Zdc8H.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>O(()=>import(`../nodes/1.xMNWuLLz.js`),__vite__mapDeps([4,1,2,5,6]),import.meta.url),()=>O(()=>import(`../nodes/2.CaxDXwmh.js`),__vite__mapDeps([7,1,6,2,5]),import.meta.url)],F=[],I={"/":[2]},L={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},R=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.decode])),z=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.encode])),B=!1,V=(e,t)=>R[e](t),H=()=>O(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{V as decode,R as decoders,I as dictionary,z as encoders,H as get_error_template,B as hash,L as hooks,k as matchers,P as nodes,N as root,F as server_loads};
@@ -0,0 +1 @@
1
+ import{a as e,n as t}from"../chunks/De_x7GQi.js";export{e as load_css,t as start};
@@ -0,0 +1 @@
1
+ import{L as e,N as t,P as n,Q as r,R as i,S as a,V as o,_ as s,c,h as l,w as u}from"../chunks/ZAD2y5xJ.js";import"../chunks/xihTtKlq.js";var d=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%20role='img'%20aria-label='watch-tail'%3e%3ctitle%3ewatch-tail%3c/title%3e%3c!--%20A%20log%20window:%20three%20lines,%20the%20newest%20highlighted,%20with%20the%20tail%20still%20running.%20--%3e%3crect%20width='32'%20height='32'%20rx='7'%20fill='%230a0a0a'%20/%3e%3crect%20x='5'%20y='6.6'%20width='14'%20height='4'%20rx='2'%20fill='%2338bdf8'%20/%3e%3crect%20x='5'%20y='14'%20width='22'%20height='4'%20rx='2'%20fill='%23525252'%20/%3e%3crect%20x='5'%20y='21.4'%20width='17'%20height='4'%20rx='2'%20fill='%23404040'%20/%3e%3ccircle%20cx='25.6'%20cy='8.6'%20r='2.8'%20fill='%2338bdf8'%20/%3e%3c/svg%3e`,f=u(`<link rel="icon"/>`),p=u(`<div class="flex h-dvh min-h-[30rem] flex-col overflow-hidden bg-neutral-950 font-sans text-neutral-100 antialiased selection:bg-sky-900/60"><header class="flex-none border-b border-neutral-900 bg-neutral-950/90"><div class="flex w-full items-baseline gap-3 px-3 py-2 sm:px-4"><span class="text-sm font-semibold tracking-tight">watch<span class="text-sky-400">-stream</span></span> <span class="hidden text-xs text-neutral-500 sm:inline">Tail CloudWatch Logs in the browser</span></div></header> <main class="flex min-h-0 w-full flex-1 flex-col gap-3 px-3 py-3 sm:px-4"><!></main></div>`);function m(u,m){var h=p();l(`12qhfyh`,r=>{var i=f();n(()=>c(i,`href`,d)),t(()=>{e.title=`watch-stream`}),a(r,i)});var g=o(i(h),2),_=i(g);s(_,()=>m.children),r(g),r(h),a(u,h)}export{m as component};
@@ -0,0 +1,4 @@
1
+ t ��e��b���;��߬38�$D��ۓ/w�B�h*���9Z[� aS%����!�I�Փx��>�&�aބW�\'2�+�B���>�>�>)���oj��m
2
+ E�ָ�EHɡd �ճ1k�1���&�ߗmq4$����TO$��ҹ��U�dC{�T�3�ӊ�A�!�O�TD��y[�M}�ؤD��.��&iEts"1�V@W���mA
3
+ �թ
4
+ Ux��p9ҽOFÌ*> 0. ��q�� ���
@@ -1 +1 @@
1
- import{B as e,J as t,P as n,S as r,V as i,Y as a,w as o,x as s,z as c}from"../chunks/ZAD2y5xJ.js";import"../chunks/xihTtKlq.js";import{t as l}from"../chunks/DyIYFD7i.js";var u=o(`<h1> </h1> <p> </p>`,1);function d(o,d){a(d,!0);var f=u(),p=c(f),m=e(p,!0),h=i(p,2),g=e(h,!0);n(()=>{s(m,l.status),s(g,l.error?.message)}),r(o,f),t()}export{d as component};
1
+ import{B as e,J as t,P as n,S as r,V as i,Y as a,w as o,x as s,z as c}from"../chunks/ZAD2y5xJ.js";import"../chunks/xihTtKlq.js";import{t as l}from"../chunks/Bw_9uNRP.js";var u=o(`<h1> </h1> <p> </p>`,1);function d(o,d){a(d,!0);var f=u(),p=c(f),m=e(p,!0),h=i(p,2),g=e(h,!0);n(()=>{s(m,l.status),s(g,l.error?.message)}),r(o,f),t()}export{d as component};
@@ -0,0 +1,5 @@
1
+ import{B as e,C as t,D as n,E as r,F as i,G as a,H as o,J as s,O as c,P as l,Q as u,R as d,S as f,T as p,U as m,V as h,W as g,Y as _,Z as v,a as y,b,c as x,d as S,f as C,i as w,k as T,l as E,m as D,n as O,o as k,p as A,s as j,u as M,v as N,w as P,x as F,y as I,z as ee}from"../chunks/ZAD2y5xJ.js";import{t as L}from"../chunks/De_x7GQi.js";import"../chunks/xihTtKlq.js";import{t as R}from"../chunks/Bw_9uNRP.js";var z=`--:--:--.---`;function B(e,t=2){return String(Math.trunc(Math.abs(e))).padStart(t,`0`)}function te(e){if(typeof e!=`number`||!Number.isFinite(e))return z;let t=new Date(e);return Number.isNaN(t.getTime())?z:`${`${B(t.getUTCHours())}:${B(t.getUTCMinutes())}:${B(t.getUTCSeconds())}`}.${B(t.getUTCMilliseconds(),3)}`}function ne(e){if(typeof e!=`number`||!Number.isFinite(e))return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toISOString()}function re(e){let t=e>=100?e.toFixed(0):e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function ie(e){if(typeof e!=`number`||!Number.isFinite(e)||e<0)return`—`;if(e<1024)return`${Math.trunc(e)} B`;let t=[`KiB`,`MiB`,`GiB`,`TiB`],n=e/1024,r=t[0];for(let e=1;e<t.length&&n>=1024;e+=1)n/=1024,r=t[e];return`${re(n)} ${r}`}function V(e){if(typeof e!=`number`||!Number.isFinite(e))return`0`;let t=Math.trunc(e);return(t<0?`-`:``)+String(Math.abs(t)).replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function ae(e){let t=typeof e==`string`?e.trim():``;if(t===``)return null;let n=t.toLowerCase();return n.includes(`floci`)?`floci`:n.includes(`localstack`)?`localstack`:H(t)===`4566`?`floci`:`local emulator`}function H(e){return U(e)?.port||null}function U(e){try{return new URL(e)}catch{return null}}function oe(e){let t=typeof e==`string`?e.trim():``;if(t===``)return null;let n=ae(t);return n===null?null:(U(t)?.hostname.toLowerCase()??t.toLowerCase()).startsWith(n)?t:`${n} ${t}`}var se=P(`<span data-testid="credentials-hint" class="text-[0.6875rem] text-neutral-500">dev creds</span>`),ce=P(`<span class="inline-flex items-center gap-1.5"><span data-testid="endpoint-badge" class="rounded-full border border-violet-900 bg-violet-950/60 px-2.5 py-1 text-xs font-medium text-violet-300"> </span> <!></span>`);function le(n,r){_(r,!0);let i=w(r,`endpoint`,3,null),o=w(r,`credentials`,3,null),c=a(()=>oe(i())),p=a(()=>o()===`emulator-default`),m=a(()=>T(p)?`Local emulator endpoint - using floci's throwaway credentials (no ambient AWS credentials found)`:`Local emulator endpoint`);var g=t(),v=ee(g),y=t=>{var n=ce(),r=d(n),i=e(r,!0),a=h(r,2),o=e=>{var t=se();f(e,t)};b(a,e=>{T(p)&&e(o)}),u(n),l(()=>{x(n,`title`,T(m)),x(r,`title`,T(m)),F(i,T(c))}),f(t,n)};b(v,e=>{T(c)!==null&&e(y)}),f(n,g),s()}var W={sidebarWidth:`watch-stream:sidebar-width`,prefixWidth:`watch-stream:prefix-width`,wrap:`watch-stream:wrap`,jsonView:`watch-stream:json-view`},G={defaultRem:22,minRem:16,maxVw:44},ue={defaultRem:14,minRem:4,maxRem:40};function K(e,t,n){let r=Math.min(t,n),i=Math.max(t,n);return Number.isNaN(e)?r:Math.min(Math.max(e,r),i)}function de(e,t,n,r){if(typeof e!=`string`||e.trim()===``)return K(t,n,r);let i=Number(e);return K(Number.isFinite(i)?i:t,n,r)}function fe(e){let{startWidth:t,startX:n,currentX:r,min:i,max:a}=e;return K(t+(r-n),i,a)}function q(e){let{width:t,key:n,step:r=16,min:i,max:a}=e;return K(n!==`ArrowLeft`&&n!==`ArrowRight`?t:t+(n===`ArrowLeft`?-r:r),i,a)}function pe(e,t=16){let n=e/t;return`${Number.isInteger(n)?n:Number(n.toFixed(3))}rem`}function J(e,t=16){return e*t}var Y=P(`<div role="separator" aria-orientation="vertical" tabindex="0"></div>`);function me(e,t){_(t,!0);let r=w(t,`class`,3,``),i=w(t,`style`,3,``),a=null;function o(e){a={x:e.clientX,width:t.width},e.currentTarget.setPointerCapture?.(e.pointerId),e.preventDefault()}function u(e){a!==null&&(t.onChange(fe({startWidth:a.width,startX:a.x,currentX:e.clientX,min:t.min,max:t.max})),e.preventDefault())}function d(e){a!==null&&(a=null,e.currentTarget.releasePointerCapture?.(e.pointerId),t.onCommit?.(t.width))}function p(e){let n=q({width:t.width,key:e.key,min:t.min,max:t.max});n!==t.width&&(e.preventDefault(),t.onChange(n),t.onCommit?.(n))}var m=Y();l(e=>{x(m,`aria-label`,t.label),x(m,`aria-valuemin`,t.min),x(m,`aria-valuemax`,t.max),x(m,`aria-valuenow`,e),x(m,`title`,`${t.label??``} (drag or use the arrow keys)`),x(m,`data-testid`,t.testId),A(m,1,`cursor-col-resize touch-none bg-transparent hover:bg-sky-500/30 focus:bg-sky-500/50 focus:outline-none ${r()??``}`),C(m,i())},[()=>Math.round(t.width)]),n(`pointerdown`,m,o),n(`pointermove`,m,u),n(`pointerup`,m,d),c(`pointercancel`,m,d),n(`keydown`,m,p),f(e,m),s()}r([`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var X=[`15m`,`1h`,`3h`,`12h`,`24h`,`5d`],he={"15m":`15 min`,"1h":`1 hour`,"3h":`3 hours`,"12h":`12 hours`,"24h":`24 hours`,"5d":`5 days`};function ge(e){return X.includes(e)}function Z(e){return ge(e)?he[e]:e}function Q(e){return String(e).padStart(2,`0`)}function _e(e){let t=new Date(e);return`${t.getFullYear()}-${Q(t.getMonth()+1)}-${Q(t.getDate())}T${Q(t.getHours())}:${Q(t.getMinutes())}`}function ve(e){if(typeof e!=`string`||e.trim()===``)return null;let t=Date.parse(e);return Number.isNaN(t)?null:t}function $(e,t){let n=new Date(e),r=`${String(n.getHours()).padStart(2,`0`)}:${String(n.getMinutes()).padStart(2,`0`)}`;return new Date(t).toDateString()===n.toDateString()?r:`${n.toLocaleDateString(void 0,{day:`numeric`,month:`short`})} ${r}`}function ye(e,t){if(e===null||e.startTime===void 0)return{mode:`live`,label:`live`,title:`Tailing new events`,clamped:!1};let n=e.clamped===!0;if(e.mode!==`historic`||e.endTime===null||e.endTime===void 0)return{mode:`live`,label:`live`,title:`Live since ${$(e.startTime,t)}`,clamped:n};let r=$(e.startTime,t),i=$(e.endTime,t),a=e.preset===null||e.preset===void 0?null:Z(e.preset);return{mode:`historic`,label:a===null?`${r} → ${i}`:`${a} · ${r} → ${i}`,title:n?`Historic window, clamped to the last 14 days that CloudWatch Logs keeps`:`Historic window`,clamped:n}}var be=P(`<button type="button"> </button>`),xe=P(`<div class="flex flex-wrap items-center gap-1" role="group" aria-label="Historic range"><!> <button type="button" data-testid="preset-custom"> </button></div>`),Se=P(`<span class="text-xs text-amber-300" data-testid="range-loading">loading window…</span>`),Ce=P(`<span class="text-xs text-neutral-500"> </span>`),we=P(`<span class="text-xs text-red-300" role="alert" data-testid="custom-error"> </span>`),Te=P(`<div class="flex flex-wrap items-center gap-2 rounded-lg border border-neutral-800 bg-neutral-900/70 p-2" data-testid="custom-window"><label class="flex items-center gap-1 text-xs text-neutral-400">From <input type="datetime-local" data-testid="custom-from" class="rounded-md border border-neutral-800 bg-neutral-950 px-2 py-1 text-xs text-neutral-100"/></label> <label class="flex items-center gap-1 text-xs text-neutral-400">To <input type="datetime-local" data-testid="custom-to" class="rounded-md border border-neutral-800 bg-neutral-950 px-2 py-1 text-xs text-neutral-100"/></label> <button type="button" data-testid="custom-apply" class="rounded-md border border-sky-800 bg-sky-950/60 px-2 py-1 text-xs font-medium text-sky-200 hover:border-sky-600">Apply</button> <!></div>`),Ee=P(`<div class="flex flex-wrap items-center gap-2" data-testid="range-controls"><div class="flex items-center gap-1 rounded-lg border border-neutral-800 bg-neutral-900 p-0.5" role="group" aria-label="Tail mode"><button type="button" data-testid="mode-live">Live</button> <button type="button" data-testid="mode-historic">Historic</button></div> <!> <!> <!></div>`);function De(t,r){_(r,!0);let o=w(r,`mode`,3,`live`),c=w(r,`range`,3,`15m`),p=w(r,`from`,3,null),v=w(r,`to`,3,null),y=w(r,`disabled`,3,!1),S=w(r,`loading`,3,!1),C=g(!1),E=g(``),D=g(``),O=g(null);i(()=>{let e=p()??(v()??Date.now())-36e5,t=v()??Date.now();m(E,_e(e),!0),m(D,_e(t),!0),m(C,o()===`historic`&&c()===``&&p()!==null&&v()!==null,!0)});function M(e){e!==o()&&r.onApply?.({mode:e,range:e===`live`?``:c()===``?`15m`:c(),from:null,to:null})}function P(e){m(O,null),r.onApply?.({mode:`historic`,range:e,from:null,to:null})}function I(){m(O,null),m(C,!0)}function ee(){let e=ve(T(E)),t=ve(T(D));if(e===null||t===null){m(O,`Pick both a start and an end time.`);return}if(t<=e){m(O,`The end must be after the start.`);return}if(t-e>12096e5){m(O,`CloudWatch Logs only keeps 14 days.`);return}m(O,null),r.onApply?.({mode:`historic`,range:``,from:e,to:t})}let L=a(()=>o()===`historic`&&c()===``&&p()!==null&&v()!==null?`${_e(p()).replace(`T`,` `)} → ${_e(v()).replace(`T`,` `)}`:`Custom…`);var R=Ee(),z=d(R),B=d(z),te=h(B,2);u(z);var ne=h(z,2),re=t=>{var r=xe(),i=d(r);N(i,16,()=>X,e=>e,(t,r)=>{var i=be(),a=e(i,!0);l(()=>{x(i,`aria-pressed`,c()===r),x(i,`data-testid`,`preset-${r??``}`),i.disabled=y(),A(i,1,`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${c()===r?`border-amber-700 bg-amber-950/50 text-amber-200`:`border-neutral-800 bg-neutral-900 text-neutral-300 hover:border-neutral-700`} disabled:opacity-40`),F(a,he[r])}),n(`click`,i,()=>P(r)),f(t,i)});var a=h(i,2),o=e(a,!0);u(r),l(()=>{x(a,`aria-pressed`,c()===``),a.disabled=y(),A(a,1,`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${c()===``?`border-amber-700 bg-amber-950/50 text-amber-200`:`border-neutral-800 bg-neutral-900 text-neutral-300 hover:border-neutral-700`}`),F(o,T(L))}),n(`click`,a,I),f(t,r)};b(ne,e=>{o()===`historic`&&e(re)});var ie=h(ne,2),V=e=>{var t=Se();f(e,t)},ae=t=>{var n=Ce(),r=e(n);l(e=>F(r,`last ${e??``}`),[()=>Z(c())]),f(t,n)};b(ie,e=>{S()?e(V):o()===`historic`&&c()!==``&&e(ae,1)});var H=h(ie,2),U=t=>{var r=Te(),i=d(r),a=h(d(i));j(a),u(i);var o=h(i,2),s=h(d(o));j(s),u(o);var c=h(o,2),p=h(c,2),g=t=>{var n=we(),r=e(n,!0);l(()=>F(r,T(O))),f(t,n)};b(p,e=>{T(O)!==null&&e(g)}),u(r),k(a,()=>T(E),e=>m(E,e)),k(s,()=>T(D),e=>m(D,e)),n(`click`,c,ee),f(t,r)};b(H,e=>{T(C)&&o()===`historic`&&e(U)}),u(R),l(()=>{x(B,`aria-pressed`,o()===`live`),A(B,1,`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${o()===`live`?`border-sky-700 bg-sky-950/60 text-sky-300`:`border-transparent text-neutral-400 hover:text-neutral-200`}`),x(te,`aria-pressed`,o()===`historic`),A(te,1,`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${o()===`historic`?`border-amber-700 bg-amber-950/50 text-amber-300`:`border-transparent text-neutral-400 hover:text-neutral-200`}`)}),n(`click`,B,()=>M(`live`)),n(`click`,te,()=>M(`historic`)),f(t,R),s()}r([`click`]);var Oe=`us-east-1.us-east-2.us-west-1.us-west-2.ca-central-1.ca-west-1.mx-central-1.sa-east-1.eu-west-1.eu-west-2.eu-west-3.eu-central-1.eu-central-2.eu-north-1.eu-south-1.eu-south-2.af-south-1.me-south-1.me-central-1.il-central-1.ap-east-1.ap-south-1.ap-south-2.ap-southeast-1.ap-southeast-2.ap-southeast-3.ap-southeast-4.ap-southeast-5.ap-southeast-6.ap-southeast-7.ap-northeast-1.ap-northeast-2.ap-northeast-3`.split(`.`),ke=class extends Error{status;code;details;constructor(e,t={}){super(e,{cause:t.cause}),this.name=`ApiError`,this.status=t.status??0,this.code=t.code,this.details=t.details}};function Ae(e,t){if(typeof e!=`object`||!e)return;let n=e[t];return typeof n==`string`?n:void 0}function je(e,t=`Unexpected API error`){return Ae(e,`error`)??t}function Me(e){let t=new URLSearchParams;e.region&&t.set(`region`,e.region),e.prefix&&t.set(`prefix`,e.prefix),typeof e.limit==`number`&&Number.isFinite(e.limit)&&t.set(`limit`,String(e.limit));let n=t.toString();return n===``?`/api/log-groups`:`/api/log-groups?${n}`}function Ne(e){return e instanceof Error&&e.name===`AbortError`}async function Pe(e,t){let n=t.fetchImpl??fetch,r;try{r=await n(e,{headers:{accept:`application/json`},signal:t.signal})}catch(t){throw Ne(t)?t:new ke(`Could not reach ${e}.`,{cause:t})}let i=await r.text(),a=null;if(i.trim()!==``)try{a=JSON.parse(i)}catch{a=null}if(!r.ok)throw new ke(je(a,`Request to ${e} failed with ${r.status}.`),{status:r.status,code:Ae(a,`code`),details:Ae(a,`details`)});return a}function Fe(e={}){return Pe(`/api/regions`,e)}function Ie(e={}){return Pe(`/api/health`,e)}function Le(e){return Pe(Me(e),e)}function Re(e){return`No log groups found in ${e}. Start floci and run \`pnpm seed\` to create sample groups.`}function ze(e){return e.trim().replace(/\.+$/,``)}function Be(e,t){if(t instanceof ke){let n=t.details?` ${t.details}`:``;return`Could not list log groups in ${e}: ${ze(t.message)}.${n}`}return`Could not reach the watch-stream API for ${e}. ${t instanceof Error&&t.message!==``?t.message:String(t)}`}function Ve(e,t,n){return`${n} (${t===null||t===``?e:`${t} in ${e}`})`}var He=P(`<p role="alert" data-testid="group-error" class="rounded-md border border-red-900 bg-red-950/50 px-3 py-2 text-xs leading-5 text-red-300"> </p>`),Ue=P(`<div class="h-5 animate-pulse rounded bg-neutral-800/80"></div>`),We=P(`<div class="flex flex-col gap-2" data-testid="group-loading" aria-busy="true"><!> <p class="text-xs text-neutral-500">Loading log groups…</p></div>`),Ge=P(`<p data-testid="group-empty" class="rounded-md border border-neutral-800 bg-neutral-900/60 px-3 py-2 text-xs leading-5 text-neutral-400"> </p>`),Ke=P(`<p data-testid="group-no-match" class="px-1 py-2 text-xs text-neutral-500"> </p>`),qe=P(`<span class="shrink-0 text-[0.6875rem] text-neutral-500"> </span>`),Je=P(`<li><button type="button" data-testid="group-row"><span class="truncate font-mono"> </span> <!></button></li>`),Ye=P(`<p class="text-[0.6875rem] text-neutral-500" data-testid="group-truncated"> </p>`),Xe=P(`<ul class="flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto pr-1"></ul> <!>`,1),Ze=P(`<section class="flex min-h-0 flex-1 flex-col gap-3"><div class="flex items-center justify-between gap-2"><div class="flex items-baseline gap-2"><h2 class="text-sm font-semibold text-neutral-200">Log groups</h2> <span class="text-xs text-neutral-500" data-testid="group-count"> </span></div> <button type="button" class="rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100 disabled:cursor-not-allowed disabled:opacity-50"> </button></div> <div class="flex flex-col gap-1.5"><label class="sr-only" for="group-search">Search log groups</label> <input id="group-search" type="search" placeholder="Search log groups" class="w-full rounded-md border border-neutral-800 bg-neutral-900 px-2.5 py-1.5 text-sm text-neutral-100 outline-none transition-colors placeholder:text-neutral-600 hover:border-neutral-700 focus:border-sky-600"/></div> <!></section>`);function Qe(t,r){_(r,!0);let i=w(r,`groups`,19,()=>[]),o=w(r,`region`,3,``),c=w(r,`selected`,3,null),p=w(r,`loading`,3,!1),y=w(r,`error`,3,null),S=w(r,`maxRows`,3,500),C=g(``),D=a(()=>i().filter(e=>e.name.toLowerCase().includes(T(C).trim().toLowerCase()))),O=a(()=>T(D).slice(0,S())),k=a(()=>T(D).length>T(O).length),M=a(()=>T(C).trim());function P(e){return e===c()?`border-sky-800 bg-sky-950/50 text-sky-200`:`border-transparent bg-neutral-900/60 text-neutral-300 hover:border-neutral-800 hover:text-neutral-100`}var L=Ze(),R=d(L),z=d(R),B=h(d(z),2),te=e(B);u(z);var ne=h(z,2),re=e(ne,!0);u(R);var ae=h(R,2),H=h(d(ae),2);j(H),u(ae);var U=h(ae,2),oe=t=>{var n=He(),r=e(n,!0);l(()=>F(r,y())),f(t,n)},se=e=>{var t=We(),n=d(t);N(n,16,()=>Array.from({length:5}),I,(e,t)=>{var n=Ue();f(e,n)}),v(2),u(t),f(e,t)},ce=t=>{var n=Ge(),r=e(n,!0);l(e=>F(r,e),[()=>Re(o())]),f(t,n)},le=t=>{var n=Ke(),r=e(n);l(()=>F(r,`No log groups match “${T(M)??``}”.`)),f(t,n)},W=t=>{var i=Xe(),a=ee(i);N(a,21,()=>T(O),e=>e.arn??e.name,(t,i)=>{var a=Je(),o=d(a),s=d(o),p=e(s,!0),m=h(s,2),g=t=>{var n=qe(),r=e(n,!0);l(e=>F(r,e),[()=>ie(T(i).storedBytes)]),f(t,n)};b(m,e=>{T(i).storedBytes!==void 0&&e(g)}),u(o),u(a),l(e=>{x(o,`aria-current`,T(i).name===c()?`true`:void 0),A(o,1,`flex w-full items-center justify-between gap-2 rounded-md border px-2.5 py-1.5 text-left text-xs transition-colors ${e??``}`),F(p,T(i).name)},[()=>P(T(i).name)]),n(`click`,o,()=>r.onSelect?.(T(i).name)),f(t,a)}),u(a);var o=h(a,2),s=t=>{var n=Ye(),r=e(n);l((e,t)=>F(r,`Showing first ${e??``} of ${t??``} groups.`),[()=>V(S()),()=>V(T(D).length)]),f(t,n)};b(o,e=>{T(k)&&e(s)}),f(t,i)};b(U,e=>{y()!==null&&y()!==``?e(oe):p()&&i().length===0?e(se,1):i().length===0?e(ce,2):T(O).length===0?e(le,3):e(W,-1)}),u(L),l((e,t)=>{F(te,`${e??``} of ${t??``}`),ne.disabled=p(),F(re,p()?`Refreshing…`:`Refresh`),E(H,T(C))},[()=>V(T(D).length),()=>V(i().length)]),n(`click`,ne,()=>r.onRefresh?.()),n(`input`,H,e=>m(C,e.currentTarget.value,!0)),f(t,L),s()}r([`click`,`input`]);var $e=P(`<span data-testid="status-badge"><span aria-hidden="true"></span> </span>`);function et(e,t){let n={idle:`idle`,connecting:`connecting`,live:`live`,reconnecting:`reconnecting`,error:`error`,ended:`ended`},r={idle:`border-neutral-700 bg-neutral-800/60 text-neutral-400`,connecting:`border-sky-900 bg-sky-950/70 text-sky-300`,live:`border-emerald-900 bg-emerald-950/70 text-emerald-300`,reconnecting:`border-amber-900 bg-amber-950/70 text-amber-300`,error:`border-red-900 bg-red-950/70 text-red-300`,ended:`border-neutral-700 bg-neutral-800/60 text-neutral-400`},i={idle:`bg-neutral-500`,connecting:`bg-sky-400 animate-pulse`,live:`bg-emerald-400`,reconnecting:`bg-amber-400 animate-pulse`,error:`bg-red-400`,ended:`bg-neutral-500`},o=a(()=>r[t.status]),s=a(()=>i[t.status]),c=a(()=>n[t.status]);var p=$e(),m=d(p),g=h(m);u(p),l(()=>{x(p,`data-status`,t.status),A(p,1,`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium ${T(o)??``}`),A(m,1,`size-1.5 rounded-full ${T(s)??``}`),F(g,` ${T(c)??``}`)}),f(e,p)}var tt=5e3,nt=/\b(ERROR|FATAL|CRITICAL|CRIT|PANIC|EXCEPTION|TRACEBACK|SEVERE|FAILED|FAILURE)\b/,rt=/\b(WARN|WARNING)\b/,it=/\b(DEBUG|TRACE|VERBOSE)\b/;function at(e){let t=(e??``).toUpperCase();return nt.test(t)?`error`:rt.test(t)?`warn`:it.test(t)?`debug`:`info`}function ot(e){switch(e){case`error`:return`text-red-400`;case`warn`:return`text-amber-300`;case`debug`:return`text-neutral-500`;default:return`text-neutral-200`}}function st(e,t){return`${e.id??`no-id`}:${e.timestamp}:${t}`}function ct(e,t){let n=(t??``).trim().toLowerCase();return n===``||`${e.message??``} ${e.streamName??``}`.toLowerCase().includes(n)}function lt(e,t){return(t??``).trim()===``?e.slice():e.filter(e=>ct(e,t))}function ut(e){return Array.from({length:e})}var dt=class{capacity;#e;#t=0;#n=0;#r=0;constructor(e=tt){if(!Number.isInteger(e)||e<=0)throw RangeError(`capacity must be a positive integer, received ${e}`);this.capacity=e,this.#e=ut(e)}get size(){return this.#n}get dropped(){return this.#r}get full(){return this.#n===this.capacity}push(e){this.#n===this.capacity&&(this.#r+=1,this.#t=(this.#t+1)%this.capacity,--this.#n);let t=(this.#t+this.#n)%this.capacity;this.#e[t]=e,this.#n+=1}pushMany(e){for(let t of e)this.push(t)}toArray(){let e=ut(this.#n);for(let t=0;t<this.#n;t+=1)e[t]=this.#e[(this.#t+t)%this.capacity];return e}first(){return this.#n===0?void 0:this.#e[this.#t]}last(){return this.#n===0?void 0:this.#e[(this.#t+this.#n-1)%this.capacity]}clear(){this.#e=ut(this.capacity),this.#t=0,this.#n=0,this.#r=0}},ft=class{buffer;#e;#t=!1;constructor(e=tt){this.buffer=new dt(e),this.#e=new dt(e)}get paused(){return this.#t}get size(){return this.buffer.size}get pendingCount(){return this.#e.size}get droppedCount(){return this.buffer.dropped}push(e){if(this.#t){this.#e.pushMany(e);return}this.buffer.pushMany(e)}setPaused(e){return e===this.#t?[]:(this.#t=e,e?[]:this.flush())}pause(){this.#t=!0}resume(){return this.#t=!1,this.flush()}flush(){let e=this.#e.toArray();return this.#e.clear(),this.buffer.pushMany(e),e}toArray(){return this.buffer.toArray()}clear(){this.buffer.clear(),this.#e.clear()}};function pt(e){if(typeof e!=`string`)return null;let t=e.trim();if(t.length===0)return null;let n=t[0];if(n!==`{`&&n!==`[`)return null;try{let e=JSON.parse(t);return typeof e!=`object`||!e?null:e}catch{return null}}function mt(e,t={}){let{prettyJson:n=!0}=t,r=pt(e);return r===null||!n?{text:e,isJson:r!==null,value:r}:{text:JSON.stringify(r,null,2),isJson:!0,value:r}}var ht=/^-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function gt(e){let t=[],n=0,r=(e,n)=>{n.length>0&&t.push({type:e,text:n})};for(;n<e.length;){let t=e[n];if(t===` `||t===`
2
+ `||t===` `||t===`\r`){let t=n;for(;t<e.length&&`
3
+ \r`.includes(e[t]);)t+=1;r(`whitespace`,e.slice(n,t)),n=t;continue}if(t===`"`){let t=n+1;for(;t<e.length;){if(e[t]===`\\`){t+=2;continue}if(e[t]===`"`)break;t+=1}let i=e.slice(n,Math.min(t+1,e.length)),a=n+i.length;for(;a<e.length&&`
4
+ \r`.includes(e[a]);)a+=1;r(e[a]===`:`?`key`:`string`,i),n+=i.length;continue}if(t===`{`||t===`}`||t===`[`||t===`]`||t===`,`||t===`:`){r(`punctuation`,t),n+=1;continue}if(e.startsWith(`true`,n)||e.startsWith(`false`,n)){let t=e.startsWith(`true`,n)?`true`:`false`;r(`boolean`,t),n+=t.length;continue}if(e.startsWith(`null`,n)){r(`null`,`null`),n+=4;continue}let i=n;for(;i<e.length&&!`{}[],:"
5
+ \r`.includes(e[i]);)i+=1;let a=e.slice(n,Math.max(i,n+1));r(ht.test(a)?`number`:`other`,a),n+=a.length}return t}function _t(e){if(typeof e!=`string`)return null;let t=pt(e);if(t!==null)return t;for(let t=0;t<e.length;t+=1){let n=e[t];if(n!==`{`&&n!==`[`)continue;let r=n===`{`?`}`:`]`,i=0,a=!1,o=!1;for(let s=t;s<e.length;s+=1){let c=e[s];if(a){o?o=!1:c===`\\`?o=!0:c===`"`&&(a=!1);continue}if(c===`"`){a=!0;continue}if(c===n)i+=1;else if(c===r&&(--i,i===0)){let n=e.slice(t,s+1);try{let e=JSON.parse(n);if(typeof e==`object`&&e)return e}catch{}break}}}return null}var vt=P(`<span class="text-xs text-amber-300" data-testid="pending-count"> </span>`),yt=P(`<span class="text-xs text-amber-300/80" data-testid="dropped-count"> </span>`),bt=P(`<span class="text-[0.6875rem] text-amber-400/80" data-testid="window-clamped">14-day limit</span>`),xt=P(`<span class="text-[0.6875rem] text-emerald-400/80" data-testid="window-complete">window complete</span>`),St=P(`<p role="alert" data-testid="stream-error" class="border-b border-red-900 bg-red-950/50 px-3 py-2 text-xs leading-5 text-red-300"> </p>`),Ct=P(`<p class="px-3 py-6 text-sm text-neutral-500" data-testid="viewer-idle">Select a log group to start tailing.</p>`),wt=P(`<p class="px-3 py-6 text-sm text-neutral-500" data-testid="viewer-empty"> </p>`),Tt=P(`<span class="shrink-0 text-neutral-600" aria-hidden="true"> </span>`),Et=P(`<span> </span>`),Dt=P(`<span class="w-full whitespace-pre text-xs text-neutral-300" data-testid="log-json-expanded"></span>`),Ot=P(`<li data-testid="log-line"><span class="w-[7.5rem] shrink-0 text-neutral-500"> </span> <span class="shrink-0 truncate text-sky-400/80" data-testid="log-stream"> </span> <!> <span data-testid="log-message"><!></span> <!></li>`),kt=P(`<div data-testid="log-canvas"><ol class="font-mono text-xs leading-5" data-testid="log-lines"></ol> <!></div>`),At=P(`<section class="flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-neutral-800 bg-neutral-950"><div class="flex flex-wrap items-center gap-x-3 gap-y-2 border-b border-neutral-800 bg-neutral-900/40 px-3 py-2"><!> <span class="text-xs text-neutral-400" data-testid="visible-count"> </span> <span class="text-xs text-neutral-500" data-testid="received-count"> </span> <!> <!> <span data-testid="window-chip"> </span> <!> <!> <div class="ml-auto flex flex-wrap items-center gap-2"><input type="search" aria-label="Filter log lines" placeholder="Filter lines" class="w-40 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs text-neutral-100 outline-none transition-colors placeholder:text-neutral-600 hover:border-neutral-700 focus:border-sky-600"/> <button type="button" title="Wrap long lines instead of scrolling sideways" data-testid="wrap-toggle">Wrap</button> <button type="button" title="Pretty-print JSON log entries (off: click a line to open its JSON)" data-testid="json-toggle">JSON</button> <button type="button" class="rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100"> </button> <button type="button" class="rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100">Clear</button> <button type="button">Auto-scroll</button></div></div> <!> <div class="min-h-0 min-w-0 flex-1 overflow-auto bg-neutral-950" data-testid="log-scroller"><!></div></section>`);function jt(r,c){_(c,!0);let v=w(c,`lines`,19,()=>[]),S=w(c,`status`,3,`idle`),k=w(c,`error`,3,null),M=w(c,`region`,3,``),P=w(c,`group`,3,null),I=w(c,`filter`,3,``),L=w(c,`paused`,3,!1),R=w(c,`autoScroll`,3,!0),z=w(c,`pendingCount`,3,0),B=w(c,`droppedCount`,3,0),re=w(c,`receivedCount`,3,0),ie=w(c,`mode`,3,`live`),ae=w(c,`ready`,3,null),H=w(c,`endReason`,3,null),U=J(7.5),oe=J(.75),se=J(.5),ce=J(ue.minRem),le=J(ue.maxRem),G=J(ue.defaultRem);function K(e){try{return typeof localStorage>`u`?null:localStorage.getItem(e)}catch{return null}}function fe(e,t){try{if(typeof localStorage>`u`)return;localStorage.setItem(e,t)}catch{}}let q=g(!1),Y=g(!0),X=g(o(G));O(()=>{m(q,K(W.wrap)===`true`),m(Y,K(W.jsonView)!==`false`),m(X,de(K(W.prefixWidth),G,ce,le),!0)});let he=a(()=>lt(v(),I())),ge=a(()=>T(he).map((e,t)=>{let n=at(e.message),r=mt(e.message,{prettyJson:T(Y)}),i=ot(n),a=null;if(!T(Y)){let t=_t(e.message);t!==null&&(a=JSON.stringify(t,null,2))}return{key:st(e,t),time:te(e.timestamp),timestamp:ne(e.timestamp),streamName:e.streamName,message:r.text,tokens:T(Y)&&r.isJson?gt(r.text):null,expandable:a,level:n,levelClass:i}})),Z=g(null);i(()=>{let e=T(ge).length;R()&&T(Z)!==null&&e!==0&&(T(Z).scrollTop=T(Z).scrollHeight)});let Q=a(()=>k()===null?null:Ve(M(),P(),k().message)),_e=a(()=>P()===null||P()===``?`Select a log group to start tailing.`:I().trim()===``?`Waiting for events from ${P()}\u2026`:`No lines match the filter.`),ve=a(()=>R()?`text-sky-300`:`text-neutral-400`),$=a(()=>ye(ae(),Date.now())),be=a(()=>ie()===`historic`&&H()===`window-complete`),xe=a(()=>T(q)?`text-sky-300`:`text-neutral-400`),Se=a(()=>T(Y)?`text-sky-300`:`text-neutral-400`),Ce=a(()=>T(q)?`w-full`:`w-max min-w-full`),we=a(()=>T(q)?`whitespace-pre-wrap break-words`:`whitespace-pre`),Te=a(()=>oe+U+se+T(X)),Ee=a(()=>`max-width: ${pe(T(X))}`),De=g(o({}));function Oe(e){return T(De)[e]===!0}function ke(e){if(T(De)[e]===!0){let{[e]:t,...n}=T(De);m(De,n,!0);return}m(De,{...T(De),[e]:!0},!0)}function Ae(e){switch(e){case`key`:return`text-sky-300`;case`string`:return`text-emerald-300`;case`number`:return`text-amber-300`;case`boolean`:return`text-fuchsia-300`;case`null`:return`text-neutral-500`;case`punctuation`:return`text-neutral-600`;default:return``}}function je(){fe(W.prefixWidth,String(Math.round(T(X))))}function Me(){m(q,!T(q)),fe(W.wrap,String(T(q)))}function Ne(){m(Y,!T(Y)),fe(W.jsonView,String(T(Y)))}var Pe=At(),Fe=d(Pe),Ie=d(Fe);et(Ie,{get status(){return S()}});var Le=h(Ie,2),Re=e(Le),ze=h(Le,2),Be=e(ze),He=h(ze,2),Ue=t=>{var n=vt(),r=e(n);l(e=>F(r,`${e??``} buffered`),[()=>V(z())]),f(t,n)};b(He,e=>{z()>0&&e(Ue)});var We=h(He,2),Ge=t=>{var n=yt(),r=e(n);l(e=>F(r,`${e??``} dropped`),[()=>V(B())]),f(t,n)};b(We,e=>{B()>0&&e(Ge)});var Ke=h(We,2),qe=e(Ke,!0),Je=h(Ke,2),Ye=e=>{var t=bt();f(e,t)};b(Je,e=>{T($).clamped&&e(Ye)});var Xe=h(Je,2),Ze=e=>{var t=xt();f(e,t)};b(Xe,e=>{T(be)&&e(Ze)});var Qe=h(Xe,2),$e=d(Qe);j($e);var tt=h($e,2),nt=h(tt,2),rt=h(nt,2),it=e(rt,!0),ct=h(rt,2),ut=h(ct,2);u(Qe),u(Fe);var dt=h(Fe,2),ft=t=>{var n=St(),r=e(n,!0);l(()=>F(r,T(Q))),f(t,n)};b(dt,e=>{T(Q)!==null&&e(ft)});var pt=h(dt,2),ht=d(pt),jt=e=>{var t=Ct();f(e,t)},Mt=t=>{var n=wt(),r=e(n,!0);l(()=>F(r,T(_e))),f(t,n)},Nt=r=>{var i=kt(),o=d(i);N(o,21,()=>T(ge),e=>e.key,(r,i)=>{let o=a(()=>T(i).expandable!==null),s=a(()=>T(o)&&Oe(T(i).key));var c=Ot(),m=d(c),g=e(m,!0),_=h(m,2),v=e(_,!0),y=h(_,2),S=t=>{var n=Tt(),r=e(n,!0);l(()=>F(r,T(s)?`▾`:`▸`)),f(t,n)};b(y,e=>{T(o)&&e(S)});var w=h(y,2),E=d(w),O=n=>{var r=t(),a=ee(r);N(a,19,()=>T(i).tokens,(e,t)=>`${T(i).key}-${t}`,(t,n)=>{var r=Et(),i=e(r,!0);l(e=>{A(r,1,e),F(i,T(n).text)},[()=>D(Ae(T(n).type))]),f(t,r)}),f(n,r)},k=e=>{var t=p();l(()=>F(t,T(i).message)),f(e,t)};b(E,e=>{T(i).tokens===null?e(k,-1):e(O)}),u(w);var j=h(w,2),M=t=>{var n=Dt();N(n,23,()=>gt(T(i).expandable),(e,t)=>`${T(i).key}-json-${t}`,(t,n)=>{var r=Et(),i=e(r,!0);l(e=>{A(r,1,e),F(i,T(n).text)},[()=>D(Ae(T(n).type))]),f(t,r)}),u(n),f(t,n)};b(j,e=>{T(s)&&T(i).expandable!==null&&e(M)}),u(c),l(()=>{A(c,1,`flex flex-wrap items-baseline gap-2 px-3 py-0.5 hover:bg-neutral-900/60 ${T(Ce)??``} ${T(o)?`cursor-pointer`:``}`),x(c,`data-level`,T(i).level),x(c,`data-expandable`,T(o)?`true`:void 0),x(c,`data-expanded`,T(s)?`true`:void 0),x(c,`role`,T(o)?`button`:void 0),x(c,`tabindex`,T(o)?0:void 0),x(c,`aria-expanded`,T(o)?T(s):void 0),x(c,`title`,T(o)?T(s)?`Hide the JSON in this line`:`Show this line as JSON`:void 0),x(m,`title`,T(i).timestamp),F(g,T(i).time),C(_,T(Ee)),x(_,`title`,T(i).streamName??``),F(v,T(i).streamName??``),A(w,1,`${T(we)??``} ${T(i).levelClass??``}`)}),n(`click`,c,function(...e){(T(o)?()=>ke(T(i).key):void 0)?.apply(this,e)}),n(`keydown`,c,function(...e){(T(o)?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),ke(T(i).key))}:void 0)?.apply(this,e)}),f(r,c)}),u(o);var s=h(o,2);{let e=a(()=>T(Te)-4);me(s,{label:`Resize prefix column`,get width(){return T(X)},get min(){return ce},get max(){return le},testId:`prefix-resizer`,onChange:e=>m(X,e,!0),onCommit:()=>je(),class:`absolute inset-y-0 w-2`,get style(){return`left: ${T(e)??``}px`}})}u(i),l(()=>A(i,1,`relative min-h-full ${T(Ce)??``}`)),f(r,i)};b(ht,e=>{P()===null||P()===``?e(jt):T(ge).length===0?e(Mt,1):e(Nt,-1)}),u(pt),y(pt,e=>m(Z,e),()=>T(Z)),u(Pe),l((e,t)=>{F(Re,`${e??``} shown`),F(Be,`${t??``} received`),A(Ke,1,`rounded-full border px-2 py-0.5 text-[0.6875rem] font-medium ${T($).mode===`historic`?`border-amber-900 bg-amber-950/40 text-amber-300`:`border-neutral-800 bg-neutral-900 text-neutral-400`}`),x(Ke,`title`,T($).title),F(qe,T($).label),E($e,I()),x(tt,`aria-pressed`,T(q)),A(tt,1,`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${T(xe)??``}`),x(nt,`aria-pressed`,T(Y)),A(nt,1,`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${T(Se)??``}`),x(rt,`aria-pressed`,L()),F(it,L()?`Resume`:`Pause`),x(ut,`aria-pressed`,R()),A(ut,1,`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${T(ve)??``}`)},[()=>V(T(he).length),()=>V(re())]),n(`input`,$e,e=>c.onFilterChange?.(e.currentTarget.value)),n(`click`,tt,Me),n(`click`,nt,Ne),n(`click`,rt,()=>c.onPauseToggle?.()),n(`click`,ct,()=>c.onClear?.()),n(`click`,ut,()=>c.onAutoScrollToggle?.()),f(r,Pe),s()}r([`input`,`click`,`keydown`]);var Mt=P(`<option> </option>`),Nt=P(`<div class="flex flex-col gap-1.5"><label class="text-[0.6875rem] font-semibold uppercase tracking-wider text-neutral-500"> </label> <select class="w-full rounded-md border border-neutral-800 bg-neutral-900 px-2.5 py-1.5 text-sm text-neutral-100 outline-none transition-colors hover:border-neutral-700 focus:border-sky-600 disabled:cursor-not-allowed disabled:opacity-50"></select></div>`);function Pt(t,r){_(r,!0);let i=w(r,`regions`,3,Oe),o=w(r,`value`,3,``),c=w(r,`disabled`,3,!1),p=w(r,`label`,3,`Region`),m=w(r,`id`,3,`region-select`),g=a(()=>o()!==``&&!i().includes(o())?[o(),...i()]:[...i()]);var v=Nt(),y=d(v),b=e(y,!0),C=h(y,2);N(C,20,()=>T(g),e=>e,(t,n)=>{var r=Mt(),i=e(r,!0),a={};l(()=>{F(i,n),a!==(a=n)&&(r.value=(r.__value=a)??``)}),f(t,r)}),u(C);var E;M(C),u(v),l(()=>{x(y,`for`,m()),F(b,p()),x(C,`id`,m()),C.disabled=c(),E!==(E=o())&&(C.value=(C.__value=E)??``,S(C,E))}),n(`change`,C,e=>r.onchange?.(e.currentTarget.value)),f(t,v),s()}r([`change`]);function Ft(e){return new EventSource(e)}function It(e,t=``){let n=new URLSearchParams;return n.set(`region`,e.region),n.set(`group`,e.group),e.filterPattern&&n.set(`filterPattern`,e.filterPattern),e.mode===`historic`?(n.set(`mode`,`historic`),e.range&&n.set(`range`,e.range),e.from!==void 0&&e.from!==``&&n.set(`from`,String(e.from)),e.to!==void 0&&e.to!==``&&n.set(`to`,String(e.to))):e.mode===`live`&&n.set(`mode`,`live`),e.startTime!==void 0&&e.startTime!==``&&n.set(`startTime`,String(e.startTime)),e.lookback&&n.set(`lookback`,e.lookback),typeof e.poll==`number`&&Number.isFinite(e.poll)&&n.set(`poll`,String(e.poll)),`${t}/api/stream?${n.toString()}`}function Lt(e){try{return JSON.parse(e)}catch{return null}}var Rt=class{#e=g(`idle`);get status(){return T(this.#e)}set status(e){m(this.#e,e,!0)}#t=g(null);get lastError(){return T(this.#t)}set lastError(e){m(this.#t,e,!0)}#n=g(null);get ready(){return T(this.#n)}set ready(e){m(this.#n,e,!0)}#r=g(null);get target(){return T(this.#r)}set target(e){m(this.#r,e,!0)}#i=g([]);get lines(){return T(this.#i)}set lines(e){m(this.#i,e)}#a=g(0);get receivedCount(){return T(this.#a)}set receivedCount(e){m(this.#a,e,!0)}#o=g(0);get droppedCount(){return T(this.#o)}set droppedCount(e){m(this.#o,e,!0)}#s=g(0);get pendingCount(){return T(this.#s)}set pendingCount(e){m(this.#s,e,!0)}#c=g(!1);get paused(){return T(this.#c)}set paused(e){m(this.#c,e,!0)}#l=g(null);get lastEventAt(){return T(this.#l)}set lastEventAt(e){m(this.#l,e,!0)}#u=g(null);get endReason(){return T(this.#u)}set endReason(e){m(this.#u,e,!0)}#d;#f=null;#p=[];#m=null;#h;#g;#_;#v;#y;constructor(e={}){this.#d=new ft(e.capacity??5e3),this.#h=e.createEventSource??Ft,this.#g=e.reconnectDelayMs??1e3,this.#_=e.url??(e=>It(e)),this.#v=e.schedule??((e,t)=>setTimeout(e,t)),this.#y=e.cancel??(e=>clearTimeout(e))}start(e){this.#S(),this.#E(),this.clear(),this.status=`connecting`,this.lastError=null,this.ready=null,this.endReason=null,this.target={...e},this.#b(!1)}stop(){this.#E(),this.#S(),this.target=null,this.status=`idle`}pause(){this.#d.pause(),this.paused=!0}resume(){this.#d.resume(),this.paused=!1,this.#O()}togglePause(){this.paused?this.resume():this.pause()}clear(){this.#d.clear(),this.paused=!1,this.lines=[],this.receivedCount=0,this.droppedCount=0,this.pendingCount=0}get size(){return this.#d.size}#b(e){let t=this.target;if(t===null)return;this.#S(),this.status=e?`reconnecting`:`connecting`;let n;try{n=this.#h(this.#_(t))}catch(e){this.status=`error`,this.lastError={message:e instanceof Error?e.message:String(e)};return}this.#f=n,this.#x(n,`open`,()=>{this.status=`live`,this.lastError=null}),this.#x(n,`error`,e=>this.#C(e)),this.#x(n,`ready`,e=>this.#k(e)),this.#x(n,`log`,e=>this.#A(e)),this.#x(n,`ping`,e=>this.#j(e)),this.#x(n,`end`,e=>this.#M(e))}#x(e,t,n){e.addEventListener(t,n),this.#p.push({source:e,type:t,handler:n})}#S(){for(let e of this.#p)e.source.removeEventListener(e.type,e.handler);this.#p=[],this.#f?.close(),this.#f=null}#C(e){let t=typeof e.data==`string`?e.data.trim():``;if(t===``){this.#w();return}this.lastError=Lt(t)??{message:t},this.status=`error`}#w(){let e=this.#f;e!==null&&(this.status=`reconnecting`,e.readyState===2&&this.#T())}#T(){this.#m===null&&(this.#m=this.#v(()=>{this.#m=null,this.target!==null&&this.#b(!0)},this.#g))}#E(){this.#m!==null&&(this.#y(this.#m),this.#m=null)}#D(){this.lastEventAt=Date.now(),this.status!==`ended`&&(this.status=`live`)}#O(){this.lines=this.#d.toArray(),this.pendingCount=this.#d.pendingCount,this.droppedCount=this.#d.droppedCount}#k(e){let t=Lt(e.data);t!==null&&(this.ready=t),this.#D()}#A(e){let t=Lt(e.data),n=t!==null&&Array.isArray(t.events)?t.events:[];n.length!==0&&(this.#d.push(n),this.#O(),this.receivedCount+=n.length,this.#D())}#j(e){let t=Lt(e.data);this.lastEventAt=t?.at??Date.now(),this.status!==`ended`&&(this.status=`live`)}#M(e){let t=Lt(e.data);this.endReason=t?.reason??null,this.status=`ended`,this.#E(),this.#S()}},zt=P(`<span class="text-xs text-emerald-400/80">API ok</span>`),Bt=P(`<p role="alert" data-testid="boot-error" class="rounded-md border border-red-900 bg-red-950/50 px-3 py-2 text-xs leading-5 text-red-300"> </p>`),Vt=P(`<div class="flex flex-wrap items-center gap-x-3 gap-y-2"><span class="text-[0.6875rem] font-semibold uppercase tracking-wider text-neutral-500">Watching</span> <span class="max-w-[22rem] truncate rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 font-mono text-xs text-neutral-200"> </span> <span class="text-xs text-neutral-500">in</span> <span class="font-mono text-xs text-neutral-300"> </span> <!> <!></div> <!> <!> <div class="flex min-h-0 min-w-0 flex-1 flex-col gap-3 lg:flex-row"><div class="flex min-h-0 w-full flex-col gap-3 rounded-lg border border-neutral-800 bg-neutral-950/60 p-3 lg:shrink-0" data-testid="sidebar"><!> <!></div> <!> <div class="flex min-h-0 min-w-0 flex-1 flex-col"><!></div></div>`,1);function Ht(t,n){_(n,!0);let r=new Rt,c=g(o(R.url.searchParams.get(`region`)??``)),p=g(o(R.url.searchParams.get(`mode`)===`historic`?`historic`:`live`)),v=g(o(R.url.searchParams.get(`range`)??`15m`)),y=g(o(oe(R.url.searchParams.get(`from`)))),x=g(o(oe(R.url.searchParams.get(`to`)))),S=g(!1),w=g(o([...Oe])),E=g(o([])),D=g(!1),k=g(null),A=g(null),j=g(null),M=g(null),N=g(``),P=g(!0),I=a(()=>r.target?.group??null),z=g(0),B=g(o(J(G.defaultRem))),te=a(()=>T(z)===0?J(G.defaultRem):Math.max(J(G.minRem),T(z)*G.maxVw/100)),ne=J(G.minRem),re=a(()=>`width: min(${T(B)}px, ${G.maxVw}vw)`);function ie(e){try{return typeof localStorage>`u`?null:localStorage.getItem(e)}catch{return null}}function V(){try{if(typeof localStorage>`u`)return;localStorage.setItem(W.sidebarWidth,String(Math.round(T(B))))}catch{}}O(()=>{ae();let e=()=>{m(z,window.innerWidth,!0)};return e(),m(B,K(de(ie(W.sidebarWidth),J(G.defaultRem),J(G.minRem),window.innerWidth*G.maxVw/100),J(G.minRem),Math.max(J(G.minRem),window.innerWidth*G.maxVw/100)),!0),window.addEventListener(`resize`,e),()=>{r.stop(),window.removeEventListener(`resize`,e)}});async function ae(){let e=R.url.searchParams.get(`group`);await H(),await U(T(c)),e!==null&&e!==``?(m(S,T(p)===`historic`),ce(e)):pe(T(c),null)}async function H(){try{let[e,t]=await Promise.all([Fe(),Ie()]);e.regions.length>0&&m(w,e.regions,!0),T(c)===``&&m(c,e.defaultRegion||T(w)[0]||Oe[0],!0),m(A,t,!0),m(j,t.endpoint,!0)}catch(e){m(M,`Could not reach the watch-stream API. ${Y(e)}`),T(c)===``&&m(c,Oe[0],!0)}}async function U(e){m(D,!0),m(k,null);try{let t=await Le({region:e});if(e!==T(c))return;t.endpoint!==null&&m(j,t.endpoint,!0),m(E,t.groups,!0)}catch(t){if(e!==T(c))return;m(E,[],!0),m(k,Be(e,t),!0)}finally{e===T(c)&&m(D,!1)}}function oe(e){if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isFinite(t)?t:null}function se(){return T(p)===`live`?{mode:`live`}:T(v)===``&&T(y)!==null&&T(x)!==null?{mode:`historic`,from:T(y),to:T(x)}:{mode:`historic`,range:T(v)===``?`15m`:T(v)}}function ce(e){T(c)!==``&&e!==``&&(r.start({region:T(c),group:e,...se()}),pe(T(c),e))}function ue(e){m(p,e.mode,!0),m(v,e.range,!0),m(y,e.from,!0),m(x,e.to,!0),pe(T(c),T(I)),T(I)!==null&&(m(S,e.mode===`historic`),r.start({region:T(c),group:T(I),...se()}))}function fe(e){e!==``&&e!==T(c)&&(m(c,e,!0),r.stop(),m(E,[],!0),pe(e,null),U(e))}function q(){U(T(c))}function pe(e,t){let n=new URL(R.url);e===``?n.searchParams.delete(`region`):n.searchParams.set(`region`,e),t===null||t===``?n.searchParams.delete(`group`):n.searchParams.set(`group`,t),T(p)===`live`?(n.searchParams.delete(`mode`),n.searchParams.delete(`range`),n.searchParams.delete(`from`),n.searchParams.delete(`to`)):(n.searchParams.set(`mode`,`historic`),n.searchParams.delete(`from`),n.searchParams.delete(`to`),n.searchParams.delete(`range`),T(v)===``&&T(y)!==null&&T(x)!==null?(n.searchParams.set(`from`,String(T(y))),n.searchParams.set(`to`,String(T(x)))):n.searchParams.set(`range`,T(v)===``?`15m`:T(v))),n.href!==R.url.href&&L(n,{})}i(()=>{(r.ready!==null||r.status===`error`)&&m(S,!1)});function Y(e){return e instanceof Error&&e.message!==``?e.message:String(e)}var X=Vt(),he=ee(X),ge=h(d(he),2),Z=e(ge,!0),Q=h(ge,4),_e=e(Q,!0),ve=h(Q,2);{let e=a(()=>T(A)?.credentials??null);le(ve,{get endpoint(){return T(j)},get credentials(){return T(e)}})}var $=h(ve,2),ye=e=>{var t=zt();f(e,t)};b($,e=>{T(A)!==null&&T(A).ok&&e(ye)}),u(he);var be=h(he,2),xe=t=>{var n=Bt(),r=e(n,!0);l(()=>F(r,T(M))),f(t,n)};b(be,e=>{T(M)!==null&&e(xe)});var Se=h(be,2);{let e=a(()=>T(I)===null);De(Se,{get mode(){return T(p)},get range(){return T(v)},get from(){return T(y)},get to(){return T(x)},get loading(){return T(S)},get disabled(){return T(e)},onApply:ue})}var Ce=h(Se,2),we=d(Ce),Te=d(we);Pt(Te,{get regions(){return T(w)},get value(){return T(c)},onchange:fe}),Qe(h(Te,2),{get groups(){return T(E)},get region(){return T(c)},get selected(){return T(I)},get loading(){return T(D)},get error(){return T(k)},onSelect:ce,onRefresh:q}),u(we);var Ee=h(we,2);me(Ee,{label:`Resize group list`,get width(){return T(B)},get min(){return ne},get max(){return T(te)},testId:`sidebar-resizer`,onChange:e=>m(B,e,!0),onCommit:()=>V(),class:`hidden lg:block lg:w-2`});var ke=h(Ee,2);jt(d(ke),{get lines(){return r.lines},get status(){return r.status},get error(){return r.lastError},get mode(){return T(p)},get ready(){return r.ready},get endReason(){return r.endReason},get region(){return T(c)},get group(){return T(I)},get filter(){return T(N)},get paused(){return r.paused},get autoScroll(){return T(P)},get pendingCount(){return r.pendingCount},get droppedCount(){return r.droppedCount},get receivedCount(){return r.receivedCount},onFilterChange:e=>m(N,e,!0),onPauseToggle:()=>r.togglePause(),onClear:()=>r.clear(),onAutoScrollToggle:()=>m(P,!T(P))}),u(ke),u(Ce),l(()=>{F(Z,T(I)??`no group selected`),F(_e,T(c)===``?`resolving region…`:T(c)),C(we,T(re))}),f(t,X),s()}export{Ht as component};
@@ -1 +1 @@
1
- {"version":"1789167174727"}
1
+ {"version":"1789172167839"}
Binary file
Binary file
package/build/handler.js CHANGED
@@ -2,9 +2,9 @@ import './shims.js';
2
2
  import 'node:fs';
3
3
  import 'node:path';
4
4
  import 'node:process';
5
- export { h as handler } from './server/chunks/handler-CuWqZDuC.js';
6
- import './server/chunks/index.js-NHTL74z2.js';
7
- import './server/chunks/manifest.js-8g4gjxwf.js';
5
+ export { h as handler } from './server/chunks/handler-DS32NMsJ.js';
6
+ import './server/chunks/index.js-HHu-yOEK.js';
7
+ import './server/chunks/manifest.js-BUrA7Zyr.js';
8
8
  import './env.js';
9
9
  import 'node:buffer';
10
10
  import 'node:crypto';
@@ -16,7 +16,7 @@ import './server/chunks/chunks/shared.js-CgjUIvRK.js';
16
16
  import './server/chunks/chunks/uneval.js-DaakSYFQ.js';
17
17
  import './server/chunks/chunks/utils.js-BIlHjgGW.js';
18
18
  import 'node:url';
19
- import './server/chunks/chunks/internal.js-B-DZpK-L.js';
19
+ import './server/chunks/chunks/internal.js-Cc3oBhL-.js';
20
20
  import './server/chunks/chunks/server.js-ByNB8uti.js';
21
21
  import './server/chunks/chunks/internal2.js-DZ8ZzzjN.js';
22
22
  import './server/chunks/chunks/shared-server.js-Dn5XheXH.js';
package/build/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'node:http';
2
2
  import fs__default from 'node:fs';
3
3
  import process from 'node:process';
4
- import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-CuWqZDuC.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DS32NMsJ.js';
5
5
  import { env, timeout_env } from './env.js';
6
6
  import { rm } from 'node:fs/promises';
7
7
  import './shims.js';
@@ -14,13 +14,13 @@ import 'node:stream';
14
14
  import './server/chunks/chunks/shared.js-CgjUIvRK.js';
15
15
  import './server/chunks/chunks/uneval.js-DaakSYFQ.js';
16
16
  import './server/chunks/chunks/utils.js-BIlHjgGW.js';
17
- import './server/chunks/index.js-NHTL74z2.js';
18
- import './server/chunks/chunks/internal.js-B-DZpK-L.js';
17
+ import './server/chunks/index.js-HHu-yOEK.js';
18
+ import './server/chunks/chunks/internal.js-Cc3oBhL-.js';
19
19
  import './server/chunks/chunks/server.js-ByNB8uti.js';
20
20
  import './server/chunks/chunks/internal2.js-DZ8ZzzjN.js';
21
21
  import './server/chunks/chunks/shared-server.js-Dn5XheXH.js';
22
22
  import './server/chunks/chunks/exports.js-CvFPPbaH.js';
23
- import './server/chunks/manifest.js-8g4gjxwf.js';
23
+ import './server/chunks/manifest.js-BUrA7Zyr.js';
24
24
  import 'node:url';
25
25
 
26
26
  const path = env('SOCKET_PATH', false);
@@ -1,6 +1,7 @@
1
1
  import { b as private_env } from './shared-server.js-Dn5XheXH.js';
2
2
  import { j as json } from './utils.js-BIlHjgGW.js';
3
3
  import { CloudWatchLogsClient } from '@aws-sdk/client-cloudwatch-logs';
4
+ import { STSClient } from '@aws-sdk/client-sts';
4
5
  import { existsSync } from 'node:fs';
5
6
  import { join } from 'node:path';
6
7
 
@@ -144,16 +145,6 @@ function createLogsClient(config) {
144
145
  if (config.credentials === "emulator-default") options.credentials = EMULATOR_CREDENTIALS;
145
146
  return new CloudWatchLogsClient(options);
146
147
  }
147
- /**
148
- * Resolves the region to show in responses.
149
- *
150
- * Returns the requested region when there is one, otherwise asks the client,
151
- * whose region provider reads `AWS_REGION`, the profile region and finally the
152
- * `[default]` profile. The provider call is local (no network request) and it
153
- * throws when nothing can be found, so any failure falls back to
154
- * {@link FALLBACK_REGION}: this value is informational and must never break a
155
- * response.
156
- */
157
148
  async function resolveEffectiveRegion(client, config) {
158
149
  if (config.region !== null) return config.region;
159
150
  try {
@@ -257,6 +248,21 @@ function describeAwsError(error) {
257
248
  code
258
249
  };
259
250
  }
251
+ /**
252
+ * Creates an STS client with the same resolved settings as the Logs client.
253
+ *
254
+ * Used for `GetCallerIdentity`, which answers the question the UI cannot: whose
255
+ * credentials are these, if they work at all.
256
+ */
257
+ function createStsClient(config) {
258
+ const options = {
259
+ region: config.region ?? void 0,
260
+ maxAttempts: 2
261
+ };
262
+ if (config.endpoint !== null) options.endpoint = config.endpoint;
263
+ if (config.credentials === "emulator-default") options.credentials = EMULATOR_CREDENTIALS;
264
+ return new STSClient(options);
265
+ }
260
266
  //#endregion
261
267
  //#region src/lib/server/env.ts
262
268
  /** Name of the git-ignored file that holds local (floci) connection settings. */
@@ -312,5 +318,5 @@ function readEnv() {
312
318
  };
313
319
  }
314
320
 
315
- export { REGION_PARAM_HINT as R, apiError as a, readEnv as b, createLogsClient as c, resolveEffectiveRegion as d, describeAwsError as e, parseRegionParam as p, resolveAwsConfig as r };
316
- //# sourceMappingURL=env2.js-D7xrfc37.js.map
321
+ export { REGION_PARAM_HINT as R, apiError as a, readEnv as b, createLogsClient as c, resolveEffectiveRegion as d, describeAwsError as e, createStsClient as f, parseRegionParam as p, resolveAwsConfig as r };
322
+ //# sourceMappingURL=env2.js-DXveJt1Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env2.js-DXveJt1Y.js","sources":["../../../../.svelte-kit/output/server/chunks/env2.js"],"sourcesContent":["import { t as private_env } from \"./shared-server.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { CloudWatchLogsClient } from \"@aws-sdk/client-cloudwatch-logs\";\nimport { STSClient } from \"@aws-sdk/client-sts\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/lib/server/api.ts\n/**\n* Builds a JSON error response that never leaks stack traces.\n*\n* Use 400 for bad input, 502 for upstream CloudWatch Logs failures and 499\n* when the client aborted the request.\n*/\nfunction apiError(status, message, code, details) {\n\tconst body = { error: message };\n\tif (code !== void 0) body.code = code;\n\tif (details !== void 0 && details.length > 0) body.details = details;\n\treturn json(body, { status });\n}\n//#endregion\n//#region src/lib/server/aws.ts\n/**\n* Throwaway credentials for local emulators only.\n*\n* floci and LocalStack verify the request signature but accept any non-empty\n* key pair, so these keys make a local endpoint work out of the box.\n*/\nvar EMULATOR_CREDENTIALS = {\n\taccessKeyId: \"test\",\n\tsecretAccessKey: \"test\"\n};\n/** Environment variables that indicate that ambient credentials are configured. */\nvar CREDENTIAL_ENV_KEYS = [\n\t\"AWS_ACCESS_KEY_ID\",\n\t\"AWS_PROFILE\",\n\t\"AWS_SHARED_CREDENTIALS_FILE\",\n\t\"AWS_CONFIG_FILE\",\n\t\"AWS_WEB_IDENTITY_TOKEN_FILE\",\n\t\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\",\n\t\"AWS_CONTAINER_CREDENTIALS_FULL_URI\",\n\t\"AWS_ROLE_ARN\"\n];\n/**\n* Display-only region used when nothing else can be resolved. It is never sent\n* to the SDK.\n*/\nvar FALLBACK_REGION = \"us-east-1\";\n/** User-facing hint for a malformed `region` query parameter. */\nvar REGION_PARAM_HINT = \"Invalid region: expected a region code such as us-east-1 or us-west-2-lax-1a\";\n/** Region codes and local-zone codes only: lowercase letters, digits and dashes. */\nvar REGION_PATTERN = /^[a-z0-9-]{1,64}$/;\n/** Hosts that are always considered local, including the IPv6 loopback form. */\nvar LOCAL_HOSTS = /* @__PURE__ */ new Set([\n\t\"localhost\",\n\t\"127.0.0.1\",\n\t\"0.0.0.0\",\n\t\"::1\",\n\t\"[::1]\"\n]);\n/** Substrings that identify a known local AWS emulator. */\nvar LOCAL_HINTS = [\"floci\", \"localstack\"];\nvar MAX_DETAIL_LENGTH = 300;\n/** Trims a value and treats blank strings as absent. */\nfunction normalize(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\treturn trimmed.length > 0 ? trimmed : null;\n}\n/** Extracts a lowercase host from an endpoint, tolerating missing schemes. */\nfunction hostOf(endpoint) {\n\ttry {\n\t\treturn new URL(endpoint).hostname.toLowerCase();\n\t} catch {\n\t\treturn (/^[a-z][a-z0-9+.-]*:\\/\\/([^/?#]+)/i.exec(endpoint)?.[1] ?? endpoint).toLowerCase();\n\t}\n}\n/** True when the endpoint targets a local emulator such as floci or LocalStack. */\nfunction isLocalEndpoint(endpoint) {\n\tconst host = hostOf(endpoint);\n\tif (LOCAL_HOSTS.has(host)) return true;\n\treturn LOCAL_HINTS.some((hint) => host.includes(hint));\n}\n/** True when any ambient credential source is configured (non-blank) in the environment. */\nfunction hasAmbientCredentials(env) {\n\treturn CREDENTIAL_ENV_KEYS.some((key) => normalize(env[key]) !== null);\n}\n/**\n* Resolves the region, endpoint, local flag and credential source for CloudWatch Logs.\n*\n* Region precedence: an explicit region parameter, then `AWS_REGION`, then\n* `AWS_DEFAULT_REGION`. When none of them is set the result is `null`, which\n* lets the SDK resolve the region from the ambient AWS configuration (profile,\n* SSO, instance metadata) instead of this app inventing one.\n*\n* Credentials stay `ambient` unless the endpoint is local and no ambient\n* credential source is configured at all, in which case the emulator's\n* throwaway keys are used.\n*/\nfunction resolveAwsConfig(env, regionParam) {\n\tconst endpoint = normalize(env.AWS_ENDPOINT_URL_LOGS) ?? normalize(env.AWS_ENDPOINT_URL);\n\tconst region = normalize(regionParam) ?? normalize(env.AWS_REGION) ?? normalize(env.AWS_DEFAULT_REGION);\n\tconst local = endpoint !== null && isLocalEndpoint(endpoint);\n\treturn {\n\t\tregion,\n\t\tendpoint,\n\t\tlocal,\n\t\tcredentials: local && !hasAmbientCredentials(env) ? \"emulator-default\" : \"ambient\"\n\t};\n}\n/**\n* Validates the optional `region` query parameter.\n*\n* A blank value means \"not supplied\" and is accepted as `null`. Any other\n* value must look like a region code or a local-zone code.\n*/\nfunction parseRegionParam(value) {\n\tconst trimmed = typeof value === \"string\" ? value.trim() : \"\";\n\tif (trimmed.length === 0) return {\n\t\tok: true,\n\t\tregion: null\n\t};\n\tif (!REGION_PATTERN.test(trimmed)) return {\n\t\tok: false,\n\t\tregion: null\n\t};\n\treturn {\n\t\tok: true,\n\t\tregion: trimmed\n\t};\n}\n/**\n* Creates a CloudWatch Logs client.\n*\n* Credentials stay ambient unless {@link AwsConfig.credentials} asks for the\n* emulator defaults: this never reads key material from the environment and\n* never sets `credentials` for a real AWS endpoint, so the SDK default provider\n* chain is used unchanged. The region is only set when the caller asked for\n* one, so the SDK can otherwise resolve it from `AWS_REGION`, the shared\n* profile or SSO.\n*/\nfunction createLogsClient(config) {\n\tconst options = { maxAttempts: 3 };\n\tif (config.region !== null) options.region = config.region;\n\tif (config.endpoint !== null) options.endpoint = config.endpoint;\n\tif (config.credentials === \"emulator-default\") options.credentials = EMULATOR_CREDENTIALS;\n\treturn new CloudWatchLogsClient(options);\n}\nasync function resolveEffectiveRegion(client, config) {\n\tif (config.region !== null) return config.region;\n\ttry {\n\t\tconst region = await client.config.region();\n\t\treturn typeof region === \"string\" && region.trim().length > 0 ? region.trim() : FALLBACK_REGION;\n\t} catch {\n\t\treturn FALLBACK_REGION;\n\t}\n}\nvar ERROR_MESSAGES = {\n\taborted: \"The CloudWatch Logs request was aborted\",\n\t\"missing-credentials\": \"AWS credentials are missing or expired\",\n\t\"missing-region\": \"No AWS region is configured. Set AWS_REGION or add a region to your AWS profile.\",\n\t\"access-denied\": \"Access denied by CloudWatch Logs\",\n\t\"not-found\": \"The CloudWatch Logs resource was not found\",\n\tunreachable: \"The CloudWatch Logs endpoint is unreachable\",\n\tthrottled: \"CloudWatch Logs is throttling requests\",\n\tunknown: \"CloudWatch Logs request failed\"\n};\n/** Codes whose message is user guidance and must not be amended with SDK text. */\nvar FIXED_MESSAGE_CODES = /* @__PURE__ */ new Set([\"missing-region\"]);\n/** Collects name, message, status and a lowercase search haystack from an error chain. */\nfunction readErrorFacts(error) {\n\tconst parts = [];\n\tlet name = \"\";\n\tlet message = \"\";\n\tlet code = \"\";\n\tlet status = null;\n\tlet current = error;\n\tfor (let depth = 0; depth < 4 && current !== null && current !== void 0; depth += 1) {\n\t\tif (current instanceof Error) {\n\t\t\tif (name === \"\") name = current.name;\n\t\t\tif (message === \"\") message = current.message;\n\t\t\tparts.push(current.name, current.message);\n\t\t} else if (typeof current === \"string\") {\n\t\t\tif (message === \"\") message = current;\n\t\t\tparts.push(current);\n\t\t} else if (typeof current === \"object\") {\n\t\t\tconst like = current;\n\t\t\tif (name === \"\" && typeof like.name === \"string\") name = like.name;\n\t\t\tif (message === \"\" && typeof like.message === \"string\") message = like.message;\n\t\t\tif (code === \"\" && typeof like.code === \"string\") code = like.code;\n\t\t\tif (status === null && typeof like.$metadata?.httpStatusCode === \"number\") status = like.$metadata.httpStatusCode;\n\t\t\tif (typeof like.name === \"string\") parts.push(like.name);\n\t\t\tif (typeof like.message === \"string\") parts.push(like.message);\n\t\t\tif (typeof like.code === \"string\") parts.push(like.code);\n\t\t\tcurrent = like.cause;\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n\treturn {\n\t\tname,\n\t\tmessage: message.trim(),\n\t\tcode,\n\t\tstatus,\n\t\thaystack: parts.join(\" \").toLowerCase()\n\t};\n}\n/** True when the error says that no AWS region could be resolved. */\nfunction isRegionFailure(loweredName, haystack) {\n\treturn loweredName.includes(\"regionprovider\") || loweredName.includes(\"regionnotset\") || loweredName.includes(\"missingregion\") || haystack.includes(\"region is missing\") || haystack.includes(\"region is not configured\") || haystack.includes(\"region is required\") || haystack.includes(\"missing region\") || haystack.includes(\"no region is configured\") || haystack.includes(\"region not set\") || haystack.includes(\"region must be specified\") || haystack.includes(\"region not accepted\") || haystack.includes(\"is not a valid hostname component\");\n}\n/** Maps a thrown value to a machine-readable error code. */\nfunction classify(facts) {\n\tconst { name, code, status, haystack } = facts;\n\tconst loweredName = name.toLowerCase();\n\tif (loweredName === \"aborterror\" || code === \"ABORT_ERR\" || code === \"ERR_CANCELED\") return \"aborted\";\n\tif (loweredName.includes(\"credentialsprovider\") || loweredName.includes(\"expiredtoken\") || haystack.includes(\"could not load credentials\") || haystack.includes(\"credential is expired\") || haystack.includes(\"token has expired\") || haystack.includes(\"resolve credentials\")) return \"missing-credentials\";\n\tif (isRegionFailure(loweredName, haystack)) return \"missing-region\";\n\tif (loweredName.includes(\"accessdenied\") || loweredName.includes(\"invalidclienttokenid\") || loweredName.includes(\"invalidsignature\") || loweredName.includes(\"unrecognizedclient\") || loweredName.includes(\"unauthorized\") || loweredName.includes(\"signaturedoesnotmatch\") || status === 401 || status === 403) return \"access-denied\";\n\tif (loweredName.includes(\"resourcenotfound\") || loweredName.includes(\"loggroupnotfound\") || haystack.includes(\"does not exist\") || status === 404) return \"not-found\";\n\tif (loweredName.includes(\"throttl\") || loweredName.includes(\"toomanyrequests\") || loweredName.includes(\"requestlimitexceeded\") || status === 429) return \"throttled\";\n\tif ([\n\t\t\"econnrefused\",\n\t\t\"econnreset\",\n\t\t\"enotfound\",\n\t\t\"eaiagain\",\n\t\t\"etimedout\",\n\t\t\"ehostunreach\",\n\t\t\"enetunreach\"\n\t].some((token) => haystack.includes(token)) || haystack.includes(\"connection refused\") || haystack.includes(\"socket hang up\") || haystack.includes(\"fetch failed\") || haystack.includes(\"getaddrinfo\") || haystack.includes(\"network error\") || haystack.includes(\"timeout\") || haystack.includes(\"unreachable\")) return \"unreachable\";\n\treturn \"unknown\";\n}\n/**\n* Turns a thrown SDK or network error into a short human message plus a\n* machine-readable code such as `missing-credentials`, `missing-region` or\n* `unreachable`.\n*/\nfunction describeAwsError(error) {\n\tconst facts = readErrorFacts(error);\n\tconst code = classify(facts);\n\tconst base = ERROR_MESSAGES[code] ?? ERROR_MESSAGES.unknown;\n\tif (FIXED_MESSAGE_CODES.has(code)) return {\n\t\tmessage: base,\n\t\tcode\n\t};\n\tconst detail = facts.message.length > MAX_DETAIL_LENGTH ? `${facts.message.slice(0, MAX_DETAIL_LENGTH)}...` : facts.message;\n\treturn {\n\t\tmessage: detail.length > 0 && !base.toLowerCase().includes(detail.toLowerCase()) ? `${base}: ${detail}` : base,\n\t\tcode\n\t};\n}\n/**\n* Creates an STS client with the same resolved settings as the Logs client.\n*\n* Used for `GetCallerIdentity`, which answers the question the UI cannot: whose\n* credentials are these, if they work at all.\n*/\nfunction createStsClient(config) {\n\tconst options = {\n\t\tregion: config.region ?? void 0,\n\t\tmaxAttempts: 2\n\t};\n\tif (config.endpoint !== null) options.endpoint = config.endpoint;\n\tif (config.credentials === \"emulator-default\") options.credentials = EMULATOR_CREDENTIALS;\n\treturn new STSClient(options);\n}\n//#endregion\n//#region src/lib/server/env.ts\n/** Name of the git-ignored file that holds local (floci) connection settings. */\nvar LOCAL_ENV_FILE = \".env.local\";\nvar localEnvChecked = false;\n/** Reads `process.env` through `globalThis`, so this file needs no `@types/node`. */\nfunction processEnv() {\n\treturn globalThis.process?.env ?? {};\n}\n/**\n* Loads a dotenv file into `process.env`.\n*\n* Existing environment variables win, matching `node --env-file` semantics.\n* Returns true only when a file was found and parsed.\n*/\nfunction loadEnvFile(path) {\n\tconst runtime = globalThis;\n\tconst loader = runtime.process?.loadEnvFile;\n\tif (typeof loader !== \"function\" || !existsSync(path)) return false;\n\ttry {\n\t\tloader.call(runtime.process, path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Loads `<cwd>/.env.local` once.\n*\n* SvelteKit exposes `.env` values through `$env/dynamic/private`, but the AWS\n* SDK's credential and region providers read `process.env` directly, so the\n* file has to be applied to the process too. Run `pnpm floci:up` to create it.\n*/\nfunction ensureLocalEnv(cwd) {\n\tif (localEnvChecked) return false;\n\tlocalEnvChecked = true;\n\tconst base = cwd ?? globalThis.process?.cwd?.();\n\tif (base === void 0) return false;\n\treturn loadEnvFile(join(base, LOCAL_ENV_FILE));\n}\n/**\n* Reads the effective server environment.\n*\n* `$env/dynamic/private` does resolve under vitest, but it is a snapshot taken\n* when the module is first evaluated, so the live `process.env` map is merged\n* last and wins.\n*/\nfunction readEnv() {\n\tensureLocalEnv();\n\treturn {\n\t\t...private_env,\n\t\t...processEnv()\n\t};\n}\n//#endregion\nexport { createStsClient as a, resolveAwsConfig as c, createLogsClient as i, resolveEffectiveRegion as l, FALLBACK_REGION as n, describeAwsError as o, REGION_PARAM_HINT as r, parseRegionParam as s, readEnv as t, apiError as u };\n"],"names":[],"mappings":"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"}
@@ -1163,10 +1163,10 @@ var options = {
1163
1163
  service_worker_options: void 0,
1164
1164
  server_error_boundaries: false,
1165
1165
  templates: {
1166
- app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"text-scale\" content=\"scale\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
1166
+ app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"text-scale\" content=\"scale\" />\n <meta name=\"theme-color\" content=\"#0a0a0a\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
1167
1167
  error: error_template_default
1168
1168
  },
1169
- version_hash: "1d530vm"
1169
+ version_hash: "nn6fis"
1170
1170
  };
1171
1171
  async function get_hooks() {
1172
1172
  let handle;
@@ -1188,4 +1188,4 @@ async function get_hooks() {
1188
1188
  }
1189
1189
 
1190
1190
  export { __commonJSMin as _, get_hooks as g, index_server_exports as i, options as o, read_implementation as r, set_read_implementation as s };
1191
- //# sourceMappingURL=internal.js-B-DZpK-L.js.map
1191
+ //# sourceMappingURL=internal.js-Cc3oBhL-.js.map