get-llms 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 (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +265 -0
  3. package/dist/bin/defaults.d.ts +3 -0
  4. package/dist/bin/defaults.d.ts.map +1 -0
  5. package/dist/bin/defaults.js +17 -0
  6. package/dist/bin/defaults.js.map +1 -0
  7. package/dist/bin/index.d.ts +2 -0
  8. package/dist/bin/index.d.ts.map +1 -0
  9. package/dist/bin/index.js +169 -0
  10. package/dist/bin/index.js.map +1 -0
  11. package/dist/bin/llmsFetcher.d.ts +18 -0
  12. package/dist/bin/llmsFetcher.d.ts.map +1 -0
  13. package/dist/bin/llmsFetcher.js +259 -0
  14. package/dist/bin/llmsFetcher.js.map +1 -0
  15. package/dist/bin/types/npmRegistryType.d.ts +103 -0
  16. package/dist/bin/types/npmRegistryType.d.ts.map +1 -0
  17. package/dist/bin/types/npmRegistryType.js +2 -0
  18. package/dist/bin/types/npmRegistryType.js.map +1 -0
  19. package/dist/bin/types/packageJsonType.d.ts +74 -0
  20. package/dist/bin/types/packageJsonType.d.ts.map +1 -0
  21. package/dist/bin/types/packageJsonType.js +2 -0
  22. package/dist/bin/types/packageJsonType.js.map +1 -0
  23. package/dist/bin/types/types.d.ts +21 -0
  24. package/dist/bin/types/types.d.ts.map +1 -0
  25. package/dist/bin/types/types.js +2 -0
  26. package/dist/bin/types/types.js.map +1 -0
  27. package/dist/bin/utils/cliHelpers.d.ts +11 -0
  28. package/dist/bin/utils/cliHelpers.d.ts.map +1 -0
  29. package/dist/bin/utils/cliHelpers.js +45 -0
  30. package/dist/bin/utils/cliHelpers.js.map +1 -0
  31. package/dist/bin/utils/logger.d.ts +19 -0
  32. package/dist/bin/utils/logger.d.ts.map +1 -0
  33. package/dist/bin/utils/logger.js +56 -0
  34. package/dist/bin/utils/logger.js.map +1 -0
  35. package/dist/bin/utils/utils.d.ts +13 -0
  36. package/dist/bin/utils/utils.d.ts.map +1 -0
  37. package/dist/bin/utils/utils.js +38 -0
  38. package/dist/bin/utils/utils.js.map +1 -0
  39. package/package.json +48 -0
  40. package/tsconfig.json +21 -0
  41. package/vitest.config.ts +17 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Balazs Hevesi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,265 @@
1
+ # llms-fetcher
2
+ 📚 CLI tool to fetch `llms.txt` files for your npm dependencies
3
+
4
+ ## Usage
5
+
6
+ ### Basic Usage
7
+
8
+ Fetch `llms.txt` files for all dependencies in your `package.json`:
9
+
10
+ ```bash
11
+ llms-fetcher
12
+ ```
13
+
14
+ ### Fetch Specific Packages
15
+
16
+ You can fetch specific packages without needing a `package.json`:
17
+
18
+ ```bash
19
+ llms-fetcher zod lodash react
20
+ ```
21
+
22
+ ## CLI Options
23
+
24
+ ### Input Options
25
+
26
+ #### `--package, -p <path>`
27
+ Specify a custom path to `package.json` (default: `./package.json`)
28
+
29
+ ```bash
30
+ llms-fetcher --package ./packages/core/package.json
31
+ ```
32
+
33
+ #### `--deps <types>`
34
+ Filter which dependency types to include. Comma-separated list of:
35
+ - `prod` - dependencies
36
+ - `dev` - devDependencies
37
+ - `peer` - peerDependencies
38
+ - `optional` - optionalDependencies
39
+ - `all` - all dependencies (default)
40
+
41
+ ```bash
42
+ llms-fetcher --deps prod,dev # Only production and dev dependencies
43
+ llms-fetcher --deps prod # Only production dependencies
44
+ ```
45
+
46
+ #### Positional Arguments
47
+ Specify packages directly to fetch:
48
+
49
+ ```bash
50
+ llms-fetcher react @types/react
51
+ ```
52
+
53
+ ### Output Options
54
+
55
+ #### `--output, -o <dir>`
56
+ Custom output directory (default: `docs/llms`)
57
+
58
+ ```bash
59
+ llms-fetcher --output ./context/dependencies
60
+ ```
61
+
62
+ #### `--filename, -f <pattern>`
63
+ Filename pattern for output files. Use `{name}` as a placeholder for the package name (default: `{name}`)
64
+
65
+ ```bash
66
+ llms-fetcher --filename "llms-{name}"
67
+ ```
68
+
69
+ #### `--extension, -e <ext>`
70
+ File extension for output files (default: `txt`)
71
+
72
+ ```bash
73
+ llms-fetcher --extension md
74
+ ```
75
+
76
+ ### Behavior Options
77
+
78
+ #### `--dry-run`
79
+ Preview what would be done without writing any files
80
+
81
+ ```bash
82
+ llms-fetcher --dry-run
83
+ ```
84
+
85
+ #### `--fallback <strategy>`
86
+ Strategy when `llms.txt` is not found:
87
+ - `none` (default) - Skip packages without `llms.txt`
88
+ - `readme` - Fall back to README.md from GitHub
89
+ - `empty` - Create an empty file with a placeholder message
90
+ - `skip` - Same as `none`
91
+
92
+ ```bash
93
+ llms-fetcher --fallback readme # Use README.md as fallback
94
+ llms-fetcher --fallback empty # Create empty files
95
+ ```
96
+
97
+ ##### Fallback Examples
98
+
99
+ **With readme fallback:**
100
+ ```bash
101
+ llms-fetcher --fallback readme
102
+ ```
103
+
104
+ Results in:
105
+ ```
106
+ ✅ package-name: Using readme fallback -> package-name.txt
107
+ ```
108
+
109
+ **With empty fallback:**
110
+ ```bash
111
+ llms-fetcher --fallback empty
112
+ ```
113
+
114
+ Creates files containing:
115
+ ```
116
+ # package-name
117
+
118
+ No llms.txt found for this package.
119
+ ```
120
+
121
+ ### Verbosity Options
122
+
123
+ #### `--quiet, -q`
124
+ Only show errors (minimal output)
125
+
126
+ ```bash
127
+ llms-fetcher --quiet
128
+ ```
129
+
130
+ #### `--verbose, -v`
131
+ Show detailed output including:
132
+ - Network requests being made
133
+ - URLs being checked
134
+ - Debug information
135
+
136
+ ```bash
137
+ llms-fetcher --verbose
138
+ ```
139
+
140
+ **Note:** If both `-q` and `-v` are specified, the last one wins.
141
+
142
+ ### Filename Sanitization Options
143
+
144
+ Customize how special characters in package names are sanitized:
145
+
146
+ #### `--space-replace <char>`
147
+ Character to replace spaces in filenames (default: `_`)
148
+
149
+ ```bash
150
+ llms-fetcher --space-replace "_"
151
+ ```
152
+
153
+ #### `--slash-replace <char>`
154
+ Character to replace slashes in filenames (default: `-`)
155
+
156
+ ```bash
157
+ llms-fetcher --slash-replace "-"
158
+ ```
159
+
160
+ #### `--at-replace <char>`
161
+ Character to replace `@` in scoped package names (default: empty string)
162
+
163
+ ```bash
164
+ llms-fetcher --at-replace ""
165
+ ```
166
+
167
+ **Example:** `@types/node` becomes `types-node.txt` with default settings
168
+
169
+ ## Complete Examples
170
+
171
+ ### Example 1: Fetch with readme fallback and save as markdown
172
+ ```bash
173
+ llms-fetcher \
174
+ --fallback readme \
175
+ --extension md \
176
+ --output ./docs/handbook
177
+ ```
178
+
179
+ ### Example 2: Only production dependencies with custom naming
180
+ ```bash
181
+ llms-fetcher \
182
+ --deps prod \
183
+ --filename "{name}-reference" \
184
+ --extension txt \
185
+ --output ./context/prod
186
+ ```
187
+
188
+ ### Example 3: Fetch specific packages with custom sanitization
189
+ ```bash
190
+ llms-fetcher @types/node @types/react \
191
+ --space-replace "_" \
192
+ --slash-replace "_" \
193
+ --at-replace "at_"
194
+ ```
195
+
196
+ This might create:
197
+ - `at_types_node.txt`
198
+ - `at_types_react.txt`
199
+
200
+ ### Example 4: Verbose dry run with all dependencies
201
+ ```bash
202
+ llms-fetcher \
203
+ --deps all \
204
+ --dry-run \
205
+ --verbose
206
+ ```
207
+
208
+ ### Example 5: Complex workflow - production deps with empty fallback
209
+ ```bash
210
+ llms-fetcher \
211
+ --deps prod \
212
+ --fallback empty \
213
+ --output ./docs/llms-production \
214
+ --quiet
215
+ ```
216
+
217
+ ## Output Structure
218
+
219
+ By default, files are saved to:
220
+ ```
221
+ docs/llms/
222
+ ├── zod.txt
223
+ ├── lodash.txt
224
+ └── [package-name].txt
225
+ ```
226
+
227
+ With `--fallback readme`, successful files may include fallback indicators in the summary.
228
+
229
+ ## How It Works
230
+
231
+ The tool searches for `llms.txt` files in this order:
232
+
233
+ 1. Check the package's `package.json` for an `llms` or `llmsFull` field
234
+ 2. Try standard URLs: `{homepage}/llms.txt` and `{homepage}/docs/llms.txt`
235
+ 3. If GitHub repository, search README for links containing "docs"
236
+ 4. Apply fallback strategy if specified
237
+
238
+ ```mermaid
239
+ flowchart TD
240
+ A([package]) --> B{is there an 'llms'<br/>key in the<br/>'package.json'?}
241
+
242
+ B -- yes --> FOUND([we've found it])
243
+ B -- no --> C{is the package<br/>homepage a<br/>github link?}
244
+
245
+ C -- yes --> D{does the github<br/>'readme.txt' mention<br/>the word 'docs' in a<br/>hyperlink?}
246
+ C -- no --> E{does 'link/llms.txt'<br/>return a txt file?}
247
+
248
+ D -- yes --> E
249
+ D -- no --> NOFILE([there likely isn't a<br/>'llms.txt'<br/>for that package<br/><br/>Either use the 'README.txt',<br/>or use an external service<br/>like context7])
250
+
251
+ E -- yes --> FOUND
252
+ E -- no --> F{does 'link/docs/llms.txt'<br/>return a txt file?}
253
+
254
+ F -- yes --> FOUND
255
+ F -- no --> NOFILE
256
+ ```
257
+
258
+ ## Exit Codes
259
+
260
+ - `0` - Success
261
+ - `1` - Package.json not found or cannot be parsed
262
+
263
+ ## Contributing
264
+
265
+ Issues and contributions welcome! Report bugs at: https://github.com/balazshevesi/llms-fetcher/issues
@@ -0,0 +1,3 @@
1
+ import { CLIOptions } from "./types/types";
2
+ export declare const DEFAULT_OPTIONS: CLIOptions;
3
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../bin/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,eAAO,MAAM,eAAe,EAAE,UAe7B,CAAC"}
@@ -0,0 +1,17 @@
1
+ export const DEFAULT_OPTIONS = {
2
+ packagePath: "./package.json",
3
+ packages: [],
4
+ deps: ["all"],
5
+ output: "docs/llms",
6
+ filename: "{name}",
7
+ extension: "txt",
8
+ dryRun: false,
9
+ verbosity: "normal",
10
+ fallback: "none",
11
+ sanitizer: {
12
+ spaceReplacement: "_",
13
+ slashReplacement: "-",
14
+ atReplacement: "",
15
+ },
16
+ };
17
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../bin/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,WAAW,EAAE,gBAAgB;IAC7B,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE;QACT,gBAAgB,EAAE,GAAG;QACrB,gBAAgB,EAAE,GAAG;QACrB,aAAa,EAAE,EAAE;KAClB;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../bin/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,169 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { Command } from "commander";
4
+ import { findLLMsTxt } from "./llmsFetcher";
5
+ import { generateFilename } from "./utils/utils";
6
+ import { logger } from "./utils/logger";
7
+ import { parseDeps, getDependencies } from "./utils/cliHelpers";
8
+ import { DEFAULT_OPTIONS } from "./defaults";
9
+ const currentDir = process.cwd();
10
+ const main = async (packages, options) => {
11
+ // Set verbosity first
12
+ logger.setVerbosity(options.verbosity);
13
+ logger.verbose("Running with options:", JSON.stringify(options, null, 2));
14
+ let packageNames = packages;
15
+ // If no direct packages provided, read from package.json
16
+ if (packageNames.length === 0) {
17
+ const packageJsonPath = path.isAbsolute(options.packagePath)
18
+ ? options.packagePath
19
+ : path.join(currentDir, options.packagePath);
20
+ logger.verbose(`Looking for package.json at: ${packageJsonPath}`);
21
+ let packageJson;
22
+ try {
23
+ packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
24
+ logger.info(`Found package.json at ${packageJsonPath}`);
25
+ }
26
+ catch (e) {
27
+ logger.error(`Could not find or parse package.json at ${packageJsonPath}`);
28
+ if (logger.isVerbose()) {
29
+ logger.error(e);
30
+ }
31
+ process.exit(1);
32
+ }
33
+ const dependencies = getDependencies(packageJson, options.deps);
34
+ packageNames = Object.keys(dependencies);
35
+ if (packageNames.length === 0) {
36
+ logger.info("No dependencies found matching the specified criteria");
37
+ return;
38
+ }
39
+ logger.verbose(`Found ${packageNames.length} dependencies: ${packageNames.join(", ")}`);
40
+ }
41
+ logger.info(`Processing ${packageNames.length} package(s)...`);
42
+ // Resolve output directory
43
+ const outputDir = path.isAbsolute(options.output)
44
+ ? options.output
45
+ : path.join(currentDir, options.output);
46
+ logger.verbose(`Output directory: ${outputDir}`);
47
+ if (!options.dryRun)
48
+ fs.mkdirSync(outputDir, { recursive: true });
49
+ let successCount = 0;
50
+ let failCount = 0;
51
+ let fallbackCount = 0;
52
+ for (const packageName of packageNames) {
53
+ logger.verbose(`\nProcessing: ${packageName}`);
54
+ const llmsFile = await findLLMsTxt(packageName, {
55
+ fallback: options.fallback,
56
+ });
57
+ if (llmsFile) {
58
+ const filename = generateFilename(options.filename, packageName, options.extension, options.sanitizer);
59
+ const outputPath = path.join(outputDir, filename);
60
+ if (options.dryRun) {
61
+ if (llmsFile.isFallback) {
62
+ logger.info(`[DRY RUN] Would write ${packageName} (fallback: ${llmsFile.fallbackType}) to ${outputPath}`);
63
+ fallbackCount++;
64
+ }
65
+ else {
66
+ logger.info(`[DRY RUN] Would write ${packageName} to ${outputPath} (from ${llmsFile.location})`);
67
+ }
68
+ }
69
+ else {
70
+ fs.writeFileSync(outputPath, llmsFile.content);
71
+ if (llmsFile.isFallback) {
72
+ logger.success(`${packageName}: Using ${llmsFile.fallbackType} fallback -> ${filename}`);
73
+ fallbackCount++;
74
+ }
75
+ else {
76
+ logger.success(`${packageName}: Found llms.txt at ${llmsFile.location}`);
77
+ }
78
+ }
79
+ successCount++;
80
+ }
81
+ else {
82
+ logger.fail(`${packageName}: No llms.txt found`);
83
+ failCount++;
84
+ }
85
+ }
86
+ // Summary
87
+ logger.info("");
88
+ logger.info("--- Summary ---");
89
+ logger.info(`Total packages: ${packageNames.length}`);
90
+ logger.info(`Success: ${successCount}`);
91
+ if (fallbackCount > 0) {
92
+ logger.info(` (including ${fallbackCount} fallbacks)`);
93
+ }
94
+ logger.info(`Failed: ${failCount}`);
95
+ if (options.dryRun) {
96
+ logger.info("");
97
+ logger.info("(Dry run - no files were written)");
98
+ }
99
+ };
100
+ // CLI setup
101
+ const program = new Command();
102
+ program
103
+ .name("get-llms")
104
+ .description("Fetch llms.txt files for your npm dependencies")
105
+ .version("0.0.1")
106
+ .argument("[packages...]", "Package names to fetch (optional)")
107
+ .option("-p, --package <path>", "Path to package.json", DEFAULT_OPTIONS.packagePath)
108
+ .option("-o, --output <dir>", "Output directory", DEFAULT_OPTIONS.output)
109
+ .option("-f, --filename <pattern>", "Filename pattern (use {name} for package name)", DEFAULT_OPTIONS.filename)
110
+ .option("-e, --extension <ext>", "File extension", DEFAULT_OPTIONS.extension)
111
+ .option("-d, --deps <types>", "Dependency types to include (prod,dev,peer,optional,all)", "all")
112
+ .option("--dry-run", "Show what would be done without writing files", DEFAULT_OPTIONS.dryRun)
113
+ .option("-q, --quiet", "Only show errors", false)
114
+ .option("-v, --verbose", "Show detailed output", false)
115
+ .option("--fallback <strategy>", "Fallback strategy when llms.txt not found (none, readme, empty, skip)", DEFAULT_OPTIONS.fallback)
116
+ .option("--space-replace <char>", "Character to replace spaces in filenames", DEFAULT_OPTIONS.sanitizer.spaceReplacement)
117
+ .option("--slash-replace <char>", "Character to replace slashes in filenames", DEFAULT_OPTIONS.sanitizer.slashReplacement)
118
+ .option("--at-replace <char>", "Character to replace @ in scoped package names", DEFAULT_OPTIONS.sanitizer.atReplacement)
119
+ .action(async (packages, opts) => {
120
+ // Determine verbosity (last one wins)
121
+ let verbosity = "normal";
122
+ // Check raw argv to see which came last
123
+ const quietIndex = process.argv.findIndex((arg) => arg === "-q" || arg === "--quiet");
124
+ const verboseIndex = process.argv.findIndex((arg) => arg === "-v" || arg === "--verbose");
125
+ // Both specified, last one wins
126
+ if (opts.quiet && opts.verbose) {
127
+ if (quietIndex > verboseIndex)
128
+ verbosity = "quiet";
129
+ else
130
+ verbosity = "verbose";
131
+ }
132
+ else if (opts.quiet)
133
+ verbosity = "quiet";
134
+ else if (opts.verbose)
135
+ verbosity = "verbose";
136
+ // Validate fallback strategy
137
+ const validFallbacks = [
138
+ "none",
139
+ "readme",
140
+ "empty",
141
+ "skip",
142
+ ];
143
+ const fallback = validFallbacks.includes(opts.fallback)
144
+ ? opts.fallback
145
+ : "none";
146
+ if (opts.fallback &&
147
+ !validFallbacks.includes(opts.fallback)) {
148
+ logger.warn(`Unknown fallback strategy: ${opts.fallback}. Using 'none'.`);
149
+ }
150
+ const cliOptions = {
151
+ packagePath: opts.package,
152
+ packages: packages,
153
+ deps: parseDeps(opts.deps),
154
+ output: opts.output,
155
+ filename: opts.filename,
156
+ extension: opts.extension,
157
+ dryRun: opts.dryRun,
158
+ verbosity,
159
+ fallback,
160
+ sanitizer: {
161
+ spaceReplacement: opts.spaceReplace,
162
+ slashReplacement: opts.slashReplace,
163
+ atReplacement: opts.atReplace,
164
+ },
165
+ };
166
+ await main(packages, cliOptions);
167
+ });
168
+ program.parse();
169
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../bin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { NpmRegistry } from "./types/npmRegistryType";
2
+ import { FallbackStrategy } from "./types/types";
3
+ export interface FetchResult {
4
+ location: string;
5
+ content: string;
6
+ isFallback?: boolean;
7
+ fallbackType?: "readme" | "empty";
8
+ }
9
+ export declare const checkPackage: (s: NpmRegistry) => Promise<FetchResult | null>;
10
+ export declare const checkStandardUrls: (baseUrl: string) => Promise<FetchResult | null>;
11
+ export declare const fetchReadmeFromGithub: (homepage: string) => Promise<FetchResult | null>;
12
+ export declare const handleGithub: (homepage: string) => Promise<FetchResult | null>;
13
+ export declare const checkHomepage: (homepage: string) => Promise<FetchResult | null>;
14
+ export interface FindLLMsOptions {
15
+ fallback?: FallbackStrategy;
16
+ }
17
+ export declare const findLLMsTxt: (packageName: string, options?: FindLLMsOptions) => Promise<FetchResult | null>;
18
+ //# sourceMappingURL=llmsFetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmsFetcher.d.ts","sourceRoot":"","sources":["../../bin/llmsFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACnC;AA2BD,eAAO,MAAM,YAAY,MACpB,WAAW,KACb,QAAQ,WAAW,GAAG,IAAI,CAuB5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,MAAM,KACd,QAAQ,WAAW,GAAG,IAAI,CAkD5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,aACtB,MAAM,KACf,QAAQ,WAAW,GAAG,IAAI,CA6B5B,CAAC;AAEF,eAAO,MAAM,YAAY,aACb,MAAM,KACf,QAAQ,WAAW,GAAG,IAAI,CA4E5B,CAAC;AAEF,eAAO,MAAM,aAAa,aACd,MAAM,KACf,QAAQ,WAAW,GAAG,IAAI,CAyB5B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,eAAO,MAAM,WAAW,gBACT,MAAM,YACV,eAAe,KACvB,QAAQ,WAAW,GAAG,IAAI,CAoD5B,CAAC"}