mdzilla 0.1.0 → 0.2.1

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.
@@ -1,105 +1,105 @@
1
+ import { parseMeta, renderToMarkdown, renderToText } from "md4x";
1
2
  import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
3
+ import { existsSync, watch } from "node:fs";
2
4
  import { basename, dirname, extname, join } from "node:path";
3
- import { parseMeta, renderToMarkdown, renderToText } from "md4x";
4
- import { existsSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
- import { init, parseMeta as parseMeta$1, renderToHtml, renderToText as renderToText$1 } from "md4x/napi";
6
+ import { init, renderToHtml, renderToText as renderToText$1 } from "md4x/napi";
7
7
  import { highlightText } from "@speed-highlight/core";
8
8
  //#region web/.output/server/index.mjs
9
9
  globalThis.__nitro_main__ = import.meta.url;
10
- var te = Object.defineProperty, v = (e, t) => () => (e && (t = e(e = 0)), t), y = (e, t) => {
10
+ var y = Object.defineProperty, b = (e, t) => () => (e && (t = e(e = 0)), t), x = (e, t) => {
11
11
  let n = {};
12
- for (var r in e) te(n, r, {
12
+ for (var r in e) y(n, r, {
13
13
  get: e[r],
14
14
  enumerable: !0
15
15
  });
16
- return t || te(n, Symbol.toStringTag, { value: `Module` }), n;
16
+ return t || y(n, Symbol.toStringTag, { value: `Module` }), n;
17
17
  };
18
18
  globalThis.__nitro_vite_envs__ = {};
19
- var b, ne = v((() => {
20
- b = (() => {
19
+ var S, ee = b((() => {
20
+ S = (() => {
21
21
  let e = function() {};
22
22
  return e.prototype = Object.create(null), Object.freeze(e.prototype), e;
23
23
  })();
24
- })), re, x, ie = v((() => {
25
- re = URL, x = Response;
24
+ })), te, C, ne = b((() => {
25
+ te = URL, C = Response;
26
26
  }));
27
- function ae(e) {
27
+ function re(e) {
28
28
  return decodeURI(e.includes(`%25`) ? e.replace(/%25/g, `%2525`) : e);
29
29
  }
30
- function oe(e = ``) {
31
- return e.replace(ve, ``);
30
+ function ie(e = ``) {
31
+ return e.replace(Se, ``);
32
32
  }
33
- function se(e, t = 200) {
33
+ function ae(e, t = 200) {
34
34
  return !e || (typeof e == `string` && (e = +e), e < 100 || e > 599) ? t : e;
35
35
  }
36
- function ce(e, t) {
36
+ function oe(e, t) {
37
37
  if (e == null) return !0;
38
38
  if (t !== `object`) return t === `boolean` || t === `number` || t === `string`;
39
39
  if (typeof e.toJSON == `function` || Array.isArray(e)) return !0;
40
40
  if (typeof e.pipe == `function` || typeof e.pipeTo == `function`) return !1;
41
- if (e instanceof b) return !0;
41
+ if (e instanceof S) return !0;
42
42
  let n = Object.getPrototypeOf(e);
43
43
  return n === Object.prototype || n === null;
44
44
  }
45
- function S(e, t, n = {}) {
46
- if (typeof e?.then == `function`) return (e.catch?.((e) => e) || Promise.resolve(e)).then((e) => S(e, t, n));
47
- let r = le(e, t, n);
48
- if (typeof r?.then == `function`) return S(r, t, n);
45
+ function w(e, t, n = {}) {
46
+ if (typeof e?.then == `function`) return (e.catch?.((e) => e) || Promise.resolve(e)).then((e) => w(e, t, n));
47
+ let r = se(e, t, n);
48
+ if (typeof r?.then == `function`) return w(r, t, n);
49
49
  let { onResponse: i } = n;
50
50
  return i ? Promise.resolve(i(r, t)).then(() => r) : r;
51
51
  }
52
- function le(e, t, n, r) {
53
- if (e === ye) return new x(null);
54
- if (e === P && (e = new N({
52
+ function se(e, t, n, r) {
53
+ if (e === Ce) return new C(null);
54
+ if (e === I && (e = new F({
55
55
  status: 404,
56
56
  message: `Cannot find any route matching [${t.req.method}] ${t.url}`
57
57
  })), e && e instanceof Error) {
58
- let i = N.isError(e), a = i ? e : new N(e);
58
+ let i = F.isError(e), a = i ? e : new F(e);
59
59
  i || (a.unhandled = !0, e?.stack && (a.stack = e.stack)), a.unhandled && !n.silent && console.error(a);
60
- let { onError: o } = n, s = t[k]?.[j];
61
- return o && !r ? Promise.resolve(o(a, t)).catch((e) => e).then((r) => le(r ?? e, t, n, !0)) : fe(a, n.debug, s);
60
+ let { onError: o } = n, s = t[N]?.[be];
61
+ return o && !r ? Promise.resolve(o(a, t)).catch((e) => e).then((r) => se(r ?? e, t, n, !0)) : ue(a, n.debug, s);
62
62
  }
63
- let i = t[k], a = i?.[A];
64
- if (t[k] = void 0, !(e instanceof Response)) {
65
- let r = ue(e, t, n), o = r.status || i?.status;
66
- return new x(de(t.req.method, o) ? null : r.body, {
63
+ let i = t[N], a = i?.[ye];
64
+ if (t[N] = void 0, !(e instanceof Response)) {
65
+ let r = ce(e, t, n), o = r.status || i?.status;
66
+ return new C(le(t.req.method, o) ? null : r.body, {
67
67
  status: o,
68
68
  statusText: r.statusText || i?.statusText,
69
- headers: r.headers && a ? C(r.headers, a) : r.headers || a
69
+ headers: r.headers && a ? T(r.headers, a) : r.headers || a
70
70
  });
71
71
  }
72
72
  if (!a || r || !e.ok) return e;
73
73
  try {
74
- return C(e.headers, a, e.headers), e;
74
+ return T(e.headers, a, e.headers), e;
75
75
  } catch {
76
- return new x(de(t.req.method, e.status) ? null : e.body, {
76
+ return new C(le(t.req.method, e.status) ? null : e.body, {
77
77
  status: e.status,
78
78
  statusText: e.statusText,
79
- headers: C(e.headers, a)
79
+ headers: T(e.headers, a)
80
80
  });
81
81
  }
82
82
  }
83
- function C(e, t, n = new Headers(e)) {
83
+ function T(e, t, n = new Headers(e)) {
84
84
  for (let [e, r] of t) e === `set-cookie` ? n.append(e, r) : n.set(e, r);
85
85
  return n;
86
86
  }
87
- function ue(e, t, n) {
87
+ function ce(e, t, n) {
88
88
  if (e == null) return {
89
89
  body: ``,
90
- headers: be
90
+ headers: Te
91
91
  };
92
92
  let r = typeof e;
93
93
  if (r === `string`) return { body: e };
94
94
  if (e instanceof Uint8Array) return t.res.headers.set(`content-length`, e.byteLength.toString()), { body: e };
95
- if (e instanceof F || e?.constructor?.name === `HTTPResponse`) return e;
96
- if (ce(e, r)) return {
95
+ if (e instanceof L || e?.constructor?.name === `HTTPResponse`) return e;
96
+ if (oe(e, r)) return {
97
97
  body: JSON.stringify(e, void 0, n.debug ? 2 : void 0),
98
- headers: R
98
+ headers: z
99
99
  };
100
100
  if (r === `bigint`) return {
101
101
  body: e.toString(),
102
- headers: R
102
+ headers: z
103
103
  };
104
104
  if (e instanceof Blob) {
105
105
  let t = new Headers({
@@ -113,12 +113,12 @@ function ue(e, t, n) {
113
113
  }
114
114
  return r === `symbol` ? { body: e.toString() } : r === `function` ? { body: `${e.name}()` } : { body: e };
115
115
  }
116
- function de(e, t) {
116
+ function le(e, t) {
117
117
  return e === `HEAD` || t === 100 || t === 101 || t === 102 || t === 204 || t === 205 || t === 304;
118
118
  }
119
- function fe(e, t, n) {
120
- let r = e.headers ? C(R, e.headers) : new Headers(R);
121
- return n && (r = C(r, n)), new x(JSON.stringify({
119
+ function ue(e, t, n) {
120
+ let r = e.headers ? T(z, e.headers) : new Headers(z);
121
+ return n && (r = T(r, n)), new C(JSON.stringify({
122
122
  ...e.toJSON(),
123
123
  stack: t && e.stack ? e.stack.split(`
124
124
  `).map((e) => e.trim()) : void 0
@@ -128,25 +128,25 @@ function fe(e, t, n) {
128
128
  headers: r
129
129
  });
130
130
  }
131
- function w(e, t, n, r = 0) {
131
+ function E(e, t, n, r = 0) {
132
132
  if (r === t.length) return n(e);
133
- let i = t[r], a, o, s = () => a ? o : (a = !0, o = w(e, t, n, r + 1), o), c = i(e, s);
134
- return pe(c) ? s() : typeof c?.then == `function` ? c.then((e) => pe(e) ? s() : e) : c;
133
+ let i = t[r], a, o, s = () => a ? o : (a = !0, o = E(e, t, n, r + 1), o), c = i(e, s);
134
+ return de(c) ? s() : typeof c?.then == `function` ? c.then((e) => de(e) ? s() : e) : c;
135
135
  }
136
- function pe(e) {
137
- return e === void 0 || e === P;
136
+ function de(e) {
137
+ return e === void 0 || e === I;
138
138
  }
139
- function me(e) {
140
- let t = new b();
139
+ function fe(e) {
140
+ let t = new S();
141
141
  if (!e || e === `?`) return t;
142
142
  let n = e.length, r = ``, i = ``, a = -1, o = -1, s = !1, c = !1, l = !1, u = !1, d = !1, f = 0;
143
143
  for (let p = 0; p < n + 1; p++) switch (f = p === n ? 38 : e.charCodeAt(p), f) {
144
144
  case 38:
145
145
  if (d = o > a, d || (o = p), r = e.slice(a + 1, o), d || r.length > 0) {
146
- if (l && (r = r.replace(z, ` `)), s) try {
146
+ if (l && (r = r.replace(Ee, ` `)), s) try {
147
147
  r = decodeURIComponent(r);
148
148
  } catch {}
149
- if (d && (i = e.slice(o + 1, p), u && (i = i.replace(z, ` `)), c)) try {
149
+ if (d && (i = e.slice(o + 1, p), u && (i = i.replace(Ee, ` `)), c)) try {
150
150
  i = decodeURIComponent(i);
151
151
  } catch {}
152
152
  let n = t[r];
@@ -166,59 +166,85 @@ function me(e) {
166
166
  }
167
167
  return t;
168
168
  }
169
- function he(e) {
170
- return me((e.url || new URL(e.req.url)).search.slice(1));
169
+ function pe(e) {
170
+ return fe((e.url || new URL(e.req.url)).search.slice(1));
171
171
  }
172
- function T(e) {
173
- if (typeof e == `function`) return ge(e);
172
+ function D(e) {
173
+ if (typeof e == `function`) return me(e);
174
174
  let t = e.handler || (e.fetch ? function(t) {
175
175
  return e.fetch(t.req);
176
- } : B);
177
- return Object.assign(ge(e.middleware?.length ? function(n) {
178
- return w(n, e.middleware, t);
176
+ } : De);
177
+ return Object.assign(me(e.middleware?.length ? function(n) {
178
+ return E(n, e.middleware, t);
179
179
  } : t), e);
180
180
  }
181
- function ge(e) {
181
+ function me(e) {
182
182
  return `fetch` in e ? e : Object.assign(e, { fetch: (t) => {
183
183
  typeof t == `string` && (t = new URL(t, `http://_`)), t instanceof URL && (t = new Request(t));
184
- let n = new M(t);
184
+ let n = new P(t);
185
185
  try {
186
- return Promise.resolve(S(e(n), n));
186
+ return Promise.resolve(w(e(n), n));
187
187
  } catch (e) {
188
- return Promise.resolve(S(e, n));
188
+ return Promise.resolve(w(e, n));
189
189
  }
190
190
  } });
191
191
  }
192
- function E(e) {
192
+ function O(e) {
193
193
  let t, n;
194
- return T(function(r) {
194
+ return D(function(r) {
195
195
  return t ? t(r) : (n ??= Promise.resolve(e()).then(function(e) {
196
- if (t = D(e) || D(e.default), typeof t != `function`) throw TypeError(`Invalid lazy handler`, { cause: { resolved: e } });
196
+ if (t = k(e) || k(e.default), typeof t != `function`) throw TypeError(`Invalid lazy handler`, { cause: { resolved: e } });
197
197
  return t;
198
198
  })).then((e) => e(r));
199
199
  });
200
200
  }
201
- function D(e) {
201
+ function k(e) {
202
202
  if (typeof e == `function`) return e;
203
203
  if (typeof e?.handler == `function`) return e.handler;
204
204
  if (typeof e?.fetch == `function`) return function(t) {
205
205
  return e.fetch(t.req);
206
206
  };
207
207
  }
208
- var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
209
- ne(), ie(), O = `h3.internal.event.`, k = Symbol.for(`${O}res`), A = Symbol.for(`${O}res.headers`), j = Symbol.for(`${O}res.err.headers`), M = class {
208
+ function A(e) {
209
+ return e.split(/\r\n|\r|\n/).map((e) => `: ${e}\n`).join(``) + `
210
+ `;
211
+ }
212
+ function j(e) {
213
+ let t = ``;
214
+ e.id && (t += `id: ${he(e.id)}\n`), e.event && (t += `event: ${he(e.event)}\n`), typeof e.retry == `number` && Number.isInteger(e.retry) && (t += `retry: ${e.retry}\n`);
215
+ let n = typeof e.data == `string` ? e.data : ``;
216
+ for (let e of n.split(/\r\n|\r|\n/)) t += `data: ${e}\n`;
217
+ return t += `
218
+ `, t;
219
+ }
220
+ function he(e) {
221
+ return e.replace(/[\n\r]/g, ``);
222
+ }
223
+ function ge(e) {
224
+ let t = ``;
225
+ for (let n of e) t += j(n);
226
+ return t;
227
+ }
228
+ function _e(e) {
229
+ e.res.headers.set(`content-type`, `text/event-stream`), e.res.headers.set(`cache-control`, `private, no-cache, no-store, no-transform, must-revalidate, max-age=0`), e.res.headers.set(`x-accel-buffering`, `no`), e.req.headers.get(`connection`) === `keep-alive` && e.res.headers.set(`connection`, `keep-alive`);
230
+ }
231
+ function ve(e, t) {
232
+ return new Ae(e, t);
233
+ }
234
+ var M, N, ye, be, P, xe, Se, F, I, Ce, L, R, we, Te, z, Ee, De, Oe, ke, Ae, je = b((() => {
235
+ ee(), ne(), M = `h3.internal.event.`, N = Symbol.for(`${M}res`), ye = Symbol.for(`${M}res.headers`), be = Symbol.for(`${M}res.err.headers`), P = class {
210
236
  app;
211
237
  req;
212
238
  url;
213
239
  context;
214
240
  static __is_event__ = !0;
215
241
  constructor(e, t, n) {
216
- this.context = t || e.context || new b(), this.req = e, this.app = n;
217
- let r = e._url, i = r && r instanceof URL ? r : new re(e.url);
218
- i.pathname.includes(`%`) && (i.pathname = ae(i.pathname)), this.url = i;
242
+ this.context = t || e.context || new S(), this.req = e, this.app = n;
243
+ let r = e._url, i = r && r instanceof URL ? r : new te(e.url);
244
+ i.pathname.includes(`%`) && (i.pathname = re(i.pathname)), this.url = i;
219
245
  }
220
246
  get res() {
221
- return this[k] ||= new _e();
247
+ return this[N] ||= new xe();
222
248
  }
223
249
  get runtime() {
224
250
  return this.req.runtime;
@@ -244,16 +270,16 @@ var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
244
270
  get method() {
245
271
  return this.req.method;
246
272
  }
247
- }, _e = class {
273
+ }, xe = class {
248
274
  status;
249
275
  statusText;
250
276
  get headers() {
251
- return this[A] ||= new Headers();
277
+ return this[ye] ||= new Headers();
252
278
  }
253
279
  get errHeaders() {
254
- return this[j] ||= new Headers();
280
+ return this[be] ||= new Headers();
255
281
  }
256
- }, ve = /[^\u0009\u0020-\u007E]/g, N = class e extends Error {
282
+ }, Se = /[^\u0009\u0020-\u007E]/g, F = class e extends Error {
257
283
  get name() {
258
284
  return `HTTPError`;
259
285
  }
@@ -277,7 +303,7 @@ var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
277
303
  constructor(e, t) {
278
304
  let n, r;
279
305
  typeof e == `string` ? (n = e, r = t) : r = e;
280
- let i = se(r?.status || r?.statusCode || r?.cause?.status || r?.cause?.statusCode, 500), a = oe(r?.statusText || r?.statusMessage || r?.cause?.statusText || r?.cause?.statusMessage), o = n || r?.message || r?.cause?.message || r?.statusText || r?.statusMessage || [
306
+ let i = ae(r?.status || r?.statusCode || r?.cause?.status || r?.cause?.statusCode, 500), a = ie(r?.statusText || r?.statusMessage || r?.cause?.statusText || r?.cause?.statusMessage), o = n || r?.message || r?.cause?.message || r?.statusText || r?.statusMessage || [
281
307
  `HTTPError`,
282
308
  i,
283
309
  a
@@ -303,7 +329,7 @@ var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
303
329
  ...e ? void 0 : this.body
304
330
  };
305
331
  }
306
- }, P = Symbol.for(`h3.notFound`), ye = Symbol.for(`h3.handled`), F = class {
332
+ }, I = Symbol.for(`h3.notFound`), Ce = Symbol.for(`h3.handled`), L = class {
307
333
  #e;
308
334
  #t;
309
335
  body;
@@ -319,13 +345,13 @@ var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
319
345
  get headers() {
320
346
  return this.#e ||= new Headers(this.#t?.headers);
321
347
  }
322
- }, I = (e) => (...t) => {
348
+ }, R = (e) => (...t) => {
323
349
  throw Error(`Headers are frozen (${e} ${t.join(`, `)})`);
324
- }, L = class extends Headers {
325
- set = I(`set`);
326
- append = I(`append`);
327
- delete = I(`delete`);
328
- }, be = new L({ "content-length": `0` }), R = new L({ "content-type": `application/json;charset=UTF-8` }), z = /\+/g, B = () => P, xe = class {
350
+ }, we = class extends Headers {
351
+ set = R(`set`);
352
+ append = R(`append`);
353
+ delete = R(`delete`);
354
+ }, Te = new we({ "content-length": `0` }), z = new we({ "content-type": `application/json;charset=UTF-8` }), Ee = /\+/g, De = () => I, Oe = class {
329
355
  config;
330
356
  "~middleware";
331
357
  "~routes" = [];
@@ -338,11 +364,11 @@ var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
338
364
  handler(e) {
339
365
  let t = this[`~findRoute`](e);
340
366
  t && (e.context.params = t.params, e.context.matchedRoute = t.data);
341
- let n = t?.data.handler || B, r = this[`~getMiddleware`](e, t);
342
- return r.length > 0 ? w(e, r, n) : n(e);
367
+ let n = t?.data.handler || De, r = this[`~getMiddleware`](e, t);
368
+ return r.length > 0 ? E(e, r, n) : n(e);
343
369
  }
344
370
  "~request"(e, t) {
345
- let n = new M(e, t, this), r;
371
+ let n = new P(e, t, this), r;
346
372
  try {
347
373
  if (this.config.onRequest) {
348
374
  let e = this.config.onRequest(n);
@@ -351,7 +377,7 @@ var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
351
377
  } catch (e) {
352
378
  r = Promise.reject(e);
353
379
  }
354
- return S(r, n, this.config);
380
+ return w(r, n, this.config);
355
381
  }
356
382
  "~findRoute"(e) {}
357
383
  "~addRoute"(e) {
@@ -361,17 +387,123 @@ var O, k, A, j, M, _e, ve, N, P, ye, F, I, L, be, R, z, B, xe, Se = v((() => {
361
387
  let n = t?.data.middleware, r = this[`~middleware`];
362
388
  return n ? [...r, ...n] : r;
363
389
  }
390
+ }, ke = () => {}, Ae = class {
391
+ _event;
392
+ _transformStream = new TransformStream();
393
+ _writer;
394
+ _encoder = new TextEncoder();
395
+ _writerIsClosed = !1;
396
+ _paused = !1;
397
+ _unsentData;
398
+ _disposed = !1;
399
+ _handled = !1;
400
+ constructor(e, t = {}) {
401
+ this._event = e, this._writer = this._transformStream.writable.getWriter(), this._writer.closed.then(() => {
402
+ this._writerIsClosed = !0;
403
+ }), t.autoclose !== !1 && this._event.runtime?.node?.res?.once(`close`, () => this.close());
404
+ }
405
+ async push(e) {
406
+ if (typeof e == `string`) {
407
+ await this._sendEvent({ data: e });
408
+ return;
409
+ }
410
+ if (Array.isArray(e)) {
411
+ if (e.length === 0) return;
412
+ if (typeof e[0] == `string`) {
413
+ let t = [];
414
+ for (let n of e) t.push({ data: n });
415
+ await this._sendEvents(t);
416
+ return;
417
+ }
418
+ await this._sendEvents(e);
419
+ return;
420
+ }
421
+ await this._sendEvent(e);
422
+ }
423
+ async pushComment(e) {
424
+ if (!this._writerIsClosed) {
425
+ if (this._paused && !this._unsentData) {
426
+ this._unsentData = A(e);
427
+ return;
428
+ }
429
+ if (this._paused) {
430
+ this._unsentData += A(e);
431
+ return;
432
+ }
433
+ await this._writer.write(this._encoder.encode(A(e))).catch(() => {
434
+ this._writerIsClosed = !0;
435
+ });
436
+ }
437
+ }
438
+ async _sendEvent(e) {
439
+ if (!this._writerIsClosed) {
440
+ if (this._paused && !this._unsentData) {
441
+ this._unsentData = j(e);
442
+ return;
443
+ }
444
+ if (this._paused) {
445
+ this._unsentData += j(e);
446
+ return;
447
+ }
448
+ await this._writer.write(this._encoder.encode(j(e))).catch(() => {
449
+ this._writerIsClosed = !0;
450
+ });
451
+ }
452
+ }
453
+ async _sendEvents(e) {
454
+ if (this._writerIsClosed) return;
455
+ let t = ge(e);
456
+ if (this._paused && !this._unsentData) {
457
+ this._unsentData = t;
458
+ return;
459
+ }
460
+ if (this._paused) {
461
+ this._unsentData += t;
462
+ return;
463
+ }
464
+ await this._writer.write(this._encoder.encode(t)).catch(() => {
465
+ this._writerIsClosed = !0;
466
+ });
467
+ }
468
+ pause() {
469
+ this._paused = !0;
470
+ }
471
+ get isPaused() {
472
+ return this._paused;
473
+ }
474
+ async resume() {
475
+ this._paused = !1, await this.flush();
476
+ }
477
+ async flush() {
478
+ this._writerIsClosed || this._unsentData?.length && (await this._writer.write(this._encoder.encode(this._unsentData)).catch(() => {
479
+ this._writerIsClosed = !0;
480
+ }), this._unsentData = void 0);
481
+ }
482
+ async close() {
483
+ if (!this._disposed) {
484
+ if (!this._writerIsClosed) try {
485
+ await this._writer.close();
486
+ } catch {}
487
+ this._disposed = !0;
488
+ }
489
+ }
490
+ onClosed(e) {
491
+ this._writer.closed.then(e).catch(ke);
492
+ }
493
+ async send() {
494
+ return _e(this._event), this._event.res.status = 200, this._handled = !0, this._transformStream.readable;
495
+ }
364
496
  }, new TextEncoder();
365
- })), V = v((() => {
366
- Se();
497
+ })), B = b((() => {
498
+ je();
367
499
  }));
368
- V(), ie();
369
- var we = (e, t) => {
370
- let n = Te(e, t);
371
- return new x(typeof n.body == `string` ? n.body : JSON.stringify(n.body, null, 2), n);
500
+ B(), ne();
501
+ var Ne = (e, t) => {
502
+ let n = Pe(e, t);
503
+ return new C(typeof n.body == `string` ? n.body : JSON.stringify(n.body, null, 2), n);
372
504
  };
373
- function Te(e, t) {
374
- let n = e.unhandled ?? !N.isError(e), { status: r = 500, statusText: i = `` } = n ? {} : e;
505
+ function Pe(e, t) {
506
+ let n = e.unhandled ?? !F.isError(e), { status: r = 500, statusText: i = `` } = n ? {} : e;
375
507
  if (r === 404) {
376
508
  let e = t.url || new URL(t.req.url);
377
509
  if (/^\/[^/]/.test(`/`) && !e.pathname.startsWith(`/`)) return {
@@ -397,131 +529,131 @@ function Te(e, t) {
397
529
  }
398
530
  };
399
531
  }
400
- var Ee = [we];
401
- async function De(e, t) {
402
- for (let n of Ee) try {
403
- let r = await n(e, t, { defaultHandler: Te });
532
+ var Fe = [Ne];
533
+ async function Ie(e, t) {
534
+ for (let n of Fe) try {
535
+ let r = await n(e, t, { defaultHandler: Pe });
404
536
  if (r) return r;
405
537
  } catch (e) {
406
538
  console.error(e);
407
539
  }
408
540
  }
409
541
  String.fromCharCode;
410
- var Oe = /%2f/gi;
411
- function ke(e = ``) {
542
+ var Le = /%2f/gi;
543
+ function Re(e = ``) {
412
544
  try {
413
545
  return decodeURIComponent(`` + e);
414
546
  } catch {
415
547
  return `` + e;
416
548
  }
417
549
  }
418
- function Ae(e) {
419
- return ke(e.replace(Oe, `%252F`));
550
+ function ze(e) {
551
+ return Re(e.replace(Le, `%252F`));
420
552
  }
421
- var je = /\/$|\/\?|\/#/, Me = /^\.?\//;
422
- function H(e = ``, t) {
423
- return t ? je.test(e) : e.endsWith(`/`);
553
+ var Be = /\/$|\/\?|\/#/, Ve = /^\.?\//;
554
+ function V(e = ``, t) {
555
+ return t ? Be.test(e) : e.endsWith(`/`);
424
556
  }
425
- function Ne(e = ``, t) {
426
- if (!t) return (H(e) ? e.slice(0, -1) : e) || `/`;
427
- if (!H(e, !0)) return e || `/`;
557
+ function He(e = ``, t) {
558
+ if (!t) return (V(e) ? e.slice(0, -1) : e) || `/`;
559
+ if (!V(e, !0)) return e || `/`;
428
560
  let n = e, r = ``, i = e.indexOf(`#`);
429
561
  i !== -1 && (n = e.slice(0, i), r = e.slice(i));
430
562
  let [a, ...o] = n.split(`?`);
431
563
  return ((a.endsWith(`/`) ? a.slice(0, -1) : a) || `/`) + (o.length > 0 ? `?${o.join(`?`)}` : ``) + r;
432
564
  }
433
- function Pe(e = ``, t) {
565
+ function Ue(e = ``, t) {
434
566
  if (!t) return e.endsWith(`/`) ? e : e + `/`;
435
- if (H(e, !0)) return e || `/`;
567
+ if (V(e, !0)) return e || `/`;
436
568
  let n = e, r = ``, i = e.indexOf(`#`);
437
569
  if (i !== -1 && (n = e.slice(0, i), r = e.slice(i), !n)) return r;
438
570
  let [a, ...o] = n.split(`?`);
439
571
  return a + `/` + (o.length > 0 ? `?${o.join(`?`)}` : ``) + r;
440
572
  }
441
- function Fe(e = ``) {
573
+ function We(e = ``) {
442
574
  return e.startsWith(`/`);
443
575
  }
444
- function Ie(e = ``) {
445
- return Fe(e) ? e : `/` + e;
576
+ function Ge(e = ``) {
577
+ return We(e) ? e : `/` + e;
446
578
  }
447
- function Le(e) {
579
+ function Ke(e) {
448
580
  return e && e !== `/`;
449
581
  }
450
- function Re(e, ...t) {
582
+ function qe(e, ...t) {
451
583
  let n = e || ``;
452
- for (let e of t.filter((e) => Le(e))) if (n) {
453
- let t = e.replace(Me, ``);
454
- n = Pe(n) + t;
584
+ for (let e of t.filter((e) => Ke(e))) if (n) {
585
+ let t = e.replace(Ve, ``);
586
+ n = Ue(n) + t;
455
587
  } else n = e;
456
588
  return n;
457
589
  }
458
- var ze = ((e) => function(t) {
590
+ var Je = ((e) => function(t) {
459
591
  for (let [n, r] of Object.entries(e.options || {})) t.res.headers.set(n, r);
460
- }), U = {
461
- "/assets/index-BC9qhYL0.js": {
592
+ }), H = {
593
+ "/assets/index-CIhhqrBM.js": {
462
594
  type: `text/javascript; charset=utf-8`,
463
- etag: `"2c32-P9M3yJbjRmzrrPeoaEqQI2KbS4E"`,
464
- mtime: `2026-03-24T10:49:38.806Z`,
465
- size: 11314,
466
- path: `../public/assets/index-BC9qhYL0.js`,
467
- data: `KGZ1bmN0aW9uKCl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgbGlua2ApLnJlbExpc3Q7aWYoZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cyhgbW9kdWxlcHJlbG9hZGApKXJldHVybjtmb3IobGV0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXWApKW4oZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2ZvcihsZXQgdCBvZiBlKWlmKHQudHlwZT09PWBjaGlsZExpc3RgKWZvcihsZXQgZSBvZiB0LmFkZGVkTm9kZXMpZS50YWdOYW1lPT09YExJTktgJiZlLnJlbD09PWBtb2R1bGVwcmVsb2FkYCYmbihlKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gdChlKXtsZXQgdD17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJih0LmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKHQucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksZS5jcm9zc09yaWdpbj09PWB1c2UtY3JlZGVudGlhbHNgP3QuY3JlZGVudGlhbHM9YGluY2x1ZGVgOmUuY3Jvc3NPcmlnaW49PT1gYW5vbnltb3VzYD90LmNyZWRlbnRpYWxzPWBvbWl0YDp0LmNyZWRlbnRpYWxzPWBzYW1lLW9yaWdpbmAsdH1mdW5jdGlvbiBuKGUpe2lmKGUuZXApcmV0dXJuO2UuZXA9ITA7bGV0IG49dChlKTtmZXRjaChlLmhyZWYsbil9fSkoKTt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgaWNvbi1zdW5gKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpY29uLW1vb25gKTtmdW5jdGlvbiBuKCl7bGV0IG49bG9jYWxTdG9yYWdlLmdldEl0ZW0oYHRoZW1lYCkscj1uPT09YGRhcmtgfHwhbiYmd2luZG93Lm1hdGNoTWVkaWEoYChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylgKS5tYXRjaGVzO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKGBkYXJrYCxyKSxlLmNsYXNzTGlzdC50b2dnbGUoYGhpZGRlbmAsIXIpLHQuY2xhc3NMaXN0LnRvZ2dsZShgaGlkZGVuYCxyKX1mdW5jdGlvbiByKCl7bigpLHdpbmRvdy5tYXRjaE1lZGlhKGAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspYCkuYWRkRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCwoKT0+e2xvY2FsU3RvcmFnZS5nZXRJdGVtKGB0aGVtZWApfHxuKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdGhlbWUtdG9nZ2xlYCkuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLCgpPT57bGV0IGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhgZGFya2ApO2xvY2FsU3RvcmFnZS5zZXRJdGVtKGB0aGVtZWAsZT9gbGlnaHRgOmBkYXJrYCksbigpfSl9ZnVuY3Rpb24gaShlLHQpe3JldHVybiBlLnBhdGg9PT10PyEwOmUuY2hpbGRyZW4/LnNvbWUoZT0+aShlLHQpKT8/ITF9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlLm1hcChlPT57bGV0IG49ZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5sZW5ndGg+MCxyPW4/YShlLmNoaWxkcmVuLHQrMSk6YGAsaT0xMit0KjEyO3JldHVybmAKICAgICAgICA8bGk+CiAgICAgICAgICAke2UucGFnZSE9PSExJiYhKG4mJmUuY2hpbGRyZW4/LlswXT8ucGF0aD09PWUucGF0aCk/YDxhIGhyZWY9IiR7ZS5wYXRofSIKICAgICAgICAgICAgY2xhc3M9Im5hdi1saW5rIGJsb2NrIHB5LTEuNSB0ZXh0LXNtICR7bj9gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDBgOmB0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMGB9IGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS05MDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOnRleHQtZ3JheS0xMDAgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyIKICAgICAgICAgICAgc3R5bGU9InBhZGRpbmctbGVmdDogJHtpfXB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4IgogICAgICAgICAgICBkYXRhLXBhdGg9IiR7ZS5wYXRofSI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvYT5gOmA8c3BhbgogICAgICAgICAgICBjbGFzcz0iYmxvY2sgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDAgY3Vyc29yLWRlZmF1bHQiCiAgICAgICAgICAgIHN0eWxlPSJwYWRkaW5nLWxlZnQ6ICR7aX1weDsgcGFkZGluZy1yaWdodDogMTJweCI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvc3Bhbj5gfQogICAgICAgICAgJHtyP2A8dWwgY2xhc3M9Im10LTAuNSI+JHtyfTwvdWw+YDpgYH0KICAgICAgICA8L2xpPmB9KS5qb2luKGBgKX1mdW5jdGlvbiBvKGUsdCl7bGV0IG49ZS5zb21lKGU9PmkoZSx0KSkscj0hMDtyZXR1cm4gZS5tYXAoZT0+e2lmKCEoZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5sZW5ndGg+MCkpcmV0dXJuYDxsaT4ke2UucGFnZT09PSExP2A8c3BhbiBjbGFzcz0iYmxvY2sgcHktMS41IHB4LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTEwMCBjdXJzb3ItZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAke2UudGl0bGV9CiAgICAgICAgICAgICAgPC9zcGFuPmA6YDxhIGhyZWY9IiR7ZS5wYXRofSIKICAgICAgICAgICAgICAgIGNsYXNzPSJuYXYtbGluayBibG9jayBweS0xLjUgcHgtMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyIKICAgICAgICAgICAgICAgIGRhdGEtcGF0aD0iJHtlLnBhdGh9Ij4KICAgICAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgICAgICA8L2E+YH08L2xpPmA7bGV0IG89aShlLHQpfHwhbiYmcjtyPSExO2xldCBzPWUucGFnZSE9PSExJiZlLmNoaWxkcmVuPy5bMF0/LnBhdGghPT1lLnBhdGgsYz1gPHN2ZyBjbGFzcz0ibmF2LWNoZXZyb24gdy00IGgtNCB0ZXh0LWdyYXktNDAwIHRyYW5zaXRpb24tdHJhbnNmb3JtICR7bz9gcm90YXRlLTkwYDpgYH0iIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjIxIDE0Ljc3YS43NS43NSAwIDAxLjAyLTEuMDZMMTEuMTY4IDEwIDcuMjMgNi4yOWEuNzUuNzUgMCAxMTEuMDQtMS4wOGw0LjUgNC4yNWEuNzUuNzUgMCAwMTAgMS4wOGwtNC41IDQuMjVhLjc1Ljc1IDAgMDEtMS4wNi0uMDJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz5gLGw9cz9gPGEgaHJlZj0iJHtlLnBhdGh9IgogICAgICAgICAgICBjbGFzcz0ibmF2LWxpbmsgZmxleC0xIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwIHRyYW5zaXRpb24tY29sb3JzIgogICAgICAgICAgICBkYXRhLXBhdGg9IiR7ZS5wYXRofSI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvYT5gOmA8c3BhbiBjbGFzcz0iZmxleC0xIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIj4KICAgICAgICAgICAgJHtlLnRpdGxlfQogICAgICAgICAgPC9zcGFuPmAsdT1hKGUuY2hpbGRyZW4sMSk7cmV0dXJuYAogICAgICAgIDxsaSBkYXRhLXNlY3Rpb249IiR7ZS5wYXRofSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBweC0zIHJvdW5kZWQtbWQgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi10b2dnbGUgcC0wLjUgLW1sLTEgbXItMSIgZGF0YS1zZWN0aW9uPSIke2UucGF0aH0iIGFyaWEtbGFiZWw9IlRvZ2dsZSBzZWN0aW9uIj4KICAgICAgICAgICAgICAke2N9CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAke2x9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx1bCBjbGFzcz0ibmF2LXNlY3Rpb24gbXQtMC41ICR7bz9gYDpgaGlkZGVuYH0iIGRhdGEtc2VjdGlvbj0iJHtlLnBhdGh9Ij4KICAgICAgICAgICAgJHt1fQogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPmB9KS5qb2luKGBgKX1mdW5jdGlvbiBzKGUpe2ZvcihsZXQgdCBvZiBlKXtpZih0LnBhZ2UhPT0hMSlyZXR1cm4gdC5wYXRoO2lmKHQuY2hpbGRyZW4pe2xldCBlPXModC5jaGlsZHJlbik7aWYoZSlyZXR1cm4gZX19fXZhciBjPVtdO2Z1bmN0aW9uIGwoZSx0KXtjPXQ7bGV0IG49bG9jYXRpb24ucGF0aG5hbWU7ZS5pbm5lckhUTUw9dC5sZW5ndGg/YDx1bCBjbGFzcz0ic3BhY2UteS0wLjUiPiR7byh0LG4pfTwvdWw+YDpgPHAgY2xhc3M9InB4LTMgcHktMiB0ZXh0LXNtIHRleHQtZ3JheS00MDAiPk5vIHBhZ2VzIGxvYWRlZDwvcD5gLGUuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLHQ9PntsZXQgbj10LnRhcmdldCxyPW4uY2xvc2VzdChgLm5hdi10b2dnbGVgKTtpZihyKXt1KGUsci5kYXRhc2V0LnNlY3Rpb24pO3JldHVybn1sZXQgaT1uLmNsb3Nlc3QoYGxpW2RhdGEtc2VjdGlvbl1gKTtpJiYhbi5jbG9zZXN0KGAubmF2LWxpbmtgKSYmdShlLGkuZGF0YXNldC5zZWN0aW9uKX0pfWZ1bmN0aW9uIHUoZSx0KXtsZXQgbj1lLnF1ZXJ5U2VsZWN0b3IoYHVsLm5hdi1zZWN0aW9uW2RhdGEtc2VjdGlvbj0iJHt0fSJdYCk7biYmKG4uY2xhc3NMaXN0LmNvbnRhaW5zKGBoaWRkZW5gKT8oZS5xdWVyeVNlbGVjdG9yQWxsKGB1bC5uYXYtc2VjdGlvbmApLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LmFkZChgaGlkZGVuYCl9KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoYC5uYXYtY2hldnJvbmApLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LnJlbW92ZShgcm90YXRlLTkwYCl9KSxuLmNsYXNzTGlzdC5yZW1vdmUoYGhpZGRlbmApLGUucXVlcnlTZWxlY3RvcihgLm5hdi10b2dnbGVbZGF0YS1zZWN0aW9uPSIke3R9Il0gLm5hdi1jaGV2cm9uYCk/LmNsYXNzTGlzdC5hZGQoYHJvdGF0ZS05MGApKToobi5jbGFzc0xpc3QuYWRkKGBoaWRkZW5gKSxlLnF1ZXJ5U2VsZWN0b3IoYC5uYXYtdG9nZ2xlW2RhdGEtc2VjdGlvbj0iJHt0fSJdIC5uYXYtY2hldnJvbmApPy5jbGFzc0xpc3QucmVtb3ZlKGByb3RhdGUtOTBgKSkpfWZ1bmN0aW9uIGQoZSx0KXtlLnF1ZXJ5U2VsZWN0b3JBbGwoYC5uYXYtbGlua2ApLmZvckVhY2goZT0+e2xldCBuPWUuZ2V0QXR0cmlidXRlKGBkYXRhLXBhdGhgKT09PXQ7ZS5jbGFzc0xpc3QudG9nZ2xlKGBuYXYtYWN0aXZlYCxuKSxlLmNsYXNzTGlzdC50b2dnbGUoYGZvbnQtbWVkaXVtYCxuKX0pO2xldCBuPWMuZmluZChlPT5pKGUsdCkpO24/LmNoaWxkcmVuPy5sZW5ndGgmJihlLnF1ZXJ5U2VsZWN0b3JBbGwoYHVsLm5hdi1zZWN0aW9uYCkuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QuYWRkKGBoaWRkZW5gKX0pLGUucXVlcnlTZWxlY3RvckFsbChgLm5hdi1jaGV2cm9uYCkuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QucmVtb3ZlKGByb3RhdGUtOTBgKX0pLGUucXVlcnlTZWxlY3RvcihgdWwubmF2LXNlY3Rpb25bZGF0YS1zZWN0aW9uPSIke24ucGF0aH0iXWApPy5jbGFzc0xpc3QucmVtb3ZlKGBoaWRkZW5gKSxlLnF1ZXJ5U2VsZWN0b3IoYC5uYXYtdG9nZ2xlW2RhdGEtc2VjdGlvbj0iJHtuLnBhdGh9Il0gLm5hdi1jaGV2cm9uYCk/LmNsYXNzTGlzdC5hZGQoYHJvdGF0ZS05MGApKX1mdW5jdGlvbiBmKGUsdCl7ZS5pbm5lckhUTUw9YDxhcnRpY2xlIGNsYXNzPSJwcm9zZSBwcm9zZS1ncmF5IG1heC13LW5vbmUiPiR7dH08L2FydGljbGU+YDtmb3IobGV0IHQgb2YgZS5xdWVyeVNlbGVjdG9yQWxsKGBhW2hyZWZdYCkpe2xldCBuPXQuZ2V0QXR0cmlidXRlKGBocmVmYCk7bi5zdGFydHNXaXRoKGAvYCk/dC5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsZT0+e2UucHJldmVudERlZmF1bHQoKSxoaXN0b3J5LnB1c2hTdGF0ZShudWxsLGBgLG4pLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBQb3BTdGF0ZUV2ZW50KGBwb3BzdGF0ZWApKX0pOm4uc3RhcnRzV2l0aChgI2ApP3QuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLHQ9Pnt0LnByZXZlbnREZWZhdWx0KCk7bGV0IHI9bi5zbGljZSgxKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHIpfHxlLnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHtDU1MuZXNjYXBlKHIpfSJdYCk7aSYmKGkuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOmBzbW9vdGhgfSksaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxgYCxuKSl9KTovXmh0dHBzPzpcL1wvLy50ZXN0KG4pJiYodC50YXJnZXQ9YF9ibGFua2AsdC5yZWw9YG5vb3BlbmVyIG5vcmVmZXJyZXJgKX19YXN5bmMgZnVuY3Rpb24gcChlLHQpe2YoZSxgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkxvYWRpbmcuLi48L3A+YCk7bGV0IG49YXdhaXQoYXdhaXQgZmV0Y2goYC9hcGkvcGFnZT9wYXRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHQpfWApKS5qc29uKCk7aWYobi5lcnJvcilmKGUsYDxwIGNsYXNzPSJ0ZXh0LXJlZC01MDAiPiR7bi5lcnJvcn08L3A+YCk7ZWxzZXtmKGUsbi5odG1sKTtsZXQgdD1sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO2lmKHQpe2xldCBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpfHxlLnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHtDU1MuZXNjYXBlKHQpfSJdYCk7biYmbi5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6YHNtb290aGB9KX19fXZhciBtPVtdO2Z1bmN0aW9uIGgoZSl7bT1lfWZ1bmN0aW9uIGcoKXtsZXQgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2VhcmNoLXRyaWdnZXJgKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtbW9kYWxgKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtYmFja2Ryb3BgKSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtaW5wdXRgKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtcmVzdWx0c2ApLGEsbz0tMSxzPVtdO2UuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLGMpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGtleWRvd25gLGU9PnsoZS5tZXRhS2V5fHxlLmN0cmxLZXkpJiZlLmtleT09PWBrYCYmKGUucHJldmVudERlZmF1bHQoKSxjKCkpfSksbi5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsbCksci5hZGRFdmVudExpc3RlbmVyKGBpbnB1dGAsKCk9PntjbGVhclRpbWVvdXQoYSk7bGV0IGU9ci52YWx1ZS50cmltKCk7aWYoZS5sZW5ndGg8Mil7bz0tMSxzPVtdLHAoKTtyZXR1cm59YT1zZXRUaW1lb3V0KCgpPT51KGUpLDIwMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoYGtleWRvd25gLGU9PntlLmtleT09PWBBcnJvd0Rvd25gPyhlLnByZXZlbnREZWZhdWx0KCksZihvKzEpKTplLmtleT09PWBBcnJvd1VwYD8oZS5wcmV2ZW50RGVmYXVsdCgpLGYoby0xKSk6ZS5rZXk9PT1gRW50ZXJgJiZvPj0wPyhlLnByZXZlbnREZWZhdWx0KCksaChzW29dLnBhdGgpKTplLmtleT09PWBFc2NhcGVgJiZsKCl9KTtmdW5jdGlvbiBjKCl7dC5jbGFzc0xpc3QucmVtb3ZlKGBoaWRkZW5gKSxyLnZhbHVlPWBgLG89LTEscz1bXSxwKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5yLmZvY3VzKCkpfWZ1bmN0aW9uIGwoKXt0LmNsYXNzTGlzdC5hZGQoYGhpZGRlbmApLHIudmFsdWU9YGAscz1bXSxvPS0xfWFzeW5jIGZ1bmN0aW9uIHUoZSl7cz0oYXdhaXQoYXdhaXQgZmV0Y2goYC9hcGkvc2VhcmNoP3E9JHtlbmNvZGVVUklDb21wb25lbnQoZSl9YCkpLmpzb24oKSkucmVzdWx0cyxvPXMubGVuZ3RoPjA/MDotMSxkKCl9ZnVuY3Rpb24gZCgpe2lmKHMubGVuZ3RoPT09MCl7aS5pbm5lckhUTUw9YDxwIGNsYXNzPSJweC00IHB5LTggdGV4dC1zbSB0ZXh0LWdyYXktNDAwIHRleHQtY2VudGVyIj5ObyByZXN1bHRzIGZvdW5kPC9wPmA7cmV0dXJufWkuaW5uZXJIVE1MPXMubWFwKChlLHQpPT5gCiAgICAgIDxhIGhyZWY9IiR7ZS5wYXRofSIgY2xhc3M9InNlYXJjaC1pdGVtIGZsZXggaXRlbXMtc3RhcnQgZ2FwLTMgcHgtNCBweS0zIGJvcmRlci1iIGJvcmRlci1ncmF5LTEwMCBkYXJrOmJvcmRlci1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTUwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgdHJhbnNpdGlvbi1jb2xvcnMgJHt0PT09bz9gYmctZ3JheS01MCBkYXJrOmJnLWdyYXktODAwYDpgYH0iIGRhdGEtaW5kZXg9IiR7dH0iPgogICAgICAgIDxzdmcgY2xhc3M9InNpemUtNCBtdC0wLjUgc2hyaW5rLTAgdGV4dC1ncmF5LTQwMCIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNMTkuNSAxNC4yNXYtMi42MjVhMy4zNzUgMy4zNzUgMCAwIDAtMy4zNzUtMy4zNzVoLTEuNUExLjEyNSAxLjEyNSAwIDAgMSAxMy41IDcuMTI1di0xLjVhMy4zNzUgMy4zNzUgMCAwIDAtMy4zNzUtMy4zNzVIOC4yNW0yLjI1IDBINS42MjVjLS42MjEgMC0xLjEyNS41MDQtMS4xMjUgMS4xMjV2MTcuMjVjMCAuNjIxLjUwNCAxLjEyNSAxLjEyNSAxLjEyNWgxMi43NWMuNjIxIDAgMS4xMjUtLjUwNCAxLjEyNS0xLjEyNVYxMS4yNWE5IDkgMCAwIDAtOS05WiIgLz4KICAgICAgICA8L3N2Zz4KICAgICAgICA8ZGl2IGNsYXNzPSJtaW4tdy0wIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDAiPiR7dihlLnRpdGxlKX08L2Rpdj4KICAgICAgICAgICR7ZS5zbmlwcGV0c1swXT9gPGRpdiBjbGFzcz0idGV4dC14cyB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMCBtdC0wLjUgbGluZS1jbGFtcC0yIj4ke3YoZS5zbmlwcGV0c1swXSl9PC9kaXY+YDpgYH0KICAgICAgICA8L2Rpdj4KICAgICAgPC9hPmApLmpvaW4oYGApLGkucXVlcnlTZWxlY3RvckFsbChgLnNlYXJjaC1pdGVtYCkuZm9yRWFjaChlPT57ZS5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsKCk9PmwoKSl9KX1mdW5jdGlvbiBmKGUpe3MubGVuZ3RoIT09MCYmKG89TWF0aC5tYXgoMCxNYXRoLm1pbihlLHMubGVuZ3RoLTEpKSxkKCksaS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pbmRleD0iJHtvfSJdYCk/LnNjcm9sbEludG9WaWV3KHtibG9jazpgbmVhcmVzdGB9KSl9ZnVuY3Rpb24gcCgpe2xldCBlPV8obSk7aWYoZS5sZW5ndGg9PT0wKXtpLmlubmVySFRNTD1gPHAgY2xhc3M9InB4LTQgcHktOCB0ZXh0LXNtIHRleHQtZ3JheS00MDAgdGV4dC1jZW50ZXIiPlR5cGUgdG8gc2VhcmNo4oCmPC9wPmA7cmV0dXJufXM9ZS5tYXAoZT0+KHtwYXRoOmUucGF0aCx0aXRsZTplLnRpdGxlLHNuaXBwZXRzOltdfSkpLG89LTEsaS5pbm5lckhUTUw9cy5tYXAoKGUsdCk9PmAKICAgICAgPGEgaHJlZj0iJHtlLnBhdGh9IiBjbGFzcz0ic2VhcmNoLWl0ZW0gZmxleCBpdGVtcy1zdGFydCBnYXAtMyBweC00IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktODAwIGhvdmVyOmJnLWdyYXktNTAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCB0cmFuc2l0aW9uLWNvbG9ycyIgZGF0YS1pbmRleD0iJHt0fSI+CiAgICAgICAgPHN2ZyBjbGFzcz0ic2l6ZS00IG10LTAuNSBzaHJpbmstMCB0ZXh0LWdyYXktNDAwIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik0xOS41IDE0LjI1di0yLjYyNWEzLjM3NSAzLjM3NSAwIDAgMC0zLjM3NS0zLjM3NWgtMS41QTEuMTI1IDEuMTI1IDAgMCAxIDEzLjUgNy4xMjV2LTEuNWEzLjM3NSAzLjM3NSAwIDAgMC0zLjM3NS0zLjM3NUg4LjI1bTIuMjUgMEg1LjYyNWMtLjYyMSAwLTEuMTI1LjUwNC0xLjEyNSAxLjEyNXYxNy4yNWMwIC42MjEuNTA0IDEuMTI1IDEuMTI1IDEuMTI1aDEyLjc1Yy42MjEgMCAxLjEyNS0uNTA0IDEuMTI1LTEuMTI1VjExLjI1YTkgOSAwIDAgMC05LTlaIiAvPgogICAgICAgIDwvc3ZnPgogICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LTAiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTEwMCI+JHt2KGUudGl0bGUpfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2E+YCkuam9pbihgYCksaS5xdWVyeVNlbGVjdG9yQWxsKGAuc2VhcmNoLWl0ZW1gKS5mb3JFYWNoKGU9PntlLmFkZEV2ZW50TGlzdGVuZXIoYGNsaWNrYCx0PT57dC5wcmV2ZW50RGVmYXVsdCgpO2xldCBuPU51bWJlcihlLmRhdGFzZXQuaW5kZXgpO2goc1tuXS5wYXRoKX0pfSl9ZnVuY3Rpb24gaChlKXtsb2NhdGlvbi5oYXNoPWUsbCgpfX1mdW5jdGlvbiBfKGUpe2xldCB0PVtdO2ZvcihsZXQgbiBvZiBlKW4ucGFnZSE9PSExJiZ0LnB1c2goe3BhdGg6bi5wYXRoLHRpdGxlOm4udGl0bGV9KSxuLmNoaWxkcmVuJiZ0LnB1c2goLi4uXyhuLmNoaWxkcmVuKSk7cmV0dXJuIHR9ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5yZXBsYWNlKC8mL2csYCZhbXA7YCkucmVwbGFjZSgvPC9nLGAmbHQ7YCkucmVwbGFjZSgvPi9nLGAmZ3Q7YCkucmVwbGFjZSgvIi9nLGAmcXVvdDtgKX12YXIgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2lkZWJhcmApLGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGNvbnRlbnRgKTtyKCksZygpO2Z1bmN0aW9uIHgoZSl7aGlzdG9yeS5wdXNoU3RhdGUobnVsbCxgYCxlKSxTKCl9YXN5bmMgZnVuY3Rpb24gUygpe2xldCBlPWxvY2F0aW9uLnBhdGhuYW1lO2lmKGU9PT1gL2Ape2YoYixgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPlNlbGVjdCBhIHBhZ2UgZnJvbSB0aGUgc2lkZWJhci48L3A+YCk7cmV0dXJufWQoeSxlKSxhd2FpdCBwKGIsZSl9YXN5bmMgZnVuY3Rpb24gQygpe2YoYixgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkxvYWRpbmcuLi48L3A+YCk7bGV0IGU9KGF3YWl0KGF3YWl0IGZldGNoKGAvYXBpL21ldGFgKSkuanNvbigpKS50b2M7aWYobCh5LGUpLGgoZSkseS5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsZT0+e2xldCB0PWUudGFyZ2V0LmNsb3Nlc3QoYGEubmF2LWxpbmtgKTt0JiYoZS5wcmV2ZW50RGVmYXVsdCgpLHgodC5nZXRBdHRyaWJ1dGUoYGRhdGEtcGF0aGApKSl9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihgcG9wc3RhdGVgLFMpLGxvY2F0aW9uLnBhdGhuYW1lPT09YC9gKXtsZXQgdD1zKGUpO2lmKHQpe3godCk7cmV0dXJufX1TKCl9QygpOw==`
595
+ etag: `"2d2f-pscmo5HNdcDiWLYskz489hC/rWg"`,
596
+ mtime: `2026-03-27T14:37:40.339Z`,
597
+ size: 11567,
598
+ path: `../public/assets/index-CIhhqrBM.js`,
599
+ data: `KGZ1bmN0aW9uKCl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgbGlua2ApLnJlbExpc3Q7aWYoZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cyhgbW9kdWxlcHJlbG9hZGApKXJldHVybjtmb3IobGV0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXWApKW4oZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2ZvcihsZXQgdCBvZiBlKWlmKHQudHlwZT09PWBjaGlsZExpc3RgKWZvcihsZXQgZSBvZiB0LmFkZGVkTm9kZXMpZS50YWdOYW1lPT09YExJTktgJiZlLnJlbD09PWBtb2R1bGVwcmVsb2FkYCYmbihlKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gdChlKXtsZXQgdD17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJih0LmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKHQucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksZS5jcm9zc09yaWdpbj09PWB1c2UtY3JlZGVudGlhbHNgP3QuY3JlZGVudGlhbHM9YGluY2x1ZGVgOmUuY3Jvc3NPcmlnaW49PT1gYW5vbnltb3VzYD90LmNyZWRlbnRpYWxzPWBvbWl0YDp0LmNyZWRlbnRpYWxzPWBzYW1lLW9yaWdpbmAsdH1mdW5jdGlvbiBuKGUpe2lmKGUuZXApcmV0dXJuO2UuZXA9ITA7bGV0IG49dChlKTtmZXRjaChlLmhyZWYsbil9fSkoKTt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgaWNvbi1zdW5gKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpY29uLW1vb25gKTtmdW5jdGlvbiBuKCl7bGV0IG49bG9jYWxTdG9yYWdlLmdldEl0ZW0oYHRoZW1lYCkscj1uPT09YGRhcmtgfHwhbiYmd2luZG93Lm1hdGNoTWVkaWEoYChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylgKS5tYXRjaGVzO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKGBkYXJrYCxyKSxlLmNsYXNzTGlzdC50b2dnbGUoYGhpZGRlbmAsIXIpLHQuY2xhc3NMaXN0LnRvZ2dsZShgaGlkZGVuYCxyKX1mdW5jdGlvbiByKCl7bigpLHdpbmRvdy5tYXRjaE1lZGlhKGAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspYCkuYWRkRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCwoKT0+e2xvY2FsU3RvcmFnZS5nZXRJdGVtKGB0aGVtZWApfHxuKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdGhlbWUtdG9nZ2xlYCkuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLCgpPT57bGV0IGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhgZGFya2ApO2xvY2FsU3RvcmFnZS5zZXRJdGVtKGB0aGVtZWAsZT9gbGlnaHRgOmBkYXJrYCksbigpfSl9ZnVuY3Rpb24gaShlLHQpe3JldHVybiBlLnBhdGg9PT10PyEwOmUuY2hpbGRyZW4/LnNvbWUoZT0+aShlLHQpKT8/ITF9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlLm1hcChlPT57bGV0IG49ZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5sZW5ndGg+MCxyPW4/YShlLmNoaWxkcmVuLHQrMSk6YGAsaT0xMit0KjEyO3JldHVybmAKICAgICAgICA8bGk+CiAgICAgICAgICAke2UucGFnZSE9PSExJiYhKG4mJmUuY2hpbGRyZW4/LlswXT8ucGF0aD09PWUucGF0aCk/YDxhIGhyZWY9IiR7ZS5wYXRofSIKICAgICAgICAgICAgY2xhc3M9Im5hdi1saW5rIGJsb2NrIHB5LTEuNSB0ZXh0LXNtICR7bj9gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDBgOmB0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTQwMGB9IGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS05MDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOnRleHQtZ3JheS0xMDAgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyIKICAgICAgICAgICAgc3R5bGU9InBhZGRpbmctbGVmdDogJHtpfXB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4IgogICAgICAgICAgICBkYXRhLXBhdGg9IiR7ZS5wYXRofSI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvYT5gOmA8c3BhbgogICAgICAgICAgICBjbGFzcz0iYmxvY2sgcHktMS41IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDAgY3Vyc29yLWRlZmF1bHQiCiAgICAgICAgICAgIHN0eWxlPSJwYWRkaW5nLWxlZnQ6ICR7aX1weDsgcGFkZGluZy1yaWdodDogMTJweCI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvc3Bhbj5gfQogICAgICAgICAgJHtyP2A8dWwgY2xhc3M9Im10LTAuNSI+JHtyfTwvdWw+YDpgYH0KICAgICAgICA8L2xpPmB9KS5qb2luKGBgKX1mdW5jdGlvbiBvKGUsdCl7bGV0IG49ZS5zb21lKGU9PmkoZSx0KSkscj0hMDtyZXR1cm4gZS5tYXAoZT0+e2lmKCEoZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5sZW5ndGg+MCkpcmV0dXJuYDxsaT4ke2UucGFnZT09PSExP2A8c3BhbiBjbGFzcz0iYmxvY2sgcHktMS41IHB4LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTEwMCBjdXJzb3ItZGVmYXVsdCI+CiAgICAgICAgICAgICAgICAke2UudGl0bGV9CiAgICAgICAgICAgICAgPC9zcGFuPmA6YDxhIGhyZWY9IiR7ZS5wYXRofSIKICAgICAgICAgICAgICAgIGNsYXNzPSJuYXYtbGluayBibG9jayBweS0xLjUgcHgtMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIGhvdmVyOmJnLWdyYXktMTAwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgcm91bmRlZC1tZCB0cmFuc2l0aW9uLWNvbG9ycyIKICAgICAgICAgICAgICAgIGRhdGEtcGF0aD0iJHtlLnBhdGh9Ij4KICAgICAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgICAgICA8L2E+YH08L2xpPmA7bGV0IG89aShlLHQpfHwhbiYmcjtyPSExO2xldCBzPWUucGFnZSE9PSExJiZlLmNoaWxkcmVuPy5bMF0/LnBhdGghPT1lLnBhdGgsYz1gPHN2ZyBjbGFzcz0ibmF2LWNoZXZyb24gdy00IGgtNCB0ZXh0LWdyYXktNDAwIHRyYW5zaXRpb24tdHJhbnNmb3JtICR7bz9gcm90YXRlLTkwYDpgYH0iIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjIxIDE0Ljc3YS43NS43NSAwIDAxLjAyLTEuMDZMMTEuMTY4IDEwIDcuMjMgNi4yOWEuNzUuNzUgMCAxMTEuMDQtMS4wOGw0LjUgNC4yNWEuNzUuNzUgMCAwMTAgMS4wOGwtNC41IDQuMjVhLjc1Ljc1IDAgMDEtMS4wNi0uMDJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz5gLGw9cz9gPGEgaHJlZj0iJHtlLnBhdGh9IgogICAgICAgICAgICBjbGFzcz0ibmF2LWxpbmsgZmxleC0xIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIGhvdmVyOnRleHQtZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LWdyYXktMzAwIHRyYW5zaXRpb24tY29sb3JzIgogICAgICAgICAgICBkYXRhLXBhdGg9IiR7ZS5wYXRofSI+CiAgICAgICAgICAgICR7ZS50aXRsZX0KICAgICAgICAgIDwvYT5gOmA8c3BhbiBjbGFzcz0iZmxleC0xIHB5LTEuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LWdyYXktMTAwIj4KICAgICAgICAgICAgJHtlLnRpdGxlfQogICAgICAgICAgPC9zcGFuPmAsdT1hKGUuY2hpbGRyZW4sMSk7cmV0dXJuYAogICAgICAgIDxsaSBkYXRhLXNlY3Rpb249IiR7ZS5wYXRofSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBweC0zIHJvdW5kZWQtbWQgaG92ZXI6YmctZ3JheS0xMDAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi10b2dnbGUgcC0wLjUgLW1sLTEgbXItMSIgZGF0YS1zZWN0aW9uPSIke2UucGF0aH0iIGFyaWEtbGFiZWw9IlRvZ2dsZSBzZWN0aW9uIj4KICAgICAgICAgICAgICAke2N9CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAke2x9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx1bCBjbGFzcz0ibmF2LXNlY3Rpb24gbXQtMC41ICR7bz9gYDpgaGlkZGVuYH0iIGRhdGEtc2VjdGlvbj0iJHtlLnBhdGh9Ij4KICAgICAgICAgICAgJHt1fQogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPmB9KS5qb2luKGBgKX1mdW5jdGlvbiBzKGUpe2ZvcihsZXQgdCBvZiBlKXtpZih0LnBhZ2UhPT0hMSlyZXR1cm4gdC5wYXRoO2lmKHQuY2hpbGRyZW4pe2xldCBlPXModC5jaGlsZHJlbik7aWYoZSlyZXR1cm4gZX19fXZhciBjPVtdO2Z1bmN0aW9uIGwoZSx0KXtjPXQ7bGV0IG49bG9jYXRpb24ucGF0aG5hbWU7ZS5pbm5lckhUTUw9dC5sZW5ndGg/YDx1bCBjbGFzcz0ic3BhY2UteS0wLjUiPiR7byh0LG4pfTwvdWw+YDpgPHAgY2xhc3M9InB4LTMgcHktMiB0ZXh0LXNtIHRleHQtZ3JheS00MDAiPk5vIHBhZ2VzIGxvYWRlZDwvcD5gLGUuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLHQ9PntsZXQgbj10LnRhcmdldCxyPW4uY2xvc2VzdChgLm5hdi10b2dnbGVgKTtpZihyKXt1KGUsci5kYXRhc2V0LnNlY3Rpb24pO3JldHVybn1sZXQgaT1uLmNsb3Nlc3QoYGxpW2RhdGEtc2VjdGlvbl1gKTtpJiYhbi5jbG9zZXN0KGAubmF2LWxpbmtgKSYmdShlLGkuZGF0YXNldC5zZWN0aW9uKX0pfWZ1bmN0aW9uIHUoZSx0KXtsZXQgbj1lLnF1ZXJ5U2VsZWN0b3IoYHVsLm5hdi1zZWN0aW9uW2RhdGEtc2VjdGlvbj0iJHt0fSJdYCk7biYmKG4uY2xhc3NMaXN0LmNvbnRhaW5zKGBoaWRkZW5gKT8oZS5xdWVyeVNlbGVjdG9yQWxsKGB1bC5uYXYtc2VjdGlvbmApLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LmFkZChgaGlkZGVuYCl9KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoYC5uYXYtY2hldnJvbmApLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LnJlbW92ZShgcm90YXRlLTkwYCl9KSxuLmNsYXNzTGlzdC5yZW1vdmUoYGhpZGRlbmApLGUucXVlcnlTZWxlY3RvcihgLm5hdi10b2dnbGVbZGF0YS1zZWN0aW9uPSIke3R9Il0gLm5hdi1jaGV2cm9uYCk/LmNsYXNzTGlzdC5hZGQoYHJvdGF0ZS05MGApKToobi5jbGFzc0xpc3QuYWRkKGBoaWRkZW5gKSxlLnF1ZXJ5U2VsZWN0b3IoYC5uYXYtdG9nZ2xlW2RhdGEtc2VjdGlvbj0iJHt0fSJdIC5uYXYtY2hldnJvbmApPy5jbGFzc0xpc3QucmVtb3ZlKGByb3RhdGUtOTBgKSkpfWZ1bmN0aW9uIGQoZSx0KXtlLnF1ZXJ5U2VsZWN0b3JBbGwoYC5uYXYtbGlua2ApLmZvckVhY2goZT0+e2xldCBuPWUuZ2V0QXR0cmlidXRlKGBkYXRhLXBhdGhgKT09PXQ7ZS5jbGFzc0xpc3QudG9nZ2xlKGBuYXYtYWN0aXZlYCxuKSxlLmNsYXNzTGlzdC50b2dnbGUoYGZvbnQtbWVkaXVtYCxuKX0pO2xldCBuPWMuZmluZChlPT5pKGUsdCkpO24/LmNoaWxkcmVuPy5sZW5ndGgmJihlLnF1ZXJ5U2VsZWN0b3JBbGwoYHVsLm5hdi1zZWN0aW9uYCkuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QuYWRkKGBoaWRkZW5gKX0pLGUucXVlcnlTZWxlY3RvckFsbChgLm5hdi1jaGV2cm9uYCkuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QucmVtb3ZlKGByb3RhdGUtOTBgKX0pLGUucXVlcnlTZWxlY3RvcihgdWwubmF2LXNlY3Rpb25bZGF0YS1zZWN0aW9uPSIke24ucGF0aH0iXWApPy5jbGFzc0xpc3QucmVtb3ZlKGBoaWRkZW5gKSxlLnF1ZXJ5U2VsZWN0b3IoYC5uYXYtdG9nZ2xlW2RhdGEtc2VjdGlvbj0iJHtuLnBhdGh9Il0gLm5hdi1jaGV2cm9uYCk/LmNsYXNzTGlzdC5hZGQoYHJvdGF0ZS05MGApKX1mdW5jdGlvbiBmKGUsdCl7ZS5pbm5lckhUTUw9YDxhcnRpY2xlIGNsYXNzPSJwcm9zZSBwcm9zZS1ncmF5IG1heC13LW5vbmUiPiR7dH08L2FydGljbGU+YDtmb3IobGV0IHQgb2YgZS5xdWVyeVNlbGVjdG9yQWxsKGBhW2hyZWZdYCkpe2xldCBuPXQuZ2V0QXR0cmlidXRlKGBocmVmYCk7bi5zdGFydHNXaXRoKGAvYCk/dC5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsZT0+e2UucHJldmVudERlZmF1bHQoKSxoaXN0b3J5LnB1c2hTdGF0ZShudWxsLGBgLG4pLHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBQb3BTdGF0ZUV2ZW50KGBwb3BzdGF0ZWApKX0pOm4uc3RhcnRzV2l0aChgI2ApP3QuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLHQ9Pnt0LnByZXZlbnREZWZhdWx0KCk7bGV0IHI9bi5zbGljZSgxKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHIpfHxlLnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHtDU1MuZXNjYXBlKHIpfSJdYCk7aSYmKGkuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOmBzbW9vdGhgfSksaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxgYCxuKSl9KTovXmh0dHBzPzpcL1wvLy50ZXN0KG4pJiYodC50YXJnZXQ9YF9ibGFua2AsdC5yZWw9YG5vb3BlbmVyIG5vcmVmZXJyZXJgKX19YXN5bmMgZnVuY3Rpb24gcChlLHQpe2YoZSxgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkxvYWRpbmcuLi48L3A+YCk7bGV0IG49YXdhaXQoYXdhaXQgZmV0Y2goYC9hcGkvcGFnZT9wYXRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHQpfWApKS5qc29uKCk7aWYobi5lcnJvcilmKGUsYDxwIGNsYXNzPSJ0ZXh0LXJlZC01MDAiPiR7bi5lcnJvcn08L3A+YCk7ZWxzZXtmKGUsbi5odG1sKTtsZXQgdD1sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO2lmKHQpe2xldCBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpfHxlLnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHtDU1MuZXNjYXBlKHQpfSJdYCk7biYmbi5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6YHNtb290aGB9KX19fXZhciBtPVtdO2Z1bmN0aW9uIGgoZSl7bT1lfWZ1bmN0aW9uIGcoKXtsZXQgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2VhcmNoLXRyaWdnZXJgKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtbW9kYWxgKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtYmFja2Ryb3BgKSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtaW5wdXRgKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWFyY2gtcmVzdWx0c2ApLGEsbz0tMSxzPVtdO2UuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLGMpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGtleWRvd25gLGU9PnsoZS5tZXRhS2V5fHxlLmN0cmxLZXkpJiZlLmtleT09PWBrYCYmKGUucHJldmVudERlZmF1bHQoKSxjKCkpfSksbi5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsbCksci5hZGRFdmVudExpc3RlbmVyKGBpbnB1dGAsKCk9PntjbGVhclRpbWVvdXQoYSk7bGV0IGU9ci52YWx1ZS50cmltKCk7aWYoZS5sZW5ndGg8Mil7bz0tMSxzPVtdLHAoKTtyZXR1cm59YT1zZXRUaW1lb3V0KCgpPT51KGUpLDIwMCl9KSxyLmFkZEV2ZW50TGlzdGVuZXIoYGtleWRvd25gLGU9PntlLmtleT09PWBBcnJvd0Rvd25gPyhlLnByZXZlbnREZWZhdWx0KCksZihvKzEpKTplLmtleT09PWBBcnJvd1VwYD8oZS5wcmV2ZW50RGVmYXVsdCgpLGYoby0xKSk6ZS5rZXk9PT1gRW50ZXJgJiZvPj0wPyhlLnByZXZlbnREZWZhdWx0KCksaChzW29dLnBhdGgpKTplLmtleT09PWBFc2NhcGVgJiZsKCl9KTtmdW5jdGlvbiBjKCl7dC5jbGFzc0xpc3QucmVtb3ZlKGBoaWRkZW5gKSxyLnZhbHVlPWBgLG89LTEscz1bXSxwKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5yLmZvY3VzKCkpfWZ1bmN0aW9uIGwoKXt0LmNsYXNzTGlzdC5hZGQoYGhpZGRlbmApLHIudmFsdWU9YGAscz1bXSxvPS0xfWFzeW5jIGZ1bmN0aW9uIHUoZSl7cz0oYXdhaXQoYXdhaXQgZmV0Y2goYC9hcGkvc2VhcmNoP3E9JHtlbmNvZGVVUklDb21wb25lbnQoZSl9YCkpLmpzb24oKSkucmVzdWx0cyxvPXMubGVuZ3RoPjA/MDotMSxkKCl9ZnVuY3Rpb24gZCgpe2lmKHMubGVuZ3RoPT09MCl7aS5pbm5lckhUTUw9YDxwIGNsYXNzPSJweC00IHB5LTggdGV4dC1zbSB0ZXh0LWdyYXktNDAwIHRleHQtY2VudGVyIj5ObyByZXN1bHRzIGZvdW5kPC9wPmA7cmV0dXJufWkuaW5uZXJIVE1MPXMubWFwKChlLHQpPT5gCiAgICAgIDxhIGhyZWY9IiR7ZS5wYXRofSIgY2xhc3M9InNlYXJjaC1pdGVtIGZsZXggaXRlbXMtc3RhcnQgZ2FwLTMgcHgtNCBweS0zIGJvcmRlci1iIGJvcmRlci1ncmF5LTEwMCBkYXJrOmJvcmRlci1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTUwIGRhcms6aG92ZXI6YmctZ3JheS04MDAgdHJhbnNpdGlvbi1jb2xvcnMgJHt0PT09bz9gYmctZ3JheS01MCBkYXJrOmJnLWdyYXktODAwYDpgYH0iIGRhdGEtaW5kZXg9IiR7dH0iPgogICAgICAgIDxzdmcgY2xhc3M9InNpemUtNCBtdC0wLjUgc2hyaW5rLTAgdGV4dC1ncmF5LTQwMCIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiPgogICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNMTkuNSAxNC4yNXYtMi42MjVhMy4zNzUgMy4zNzUgMCAwIDAtMy4zNzUtMy4zNzVoLTEuNUExLjEyNSAxLjEyNSAwIDAgMSAxMy41IDcuMTI1di0xLjVhMy4zNzUgMy4zNzUgMCAwIDAtMy4zNzUtMy4zNzVIOC4yNW0yLjI1IDBINS42MjVjLS42MjEgMC0xLjEyNS41MDQtMS4xMjUgMS4xMjV2MTcuMjVjMCAuNjIxLjUwNCAxLjEyNSAxLjEyNSAxLjEyNWgxMi43NWMuNjIxIDAgMS4xMjUtLjUwNCAxLjEyNS0xLjEyNVYxMS4yNWE5IDkgMCAwIDAtOS05WiIgLz4KICAgICAgICA8L3N2Zz4KICAgICAgICA8ZGl2IGNsYXNzPSJtaW4tdy0wIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS0xMDAiPiR7dihlLnRpdGxlKX08L2Rpdj4KICAgICAgICAgICR7ZS5zbmlwcGV0c1swXT9gPGRpdiBjbGFzcz0idGV4dC14cyB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMCBtdC0wLjUgbGluZS1jbGFtcC0yIj4ke3YoZS5zbmlwcGV0c1swXSl9PC9kaXY+YDpgYH0KICAgICAgICA8L2Rpdj4KICAgICAgPC9hPmApLmpvaW4oYGApLGkucXVlcnlTZWxlY3RvckFsbChgLnNlYXJjaC1pdGVtYCkuZm9yRWFjaChlPT57ZS5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsKCk9PmwoKSl9KX1mdW5jdGlvbiBmKGUpe3MubGVuZ3RoIT09MCYmKG89TWF0aC5tYXgoMCxNYXRoLm1pbihlLHMubGVuZ3RoLTEpKSxkKCksaS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pbmRleD0iJHtvfSJdYCk/LnNjcm9sbEludG9WaWV3KHtibG9jazpgbmVhcmVzdGB9KSl9ZnVuY3Rpb24gcCgpe2xldCBlPV8obSk7aWYoZS5sZW5ndGg9PT0wKXtpLmlubmVySFRNTD1gPHAgY2xhc3M9InB4LTQgcHktOCB0ZXh0LXNtIHRleHQtZ3JheS00MDAgdGV4dC1jZW50ZXIiPlR5cGUgdG8gc2VhcmNo4oCmPC9wPmA7cmV0dXJufXM9ZS5tYXAoZT0+KHtwYXRoOmUucGF0aCx0aXRsZTplLnRpdGxlLHNuaXBwZXRzOltdfSkpLG89LTEsaS5pbm5lckhUTUw9cy5tYXAoKGUsdCk9PmAKICAgICAgPGEgaHJlZj0iJHtlLnBhdGh9IiBjbGFzcz0ic2VhcmNoLWl0ZW0gZmxleCBpdGVtcy1zdGFydCBnYXAtMyBweC00IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWdyYXktMTAwIGRhcms6Ym9yZGVyLWdyYXktODAwIGhvdmVyOmJnLWdyYXktNTAgZGFyazpob3ZlcjpiZy1ncmF5LTgwMCB0cmFuc2l0aW9uLWNvbG9ycyIgZGF0YS1pbmRleD0iJHt0fSI+CiAgICAgICAgPHN2ZyBjbGFzcz0ic2l6ZS00IG10LTAuNSBzaHJpbmstMCB0ZXh0LWdyYXktNDAwIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik0xOS41IDE0LjI1di0yLjYyNWEzLjM3NSAzLjM3NSAwIDAgMC0zLjM3NS0zLjM3NWgtMS41QTEuMTI1IDEuMTI1IDAgMCAxIDEzLjUgNy4xMjV2LTEuNWEzLjM3NSAzLjM3NSAwIDAgMC0zLjM3NS0zLjM3NUg4LjI1bTIuMjUgMEg1LjYyNWMtLjYyMSAwLTEuMTI1LjUwNC0xLjEyNSAxLjEyNXYxNy4yNWMwIC42MjEuNTA0IDEuMTI1IDEuMTI1IDEuMTI1aDEyLjc1Yy42MjEgMCAxLjEyNS0uNTA0IDEuMTI1LTEuMTI1VjExLjI1YTkgOSAwIDAgMC05LTlaIiAvPgogICAgICAgIDwvc3ZnPgogICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LTAiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTEwMCI+JHt2KGUudGl0bGUpfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2E+YCkuam9pbihgYCksaS5xdWVyeVNlbGVjdG9yQWxsKGAuc2VhcmNoLWl0ZW1gKS5mb3JFYWNoKGU9PntlLmFkZEV2ZW50TGlzdGVuZXIoYGNsaWNrYCx0PT57dC5wcmV2ZW50RGVmYXVsdCgpO2xldCBuPU51bWJlcihlLmRhdGFzZXQuaW5kZXgpO2goc1tuXS5wYXRoKX0pfSl9ZnVuY3Rpb24gaChlKXtsb2NhdGlvbi5oYXNoPWUsbCgpfX1mdW5jdGlvbiBfKGUpe2xldCB0PVtdO2ZvcihsZXQgbiBvZiBlKW4ucGFnZSE9PSExJiZ0LnB1c2goe3BhdGg6bi5wYXRoLHRpdGxlOm4udGl0bGV9KSxuLmNoaWxkcmVuJiZ0LnB1c2goLi4uXyhuLmNoaWxkcmVuKSk7cmV0dXJuIHR9ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5yZXBsYWNlKC8mL2csYCZhbXA7YCkucmVwbGFjZSgvPC9nLGAmbHQ7YCkucmVwbGFjZSgvPi9nLGAmZ3Q7YCkucmVwbGFjZSgvIi9nLGAmcXVvdDtgKX12YXIgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2lkZWJhcmApLGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGNvbnRlbnRgKTtyKCksZygpO2Z1bmN0aW9uIHgoZSl7aGlzdG9yeS5wdXNoU3RhdGUobnVsbCxgYCxlKSxTKCl9YXN5bmMgZnVuY3Rpb24gUygpe2xldCBlPWxvY2F0aW9uLnBhdGhuYW1lO2lmKGU9PT1gL2Ape2YoYixgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPlNlbGVjdCBhIHBhZ2UgZnJvbSB0aGUgc2lkZWJhci48L3A+YCk7cmV0dXJufWQoeSxlKSxhd2FpdCBwKGIsZSl9YXN5bmMgZnVuY3Rpb24gQygpe2xldCBlPShhd2FpdChhd2FpdCBmZXRjaChgL2FwaS9tZXRhYCkpLmpzb24oKSkudG9jO3JldHVybiBsKHksZSksaChlKSxkKHksbG9jYXRpb24ucGF0aG5hbWUpLGV9YXN5bmMgZnVuY3Rpb24gdygpe2YoYixgPHAgY2xhc3M9InRleHQtZ3JheS00MDAiPkxvYWRpbmcuLi48L3A+YCk7bGV0IGU9YXdhaXQgQygpO2lmKHkuYWRkRXZlbnRMaXN0ZW5lcihgY2xpY2tgLGU9PntsZXQgdD1lLnRhcmdldC5jbG9zZXN0KGBhLm5hdi1saW5rYCk7dCYmKGUucHJldmVudERlZmF1bHQoKSx4KHQuZ2V0QXR0cmlidXRlKGBkYXRhLXBhdGhgKSkpfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoYHBvcHN0YXRlYCxTKSxsb2NhdGlvbi5wYXRobmFtZT09PWAvYCl7bGV0IHQ9cyhlKTtpZih0KXt4KHQpO3JldHVybn19UygpLFQoKX1mdW5jdGlvbiBUKCl7bGV0IGU9bmV3IEV2ZW50U291cmNlKGAvYXBpL3dhdGNoYCk7ZS5vbm1lc3NhZ2U9YXN5bmMoKT0+e2F3YWl0IEMoKTtsZXQgZT1sb2NhdGlvbi5wYXRobmFtZTtlIT09YC9gJiZhd2FpdCBwKGIsZSl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGBiZWZvcmV1bmxvYWRgLCgpPT5lLmNsb3NlKCkpfXcoKTs=`
468
600
  },
469
601
  "/assets/logo-BLkVGWak.svg": {
470
602
  type: `image/svg+xml`,
471
603
  etag: `"557-HYXN/qI1kFu3DGsCSw4J8HIDoeU"`,
472
- mtime: `2026-03-24T10:49:38.807Z`,
604
+ mtime: `2026-03-27T14:37:40.339Z`,
473
605
  size: 1367,
474
606
  path: `../public/assets/logo-BLkVGWak.svg`,
475
607
  data: `PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgPCEtLSBCb2R5OiByb3VuZGVkIHJlY3RhbmdsZSAoZG9jdW1lbnQgc2hhcGUpIC0tPgogIDxyZWN0IHg9IjQwIiB5PSIzMCIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxNTAiIHJ4PSIxOCIgcnk9IjE4IiBmaWxsPSIjMkIyRDQyIi8+CgogIDwhLS0gRG9jdW1lbnQgbGluZXMgKG1hcmtkb3duIGZlZWwpIC0tPgogIDxyZWN0IHg9IjYyIiB5PSI3MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjYiIHJ4PSIzIiBmaWxsPSIjOEQ5OUFFIi8+CiAgPHJlY3QgeD0iNjIiIHk9Ijg2IiB3aWR0aD0iNzYiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KICA8cmVjdCB4PSI2MiIgeT0iMTAyIiB3aWR0aD0iNjIiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KICA8cmVjdCB4PSI2MiIgeT0iMTE4IiB3aWR0aD0iNzAiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KICA8cmVjdCB4PSI2MiIgeT0iMTM0IiB3aWR0aD0iNDAiIGhlaWdodD0iNiIgcng9IjMiIGZpbGw9IiM4RDk5QUUiLz4KCiAgPCEtLSBIZWFkaW5nIGhhc2ggbWFyayAobWFya2Rvd24gIykgLS0+CiAgPHRleHQgeD0iNjIiIHk9IjYwIiBmb250LWZhbWlseT0ibW9ub3NwYWNlIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxOCIgZmlsbD0iI0VERjJGNCI+IzwvdGV4dD4KCiAgPCEtLSBFeWVzIC0tPgogIDxjaXJjbGUgY3g9Ijc4IiBjeT0iMTcyIiByPSI1IiBmaWxsPSIjRUYyMzNDIi8+CiAgPGNpcmNsZSBjeD0iMTIyIiBjeT0iMTcyIiByPSI1IiBmaWxsPSIjRUYyMzNDIi8+CgogIDwhLS0gVGVldGggKHppbGxhIGJpdGUgb24gYm90dG9tKSAtLT4KICA8cG9seWdvbiBwb2ludHM9IjY4LDE4MCA3NCwxOTIgODAsMTgwIiBmaWxsPSIjRURGMkY0Ii8+CiAgPHBvbHlnb24gcG9pbnRzPSI4OCwxODAgOTQsMTkyIDEwMCwxODAiIGZpbGw9IiNFREYyRjQiLz4KICA8cG9seWdvbiBwb2ludHM9IjEwOCwxODAgMTE0LDE5MiAxMjAsMTgwIiBmaWxsPSIjRURGMkY0Ii8+CiAgPHBvbHlnb24gcG9pbnRzPSIxMjgsMTgwIDEzNCwxOTIgMTQwLDE4MCIgZmlsbD0iI0VERjJGNCIvPgoKICA8IS0tIFNwaWtlcyBvbiB0b3AgKHppbGxhIGhvcm5zKSAtLT4KICA8cG9seWdvbiBwb2ludHM9IjcwLDMwIDc4LDEwIDg2LDMwIiBmaWxsPSIjMkIyRDQyIi8+CiAgPHBvbHlnb24gcG9pbnRzPSI5MiwzMCAxMDAsNiAxMDgsMzAiIGZpbGw9IiMyQjJENDIiLz4KICA8cG9seWdvbiBwb2ludHM9IjExNCwzMCAxMjIsMTAgMTMwLDMwIiBmaWxsPSIjMkIyRDQyIi8+Cjwvc3ZnPgo=`
476
608
  }
477
609
  };
478
- function Be(e) {
479
- if (U[e]) return U[e]._data ? U[e]._data : U[e].data ? (U[e]._data = Uint8Array.from(atob(U[e].data), (e) => e.charCodeAt(0)), U[e]._data) : U[e].data;
610
+ function Ye(e) {
611
+ if (H[e]) return H[e]._data ? H[e]._data : H[e].data ? (H[e]._data = Uint8Array.from(atob(H[e].data), (e) => e.charCodeAt(0)), H[e]._data) : H[e].data;
480
612
  }
481
- var Ve = {};
482
- function He(e = ``) {
483
- if (U[e]) return !0;
484
- for (let t in Ve) if (e.startsWith(t)) return !0;
613
+ var Xe = {};
614
+ function Ze(e = ``) {
615
+ if (H[e]) return !0;
616
+ for (let t in Xe) if (e.startsWith(t)) return !0;
485
617
  return !1;
486
618
  }
487
- function Ue(e) {
488
- return U[e];
619
+ function Qe(e) {
620
+ return H[e];
489
621
  }
490
- V();
491
- var We = new Set([`HEAD`, `GET`]), Ge = {
622
+ B();
623
+ var $e = new Set([`HEAD`, `GET`]), et = {
492
624
  gzip: `.gz`,
493
625
  br: `.br`,
494
626
  zstd: `.zst`
495
- }, Ke = T((e) => {
496
- if (e.req.method && !We.has(e.req.method)) return;
497
- let t = Ae(Ie(Ne(e.url.pathname))), n, r = [...(e.req.headers.get(`accept-encoding`) || ``).split(`,`).map((e) => Ge[e.trim()]).filter(Boolean).sort(), ``];
498
- for (let e of r) for (let r of [t + e, Re(t, `index.html` + e)]) {
499
- let e = Ue(r);
627
+ }, tt = D((e) => {
628
+ if (e.req.method && !$e.has(e.req.method)) return;
629
+ let t = ze(Ge(He(e.url.pathname))), n, r = [...(e.req.headers.get(`accept-encoding`) || ``).split(`,`).map((e) => et[e.trim()]).filter(Boolean).sort(), ``];
630
+ for (let e of r) for (let r of [t + e, qe(t, `index.html` + e)]) {
631
+ let e = Qe(r);
500
632
  if (e) {
501
633
  n = e, t = r;
502
634
  break;
503
635
  }
504
636
  }
505
637
  if (!n) {
506
- if (He(t)) throw e.res.headers.delete(`Cache-Control`), new N({ status: 404 });
638
+ if (Ze(t)) throw e.res.headers.delete(`Cache-Control`), new F({ status: 404 });
507
639
  return;
508
640
  }
509
641
  if (r.length > 1 && e.res.headers.append(`Vary`, `Accept-Encoding`), e.req.headers.get(`if-none-match`) === n.etag) return e.res.status = 304, e.res.statusText = `Not Modified`, ``;
510
642
  let i = e.req.headers.get(`if-modified-since`), a = new Date(n.mtime);
511
- return i && n.mtime && new Date(i) >= a ? (e.res.status = 304, e.res.statusText = `Not Modified`, ``) : (n.type && e.res.headers.set(`Content-Type`, n.type), n.etag && !e.res.headers.has(`ETag`) && e.res.headers.set(`ETag`, n.etag), n.mtime && !e.res.headers.has(`Last-Modified`) && e.res.headers.set(`Last-Modified`, a.toUTCString()), n.encoding && !e.res.headers.has(`Content-Encoding`) && e.res.headers.set(`Content-Encoding`, n.encoding), n.size > 0 && !e.res.headers.has(`Content-Length`) && e.res.headers.set(`Content-Length`, n.size.toString()), Be(t));
512
- }), W = v((() => {
513
- V();
643
+ return i && n.mtime && new Date(i) >= a ? (e.res.status = 304, e.res.statusText = `Not Modified`, ``) : (n.type && e.res.headers.set(`Content-Type`, n.type), n.etag && !e.res.headers.has(`ETag`) && e.res.headers.set(`ETag`, n.etag), n.mtime && !e.res.headers.has(`Last-Modified`) && e.res.headers.set(`Last-Modified`, a.toUTCString()), n.encoding && !e.res.headers.has(`Content-Encoding`) && e.res.headers.set(`Content-Encoding`, n.encoding), n.size > 0 && !e.res.headers.has(`Content-Length`) && e.res.headers.set(`Content-Length`, n.size.toString()), Ye(t));
644
+ }), U = b((() => {
645
+ B();
514
646
  }));
515
- function G(e, t, n) {
647
+ function nt(e, t, n) {
516
648
  let r = [];
517
649
  for (let i of e) r.push({
518
650
  entry: i,
519
651
  depth: t,
520
652
  filePath: n.get(i.path)
521
- }), i.children && r.push(...G(i.children, t + 1, n));
653
+ }), i.children && r.push(...nt(i.children, t + 1, n));
522
654
  return r;
523
655
  }
524
- function qe(e, t) {
656
+ function rt(e, t) {
525
657
  let n = e.toLowerCase(), r = t.toLowerCase();
526
658
  if (n.length === 0) return 0;
527
659
  if (n.length > r.length) return -1;
@@ -529,14 +661,14 @@ function qe(e, t) {
529
661
  for (let e = 0; e < r.length && a < n.length; e++) r[e] === n[a] && (o === e - 1 && (i -= 5), (e === 0 || `/\\-_. `.includes(r[e - 1])) && (i -= 10), o >= 0 && (i += e - o - 1), o = e, a++);
530
662
  return a < n.length ? -1 : (i += r.length * .1, i);
531
663
  }
532
- function Je(e, t, n) {
664
+ function it(e, t, n) {
533
665
  if (!t) return e;
534
666
  let r = [];
535
667
  for (let i of e) {
536
668
  let e = Infinity;
537
669
  for (let r of n(i)) {
538
- let n = qe(t, r);
539
- n >= 0 && n < e && (e = n);
670
+ let n = rt(t, r);
671
+ n !== -1 && n < e && (e = n);
540
672
  }
541
673
  e < Infinity && r.push({
542
674
  item: i,
@@ -545,23 +677,54 @@ function Je(e, t, n) {
545
677
  }
546
678
  return r.sort((e, t) => e.score - t.score), r.map((e) => e.item);
547
679
  }
548
- var Ye, Xe = v((() => {
549
- Ye = class {
680
+ function at(e, t, n = 1) {
681
+ let r = [], i = e.split(`
682
+ `);
683
+ for (let e = 0; e < i.length; e++) if (i[e].toLowerCase().includes(t)) {
684
+ let t = [];
685
+ for (let r = Math.max(0, e - n); r <= Math.min(i.length - 1, e + n); r++) r !== e && t.push(i[r].trim());
686
+ r.push({
687
+ line: e + 1,
688
+ text: i[e].trim(),
689
+ context: t
690
+ });
691
+ }
692
+ return r;
693
+ }
694
+ var W, ot = b((() => {
695
+ W = class {
550
696
  source;
551
697
  tree = [];
552
698
  flat = [];
553
699
  _fileMap = /* @__PURE__ */ new Map();
554
700
  _contentCache = /* @__PURE__ */ new Map();
701
+ _changeListeners = /* @__PURE__ */ new Set();
702
+ _reloadTimer;
555
703
  constructor(e) {
556
704
  this.source = e;
557
705
  }
558
706
  async load() {
559
707
  let { tree: e, fileMap: t } = await this.source.load();
560
- this.tree = e, this._fileMap = t, this.flat = G(this.tree, 0, this._fileMap), this._contentCache.clear();
708
+ this.tree = e, this._fileMap = t, this.flat = nt(this.tree, 0, this._fileMap), this._contentCache.clear();
561
709
  }
562
710
  async reload() {
563
711
  return this.load();
564
712
  }
713
+ watch() {
714
+ this.source.watch(({ path: e }) => {
715
+ clearTimeout(this._reloadTimer), this._reloadTimer = setTimeout(() => {
716
+ this.reload().then(() => {
717
+ for (let t of this._changeListeners) t(e);
718
+ });
719
+ }, 100);
720
+ });
721
+ }
722
+ unwatch() {
723
+ clearTimeout(this._reloadTimer), this.source.unwatch(), this._changeListeners.clear();
724
+ }
725
+ onChange(e) {
726
+ return this._changeListeners.add(e), () => this._changeListeners.delete(e);
727
+ }
565
728
  async getContent(e) {
566
729
  if (!e.filePath || e.entry.page === !1) return;
567
730
  let t = this._contentCache.get(e.filePath);
@@ -573,7 +736,37 @@ var Ye, Xe = v((() => {
573
736
  this._contentCache.delete(e);
574
737
  }
575
738
  filter(e) {
576
- return Je(this.flat, e, ({ entry: e }) => [e.title, e.path]);
739
+ return it(this.flat, e, ({ entry: e }) => [e.title, e.path]);
740
+ }
741
+ async *search(t) {
742
+ if (!t) return;
743
+ let n = t.toLowerCase(), r = n.split(/\s+/).filter(Boolean), i = (e) => r.every((t) => e.includes(t)), a = /* @__PURE__ */ new Set();
744
+ for (let t of this.flat) {
745
+ if (t.entry.page === !1 || a.has(t.entry.path)) continue;
746
+ a.add(t.entry.path);
747
+ let r = t.entry.title.toLowerCase(), o = i(r) || i(t.entry.path.toLowerCase()), s = await this.getContent(t), c = s?.toLowerCase(), l = c ? i(c) : !1;
748
+ if (!o && !l) continue;
749
+ let u = 300, d;
750
+ if (o) u = r === n ? 0 : 100;
751
+ else if (s) {
752
+ let t = parseMeta(s);
753
+ for (let e of t.headings || []) {
754
+ let t = e.text.toLowerCase();
755
+ if (i(t)) {
756
+ u = t === n ? 150 : 200, d = e.text;
757
+ break;
758
+ }
759
+ }
760
+ }
761
+ let f = s ? at(s, n) : [];
762
+ yield {
763
+ flat: t,
764
+ score: u,
765
+ titleMatch: o,
766
+ heading: d,
767
+ contentMatches: f
768
+ };
769
+ }
577
770
  }
578
771
  get pages() {
579
772
  return this.flat.filter((e) => e.entry.page !== !1);
@@ -604,24 +797,36 @@ var Ye, Xe = v((() => {
604
797
  let i = await this.source.readContent(t).catch(() => void 0);
605
798
  return i ? { raw: i } : {};
606
799
  }
607
- matchIndices(e) {
608
- if (!e) return [];
609
- let t = e.toLowerCase(), n = /* @__PURE__ */ new Set();
610
- for (let e = 0; e < this.flat.length; e++) {
611
- let { entry: r } = this.flat[e];
612
- if (r.title.toLowerCase().includes(t) || r.path.toLowerCase().includes(t)) {
613
- n.add(e);
614
- let t = this.flat[e].depth;
615
- for (let r = e + 1; r < this.flat.length && !(this.flat[r].depth <= t); r++) n.add(r);
616
- }
617
- }
618
- return [...n].sort((e, t) => e - t);
800
+ suggest(e, t = 5) {
801
+ let n = this.filter(e);
802
+ if (n.length > 0) return n.slice(0, t);
803
+ let r = e.replace(/^\/+/, ``).split(`/`).filter(Boolean), i = r.at(-1);
804
+ if (i && i !== e && (n = this.filter(i), n.length > 0)) return n.slice(0, t);
805
+ let a = r.flatMap((e) => e.split(`-`)).filter(Boolean);
806
+ return this.pages.filter((e) => a.some((t) => e.entry.title.toLowerCase().includes(t) || e.entry.path.toLowerCase().includes(t))).slice(0, t);
619
807
  }
620
808
  };
621
- })), K, q = v((() => {
622
- K = class {};
623
809
  }));
624
- function Ze(e) {
810
+ function st(e, t, n = {}) {
811
+ let { maxSnippets: r = 3, radius: i = 80 } = n, a = e.toLowerCase(), o = [];
812
+ for (let e of t) {
813
+ let t = a.indexOf(e);
814
+ for (; t !== -1 && o.length < r * 2;) o.push(t), t = a.indexOf(e, t + e.length);
815
+ }
816
+ o.sort((e, t) => e - t);
817
+ let s = [], c = -1;
818
+ for (let t of o) {
819
+ if (s.length >= r) break;
820
+ let n = Math.max(0, t - i), a = Math.min(e.length, t + i);
821
+ if (n <= c) continue;
822
+ c = a;
823
+ let o = e.slice(n, a).trim().replaceAll(/\s+/g, ` `);
824
+ n > 0 && (o = `…` + o), a < e.length && (o += `…`), s.push(o);
825
+ }
826
+ return s;
827
+ }
828
+ var ct = b((() => {}));
829
+ function lt(e) {
625
830
  let t = e.endsWith(`.md`) ? e.slice(0, -3) : e, n = t.endsWith(`.draft`);
626
831
  n && (t = t.slice(0, -6));
627
832
  let r = t.match(/^(\d+)\.(.+)$/);
@@ -635,18 +840,18 @@ function Ze(e) {
635
840
  draft: n
636
841
  };
637
842
  }
638
- function Qe(e) {
843
+ function ut(e) {
639
844
  return e.split(`-`).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(` `);
640
845
  }
641
- async function $e(e) {
846
+ async function dt(t) {
642
847
  try {
643
- let { headings: n, ...r } = parseMeta(`---\n${await readFile(join(e, `.navigation.yml`), `utf8`)}\n---\n`);
848
+ let { headings: n, ...r } = parseMeta(`---\n${await readFile(join(t, `.navigation.yml`), `utf8`)}\n---\n`);
644
849
  return r;
645
850
  } catch {
646
851
  return {};
647
852
  }
648
853
  }
649
- function et(e) {
854
+ function ft(e) {
650
855
  let t = e.navigation;
651
856
  if (t === !1) return {
652
857
  ...e,
@@ -661,60 +866,61 @@ function et(e) {
661
866
  }
662
867
  return e;
663
868
  }
664
- function tt(e) {
869
+ function pt(e) {
665
870
  let t = {}, n = !1;
666
- for (let [r, i] of Object.entries(e)) !it.has(r) && r !== `navigation` && (t[r] = i, n = !0);
871
+ for (let [r, i] of Object.entries(e)) !gt.has(r) && r !== `navigation` && (t[r] = i, n = !0);
667
872
  return n ? t : void 0;
668
873
  }
669
- async function nt(e, t) {
670
- return rt(e, `/`, t || {});
874
+ async function mt(e, t) {
875
+ return ht(e, `/`, t || {});
671
876
  }
672
- async function rt(e, i, o) {
673
- let u = await readdir(e), d = [];
674
- for (let n of u) {
675
- if (n.startsWith(`.`) || n.startsWith(`_`) || n === `node_modules` || n === `dist` || n === `package.json` || n === `pnpm-lock.yaml` || n === `pnpm-workspace.yaml`) continue;
676
- let u = join(e, n), f;
877
+ async function ht(t, n, r) {
878
+ let s = await readdir(t), c = [];
879
+ for (let a of s) {
880
+ if (a.startsWith(`.`) || a.startsWith(`_`) || a === `node_modules` || a === `dist` || a === `package.json` || a === `pnpm-lock.yaml` || a === `pnpm-workspace.yaml`) continue;
881
+ let s = join(t, a), l;
677
882
  try {
678
- f = await stat(u);
883
+ l = await stat(s);
679
884
  } catch {
680
885
  continue;
681
886
  }
682
- if (f.isDirectory()) {
683
- let { order: e, slug: t } = Ze(n), r = await $e(u);
684
- if (r.navigation === !1) continue;
685
- let a = await rt(u, i === `/` ? `/${t}` : `${i}/${t}`, o), s = a.some((e) => e.slug === ``), c = {
887
+ if (l.isDirectory()) {
888
+ let { order: e, slug: t } = lt(a), i = await dt(s);
889
+ if (i.navigation === !1) continue;
890
+ let o = await ht(s, n === `/` ? `/${t}` : `${n}/${t}`, r), l = o.some((e) => e.slug === ``), u = {
686
891
  slug: t,
687
- path: i === `/` ? `/${t}` : `${i}/${t}`,
688
- title: r.title || Qe(t),
892
+ path: n === `/` ? `/${t}` : `${n}/${t}`,
893
+ title: i.title || ut(t),
689
894
  order: e,
690
- ...r.icon ? { icon: r.icon } : {},
691
- ...r.description ? { description: r.description } : {},
692
- ...s ? {} : { page: !1 },
693
- ...a.length > 0 ? { children: a } : {}
895
+ ...i.icon ? { icon: i.icon } : {},
896
+ ...i.description ? { description: i.description } : {},
897
+ ...l ? {} : { page: !1 },
898
+ ...o.length > 0 ? { children: o } : {}
694
899
  };
695
- d.push(c);
696
- } else if (extname(n) === `.md`) {
697
- let { order: e, slug: r, draft: s } = Ze(basename(n));
698
- if (s && !o.drafts) continue;
699
- let c = et(parseMeta(await readFile(u, `utf8`)));
700
- if (c.navigation === !1) continue;
701
- let f = typeof c.order == `number` ? c.order : e, p = r === `index` ? `` : r, m = c.title || Qe(r) || `index`, h = p === `` ? i === `/` ? `/` : i : i === `/` ? `/${p}` : `${i}/${p}`, g = tt(c), _ = {
702
- slug: p,
703
- path: h,
704
- title: m,
705
- order: f,
706
- ...c.icon ? { icon: c.icon } : {},
707
- ...c.description ? { description: c.description } : {},
708
- ...s ? { draft: !0 } : {},
709
- ...g
900
+ c.push(u);
901
+ } else if (extname(a) === `.md`) {
902
+ let { order: t, slug: o, draft: l } = lt(basename(a));
903
+ if (l && !r.drafts) continue;
904
+ let d = parseMeta(await readFile(s, `utf8`)), f = ft(d);
905
+ if (f.navigation === !1) continue;
906
+ let p = typeof f.order == `number` ? f.order : t, m = o === `index` ? `` : o, h = d.headings?.find((e) => e.level === 1)?.text, g = f.title || h || ut(o) || `index`, _ = m === `` ? n === `/` ? `/` : n : n === `/` ? `/${m}` : `${n}/${m}`, v = pt(f), y = {
907
+ slug: m,
908
+ path: _,
909
+ title: g,
910
+ order: p,
911
+ ...h && h !== g ? { heading: h } : {},
912
+ ...f.icon ? { icon: f.icon } : {},
913
+ ...f.description ? { description: f.description } : {},
914
+ ...l ? { draft: !0 } : {},
915
+ ...v
710
916
  };
711
- d.push(_);
917
+ c.push(y);
712
918
  }
713
919
  }
714
- return d.sort((e, t) => e.order - t.order || e.slug.localeCompare(t.slug)), d;
920
+ return c.sort((e, t) => e.order - t.order || e.slug.localeCompare(t.slug)), c;
715
921
  }
716
- var it, at = v((() => {
717
- it = new Set([
922
+ var gt, _t = b((() => {
923
+ gt = new Set([
718
924
  `slug`,
719
925
  `path`,
720
926
  `title`,
@@ -725,62 +931,76 @@ var it, at = v((() => {
725
931
  `children`,
726
932
  `headings`
727
933
  ]);
934
+ })), G, K = b((() => {
935
+ G = class {
936
+ watch(e) {}
937
+ unwatch() {}
938
+ };
728
939
  }));
729
- function ot(e) {
940
+ function vt(e) {
730
941
  let t = e.endsWith(`.draft`) ? e.slice(0, -6) : e, n = t.match(/^(\d+)\.(.+)$/);
731
942
  return n ? n[2] : t;
732
943
  }
733
- async function st(e, t) {
734
- let r = /* @__PURE__ */ new Map(), i = await readdir(t, { withFileTypes: !0 });
735
- for (let n of i) {
736
- if (n.name.startsWith(`.`) || n.name.startsWith(`_`) || n.name === `node_modules` || n.name === `dist`) continue;
737
- let i = join(t, n.name);
738
- if (n.isDirectory()) {
739
- let t = ot(n.name), a = await st(e === `/` ? `/${t}` : `${e}/${t}`, i);
740
- for (let [e, t] of a) r.set(e, t);
741
- } else if (extname(n.name) === `.md`) {
742
- let t = ot(n.name.replace(/\.md$/, ``)), a = t === `index` ? `` : t, o = a === `` ? e === `/` ? `/` : e : e === `/` ? `/${a}` : `${e}/${a}`;
743
- r.set(o, i);
944
+ async function yt(e, t) {
945
+ let n = /* @__PURE__ */ new Map(), r = await readdir(t, { withFileTypes: !0 });
946
+ for (let i of r) {
947
+ if (i.name.startsWith(`.`) || i.name.startsWith(`_`) || i.name === `node_modules` || i.name === `dist`) continue;
948
+ let r = join(t, i.name);
949
+ if (i.isDirectory()) {
950
+ let t = vt(i.name), a = await yt(e === `/` ? `/${t}` : `${e}/${t}`, r);
951
+ for (let [e, t] of a) n.set(e, t);
952
+ } else if (extname(i.name) === `.md`) {
953
+ let t = vt(i.name.replace(/\.md$/, ``)), a = t === `index` ? `` : t, o = a === `` ? e === `/` ? `/` : e : e === `/` ? `/${a}` : `${e}/${a}`;
954
+ n.set(o, r);
744
955
  }
745
956
  }
746
- return r;
957
+ return n;
747
958
  }
748
- async function ct(e, n) {
749
- let r;
959
+ async function bt(e, t) {
960
+ let n;
750
961
  try {
751
- r = JSON.parse(await readFile(join(n, `_navigation.json`), `utf8`));
962
+ n = JSON.parse(await readFile(join(t, `_navigation.json`), `utf8`));
752
963
  } catch {
753
964
  return;
754
965
  }
755
- lt(e, r);
966
+ xt(e, n);
756
967
  }
757
- function lt(e, t) {
968
+ function xt(e, t) {
758
969
  let n = new Map(t.map((e, t) => [e.path, t]));
759
970
  e.sort((e, t) => (n.get(e.path) ?? Infinity) - (n.get(t.path) ?? Infinity));
760
971
  for (let n of e) if (n.children?.length) {
761
972
  let e = t.find((e) => e.path === n.path);
762
- e?.children && lt(n.children, e.children);
973
+ e?.children && xt(n.children, e.children);
763
974
  }
764
975
  }
765
- var J, Y = v((() => {
766
- at(), q(), J = class extends K {
976
+ var q, J = b((() => {
977
+ _t(), K(), q = class extends G {
767
978
  dir;
979
+ _watcher;
768
980
  constructor(e) {
769
981
  super(), this.dir = e;
770
982
  }
771
983
  async load() {
772
- let e = await nt(this.dir);
773
- return await ct(e, this.dir), {
984
+ let e = await mt(this.dir);
985
+ return await bt(e, this.dir), {
774
986
  tree: e,
775
- fileMap: await st(`/`, this.dir)
987
+ fileMap: await yt(`/`, this.dir)
776
988
  };
777
989
  }
778
990
  async readContent(e) {
779
991
  return readFile(e, `utf8`);
780
992
  }
993
+ watch(e) {
994
+ this.unwatch(), this._watcher = watch(this.dir, { recursive: !0 }, (t, n) => {
995
+ !n || n.startsWith(`.`) || n.startsWith(`_`) || e({ path: `/` + n });
996
+ });
997
+ }
998
+ unwatch() {
999
+ this._watcher?.close(), this._watcher = void 0;
1000
+ }
781
1001
  };
782
- })), ut, dt = v((() => {
783
- q(), Y(), ut = class extends K {
1002
+ })), Y, St = b((() => {
1003
+ K(), J(), Y = class extends G {
784
1004
  src;
785
1005
  options;
786
1006
  _fs;
@@ -803,15 +1023,15 @@ var J, Y = v((() => {
803
1023
  break;
804
1024
  }
805
1025
  }
806
- return this._fs = new J(i), this._fs.load();
1026
+ return this._fs = new q(i), this._fs.load();
807
1027
  }
808
1028
  async readContent(e) {
809
- if (!this._fs) throw Error(`DocsSourceGit: call load() before readContent()`);
1029
+ if (!this._fs) throw Error(`GitSource: call load() before readContent()`);
810
1030
  return this._fs.readContent(e);
811
1031
  }
812
1032
  };
813
1033
  }));
814
- function ft(e) {
1034
+ function Ct(e) {
815
1035
  let t = e, n = ``;
816
1036
  if (t.startsWith(`@`)) {
817
1037
  let e = t.indexOf(`/`, t.indexOf(`/`) + 1);
@@ -827,12 +1047,12 @@ function ft(e) {
827
1047
  subdir: n
828
1048
  };
829
1049
  }
830
- async function pt(e, t) {
1050
+ async function wt(e, t) {
831
1051
  let n = t ? `https://registry.npmjs.org/${e}/${t}` : `https://registry.npmjs.org/${e}`, r = await fetch(n);
832
1052
  if (!r.ok) throw Error(`Failed to fetch package info for ${e}${t ? `@${t}` : ``}: ${r.status} ${r.statusText}`);
833
1053
  return r.json();
834
1054
  }
835
- function mt(e) {
1055
+ function Tt(e) {
836
1056
  let t;
837
1057
  try {
838
1058
  t = new URL(e);
@@ -845,15 +1065,15 @@ function mt(e) {
845
1065
  let r = t.pathname.match(/^\/((?:@[^/]+\/)?[^/]+)\/?$/);
846
1066
  if (r && !/^(package|settings|signup|login|org|search)$/.test(r[1])) return r[1];
847
1067
  }
848
- var ht = v((() => {}));
849
- function gt(e) {
1068
+ var Et = b((() => {}));
1069
+ function Dt(e) {
850
1070
  try {
851
1071
  return new URL(e).hostname;
852
1072
  } catch {
853
1073
  return e;
854
1074
  }
855
1075
  }
856
- function _t(e, t, n, r) {
1076
+ function Ot(e, t, n, r) {
857
1077
  let i = e.split(`
858
1078
  `), a = [], o = ``, s = ``, c, l = 0, u = 0;
859
1079
  for (let e of i) {
@@ -868,7 +1088,7 @@ function _t(e, t, n, r) {
868
1088
  }
869
1089
  if (r.startsWith(`## `)) {
870
1090
  c = {
871
- slug: vt(r.slice(3).trim()),
1091
+ slug: kt(r.slice(3).trim()),
872
1092
  path: `/_section/${l}`,
873
1093
  title: r.slice(3).trim(),
874
1094
  order: l++,
@@ -900,20 +1120,20 @@ function _t(e, t, n, r) {
900
1120
  let d = {
901
1121
  slug: ``,
902
1122
  path: `/`,
903
- title: o || gt(t),
1123
+ title: o || Dt(t),
904
1124
  order: 0,
905
1125
  ...s ? { description: s } : {},
906
1126
  ...a.length > 0 ? { children: a } : {}
907
1127
  };
908
1128
  return n.set(`/`, `/`), r.set(`/`, e), [d];
909
1129
  }
910
- function vt(e) {
1130
+ function kt(e) {
911
1131
  return e.toLowerCase().replace(/[^a-z\d]+/g, `-`).replace(/^-|-$/g, ``);
912
1132
  }
913
- function yt(e, t) {
1133
+ function At(e, t) {
914
1134
  let n = /* @__PURE__ */ new Set(), r = [], i = /* @__PURE__ */ new Set(), a = 0, o = /\[([^\]]+)]\(([^)]+)\)/g, s;
915
1135
  for (; (s = o.exec(e)) !== null;) {
916
- let e = s[1], o = s[2], c = bt(o, t);
1136
+ let e = s[1], o = s[2], c = jt(o, t);
917
1137
  if (!c) continue;
918
1138
  let l = c.pathname.replace(/\/+$/, ``) || `/`, u = /\/index\.md$/i.test(l) || l.endsWith(`/index`);
919
1139
  if (l = l.replace(/\/index\.md$/i, ``).replace(/\/index$/, ``).replace(/\.md$/i, ``), l ||= `/`, l === `/` || n.has(l)) continue;
@@ -931,7 +1151,7 @@ function yt(e, t) {
931
1151
  tocPaths: i
932
1152
  };
933
1153
  }
934
- function bt(e, t) {
1154
+ function jt(e, t) {
935
1155
  try {
936
1156
  let n = new URL(t), r = new URL(e, t);
937
1157
  return r.origin !== n.origin || e.startsWith(`#`) || /\.(png|jpg|jpeg|gif|svg|css|js|ico|woff2?)$/i.test(r.pathname) ? void 0 : r;
@@ -939,8 +1159,8 @@ function bt(e, t) {
939
1159
  return;
940
1160
  }
941
1161
  }
942
- var xt, St = v((() => {
943
- q(), ht(), xt = class extends K {
1162
+ var Mt, Nt = b((() => {
1163
+ K(), Et(), Mt = class extends G {
944
1164
  url;
945
1165
  options;
946
1166
  _contentCache = /* @__PURE__ */ new Map();
@@ -948,28 +1168,28 @@ var xt, St = v((() => {
948
1168
  _fileMap = /* @__PURE__ */ new Map();
949
1169
  _npmPackage;
950
1170
  constructor(e, t = {}) {
951
- super(), this.url = e.replace(/\/+$/, ``), this._npmPackage = mt(this.url), this.options = t;
1171
+ super(), this.url = e.replace(/\/+$/, ``), this._npmPackage = Tt(this.url), this.options = t;
952
1172
  }
953
1173
  async load() {
954
1174
  if (this._npmPackage) return this._loadNpm(this._npmPackage);
955
- let e = await this._tryLlmsTxt();
956
- if (e) return this._tree = e, {
1175
+ let t = await this._tryLlmsTxt();
1176
+ if (t) return this._tree = t, {
957
1177
  tree: this._tree,
958
1178
  fileMap: this._fileMap
959
1179
  };
960
- let t = await this._fetch(this.url);
961
- this._contentCache.set(`/`, t);
962
- let n = {
1180
+ let n = await this._fetch(this.url);
1181
+ this._contentCache.set(`/`, n);
1182
+ let r = {
963
1183
  slug: ``,
964
1184
  path: `/`,
965
- title: parseMeta(t).title || gt(this.url),
1185
+ title: parseMeta(n).title || Dt(this.url),
966
1186
  order: 0
967
- }, { entries: r, tocPaths: i } = yt(t, this.url);
968
- if (r.length > 0) {
969
- n.children = r;
970
- for (let e of r) this._fileMap.set(e.path, e.path);
1187
+ }, { entries: i, tocPaths: a } = At(n, this.url);
1188
+ if (i.length > 0) {
1189
+ r.children = i;
1190
+ for (let e of i) this._fileMap.set(e.path, e.path);
971
1191
  }
972
- return this._tree = [n], this._fileMap.set(`/`, `/`), i.size > 0 && await this._crawlTocPages(r, i), {
1192
+ return this._tree = [r], this._fileMap.set(`/`, `/`), a.size > 0 && await this._crawlTocPages(i, a), {
973
1193
  tree: this._tree,
974
1194
  fileMap: this._fileMap
975
1195
  };
@@ -992,7 +1212,7 @@ var xt, St = v((() => {
992
1212
  } catch {
993
1213
  return;
994
1214
  }
995
- if (t.trimStart().startsWith(`#`)) return _t(t, e, this._fileMap, this._contentCache);
1215
+ if (t.trimStart().startsWith(`#`)) return Ot(t, e, this._fileMap, this._contentCache);
996
1216
  }
997
1217
  async readContent(e) {
998
1218
  let t = this._contentCache.get(e);
@@ -1007,7 +1227,7 @@ var xt, St = v((() => {
1007
1227
  if (!t.has(e.path)) return;
1008
1228
  let i = `${r}${e.path}`, a = await this._fetch(i);
1009
1229
  this._contentCache.set(e.path, a);
1010
- let { entries: o, tocPaths: s } = yt(a, i);
1230
+ let { entries: o, tocPaths: s } = At(a, i);
1011
1231
  if (o.length > 0) {
1012
1232
  e.children = o;
1013
1233
  for (let e of o) this._fileMap.set(e.path, e.path);
@@ -1015,18 +1235,18 @@ var xt, St = v((() => {
1015
1235
  }
1016
1236
  }));
1017
1237
  }
1018
- async _loadNpm(e) {
1019
- let t;
1238
+ async _loadNpm(t) {
1239
+ let n;
1020
1240
  try {
1021
- let n = await pt(e);
1022
- t = n.readme || `# ${n.name || e}\n\n${n.description || `No README available.`}`;
1023
- } catch (n) {
1024
- t = `# Fetch Error\n\nFailed to fetch package \`${e}\`\n\n> ${n instanceof Error ? n.message : String(n)}`;
1241
+ let e = await wt(t);
1242
+ n = e.readme || `# ${e.name || t}\n\n${e.description || `No README available.`}`;
1243
+ } catch (e) {
1244
+ n = `# Fetch Error\n\nFailed to fetch package \`${t}\`\n\n> ${e instanceof Error ? e.message : String(e)}`;
1025
1245
  }
1026
- return this._contentCache.set(`/`, t), this._fileMap.set(`/`, `/`), this._tree = [{
1246
+ return this._contentCache.set(`/`, n), this._fileMap.set(`/`, `/`), this._tree = [{
1027
1247
  slug: ``,
1028
1248
  path: `/`,
1029
- title: parseMeta(t).title || e,
1249
+ title: parseMeta(n).title || t,
1030
1250
  order: 0
1031
1251
  }], {
1032
1252
  tree: this._tree,
@@ -1047,8 +1267,8 @@ var xt, St = v((() => {
1047
1267
  }
1048
1268
  };
1049
1269
  }));
1050
- async function Ct(e) {
1051
- let { name: t, version: n, subdir: r } = ft(e), i = await pt(t, n);
1270
+ async function Pt(e) {
1271
+ let { name: t, version: n, subdir: r } = Ct(e), i = await wt(t, n);
1052
1272
  return {
1053
1273
  name: i.name,
1054
1274
  version: i.version,
@@ -1056,8 +1276,8 @@ async function Ct(e) {
1056
1276
  tar: i.dist.tarball
1057
1277
  };
1058
1278
  }
1059
- var wt, Tt = v((() => {
1060
- q(), Y(), ht(), wt = class extends K {
1279
+ var X, Ft = b((() => {
1280
+ K(), J(), Et(), X = class extends G {
1061
1281
  src;
1062
1282
  options;
1063
1283
  _fs;
@@ -1070,7 +1290,7 @@ var wt, Tt = v((() => {
1070
1290
  dir: r,
1071
1291
  force: !0,
1072
1292
  install: !1,
1073
- providers: { npm: Ct },
1293
+ providers: { npm: Pt },
1074
1294
  registry: !1
1075
1295
  });
1076
1296
  let a = r;
@@ -1081,68 +1301,86 @@ var wt, Tt = v((() => {
1081
1301
  break;
1082
1302
  }
1083
1303
  }
1084
- return this._fs = new J(a), this._fs.load();
1304
+ return this._fs = new q(a), this._fs.load();
1085
1305
  }
1086
1306
  async readContent(e) {
1087
- if (!this._fs) throw Error(`DocsSourceNpm: call load() before readContent()`);
1307
+ if (!this._fs) throw Error(`NpmSource: call load() before readContent()`);
1088
1308
  return this._fs.readContent(e);
1089
1309
  }
1090
1310
  };
1091
- })), Et = v((() => {
1092
- q(), Y(), dt(), St(), Tt();
1093
1311
  }));
1094
- async function Dt(t, n, r = {}) {
1095
- let a = t.flat.find((e) => e.entry.path === `/`), s = [`# ${r.title ?? a?.entry.title ?? `Table of Contents`}`, ``], l = /* @__PURE__ */ new Set(), f = /* @__PURE__ */ new Set();
1096
- Ot(t.tree, f);
1097
- for (let a of t.flat) {
1098
- if ((r.filter ? !r.filter(a) : a.entry.page === !1) || kt.has(a.entry.path)) continue;
1099
- let p = await t.getContent(a);
1100
- if (p === void 0) continue;
1101
- let m = r.plainText ? renderToText(p) : renderToMarkdown(p), h = a.entry.path === `/` || f.has(a.entry.path) ? a.entry.path === `/` ? `/index.md` : `${a.entry.path}/index.md` : a.entry.path.endsWith(`.md`) ? a.entry.path : `${a.entry.path}.md`, g = join(n, h);
1102
- await mkdir(dirname(g), { recursive: !0 }), await writeFile(g, m, `utf8`), l.add(h.slice(1));
1103
- let _ = ` `.repeat(a.depth), ee = a.entry.description ? `: ${a.entry.description}` : ``;
1104
- s.push(`${_}- [${a.entry.title}](.${h})${ee}`);
1312
+ function It(e) {
1313
+ return e.startsWith(`http://`) || e.startsWith(`https://`) ? new Mt(e) : e.startsWith(`gh:`) ? new Y(e) : e.startsWith(`npm:`) ? new X(e) : new q(e);
1314
+ }
1315
+ var Lt = b((() => {
1316
+ J(), St(), Nt(), Ft(), K();
1317
+ }));
1318
+ async function Rt(e, t, n = {}) {
1319
+ let i = new W(typeof e == `string` ? It(e) : e);
1320
+ return await i.load(), await mkdir(t, { recursive: !0 }), await zt(i, t, n), i;
1321
+ }
1322
+ async function zt(e, i, a = {}) {
1323
+ let o = e.flat.find((e) => e.entry.path === `/`), c = [`# ${a.title ?? o?.entry.title ?? `Table of Contents`}`, ``], l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Map();
1324
+ Vt(e.tree, ``, u);
1325
+ let f = /* @__PURE__ */ new Set();
1326
+ Bt(e.tree, f);
1327
+ for (let o of e.flat) {
1328
+ if ((a.filter ? !a.filter(o) : o.entry.page === !1) || Ht.has(o.entry.path)) continue;
1329
+ let m = await e.getContent(o);
1330
+ if (m === void 0) continue;
1331
+ let h = a.plainText ? renderToText(m) : renderToMarkdown(m), g = u.get(o.entry.path) ?? o.entry.path, _ = o.entry.path === `/` || f.has(o.entry.path) ? o.entry.path === `/` ? `/index.md` : `${g}/index.md` : g.endsWith(`.md`) ? g : `${g}.md`, v = join(i, _);
1332
+ await mkdir(dirname(v), { recursive: !0 }), await writeFile(v, h, `utf8`), l.add(_.slice(1));
1333
+ let y = ` `.repeat(o.depth), b = o.entry.description ? `: ${o.entry.description}` : ``;
1334
+ c.push(`${y}- [${o.entry.title}](.${_})${b}`);
1105
1335
  }
1106
- let p = r.tocFile ?? `README.md`;
1107
- l.has(p) && (p = `_${p}`), await writeFile(join(n, p), s.join(`
1336
+ let m = a.tocFile ?? `README.md`;
1337
+ l.has(m) && (m = `_${m}`), await writeFile(join(i, m), c.join(`
1108
1338
  `) + `
1109
- `, `utf8`), await writeFile(join(n, `_navigation.json`), JSON.stringify(t.tree, null, 2) + `
1110
1339
  `, `utf8`);
1111
1340
  }
1112
- function Ot(e, t) {
1113
- for (let n of e) n.children?.length && (t.add(n.path), Ot(n.children, t));
1114
- }
1115
- var kt, At = v((() => {
1116
- kt = new Set([`/llms.txt`, `/llms-full.txt`]);
1117
- })), jt = y({
1118
- DocsManager: () => Ye,
1119
- DocsSource: () => K,
1120
- DocsSourceFS: () => J,
1121
- DocsSourceGit: () => ut,
1122
- DocsSourceHTTP: () => xt,
1123
- DocsSourceNpm: () => wt,
1124
- exportDocsToFS: () => Dt
1125
- }), Mt = v((() => {
1126
- Xe(), Et(), At();
1341
+ function Bt(e, t) {
1342
+ for (let n of e) n.children?.length && (t.add(n.path), Bt(n.children, t));
1343
+ }
1344
+ function Vt(e, t, n) {
1345
+ for (let [r, i] of e.entries()) {
1346
+ let e = `${t}/${r}.${i.slug || `index`}`;
1347
+ n.set(i.path, e), i.children?.length && Vt(i.children, e, n);
1348
+ }
1349
+ }
1350
+ var Ht, Ut = b((() => {
1351
+ ot(), Lt(), Ht = new Set([`/llms.txt`, `/llms-full.txt`]);
1352
+ })), Wt = x({
1353
+ Collection: () => W,
1354
+ FSSource: () => q,
1355
+ GitSource: () => Y,
1356
+ HTTPSource: () => Mt,
1357
+ NpmSource: () => X,
1358
+ Source: () => G,
1359
+ exportSource: () => Rt,
1360
+ extractSnippets: () => st,
1361
+ resolveSource: () => It,
1362
+ writeCollection: () => zt
1363
+ }), Gt = b((() => {
1364
+ ot(), ct(), Lt(), Ut();
1127
1365
  }));
1128
- async function X(e) {
1129
- if (Z) return Z;
1130
- if (!Z) {
1131
- let { DocsManager: t, DocsSourceGit: n } = await Promise.resolve().then(() => (Mt(), jt));
1132
- Z = new t(e?.source || new n(`gh:nitrojs/nitro/docs`, { subdir: `docs` })), await Z.load();
1366
+ async function Z(e) {
1367
+ if (Q) return Q;
1368
+ if (!Q) {
1369
+ let { Collection: t, resolveSource: n } = await Promise.resolve().then(() => (Gt(), Wt));
1370
+ Q = new t(e?.source || n(process.env.DOCS_SOURCE || `gh:nitrojs/nitro/docs`)), await Q.load(), Q.watch();
1133
1371
  }
1134
- return Z;
1372
+ return Q;
1135
1373
  }
1136
- var Z, Q = v((() => {})), Nt = y({ default: () => Pt }), Pt, Ft = v((() => {
1137
- W(), Q(), Pt = T(async () => ({
1374
+ var Q, $ = b((() => {})), Kt = x({ default: () => qt }), qt, Jt = b((() => {
1375
+ U(), $(), qt = D(async () => ({
1138
1376
  title: `Nitro`,
1139
- toc: (await X()).tree
1377
+ toc: (await Z()).tree
1140
1378
  }));
1141
- })), It = y({ default: () => Bt });
1142
- async function Lt(e) {
1379
+ })), Yt = x({ default: () => $t });
1380
+ async function Xt(e) {
1143
1381
  let t = /<pre><code class="language-(\w+)">([\s\S]*?)<\/code><\/pre>/g, n = [];
1144
1382
  for (let r of e.matchAll(t)) {
1145
- let [e, t, i] = r, a = zt(i);
1383
+ let [e, t, i] = r, a = Qt(i);
1146
1384
  n.push(highlightText(a, t, !1).then((n) => ({
1147
1385
  match: e,
1148
1386
  result: `<pre><code class="language-${t}">${n}</code></pre>`
@@ -1155,95 +1393,56 @@ async function Lt(e) {
1155
1393
  for (let { match: e, result: t } of await Promise.all(n)) r = r.replace(e, t);
1156
1394
  return r;
1157
1395
  }
1158
- function Rt(e) {
1396
+ function Zt(e) {
1159
1397
  return e.replace(/<(h[1-6])>(.*?)<\/\1>/g, (e, t, n) => {
1160
1398
  let r = n.replace(/<[^>]+>/g, ``).trim().toLowerCase().replace(/[^\w\s-]/g, ``).replace(/\s+/g, `-`);
1161
1399
  return `<${t} id="${r}"><a href="#${r}">#</a>${n}</${t}>`;
1162
1400
  });
1163
1401
  }
1164
- function zt(e) {
1402
+ function Qt(e) {
1165
1403
  return e.replace(/&amp;/g, `&`).replace(/&lt;/g, `<`).replace(/&gt;/g, `>`).replace(/&quot;/g, `"`).replace(/&#39;/g, `'`);
1166
1404
  }
1167
- var Bt, Vt = v((async () => {
1168
- W(), Q(), await init(), Bt = T(async (e) => {
1169
- let { path: t } = he(e);
1405
+ var $t, en = b((async () => {
1406
+ U(), $(), await init(), $t = D(async (e) => {
1407
+ let { path: t } = pe(e);
1170
1408
  if (!t) return { error: `Missing ?path= query parameter` };
1171
- let n = await (await X()).resolvePage(t);
1409
+ let n = await (await Z()).resolvePage(t);
1172
1410
  return n.raw ? {
1173
1411
  path: t,
1174
- html: Rt(await Lt(renderToHtml(n.raw)))
1412
+ html: Zt(await Xt(renderToHtml(n.raw)))
1175
1413
  } : {
1176
1414
  error: `Page not found`,
1177
1415
  path: t
1178
1416
  };
1179
1417
  });
1180
- })), Ht = y({ default: () => Wt });
1181
- function Ut(e, t, n = {}) {
1182
- let { maxSnippets: r = 3, radius: i = 80 } = n, a = e.toLowerCase(), o = [];
1183
- for (let e of t) {
1184
- let t = a.indexOf(e);
1185
- for (; t !== -1 && o.length < r * 2;) o.push(t), t = a.indexOf(e, t + e.length);
1186
- }
1187
- o.sort((e, t) => e - t);
1188
- let s = [], c = -1;
1189
- for (let t of o) {
1190
- if (s.length >= r) break;
1191
- let n = Math.max(0, t - i), a = Math.min(e.length, t + i);
1192
- if (n <= c) continue;
1193
- c = a;
1194
- let o = e.slice(n, a).trim().replaceAll(/\s+/g, ` `);
1195
- n > 0 && (o = `…` + o), a < e.length && (o += `…`), s.push(o);
1196
- }
1197
- return s;
1198
- }
1199
- var Wt, Gt = v((() => {
1200
- W(), Q(), Wt = T(async (e) => {
1201
- let { q: t, limit: n } = he(e);
1418
+ })), tn = x({ default: () => nn }), nn, rn = b((() => {
1419
+ U(), $(), Gt(), nn = D(async (e) => {
1420
+ let { q: t, limit: n } = pe(e);
1202
1421
  if (!t || t.length < 2) return { results: [] };
1203
- let r = await X(), i = Math.min(Number(n) || 20, 50), a = t.toLowerCase(), o = a.split(/\s+/).filter(Boolean), s = [], c = /* @__PURE__ */ new Set();
1204
- for (let e of r.pages) {
1205
- let t = e.entry.title, n = t.toLowerCase();
1206
- o.every((e) => n.includes(e)) && (c.add(e.entry.path), s.push({
1207
- path: e.entry.path,
1208
- title: t,
1209
- score: n === a ? 0 : 100,
1210
- snippets: []
1211
- }));
1212
- }
1213
- for (let e of r.pages) {
1214
- if (c.has(e.entry.path)) continue;
1215
- let t = await r.getContent(e);
1216
- if (!t) continue;
1217
- let n = t.toLowerCase();
1218
- if (!o.every((e) => n.includes(e))) continue;
1219
- let i = 300, l, u = parseMeta$1(t);
1220
- for (let e of u.headings || []) {
1221
- let t = e.text.toLowerCase();
1222
- if (o.every((e) => t.includes(e))) {
1223
- i = t === a ? 150 : 200, l = e.text;
1224
- break;
1225
- }
1226
- }
1227
- let d = Ut(renderToText$1(t), o);
1228
- s.push({
1229
- path: e.entry.path,
1230
- title: e.entry.title,
1231
- heading: l,
1232
- snippets: d,
1233
- score: i
1422
+ let r = await Z(), i = Math.min(Number(n) || 20, 50), a = t.toLowerCase().split(/\s+/).filter(Boolean), o = [];
1423
+ for await (let e of r.search(t)) {
1424
+ let t = await r.getContent(e.flat), n = t ? renderToText$1(t) : ``, i = n ? st(n, a) : [];
1425
+ o.push({
1426
+ path: e.flat.entry.path,
1427
+ title: e.flat.entry.title,
1428
+ heading: e.heading,
1429
+ snippets: i,
1430
+ score: e.score
1234
1431
  });
1235
1432
  }
1236
- for (let e of s) {
1237
- if (e.snippets.length > 0) continue;
1238
- let t = r.pages.find((t) => t.entry.path === e.path);
1239
- if (!t) continue;
1240
- let n = await r.getContent(t);
1241
- n && (e.snippets = Ut(renderToText$1(n), o));
1242
- }
1243
- return s.sort((e, t) => e.score - t.score), { results: s.slice(0, i).map(({ score: e, ...t }) => t) };
1433
+ return o.sort((e, t) => e.score - t.score), { results: o.slice(0, i).map(({ score: e, ...t }) => t) };
1434
+ });
1435
+ })), an = x({ default: () => on }), on, sn = b((() => {
1436
+ U(), $(), on = D(async (e) => {
1437
+ let t = await Z(), n = ve(e), r = t.onChange((e) => {
1438
+ n.push(JSON.stringify({ path: e }));
1439
+ });
1440
+ return n.onClosed(() => {
1441
+ r();
1442
+ }), n.send();
1244
1443
  });
1245
- })), Kt, qt = v((() => {
1246
- V(), Kt = () => new F(`<!doctype html>
1444
+ })), cn, ln = b((() => {
1445
+ B(), cn = () => new L(`<!doctype html>
1247
1446
  <html lang="en">
1248
1447
  <head>
1249
1448
  <meta charset="UTF-8" />
@@ -1251,8 +1450,8 @@ var Wt, Gt = v((() => {
1251
1450
  <link rel="icon" type="image/svg+xml" href="/assets/logo-BLkVGWak.svg" />
1252
1451
  <title></title>
1253
1452
  <style>/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
1254
- @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-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight: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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, 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-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-300:oklch(87.1% .15 154.449);--color-green-500:oklch(72.3% .219 149.579);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--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;--radius-md:.375rem;--radius-xl:.75rem;--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,ui-sans-serif, system-ui, 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;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{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{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-screen{height:100vh}.max-h-80{max-height:calc(var(--spacing) * 80)}.w-4{width:calc(var(--spacing) * 4)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-90{rotate:90deg}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.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-8{padding-block:calc(var(--spacing) * 8)}.pt-\\[15vh\\]{padding-top:15vh}.text-center{text-align:center}.text-left{text-align:left}.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))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-900{color:var(--color-gray-900)}.text-red-500{color:var(--color-red-500)}.placeholder-gray-400::placeholder{color:var(--color-gray-400)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-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))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:text-gray-500:hover{color:var(--color-gray-500)}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sm\\:inline{display:inline}}.dark\\:border-gray-700:where(.dark,.dark *){border-color:var(--color-gray-700)}.dark\\:border-gray-800:where(.dark,.dark *){border-color:var(--color-gray-800)}.dark\\:bg-gray-800:where(.dark,.dark *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\\:bg-gray-950:where(.dark,.dark *){background-color:var(--color-gray-950)}.dark\\:text-gray-100:where(.dark,.dark *){color:var(--color-gray-100)}.dark\\:text-gray-200:where(.dark,.dark *){color:var(--color-gray-200)}.dark\\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\\:text-gray-500:where(.dark,.dark *),.dark\\:placeholder-gray-500:where(.dark,.dark *)::placeholder{color:var(--color-gray-500)}@media (hover:hover){.dark\\:hover\\:border-gray-600:where(.dark,.dark *):hover{border-color:var(--color-gray-600)}.dark\\:hover\\:bg-gray-800:where(.dark,.dark *):hover{background-color:var(--color-gray-800)}.dark\\:hover\\:text-gray-100:where(.dark,.dark *):hover{color:var(--color-gray-100)}.dark\\:hover\\:text-gray-300:where(.dark,.dark *):hover{color:var(--color-gray-300)}.dark\\:hover\\:text-gray-400:where(.dark,.dark *):hover{color:var(--color-gray-400)}}}#search-results::-webkit-scrollbar{width:6px}#search-results::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:3px}.dark #search-results::-webkit-scrollbar-thumb{background:var(--color-gray-600)}.line-clamp-2{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.nav-active{background:var(--color-gray-100)}.dark .nav-active{background:var(--color-gray-800)}.prose{color:var(--color-gray-700);line-height:1.75}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--color-gray-900);margin-top:2em;margin-bottom:.75em;font-weight:700;line-height:1.3;position:relative}:is(.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6)>a[href^=\\#]{color:var(--color-gray-300);opacity:0;padding-right:.25em;font-weight:400;text-decoration:none;transition:opacity .15s;position:absolute;right:100%}:is(.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6):hover>a[href^=\\#]{opacity:1}.prose h1{margin-top:0;font-size:2.25em}.prose h2{border-bottom:1px solid var(--color-gray-200);padding-bottom:.3em;font-size:1.5em}.prose h3{font-size:1.25em}.prose h4{font-size:1.1em}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose a{color:var(--color-blue-600);text-underline-offset:2px;text-decoration:underline}.prose a:hover{color:var(--color-blue-500)}.prose strong{color:var(--color-gray-900);font-weight:600}.prose code{color:var(--color-gray-800);background:var(--color-gray-100);border-radius:.25em;padding:.2em .4em;font-size:.875em}.prose pre{border:1px solid var(--color-gray-200);background:#f6f8fa;border-radius:.5em;margin-top:1.5em;margin-bottom:1.5em;padding:1em;overflow-x:auto}.prose pre code{background:0 0;border-radius:0;padding:0;font-size:.875em}.prose blockquote{border-left:3px solid var(--color-gray-300);color:var(--color-gray-500);margin-top:1.5em;margin-bottom:1.5em;padding-left:1em;font-style:italic}.prose blockquote.alert{border-left-width:4px;border-radius:.5em;padding:.75em 1em;font-style:normal}.prose blockquote.alert>p:first-child{margin-top:0}.prose blockquote.alert>p:last-child{margin-bottom:0}.prose blockquote.alert-tip{border-left-color:var(--color-green-500);background:#f0fdf499}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-tip{background:color-mix(in srgb, var(--color-green-50) 60%, transparent)}}.prose blockquote.alert-tip{color:var(--color-green-800)}.prose blockquote.alert-note{border-left-color:var(--color-blue-500);background:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-note{background:color-mix(in srgb, var(--color-blue-50) 60%, transparent)}}.prose blockquote.alert-note{color:var(--color-blue-800)}.prose blockquote.alert-important{border-left-color:var(--color-purple-500);background:#faf5ff99}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-important{background:color-mix(in srgb, var(--color-purple-50) 60%, transparent)}}.prose blockquote.alert-important{color:var(--color-purple-800)}.prose blockquote.alert-warning{border-left-color:var(--color-yellow-500);background:#fefce899}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-warning{background:color-mix(in srgb, var(--color-yellow-50) 60%, transparent)}}.prose blockquote.alert-warning{color:var(--color-yellow-800)}.prose blockquote.alert-caution{border-left-color:var(--color-red-500);background:#fef2f299}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-caution{background:color-mix(in srgb, var(--color-red-50) 60%, transparent)}}.prose blockquote.alert-caution{color:var(--color-red-800)}.prose ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.5em;list-style:outside}.prose ol{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.5em;list-style:decimal}.prose li{margin-top:.5em;margin-bottom:.5em}.prose li>ul,.prose li>ol{margin-top:.25em;margin-bottom:.25em}.prose hr{border:none;border-top:1px solid var(--color-gray-200);margin-top:2em;margin-bottom:2em}.prose table{border-collapse:collapse;width:100%;margin-top:1.5em;margin-bottom:1.5em;font-size:.875em}.prose th,.prose td{border:1px solid var(--color-gray-200);text-align:left;padding:.5em .75em}.prose th{background:var(--color-gray-50);color:var(--color-gray-900);font-weight:600}.prose img,.prose video{border-radius:.5em;max-width:100%;margin-top:1.5em;margin-bottom:1.5em}.dark .prose{color:var(--color-gray-200)}.dark .prose h1,.dark .prose h2,.dark .prose h3,.dark .prose h4,.dark .prose h5,.dark .prose h6{color:var(--color-gray-50)}:is(.dark .prose h1,.dark .prose h2,.dark .prose h3,.dark .prose h4,.dark .prose h5,.dark .prose h6)>a[href^=\\#]{color:var(--color-gray-600)}.dark .prose h2{border-bottom-color:var(--color-gray-700)}.dark .prose a{color:var(--color-blue-400)}.dark .prose a:hover{color:var(--color-blue-300)}.dark .prose strong{color:var(--color-gray-50)}.dark .prose code{color:var(--color-gray-100);background:var(--color-gray-800)}.dark .prose pre{border-color:var(--color-gray-700);background:#161b22}.dark .prose pre code{color:var(--color-gray-100);background:0 0}.dark .prose blockquote{border-left-color:var(--color-gray-600);color:var(--color-gray-400)}.dark .prose blockquote.alert-tip{background:#0d542b4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-tip{background:color-mix(in srgb, var(--color-green-900) 30%, transparent)}}.dark .prose blockquote.alert-tip{color:var(--color-green-300);border-left-color:var(--color-green-500)}.dark .prose blockquote.alert-note{background:#1c398e4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-note{background:color-mix(in srgb, var(--color-blue-900) 30%, transparent)}}.dark .prose blockquote.alert-note{color:var(--color-blue-300);border-left-color:var(--color-blue-500)}.dark .prose blockquote.alert-important{background:#59168b4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-important{background:color-mix(in srgb, var(--color-purple-900) 30%, transparent)}}.dark .prose blockquote.alert-important{color:var(--color-purple-300);border-left-color:var(--color-purple-500)}.dark .prose blockquote.alert-warning{background:#733e0a4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-warning{background:color-mix(in srgb, var(--color-yellow-900) 30%, transparent)}}.dark .prose blockquote.alert-warning{color:var(--color-yellow-300);border-left-color:var(--color-yellow-500)}.dark .prose blockquote.alert-caution{background:#82181a4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-caution{background:color-mix(in srgb, var(--color-red-900) 30%, transparent)}}.dark .prose blockquote.alert-caution{color:var(--color-red-300);border-left-color:var(--color-red-500)}.dark .prose hr{border-top-color:var(--color-gray-700)}.dark .prose th,.dark .prose td{border-color:var(--color-gray-700)}.dark .prose th{background:var(--color-gray-800);color:var(--color-gray-50)}.shj-syn-cmnt{color:#6e7781;font-style:italic}.shj-syn-err,.shj-syn-kwd{color:#cf222e}.shj-syn-class{color:#953800}.shj-syn-type,.shj-syn-oper,.shj-syn-num,.shj-syn-section,.shj-syn-var,.shj-syn-bool{color:#0550ae}.shj-syn-str{color:#0a3069}.shj-syn-func{color:#8250df}.shj-syn-insert{color:#116329}.shj-syn-deleted{color:#cf222e}.shj-syn-esc{color:#0550ae}.dark .shj-syn-cmnt{color:#8b949e}.dark .shj-syn-err,.dark .shj-syn-kwd{color:#ff7b72}.dark .shj-syn-class{color:#ffa657}.dark .shj-syn-type,.dark .shj-syn-oper,.dark .shj-syn-num,.dark .shj-syn-section,.dark .shj-syn-var,.dark .shj-syn-bool{color:#79c0ff}.dark .shj-syn-str{color:#a5d6ff}.dark .shj-syn-func{color:#d2a8ff}.dark .shj-syn-insert{color:#98c379}.dark .shj-syn-deleted{color:#ff7b72}.dark .shj-syn-esc{color:#79c0ff}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{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}</style>
1255
- <script type="module" crossorigin src="/assets/index-BC9qhYL0.js"><\/script>
1453
+ @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-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight: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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, 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-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-300:oklch(87.1% .15 154.449);--color-green-500:oklch(72.3% .219 149.579);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--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;--radius-md:.375rem;--radius-xl:.75rem;--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,ui-sans-serif, system-ui, 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;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{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{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.z-50{z-index:50}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-screen{height:100vh}.max-h-80{max-height:calc(var(--spacing) * 80)}.w-4{width:calc(var(--spacing) * 4)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-90{rotate:90deg}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.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-8{padding-block:calc(var(--spacing) * 8)}.pt-\\[15vh\\]{padding-top:15vh}.text-center{text-align:center}.text-left{text-align:left}.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))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-900{color:var(--color-gray-900)}.text-red-500{color:var(--color-red-500)}.placeholder-gray-400::placeholder{color:var(--color-gray-400)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-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))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:text-gray-500:hover{color:var(--color-gray-500)}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:40rem){.sm\\:inline{display:inline}}.dark\\:border-gray-700:where(.dark,.dark *){border-color:var(--color-gray-700)}.dark\\:border-gray-800:where(.dark,.dark *){border-color:var(--color-gray-800)}.dark\\:bg-gray-800:where(.dark,.dark *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\\:bg-gray-950:where(.dark,.dark *){background-color:var(--color-gray-950)}.dark\\:text-gray-100:where(.dark,.dark *){color:var(--color-gray-100)}.dark\\:text-gray-200:where(.dark,.dark *){color:var(--color-gray-200)}.dark\\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\\:text-gray-500:where(.dark,.dark *),.dark\\:placeholder-gray-500:where(.dark,.dark *)::placeholder{color:var(--color-gray-500)}@media (hover:hover){.dark\\:hover\\:border-gray-600:where(.dark,.dark *):hover{border-color:var(--color-gray-600)}.dark\\:hover\\:bg-gray-800:where(.dark,.dark *):hover{background-color:var(--color-gray-800)}.dark\\:hover\\:text-gray-100:where(.dark,.dark *):hover{color:var(--color-gray-100)}.dark\\:hover\\:text-gray-300:where(.dark,.dark *):hover{color:var(--color-gray-300)}.dark\\:hover\\:text-gray-400:where(.dark,.dark *):hover{color:var(--color-gray-400)}}}#search-results::-webkit-scrollbar{width:6px}#search-results::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:3px}.dark #search-results::-webkit-scrollbar-thumb{background:var(--color-gray-600)}.line-clamp-2{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.nav-active{background:var(--color-gray-100)}.dark .nav-active{background:var(--color-gray-800)}.prose{color:var(--color-gray-700);line-height:1.75}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--color-gray-900);margin-top:2em;margin-bottom:.75em;font-weight:700;line-height:1.3;position:relative}:is(.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6)>a[href^=\\#]{color:var(--color-gray-300);opacity:0;padding-right:.25em;font-weight:400;text-decoration:none;transition:opacity .15s;position:absolute;right:100%}:is(.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6):hover>a[href^=\\#]{opacity:1}.prose h1{margin-top:0;font-size:2.25em}.prose h2{border-bottom:1px solid var(--color-gray-200);padding-bottom:.3em;font-size:1.5em}.prose h3{font-size:1.25em}.prose h4{font-size:1.1em}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose a{color:var(--color-blue-600);text-underline-offset:2px;text-decoration:underline}.prose a:hover{color:var(--color-blue-500)}.prose strong{color:var(--color-gray-900);font-weight:600}.prose code{color:var(--color-gray-800);background:var(--color-gray-100);border-radius:.25em;padding:.2em .4em;font-size:.875em}.prose pre{border:1px solid var(--color-gray-200);background:#f6f8fa;border-radius:.5em;margin-top:1.5em;margin-bottom:1.5em;padding:1em;overflow-x:auto}.prose pre code{background:0 0;border-radius:0;padding:0;font-size:.875em}.prose blockquote{border-left:3px solid var(--color-gray-300);color:var(--color-gray-500);margin-top:1.5em;margin-bottom:1.5em;padding-left:1em;font-style:italic}.prose blockquote.alert{border-left-width:4px;border-radius:.5em;padding:.75em 1em;font-style:normal}.prose blockquote.alert>p:first-child{margin-top:0}.prose blockquote.alert>p:last-child{margin-bottom:0}.prose blockquote.alert-tip{border-left-color:var(--color-green-500);background:#f0fdf499}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-tip{background:color-mix(in srgb, var(--color-green-50) 60%, transparent)}}.prose blockquote.alert-tip{color:var(--color-green-800)}.prose blockquote.alert-note{border-left-color:var(--color-blue-500);background:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-note{background:color-mix(in srgb, var(--color-blue-50) 60%, transparent)}}.prose blockquote.alert-note{color:var(--color-blue-800)}.prose blockquote.alert-important{border-left-color:var(--color-purple-500);background:#faf5ff99}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-important{background:color-mix(in srgb, var(--color-purple-50) 60%, transparent)}}.prose blockquote.alert-important{color:var(--color-purple-800)}.prose blockquote.alert-warning{border-left-color:var(--color-yellow-500);background:#fefce899}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-warning{background:color-mix(in srgb, var(--color-yellow-50) 60%, transparent)}}.prose blockquote.alert-warning{color:var(--color-yellow-800)}.prose blockquote.alert-caution{border-left-color:var(--color-red-500);background:#fef2f299}@supports (color:color-mix(in lab, red, red)){.prose blockquote.alert-caution{background:color-mix(in srgb, var(--color-red-50) 60%, transparent)}}.prose blockquote.alert-caution{color:var(--color-red-800)}.prose ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.5em;list-style:outside}.prose ol{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.5em;list-style:decimal}.prose li{margin-top:.5em;margin-bottom:.5em}.prose li>ul,.prose li>ol{margin-top:.25em;margin-bottom:.25em}.prose hr{border:none;border-top:1px solid var(--color-gray-200);margin-top:2em;margin-bottom:2em}.prose table{border-collapse:collapse;width:100%;margin-top:1.5em;margin-bottom:1.5em;font-size:.875em}.prose th,.prose td{border:1px solid var(--color-gray-200);text-align:left;padding:.5em .75em}.prose th{background:var(--color-gray-50);color:var(--color-gray-900);font-weight:600}.prose img,.prose video{border-radius:.5em;max-width:100%;margin-top:1.5em;margin-bottom:1.5em}.dark .prose{color:var(--color-gray-200)}.dark .prose h1,.dark .prose h2,.dark .prose h3,.dark .prose h4,.dark .prose h5,.dark .prose h6{color:var(--color-gray-50)}:is(.dark .prose h1,.dark .prose h2,.dark .prose h3,.dark .prose h4,.dark .prose h5,.dark .prose h6)>a[href^=\\#]{color:var(--color-gray-600)}.dark .prose h2{border-bottom-color:var(--color-gray-700)}.dark .prose a{color:var(--color-blue-400)}.dark .prose a:hover{color:var(--color-blue-300)}.dark .prose strong{color:var(--color-gray-50)}.dark .prose code{color:var(--color-gray-100);background:var(--color-gray-800)}.dark .prose pre{border-color:var(--color-gray-700);background:#161b22}.dark .prose pre code{color:var(--color-gray-100);background:0 0}.dark .prose blockquote{border-left-color:var(--color-gray-600);color:var(--color-gray-400)}.dark .prose blockquote.alert-tip{background:#0d542b4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-tip{background:color-mix(in srgb, var(--color-green-900) 30%, transparent)}}.dark .prose blockquote.alert-tip{color:var(--color-green-300);border-left-color:var(--color-green-500)}.dark .prose blockquote.alert-note{background:#1c398e4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-note{background:color-mix(in srgb, var(--color-blue-900) 30%, transparent)}}.dark .prose blockquote.alert-note{color:var(--color-blue-300);border-left-color:var(--color-blue-500)}.dark .prose blockquote.alert-important{background:#59168b4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-important{background:color-mix(in srgb, var(--color-purple-900) 30%, transparent)}}.dark .prose blockquote.alert-important{color:var(--color-purple-300);border-left-color:var(--color-purple-500)}.dark .prose blockquote.alert-warning{background:#733e0a4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-warning{background:color-mix(in srgb, var(--color-yellow-900) 30%, transparent)}}.dark .prose blockquote.alert-warning{color:var(--color-yellow-300);border-left-color:var(--color-yellow-500)}.dark .prose blockquote.alert-caution{background:#82181a4d}@supports (color:color-mix(in lab, red, red)){.dark .prose blockquote.alert-caution{background:color-mix(in srgb, var(--color-red-900) 30%, transparent)}}.dark .prose blockquote.alert-caution{color:var(--color-red-300);border-left-color:var(--color-red-500)}.dark .prose hr{border-top-color:var(--color-gray-700)}.dark .prose th,.dark .prose td{border-color:var(--color-gray-700)}.dark .prose th{background:var(--color-gray-800);color:var(--color-gray-50)}.shj-syn-cmnt{color:#6e7781;font-style:italic}.shj-syn-err,.shj-syn-kwd{color:#cf222e}.shj-syn-class{color:#953800}.shj-syn-type,.shj-syn-oper,.shj-syn-num,.shj-syn-section,.shj-syn-var,.shj-syn-bool{color:#0550ae}.shj-syn-str{color:#0a3069}.shj-syn-func{color:#8250df}.shj-syn-insert{color:#116329}.shj-syn-deleted{color:#cf222e}.shj-syn-esc{color:#0550ae}.dark .shj-syn-cmnt{color:#8b949e}.dark .shj-syn-err,.dark .shj-syn-kwd{color:#ff7b72}.dark .shj-syn-class{color:#ffa657}.dark .shj-syn-type,.dark .shj-syn-oper,.dark .shj-syn-num,.dark .shj-syn-section,.dark .shj-syn-var,.dark .shj-syn-bool{color:#79c0ff}.dark .shj-syn-str{color:#a5d6ff}.dark .shj-syn-func{color:#d2a8ff}.dark .shj-syn-insert{color:#98c379}.dark .shj-syn-deleted{color:#ff7b72}.dark .shj-syn-esc{color:#79c0ff}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{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}</style>
1454
+ <script type="module" crossorigin src="/assets/index-CIhhqrBM.js"><\/script>
1256
1455
  </head>
1257
1456
  <body class="h-screen flex flex-col bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-200">
1258
1457
  <!-- Header -->
@@ -1379,19 +1578,19 @@ var Wt, Gt = v((() => {
1379
1578
  </body>
1380
1579
  </html>
1381
1580
  `, { headers: { "content-type": `text/html; charset=utf-8` } });
1382
- })), Jt = y({ default: () => Yt });
1383
- function Yt(e) {
1384
- return Kt(e.req);
1581
+ })), un = x({ default: () => dn });
1582
+ function dn(e) {
1583
+ return cn(e.req);
1385
1584
  }
1386
- var Xt = v((() => {
1387
- qt();
1585
+ var fn = b((() => {
1586
+ ln();
1388
1587
  }));
1389
- V();
1390
- var Zt = (() => {
1588
+ B();
1589
+ var pn = (() => {
1391
1590
  let e = [{
1392
1591
  name: `headers`,
1393
1592
  route: `/assets/**`,
1394
- handler: ze,
1593
+ handler: Je,
1395
1594
  options: { "cache-control": `public, max-age=31536000, immutable` }
1396
1595
  }];
1397
1596
  return (t, n) => {
@@ -1403,38 +1602,42 @@ var Zt = (() => {
1403
1602
  params: { _: i.slice(2).join(`/`) }
1404
1603
  }), r;
1405
1604
  };
1406
- })(), Qt = E(() => Promise.resolve().then(() => (Ft(), Nt))), $t = E(() => Vt().then(() => It)), en = E(() => Promise.resolve().then(() => (Gt(), Ht))), tn = E(() => Promise.resolve().then(() => (Xt(), Jt))), nn = (() => {
1605
+ })(), mn = O(() => Promise.resolve().then(() => (Jt(), Kt))), hn = O(() => en().then(() => Yt)), gn = O(() => Promise.resolve().then(() => (rn(), tn))), _n = O(() => Promise.resolve().then(() => (sn(), an))), vn = O(() => Promise.resolve().then(() => (fn(), un))), yn = (() => {
1407
1606
  let e = {
1408
1607
  route: `/api/meta`,
1409
- handler: Qt
1608
+ handler: mn
1410
1609
  }, t = {
1411
1610
  route: `/api/page`,
1412
- handler: $t
1611
+ handler: hn
1413
1612
  }, n = {
1414
1613
  route: `/api/search`,
1415
- handler: en
1614
+ handler: gn
1416
1615
  }, r = {
1616
+ route: `/api/watch`,
1617
+ handler: _n
1618
+ }, i = {
1417
1619
  route: `/**`,
1418
- handler: tn
1620
+ handler: vn
1419
1621
  };
1420
- return (i, a) => {
1421
- if (a.charCodeAt(a.length - 1) === 47 && (a = a.slice(0, -1) || `/`), a === `/api/meta`) return { data: e };
1422
- if (a === `/api/page`) return { data: t };
1423
- if (a === `/api/search`) return { data: n };
1424
- let o = a.split(`/`);
1425
- return o.length, {
1426
- data: r,
1427
- params: { _: o.slice(1).join(`/`) }
1622
+ return (a, o) => {
1623
+ if (o.charCodeAt(o.length - 1) === 47 && (o = o.slice(0, -1) || `/`), o === `/api/meta`) return { data: e };
1624
+ if (o === `/api/page`) return { data: t };
1625
+ if (o === `/api/search`) return { data: n };
1626
+ if (o === `/api/watch`) return { data: r };
1627
+ let s = o.split(`/`);
1628
+ return s.length, {
1629
+ data: i,
1630
+ params: { _: s.slice(1).join(`/`) }
1428
1631
  };
1429
1632
  };
1430
- })(), rn = [D(Ke)].filter(Boolean);
1431
- V();
1432
- var an = `default`;
1433
- function $() {
1434
- let e = $._instance;
1435
- return e || (e = $._instance = on(), globalThis.__nitro__ = globalThis.__nitro__ || {}, globalThis.__nitro__[an] = e, e);
1436
- }
1437
- function on() {
1633
+ })(), bn = [k(tt)].filter(Boolean);
1634
+ B();
1635
+ var xn = `default`;
1636
+ function Sn() {
1637
+ let e = Sn._instance;
1638
+ return e || (e = Sn._instance = Cn(), globalThis.__nitro__ = globalThis.__nitro__ || {}, globalThis.__nitro__[xn] = e, e);
1639
+ }
1640
+ function Cn() {
1438
1641
  let e = (e, t) => {
1439
1642
  if (t?.event) {
1440
1643
  let n = t.event.req.context?.nitro?.errors;
@@ -1443,8 +1646,8 @@ function on() {
1443
1646
  context: t
1444
1647
  });
1445
1648
  }
1446
- }, t = sn({ onError(e, t) {
1447
- return De(e, t);
1649
+ }, t = wn({ onError(e, t) {
1650
+ return Ie(e, t);
1448
1651
  } });
1449
1652
  return {
1450
1653
  fetch: (e) => (e.context ||= {}, e.context.nitro = e.context.nitro || { errors: [] }, t.fetch(e)),
@@ -1453,19 +1656,19 @@ function on() {
1453
1656
  captureError: e
1454
1657
  };
1455
1658
  }
1456
- function sn(e) {
1457
- let t = new xe(e);
1458
- return t[`~findRoute`] = (e) => nn(e.req.method, e.url.pathname), t[`~middleware`].push(...rn), t[`~getMiddleware`] = (e, n) => {
1659
+ function wn(e) {
1660
+ let t = new Oe(e);
1661
+ return t[`~findRoute`] = (e) => yn(e.req.method, e.url.pathname), t[`~middleware`].push(...bn), t[`~getMiddleware`] = (e, n) => {
1459
1662
  let r = e.url.pathname, i = e.req.method, a = [];
1460
1663
  {
1461
- let t = cn(i, r);
1664
+ let t = Tn(i, r);
1462
1665
  e.context.routeRules = t?.routeRules, t?.routeRuleMiddleware.length && a.push(...t.routeRuleMiddleware);
1463
1666
  }
1464
1667
  return a.push(...t[`~middleware`]), n?.data?.middleware?.length && a.push(...n.data.middleware), a;
1465
1668
  }, t;
1466
1669
  }
1467
- function cn(e, t) {
1468
- let n = Zt(e, t);
1670
+ function Tn(e, t) {
1671
+ let n = pn(e, t);
1469
1672
  if (!n?.length) return { routeRuleMiddleware: [] };
1470
1673
  let r = {};
1471
1674
  for (let e of n) for (let t of e.data) {
@@ -1494,13 +1697,13 @@ function cn(e, t) {
1494
1697
  routeRuleMiddleware: i
1495
1698
  };
1496
1699
  }
1497
- Q();
1498
- async function ln(e) {
1499
- let t = $(), n = await X(e);
1700
+ $();
1701
+ async function En(e) {
1702
+ let t = Sn(), n = await Z(e);
1500
1703
  return {
1501
1704
  fetch: t.fetch,
1502
1705
  docs: n
1503
1706
  };
1504
1707
  }
1505
1708
  //#endregion
1506
- export { ln as createDocsServer };
1709
+ export { En as createDocsServer };