@reqlan/language 1.4.0 → 1.4.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 (181) hide show
  1. package/README.md +115 -24
  2. package/README.template.md +32 -0
  3. package/package.json +2 -2
  4. package/out/src/file-path-rewrite.d.ts +0 -25
  5. package/out/src/file-path-rewrite.js +0 -56
  6. package/out/src/file-path-rewrite.js.map +0 -1
  7. package/out/src/generated/ast.d.ts +0 -1173
  8. package/out/src/generated/ast.js +0 -994
  9. package/out/src/generated/ast.js.map +0 -1
  10. package/out/src/generated/grammar.d.ts +0 -7
  11. package/out/src/generated/grammar.js +0 -3045
  12. package/out/src/generated/grammar.js.map +0 -1
  13. package/out/src/generated/module.d.ts +0 -20
  14. package/out/src/generated/module.js +0 -32
  15. package/out/src/generated/module.js.map +0 -1
  16. package/out/src/index.d.ts +0 -29
  17. package/out/src/index.js +0 -30
  18. package/out/src/index.js.map +0 -1
  19. package/out/src/reqlan-attribute-catalog.d.ts +0 -19
  20. package/out/src/reqlan-attribute-catalog.js +0 -87
  21. package/out/src/reqlan-attribute-catalog.js.map +0 -1
  22. package/out/src/reqlan-code-action-provider.d.ts +0 -34
  23. package/out/src/reqlan-code-action-provider.js +0 -206
  24. package/out/src/reqlan-code-action-provider.js.map +0 -1
  25. package/out/src/reqlan-comment-resolver.d.ts +0 -35
  26. package/out/src/reqlan-comment-resolver.js +0 -308
  27. package/out/src/reqlan-comment-resolver.js.map +0 -1
  28. package/out/src/reqlan-completion-context.d.ts +0 -46
  29. package/out/src/reqlan-completion-context.js +0 -244
  30. package/out/src/reqlan-completion-context.js.map +0 -1
  31. package/out/src/reqlan-completion-provider.d.ts +0 -41
  32. package/out/src/reqlan-completion-provider.js +0 -320
  33. package/out/src/reqlan-completion-provider.js.map +0 -1
  34. package/out/src/reqlan-definition-provider.d.ts +0 -31
  35. package/out/src/reqlan-definition-provider.js +0 -240
  36. package/out/src/reqlan-definition-provider.js.map +0 -1
  37. package/out/src/reqlan-document-highlight-provider.d.ts +0 -10
  38. package/out/src/reqlan-document-highlight-provider.js +0 -11
  39. package/out/src/reqlan-document-highlight-provider.js.map +0 -1
  40. package/out/src/reqlan-document-link-provider.d.ts +0 -14
  41. package/out/src/reqlan-document-link-provider.js +0 -24
  42. package/out/src/reqlan-document-link-provider.js.map +0 -1
  43. package/out/src/reqlan-embedded-file-references.d.ts +0 -11
  44. package/out/src/reqlan-embedded-file-references.js +0 -50
  45. package/out/src/reqlan-embedded-file-references.js.map +0 -1
  46. package/out/src/reqlan-file-link-resolver.d.ts +0 -44
  47. package/out/src/reqlan-file-link-resolver.js +0 -347
  48. package/out/src/reqlan-file-link-resolver.js.map +0 -1
  49. package/out/src/reqlan-file-references.d.ts +0 -15
  50. package/out/src/reqlan-file-references.js +0 -72
  51. package/out/src/reqlan-file-references.js.map +0 -1
  52. package/out/src/reqlan-grammar-config.d.ts +0 -5
  53. package/out/src/reqlan-grammar-config.js +0 -9
  54. package/out/src/reqlan-grammar-config.js.map +0 -1
  55. package/out/src/reqlan-idea-summary.d.ts +0 -6
  56. package/out/src/reqlan-idea-summary.js +0 -78
  57. package/out/src/reqlan-idea-summary.js.map +0 -1
  58. package/out/src/reqlan-ignore-error.d.ts +0 -10
  59. package/out/src/reqlan-ignore-error.js +0 -42
  60. package/out/src/reqlan-ignore-error.js.map +0 -1
  61. package/out/src/reqlan-import-bindings.d.ts +0 -12
  62. package/out/src/reqlan-import-bindings.js +0 -65
  63. package/out/src/reqlan-import-bindings.js.map +0 -1
  64. package/out/src/reqlan-import-edits.d.ts +0 -17
  65. package/out/src/reqlan-import-edits.js +0 -96
  66. package/out/src/reqlan-import-edits.js.map +0 -1
  67. package/out/src/reqlan-imports.d.ts +0 -22
  68. package/out/src/reqlan-imports.js +0 -61
  69. package/out/src/reqlan-imports.js.map +0 -1
  70. package/out/src/reqlan-inbound-reference-inlay-label.d.ts +0 -23
  71. package/out/src/reqlan-inbound-reference-inlay-label.js +0 -128
  72. package/out/src/reqlan-inbound-reference-inlay-label.js.map +0 -1
  73. package/out/src/reqlan-inlay-hint-provider.d.ts +0 -15
  74. package/out/src/reqlan-inlay-hint-provider.js +0 -54
  75. package/out/src/reqlan-inlay-hint-provider.js.map +0 -1
  76. package/out/src/reqlan-inlay-hint-settings.d.ts +0 -10
  77. package/out/src/reqlan-inlay-hint-settings.js +0 -10
  78. package/out/src/reqlan-inlay-hint-settings.js.map +0 -1
  79. package/out/src/reqlan-linker.d.ts +0 -26
  80. package/out/src/reqlan-linker.js +0 -86
  81. package/out/src/reqlan-linker.js.map +0 -1
  82. package/out/src/reqlan-markdown-links.d.ts +0 -28
  83. package/out/src/reqlan-markdown-links.js +0 -113
  84. package/out/src/reqlan-markdown-links.js.map +0 -1
  85. package/out/src/reqlan-module.d.ts +0 -41
  86. package/out/src/reqlan-module.js +0 -76
  87. package/out/src/reqlan-module.js.map +0 -1
  88. package/out/src/reqlan-name-catalog.d.ts +0 -23
  89. package/out/src/reqlan-name-catalog.js +0 -63
  90. package/out/src/reqlan-name-catalog.js.map +0 -1
  91. package/out/src/reqlan-name-provider.d.ts +0 -10
  92. package/out/src/reqlan-name-provider.js +0 -38
  93. package/out/src/reqlan-name-provider.js.map +0 -1
  94. package/out/src/reqlan-namespace-import-links.d.ts +0 -10
  95. package/out/src/reqlan-namespace-import-links.js +0 -81
  96. package/out/src/reqlan-namespace-import-links.js.map +0 -1
  97. package/out/src/reqlan-path-completion.d.ts +0 -50
  98. package/out/src/reqlan-path-completion.js +0 -304
  99. package/out/src/reqlan-path-completion.js.map +0 -1
  100. package/out/src/reqlan-path-references.d.ts +0 -5
  101. package/out/src/reqlan-path-references.js +0 -124
  102. package/out/src/reqlan-path-references.js.map +0 -1
  103. package/out/src/reqlan-path-resolve.d.ts +0 -59
  104. package/out/src/reqlan-path-resolve.js +0 -173
  105. package/out/src/reqlan-path-resolve.js.map +0 -1
  106. package/out/src/reqlan-quoted-strings.d.ts +0 -9
  107. package/out/src/reqlan-quoted-strings.js +0 -26
  108. package/out/src/reqlan-quoted-strings.js.map +0 -1
  109. package/out/src/reqlan-reference-at-position.d.ts +0 -20
  110. package/out/src/reqlan-reference-at-position.js +0 -89
  111. package/out/src/reqlan-reference-at-position.js.map +0 -1
  112. package/out/src/reqlan-references.d.ts +0 -16
  113. package/out/src/reqlan-references.js +0 -51
  114. package/out/src/reqlan-references.js.map +0 -1
  115. package/out/src/reqlan-scope.d.ts +0 -25
  116. package/out/src/reqlan-scope.js +0 -266
  117. package/out/src/reqlan-scope.js.map +0 -1
  118. package/out/src/reqlan-semantic-token-provider.d.ts +0 -8
  119. package/out/src/reqlan-semantic-token-provider.js +0 -97
  120. package/out/src/reqlan-semantic-token-provider.js.map +0 -1
  121. package/out/src/reqlan-token-builder.d.ts +0 -12
  122. package/out/src/reqlan-token-builder.js +0 -459
  123. package/out/src/reqlan-token-builder.js.map +0 -1
  124. package/out/src/reqlan-validator.d.ts +0 -25
  125. package/out/src/reqlan-validator.js +0 -119
  126. package/out/src/reqlan-validator.js.map +0 -1
  127. package/out/src/reqlan-workspace-attribute-catalog.d.ts +0 -6
  128. package/out/src/reqlan-workspace-attribute-catalog.js +0 -54
  129. package/out/src/reqlan-workspace-attribute-catalog.js.map +0 -1
  130. package/out/test/code-actions.test.d.ts +0 -1
  131. package/out/test/code-actions.test.js +0 -126
  132. package/out/test/code-actions.test.js.map +0 -1
  133. package/out/test/comment-in-string.test.d.ts +0 -1
  134. package/out/test/comment-in-string.test.js +0 -100
  135. package/out/test/comment-in-string.test.js.map +0 -1
  136. package/out/test/completion.test.d.ts +0 -1
  137. package/out/test/completion.test.js +0 -467
  138. package/out/test/completion.test.js.map +0 -1
  139. package/out/test/file-path-rewrite.test.d.ts +0 -1
  140. package/out/test/file-path-rewrite.test.js +0 -64
  141. package/out/test/file-path-rewrite.test.js.map +0 -1
  142. package/out/test/ignore-error.test.d.ts +0 -1
  143. package/out/test/ignore-error.test.js +0 -87
  144. package/out/test/ignore-error.test.js.map +0 -1
  145. package/out/test/implicit-import-extension.test.d.ts +0 -1
  146. package/out/test/implicit-import-extension.test.js +0 -203
  147. package/out/test/implicit-import-extension.test.js.map +0 -1
  148. package/out/test/import-edits.test.d.ts +0 -1
  149. package/out/test/import-edits.test.js +0 -20
  150. package/out/test/import-edits.test.js.map +0 -1
  151. package/out/test/inlay-hints.test.d.ts +0 -1
  152. package/out/test/inlay-hints.test.js +0 -238
  153. package/out/test/inlay-hints.test.js.map +0 -1
  154. package/out/test/linking.test.d.ts +0 -1
  155. package/out/test/linking.test.js +0 -754
  156. package/out/test/linking.test.js.map +0 -1
  157. package/out/test/naked-strings.test.d.ts +0 -1
  158. package/out/test/naked-strings.test.js +0 -50
  159. package/out/test/naked-strings.test.js.map +0 -1
  160. package/out/test/parsing.test.d.ts +0 -1
  161. package/out/test/parsing.test.js +0 -773
  162. package/out/test/parsing.test.js.map +0 -1
  163. package/out/test/path-resolve.test.d.ts +0 -1
  164. package/out/test/path-resolve.test.js +0 -88
  165. package/out/test/path-resolve.test.js.map +0 -1
  166. package/out/test/references.test.d.ts +0 -1
  167. package/out/test/references.test.js +0 -168
  168. package/out/test/references.test.js.map +0 -1
  169. package/out/test/rqconfig.test.d.ts +0 -1
  170. package/out/test/rqconfig.test.js +0 -275
  171. package/out/test/rqconfig.test.js.map +0 -1
  172. package/out/test/test-requirement-refs.d.ts +0 -8
  173. package/out/test/test-requirement-refs.js +0 -35
  174. package/out/test/test-requirement-refs.js.map +0 -1
  175. package/out/test/testing.test.d.ts +0 -1
  176. package/out/test/testing.test.js +0 -23
  177. package/out/test/testing.test.js.map +0 -1
  178. package/out/test/validating.test.d.ts +0 -1
  179. package/out/test/validating.test.js +0 -117
  180. package/out/test/validating.test.js.map +0 -1
  181. package/out/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -1,24 +1,115 @@
1
- # The mandatory language package
2
-
3
- As a good entry point to our documentation, please use to this [guide](https://langium.org/docs/learn/workflow/write_grammar/).
4
-
5
- ## What's in the folder?
6
-
7
- - [package.json](./package.json) - The manifest file of your language package.
8
- - [tsconfig.json](./tsconfig.json) - The packages specific TypeScript compiler configuration extending the [base config](../../tsconfig.json)
9
- - [src/reqlan.langium](src/reqlan.langium) - The grammar definition of your language
10
- - [src/reqlan-module.ts](src/reqlan-module.ts) - The dependency injection module of your language implementation. Use this to register overridden and added services.
11
- - [src/reqlan-validator.ts](src/reqlan-validator.ts) - An example validator. You should change it to reflect the semantics of your language.
12
- - [src/generated/ast.ts](src/generated/ast.ts) - AST generated by `langium generate`.
13
- - [src/generated/grammar.ts](src/generated/grammar.ts) - Grammar generated by `langium generate`.
14
- - [src/generated/module.ts](src/generated/module.ts) - Module generated by `langium generate`.
15
- - [src/syntaxes/reqlan.monarch.ts](src/syntaxes/reqlan.monarch.ts) - Monarch based syntax highlighting instructions.
16
- - [syntaxes/reqlan.tmLanguage.json](syntaxes/reqlan.tmLanguage.json) - Textmate based syntax highlighting instructions.
17
- - [src/index.ts](src/index.ts) Defines what is exported to other packages.
18
-
19
- If you selected the test option as well, then the following files will be present in addition:
20
-
21
- - [tsconfig.test.json](./tsconfig.test.json) - The package specific TypeScript compiler configuration for the unit tests extending the [tsconfig.src.config](./tsconfig.src.json)
22
- - [test/linking.test.ts](test/linking.test.ts) - Unit tests checking linking.
23
- - [test/parsing.test.ts](test/parsing.test.ts) - Unit tests regarding parsing.
24
- - [test/validating.test.ts](test/validating.test.ts) - Unit tests regarding validation.
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/littletuna4/reqlan/HEAD/packages/extension/media/logo.png" alt="reqlan logo" width="128" height="128">
3
+ </p>
4
+
5
+ # @reqlan/language
6
+
7
+ Langium language definition for reqlan (.rq) requirement files
8
+
9
+ ## Features
10
+
11
+ - Langium grammar and generated AST / parser for `.rq` requirement files
12
+ - Scoped linking, validators, and LSP service providers (`createReqlanServices`)
13
+ - Path resolution, imports, completions, semantic tokens, and reference helpers
14
+ - Shared language foundation for the VS Code extension, analytical index, and CLI
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ npm install @reqlan/language
20
+ ```
21
+
22
+ ## Links
23
+
24
+ - [Site](https://tony.is-a.dev/reqlan)
25
+ - [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=reqlan.reqlan-extension)
26
+ - [Open VSX](https://open-vsx.org/extension/reqlan/reqlan-extension)
27
+ - [GitHub repository](https://github.com/littletuna4/reqlan)
28
+ - [Contact](mailto:reqlan@tony.is-a.dev)
29
+
30
+ ## Changelog
31
+
32
+ ### 1.4.1
33
+
34
+ #### Patch Changes
35
+
36
+ - 1790ce1: Update the landers.
37
+
38
+ ### 1.4.0
39
+
40
+ #### Minor Changes
41
+
42
+ - 8ac3f82: Minor site showcase fixes, extension search functinoality, cli init.
43
+
44
+ ### 1.3.0
45
+
46
+ #### Minor Changes
47
+
48
+ - 4b9d33b: brevity improvements in activitybar. graph interactivity improvements. various syntactic fixes
49
+
50
+ ### 1.2.0
51
+
52
+ #### Minor Changes
53
+
54
+ - e5389ba: Improve import ergonomics and code completion.
55
+
56
+ ### 1.1.0
57
+
58
+ #### Minor Changes
59
+
60
+ - e56ac74: onboarding, index corruption recovery, syntax edge case support, inlay hint development
61
+
62
+ ### 1.0.1
63
+
64
+ #### Patch Changes
65
+
66
+ - b8a50cd: minor fixes
67
+
68
+ ### 1.0.0
69
+
70
+ #### Major Changes
71
+
72
+ - 931fc87: build fix
73
+
74
+ ### 0.1.2
75
+
76
+ #### Patch Changes
77
+
78
+ - fcb99a0: Various vibed changes
79
+
80
+ ### 0.1.1
81
+
82
+ #### Patch Changes
83
+
84
+ - d9f43be: remove :memory:
85
+
86
+ ### 0.1.0
87
+
88
+ #### Minor Changes
89
+
90
+ - 65840f4: update to extension activity bar; update to the syntax. addition of testing. bidirectional references.
91
+
92
+ ### 0.0.5
93
+
94
+ #### Patch Changes
95
+
96
+ - a6c2066: Branding change
97
+
98
+ ### 0.0.4
99
+
100
+ #### Patch Changes
101
+
102
+ - 020cd59: Fix blocking build issues and update some of the physics
103
+
104
+ ### 0.0.3
105
+
106
+ #### Patch Changes
107
+
108
+ - 66e5027: updates to animation behaviour; and some grammar/language tweaks
109
+
110
+ ### 0.0.2
111
+
112
+ #### Patch Changes
113
+
114
+ - f6bae00: rebase the semver to the manual version
115
+ - d50f988: test increment of \*
@@ -0,0 +1,32 @@
1
+ <p align="center">
2
+ <img src="{{LOGO_URL}}" alt="reqlan logo" width="128" height="128">
3
+ </p>
4
+
5
+ # {{PACKAGE_NAME}}
6
+
7
+ {{DESCRIPTION}}
8
+
9
+ ## Features
10
+
11
+ - Langium grammar and generated AST / parser for `.rq` requirement files
12
+ - Scoped linking, validators, and LSP service providers (`createReqlanServices`)
13
+ - Path resolution, imports, completions, semantic tokens, and reference helpers
14
+ - Shared language foundation for the VS Code extension, analytical index, and CLI
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ npm install @reqlan/language
20
+ ```
21
+
22
+ ## Links
23
+
24
+ - [{{SITE_LABEL}}]({{SITE_URL}})
25
+ - [{{VSC_LABEL}}]({{VSC_URL}})
26
+ - [{{OPENVSX_LABEL}}]({{OPENVSX_URL}})
27
+ - [GitHub repository]({{GITHUB_URL}})
28
+ - [Contact]({{EMAIL_URL}})
29
+
30
+ ## Changelog
31
+
32
+ {{CHANGELOG}}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reqlan/language",
3
- "description": "The language specific package",
4
- "version": "1.4.0",
3
+ "description": "Langium language definition for reqlan (.rq) requirement files",
4
+ "version": "1.4.1",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
7
7
  "repository": {
@@ -1,25 +0,0 @@
1
- /**
2
- * Recompute relative file paths when a referencing file moves to a new directory.
3
- * rq:["../../../reqlan rq/extension/configuration.rq".configuration_import_roots]
4
- * rq:["../../../reqlan rq/language/imports.rq".configuration_import_root_alias]
5
- * rq:["../../../reqlan rq/extension/features-mutation-hooks.rq".move_file]
6
- */
7
- import { URI } from 'langium';
8
- import type { Range } from 'vscode-languageserver';
9
- import { type ImportRootMapping } from './reqlan-path-resolve.js';
10
- export interface PathReference {
11
- path: string;
12
- range: Range;
13
- }
14
- export interface PathRewriteEdit {
15
- range: Range;
16
- newText: string;
17
- }
18
- export interface PathRewriteOptions {
19
- /** Alias mappings; defaults to the single `@` alias. */
20
- importRoots?: readonly ImportRootMapping[];
21
- }
22
- export declare function relativePathWithoutExtension(dirname: string, targetUri: URI): string;
23
- export declare function rewriteRelativePath(path: string, oldFileUri: URI, newFileUri: URI, options?: PathRewriteOptions): string | undefined;
24
- export declare function rewriteQuotedPath(path: string, oldFileUri: URI, newFileUri: URI, options?: PathRewriteOptions): string | undefined;
25
- export declare function buildPathRewriteEdits(references: PathReference[], oldFileUri: URI, newFileUri: URI, formatReplacement: (path: string, newPath: string, range: Range) => string | undefined, options?: PathRewriteOptions): PathRewriteEdit[];
@@ -1,56 +0,0 @@
1
- /**
2
- * Recompute relative file paths when a referencing file moves to a new directory.
3
- * rq:["../../../reqlan rq/extension/configuration.rq".configuration_import_roots]
4
- * rq:["../../../reqlan rq/language/imports.rq".configuration_import_root_alias]
5
- * rq:["../../../reqlan rq/extension/features-mutation-hooks.rq".move_file]
6
- */
7
- import { UriUtils } from 'langium';
8
- import { DEFAULT_IMPORT_ROOT_ALIAS, matchImportRootMapping } from './reqlan-path-resolve.js';
9
- function rewriteImportRoots(options) {
10
- return options?.importRoots ?? [{ alias: DEFAULT_IMPORT_ROOT_ALIAS }];
11
- }
12
- export function relativePathWithoutExtension(dirname, targetUri) {
13
- const uriString = targetUri.toString();
14
- const uriWithoutExt = uriString.slice(0, uriString.length - UriUtils.extname(targetUri).length);
15
- let relativePath = UriUtils.relative(dirname, uriWithoutExt);
16
- if (!relativePath.startsWith('.')) {
17
- relativePath = `./${relativePath}`;
18
- }
19
- return relativePath;
20
- }
21
- export function rewriteRelativePath(path, oldFileUri, newFileUri, options) {
22
- if (!path || path.startsWith('file://')) {
23
- return undefined;
24
- }
25
- if (matchImportRootMapping(path, rewriteImportRoots(options)) !== undefined) {
26
- return undefined;
27
- }
28
- const oldDir = UriUtils.dirname(oldFileUri);
29
- const newDir = UriUtils.dirname(newFileUri);
30
- const resolved = UriUtils.resolvePath(oldDir, path);
31
- let relativePath = UriUtils.relative(newDir, resolved);
32
- if (!relativePath.startsWith('.')) {
33
- relativePath = `./${relativePath}`;
34
- }
35
- return relativePath === path ? undefined : relativePath;
36
- }
37
- export function rewriteQuotedPath(path, oldFileUri, newFileUri, options) {
38
- const rewritten = rewriteRelativePath(path, oldFileUri, newFileUri, options);
39
- return rewritten === undefined ? undefined : JSON.stringify(rewritten);
40
- }
41
- export function buildPathRewriteEdits(references, oldFileUri, newFileUri, formatReplacement, options) {
42
- const edits = [];
43
- for (const reference of references) {
44
- const newPath = rewriteRelativePath(reference.path, oldFileUri, newFileUri, options);
45
- if (newPath === undefined) {
46
- continue;
47
- }
48
- const newText = formatReplacement(reference.path, newPath, reference.range);
49
- if (newText === undefined) {
50
- continue;
51
- }
52
- edits.push({ range: reference.range, newText });
53
- }
54
- return edits;
55
- }
56
- //# sourceMappingURL=file-path-rewrite.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-path-rewrite.js","sourceRoot":"","sources":["../../src/file-path-rewrite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAO,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EACH,yBAAyB,EACzB,sBAAsB,EAEzB,MAAM,0BAA0B,CAAC;AAiBlC,SAAS,kBAAkB,CAAC,OAA4B;IACpD,OAAO,OAAO,EAAE,WAAW,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAe,EAAE,SAAc;IACxE,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IAChG,IAAI,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,YAAY,GAAG,KAAK,YAAY,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,IAAY,EACZ,UAAe,EACf,UAAe,EACf,OAA4B;IAE5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,YAAY,GAAG,KAAK,YAAY,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,IAAY,EACZ,UAAe,EACf,UAAe,EACf,OAA4B;IAE5B,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACjC,UAA2B,EAC3B,UAAe,EACf,UAAe,EACf,iBAAsF,EACtF,OAA4B;IAE5B,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACrF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACb,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}