@terminai/a2a-server 0.21.0 → 0.25.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.
@@ -4,12 +4,15 @@
4
4
  * Portions Copyright 2025 TerminaI Authors
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
- import { Config, AuthType } from '@terminai/core';
7
+ import { AuthType } from '@terminai/core';
8
+ import type { Config } from '@terminai/core';
8
9
  export type LlmAuthStatus = 'ok' | 'required' | 'in_progress' | 'error';
9
10
  export type OAuthErrorCode = 'timeout' | 'denied' | 'state_mismatch' | 'server_bind_failed' | 'token_exchange_failed' | 'network_error';
10
11
  export interface LlmAuthStatusResult {
11
12
  readonly status: LlmAuthStatus;
12
13
  readonly authType: AuthType | undefined;
14
+ /** 3.5: Provider ID for Desktop to determine correct auth UI */
15
+ readonly provider?: 'gemini' | 'openai_compatible' | 'openai_chatgpt_oauth' | 'anthropic';
13
16
  readonly message?: string;
14
17
  readonly errorCode?: OAuthErrorCode;
15
18
  }
@@ -21,19 +24,54 @@ export declare class LlmAuthManager {
21
24
  private readonly getSelectedAuthType;
22
25
  private effectiveAuthType;
23
26
  private oauthFlow;
27
+ private openaiOauthFlow;
28
+ private attemptedOpenAiImport;
29
+ private readonly openaiClient;
24
30
  private lastErrorMessage;
25
31
  private lastErrorCode;
32
+ private readonly getLoadedSettings;
26
33
  constructor(input: {
27
34
  config: Config;
28
35
  getSelectedAuthType: () => AuthType | undefined;
36
+ getLoadedSettings?: () => import('../config/settings.js').LoadedSettings;
29
37
  });
30
38
  getStatus(): Promise<LlmAuthStatusResult>;
31
39
  submitGeminiApiKey(apiKey: string): Promise<LlmAuthStatusResult>;
32
40
  startGeminiOAuth(): Promise<{
33
41
  authUrl: string;
34
42
  }>;
43
+ startOpenAIOAuth(): Promise<{
44
+ authUrl: string;
45
+ }>;
46
+ completeOpenAIOAuth(input: {
47
+ redirectUrl?: string;
48
+ code?: string;
49
+ state?: string;
50
+ }): Promise<LlmAuthStatusResult>;
51
+ cancelOpenAIOAuth(): Promise<LlmAuthStatusResult>;
35
52
  cancelGeminiOAuth(): Promise<LlmAuthStatusResult>;
36
53
  useGeminiVertex(): Promise<LlmAuthStatusResult>;
37
54
  clearGeminiAuth(): Promise<LlmAuthStatusResult>;
55
+ clearOpenAIAuth(): Promise<LlmAuthStatusResult>;
38
56
  private mapOAuthError;
57
+ /**
58
+ * T3.2: Apply provider switch from Desktop.
59
+ * Validates enforcedType, applies patches, reconfigures the provider.
60
+ */
61
+ applyProviderSwitch(params: {
62
+ provider: 'gemini' | 'openai_compatible' | 'openai_chatgpt_oauth';
63
+ openaiCompatible?: {
64
+ baseUrl: string;
65
+ model: string;
66
+ envVarName?: string;
67
+ };
68
+ openaiChatgptOauth?: {
69
+ model: string;
70
+ baseUrl?: string;
71
+ internalModel?: string;
72
+ };
73
+ }): Promise<LlmAuthStatusResult | {
74
+ error: string;
75
+ statusCode: number;
76
+ }>;
39
77
  }
@@ -4,8 +4,10 @@
4
4
  * Portions Copyright 2025 TerminaI Authors
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
- import { Config, checkGeminiAuthStatusNonInteractive, beginGeminiOAuthLoopbackFlow, AuthType, saveApiKey, clearCachedCredentialFile, } from '@terminai/core';
7
+ import { checkGeminiAuthStatusNonInteractive, beginGeminiOAuthLoopbackFlow, AuthType, saveApiKey, clearCachedCredentialFile, LlmProviderId, ChatGptOAuthClient, ChatGptOAuthCredentialStorage, DEFAULT_OPENAI_OAUTH_REDIRECT_PORT, tryImportFromCodexCli, tryImportFromOpenCode, } from '@terminai/core';
8
8
  import { logger } from '../utils/logger.js';
9
+ import * as http from 'node:http';
10
+ import { URL } from 'node:url';
9
11
  export class AuthConflictError extends Error {
10
12
  statusCode = 409;
11
13
  }
@@ -14,11 +16,16 @@ export class LlmAuthManager {
14
16
  getSelectedAuthType;
15
17
  effectiveAuthType;
16
18
  oauthFlow = null;
19
+ openaiOauthFlow = null;
20
+ attemptedOpenAiImport = false;
21
+ openaiClient = new ChatGptOAuthClient();
17
22
  lastErrorMessage = null;
18
23
  lastErrorCode;
24
+ getLoadedSettings;
19
25
  constructor(input) {
20
26
  this.config = input.config;
21
27
  this.getSelectedAuthType = input.getSelectedAuthType;
28
+ this.getLoadedSettings = input.getLoadedSettings;
22
29
  this.effectiveAuthType = this.getSelectedAuthType();
23
30
  }
24
31
  async getStatus() {
@@ -27,17 +34,79 @@ export class LlmAuthManager {
27
34
  return {
28
35
  status: 'in_progress',
29
36
  authType,
37
+ provider: 'gemini', // OAuth is Gemini-only
30
38
  message: 'OAuth sign-in in progress',
31
39
  };
32
40
  }
41
+ if (this.openaiOauthFlow) {
42
+ return {
43
+ status: 'in_progress',
44
+ authType: AuthType.USE_OPENAI_CHATGPT_OAUTH,
45
+ provider: 'openai_chatgpt_oauth',
46
+ message: 'OAuth sign-in in progress',
47
+ };
48
+ }
49
+ // T3.1: Branch on provider
50
+ const providerConfig = this.config.getProviderConfig();
51
+ if (providerConfig.provider === LlmProviderId.OPENAI_COMPATIBLE) {
52
+ // For OpenAI-compatible, check if the required env var is present
53
+ const envVarName = providerConfig.auth?.envVarName || 'OPENAI_API_KEY';
54
+ const hasApiKey = Boolean(process.env[envVarName]);
55
+ if (hasApiKey) {
56
+ return {
57
+ status: 'ok',
58
+ authType: AuthType.USE_OPENAI_COMPATIBLE,
59
+ provider: 'openai_compatible',
60
+ };
61
+ }
62
+ else {
63
+ return {
64
+ status: 'required',
65
+ authType: AuthType.USE_OPENAI_COMPATIBLE,
66
+ provider: 'openai_compatible',
67
+ message: `OpenAI-compatible provider requires the ${envVarName} environment variable to be set.`,
68
+ };
69
+ }
70
+ }
71
+ if (providerConfig.provider === LlmProviderId.OPENAI_CHATGPT_OAUTH) {
72
+ if (!this.attemptedOpenAiImport) {
73
+ this.attemptedOpenAiImport = true;
74
+ try {
75
+ const imported = (await tryImportFromCodexCli(this.openaiClient)) ??
76
+ (await tryImportFromOpenCode(this.openaiClient));
77
+ if (imported) {
78
+ await ChatGptOAuthCredentialStorage.save(imported);
79
+ }
80
+ }
81
+ catch (e) {
82
+ logger.warn('[LlmAuthManager] ChatGPT OAuth import failed:', e);
83
+ }
84
+ }
85
+ const creds = await ChatGptOAuthCredentialStorage.load().catch(() => null);
86
+ if (creds) {
87
+ return {
88
+ status: 'ok',
89
+ authType: AuthType.USE_OPENAI_CHATGPT_OAUTH,
90
+ provider: 'openai_chatgpt_oauth',
91
+ };
92
+ }
93
+ return {
94
+ status: 'required',
95
+ authType: AuthType.USE_OPENAI_CHATGPT_OAUTH,
96
+ provider: 'openai_chatgpt_oauth',
97
+ message: 'ChatGPT OAuth credentials missing. Start OAuth to sign in.',
98
+ };
99
+ }
100
+ // Gemini provider: use existing checkGeminiAuthStatusNonInteractive
33
101
  const check = await checkGeminiAuthStatusNonInteractive(authType, process.env);
34
102
  if (check.status === 'ok') {
35
- return { status: 'ok', authType };
103
+ return { status: 'ok', authType, provider: 'gemini' };
36
104
  }
37
105
  if (check.status === 'required') {
38
106
  return {
39
107
  status: 'required',
40
108
  authType,
109
+ provider: 'gemini',
41
110
  message: check.message ?? this.lastErrorMessage ?? undefined,
42
111
  errorCode: this.lastErrorCode,
43
112
  };
@@ -45,6 +114,7 @@ export class LlmAuthManager {
45
114
  return {
46
115
  status: 'error',
47
116
  authType,
117
+ provider: 'gemini',
48
118
  message: check.message ?? this.lastErrorMessage ?? undefined,
49
119
  errorCode: this.lastErrorCode,
50
120
  };
@@ -94,6 +164,88 @@ export class LlmAuthManager {
94
164
  });
95
165
  return { authUrl };
96
166
  }
167
+ async startOpenAIOAuth() {
168
+ if (this.openaiOauthFlow) {
169
+ throw new AuthConflictError('OAuth already in progress');
170
+ }
171
+ this.effectiveAuthType = AuthType.USE_OPENAI_CHATGPT_OAUTH;
172
+ this.lastErrorMessage = null;
173
+ this.lastErrorCode = undefined;
174
+ const redirectUri = `http://127.0.0.1:${DEFAULT_OPENAI_OAUTH_REDIRECT_PORT}/auth/callback`;
175
+ const { authUrl, state, codeVerifier } = this.openaiClient.startAuthorization({ redirectUri });
176
+ const { waitForCompletion, cancel, complete } = await beginOpenAiLoopbackFlow({
177
+ client: this.openaiClient,
178
+ codeVerifier,
179
+ state,
180
+ redirectUri,
181
+ });
182
+ this.openaiOauthFlow = { waitForCompletion, cancel, complete, state };
183
+ void waitForCompletion
184
+ .then(() => {
185
+ this.lastErrorMessage = null;
186
+ this.lastErrorCode = undefined;
187
+ })
188
+ .catch((err) => {
189
+ const error = err instanceof Error ? err : new Error('OAuth failed');
190
+ const { message, code } = this.mapOAuthError(error);
191
+ this.lastErrorMessage = message;
192
+ this.lastErrorCode = code;
193
+ logger.warn('[LlmAuthManager] ChatGPT OAuth did not complete:', {
194
+ message,
195
+ code,
196
+ });
197
+ })
198
+ .finally(() => {
199
+ this.openaiOauthFlow = null;
200
+ });
201
+ return { authUrl };
202
+ }
203
+ async completeOpenAIOAuth(input) {
204
+ if (!this.openaiOauthFlow) {
205
+ return {
206
+ status: 'required',
207
+ authType: AuthType.USE_OPENAI_CHATGPT_OAUTH,
208
+ provider: 'openai_chatgpt_oauth',
209
+ message: 'No OAuth flow in progress',
210
+ };
211
+ }
212
+ const parsed = parseOAuthCompletion(input);
213
+ if (!parsed) {
214
+ return {
215
+ status: 'required',
216
+ authType: AuthType.USE_OPENAI_CHATGPT_OAUTH,
217
+ provider: 'openai_chatgpt_oauth',
218
+ message: 'Invalid OAuth completion payload',
219
+ };
220
+ }
221
+ if (parsed.state !== this.openaiOauthFlow.state) {
222
+ return {
223
+ status: 'error',
224
+ authType: AuthType.USE_OPENAI_CHATGPT_OAUTH,
225
+ provider: 'openai_chatgpt_oauth',
226
+ message: 'Security error occurred during sign-in. Please try again.',
227
+ errorCode: 'state_mismatch',
228
+ };
229
+ }
230
+ await this.openaiOauthFlow.complete(parsed);
231
+ await this.openaiOauthFlow.waitForCompletion;
232
+ return this.getStatus();
233
+ }
234
+ async cancelOpenAIOAuth() {
235
+ if (this.openaiOauthFlow) {
236
+ const cancel = this.openaiOauthFlow.cancel;
237
+ this.openaiOauthFlow = null;
238
+ try {
239
+ cancel();
240
+ }
241
+ catch (err) {
242
+ logger.warn('[LlmAuthManager] ChatGPT OAuth cancel threw:', err);
243
+ }
244
+ }
245
+ this.lastErrorMessage = null;
246
+ this.lastErrorCode = undefined;
247
+ return this.getStatus();
248
+ }
97
249
  async cancelGeminiOAuth() {
98
250
  if (this.oauthFlow) {
99
251
  const cancel = this.oauthFlow.cancel;
@@ -147,13 +299,28 @@ export class LlmAuthManager {
147
299
  this.effectiveAuthType = undefined;
148
300
  this.lastErrorMessage = null;
149
301
  this.lastErrorCode = undefined;
150
- // Try to refresh with undefined auth type, which should fail gracefully
302
+ return this.getStatus();
303
+ }
304
+ async clearOpenAIAuth() {
305
+ if (this.openaiOauthFlow) {
306
+ const cancel = this.openaiOauthFlow.cancel;
307
+ this.openaiOauthFlow = null;
308
+ try {
309
+ cancel();
310
+ }
311
+ catch (err) {
312
+ logger.warn('[LlmAuthManager] ChatGPT OAuth cancel during clear threw:', err);
313
+ }
314
+ }
151
315
  try {
152
- await this.config.refreshAuth(undefined);
316
+ await ChatGptOAuthCredentialStorage.clear();
153
317
  }
154
318
  catch (err) {
155
- // Expected to fail when no auth is configured
319
+ logger.warn('[LlmAuthManager] Failed to clear ChatGPT OAuth credentials:', err);
156
320
  }
321
+ this.effectiveAuthType = undefined;
322
+ this.lastErrorMessage = null;
323
+ this.lastErrorCode = undefined;
157
324
  return this.getStatus();
158
325
  }
159
326
  mapOAuthError(error) {
@@ -205,5 +372,267 @@ export class LlmAuthManager {
205
372
  code: 'network_error',
206
373
  };
207
374
  }
375
+ /**
376
+ * T3.2: Apply provider switch from Desktop.
377
+ * Validates enforcedType, applies patches, reconfigures the provider.
378
+ */
379
+ async applyProviderSwitch(params) {
380
+ const { buildWizardSettingsPatch, LlmProviderId } = await import('@terminai/core');
381
+ const { SettingScope } = await import('../config/settings.js');
382
+ if (!this.getLoadedSettings) {
383
+ return {
384
+ error: 'Provider switching requires a settings loader',
385
+ statusCode: 500,
386
+ };
387
+ }
388
+ const loadedSettings = this.getLoadedSettings();
389
+ // 1. Validate enforcedType
390
+ const enforcedType = loadedSettings.merged.security?.auth?.enforcedType;
391
+ if (enforcedType) {
392
+ return {
393
+ error: `Provider switching is blocked by enforcedType setting (${enforcedType}).`,
394
+ statusCode: 403,
395
+ };
396
+ }
397
+ if (params.provider === 'openai_chatgpt_oauth') {
398
+ const raw = process.env['TERMINAI_DISABLE_OPENAI_CHATGPT_OAUTH'];
399
+ const normalized = raw?.trim().toLowerCase();
400
+ if (normalized === '1' ||
401
+ normalized === 'true' ||
402
+ normalized === 'yes' ||
403
+ normalized === 'on') {
404
+ return {
405
+ error: 'ChatGPT OAuth provider is disabled by TERMINAI_DISABLE_OPENAI_CHATGPT_OAUTH. Use openai_compatible instead.',
406
+ statusCode: 403,
407
+ };
408
+ }
409
+ }
410
+ // 2. Apply patches via buildWizardSettingsPatch
411
+ const patches = buildWizardSettingsPatch({
412
+ provider: params.provider,
413
+ openaiCompatible: params.openaiCompatible,
414
+ openaiChatgptOauth: params.openaiChatgptOauth,
415
+ });
416
+ const workspaceSettings = loadedSettings.forScope(SettingScope.Workspace).settings;
417
+ const targetScope = workspaceSettings.llm?.provider !== undefined ||
418
+ workspaceSettings.llm?.openaiCompatible !== undefined ||
419
+ workspaceSettings.llm?.openaiChatgptOauth !== undefined
420
+ ? SettingScope.Workspace
421
+ : SettingScope.User;
422
+ for (const patch of patches) {
423
+ loadedSettings.setValue(targetScope, patch.path, patch.value);
424
+ }
425
+ // 3. Auth type consistency rules
426
+ const selectedAuthType = params.provider === 'openai_compatible'
427
+ ? AuthType.USE_OPENAI_COMPATIBLE
428
+ : params.provider === 'openai_chatgpt_oauth'
429
+ ? AuthType.USE_OPENAI_CHATGPT_OAUTH
430
+ : undefined;
431
+ // Switching to Gemini: clear selectedType if it was OpenAI-compatible
432
+ if (params.provider === 'gemini') {
433
+ const currentSelectedType = loadedSettings.merged.security?.auth?.selectedType;
434
+ if (currentSelectedType === AuthType.USE_OPENAI_COMPATIBLE ||
435
+ currentSelectedType === AuthType.USE_OPENAI_CHATGPT_OAUTH) {
436
+ loadedSettings.setValue(SettingScope.User, 'security.auth.selectedType', undefined);
437
+ }
438
+ }
439
+ // 4. Compute ProviderConfig
440
+ let providerConfig;
441
+ if (params.provider === 'openai_compatible' && params.openaiCompatible) {
442
+ const envVarName = (params.openaiCompatible.envVarName || 'OPENAI_API_KEY')
443
+ .trim()
444
+ .replace(/\s+/g, '');
445
+ providerConfig = {
446
+ provider: LlmProviderId.OPENAI_COMPATIBLE,
447
+ baseUrl: params.openaiCompatible.baseUrl.trim().replace(/\/+$/, ''),
448
+ model: params.openaiCompatible.model.trim(),
449
+ auth: {
450
+ type: 'bearer',
451
+ envVarName,
452
+ apiKey: process.env[envVarName],
453
+ },
454
+ };
455
+ }
456
+ else if (params.provider === 'openai_chatgpt_oauth' &&
457
+ params.openaiChatgptOauth) {
458
+ const internalModel = params.openaiChatgptOauth.internalModel?.trim();
459
+ providerConfig = {
460
+ provider: LlmProviderId.OPENAI_CHATGPT_OAUTH,
461
+ baseUrl: (params.openaiChatgptOauth.baseUrl ??
462
+ 'https://chatgpt.com/backend-api/codex')
463
+ .trim()
464
+ .replace(/\/+$/, ''),
465
+ model: params.openaiChatgptOauth.model.trim(),
466
+ internalModel: internalModel && internalModel.length > 0 ? internalModel : undefined,
467
+ };
468
+ }
469
+ else {
470
+ providerConfig = { provider: LlmProviderId.GEMINI };
471
+ }
472
+ // 5. Call reconfigureProvider
473
+ await this.config.reconfigureProvider(providerConfig, selectedAuthType);
474
+ this.effectiveAuthType = selectedAuthType;
475
+ // 6. Return updated status
476
+ return this.getStatus();
477
+ }
478
+ }
479
+ async function beginOpenAiLoopbackFlow(input) {
480
+ const port = DEFAULT_OPENAI_OAUTH_REDIRECT_PORT;
481
+ const host = '127.0.0.1';
482
+ let server = null;
483
+ let completed = false;
484
+ let resolved = false;
485
+ let resolveCompletion = null;
486
+ let rejectCompletion = null;
487
+ const waitForCompletion = new Promise((resolve, reject) => {
488
+ resolveCompletion = () => {
489
+ resolved = true;
490
+ resolve();
491
+ };
492
+ rejectCompletion = reject;
493
+ });
494
+ const timeout = setTimeout(() => {
495
+ if (!resolved) {
496
+ rejectCompletion?.(new Error('OAuth timed out'));
497
+ try {
498
+ server?.close();
499
+ }
500
+ catch {
501
+ // ignore
502
+ }
503
+ server = null;
504
+ }
505
+ }, 5 * 60 * 1000);
506
+ const complete = async (payload) => {
507
+ if (completed)
508
+ return;
509
+ completed = true;
510
+ try {
511
+ const creds = await input.client.exchangeAuthorizationCode({
512
+ code: payload.code,
513
+ redirectUri: input.redirectUri,
514
+ codeVerifier: input.codeVerifier,
515
+ });
516
+ await ChatGptOAuthCredentialStorage.save(creds);
517
+ resolveCompletion?.();
518
+ }
519
+ catch (e) {
520
+ rejectCompletion?.(e);
521
+ }
522
+ finally {
523
+ clearTimeout(timeout);
524
+ try {
525
+ server?.close();
526
+ }
527
+ catch {
528
+ // ignore
529
+ }
530
+ server = null;
531
+ }
532
+ };
533
+ const cancel = () => {
534
+ clearTimeout(timeout);
535
+ if (!resolved) {
536
+ rejectCompletion?.(new Error('OAuth cancelled'));
537
+ }
538
+ try {
539
+ server?.close();
540
+ }
541
+ catch {
542
+ // ignore
543
+ }
544
+ server = null;
545
+ };
546
+ server = http.createServer((req, res) => {
547
+ const url = new URL(req.url ?? '/', `http://${host}:${port}`);
548
+ if (url.pathname === '/cancel') {
549
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
550
+ res.end('cancelled');
551
+ cancel();
552
+ return;
553
+ }
554
+ if (url.pathname === '/auth/callback') {
555
+ const code = url.searchParams.get('code') ?? '';
556
+ const state = url.searchParams.get('state') ?? '';
557
+ if (!code || !state) {
558
+ res.writeHead(400, { 'Content-Type': 'text/plain' });
559
+ res.end('missing code/state');
560
+ return;
561
+ }
562
+ if (state !== input.state) {
563
+ res.writeHead(400, { 'Content-Type': 'text/plain' });
564
+ res.end('state mismatch');
565
+ return;
566
+ }
567
+ res.writeHead(200, { 'Content-Type': 'text/html' });
568
+ res.end('<!doctype html><meta charset="utf-8"><title>TerminaI</title><p>Authentication complete. You can close this tab.</p>');
569
+ void complete({ code, state });
570
+ return;
571
+ }
572
+ res.writeHead(404, { 'Content-Type': 'text/plain' });
573
+ res.end('not found');
574
+ });
575
+ await listenWithCancelRetry(server, { host, port });
576
+ return { waitForCompletion, cancel, complete };
577
+ }
578
+ async function listenWithCancelRetry(server, input) {
579
+ const attempts = 10;
580
+ const delayMs = 200;
581
+ for (let i = 0; i < attempts; i++) {
582
+ try {
583
+ await new Promise((resolve, reject) => {
584
+ const onError = (err) => {
585
+ server.off('error', onError);
586
+ reject(err);
587
+ };
588
+ server.once('error', onError);
589
+ server.listen(input.port, input.host, () => {
590
+ server.off('error', onError);
591
+ resolve();
592
+ });
593
+ });
594
+ return;
595
+ }
596
+ catch (e) {
597
+ const code = typeof e === 'object' &&
598
+ e !== null &&
599
+ 'code' in e &&
600
+ typeof e.code === 'string'
601
+ ? e.code
602
+ : '';
603
+ if (code !== 'EADDRINUSE') {
604
+ throw e;
605
+ }
606
+ try {
607
+ await fetch(`http://${input.host}:${input.port}/cancel`).catch(() => { });
608
+ }
609
+ catch {
610
+ // ignore
611
+ }
612
+ await new Promise((r) => setTimeout(r, delayMs));
613
+ }
614
+ }
615
+ throw new Error(`Failed to bind ${input.host}:${input.port}`);
616
+ }
617
+ function parseOAuthCompletion(input) {
618
+ if (typeof input.redirectUrl === 'string' &&
619
+ input.redirectUrl.trim().length > 0) {
620
+ try {
621
+ const url = new URL(input.redirectUrl.trim());
622
+ const code = url.searchParams.get('code') ?? '';
623
+ const state = url.searchParams.get('state') ?? '';
624
+ if (code && state)
625
+ return { code, state };
626
+ return null;
627
+ }
628
+ catch {
629
+ return null;
630
+ }
631
+ }
632
+ const code = typeof input.code === 'string' ? input.code.trim() : '';
633
+ const state = typeof input.state === 'string' ? input.state.trim() : '';
634
+ if (!code || !state)
635
+ return null;
636
+ return { code, state };
208
637
  }
209
638
  //# sourceMappingURL=llmAuthManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llmAuthManager.js","sourceRoot":"","sources":["../../../src/auth/llmAuthManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmAuthManager.js","sourceRoot":"","sources":["../../../src/auth/llmAuthManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,QAAQ,EAER,UAAU,EACV,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,6BAA6B,EAC7B,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAyB/B,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,UAAU,GAAG,GAAG,CAAC;CAC3B;AAED,MAAM,OAAO,cAAc;IACR,MAAM,CAAS;IACf,mBAAmB,CAA6B;IAEzD,iBAAiB,CAAuB;IAExC,SAAS,GAGN,IAAI,CAAC;IAER,eAAe,GAKZ,IAAI,CAAC;IAER,qBAAqB,GAAG,KAAK,CAAC;IACrB,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAEjD,gBAAgB,GAAkB,IAAI,CAAC;IACvC,aAAa,CAA6B;IAEjC,iBAAiB,CAEpB;IAEd,YAAY,KAIX;QACC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEtE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,QAAQ;gBACR,QAAQ,EAAE,QAAQ,EAAE,uBAAuB;gBAC3C,OAAO,EAAE,2BAA2B;aACrC,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,QAAQ,CAAC,wBAAwB;gBAC3C,QAAQ,EAAE,sBAAsB;gBAChC,OAAO,EAAE,2BAA2B;aACrC,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACvD,IAAI,cAAc,CAAC,QAAQ,KAAK,aAAa,CAAC,iBAAiB,EAAE,CAAC;YAChE,kEAAkE;YAClE,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,IAAI,gBAAgB,CAAC;YACvE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACnD,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,QAAQ,CAAC,qBAAqB;oBACxC,QAAQ,EAAE,mBAAmB;iBAC9B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,QAAQ,CAAC,qBAAqB;oBACxC,QAAQ,EAAE,mBAAmB;oBAC7B,OAAO,EAAE,2CAA2C,UAAU,kCAAkC;iBACjG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,QAAQ,KAAK,aAAa,CAAC,oBAAoB,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,QAAQ,GACZ,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAChD,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oBACnD,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,6BAA6B,CAAC,IAAI,EAAE,CAAC,KAAK,CAC5D,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,QAAQ,CAAC,wBAAwB;oBAC3C,QAAQ,EAAE,sBAAsB;iBACjC,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,QAAQ,CAAC,wBAAwB;gBAC3C,QAAQ,EAAE,sBAAsB;gBAChC,OAAO,EAAE,4DAA4D;aACtE,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,MAAM,KAAK,GAAG,MAAM,mCAAmC,CACrD,QAAQ,EACR,OAAO,CAAC,GAAG,CACZ,CAAC;QAEF,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ;gBACR,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS;gBAC5D,SAAS,EAAE,IAAI,CAAC,aAAa;aAC9B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO;YACf,QAAQ;YACR,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS;YAC5D,SAAS,EAAE,IAAI,CAAC,aAAa;SAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,QAAQ,CAAC,UAAU;gBAC7B,OAAO,EAAE,oCAAoC;aAC9C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAC1C,MAAM,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAE/C,2DAA2D;QAC3D,KAAK,iBAAiB;aACnB,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;YACrE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE;gBACtD,OAAO;gBACP,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC,CAAC;QAEL,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,wBAAwB,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,MAAM,WAAW,GAAG,oBAAoB,kCAAkC,gBAAgB,CAAC;QAC3F,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GACpC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAExD,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,GAC3C,MAAM,uBAAuB,CAAC;YAC5B,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,YAAY;YACZ,KAAK;YACL,WAAW;SACZ,CAAC,CAAC;QAEL,IAAI,CAAC,eAAe,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAEtE,KAAK,iBAAiB;aACnB,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;YACrE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBAC9D,OAAO;gBACP,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEL,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAIzB;QACC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,QAAQ,CAAC,wBAAwB;gBAC3C,QAAQ,EAAE,sBAAsB;gBAChC,OAAO,EAAE,2BAA2B;aACrC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,QAAQ,CAAC,wBAAwB;gBAC3C,QAAQ,EAAE,sBAAsB;gBAChC,OAAO,EAAE,kCAAkC;aAC5C,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAChD,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,QAAQ,CAAC,wBAAwB;gBAC3C,QAAQ,EAAE,sBAAsB;gBAChC,OAAO,EAAE,2DAA2D;gBACpE,SAAS,EAAE,gBAAgB;aAC5B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;QAE7C,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC;YACX,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC;YACX,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC;QAEhD,MAAM,YAAY,GAChB,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEhC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,QAAQ,CAAC,aAAa;gBAChC,OAAO,EACL,2GAA2G;aAC9G,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,oCAAoC;QACpC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC;YACX,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,yBAAyB,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE,GAAG,CAAC,CAAC;QAC3E,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC;YACX,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CACT,2DAA2D,EAC3D,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,6BAA6B,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT,6DAA6D,EAC7D,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,KAAY;QAIhC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAE5C,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,kDAAkD;gBAC3D,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACpE,OAAO;gBACL,OAAO,EACL,2EAA2E;gBAC7E,IAAI,EAAE,QAAQ;aACf,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,OAAO;gBACL,OAAO,EAAE,2DAA2D;gBACpE,IAAI,EAAE,gBAAgB;aACvB,CAAC;QACJ,CAAC;QAED,IACE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC3B,CAAC;YACD,OAAO;gBACL,OAAO,EACL,2GAA2G;gBAC7G,IAAI,EAAE,oBAAoB;aAC3B,CAAC;QACJ,CAAC;QAED,IACE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACtC,CAAC;YACD,OAAO;gBACL,OAAO,EACL,2EAA2E;gBAC7E,IAAI,EAAE,uBAAuB;aAC9B,CAAC;QACJ,CAAC;QAED,IACE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;YACD,OAAO;gBACL,OAAO,EACL,8EAA8E;gBAChF,IAAI,EAAE,eAAe;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,gEAAgE;YACzE,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CAAC,MAYzB;QACC,MAAM,EAAE,wBAAwB,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAC9D,gBAAgB,CACjB,CAAC;QACF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO;gBACL,KAAK,EAAE,+CAA+C;gBACtD,UAAU,EAAE,GAAG;aAChB,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEhD,2BAA2B;QAC3B,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC;QACxE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO;gBACL,KAAK,EAAE,0DAA0D,YAAY,IAAI;gBACjF,UAAU,EAAE,GAAG;aAChB,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,sBAAsB,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IACE,UAAU,KAAK,GAAG;gBAClB,UAAU,KAAK,MAAM;gBACrB,UAAU,KAAK,KAAK;gBACpB,UAAU,KAAK,IAAI,EACnB,CAAC;gBACD,OAAO;oBACL,KAAK,EACH,6GAA6G;oBAC/G,UAAU,EAAE,GAAG;iBAChB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,MAAM,OAAO,GAAG,wBAAwB,CAAC;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;SAC9C,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,cAAc,CAAC,QAAQ,CAC/C,YAAY,CAAC,SAAS,CACvB,CAAC,QAAQ,CAAC;QACX,MAAM,WAAW,GACf,iBAAiB,CAAC,GAAG,EAAE,QAAQ,KAAK,SAAS;YAC7C,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,KAAK,SAAS;YACrD,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,KAAK,SAAS;YACrD,CAAC,CAAC,YAAY,CAAC,SAAS;YACxB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;QAExB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,iCAAiC;QACjC,MAAM,gBAAgB,GACpB,MAAM,CAAC,QAAQ,KAAK,mBAAmB;YACrC,CAAC,CAAC,QAAQ,CAAC,qBAAqB;YAChC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,sBAAsB;gBAC1C,CAAC,CAAC,QAAQ,CAAC,wBAAwB;gBACnC,CAAC,CAAC,SAAS,CAAC;QAElB,sEAAsE;QACtE,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,mBAAmB,GACvB,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC;YACrD,IACE,mBAAmB,KAAK,QAAQ,CAAC,qBAAqB;gBACtD,mBAAmB,KAAK,QAAQ,CAAC,wBAAwB,EACzD,CAAC;gBACD,cAAc,CAAC,QAAQ,CACrB,YAAY,CAAC,IAAI,EACjB,4BAA4B,EAC5B,SAAS,CACV,CAAC;YACJ,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,cAA8B,CAAC;QACnC,IAAI,MAAM,CAAC,QAAQ,KAAK,mBAAmB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACvE,MAAM,UAAU,GAAG,CACjB,MAAM,CAAC,gBAAgB,CAAC,UAAU,IAAI,gBAAgB,CACvD;iBACE,IAAI,EAAE;iBACN,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAEvB,cAAc,GAAG;gBACf,QAAQ,EAAE,aAAa,CAAC,iBAAiB;gBACzC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnE,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC3C,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAiB;oBACvB,UAAU;oBACV,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;iBAChC;aACF,CAAC;QACJ,CAAC;aAAM,IACL,MAAM,CAAC,QAAQ,KAAK,sBAAsB;YAC1C,MAAM,CAAC,kBAAkB,EACzB,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;YACtE,cAAc,GAAG;gBACf,QAAQ,EAAE,aAAa,CAAC,oBAAoB;gBAC5C,OAAO,EAAE,CACP,MAAM,CAAC,kBAAkB,CAAC,OAAO;oBACjC,uCAAuC,CACxC;qBACE,IAAI,EAAE;qBACN,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtB,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC7C,aAAa,EACX,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;aACxE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC;QAED,8BAA8B;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACxE,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAE1C,2BAA2B;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,KAAK,UAAU,uBAAuB,CAAC,KAKtC;IAKC,MAAM,IAAI,GAAG,kCAAkC,CAAC;IAChD,MAAM,IAAI,GAAG,WAAW,CAAC;IAEzB,IAAI,MAAM,GAAuB,IAAI,CAAC;IACtC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,iBAAiB,GAAwB,IAAI,CAAC;IAClD,IAAI,gBAAgB,GAAkC,IAAI,CAAC;IAC3D,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9D,iBAAiB,GAAG,GAAG,EAAE;YACvB,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,gBAAgB,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,UAAU,CACxB,GAAG,EAAE;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,gBAAgB,EAAE,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,GAAG,IAAI,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAwC,EAAE,EAAE;QAClE,IAAI,SAAS;YAAE,OAAO;QACtB,SAAS,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC;gBACzD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;aACjC,CAAC,CAAC;YACH,MAAM,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,iBAAiB,EAAE,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,gBAAgB,EAAE,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAE9D,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrB,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YACD,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,GAAG,CAAC,GAAG,CACL,qHAAqH,CACtH,CAAC;YAEF,KAAK,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;QACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,qBAAqB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAAmB,EACnB,KAAqC;IAErC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,GAAG,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;oBAC/B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;oBACzC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7B,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,GACR,OAAO,CAAC,KAAK,QAAQ;gBACrB,CAAC,KAAK,IAAI;gBACV,MAAM,IAAI,CAAC;gBACX,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ;gBAChD,CAAC,CAAE,CAAsB,CAAC,IAAI;gBAC9B,CAAC,CAAC,EAAE,CAAC;YACT,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC;YACV,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,CAC5D,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAI7B;IACC,IACE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACnC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,IAAI,IAAI,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}