@intutic/cli 0.1.1 → 0.2.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 (162) hide show
  1. package/dist/cli.js +309 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/benchmark.d.ts +31 -0
  4. package/dist/commands/benchmark.d.ts.map +1 -0
  5. package/dist/commands/benchmark.js +211 -0
  6. package/dist/commands/benchmark.js.map +1 -0
  7. package/dist/commands/connect.d.ts +8 -6
  8. package/dist/commands/connect.d.ts.map +1 -1
  9. package/dist/commands/connect.js +322 -82
  10. package/dist/commands/connect.js.map +1 -1
  11. package/dist/commands/enterprise-install.d.ts +36 -0
  12. package/dist/commands/enterprise-install.d.ts.map +1 -0
  13. package/dist/commands/enterprise-install.js +289 -0
  14. package/dist/commands/enterprise-install.js.map +1 -0
  15. package/dist/commands/eval.d.ts +13 -0
  16. package/dist/commands/eval.d.ts.map +1 -0
  17. package/dist/commands/eval.js +67 -0
  18. package/dist/commands/eval.js.map +1 -0
  19. package/dist/commands/exec.d.ts +34 -0
  20. package/dist/commands/exec.d.ts.map +1 -0
  21. package/dist/commands/exec.js +114 -0
  22. package/dist/commands/exec.js.map +1 -0
  23. package/dist/commands/exec.test.d.ts +2 -0
  24. package/dist/commands/exec.test.d.ts.map +1 -0
  25. package/dist/commands/exec.test.js +29 -0
  26. package/dist/commands/exec.test.js.map +1 -0
  27. package/dist/commands/export.d.ts +21 -0
  28. package/dist/commands/export.d.ts.map +1 -0
  29. package/dist/commands/export.js +116 -0
  30. package/dist/commands/export.js.map +1 -0
  31. package/dist/commands/init.d.ts.map +1 -1
  32. package/dist/commands/init.js +28 -2
  33. package/dist/commands/init.js.map +1 -1
  34. package/dist/commands/install-daemon.d.ts +61 -0
  35. package/dist/commands/install-daemon.d.ts.map +1 -0
  36. package/dist/commands/install-daemon.js +691 -0
  37. package/dist/commands/install-daemon.js.map +1 -0
  38. package/dist/commands/install-daemon.test.d.ts +2 -0
  39. package/dist/commands/install-daemon.test.d.ts.map +1 -0
  40. package/dist/commands/install-daemon.test.js +93 -0
  41. package/dist/commands/install-daemon.test.js.map +1 -0
  42. package/dist/commands/login.js +2 -2
  43. package/dist/commands/login.js.map +1 -1
  44. package/dist/commands/logout.js +1 -1
  45. package/dist/commands/logout.js.map +1 -1
  46. package/dist/commands/mdm.d.ts +23 -0
  47. package/dist/commands/mdm.d.ts.map +1 -0
  48. package/dist/commands/mdm.js +134 -0
  49. package/dist/commands/mdm.js.map +1 -0
  50. package/dist/commands/sop-audit.d.ts +17 -0
  51. package/dist/commands/sop-audit.d.ts.map +1 -0
  52. package/dist/commands/sop-audit.js +136 -0
  53. package/dist/commands/sop-audit.js.map +1 -0
  54. package/dist/commands/status.d.ts.map +1 -1
  55. package/dist/commands/status.js +53 -1
  56. package/dist/commands/status.js.map +1 -1
  57. package/dist/commands/syncContext.d.ts +18 -0
  58. package/dist/commands/syncContext.d.ts.map +1 -0
  59. package/dist/commands/syncContext.js +37 -0
  60. package/dist/commands/syncContext.js.map +1 -0
  61. package/dist/commands/traces.d.ts +13 -0
  62. package/dist/commands/traces.d.ts.map +1 -1
  63. package/dist/commands/traces.js +96 -2
  64. package/dist/commands/traces.js.map +1 -1
  65. package/dist/commands/whoami.js +1 -1
  66. package/dist/commands/whoami.js.map +1 -1
  67. package/dist/config/keychain.d.ts +28 -0
  68. package/dist/config/keychain.d.ts.map +1 -0
  69. package/dist/config/keychain.js +99 -0
  70. package/dist/config/keychain.js.map +1 -0
  71. package/dist/config/store.d.ts +3 -3
  72. package/dist/config/store.d.ts.map +1 -1
  73. package/dist/config/store.js +30 -6
  74. package/dist/config/store.js.map +1 -1
  75. package/dist/harness/aider.d.ts +4 -3
  76. package/dist/harness/aider.d.ts.map +1 -1
  77. package/dist/harness/aider.js +13 -27
  78. package/dist/harness/aider.js.map +1 -1
  79. package/dist/harness/claudeDesktop.d.ts +18 -0
  80. package/dist/harness/claudeDesktop.d.ts.map +1 -0
  81. package/dist/harness/claudeDesktop.js +69 -0
  82. package/dist/harness/claudeDesktop.js.map +1 -0
  83. package/dist/harness/cline.d.ts +13 -0
  84. package/dist/harness/cline.d.ts.map +1 -0
  85. package/dist/harness/cline.js +75 -0
  86. package/dist/harness/cline.js.map +1 -0
  87. package/dist/harness/codex.d.ts +4 -4
  88. package/dist/harness/codex.d.ts.map +1 -1
  89. package/dist/harness/codex.js +33 -21
  90. package/dist/harness/codex.js.map +1 -1
  91. package/dist/harness/continue.d.ts +14 -0
  92. package/dist/harness/continue.d.ts.map +1 -0
  93. package/dist/harness/continue.js +97 -0
  94. package/dist/harness/continue.js.map +1 -0
  95. package/dist/harness/cursor.d.ts +13 -1
  96. package/dist/harness/cursor.d.ts.map +1 -1
  97. package/dist/harness/cursor.js +59 -3
  98. package/dist/harness/cursor.js.map +1 -1
  99. package/dist/harness/detector.d.ts +1 -1
  100. package/dist/harness/detector.d.ts.map +1 -1
  101. package/dist/harness/detector.js +13 -1
  102. package/dist/harness/detector.js.map +1 -1
  103. package/dist/harness/goose.d.ts +13 -0
  104. package/dist/harness/goose.d.ts.map +1 -0
  105. package/dist/harness/goose.js +45 -0
  106. package/dist/harness/goose.js.map +1 -0
  107. package/dist/harness/n8n.d.ts +8 -4
  108. package/dist/harness/n8n.d.ts.map +1 -1
  109. package/dist/harness/n8n.js +108 -13
  110. package/dist/harness/n8n.js.map +1 -1
  111. package/dist/harness/openWebUI.d.ts +13 -0
  112. package/dist/harness/openWebUI.d.ts.map +1 -0
  113. package/dist/harness/openWebUI.js +25 -0
  114. package/dist/harness/openWebUI.js.map +1 -0
  115. package/dist/harness/openhands.d.ts +3 -3
  116. package/dist/harness/openhands.d.ts.map +1 -1
  117. package/dist/harness/openhands.js +13 -9
  118. package/dist/harness/openhands.js.map +1 -1
  119. package/dist/harness/rooCode.d.ts +14 -0
  120. package/dist/harness/rooCode.d.ts.map +1 -0
  121. package/dist/harness/rooCode.js +77 -0
  122. package/dist/harness/rooCode.js.map +1 -0
  123. package/dist/harness/types.d.ts.map +1 -1
  124. package/dist/harness/types.js +6 -0
  125. package/dist/harness/types.js.map +1 -1
  126. package/dist/harness/vscodeSettingsWriter.d.ts +40 -0
  127. package/dist/harness/vscodeSettingsWriter.d.ts.map +1 -0
  128. package/dist/harness/vscodeSettingsWriter.js +116 -0
  129. package/dist/harness/vscodeSettingsWriter.js.map +1 -0
  130. package/dist/harness/windsurf.d.ts +13 -1
  131. package/dist/harness/windsurf.d.ts.map +1 -1
  132. package/dist/harness/windsurf.js +58 -3
  133. package/dist/harness/windsurf.js.map +1 -1
  134. package/dist/lib/api.d.ts +2 -0
  135. package/dist/lib/api.d.ts.map +1 -1
  136. package/dist/lib/api.js +3 -0
  137. package/dist/lib/api.js.map +1 -1
  138. package/dist/lib/envInjector.d.ts +24 -0
  139. package/dist/lib/envInjector.d.ts.map +1 -0
  140. package/dist/lib/envInjector.js +146 -0
  141. package/dist/lib/envInjector.js.map +1 -0
  142. package/dist/lib/envInjector.test.d.ts +2 -0
  143. package/dist/lib/envInjector.test.d.ts.map +1 -0
  144. package/dist/lib/envInjector.test.js +32 -0
  145. package/dist/lib/envInjector.test.js.map +1 -0
  146. package/dist/lib/gitHooks.d.ts +19 -0
  147. package/dist/lib/gitHooks.d.ts.map +1 -0
  148. package/dist/lib/gitHooks.js +58 -0
  149. package/dist/lib/gitHooks.js.map +1 -0
  150. package/dist/lib/onboarding.d.ts +17 -0
  151. package/dist/lib/onboarding.d.ts.map +1 -0
  152. package/dist/lib/onboarding.js +164 -0
  153. package/dist/lib/onboarding.js.map +1 -0
  154. package/dist/lib/process.d.ts +53 -0
  155. package/dist/lib/process.d.ts.map +1 -0
  156. package/dist/lib/process.js +181 -0
  157. package/dist/lib/process.js.map +1 -0
  158. package/dist/lib/process.test.d.ts +2 -0
  159. package/dist/lib/process.test.d.ts.map +1 -0
  160. package/dist/lib/process.test.js +44 -0
  161. package/dist/lib/process.test.js.map +1 -0
  162. package/package.json +10 -5
@@ -0,0 +1,116 @@
1
+ /**
2
+ * `intutic export` — Manage warehouse exports from the CLI.
3
+ *
4
+ * E4 — Data Warehouse Export / CLI
5
+ * @module
6
+ */
7
+ import { log } from '../lib/logger.js';
8
+ import { loadCredentials } from '../config/store.js';
9
+ import { resolveControlPlaneUrl } from '../config/paths.js';
10
+ import { createApiClient } from '../lib/api.js';
11
+ export async function runExportConfig(opts) {
12
+ const creds = await loadCredentials();
13
+ if (!creds) {
14
+ log.error('Not authenticated. Run `intutic login` first.');
15
+ process.exit(1);
16
+ }
17
+ const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
18
+ const client = createApiClient(controlPlaneUrl, creds.apiKey);
19
+ // If adding a new target
20
+ if (opts.provider && opts.bucket && opts.credentials) {
21
+ try {
22
+ log.info(`Adding new warehouse export target: ${opts.bucket} (${opts.provider})...`);
23
+ const res = await client.post('/api/v1/warehouse/targets', {
24
+ provider: opts.provider,
25
+ bucketName: opts.bucket,
26
+ pathPrefix: opts.prefix,
27
+ credentials: opts.credentials,
28
+ s3Region: opts.region,
29
+ defaultFormat: opts.format,
30
+ });
31
+ log.success(`Export target created successfully. Target ID: ${res.targetId}`);
32
+ process.exit(0);
33
+ }
34
+ catch (err) {
35
+ log.error(`Failed to create export target: ${err.message || String(err)}`);
36
+ process.exit(1);
37
+ }
38
+ }
39
+ // Otherwise, list configured targets
40
+ try {
41
+ const { targets } = await client.get('/api/v1/warehouse/targets');
42
+ log.header('Intutic — Data Warehouse Export Targets');
43
+ if (targets.length === 0) {
44
+ log.info('No export targets configured. Use options to add one: --provider <gcs|s3> --bucket <name> --credentials <creds>');
45
+ }
46
+ else {
47
+ for (const t of targets) {
48
+ log.info(`Target ID: ${t.targetId}`);
49
+ log.field(' Provider', t.provider.toUpperCase());
50
+ log.field(' Bucket Name', t.bucketName);
51
+ log.field(' Path Prefix', t.pathPrefix || '/');
52
+ if (t.s3Region)
53
+ log.field(' S3 Region', t.s3Region);
54
+ log.field(' Default Format', t.defaultFormat);
55
+ log.field(' Active', t.isActive ? 'Yes' : 'No');
56
+ console.log('');
57
+ }
58
+ }
59
+ process.exit(0);
60
+ }
61
+ catch (err) {
62
+ log.error(`Failed to fetch export targets: ${err.message || String(err)}`);
63
+ process.exit(1);
64
+ }
65
+ }
66
+ export async function runExportStatus(opts) {
67
+ const creds = await loadCredentials();
68
+ if (!creds) {
69
+ log.error('Not authenticated. Run `intutic login` first.');
70
+ process.exit(1);
71
+ }
72
+ const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
73
+ const client = createApiClient(controlPlaneUrl, creds.apiKey);
74
+ // Trigger export if requested
75
+ if (opts.triggerTarget) {
76
+ try {
77
+ log.info(`Triggering export for target ${opts.triggerTarget}...`);
78
+ const res = await client.post('/api/v1/warehouse/jobs', {
79
+ targetId: opts.triggerTarget,
80
+ format: opts.format,
81
+ });
82
+ log.success(`Export job successfully queued. Job ID: ${res.jobId}`);
83
+ process.exit(0);
84
+ }
85
+ catch (err) {
86
+ log.error(`Failed to trigger export: ${err.message || String(err)}`);
87
+ process.exit(1);
88
+ }
89
+ }
90
+ // Otherwise, list jobs
91
+ try {
92
+ const { jobs } = await client.get('/api/v1/warehouse/jobs');
93
+ log.header('Intutic — Data Warehouse Export Jobs');
94
+ if (jobs.length === 0) {
95
+ log.info('No export jobs found.');
96
+ }
97
+ else {
98
+ for (const j of jobs) {
99
+ log.info(`Job ID: ${j.jobId}`);
100
+ log.field(' Target ID', j.targetId);
101
+ log.field(' Status', j.status.toUpperCase());
102
+ log.field(' Format', j.format);
103
+ log.field(' Records Exported', j.recordsExported !== null ? String(j.recordsExported) : '—');
104
+ log.field(' Bytes Exported', j.bytesExported !== null ? String(j.bytesExported) : '—');
105
+ log.field(' Created At', new Date(j.createdAt).toLocaleString());
106
+ console.log('');
107
+ }
108
+ }
109
+ process.exit(0);
110
+ }
111
+ catch (err) {
112
+ log.error(`Failed to fetch export jobs: ${err.message || String(err)}`);
113
+ process.exit(1);
114
+ }
115
+ }
116
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2BH,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDpE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4BH,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFpE"}
@@ -12,6 +12,7 @@ import { join, resolve, dirname } from 'node:path';
12
12
  import { log } from '../lib/logger.js';
13
13
  import { loadCredentials, saveConfig } from '../config/store.js';
14
14
  import { detectHarnesses } from '../harness/detector.js';
15
+ import { printOnboardingGuide } from '../lib/onboarding.js';
15
16
  import pc from 'picocolors';
16
17
  /**
17
18
  * Walk up from cwd looking for .git/ or package.json to find workspace root.
@@ -60,7 +61,7 @@ export async function runInit(opts) {
60
61
  log.success(`Detected ${detected.length} harness${detected.length > 1 ? 'es' : ''}`);
61
62
  }
62
63
  // 3. Check credentials
63
- const creds = loadCredentials();
64
+ const creds = await loadCredentials();
64
65
  if (!creds) {
65
66
  log.warn('Not authenticated. Run `intutic login` to connect to the control plane.');
66
67
  }
@@ -75,10 +76,35 @@ export async function runInit(opts) {
75
76
  configVersion: 0,
76
77
  devMode,
77
78
  });
79
+ // 5. Prompt for Git hook onboarding
80
+ const readline = await import('node:readline');
81
+ const rl = readline.createInterface({
82
+ input: process.stdin,
83
+ output: process.stdout,
84
+ });
85
+ const wantHooks = await new Promise((resolve) => {
86
+ rl.question('Would you like to install Git sync hooks (post-commit, post-checkout)? [Y/n]: ', (answer) => {
87
+ rl.close();
88
+ const normalized = answer.trim().toLowerCase();
89
+ if (normalized === '' || normalized === 'y' || normalized === 'yes') {
90
+ resolve(true);
91
+ }
92
+ else {
93
+ resolve(false);
94
+ }
95
+ });
96
+ });
97
+ if (wantHooks) {
98
+ const { installGitHooks } = await import('../lib/gitHooks.js');
99
+ await installGitHooks(workspaceRoot);
100
+ }
78
101
  log.success('Workspace initialized.');
79
102
  if (devMode) {
80
103
  log.dim('Dev mode: using local control plane (http://localhost:3001)');
81
104
  }
82
- log.dim('Run `intutic connect` to start syncing governance rules.');
105
+ // Print onboarding setup instructions for detected harnesses
106
+ const detectedHarnessTypes = detected.map((h) => h.type);
107
+ const apiKey = creds?.apiKey;
108
+ printOnboardingGuide(detectedHarnessTypes, apiKey, devMode);
83
109
  }
84
110
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * install-daemon.ts — System-level sync-daemon & mcp-daemon persistence installer.
3
+ *
4
+ * Registers the Intutic sync-daemon or mcp-daemon as system-level services so they
5
+ * auto-start on login/boot and restart automatically on any exit.
6
+ *
7
+ * Platform support:
8
+ * - macOS : LaunchAgent/LaunchDaemon (LaunchDaemon requires root/system flag)
9
+ * - Linux : systemd user/system service (system service requires root/system flag)
10
+ *
11
+ * WS-5 — Q3 Layer 4 (LaunchAgent / systemd persistence) & WS-5MCP
12
+ *
13
+ * @module
14
+ */
15
+ export declare class ElevationRequiredError extends Error {
16
+ constructor(targetPath: string);
17
+ }
18
+ export interface InstallDaemonOptions {
19
+ workspaceId: string;
20
+ apiKey: string;
21
+ /** Override the intutic CLI binary path (defaults to process.execPath) */
22
+ binaryPath?: string;
23
+ /** Control plane URL (defaults to https://api.intutic.ai) */
24
+ controlPlaneUrl?: string;
25
+ /** If true, just print what would be done without writing files */
26
+ dryRun?: boolean;
27
+ /** Install as a system-level service (LaunchDaemon on macOS, systemd system unit on Linux) */
28
+ system?: boolean;
29
+ }
30
+ export interface UninstallDaemonOptions {
31
+ /** If true, just print what would be done without writing files */
32
+ dryRun?: boolean;
33
+ /** Uninstall the system-level service */
34
+ system?: boolean;
35
+ }
36
+ export declare function checkRootPrivileges(system: boolean, targetPath?: string): void;
37
+ export interface ResolvedPaths {
38
+ label: string;
39
+ unitName?: string;
40
+ targetDir: string;
41
+ targetPath: string;
42
+ logsDir: string;
43
+ logPath: string;
44
+ errPath: string;
45
+ }
46
+ export declare function getPaths(system: boolean, isMcp: boolean, platform?: string): ResolvedPaths;
47
+ export declare function buildPlist(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'binaryPath' | 'controlPlaneUrl'>>, system?: boolean): string;
48
+ export declare function buildMcpPlist(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'controlPlaneUrl'>>, system?: boolean): string;
49
+ export declare function buildUnit(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'binaryPath' | 'controlPlaneUrl'>>, system?: boolean): string;
50
+ export declare function buildMcpUnit(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'controlPlaneUrl'>>, system?: boolean): string;
51
+ export declare function installDaemon(opts: InstallDaemonOptions): Promise<void>;
52
+ export declare function uninstallDaemon(opts?: UninstallDaemonOptions): Promise<void>;
53
+ export declare function daemonStatus(): Promise<void>;
54
+ export declare function daemonStop(): Promise<void>;
55
+ export declare function daemonStart(): Promise<void>;
56
+ export declare function installMcpDaemon(opts: InstallDaemonOptions): Promise<void>;
57
+ export declare function uninstallMcpDaemon(opts?: UninstallDaemonOptions): Promise<void>;
58
+ export declare function mcpDaemonStatus(): Promise<void>;
59
+ export declare function mcpDaemonStop(): Promise<void>;
60
+ export declare function mcpDaemonStart(): Promise<void>;
61
+ //# sourceMappingURL=install-daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-daemon.d.ts","sourceRoot":"","sources":["../../src/commands/install-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,MAAM;CAI/B;AAID,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,SAAoD,GAAG,IAAI,CAIzH;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAyB,GAAG,aAAa,CA8B5G;AAID,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,EACvG,MAAM,UAAQ,GACb,MAAM,CA0DR;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,iBAAiB,CAAC,CAAC,EACxF,MAAM,UAAQ,GACb,MAAM,CAqDR;AAsCD,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,EACvG,MAAM,UAAQ,GACb,MAAM,CAsCR;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,iBAAiB,CAAC,CAAC,EACxF,MAAM,UAAQ,GACb,MAAM,CAsCR;AAoCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7E;AAED,wBAAsB,eAAe,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCtF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmClD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAmChD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCjD;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDhF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BzF;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCrD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCnD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCpD"}