@latysh-development/monolith 0.1.0-alpha.0 → 0.1.0-alpha.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.
Files changed (100) hide show
  1. package/README.md +63 -16
  2. package/dist/brief/collect.d.ts.map +1 -1
  3. package/dist/brief/collect.js +41 -1
  4. package/dist/brief/constants.d.ts +2 -0
  5. package/dist/brief/constants.d.ts.map +1 -1
  6. package/dist/brief/constants.js +2 -0
  7. package/dist/brief/render.d.ts +7 -0
  8. package/dist/brief/render.d.ts.map +1 -1
  9. package/dist/brief/render.js +52 -1
  10. package/dist/brief/types.d.ts +17 -1
  11. package/dist/brief/types.d.ts.map +1 -1
  12. package/dist/cli/index.js +33 -0
  13. package/dist/discovery/compose.d.ts +28 -0
  14. package/dist/discovery/compose.d.ts.map +1 -0
  15. package/dist/discovery/compose.js +159 -0
  16. package/dist/discovery/contracts.d.ts +211 -0
  17. package/dist/discovery/contracts.d.ts.map +1 -0
  18. package/dist/discovery/contracts.js +555 -0
  19. package/dist/discovery/docs.d.ts +278 -0
  20. package/dist/discovery/docs.d.ts.map +1 -0
  21. package/dist/discovery/docs.js +1182 -0
  22. package/dist/discovery/facts.d.ts +49 -0
  23. package/dist/discovery/facts.d.ts.map +1 -0
  24. package/dist/discovery/facts.js +541 -0
  25. package/dist/discovery/index.d.ts +8 -0
  26. package/dist/discovery/index.d.ts.map +1 -0
  27. package/dist/discovery/index.js +9 -0
  28. package/dist/discovery/orchestrate.d.ts +35 -0
  29. package/dist/discovery/orchestrate.d.ts.map +1 -0
  30. package/dist/discovery/orchestrate.js +32 -0
  31. package/dist/discovery/render.d.ts +36 -0
  32. package/dist/discovery/render.d.ts.map +1 -0
  33. package/dist/discovery/render.js +278 -0
  34. package/dist/discovery/traverse.d.ts +197 -0
  35. package/dist/discovery/traverse.d.ts.map +1 -0
  36. package/dist/discovery/traverse.js +510 -0
  37. package/dist/durable/errors.d.ts +6 -2
  38. package/dist/durable/errors.d.ts.map +1 -1
  39. package/dist/durable/errors.js +9 -3
  40. package/dist/durable/fs-store.d.ts +21 -0
  41. package/dist/durable/fs-store.d.ts.map +1 -1
  42. package/dist/durable/fs-store.js +103 -3
  43. package/dist/durable/prune-check.d.ts +17 -0
  44. package/dist/durable/prune-check.d.ts.map +1 -1
  45. package/dist/durable/prune-check.js +27 -0
  46. package/dist/durable/runtime.d.ts +5 -3
  47. package/dist/durable/runtime.d.ts.map +1 -1
  48. package/dist/durable/runtime.js +23 -6
  49. package/dist/durable/seams.d.ts +4 -0
  50. package/dist/durable/seams.d.ts.map +1 -1
  51. package/dist/durable/testing.js +2 -2
  52. package/dist/ideas/cli.d.ts +33 -0
  53. package/dist/ideas/cli.d.ts.map +1 -0
  54. package/dist/ideas/cli.js +158 -0
  55. package/dist/ideas/format.d.ts +38 -0
  56. package/dist/ideas/format.d.ts.map +1 -0
  57. package/dist/ideas/format.js +194 -0
  58. package/dist/ideas/index.d.ts +6 -0
  59. package/dist/ideas/index.d.ts.map +1 -0
  60. package/dist/ideas/index.js +3 -0
  61. package/dist/ideas/store.d.ts +55 -0
  62. package/dist/ideas/store.d.ts.map +1 -0
  63. package/dist/ideas/store.js +262 -0
  64. package/dist/ideas/types.d.ts +54 -0
  65. package/dist/ideas/types.d.ts.map +1 -0
  66. package/dist/ideas/types.js +26 -0
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +2 -0
  70. package/dist/init/scaffold.d.ts +4 -0
  71. package/dist/init/scaffold.d.ts.map +1 -1
  72. package/dist/init/scaffold.js +6 -2
  73. package/dist/managed/index.d.ts +73 -0
  74. package/dist/managed/index.d.ts.map +1 -0
  75. package/dist/managed/index.js +222 -0
  76. package/dist/root/index.d.ts +7 -0
  77. package/dist/root/index.d.ts.map +1 -1
  78. package/dist/root/index.js +13 -1
  79. package/dist/update/cli.d.ts +8 -0
  80. package/dist/update/cli.d.ts.map +1 -0
  81. package/dist/update/cli.js +115 -0
  82. package/dist/update/index.d.ts +78 -0
  83. package/dist/update/index.d.ts.map +1 -0
  84. package/dist/update/index.js +285 -0
  85. package/dist/version.d.ts +1 -1
  86. package/dist/version.js +1 -1
  87. package/package.json +1 -1
  88. package/templates/default-instance/instruction/.cursorrules +6 -0
  89. package/templates/default-instance/instruction/.windsurfrules +6 -0
  90. package/templates/default-instance/instruction/CLAUDE.md +4 -0
  91. package/templates/default-instance/managed/agent.md +20 -0
  92. package/templates/default-instance/managed/bootstrap.md +7 -0
  93. package/templates/default-instance/managed/index-idea.md +5 -0
  94. package/templates/default-instance/managed/routing-idea.md +14 -0
  95. package/templates/default-instance/monolith/AGENT.md +1 -0
  96. package/templates/default-instance/monolith/context/maps/routing-map.md +4 -0
  97. package/templates/default-instance/monolith/context/maps/semantic-map.md +2 -0
  98. package/templates/default-instance/monolith/skills/INDEX.md +4 -0
  99. package/templates/default-instance/monolith/skills/idea-capture/SKILL.md +157 -0
  100. package/templates/default-instance/projectroot/AGENTS.md +4 -0
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Discovery contract, schema version 1 (ADR-021 §2-§4). Internal: not exported from `src/index.ts`.
3
+ *
4
+ * A fact says what the project's bytes show (`DETECTED`) or what a named rule derived from
5
+ * DETECTED facts (`INTERPRETED`). Three properties are kept apart on purpose and never
6
+ * folded into one another:
7
+ * - `completeness`: did the scan cover what it declared (`COMPLETE` | `PARTIAL`);
8
+ * - `reproducible`: would a second scan of the same unchanged tree return this result;
9
+ * - `level` of a fact: how it was obtained. There is no numeric confidence.
10
+ */
11
+ export declare const DISCOVERY_SCHEMA_VERSION = 1;
12
+ export type DiscoveryLevel = 'DETECTED' | 'INTERPRETED';
13
+ /** The level is a function of the kind (ADR-021 §2): never chosen per fact, checked by the validator. */
14
+ export declare const FACT_LEVEL_BY_KIND: {
15
+ /** A directory exists in the inventory. */
16
+ readonly DIRECTORY: "DETECTED";
17
+ /** A file with a conventional name exists (the basis of an entrypoint candidate). */
18
+ readonly FILE_PRESENT: "DETECTED";
19
+ /**
20
+ * `value` files with extension `object` exist; `subject` is the language that extension maps to.
21
+ * An aggregate: `value` counts every file the traversal listed, `sources` is only a sample of them
22
+ * (see `sourceCoverage`).
23
+ */
24
+ readonly LANGUAGE_BY_EXTENSION: "DETECTED";
25
+ /** A file with the name of a known manifest exists. Says nothing about its content or about runtime use. */
26
+ readonly MANIFEST_PRESENT: "DETECTED";
27
+ /** A manifest declares dependency `object` in section `value`. Not resolved, not installed, not verified. */
28
+ readonly DEPENDENCY_DECLARED: "DETECTED";
29
+ /** A manifest declares a script named `object`. The command is never stored and never run. */
30
+ readonly SCRIPT_DECLARED: "DETECTED";
31
+ /** A file name convention suggests `subject` may start the program. A candidate, never a verified entrypoint. */
32
+ readonly ENTRYPOINT_CANDIDATE: "INTERPRETED";
33
+ };
34
+ export type DiscoveryFactKind = keyof typeof FACT_LEVEL_BY_KIND;
35
+ export type DiscoveryObservation = 'directory-entry' | 'file-entry' | 'extension' | 'file-name' | 'manifest-field';
36
+ export interface DiscoverySource {
37
+ /** Project-relative, `/`-separated; never absolute, never contains `..`. */
38
+ path: string;
39
+ /** What kind of observation backs the fact. */
40
+ observation: DiscoveryObservation;
41
+ /** For `manifest-field`: an RFC 6901 JSON Pointer into the manifest (e.g. `/dependencies/@scope~1pkg`). */
42
+ field?: string;
43
+ }
44
+ export interface DiscoveryFact {
45
+ /** 16 hex of sha256 over (schemaVersion, kind, subject, object, value); see `computeFactId`. */
46
+ id: string;
47
+ kind: DiscoveryFactKind;
48
+ level: DiscoveryLevel;
49
+ subject: string;
50
+ object?: string;
51
+ value?: string;
52
+ /** Name of the detection (DETECTED) or derivation (INTERPRETED) rule. */
53
+ rule: string;
54
+ /** INTERPRETED only: ids of the DETECTED facts the interpretation rests on. */
55
+ basis?: string[];
56
+ /**
57
+ * At least one; sorted. For a `LANGUAGE_BY_EXTENSION` aggregate these are a deterministic SAMPLE
58
+ * (the first `min(value, limits.maxSourcesPerFact)` paths in UTF-16 order), not the whole evidence:
59
+ * `value` is computed over all files and is checked against the sample size by the validator.
60
+ * Every other kind rests on exactly the sources it lists. See `sourceCoverage`.
61
+ */
62
+ sources: DiscoverySource[];
63
+ }
64
+ /**
65
+ * Whether a fact's `sources` are all of its evidence (`FULL`) or a sample of it (`SAMPLE`).
66
+ * Derived, not stored: only a `LANGUAGE_BY_EXTENSION` aggregate with more files than listed sources
67
+ * is a `SAMPLE`. Coverage says nothing about the scan: a count over a `PARTIAL` traversal is a lower
68
+ * bound, and that is stated by `DiscoveryResult.completeness` and `traversal.completeness`.
69
+ */
70
+ export type SourceCoverage = 'FULL' | 'SAMPLE';
71
+ export declare function sourceCoverage(fact: Pick<DiscoveryFact, 'kind' | 'value' | 'sources'>): SourceCoverage;
72
+ /**
73
+ * Closed list. The value says whether the code makes the result `PARTIAL` (something inside the
74
+ * declared scope was not extracted) or only reports a scope policy or an unanalysed area.
75
+ */
76
+ export declare const EXTRACTION_DIAGNOSTIC_AFFECTS_COMPLETENESS: {
77
+ readonly INPUT_PATH_REJECTED: true;
78
+ readonly LIMIT_DIRECTORY_FACTS: true;
79
+ readonly LIMIT_LANGUAGE_FACTS: true;
80
+ readonly LIMIT_MANIFEST_FACTS: true;
81
+ readonly LIMIT_MANIFEST_READS: true;
82
+ readonly LIMIT_DEPENDENCIES: true;
83
+ readonly LIMIT_SCRIPTS: true;
84
+ readonly LIMIT_ENTRYPOINT_FACTS: true;
85
+ readonly LIMIT_FACTS: true;
86
+ readonly LIMIT_DIAGNOSTICS: true;
87
+ readonly MANIFEST_READ_FAILED: true;
88
+ readonly MANIFEST_TOO_LARGE: true;
89
+ readonly MANIFEST_PARSE_ERROR: true;
90
+ readonly MANIFEST_FIELD_INVALID: true;
91
+ readonly MANIFEST_VALUE_REJECTED: true;
92
+ readonly MANIFEST_EMPTY: false;
93
+ readonly MANIFEST_NOT_REGULAR_FILE: false;
94
+ readonly MANIFEST_CONTENT_NOT_ANALYZED: false;
95
+ readonly NESTED_MONOLITH_STATE_EXCLUDED: false;
96
+ readonly NESTED_MONOLITH_UNCONFIRMED: false;
97
+ };
98
+ export type ExtractionDiagnosticCode = keyof typeof EXTRACTION_DIAGNOSTIC_AFFECTS_COMPLETENESS;
99
+ /** Whether a second scan of the same unchanged tree must return the same diagnostic. */
100
+ export declare const EXTRACTION_DIAGNOSTIC_IS_STABLE: Record<ExtractionDiagnosticCode, boolean>;
101
+ export interface DiscoveryDiagnostic {
102
+ /** An extraction code, or `TRAVERSAL_<code>` for a diagnostic carried over from the traversal. */
103
+ code: string;
104
+ /** Project-relative path, when the diagnostic concerns one. */
105
+ path?: string;
106
+ /** Total occurrences, present on a summary line. */
107
+ count?: number;
108
+ /** Fixed text; never a raw error message, a file content excerpt or an absolute path. */
109
+ message: string;
110
+ }
111
+ export interface DiscoveryLimits {
112
+ /** Directory facts (paths of at most `maxDirectoryDepth` segments), shallowest first. */
113
+ maxDirectoryFacts: number;
114
+ maxDirectoryDepth: number;
115
+ /** Distinct (language, extension) facts. */
116
+ maxLanguageFacts: number;
117
+ /** Manifest presence facts, shallowest first. */
118
+ maxManifestFacts: number;
119
+ /** Manifests whose content is read (only `package.json` is parsed in this version). */
120
+ maxManifestReads: number;
121
+ /** Size cap of one manifest, bytes. */
122
+ maxManifestBytes: number;
123
+ /** Dependency facts per manifest. */
124
+ maxDependenciesPerManifest: number;
125
+ /** Script facts per manifest. */
126
+ maxScriptsPerManifest: number;
127
+ maxEntrypointFacts: number;
128
+ /** Cap on the whole `facts` array; a final guard, normally never reached. */
129
+ maxFacts: number;
130
+ maxDiagnostics: number;
131
+ /** Longest dependency or script name that is kept. */
132
+ maxNameLength: number;
133
+ /** Sources listed for a language aggregate: a sample of at most this many files. */
134
+ maxSourcesPerFact: number;
135
+ }
136
+ export interface DiscoveryStats {
137
+ /** Traversal entries received. */
138
+ inputEntries: number;
139
+ /**
140
+ * Entries that did not reach extraction: a rejected path or kind, a path repeated in the input
141
+ * (collapsed to one entry) or an entry inside confirmed nested MONOLITH state.
142
+ */
143
+ excludedEntries: number;
144
+ /** Files whose extension maps to no known language. Reported, not guessed. */
145
+ filesWithoutKnownLanguage: number;
146
+ manifestsFound: number;
147
+ /** `package.json` files a read was attempted on (a failed read counts; see the diagnostics). */
148
+ manifestsRead: number;
149
+ facts: number;
150
+ }
151
+ export interface DiscoveryResult {
152
+ schemaVersion: typeof DISCOVERY_SCHEMA_VERSION;
153
+ limits: DiscoveryLimits;
154
+ /** `PARTIAL` when the traversal was `PARTIAL` or any completeness-affecting diagnostic exists. */
155
+ completeness: 'COMPLETE' | 'PARTIAL';
156
+ /** A second scan of the unchanged tree would return this result (traversal and extraction). */
157
+ reproducible: boolean;
158
+ /** What the traversal reported, kept visible next to the combined verdict. */
159
+ traversal: {
160
+ completeness: 'COMPLETE' | 'PARTIAL';
161
+ reproducible: boolean;
162
+ };
163
+ stats: DiscoveryStats;
164
+ /** Sorted by (kind, subject, object, value) in UTF-16 code-unit order. */
165
+ facts: DiscoveryFact[];
166
+ /**
167
+ * Sorted by `compareDiagnostics`: completeness-affecting extraction codes, then traversal codes,
168
+ * then the other extraction codes; each by code, path, message, count. The one exception is a
169
+ * `LIMIT_DIAGNOSTICS` summary, which is always first when the list was cut.
170
+ */
171
+ diagnostics: DiscoveryDiagnostic[];
172
+ }
173
+ export type DiscoveryErrorCode = 'INVALID_LIMITS' | 'INVALID_INPUT' | 'ID_COLLISION' | 'RESULT_INVALID';
174
+ /** Extraction cannot proceed safely or produced a result the validator rejects: no result exists (FAILED). */
175
+ export declare class DiscoveryError extends Error {
176
+ readonly code: DiscoveryErrorCode;
177
+ constructor(code: DiscoveryErrorCode, message: string);
178
+ }
179
+ /** UTF-16 code-unit order; never `localeCompare` (ADR-021 §4). */
180
+ export declare function compareUtf16(a: string, b: string): number;
181
+ /** 16 hex of sha256 over the canonical tuple. Provenance, level, rule and positions are excluded. */
182
+ export declare function computeFactId(kind: string, subject: string, object?: string, value?: string): string;
183
+ /** A project-relative POSIX path with no empty, `.` or `..` segment, no NUL/control/backslash and no drive prefix. */
184
+ export declare function isSafeRelativePath(p: unknown): p is string;
185
+ export declare const DEPENDENCY_SECTIONS: readonly ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"];
186
+ /** RFC 6901 token escaping. */
187
+ export declare const pointerToken: (s: string) => string;
188
+ export declare function isKeepableName(name: string, max: number): boolean;
189
+ /**
190
+ * Diagnostic order: completeness-affecting extraction codes (0), traversal codes (1), the other
191
+ * extraction codes (2); then code, path, message, count. `count` closes the tie so that no two
192
+ * different diagnostics compare equal.
193
+ */
194
+ export declare function compareDiagnostics(a: DiscoveryDiagnostic, b: DiscoveryDiagnostic): number;
195
+ export declare function compareFacts(a: DiscoveryFact, b: DiscoveryFact): number;
196
+ export declare function compareSources(a: DiscoverySource, b: DiscoverySource): number;
197
+ /**
198
+ * Check of a `DiscoveryResult` against the schema-1 contract. Returns the violations (empty = valid);
199
+ * `extractProjectFacts` throws `DiscoveryError('RESULT_INVALID')` rather than return a result that
200
+ * fails it (FAILED, ADR-021 §5).
201
+ *
202
+ * Input is `unknown` on purpose: a malformed value yields violations, never a `TypeError`. A violation
203
+ * names a location (`facts[3]`) and a rule, and never repeats a value from the input, so an untrusted
204
+ * result cannot reach a log through it. At most 100 violations are returned.
205
+ *
206
+ * Scope: plain JSON-like data (a producer's output or `JSON.parse` output). An object with accessors
207
+ * that throw, or a `Proxy`, is not defended against (ADR-021 does not require it). The validator is
208
+ * not a general schema library: it checks this contract and nothing else.
209
+ */
210
+ export declare function validateDiscoveryResult(result: unknown): string[];
211
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/discovery/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,CAAC;AAExD,yGAAyG;AACzG,eAAO,MAAM,kBAAkB;IAC7B,2CAA2C;;IAE3C,qFAAqF;;IAErF;;;;OAIG;;IAEH,4GAA4G;;IAE5G,6GAA6G;;IAE7G,8FAA8F;;IAE9F,iHAAiH;;CAEhE,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEhE,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAEnH,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,WAAW,EAAE,oBAAoB,CAAC;IAClC,2GAA2G;IAC3G,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,gGAAgG;IAChG,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/C,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,cAAc,CAGtG;AAED;;;GAGG;AACH,eAAO,MAAM,0CAA0C;;;;;;;;;;;;;;;;;;;;;CAqB7C,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,0CAA0C,CAAC;AAE/F,wFAAwF;AACxF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,wBAAwB,EAAE,OAAO,CAsBrF,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,yFAAyF;IACzF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,uFAAuF;IACvF,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,0BAA0B,EAAE,MAAM,CAAC;IACnC,iCAAiC;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,yBAAyB,EAAE,MAAM,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,wBAAwB,CAAC;IAC/C,MAAM,EAAE,eAAe,CAAC;IACxB,kGAAkG;IAClG,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;IACrC,+FAA+F;IAC/F,YAAY,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,SAAS,EAAE;QAAE,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,KAAK,EAAE,cAAc,CAAC;IACtB,0EAA0E;IAC1E,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB;;;;OAIG;IACH,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAExG,8GAA8G;AAC9G,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;gBACtB,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAKtD;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpG;AAED,sHAAsH;AACtH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAM1D;AAED,eAAO,MAAM,mBAAmB,0FAA2F,CAAC;AAE5H,+BAA+B;AAC/B,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,MAAoD,CAAC;AAM9F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAIzF;AA0DD,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAQvE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAE7E;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAmRjE"}