@the_library/public 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +2298 -0
  2. package/assets/branding/data-pond.png +0 -0
  3. package/assets/branding/dsafe-logo.png +0 -0
  4. package/assets/branding/founder-photo.jpg +0 -0
  5. package/assets/branding/icon_transparent.png +0 -0
  6. package/assets/branding/library-favicon.png +0 -0
  7. package/assets/branding/pond-enterprise-logo.jpg +0 -0
  8. package/assets/branding/pond-enterprise-logo.svg +27 -0
  9. package/dist/branding/index.d.ts +48 -0
  10. package/dist/branding/index.js +67 -0
  11. package/dist/branding/index.js.map +1 -0
  12. package/dist/chunk-2HFOWE5R.js +296 -0
  13. package/dist/chunk-2HFOWE5R.js.map +1 -0
  14. package/dist/chunk-3L6LH2XK.js +465 -0
  15. package/dist/chunk-3L6LH2XK.js.map +1 -0
  16. package/dist/chunk-4CWVFPBN.js +28 -0
  17. package/dist/chunk-4CWVFPBN.js.map +1 -0
  18. package/dist/chunk-AGHPATVL.js +65 -0
  19. package/dist/chunk-AGHPATVL.js.map +1 -0
  20. package/dist/chunk-JDUYLUDJ.js +4835 -0
  21. package/dist/chunk-JDUYLUDJ.js.map +1 -0
  22. package/dist/chunk-OEZK7IX7.js +77 -0
  23. package/dist/chunk-OEZK7IX7.js.map +1 -0
  24. package/dist/chunk-PUYDAUCI.js +2873 -0
  25. package/dist/chunk-PUYDAUCI.js.map +1 -0
  26. package/dist/chunk-WHWMTS7D.js +99 -0
  27. package/dist/chunk-WHWMTS7D.js.map +1 -0
  28. package/dist/chunk-Y7RS6RTM.js +342 -0
  29. package/dist/chunk-Y7RS6RTM.js.map +1 -0
  30. package/dist/chunk-ZEZGI2TP.js +197 -0
  31. package/dist/chunk-ZEZGI2TP.js.map +1 -0
  32. package/dist/core-dao-core-logo-VDT2I5IW.svg +33 -0
  33. package/dist/downloader/dl2-sw.js +199 -0
  34. package/dist/downloader/dl2-sw.js.map +1 -0
  35. package/dist/downloader/file-worker-v2.js +258 -0
  36. package/dist/downloader/file-worker-v2.js.map +1 -0
  37. package/dist/downloader/index.d.ts +45 -0
  38. package/dist/downloader/index.js +538 -0
  39. package/dist/downloader/index.js.map +1 -0
  40. package/dist/downloader/mu-worker-v2.js +197 -0
  41. package/dist/downloader/mu-worker-v2.js.map +1 -0
  42. package/dist/downloader/react.d.ts +19 -0
  43. package/dist/downloader/react.js +32 -0
  44. package/dist/downloader/react.js.map +1 -0
  45. package/dist/downloader/solid.d.ts +21 -0
  46. package/dist/downloader/solid.js +19 -0
  47. package/dist/downloader/solid.js.map +1 -0
  48. package/dist/downloader/sw.d.ts +22 -0
  49. package/dist/downloader/sw.js +119 -0
  50. package/dist/downloader/sw.js.map +1 -0
  51. package/dist/downloader/vue.d.ts +23 -0
  52. package/dist/downloader/vue.js +19 -0
  53. package/dist/downloader/vue.js.map +1 -0
  54. package/dist/level-state-J3pj64Tr.d.ts +15 -0
  55. package/dist/models/astro.d.ts +47 -0
  56. package/dist/models/astro.js +44 -0
  57. package/dist/models/astro.js.map +1 -0
  58. package/dist/models/index.d.ts +244 -0
  59. package/dist/models/index.js +340 -0
  60. package/dist/models/index.js.map +1 -0
  61. package/dist/models/models.d.ts +524 -0
  62. package/dist/models/models.js +46 -0
  63. package/dist/models/models.js.map +1 -0
  64. package/dist/models/models_v2.global.js +1 -0
  65. package/dist/models/patch-worker.js +543 -0
  66. package/dist/models/patch-worker.js.map +1 -0
  67. package/dist/models/react.d.ts +43 -0
  68. package/dist/models/react.js +73 -0
  69. package/dist/models/react.js.map +1 -0
  70. package/dist/models/solid.d.ts +73 -0
  71. package/dist/models/solid.js +95 -0
  72. package/dist/models/solid.js.map +1 -0
  73. package/dist/models/vue.d.ts +51 -0
  74. package/dist/models/vue.js +98 -0
  75. package/dist/models/vue.js.map +1 -0
  76. package/dist/orm-BvkX0aBT.d.ts +507 -0
  77. package/dist/session-vqOnyxga.d.ts +184 -0
  78. package/dist/state-BTsp-E4v.d.ts +111 -0
  79. package/dist/types-Dn0EFMO_.d.ts +293 -0
  80. package/dist/types-Xb8Ta9tZ.d.ts +155 -0
  81. package/dist/web3/index.d.ts +820 -0
  82. package/dist/web3/index.js +1020 -0
  83. package/dist/web3/index.js.map +1 -0
  84. package/dist/web3/registry.d.ts +145 -0
  85. package/dist/web3/registry.js +23 -0
  86. package/dist/web3/registry.js.map +1 -0
  87. package/dist/web3/vue.d.ts +174 -0
  88. package/dist/web3/vue.js +391 -0
  89. package/dist/web3/vue.js.map +1 -0
  90. package/package.json +124 -0
@@ -0,0 +1,73 @@
1
+ import * as solid_js from 'solid-js';
2
+ import { L as LevelState } from '../level-state-J3pj64Tr.js';
3
+ import { S as SessionBootstrapOptions } from '../session-vqOnyxga.js';
4
+ export { r as resetModelsV2Session } from '../session-vqOnyxga.js';
5
+ import { O as Orm } from '../orm-BvkX0aBT.js';
6
+
7
+ /**
8
+ * **Composes** the Solid.js reactivity system into the models_v2 record tracker
9
+ * (does not replace other frameworks' systems — see `addReactivitySystem`).
10
+ * Each tracked ORM record maps to a Solid signal in a `WeakMap`, so a read
11
+ * inside a reactive scope subscribes and a mutation (`record.patch()` /
12
+ * generated setters) triggers a fine-grained update. Signals are created in a
13
+ * detached `createRoot` so they survive component unmount / navigation.
14
+ *
15
+ * Idempotent — repeated calls (e.g. per `astro:after-swap`) keep the single
16
+ * registration. Returns an unregister function.
17
+ */
18
+ declare const installSolidReactivity: () => (() => void);
19
+ /**
20
+ * Establishes a **persistent models_v2 session** for Solid — the full front-end
21
+ * data load (resolve sidecars → worker → `hydrateAll` → replay) plus Solid
22
+ * reactivity, retained across every live URL navigation.
23
+ *
24
+ * Thin wrapper over the shared `bootstrapSession()` glue (worker boot, once-only
25
+ * promise, Astro `<ClientRouter />` persistence) with Solid's reactivity
26
+ * installer injected — the same one-call entry exists in the vue/react adapters.
27
+ *
28
+ * @example
29
+ * import { Book, Tag, Person, NewBookWithId, NewTagWithId, NewPersonWithId } from '@the_library/public/models/models';
30
+ * await bootstrapModelsV2({
31
+ * models: [
32
+ * { type: Book.type, create: NewBookWithId },
33
+ * { type: Tag.type, create: NewTagWithId },
34
+ * { type: Person.type, create: NewPersonWithId },
35
+ * ],
36
+ * localMode: '/corpus_v2', // dev: serve bin/ + corpus-index.json locally
37
+ * // registry: { dataBlock }, // prod: resolve Arweave TX-ids from registry_v2
38
+ * selectedLangs: ['eng'],
39
+ * });
40
+ */
41
+ declare const bootstrapModelsV2: (opts: SessionBootstrapOptions) => Promise<void>;
42
+ /**
43
+ * Returns a Solid signal accessor for the given username's LevelState.
44
+ * The signal updates whenever that user's level changes.
45
+ *
46
+ * @example
47
+ * const level = useLevel('mine');
48
+ * return <div>{level().level}</div>;
49
+ */
50
+ declare const useLevel: (username: string) => solid_js.Accessor<LevelState>;
51
+ /**
52
+ * Solid signal accessor over the global trash store (models/trash.ts) for one
53
+ * object type, merged across `usernames` (empty = every known username).
54
+ * Population and live updates are entirely automatic — nothing to register,
55
+ * nothing to feed it.
56
+ *
57
+ * @example
58
+ * const { count, getIds } = useTrash(Tag.type, ['mine']);
59
+ * return <span>{count()}</span>;
60
+ */
61
+ declare const useTrash: (objectType: number, usernames?: string[]) => {
62
+ count: solid_js.Accessor<number>;
63
+ getIds: () => number[];
64
+ };
65
+
66
+ declare const useDraft: <T extends Orm>(model: () => T) => {
67
+ draft: solid_js.Accessor<T>;
68
+ isDirty: () => boolean;
69
+ commit: () => void;
70
+ rollback: () => void;
71
+ };
72
+
73
+ export { bootstrapModelsV2, installSolidReactivity, useDraft, useLevel, useTrash };
@@ -0,0 +1,95 @@
1
+ import {
2
+ commitDraft,
3
+ createDraft,
4
+ isDraftDirty,
5
+ rollbackDraft
6
+ } from "../chunk-OEZK7IX7.js";
7
+ import {
8
+ bootstrapSession,
9
+ resetModelsV2Session
10
+ } from "../chunk-2HFOWE5R.js";
11
+ import {
12
+ getLevel,
13
+ subscribeLevel
14
+ } from "../chunk-4CWVFPBN.js";
15
+ import {
16
+ trashStore
17
+ } from "../chunk-Y7RS6RTM.js";
18
+ import {
19
+ addReactivitySystem
20
+ } from "../chunk-JDUYLUDJ.js";
21
+ import "../chunk-ZEZGI2TP.js";
22
+
23
+ // src/models/adapters/solid.ts
24
+ import { createSignal, onCleanup, createRoot } from "solid-js";
25
+ import { createMemo } from "solid-js";
26
+ var _solidUnregister = null;
27
+ var installSolidReactivity = () => {
28
+ if (_solidUnregister) return _solidUnregister;
29
+ const signals = /* @__PURE__ */ new WeakMap();
30
+ const system = {
31
+ track(o) {
32
+ let s = signals.get(o);
33
+ if (!s) {
34
+ s = createRoot(() => {
35
+ const [get, set] = createSignal(0);
36
+ return { get, set };
37
+ });
38
+ signals.set(o, s);
39
+ }
40
+ s.get();
41
+ },
42
+ trigger(o) {
43
+ const s = signals.get(o);
44
+ if (s) s.set(s.get() + 1);
45
+ }
46
+ };
47
+ _solidUnregister = addReactivitySystem(system);
48
+ return _solidUnregister;
49
+ };
50
+ var bootstrapModelsV2 = (opts) => bootstrapSession(opts, installSolidReactivity);
51
+ var useLevel = (username) => {
52
+ const [state, setState] = createSignal(getLevel(username));
53
+ const unsub = subscribeLevel((u) => {
54
+ if (u === username) setState(getLevel(username));
55
+ });
56
+ onCleanup(unsub);
57
+ return state;
58
+ };
59
+ var useTrash = (objectType, usernames = []) => {
60
+ const [count, setCount] = createSignal(trashStore.count(objectType, usernames));
61
+ const unsub = trashStore.subscribe(objectType, () => setCount(trashStore.count(objectType, usernames)));
62
+ onCleanup(unsub);
63
+ return {
64
+ count,
65
+ getIds: () => trashStore.list(objectType, usernames)
66
+ };
67
+ };
68
+ var useDraft = (model) => {
69
+ const [tick, setTick] = createSignal(0);
70
+ const draft = createMemo(() => createDraft(model(), () => setTick((t) => t + 1)));
71
+ return {
72
+ draft,
73
+ isDirty: () => {
74
+ tick();
75
+ return isDraftDirty(draft());
76
+ },
77
+ commit: () => {
78
+ commitDraft(draft());
79
+ setTick((t) => t + 1);
80
+ },
81
+ rollback: () => {
82
+ rollbackDraft(draft());
83
+ setTick((t) => t + 1);
84
+ }
85
+ };
86
+ };
87
+ export {
88
+ bootstrapModelsV2,
89
+ installSolidReactivity,
90
+ resetModelsV2Session,
91
+ useDraft,
92
+ useLevel,
93
+ useTrash
94
+ };
95
+ //# sourceMappingURL=solid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/models/adapters/solid.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,cAAc,WAAW,kBAAkB;AA2GpD,SAAS,kBAAkB;AAnG3B,IAAI,mBAAwC;AAarC,IAAM,yBAAyB,MAAoB;AACtD,MAAI,iBAAkB,QAAO;AAC7B,QAAM,UAAU,oBAAI,QAAiE;AACrF,QAAM,SAA2B;AAAA,IAC7B,MAAM,GAAW;AACb,UAAI,IAAI,QAAQ,IAAI,CAAC;AACrB,UAAI,CAAC,GAAG;AAEJ,YAAI,WAAW,MAAM;AAAE,gBAAM,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC;AAAG,iBAAO,EAAE,KAAK,IAAI;AAAA,QAAG,CAAC;AACjF,gBAAQ,IAAI,GAAG,CAAC;AAAA,MACpB;AACA,QAAE,IAAI;AAAA,IACV;AAAA,IACA,QAAQ,GAAW;AACf,YAAM,IAAI,QAAQ,IAAI,CAAC;AACvB,UAAI,EAAG,GAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AAAA,IAC5B;AAAA,EACJ;AACA,qBAAmB,oBAAoB,MAAM;AAC7C,SAAO;AACX;AAwBO,IAAM,oBAAoB,CAAC,SAC9B,iBAAiB,MAAM,sBAAsB;AAU1C,IAAM,WAAW,CAAC,aAAqB;AAC1C,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,SAAS,QAAQ,CAAC;AACzD,QAAM,QAAQ,eAAe,OAAK;AAAE,QAAI,MAAM,SAAU,UAAS,SAAS,QAAQ,CAAC;AAAA,EAAG,CAAC;AACvF,YAAU,KAAK;AACf,SAAO;AACX;AAYO,IAAM,WAAW,CAAC,YAAoB,YAAsB,CAAC,MAAM;AACtE,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,WAAW,MAAM,YAAY,SAAS,CAAC;AAC9E,QAAM,QAAQ,WAAW,UAAU,YAAY,MAAM,SAAS,WAAW,MAAM,YAAY,SAAS,CAAC,CAAC;AACtG,YAAU,KAAK;AACf,SAAO;AAAA,IACH;AAAA,IACA,QAAQ,MAAM,WAAW,KAAK,YAAY,SAAS;AAAA,EACvD;AACJ;AAUO,IAAM,WAAW,CAAgB,UAAmB;AACvD,QAAM,CAAC,MAAM,OAAO,IAAI,aAAa,CAAC;AAEtC,QAAM,QAAQ,WAAW,MAAM,YAAY,MAAM,GAAG,MAAM,QAAQ,OAAK,IAAI,CAAC,CAAC,CAAC;AAE9E,SAAO;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACX,WAAK;AACL,aAAO,aAAa,MAAM,CAAC;AAAA,IAC/B;AAAA,IACA,QAAQ,MAAM;AACV,kBAAY,MAAM,CAAC;AACnB,cAAQ,OAAK,IAAI,CAAC;AAAA,IACtB;AAAA,IACA,UAAU,MAAM;AACZ,oBAAc,MAAM,CAAC;AACrB,cAAQ,OAAK,IAAI,CAAC;AAAA,IACtB;AAAA,EACJ;AACJ;","names":[]}
@@ -0,0 +1,51 @@
1
+ import * as vue from 'vue';
2
+ import { Ref } from 'vue';
3
+ import { L as LevelState } from '../level-state-J3pj64Tr.js';
4
+ import { S as SessionBootstrapOptions } from '../session-vqOnyxga.js';
5
+ export { r as resetModelsV2Session } from '../session-vqOnyxga.js';
6
+ import { O as Orm } from '../orm-BvkX0aBT.js';
7
+
8
+ /**
9
+ * **Composes** the Vue 3 reactivity system into the models_v2 record tracker
10
+ * (coexists with other frameworks — see `addReactivitySystem`). Each tracked
11
+ * ORM record maps to a `shallowRef` in a `WeakMap`; a read inside a reactive
12
+ * effect subscribes and a mutation bumps the ref. Idempotent; returns an
13
+ * unregister function.
14
+ */
15
+ declare const installVueReactivity: () => (() => void);
16
+ /**
17
+ * Persistent models_v2 session for Vue — full front-end boot + Vue reactivity,
18
+ * retained across URL navigation (SPA / Astro `<ClientRouter />`). Thin wrapper
19
+ * over the shared `bootstrapSession()` glue with Vue's reactivity installer.
20
+ */
21
+ declare const bootstrapModelsV2: (opts: SessionBootstrapOptions) => Promise<void>;
22
+ /**
23
+ * Returns a Vue computed ref that updates whenever the given user's level changes.
24
+ * Automatically unsubscribes when the calling component is unmounted.
25
+ *
26
+ * @example
27
+ * const { level, progress } = useLevel('mine').value;
28
+ */
29
+ declare const useLevel: (username: string) => vue.ComputedRef<LevelState>;
30
+ /**
31
+ * Reactive view over the global trash store (models/trash.ts) for one object
32
+ * type, merged across `usernames` (empty = every known username). Population
33
+ * and live updates are entirely automatic (boot scan + reactivity-system hook
34
+ * inside trash.ts) — nothing to register, nothing to feed it.
35
+ *
36
+ * @example
37
+ * const { count, getIds } = useTrash(Tag.type, ['mine']);
38
+ */
39
+ declare const useTrash: (objectType: number, usernames?: string[]) => {
40
+ count: vue.ComputedRef<number>;
41
+ getIds: () => number[];
42
+ };
43
+
44
+ declare const useDraft: <T extends Orm>(model: Ref<T> | (() => T)) => {
45
+ draft: vue.ComputedRef<T>;
46
+ isDirty: vue.ComputedRef<boolean>;
47
+ commit: () => void;
48
+ rollback: () => void;
49
+ };
50
+
51
+ export { bootstrapModelsV2, installVueReactivity, useDraft, useLevel, useTrash };
@@ -0,0 +1,98 @@
1
+ import {
2
+ commitDraft,
3
+ createDraft,
4
+ isDraftDirty,
5
+ rollbackDraft
6
+ } from "../chunk-OEZK7IX7.js";
7
+ import {
8
+ bootstrapSession,
9
+ resetModelsV2Session
10
+ } from "../chunk-2HFOWE5R.js";
11
+ import {
12
+ getLevel,
13
+ subscribeLevel
14
+ } from "../chunk-4CWVFPBN.js";
15
+ import {
16
+ trashStore
17
+ } from "../chunk-Y7RS6RTM.js";
18
+ import {
19
+ addReactivitySystem
20
+ } from "../chunk-JDUYLUDJ.js";
21
+ import "../chunk-ZEZGI2TP.js";
22
+
23
+ // src/models/adapters/vue.ts
24
+ import { computed, onUnmounted, shallowRef } from "vue";
25
+ var _vueUnregister = null;
26
+ var installVueReactivity = () => {
27
+ if (_vueUnregister) return _vueUnregister;
28
+ const refs = /* @__PURE__ */ new WeakMap();
29
+ const system = {
30
+ track(o) {
31
+ let r = refs.get(o);
32
+ if (!r) {
33
+ r = shallowRef(0);
34
+ refs.set(o, r);
35
+ }
36
+ void r.value;
37
+ },
38
+ trigger(o) {
39
+ const r = refs.get(o);
40
+ if (r) r.value++;
41
+ }
42
+ };
43
+ _vueUnregister = addReactivitySystem(system);
44
+ return _vueUnregister;
45
+ };
46
+ var bootstrapModelsV2 = (opts) => bootstrapSession(opts, installVueReactivity);
47
+ var useLevel = (username) => {
48
+ const tick = shallowRef(0);
49
+ const unsub = subscribeLevel((u) => {
50
+ if (u === username) tick.value++;
51
+ });
52
+ onUnmounted(unsub);
53
+ return computed(() => (tick.value, getLevel(username)));
54
+ };
55
+ var useTrash = (objectType, usernames = []) => {
56
+ const tick = shallowRef(0);
57
+ const unsub = trashStore.subscribe(objectType, () => {
58
+ tick.value++;
59
+ });
60
+ onUnmounted(unsub);
61
+ return {
62
+ count: computed(() => (tick.value, trashStore.count(objectType, usernames))),
63
+ getIds: () => trashStore.list(objectType, usernames)
64
+ };
65
+ };
66
+ var useDraft = (model) => {
67
+ const tick = shallowRef(0);
68
+ const draft = computed(() => {
69
+ const m = typeof model === "function" ? model() : model.value;
70
+ return createDraft(m, () => {
71
+ tick.value++;
72
+ });
73
+ });
74
+ return {
75
+ draft,
76
+ isDirty: computed(() => {
77
+ void tick.value;
78
+ return isDraftDirty(draft.value);
79
+ }),
80
+ commit: () => {
81
+ commitDraft(draft.value);
82
+ tick.value++;
83
+ },
84
+ rollback: () => {
85
+ rollbackDraft(draft.value);
86
+ tick.value++;
87
+ }
88
+ };
89
+ };
90
+ export {
91
+ bootstrapModelsV2,
92
+ installVueReactivity,
93
+ resetModelsV2Session,
94
+ useDraft,
95
+ useLevel,
96
+ useTrash
97
+ };
98
+ //# sourceMappingURL=vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/models/adapters/vue.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,UAAU,aAAa,kBAAkB;AAOlD,IAAI,iBAAsC;AASnC,IAAM,uBAAuB,MAAoB;AACpD,MAAI,eAAgB,QAAO;AAC3B,QAAM,OAAO,oBAAI,QAAmC;AACpD,QAAM,SAA2B;AAAA,IAC7B,MAAM,GAAW;AACb,UAAI,IAAI,KAAK,IAAI,CAAC;AAClB,UAAI,CAAC,GAAG;AAAE,YAAI,WAAW,CAAC;AAAG,aAAK,IAAI,GAAG,CAAC;AAAA,MAAG;AAC7C,WAAK,EAAE;AAAA,IACX;AAAA,IACA,QAAQ,GAAW;AACf,YAAM,IAAI,KAAK,IAAI,CAAC;AACpB,UAAI,EAAG,GAAE;AAAA,IACb;AAAA,EACJ;AACA,mBAAiB,oBAAoB,MAAM;AAC3C,SAAO;AACX;AAOO,IAAM,oBAAoB,CAAC,SAC9B,iBAAiB,MAAM,oBAAoB;AASxC,IAAM,WAAW,CAAC,aAAqB;AAC1C,QAAM,OAAO,WAAW,CAAC;AACzB,QAAM,QAAQ,eAAe,OAAK;AAAE,QAAI,MAAM,SAAU,MAAK;AAAA,EAAS,CAAC;AACvE,cAAY,KAAK;AACjB,SAAO,SAAS,OAAO,KAAK,OAAO,SAAS,QAAQ,EAAE;AAC1D;AAWO,IAAM,WAAW,CAAC,YAAoB,YAAsB,CAAC,MAAM;AACtE,QAAM,OAAO,WAAW,CAAC;AACzB,QAAM,QAAQ,WAAW,UAAU,YAAY,MAAM;AAAE,SAAK;AAAA,EAAS,CAAC;AACtE,cAAY,KAAK;AACjB,SAAO;AAAA,IACH,OAAO,SAAS,OAAO,KAAK,OAAO,WAAW,MAAM,YAAY,SAAS,EAAE;AAAA,IAC3E,QAAQ,MAAM,WAAW,KAAK,YAAY,SAAS;AAAA,EACvD;AACJ;AAUO,IAAM,WAAW,CAAgB,UAA8B;AAClE,QAAM,OAAO,WAAW,CAAC;AAEzB,QAAM,QAAQ,SAAS,MAAM;AACzB,UAAM,IAAI,OAAO,UAAU,aAAa,MAAM,IAAI,MAAM;AACxD,WAAO,YAAY,GAAG,MAAM;AAAE,WAAK;AAAA,IAAS,CAAC;AAAA,EACjD,CAAC;AAED,SAAO;AAAA,IACH;AAAA,IACA,SAAS,SAAS,MAAM;AACpB,WAAK,KAAK;AACV,aAAO,aAAa,MAAM,KAAK;AAAA,IACnC,CAAC;AAAA,IACD,QAAQ,MAAM;AACV,kBAAY,MAAM,KAAK;AACvB,WAAK;AAAA,IACT;AAAA,IACA,UAAU,MAAM;AACZ,oBAAc,MAAM,KAAK;AACzB,WAAK;AAAA,IACT;AAAA,EACJ;AACJ;","names":[]}