@bretwardjames/ghp-cli 0.1.1 → 0.1.3

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 (49) hide show
  1. package/dist/branch-linker.d.ts +31 -9
  2. package/dist/branch-linker.d.ts.map +1 -1
  3. package/dist/branch-linker.js +61 -35
  4. package/dist/branch-linker.js.map +1 -1
  5. package/dist/commands/link-branch.d.ts.map +1 -1
  6. package/dist/commands/link-branch.js +20 -0
  7. package/dist/commands/link-branch.js.map +1 -1
  8. package/dist/commands/plan.d.ts.map +1 -1
  9. package/dist/commands/plan.js +235 -95
  10. package/dist/commands/plan.js.map +1 -1
  11. package/dist/commands/set-field.d.ts.map +1 -1
  12. package/dist/commands/set-field.js +25 -1
  13. package/dist/commands/set-field.js.map +1 -1
  14. package/dist/commands/start.d.ts.map +1 -1
  15. package/dist/commands/start.js +21 -0
  16. package/dist/commands/start.js.map +1 -1
  17. package/dist/commands/switch.d.ts.map +1 -1
  18. package/dist/commands/switch.js +20 -0
  19. package/dist/commands/switch.js.map +1 -1
  20. package/dist/commands/sync.d.ts +2 -0
  21. package/dist/commands/sync.d.ts.map +1 -0
  22. package/dist/commands/sync.js +77 -0
  23. package/dist/commands/sync.js.map +1 -0
  24. package/dist/commands/work.d.ts +5 -0
  25. package/dist/commands/work.d.ts.map +1 -1
  26. package/dist/commands/work.js +226 -36
  27. package/dist/commands/work.js.map +1 -1
  28. package/dist/config.d.ts +1 -0
  29. package/dist/config.d.ts.map +1 -1
  30. package/dist/config.js.map +1 -1
  31. package/dist/git-utils.d.ts +6 -52
  32. package/dist/git-utils.d.ts.map +1 -1
  33. package/dist/git-utils.js +7 -137
  34. package/dist/git-utils.js.map +1 -1
  35. package/dist/github-api.d.ts +17 -108
  36. package/dist/github-api.d.ts.map +1 -1
  37. package/dist/github-api.js +48 -579
  38. package/dist/github-api.js.map +1 -1
  39. package/dist/index.js +16 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/table.d.ts +16 -0
  42. package/dist/table.d.ts.map +1 -0
  43. package/dist/table.js +230 -0
  44. package/dist/table.js.map +1 -0
  45. package/dist/types.d.ts +6 -36
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/types.js +5 -0
  48. package/dist/types.js.map +1 -1
  49. package/package.json +2 -2
@@ -1,35 +1,22 @@
1
- import { graphql } from '@octokit/graphql';
1
+ /**
2
+ * CLI-specific GitHub API wrapper.
3
+ *
4
+ * This module wraps the core GitHubAPI class with CLI-specific behavior:
5
+ * - Token from `gh auth token` or environment variables
6
+ * - Chalk-colored error messages
7
+ * - process.exit on auth errors
8
+ */
2
9
  import { exec } from 'child_process';
3
10
  import { promisify } from 'util';
4
11
  import chalk from 'chalk';
12
+ import { GitHubAPI as CoreGitHubAPI, } from '@bretwardjames/ghp-core';
5
13
  const execAsync = promisify(exec);
6
14
  /**
7
- * Check if an error is due to insufficient OAuth scopes
15
+ * CLI token provider that gets tokens from environment or gh CLI
8
16
  */
9
- function handleScopeError(error) {
10
- if (error && typeof error === 'object' && 'errors' in error) {
11
- const gqlError = error;
12
- const scopeError = gqlError.errors?.find(e => e.type === 'INSUFFICIENT_SCOPES');
13
- if (scopeError) {
14
- console.error(chalk.red('\nError:'), 'Your GitHub token is missing required scopes.');
15
- console.error(chalk.dim('GitHub Projects requires the'), chalk.cyan('read:project'), chalk.dim('scope.'));
16
- console.error();
17
- console.error('Run this command to add the required scope:');
18
- console.error(chalk.cyan(' gh auth refresh -s read:project -s project'));
19
- console.error();
20
- process.exit(1);
21
- }
22
- }
23
- throw error;
24
- }
25
- export class GitHubAPI {
26
- graphqlWithAuth = null;
27
- username = null;
28
- /**
29
- * Get token from gh CLI or environment variable
30
- */
17
+ const cliTokenProvider = {
31
18
  async getToken() {
32
- // First try environment variable
19
+ // First try environment variables
33
20
  if (process.env.GITHUB_TOKEN) {
34
21
  return process.env.GITHUB_TOKEN;
35
22
  }
@@ -44,561 +31,43 @@ export class GitHubAPI {
44
31
  catch {
45
32
  return null;
46
33
  }
47
- }
48
- /**
49
- * Authenticate with GitHub
50
- */
51
- async authenticate() {
52
- const token = await this.getToken();
53
- if (!token) {
54
- return false;
55
- }
56
- this.graphqlWithAuth = graphql.defaults({
57
- headers: {
58
- authorization: `token ${token}`,
59
- },
60
- });
61
- // Get current user
62
- try {
63
- const response = await this.graphqlWithAuth(`
64
- query {
65
- viewer {
66
- login
67
- }
68
- }
69
- `);
70
- this.username = response.viewer.login;
71
- return true;
72
- }
73
- catch {
74
- this.graphqlWithAuth = null;
75
- return false;
76
- }
77
- }
78
- get isAuthenticated() {
79
- return this.graphqlWithAuth !== null;
80
- }
81
- /**
82
- * Get projects linked to a repository
83
- */
84
- async getProjects(repo) {
85
- if (!this.graphqlWithAuth)
86
- throw new Error('Not authenticated');
87
- try {
88
- const response = await this.graphqlWithAuth(`
89
- query($owner: String!, $name: String!) {
90
- repository(owner: $owner, name: $name) {
91
- projectsV2(first: 20) {
92
- nodes {
93
- id
94
- title
95
- number
96
- url
97
- }
98
- }
99
- }
100
- }
101
- `, {
102
- owner: repo.owner,
103
- name: repo.name,
104
- });
105
- return response.repository.projectsV2.nodes;
106
- }
107
- catch (error) {
108
- handleScopeError(error);
109
- }
110
- }
111
- /**
112
- * Get items from a project
113
- */
114
- async getProjectItems(projectId, projectTitle) {
115
- if (!this.graphqlWithAuth)
116
- throw new Error('Not authenticated');
117
- const response = await this.graphqlWithAuth(`
118
- query($projectId: ID!) {
119
- node(id: $projectId) {
120
- ... on ProjectV2 {
121
- items(first: 100) {
122
- nodes {
123
- id
124
- fieldValues(first: 20) {
125
- nodes {
126
- __typename
127
- ... on ProjectV2ItemFieldSingleSelectValue {
128
- name
129
- field { ... on ProjectV2SingleSelectField { name } }
130
- }
131
- ... on ProjectV2ItemFieldTextValue {
132
- text
133
- field { ... on ProjectV2Field { name } }
134
- }
135
- ... on ProjectV2ItemFieldNumberValue {
136
- number
137
- field { ... on ProjectV2Field { name } }
138
- }
139
- ... on ProjectV2ItemFieldDateValue {
140
- date
141
- field { ... on ProjectV2Field { name } }
142
- }
143
- ... on ProjectV2ItemFieldIterationValue {
144
- title
145
- field { ... on ProjectV2IterationField { name } }
146
- }
147
- }
148
- }
149
- content {
150
- __typename
151
- ... on Issue {
152
- title
153
- number
154
- url
155
- issueType { name }
156
- assignees(first: 5) { nodes { login } }
157
- labels(first: 10) { nodes { name color } }
158
- repository { name }
159
- }
160
- ... on PullRequest {
161
- title
162
- number
163
- url
164
- assignees(first: 5) { nodes { login } }
165
- labels(first: 10) { nodes { name color } }
166
- repository { name }
167
- }
168
- ... on DraftIssue {
169
- title
170
- }
171
- }
172
- }
173
- }
174
- }
175
- }
176
- }
177
- `, { projectId });
178
- return response.node.items.nodes
179
- .filter(item => item.content)
180
- .map(item => {
181
- const content = item.content;
182
- // Extract all field values into a map
183
- const fields = {};
184
- for (const fv of item.fieldValues.nodes) {
185
- const fieldName = fv.field?.name;
186
- if (!fieldName)
187
- continue;
188
- if (fv.__typename === 'ProjectV2ItemFieldSingleSelectValue' && fv.name) {
189
- fields[fieldName] = fv.name;
190
- }
191
- else if (fv.__typename === 'ProjectV2ItemFieldTextValue' && fv.text) {
192
- fields[fieldName] = fv.text;
193
- }
194
- else if (fv.__typename === 'ProjectV2ItemFieldNumberValue' && fv.number !== undefined) {
195
- fields[fieldName] = fv.number.toString();
196
- }
197
- else if (fv.__typename === 'ProjectV2ItemFieldDateValue' && fv.date) {
198
- fields[fieldName] = fv.date;
199
- }
200
- else if (fv.__typename === 'ProjectV2ItemFieldIterationValue' && fv.title) {
201
- fields[fieldName] = fv.title;
202
- }
203
- }
204
- let type = 'draft';
205
- if (content.__typename === 'Issue')
206
- type = 'issue';
207
- else if (content.__typename === 'PullRequest')
208
- type = 'pull_request';
209
- return {
210
- id: item.id,
211
- title: content.title || 'Untitled',
212
- number: content.number || null,
213
- type,
214
- issueType: content.issueType?.name || null,
215
- status: fields['Status'] || null,
216
- assignees: content.assignees?.nodes.map(a => a.login) || [],
217
- labels: content.labels?.nodes || [],
218
- repository: content.repository?.name || null,
219
- url: content.url || null,
220
- projectId,
221
- projectTitle,
222
- fields,
223
- };
34
+ },
35
+ };
36
+ /**
37
+ * CLI error handler that prints colored messages and exits
38
+ */
39
+ function handleAuthError(error) {
40
+ if (error.type === 'INSUFFICIENT_SCOPES') {
41
+ console.error(chalk.red('\nError:'), 'Your GitHub token is missing required scopes.');
42
+ console.error(chalk.dim('GitHub Projects requires the'), chalk.cyan('read:project'), chalk.dim('scope.'));
43
+ console.error();
44
+ console.error('Run this command to add the required scope:');
45
+ console.error(chalk.cyan(' gh auth refresh -s read:project -s project'));
46
+ console.error();
47
+ }
48
+ else if (error.type === 'SSO_REQUIRED') {
49
+ console.error(chalk.red('\nError:'), 'SSO authentication required for this organization.');
50
+ console.error(chalk.dim('Please re-authenticate with SSO enabled.'));
51
+ console.error();
52
+ }
53
+ else {
54
+ console.error(chalk.red('\nError:'), error.message);
55
+ }
56
+ process.exit(1);
57
+ }
58
+ /**
59
+ * Extended GitHubAPI class for CLI with pre-configured token provider
60
+ */
61
+ class CLIGitHubAPI extends CoreGitHubAPI {
62
+ constructor() {
63
+ super({
64
+ tokenProvider: cliTokenProvider,
65
+ onAuthError: handleAuthError,
224
66
  });
225
67
  }
226
- /**
227
- * Get the Status field info for a project
228
- */
229
- async getStatusField(projectId) {
230
- if (!this.graphqlWithAuth)
231
- throw new Error('Not authenticated');
232
- const response = await this.graphqlWithAuth(`
233
- query($projectId: ID!) {
234
- node(id: $projectId) {
235
- ... on ProjectV2 {
236
- fields(first: 20) {
237
- nodes {
238
- __typename
239
- ... on ProjectV2SingleSelectField {
240
- id
241
- name
242
- options { id name }
243
- }
244
- }
245
- }
246
- }
247
- }
248
- }
249
- `, { projectId });
250
- const statusField = response.node.fields.nodes.find(f => f.__typename === 'ProjectV2SingleSelectField' && f.name === 'Status');
251
- if (!statusField || !statusField.options)
252
- return null;
253
- return {
254
- fieldId: statusField.id,
255
- options: statusField.options,
256
- };
257
- }
258
- /**
259
- * Update an item's status
260
- */
261
- async updateItemStatus(projectId, itemId, fieldId, optionId) {
262
- if (!this.graphqlWithAuth)
263
- throw new Error('Not authenticated');
264
- try {
265
- await this.graphqlWithAuth(`
266
- mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) {
267
- updateProjectV2ItemFieldValue(input: {
268
- projectId: $projectId
269
- itemId: $itemId
270
- fieldId: $fieldId
271
- value: { singleSelectOptionId: $optionId }
272
- }) {
273
- projectV2Item { id }
274
- }
275
- }
276
- `, { projectId, itemId, fieldId, optionId });
277
- return true;
278
- }
279
- catch (error) {
280
- console.error('Failed to update status:', error);
281
- return false;
282
- }
283
- }
284
- /**
285
- * Find an item by issue number across all projects for this repo
286
- */
287
- async findItemByNumber(repo, issueNumber) {
288
- const projects = await this.getProjects(repo);
289
- for (const project of projects) {
290
- const items = await this.getProjectItems(project.id, project.title);
291
- const item = items.find(i => i.number === issueNumber);
292
- if (item)
293
- return item;
294
- }
295
- return null;
296
- }
297
- /**
298
- * Get all fields for a project
299
- */
300
- async getProjectFields(projectId) {
301
- if (!this.graphqlWithAuth)
302
- throw new Error('Not authenticated');
303
- const response = await this.graphqlWithAuth(`
304
- query($projectId: ID!) {
305
- node(id: $projectId) {
306
- ... on ProjectV2 {
307
- fields(first: 30) {
308
- nodes {
309
- __typename
310
- ... on ProjectV2Field {
311
- id
312
- name
313
- }
314
- ... on ProjectV2SingleSelectField {
315
- id
316
- name
317
- options { id name }
318
- }
319
- ... on ProjectV2IterationField {
320
- id
321
- name
322
- }
323
- }
324
- }
325
- }
326
- }
327
- }
328
- `, { projectId });
329
- return response.node.fields.nodes.map(f => ({
330
- id: f.id,
331
- name: f.name,
332
- type: f.__typename.replace('ProjectV2', '').replace('Field', ''),
333
- options: f.options,
334
- }));
335
- }
336
- /**
337
- * Set a field value on a project item
338
- */
339
- async setFieldValue(projectId, itemId, fieldId, value) {
340
- if (!this.graphqlWithAuth)
341
- throw new Error('Not authenticated');
342
- try {
343
- await this.graphqlWithAuth(`
344
- mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: ProjectV2FieldValue!) {
345
- updateProjectV2ItemFieldValue(input: {
346
- projectId: $projectId
347
- itemId: $itemId
348
- fieldId: $fieldId
349
- value: $value
350
- }) {
351
- projectV2Item { id }
352
- }
353
- }
354
- `, { projectId, itemId, fieldId, value });
355
- return true;
356
- }
357
- catch (error) {
358
- console.error('Failed to set field value:', error);
359
- return false;
360
- }
361
- }
362
- /**
363
- * Create a new issue
364
- */
365
- async createIssue(repo, title, body) {
366
- if (!this.graphqlWithAuth)
367
- throw new Error('Not authenticated');
368
- try {
369
- // First get the repository ID
370
- const repoResponse = await this.graphqlWithAuth(`
371
- query($owner: String!, $name: String!) {
372
- repository(owner: $owner, name: $name) {
373
- id
374
- }
375
- }
376
- `, { owner: repo.owner, name: repo.name });
377
- const response = await this.graphqlWithAuth(`
378
- mutation($repositoryId: ID!, $title: String!, $body: String) {
379
- createIssue(input: {
380
- repositoryId: $repositoryId
381
- title: $title
382
- body: $body
383
- }) {
384
- issue {
385
- id
386
- number
387
- }
388
- }
389
- }
390
- `, {
391
- repositoryId: repoResponse.repository.id,
392
- title,
393
- body: body || '',
394
- });
395
- return response.createIssue.issue;
396
- }
397
- catch (error) {
398
- console.error('Failed to create issue:', error);
399
- return null;
400
- }
401
- }
402
- /**
403
- * Add an issue to a project
404
- */
405
- async addToProject(projectId, contentId) {
406
- if (!this.graphqlWithAuth)
407
- throw new Error('Not authenticated');
408
- try {
409
- const response = await this.graphqlWithAuth(`
410
- mutation($projectId: ID!, $contentId: ID!) {
411
- addProjectV2ItemById(input: {
412
- projectId: $projectId
413
- contentId: $contentId
414
- }) {
415
- item { id }
416
- }
417
- }
418
- `, { projectId, contentId });
419
- return response.addProjectV2ItemById.item.id;
420
- }
421
- catch (error) {
422
- console.error('Failed to add to project:', error);
423
- return null;
424
- }
425
- }
426
- /**
427
- * Get full issue details including body and comments
428
- */
429
- async getIssueDetails(repo, issueNumber) {
430
- if (!this.graphqlWithAuth)
431
- throw new Error('Not authenticated');
432
- try {
433
- const response = await this.graphqlWithAuth(`
434
- query($owner: String!, $name: String!, $number: Int!) {
435
- repository(owner: $owner, name: $name) {
436
- issueOrPullRequest(number: $number) {
437
- __typename
438
- ... on Issue {
439
- title
440
- body
441
- state
442
- createdAt
443
- author { login }
444
- labels(first: 10) { nodes { name color } }
445
- comments(first: 50) {
446
- totalCount
447
- nodes {
448
- author { login }
449
- body
450
- createdAt
451
- }
452
- }
453
- }
454
- ... on PullRequest {
455
- title
456
- body
457
- state
458
- createdAt
459
- author { login }
460
- labels(first: 10) { nodes { name color } }
461
- comments(first: 50) {
462
- totalCount
463
- nodes {
464
- author { login }
465
- body
466
- createdAt
467
- }
468
- }
469
- }
470
- }
471
- }
472
- }
473
- `, {
474
- owner: repo.owner,
475
- name: repo.name,
476
- number: issueNumber,
477
- });
478
- const issue = response.repository.issueOrPullRequest;
479
- if (!issue)
480
- return null;
481
- return {
482
- title: issue.title,
483
- body: issue.body,
484
- state: issue.state,
485
- type: issue.__typename === 'PullRequest' ? 'pull_request' : 'issue',
486
- createdAt: issue.createdAt,
487
- author: issue.author?.login || 'unknown',
488
- labels: issue.labels.nodes,
489
- comments: issue.comments.nodes.map(c => ({
490
- author: c.author?.login || 'unknown',
491
- body: c.body,
492
- createdAt: c.createdAt,
493
- })),
494
- totalComments: issue.comments.totalCount,
495
- };
496
- }
497
- catch (error) {
498
- console.error('Failed to get issue details:', error);
499
- return null;
500
- }
501
- }
502
- /**
503
- * Add a comment to an issue or PR
504
- */
505
- async addComment(repo, issueNumber, body) {
506
- if (!this.graphqlWithAuth)
507
- throw new Error('Not authenticated');
508
- try {
509
- // First get the issue/PR node ID
510
- const issueResponse = await this.graphqlWithAuth(`
511
- query($owner: String!, $name: String!, $number: Int!) {
512
- repository(owner: $owner, name: $name) {
513
- issueOrPullRequest(number: $number) {
514
- ... on Issue { id }
515
- ... on PullRequest { id }
516
- }
517
- }
518
- }
519
- `, {
520
- owner: repo.owner,
521
- name: repo.name,
522
- number: issueNumber,
523
- });
524
- const subjectId = issueResponse.repository.issueOrPullRequest?.id;
525
- if (!subjectId) {
526
- console.error('Issue not found');
527
- return false;
528
- }
529
- await this.graphqlWithAuth(`
530
- mutation($subjectId: ID!, $body: String!) {
531
- addComment(input: { subjectId: $subjectId, body: $body }) {
532
- commentEdge {
533
- node { id }
534
- }
535
- }
536
- }
537
- `, { subjectId, body });
538
- return true;
539
- }
540
- catch (error) {
541
- console.error('Failed to add comment:', error);
542
- return false;
543
- }
544
- }
545
- /**
546
- * Get repository collaborators (for @ mention suggestions)
547
- */
548
- async getCollaborators(repo) {
549
- if (!this.graphqlWithAuth)
550
- throw new Error('Not authenticated');
551
- try {
552
- const response = await this.graphqlWithAuth(`
553
- query($owner: String!, $name: String!) {
554
- repository(owner: $owner, name: $name) {
555
- collaborators(first: 50) {
556
- nodes { login name }
557
- }
558
- assignableUsers(first: 50) {
559
- nodes { login name }
560
- }
561
- }
562
- }
563
- `, { owner: repo.owner, name: repo.name });
564
- // Use collaborators if available, fall back to assignable users
565
- const users = response.repository.collaborators?.nodes
566
- || response.repository.assignableUsers.nodes
567
- || [];
568
- return users.map(u => ({ login: u.login, name: u.name }));
569
- }
570
- catch {
571
- // Collaborators might not be accessible, return empty
572
- return [];
573
- }
574
- }
575
- /**
576
- * Get recent issues (for # reference suggestions)
577
- */
578
- async getRecentIssues(repo, limit = 20) {
579
- if (!this.graphqlWithAuth)
580
- throw new Error('Not authenticated');
581
- try {
582
- const response = await this.graphqlWithAuth(`
583
- query($owner: String!, $name: String!, $limit: Int!) {
584
- repository(owner: $owner, name: $name) {
585
- issues(first: $limit, orderBy: { field: UPDATED_AT, direction: DESC }) {
586
- nodes {
587
- number
588
- title
589
- state
590
- }
591
- }
592
- }
593
- }
594
- `, { owner: repo.owner, name: repo.name, limit });
595
- return response.repository.issues.nodes;
596
- }
597
- catch {
598
- return [];
599
- }
600
- }
601
68
  }
602
- // Singleton instance
603
- export const api = new GitHubAPI();
69
+ // Singleton instance for CLI usage
70
+ export const api = new CLIGitHubAPI();
71
+ // Also export the class for testing
72
+ export { CLIGitHubAPI as GitHubAPI };
604
73
  //# sourceMappingURL=github-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github-api.js","sourceRoot":"","sources":["../src/github-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-api.js","sourceRoot":"","sources":["../src/github-api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACH,SAAS,IAAI,aAAa,GAG7B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,gBAAgB,GAAkB;IACpC,KAAK,CAAC,QAAQ;QACV,kCAAkC;QAClC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACpC,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,CAAC;QAED,aAAa;QACb,IAAI,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;CACJ,CAAC;AAEF;;GAEG;AACH,SAAS,eAAe,CAAC,KAAgB;IACrC,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,+CAA+C,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1G,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,oDAAoD,CAAC,CAAC;QAC3F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,YAAa,SAAQ,aAAa;IACpC;QACI,KAAK,CAAC;YACF,aAAa,EAAE,gBAAgB;YAC/B,WAAW,EAAE,eAAe;SAC/B,CAAC,CAAC;IACP,CAAC;CACJ;AAaD,mCAAmC;AACnC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAEtC,oCAAoC;AACpC,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,CAAC"}