depfixer 1.0.0 → 1.1.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 (85) hide show
  1. package/dist/commands/audit.d.ts +19 -0
  2. package/dist/commands/audit.d.ts.map +1 -0
  3. package/dist/commands/audit.js +170 -0
  4. package/dist/commands/audit.js.map +1 -0
  5. package/dist/commands/fix.d.ts +10 -3
  6. package/dist/commands/fix.d.ts.map +1 -1
  7. package/dist/commands/fix.js +407 -41
  8. package/dist/commands/fix.js.map +1 -1
  9. package/dist/commands/graph.d.ts +1 -1
  10. package/dist/commands/graph.d.ts.map +1 -1
  11. package/dist/commands/graph.js +17 -12
  12. package/dist/commands/graph.js.map +1 -1
  13. package/dist/commands/login.d.ts.map +1 -1
  14. package/dist/commands/login.js +120 -19
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.d.ts.map +1 -1
  17. package/dist/commands/logout.js +6 -0
  18. package/dist/commands/logout.js.map +1 -1
  19. package/dist/commands/migrate.d.ts +22 -0
  20. package/dist/commands/migrate.d.ts.map +1 -0
  21. package/dist/commands/migrate.js +874 -0
  22. package/dist/commands/migrate.js.map +1 -0
  23. package/dist/commands/smart.d.ts +23 -0
  24. package/dist/commands/smart.d.ts.map +1 -0
  25. package/dist/commands/smart.js +1024 -0
  26. package/dist/commands/smart.js.map +1 -0
  27. package/dist/commands/whoami.d.ts +14 -0
  28. package/dist/commands/whoami.d.ts.map +1 -0
  29. package/dist/commands/whoami.js +65 -0
  30. package/dist/commands/whoami.js.map +1 -0
  31. package/dist/index.js +165 -40
  32. package/dist/index.js.map +1 -1
  33. package/dist/services/analytics.d.ts +108 -0
  34. package/dist/services/analytics.d.ts.map +1 -0
  35. package/dist/services/analytics.js +305 -0
  36. package/dist/services/analytics.js.map +1 -0
  37. package/dist/services/api-client.d.ts +159 -0
  38. package/dist/services/api-client.d.ts.map +1 -1
  39. package/dist/services/api-client.js +192 -10
  40. package/dist/services/api-client.js.map +1 -1
  41. package/dist/services/auth-manager.d.ts +14 -0
  42. package/dist/services/auth-manager.d.ts.map +1 -1
  43. package/dist/services/auth-manager.js +30 -0
  44. package/dist/services/auth-manager.js.map +1 -1
  45. package/dist/services/cache-manager.d.ts +62 -22
  46. package/dist/services/cache-manager.d.ts.map +1 -1
  47. package/dist/services/cache-manager.js +116 -30
  48. package/dist/services/cache-manager.js.map +1 -1
  49. package/dist/services/device-id.d.ts +20 -0
  50. package/dist/services/device-id.d.ts.map +1 -0
  51. package/dist/services/device-id.js +70 -0
  52. package/dist/services/device-id.js.map +1 -0
  53. package/dist/services/package-json.d.ts +44 -5
  54. package/dist/services/package-json.d.ts.map +1 -1
  55. package/dist/services/package-json.js +273 -20
  56. package/dist/services/package-json.js.map +1 -1
  57. package/dist/services/payment-flow.d.ts +108 -0
  58. package/dist/services/payment-flow.d.ts.map +1 -0
  59. package/dist/services/payment-flow.js +476 -0
  60. package/dist/services/payment-flow.js.map +1 -0
  61. package/dist/services/session-manager.d.ts +92 -0
  62. package/dist/services/session-manager.d.ts.map +1 -0
  63. package/dist/services/session-manager.js +218 -0
  64. package/dist/services/session-manager.js.map +1 -0
  65. package/dist/utils/design-system.d.ts +90 -0
  66. package/dist/utils/design-system.d.ts.map +1 -0
  67. package/dist/utils/design-system.js +338 -0
  68. package/dist/utils/design-system.js.map +1 -0
  69. package/dist/utils/output.d.ts +48 -1
  70. package/dist/utils/output.d.ts.map +1 -1
  71. package/dist/utils/output.js +180 -17
  72. package/dist/utils/output.js.map +1 -1
  73. package/dist/utils/print.d.ts +116 -0
  74. package/dist/utils/print.d.ts.map +1 -0
  75. package/dist/utils/print.js +190 -0
  76. package/dist/utils/print.js.map +1 -0
  77. package/package.json +13 -2
  78. package/dist/commands/analyze.d.ts +0 -18
  79. package/dist/commands/analyze.d.ts.map +0 -1
  80. package/dist/commands/analyze.js +0 -404
  81. package/dist/commands/analyze.js.map +0 -1
  82. package/dist/services/gitignore.d.ts +0 -19
  83. package/dist/services/gitignore.d.ts.map +0 -1
  84. package/dist/services/gitignore.js +0 -64
  85. package/dist/services/gitignore.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import * as fs from 'fs/promises';
2
2
  import * as path from 'path';
3
+ import { VersionUtils } from '@depfixer/shared';
3
4
  /**
4
5
  * Package.json Service
5
6
  * Handles reading, sanitizing, and writing package.json files
@@ -43,45 +44,292 @@ export class PackageJsonService {
43
44
  };
44
45
  }
45
46
  /**
46
- * Apply solution to package.json (creates package.json.fixed)
47
+ * Apply surgical fixes to package.json
48
+ * Only modifies version strings, preserves all formatting
49
+ * Creates backup before modifying
50
+ * Also handles package removals (deprecated packages) and engine updates
47
51
  */
48
- async applyFixes(dir, solution) {
49
- const { content, parsed } = await this.read(dir);
50
- const fixed = { ...parsed };
51
- // Apply dependency fixes
52
- if (fixed.dependencies) {
53
- for (const [pkg, version] of Object.entries(solution.dependencies)) {
54
- if (fixed.dependencies[pkg]) {
55
- fixed.dependencies[pkg] = version;
52
+ async applySurgicalFixes(dir, changes, removals, engines) {
53
+ const filePath = path.join(dir, 'package.json');
54
+ let content = await fs.readFile(filePath, 'utf-8');
55
+ // Create backup first
56
+ const backupPath = path.join(dir, 'package.json.bak');
57
+ await fs.writeFile(backupPath, content, 'utf-8');
58
+ let applied = 0;
59
+ let removed = 0;
60
+ let enginesUpdated = 0;
61
+ // Apply each version change surgically
62
+ for (const change of changes) {
63
+ const section = change.type === 'devDependency' ? 'devDependencies' : 'dependencies';
64
+ const result = this.replaceVersionInSection(content, section, change.package, change.from, change.to);
65
+ if (result.replaced) {
66
+ content = result.content;
67
+ applied++;
68
+ }
69
+ }
70
+ // Apply removals (delete deprecated packages)
71
+ if (removals && removals.length > 0) {
72
+ for (const removal of removals) {
73
+ const section = removal.type === 'devDependency' ? 'devDependencies' : 'dependencies';
74
+ const result = this.removePackageFromSection(content, section, removal.package);
75
+ if (result.removed) {
76
+ content = result.content;
77
+ removed++;
56
78
  }
57
79
  }
58
80
  }
59
- // Apply devDependency fixes
60
- if (fixed.devDependencies) {
61
- for (const [pkg, version] of Object.entries(solution.devDependencies)) {
62
- if (fixed.devDependencies[pkg]) {
63
- fixed.devDependencies[pkg] = version;
81
+ // Apply engine updates (Node.js/npm requirements)
82
+ if (engines && Object.keys(engines).length > 0) {
83
+ const result = this.updateEngines(content, engines);
84
+ content = result.content;
85
+ enginesUpdated = result.updated;
86
+ }
87
+ // Write back modified content
88
+ await fs.writeFile(filePath, content, 'utf-8');
89
+ return { backupPath, applied, removed, enginesUpdated };
90
+ }
91
+ /**
92
+ * Replace a package version within a specific section of package.json
93
+ * Preserves all formatting and only changes the version string
94
+ */
95
+ replaceVersionInSection(content, section, packageName, fromVersion, toVersion) {
96
+ // Find the section in the content
97
+ const sectionRegex = new RegExp(`"${section}"\\s*:\\s*\\{`, 'g');
98
+ const sectionMatch = sectionRegex.exec(content);
99
+ if (!sectionMatch) {
100
+ return { content, replaced: false };
101
+ }
102
+ const sectionStart = sectionMatch.index;
103
+ // Find the closing brace for this section (handle nested objects)
104
+ let braceCount = 0;
105
+ let sectionEnd = sectionStart;
106
+ let inSection = false;
107
+ for (let i = sectionStart; i < content.length; i++) {
108
+ if (content[i] === '{') {
109
+ braceCount++;
110
+ inSection = true;
111
+ }
112
+ else if (content[i] === '}') {
113
+ braceCount--;
114
+ if (inSection && braceCount === 0) {
115
+ sectionEnd = i + 1;
116
+ break;
64
117
  }
65
118
  }
66
119
  }
67
- // Write to package.json.fixed
120
+ // Extract the section content
121
+ const sectionContent = content.substring(sectionStart, sectionEnd);
122
+ // Escape special regex characters in package name and version
123
+ const escapedPkgName = packageName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
124
+ const escapedFromVersion = fromVersion.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
125
+ // Pattern to match: "package-name": "version" (with flexible whitespace)
126
+ // Captures the package declaration and replaces only the version
127
+ const packagePattern = new RegExp(`("${escapedPkgName}"\\s*:\\s*")${escapedFromVersion}(")`);
128
+ const match = packagePattern.exec(sectionContent);
129
+ if (!match) {
130
+ return { content, replaced: false };
131
+ }
132
+ // Replace the version in the section
133
+ const newSectionContent = sectionContent.replace(packagePattern, `$1${toVersion}$2`);
134
+ // Reconstruct the full content
135
+ const newContent = content.substring(0, sectionStart) + newSectionContent + content.substring(sectionEnd);
136
+ return { content: newContent, replaced: true };
137
+ }
138
+ /**
139
+ * Remove a package entry from a specific section of package.json
140
+ * Preserves all formatting and removes only the package line
141
+ */
142
+ removePackageFromSection(content, section, packageName) {
143
+ // Escape special regex characters in package name
144
+ const escapedPkgName = packageName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
145
+ // Split content into lines to work line by line
146
+ const lines = content.split('\n');
147
+ let inSection = false;
148
+ let braceCount = 0;
149
+ let packageLineIndex = -1;
150
+ let hasTrailingComma = false;
151
+ // Find the package line within the section
152
+ for (let i = 0; i < lines.length; i++) {
153
+ const line = lines[i];
154
+ // Check if entering the section
155
+ if (line.includes(`"${section}"`)) {
156
+ inSection = true;
157
+ }
158
+ if (inSection) {
159
+ // Count braces
160
+ braceCount += (line.match(/\{/g) || []).length;
161
+ braceCount -= (line.match(/\}/g) || []).length;
162
+ // Check if this line contains the package
163
+ const packagePattern = new RegExp(`^\\s*"${escapedPkgName}"\\s*:\\s*"[^"]*"\\s*,?\\s*$`);
164
+ if (packagePattern.test(line)) {
165
+ packageLineIndex = i;
166
+ hasTrailingComma = line.trimEnd().endsWith(',');
167
+ break;
168
+ }
169
+ // Exit section if braces are balanced
170
+ if (braceCount === 0 && i > 0) {
171
+ break;
172
+ }
173
+ }
174
+ }
175
+ if (packageLineIndex === -1) {
176
+ return { content, removed: false };
177
+ }
178
+ // Remove the package line
179
+ lines.splice(packageLineIndex, 1);
180
+ // If this line didn't have a trailing comma, check if we need to remove comma from previous line
181
+ if (!hasTrailingComma && packageLineIndex > 0) {
182
+ const prevLine = lines[packageLineIndex - 1];
183
+ // Only remove comma if the previous line has a value (not opening brace)
184
+ if (prevLine.trimEnd().endsWith(',')) {
185
+ lines[packageLineIndex - 1] = prevLine.replace(/,(\s*)$/, '$1');
186
+ }
187
+ }
188
+ return { content: lines.join('\n'), removed: true };
189
+ }
190
+ /**
191
+ * Update or add engines section in package.json
192
+ * Preserves formatting when updating existing engines
193
+ * Adds engines section after version field if not present
194
+ */
195
+ updateEngines(content, engines) {
196
+ let updated = 0;
197
+ let newContent = content;
198
+ // Check if engines section exists
199
+ const enginesRegex = /"engines"\s*:\s*\{/;
200
+ const hasEngines = enginesRegex.test(content);
201
+ if (hasEngines) {
202
+ // Update existing engines section
203
+ // Find the engines section
204
+ const enginesMatch = enginesRegex.exec(content);
205
+ if (enginesMatch) {
206
+ const enginesStart = enginesMatch.index;
207
+ // Find closing brace for engines section
208
+ let braceCount = 0;
209
+ let enginesEnd = enginesStart;
210
+ let inSection = false;
211
+ for (let i = enginesStart; i < content.length; i++) {
212
+ if (content[i] === '{') {
213
+ braceCount++;
214
+ inSection = true;
215
+ }
216
+ else if (content[i] === '}') {
217
+ braceCount--;
218
+ if (inSection && braceCount === 0) {
219
+ enginesEnd = i + 1;
220
+ break;
221
+ }
222
+ }
223
+ }
224
+ // Extract engines section content
225
+ const enginesContent = content.substring(enginesStart, enginesEnd);
226
+ // Update each engine value
227
+ let newEnginesContent = enginesContent;
228
+ for (const [key, value] of Object.entries(engines)) {
229
+ if (!value)
230
+ continue;
231
+ const engineKeyPattern = new RegExp(`("${key}"\\s*:\\s*)"[^"]*"`);
232
+ if (engineKeyPattern.test(newEnginesContent)) {
233
+ // Update existing key
234
+ newEnginesContent = newEnginesContent.replace(engineKeyPattern, `$1"${value}"`);
235
+ updated++;
236
+ }
237
+ else {
238
+ // Add new key to engines section
239
+ // Find position before closing brace
240
+ const closingBraceIndex = newEnginesContent.lastIndexOf('}');
241
+ const beforeBrace = newEnginesContent.substring(0, closingBraceIndex);
242
+ const afterBrace = newEnginesContent.substring(closingBraceIndex);
243
+ // Check if there are existing entries (need comma)
244
+ const hasEntries = /"[^"]+"\s*:\s*"[^"]*"/.test(beforeBrace);
245
+ const indent = ' '; // Standard 2-space indent for nested properties
246
+ if (hasEntries) {
247
+ // Add comma after last entry and new entry
248
+ newEnginesContent = beforeBrace.replace(/(\s*)$/, `,\n${indent}"${key}": "${value}"$1`) + afterBrace;
249
+ }
250
+ else {
251
+ // First entry
252
+ newEnginesContent = beforeBrace + `\n${indent}"${key}": "${value}"\n ` + afterBrace;
253
+ }
254
+ updated++;
255
+ }
256
+ }
257
+ newContent = content.substring(0, enginesStart) + newEnginesContent + content.substring(enginesEnd);
258
+ }
259
+ }
260
+ else {
261
+ // Add new engines section after "version" field (or after "name" if no version)
262
+ const enginesObj = {};
263
+ for (const [key, value] of Object.entries(engines)) {
264
+ if (value) {
265
+ enginesObj[key] = value;
266
+ updated++;
267
+ }
268
+ }
269
+ if (updated > 0) {
270
+ // Build engines string with proper formatting
271
+ const enginesEntries = Object.entries(enginesObj)
272
+ .map(([k, v]) => ` "${k}": "${v}"`)
273
+ .join(',\n');
274
+ const enginesStr = `"engines": {\n${enginesEntries}\n }`;
275
+ // Find insertion point - after "version" or "name"
276
+ const versionPattern = /"version"\s*:\s*"[^"]*"/;
277
+ const namePattern = /"name"\s*:\s*"[^"]*"/;
278
+ let insertMatch = versionPattern.exec(content);
279
+ if (!insertMatch) {
280
+ insertMatch = namePattern.exec(content);
281
+ }
282
+ if (insertMatch) {
283
+ const insertPoint = insertMatch.index + insertMatch[0].length;
284
+ // Check if there's a comma after
285
+ const afterInsert = content.substring(insertPoint);
286
+ const hasCommaAfter = /^\s*,/.test(afterInsert);
287
+ if (hasCommaAfter) {
288
+ // Insert after the comma
289
+ const commaMatch = /^(\s*,)/.exec(afterInsert);
290
+ if (commaMatch) {
291
+ const afterComma = insertPoint + commaMatch[0].length;
292
+ newContent = content.substring(0, afterComma) + '\n ' + enginesStr + ',' + content.substring(afterComma);
293
+ }
294
+ }
295
+ else {
296
+ // Add comma and insert
297
+ newContent = content.substring(0, insertPoint) + ',\n ' + enginesStr + content.substring(insertPoint);
298
+ }
299
+ }
300
+ }
301
+ }
302
+ return { content: newContent, updated };
303
+ }
304
+ /**
305
+ * Write a modified package.json to package.json.fixed
306
+ * Preserves original file, allows user to review before applying
307
+ */
308
+ async writeFixed(dir, packageJson) {
68
309
  const fixedPath = path.join(dir, 'package.json.fixed');
69
- await fs.writeFile(fixedPath, JSON.stringify(fixed, null, 2) + '\n', 'utf-8');
310
+ const content = JSON.stringify(packageJson, null, 2);
311
+ await fs.writeFile(fixedPath, content, 'utf-8');
70
312
  return fixedPath;
71
313
  }
72
314
  /**
73
315
  * Get list of changes that would be applied
316
+ * Skips unknown versions and REMOVE versions (matches web algorithm)
74
317
  */
75
318
  getChanges(original, solution) {
76
319
  const changes = [];
77
320
  // Check dependencies
78
321
  if (original.dependencies) {
79
322
  for (const [pkg, version] of Object.entries(solution.dependencies)) {
80
- if (original.dependencies[pkg] && original.dependencies[pkg] !== version) {
323
+ const versionStr = version;
324
+ // Skip unknown/invalid versions and REMOVE versions (handled separately)
325
+ if (VersionUtils.isUnknownVersion(versionStr) || VersionUtils.isRemoveVersion(versionStr)) {
326
+ continue;
327
+ }
328
+ if (original.dependencies[pkg] && original.dependencies[pkg] !== versionStr) {
81
329
  changes.push({
82
330
  package: pkg,
83
331
  from: original.dependencies[pkg],
84
- to: version,
332
+ to: VersionUtils.formatVersion(versionStr),
85
333
  type: 'dependency',
86
334
  });
87
335
  }
@@ -90,11 +338,16 @@ export class PackageJsonService {
90
338
  // Check devDependencies
91
339
  if (original.devDependencies) {
92
340
  for (const [pkg, version] of Object.entries(solution.devDependencies)) {
93
- if (original.devDependencies[pkg] && original.devDependencies[pkg] !== version) {
341
+ const versionStr = version;
342
+ // Skip unknown/invalid versions and REMOVE versions (handled separately)
343
+ if (VersionUtils.isUnknownVersion(versionStr) || VersionUtils.isRemoveVersion(versionStr)) {
344
+ continue;
345
+ }
346
+ if (original.devDependencies[pkg] && original.devDependencies[pkg] !== versionStr) {
94
347
  changes.push({
95
348
  package: pkg,
96
349
  from: original.devDependencies[pkg],
97
- to: version,
350
+ to: VersionUtils.formatVersion(versionStr),
98
351
  type: 'devDependency',
99
352
  });
100
353
  }
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/services/package-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/services/package-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Payment Flow Service
3
+ *
4
+ * Handles the payment/credit flow for CLI:
5
+ * - Auth loop (device code login)
6
+ * - Balance checking
7
+ * - Balance polling with timeout
8
+ * - Credit deduction
9
+ */
10
+ export declare class PaymentFlowService {
11
+ private readonly apiClient;
12
+ private readonly authManager;
13
+ private readonly webUrl;
14
+ constructor();
15
+ /**
16
+ * Run the complete payment flow:
17
+ * 1. Check auth (login if needed)
18
+ * 2. Check balance (wait for top-up if needed)
19
+ * 3. Return user info if ready to proceed
20
+ */
21
+ ensureReadyToPay(cost: number): Promise<{
22
+ ready: boolean;
23
+ name?: string;
24
+ email?: string;
25
+ credits?: number;
26
+ hasActivePass?: boolean;
27
+ wasAlreadyLoggedIn?: boolean;
28
+ }>;
29
+ /**
30
+ * Ensure user is authenticated
31
+ * Runs device code flow if not logged in
32
+ * Returns user info on success
33
+ */
34
+ ensureAuthenticated(): Promise<{
35
+ success: boolean;
36
+ email?: string;
37
+ wasAlreadyLoggedIn?: boolean;
38
+ }>;
39
+ /**
40
+ * Prompt user to choose login or register with arrow key selection
41
+ */
42
+ private promptAuthChoice;
43
+ /**
44
+ * Get current balance info
45
+ */
46
+ getBalanceInfo(): Promise<{
47
+ credits: number;
48
+ hasActivePass: boolean;
49
+ name?: string;
50
+ email?: string;
51
+ } | null>;
52
+ /**
53
+ * Run device code authentication flow
54
+ * Returns user info on success
55
+ */
56
+ private runDeviceCodeFlow;
57
+ /**
58
+ * Simple Enter/Esc prompt (Enter = Yes, Esc = No)
59
+ */
60
+ private promptYesNo;
61
+ /**
62
+ * Ensure user has sufficient credits
63
+ * Opens pricing page and polls if insufficient
64
+ * Note: Credit check UI should be shown before calling this method
65
+ */
66
+ ensureSufficientBalance(cost: number): Promise<boolean>;
67
+ /**
68
+ * Wait for user to top up their balance
69
+ * Opens pricing page and polls for 5 minutes
70
+ */
71
+ private waitForTopUp;
72
+ /**
73
+ * Deduct credits for an analysis
74
+ * Returns solution and full analysis data for CLI display
75
+ */
76
+ deductCredits(analysisId: string, hasActivePass?: boolean): Promise<{
77
+ success: boolean;
78
+ solution?: {
79
+ dependencies: Record<string, string>;
80
+ devDependencies: Record<string, string>;
81
+ removals: Array<{
82
+ package: string;
83
+ reason: string;
84
+ type: 'dependency' | 'devDependency';
85
+ }>;
86
+ engines?: {
87
+ node?: string;
88
+ npm?: string;
89
+ };
90
+ };
91
+ conflicts?: any[];
92
+ missingDependencies?: any[];
93
+ deprecations?: any[];
94
+ healthScore?: number;
95
+ summary?: {
96
+ critical: number;
97
+ high: number;
98
+ medium: number;
99
+ low: number;
100
+ };
101
+ error?: string;
102
+ }>;
103
+ /**
104
+ * Sleep helper
105
+ */
106
+ private sleep;
107
+ }
108
+ //# sourceMappingURL=payment-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-flow.d.ts","sourceRoot":"","sources":["../../src/services/payment-flow.ts"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAQhC;;;;;OAKG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;IA0BF;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAsCxG;;OAEG;YACW,gBAAgB;IAsF9B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAYlH;;;OAGG;YACW,iBAAiB;IAmG/B;;OAEG;YACW,WAAW;IAuDzB;;;;OAIG;IACG,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B7D;;;OAGG;YACW,YAAY;IAqF1B;;;OAGG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QACxE,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE;YACT,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAAA;aAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,EAAE;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,GAAG,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SAC3C,CAAC;QAEF,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;QAClB,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC5B,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAmCF;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}