@liendev/parser 0.39.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 (153) hide show
  1. package/dist/ast/chunker.d.ts +30 -0
  2. package/dist/ast/chunker.d.ts.map +1 -0
  3. package/dist/ast/chunker.js +310 -0
  4. package/dist/ast/chunker.js.map +1 -0
  5. package/dist/ast/complexity/cognitive.d.ts +16 -0
  6. package/dist/ast/complexity/cognitive.d.ts.map +1 -0
  7. package/dist/ast/complexity/cognitive.js +137 -0
  8. package/dist/ast/complexity/cognitive.js.map +1 -0
  9. package/dist/ast/complexity/cyclomatic.d.ts +12 -0
  10. package/dist/ast/complexity/cyclomatic.d.ts.map +1 -0
  11. package/dist/ast/complexity/cyclomatic.js +54 -0
  12. package/dist/ast/complexity/cyclomatic.js.map +1 -0
  13. package/dist/ast/complexity/halstead.d.ts +56 -0
  14. package/dist/ast/complexity/halstead.d.ts.map +1 -0
  15. package/dist/ast/complexity/halstead.js +196 -0
  16. package/dist/ast/complexity/halstead.js.map +1 -0
  17. package/dist/ast/complexity/index.d.ts +13 -0
  18. package/dist/ast/complexity/index.d.ts.map +1 -0
  19. package/dist/ast/complexity/index.js +12 -0
  20. package/dist/ast/complexity/index.js.map +1 -0
  21. package/dist/ast/extractors/index.d.ts +35 -0
  22. package/dist/ast/extractors/index.d.ts.map +1 -0
  23. package/dist/ast/extractors/index.js +41 -0
  24. package/dist/ast/extractors/index.js.map +1 -0
  25. package/dist/ast/extractors/symbol-helpers.d.ts +20 -0
  26. package/dist/ast/extractors/symbol-helpers.d.ts.map +1 -0
  27. package/dist/ast/extractors/symbol-helpers.js +58 -0
  28. package/dist/ast/extractors/symbol-helpers.js.map +1 -0
  29. package/dist/ast/extractors/types.d.ts +108 -0
  30. package/dist/ast/extractors/types.d.ts.map +1 -0
  31. package/dist/ast/extractors/types.js +2 -0
  32. package/dist/ast/extractors/types.js.map +1 -0
  33. package/dist/ast/languages/javascript.d.ts +134 -0
  34. package/dist/ast/languages/javascript.d.ts.map +1 -0
  35. package/dist/ast/languages/javascript.js +787 -0
  36. package/dist/ast/languages/javascript.js.map +1 -0
  37. package/dist/ast/languages/php.d.ts +84 -0
  38. package/dist/ast/languages/php.d.ts.map +1 -0
  39. package/dist/ast/languages/php.js +452 -0
  40. package/dist/ast/languages/php.js.map +1 -0
  41. package/dist/ast/languages/python.d.ts +96 -0
  42. package/dist/ast/languages/python.d.ts.map +1 -0
  43. package/dist/ast/languages/python.js +448 -0
  44. package/dist/ast/languages/python.js.map +1 -0
  45. package/dist/ast/languages/registry.d.ts +30 -0
  46. package/dist/ast/languages/registry.d.ts.map +1 -0
  47. package/dist/ast/languages/registry.js +95 -0
  48. package/dist/ast/languages/registry.js.map +1 -0
  49. package/dist/ast/languages/rust.d.ts +113 -0
  50. package/dist/ast/languages/rust.d.ts.map +1 -0
  51. package/dist/ast/languages/rust.js +614 -0
  52. package/dist/ast/languages/rust.js.map +1 -0
  53. package/dist/ast/languages/types.d.ts +52 -0
  54. package/dist/ast/languages/types.d.ts.map +1 -0
  55. package/dist/ast/languages/types.js +2 -0
  56. package/dist/ast/languages/types.js.map +1 -0
  57. package/dist/ast/languages/typescript.d.ts +3 -0
  58. package/dist/ast/languages/typescript.d.ts.map +1 -0
  59. package/dist/ast/languages/typescript.js +134 -0
  60. package/dist/ast/languages/typescript.js.map +1 -0
  61. package/dist/ast/parser.d.ts +29 -0
  62. package/dist/ast/parser.d.ts.map +1 -0
  63. package/dist/ast/parser.js +67 -0
  64. package/dist/ast/parser.js.map +1 -0
  65. package/dist/ast/symbols.d.ts +74 -0
  66. package/dist/ast/symbols.d.ts.map +1 -0
  67. package/dist/ast/symbols.js +171 -0
  68. package/dist/ast/symbols.js.map +1 -0
  69. package/dist/ast/traversers/index.d.ts +19 -0
  70. package/dist/ast/traversers/index.d.ts.map +1 -0
  71. package/dist/ast/traversers/index.js +21 -0
  72. package/dist/ast/traversers/index.js.map +1 -0
  73. package/dist/ast/traversers/types.d.ts +98 -0
  74. package/dist/ast/traversers/types.d.ts.map +1 -0
  75. package/dist/ast/traversers/types.js +2 -0
  76. package/dist/ast/traversers/types.js.map +1 -0
  77. package/dist/ast/types.d.ts +54 -0
  78. package/dist/ast/types.d.ts.map +1 -0
  79. package/dist/ast/types.js +2 -0
  80. package/dist/ast/types.js.map +1 -0
  81. package/dist/chunk-only-index.d.ts +25 -0
  82. package/dist/chunk-only-index.d.ts.map +1 -0
  83. package/dist/chunk-only-index.js +107 -0
  84. package/dist/chunk-only-index.js.map +1 -0
  85. package/dist/chunker.d.ts +12 -0
  86. package/dist/chunker.d.ts.map +1 -0
  87. package/dist/chunker.js +98 -0
  88. package/dist/chunker.js.map +1 -0
  89. package/dist/constants.d.ts +8 -0
  90. package/dist/constants.d.ts.map +1 -0
  91. package/dist/constants.js +11 -0
  92. package/dist/constants.js.map +1 -0
  93. package/dist/content-hash.d.ts +20 -0
  94. package/dist/content-hash.d.ts.map +1 -0
  95. package/dist/content-hash.js +91 -0
  96. package/dist/content-hash.js.map +1 -0
  97. package/dist/dependency-analyzer.d.ts +79 -0
  98. package/dist/dependency-analyzer.d.ts.map +1 -0
  99. package/dist/dependency-analyzer.js +408 -0
  100. package/dist/dependency-analyzer.js.map +1 -0
  101. package/dist/ecosystem-presets.d.ts +32 -0
  102. package/dist/ecosystem-presets.d.ts.map +1 -0
  103. package/dist/ecosystem-presets.js +325 -0
  104. package/dist/ecosystem-presets.js.map +1 -0
  105. package/dist/gitignore.d.ts +22 -0
  106. package/dist/gitignore.d.ts.map +1 -0
  107. package/dist/gitignore.js +128 -0
  108. package/dist/gitignore.js.map +1 -0
  109. package/dist/index.d.ts +32 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +68 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/insights/chunk-complexity.d.ts +89 -0
  114. package/dist/insights/chunk-complexity.d.ts.map +1 -0
  115. package/dist/insights/chunk-complexity.js +332 -0
  116. package/dist/insights/chunk-complexity.js.map +1 -0
  117. package/dist/insights/types.d.ts +73 -0
  118. package/dist/insights/types.d.ts.map +1 -0
  119. package/dist/insights/types.js +9 -0
  120. package/dist/insights/types.js.map +1 -0
  121. package/dist/json-template-chunker.d.ts +12 -0
  122. package/dist/json-template-chunker.d.ts.map +1 -0
  123. package/dist/json-template-chunker.js +87 -0
  124. package/dist/json-template-chunker.js.map +1 -0
  125. package/dist/liquid-chunker.d.ts +16 -0
  126. package/dist/liquid-chunker.d.ts.map +1 -0
  127. package/dist/liquid-chunker.js +274 -0
  128. package/dist/liquid-chunker.js.map +1 -0
  129. package/dist/scanner.d.ts +16 -0
  130. package/dist/scanner.d.ts.map +1 -0
  131. package/dist/scanner.js +95 -0
  132. package/dist/scanner.js.map +1 -0
  133. package/dist/symbol-extractor.d.ts +18 -0
  134. package/dist/symbol-extractor.d.ts.map +1 -0
  135. package/dist/symbol-extractor.js +343 -0
  136. package/dist/symbol-extractor.js.map +1 -0
  137. package/dist/test-associations.d.ts +16 -0
  138. package/dist/test-associations.d.ts.map +1 -0
  139. package/dist/test-associations.js +43 -0
  140. package/dist/test-associations.js.map +1 -0
  141. package/dist/types.d.ts +75 -0
  142. package/dist/types.d.ts.map +1 -0
  143. package/dist/types.js +2 -0
  144. package/dist/types.js.map +1 -0
  145. package/dist/utils/path-matching.d.ts +71 -0
  146. package/dist/utils/path-matching.d.ts.map +1 -0
  147. package/dist/utils/path-matching.js +258 -0
  148. package/dist/utils/path-matching.js.map +1 -0
  149. package/dist/utils/repo-id.d.ts +6 -0
  150. package/dist/utils/repo-id.d.ts.map +1 -0
  151. package/dist/utils/repo-id.js +12 -0
  152. package/dist/utils/repo-id.js.map +1 -0
  153. package/package.json +66 -0
@@ -0,0 +1,95 @@
1
+ import { extname } from 'path';
2
+ import { typescriptDefinition } from './typescript.js';
3
+ import { javascriptDefinition } from './javascript.js';
4
+ import { phpDefinition } from './php.js';
5
+ import { pythonDefinition } from './python.js';
6
+ import { rustDefinition } from './rust.js';
7
+ /**
8
+ * All registered language definitions.
9
+ * To add a new language, create a definition file and add it here.
10
+ */
11
+ const definitions = [
12
+ typescriptDefinition,
13
+ javascriptDefinition,
14
+ phpDefinition,
15
+ pythonDefinition,
16
+ rustDefinition,
17
+ ];
18
+ /**
19
+ * Canonical list of supported language IDs.
20
+ * SupportedLanguage type is derived from this array.
21
+ * To add a new language: add its ID here, then add its definition to `definitions` below.
22
+ */
23
+ export const LANGUAGE_IDS = ['typescript', 'javascript', 'php', 'python', 'rust'];
24
+ /**
25
+ * Registry keyed by language id.
26
+ */
27
+ const languageRegistry = new Map();
28
+ const extensionMap = new Map();
29
+ for (const def of definitions) {
30
+ if (languageRegistry.has(def.id)) {
31
+ throw new Error(`Duplicate language ID in registry: ${def.id}`);
32
+ }
33
+ languageRegistry.set(def.id, def);
34
+ for (const ext of def.extensions) {
35
+ if (extensionMap.has(ext)) {
36
+ throw new Error(`Duplicate extension "${ext}" registered by "${def.id}" (already claimed by "${extensionMap.get(ext)}")`);
37
+ }
38
+ extensionMap.set(ext, def.id);
39
+ }
40
+ }
41
+ // Validate LANGUAGE_IDS has no duplicates and every ID has a definition
42
+ if (new Set(LANGUAGE_IDS).size !== LANGUAGE_IDS.length) {
43
+ const dupes = [...new Set(LANGUAGE_IDS.filter((id, i) => LANGUAGE_IDS.indexOf(id) !== i))];
44
+ throw new Error(`LANGUAGE_IDS contains duplicate entries: ${dupes.join(', ')}`);
45
+ }
46
+ for (const id of LANGUAGE_IDS) {
47
+ if (!languageRegistry.has(id)) {
48
+ throw new Error(`Language "${id}" is in LANGUAGE_IDS but has no definition in the registry`);
49
+ }
50
+ }
51
+ /**
52
+ * Get the full language definition for a supported language.
53
+ *
54
+ * @throws Error if language is not registered
55
+ */
56
+ export function getLanguage(language) {
57
+ const def = languageRegistry.get(language);
58
+ if (!def) {
59
+ throw new Error(`No language definition registered for: ${language}`);
60
+ }
61
+ return def;
62
+ }
63
+ /**
64
+ * Detect which AST-supported language a file belongs to, based on extension.
65
+ *
66
+ * @returns SupportedLanguage or null if not AST-supported
67
+ */
68
+ export function detectLanguage(filePath) {
69
+ const ext = extname(filePath).slice(1).toLowerCase();
70
+ return extensionMap.get(ext) ?? null;
71
+ }
72
+ /**
73
+ * Check if a language is registered (non-throwing).
74
+ */
75
+ export function languageExists(language) {
76
+ return languageRegistry.has(language);
77
+ }
78
+ /**
79
+ * Get all registered language definitions.
80
+ */
81
+ export function getAllLanguages() {
82
+ return definitions.slice();
83
+ }
84
+ /**
85
+ * Get all file extensions supported by registered languages.
86
+ * Cached after first call.
87
+ */
88
+ let extensionCache = null;
89
+ export function getSupportedExtensions() {
90
+ if (!extensionCache) {
91
+ extensionCache = definitions.flatMap(d => d.extensions);
92
+ }
93
+ return extensionCache;
94
+ }
95
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/ast/languages/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,GAAyB;IACxC,oBAAoB;IACpB,oBAAoB;IACpB,aAAa;IACb,gBAAgB;IAChB,cAAc;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAG3F;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE1D,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,oBAAoB,GAAG,CAAC,EAAE,0BAA0B,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CACzG,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,IAAI,KAAK,CAAC,4CAA4C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClF,CAAC;AACD,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;IAC9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,4DAA4D,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAA2B;IACrD,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACrD,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,IAAI,cAAc,GAAoB,IAAI,CAAC;AAE3C,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,113 @@
1
+ import type Parser from 'tree-sitter';
2
+ import type { SymbolInfo } from '../types.js';
3
+ import type { LanguageDefinition } from './types.js';
4
+ import type { LanguageTraverser, DeclarationFunctionInfo } from '../traversers/types.js';
5
+ import type { LanguageExportExtractor, LanguageImportExtractor, LanguageSymbolExtractor } from '../extractors/types.js';
6
+ /**
7
+ * Rust AST traverser
8
+ *
9
+ * Handles Rust AST node types and traversal patterns.
10
+ * Rust is similar to Python in that functions are always declared with `fn`:
11
+ * - No variable declarations with functions (unlike JS const x = || {})
12
+ * - `impl` blocks and `trait` blocks act as containers (like classes)
13
+ * - Closures exist but are not top-level declarations
14
+ */
15
+ export declare class RustTraverser implements LanguageTraverser {
16
+ targetNodeTypes: string[];
17
+ containerTypes: string[];
18
+ declarationTypes: string[];
19
+ functionTypes: string[];
20
+ shouldExtractChildren(node: Parser.SyntaxNode): boolean;
21
+ isDeclarationWithFunction(_node: Parser.SyntaxNode): boolean;
22
+ getContainerBody(node: Parser.SyntaxNode): Parser.SyntaxNode | null;
23
+ shouldTraverseChildren(node: Parser.SyntaxNode): boolean;
24
+ findParentContainerName(node: Parser.SyntaxNode): string | undefined;
25
+ findFunctionInDeclaration(_node: Parser.SyntaxNode): DeclarationFunctionInfo;
26
+ }
27
+ /**
28
+ * Rust export extractor
29
+ *
30
+ * Rust uses `pub` visibility to mark items as exported. Items with a
31
+ * `visibility_modifier` child (e.g., `pub`, `pub(crate)`) are considered exports.
32
+ *
33
+ * Exportable items:
34
+ * - pub fn helper() {}
35
+ * - pub struct User {}
36
+ * - pub enum Status {}
37
+ * - pub trait Serialize {}
38
+ * - pub type Alias = ...
39
+ * - pub const VALUE: ... = ...
40
+ * - pub static GLOBAL: ... = ...
41
+ * - pub mod submodule;
42
+ * - pub use other::Thing; (re-exports)
43
+ */
44
+ export declare class RustExportExtractor implements LanguageExportExtractor {
45
+ private readonly exportableTypes;
46
+ extractExports(rootNode: Parser.SyntaxNode): string[];
47
+ private extractExportName;
48
+ private hasVisibilityModifier;
49
+ /**
50
+ * Extract exported names from a use declaration argument.
51
+ * Handles both simple patterns and list patterns:
52
+ * - `pub use crate::auth::AuthService;` -> ["AuthService"]
53
+ * - `pub use crate::auth::{AuthService, AuthError};` -> ["AuthService", "AuthError"]
54
+ */
55
+ private extractUseExportNames;
56
+ }
57
+ /**
58
+ * Rust import extractor
59
+ *
60
+ * Handles all `use` declarations (not just `pub use`).
61
+ * Every `use` creates a dependency.
62
+ *
63
+ * Examples:
64
+ * - `use crate::auth::AuthService;`
65
+ * - `use crate::auth::{AuthService, AuthError};`
66
+ * - `use crate::auth::Service as Auth;`
67
+ * - `use crate::models::*;`
68
+ * - `use std::io::Read;` (external - skipped)
69
+ * - `use super::utils::helper;`
70
+ */
71
+ export declare class RustImportExtractor implements LanguageImportExtractor {
72
+ readonly importNodeTypes: string[];
73
+ extractImportPath(node: Parser.SyntaxNode): string | null;
74
+ processImportSymbols(node: Parser.SyntaxNode): {
75
+ importPath: string;
76
+ symbols: string[];
77
+ } | null;
78
+ private processUseArgument;
79
+ private processScopedIdentifier;
80
+ private processScopedUseList;
81
+ private processUseAsClause;
82
+ private processUseWildcard;
83
+ /**
84
+ * Resolve the full path of a use argument for the imports list.
85
+ * Returns the full `crate::...` path or similar.
86
+ */
87
+ private resolveFullPath;
88
+ }
89
+ /**
90
+ * Rust symbol extractor
91
+ *
92
+ * Handles:
93
+ * - function_item (fn foo() {})
94
+ * - function_signature_item (fn foo(); in traits)
95
+ * - impl_item (impl Foo {}) - treated as class equivalent
96
+ * - trait_item (trait Foo {}) - treated as interface equivalent
97
+ *
98
+ * Call sites: call_expression (foo()), macro_invocation (println!())
99
+ */
100
+ export declare class RustSymbolExtractor implements LanguageSymbolExtractor {
101
+ readonly symbolNodeTypes: string[];
102
+ extractSymbol(node: Parser.SyntaxNode, content: string, parentClass?: string): SymbolInfo | null;
103
+ extractCallSite(node: Parser.SyntaxNode): {
104
+ symbol: string;
105
+ line: number;
106
+ key: string;
107
+ } | null;
108
+ private extractFunctionInfo;
109
+ private extractImplInfo;
110
+ private extractTraitInfo;
111
+ }
112
+ export declare const rustDefinition: LanguageDefinition;
113
+ //# sourceMappingURL=rust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/ast/languages/rust.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAYhC;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,iBAAiB;IACrD,eAAe,WAAgD;IAE/D,cAAc,WAA+B;IAE7C,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAEhC,aAAa,WAA0B;IAEvC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO;IAIvD,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO;IAI5D,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI;IAOnE,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO;IAMxD,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS;IAgBpE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,uBAAuB;CAM7E;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,mBAAoB,YAAW,uBAAuB;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAS7B;IAEH,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE;IAsBrD,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,qBAAqB;IAQ7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CAmB9B;AA2FD;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAoB,YAAW,uBAAuB;IACjE,QAAQ,CAAC,eAAe,WAAuB;IAE/C,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI;IAQzD,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAO/F,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,kBAAkB;IAoB1B;;;OAGG;IACH,OAAO,CAAC,eAAe;CA6BxB;AAMD;;;;;;;;;;GAUG;AACH,qBAAa,mBAAoB,YAAW,uBAAuB;IACjE,QAAQ,CAAC,eAAe,WAKtB;IAEF,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAchG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAmC9F,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;CAYzB;AAMD,eAAO,MAAM,cAAc,EAAE,kBA6G5B,CAAC"}