@jupiterone/jupiterone-mcp 0.0.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -0
  3. package/dist/client/graphql/mutations.d.ts +11 -0
  4. package/dist/client/graphql/mutations.d.ts.map +1 -0
  5. package/dist/client/graphql/mutations.js +315 -0
  6. package/dist/client/graphql/mutations.js.map +1 -0
  7. package/dist/client/graphql/queries.d.ts +15 -0
  8. package/dist/client/graphql/queries.d.ts.map +1 -0
  9. package/dist/client/graphql/queries.js +692 -0
  10. package/dist/client/graphql/queries.js.map +1 -0
  11. package/dist/client/jupiterone-client.d.ts +106 -0
  12. package/dist/client/jupiterone-client.d.ts.map +1 -0
  13. package/dist/client/jupiterone-client.js +137 -0
  14. package/dist/client/jupiterone-client.js.map +1 -0
  15. package/dist/client/services/account-service.d.ts +17 -0
  16. package/dist/client/services/account-service.d.ts.map +1 -0
  17. package/dist/client/services/account-service.js +37 -0
  18. package/dist/client/services/account-service.js.map +1 -0
  19. package/dist/client/services/alert-service.d.ts +15 -0
  20. package/dist/client/services/alert-service.d.ts.map +1 -0
  21. package/dist/client/services/alert-service.js +56 -0
  22. package/dist/client/services/alert-service.js.map +1 -0
  23. package/dist/client/services/dashboard-service.d.ts +123 -0
  24. package/dist/client/services/dashboard-service.d.ts.map +1 -0
  25. package/dist/client/services/dashboard-service.js +74 -0
  26. package/dist/client/services/dashboard-service.js.map +1 -0
  27. package/dist/client/services/integration-service.d.ts +45 -0
  28. package/dist/client/services/integration-service.d.ts.map +1 -0
  29. package/dist/client/services/integration-service.js +114 -0
  30. package/dist/client/services/integration-service.js.map +1 -0
  31. package/dist/client/services/j1ql-service.d.ts +21 -0
  32. package/dist/client/services/j1ql-service.d.ts.map +1 -0
  33. package/dist/client/services/j1ql-service.js +29 -0
  34. package/dist/client/services/j1ql-service.js.map +1 -0
  35. package/dist/client/services/rule-service.d.ts +61 -0
  36. package/dist/client/services/rule-service.d.ts.map +1 -0
  37. package/dist/client/services/rule-service.js +140 -0
  38. package/dist/client/services/rule-service.js.map +1 -0
  39. package/dist/descriptions/create-dashboard-widget.md +325 -0
  40. package/dist/descriptions/create-dashboard.md +12 -0
  41. package/dist/descriptions/create-inline-question-rule.md +357 -0
  42. package/dist/descriptions/create-j1ql-from-natural-language.md +7 -0
  43. package/dist/descriptions/execute-j1ql-query.md +426 -0
  44. package/dist/descriptions/list-alerts.md +14 -0
  45. package/dist/descriptions/list-rules.md +14 -0
  46. package/dist/descriptions/update-dashboard.md +467 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +48 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/server/mcp-server.d.ts +10 -0
  52. package/dist/server/mcp-server.d.ts.map +1 -0
  53. package/dist/server/mcp-server.js +1496 -0
  54. package/dist/server/mcp-server.js.map +1 -0
  55. package/dist/types/jupiterone.d.ts +752 -0
  56. package/dist/types/jupiterone.d.ts.map +1 -0
  57. package/dist/types/jupiterone.js +2 -0
  58. package/dist/types/jupiterone.js.map +1 -0
  59. package/dist/utils/description-loader.d.ts +2 -0
  60. package/dist/utils/description-loader.d.ts.map +1 -0
  61. package/dist/utils/description-loader.js +14 -0
  62. package/dist/utils/description-loader.js.map +1 -0
  63. package/dist/utils/load-description.d.ts +2 -0
  64. package/dist/utils/load-description.d.ts.map +1 -0
  65. package/dist/utils/load-description.js +9 -0
  66. package/dist/utils/load-description.js.map +1 -0
  67. package/package.json +64 -0
@@ -0,0 +1,692 @@
1
+ export const LIST_ALERT_INSTANCES = `
2
+ query listAlertInstances($alertStatus: AlertStatus, $limit: Int, $cursor: String) {
3
+ listAlertInstances(alertStatus: $alertStatus, limit: $limit, cursor: $cursor) {
4
+ instances {
5
+ ...AlertInstanceFragment
6
+ __typename
7
+ }
8
+ pageInfo {
9
+ endCursor
10
+ hasNextPage
11
+ __typename
12
+ }
13
+ __typename
14
+ }
15
+ }
16
+
17
+ fragment AlertInstanceFragment on AlertInstance {
18
+ accountId
19
+ resourceGroupId
20
+ createdOn
21
+ dismissedOn
22
+ endReason
23
+ id
24
+ lastEvaluationBeginOn
25
+ lastEvaluationEndOn
26
+ lastEvaluationResult {
27
+ answerText
28
+ evaluationEndOn
29
+ outputs {
30
+ name
31
+ value
32
+ __typename
33
+ }
34
+ rawDataDescriptors {
35
+ name
36
+ recordCount
37
+ __typename
38
+ }
39
+ __typename
40
+ }
41
+ lastUpdatedOn
42
+ level
43
+ questionRuleInstance {
44
+ id
45
+ name
46
+ description
47
+ tags
48
+ pollingInterval
49
+ labels {
50
+ labelName
51
+ labelValue
52
+ __typename
53
+ }
54
+ __typename
55
+ }
56
+ reportRuleInstance {
57
+ name
58
+ description
59
+ __typename
60
+ }
61
+ ruleId
62
+ ruleVersion
63
+ status
64
+ users
65
+ __typename
66
+ }
67
+ `;
68
+ export const LIST_RULE_INSTANCES = `
69
+ query listRuleInstances($limit: Int, $cursor: String, $filters: ListRuleInstancesFilters) {
70
+ listRuleInstances(limit: $limit, cursor: $cursor, filters: $filters) {
71
+ questionInstances {
72
+ ...RuleInstanceFields
73
+ __typename
74
+ }
75
+ pageInfo {
76
+ hasNextPage
77
+ endCursor
78
+ __typename
79
+ }
80
+ __typename
81
+ }
82
+ }
83
+
84
+ fragment RuleInstanceFields on QuestionRuleInstance {
85
+ id
86
+ resourceGroupId
87
+ accountId
88
+ name
89
+ description
90
+ version
91
+ lastEvaluationStartOn
92
+ lastEvaluationEndOn
93
+ evaluationStep
94
+ specVersion
95
+ notifyOnFailure
96
+ triggerActionsOnNewEntitiesOnly
97
+ ignorePreviousResults
98
+ pollingInterval
99
+ templates
100
+ outputs
101
+ labels {
102
+ labelName
103
+ labelValue
104
+ __typename
105
+ }
106
+ question {
107
+ queries {
108
+ query
109
+ name
110
+ version
111
+ includeDeleted
112
+ __typename
113
+ }
114
+ __typename
115
+ }
116
+ questionId
117
+ latest
118
+ deleted
119
+ type
120
+ operations {
121
+ when
122
+ actions
123
+ __typename
124
+ }
125
+ latestAlertId
126
+ latestAlertIsActive
127
+ state {
128
+ actions
129
+ __typename
130
+ }
131
+ tags
132
+ remediationSteps
133
+ __typename
134
+ }
135
+ `;
136
+ export const GET_ACCOUNT_INFO = `
137
+ query account {
138
+ iamGetAccount {
139
+ accountId
140
+ accountSubdomain
141
+ accountName
142
+ accountOwner
143
+ status
144
+ accountType
145
+ accountLogoUrl
146
+ __typename
147
+ }
148
+ }
149
+ `;
150
+ export const GET_DASHBOARDS = `
151
+ query GetDashboards {
152
+ getDashboards(options: {includeAllJ1ManagedDashboards: true}) {
153
+ id
154
+ name
155
+ userId
156
+ category
157
+ supportedUseCase
158
+ prerequisites {
159
+ prerequisitesMet
160
+ preRequisitesGroupsFulfilled
161
+ preRequisitesGroupsRequired
162
+ __typename
163
+ }
164
+ isJ1ManagedBoard
165
+ resourceGroupId
166
+ starred
167
+ _timeUpdated
168
+ _createdAt
169
+ __typename
170
+ }
171
+ }
172
+ `;
173
+ export const GET_DASHBOARD_DETAILS = `
174
+ query solo_GetDashboard($dashboardId: String!) {
175
+ getDashboard(dashboardId: $dashboardId) {
176
+ ...InsightsDashboard
177
+ __typename
178
+ }
179
+ }
180
+
181
+ fragment InsightsDashboard on InsightsDashboard {
182
+ id
183
+ name
184
+ category
185
+ userId
186
+ supportedUseCase
187
+ isJ1ManagedBoard
188
+ published
189
+ publishedToUserIds
190
+ publishedToGroupIds
191
+ groupIds
192
+ userIds
193
+ scopeFilters
194
+ resourceGroupId
195
+ starred
196
+ _timeUpdated
197
+ _createdAt
198
+ prerequisites {
199
+ prerequisitesMet
200
+ preRequisitesGroupsFulfilled
201
+ preRequisitesGroupsRequired
202
+ __typename
203
+ }
204
+ parameters {
205
+ ...DashboardParameterFields
206
+ __typename
207
+ }
208
+ widgets {
209
+ ...InsightsWidget
210
+ __typename
211
+ }
212
+ layouts {
213
+ ...InsightsDashboardLayoutConfig
214
+ __typename
215
+ }
216
+ __typename
217
+ }
218
+
219
+ fragment DashboardParameterFields on DashboardParameter {
220
+ dashboardId
221
+ accountId
222
+ id
223
+ label
224
+ name
225
+ options
226
+ valueType
227
+ type
228
+ default
229
+ disableCustomInput
230
+ requireValue
231
+ __typename
232
+ }
233
+
234
+ fragment InsightsWidget on InsightsWidget {
235
+ id
236
+ title
237
+ description
238
+ type
239
+ questionId
240
+ noResultMessage
241
+ includeDeleted
242
+ config {
243
+ queries {
244
+ id
245
+ name
246
+ query
247
+ __typename
248
+ }
249
+ settings
250
+ postQueryFilters
251
+ disableQueryPolicyFilters
252
+ __typename
253
+ }
254
+ __typename
255
+ }
256
+
257
+ fragment InsightsDashboardLayoutConfig on InsightsDashboardLayoutConfig {
258
+ xs {
259
+ ...InsightsDashboardLayoutItem
260
+ __typename
261
+ }
262
+ sm {
263
+ ...InsightsDashboardLayoutItem
264
+ __typename
265
+ }
266
+ md {
267
+ ...InsightsDashboardLayoutItem
268
+ __typename
269
+ }
270
+ lg {
271
+ ...InsightsDashboardLayoutItem
272
+ __typename
273
+ }
274
+ xl {
275
+ ...InsightsDashboardLayoutItem
276
+ __typename
277
+ }
278
+ __typename
279
+ }
280
+
281
+ fragment InsightsDashboardLayoutItem on InsightsDashboardLayoutItem {
282
+ static
283
+ moved
284
+ w
285
+ h
286
+ x
287
+ y
288
+ i
289
+ __typename
290
+ }
291
+ `;
292
+ export const GET_INTEGRATION_DEFINITIONS = `
293
+ query IntegrationDefinitions($cursor: String, $includeConfig: Boolean = false) {
294
+ integrationDefinitions(cursor: $cursor) {
295
+ definitions {
296
+ ...IntegrationDefinitionsValues
297
+ __typename
298
+ }
299
+ pageInfo {
300
+ endCursor
301
+ __typename
302
+ }
303
+ __typename
304
+ }
305
+ }
306
+
307
+ fragment IntegrationDefinitionsValues on IntegrationDefinition {
308
+ id
309
+ name
310
+ type
311
+ title
312
+ displayMode
313
+ oAuth {
314
+ oAuthUrlGeneratorPath
315
+ __typename
316
+ }
317
+ offsiteUrl
318
+ offsiteButtonTitle
319
+ offsiteStatusQuery
320
+ integrationType
321
+ integrationClass
322
+ integrationCategory
323
+ beta
324
+ docsWebLink
325
+ repoWebLink
326
+ invocationPaused
327
+ managedExecutionDisabled
328
+ managedCreateDisabled
329
+ managedDeleteDisabled
330
+ integrationPlatformFeatures {
331
+ supportsChildInstances
332
+ supportsCollectors
333
+ supportsIngestionSourcesConfig
334
+ supportsAgentConfigurations
335
+ __typename
336
+ }
337
+ ingestionSourcesConfig {
338
+ id
339
+ title
340
+ description
341
+ defaultsToDisabled
342
+ childIngestionSourcesMetadata {
343
+ id
344
+ name
345
+ __typename
346
+ }
347
+ cannotBeDisabled
348
+ __typename
349
+ }
350
+ ingestionSourcesOverrides {
351
+ enabled
352
+ ingestionSourceId
353
+ __typename
354
+ }
355
+ totalInstanceCount
356
+ integrationJobStatusMetrics {
357
+ count
358
+ status
359
+ __typename
360
+ }
361
+ icon
362
+ provisioningType
363
+ description
364
+ customDefinitionType
365
+ ...IntegrationDefinitionConfigFragment @include(if: $includeConfig)
366
+ __typename
367
+ }
368
+
369
+ fragment IntegrationDefinitionConfigFragment on IntegrationDefinition {
370
+ configFields {
371
+ ...ConfigFieldsRecursive
372
+ __typename
373
+ }
374
+ authSections {
375
+ id
376
+ description
377
+ displayName
378
+ configFields {
379
+ ...ConfigFieldsRecursive
380
+ __typename
381
+ }
382
+ verificationDisabled
383
+ __typename
384
+ }
385
+ configSections {
386
+ displayName
387
+ configFields {
388
+ ...ConfigFieldsRecursive
389
+ __typename
390
+ }
391
+ __typename
392
+ }
393
+ __typename
394
+ }
395
+
396
+ fragment ConfigFieldsRecursive on ConfigField {
397
+ ...ConfigFieldValues
398
+ configFields {
399
+ ...ConfigFieldValues
400
+ configFields {
401
+ ...ConfigFieldValues
402
+ __typename
403
+ }
404
+ __typename
405
+ }
406
+ __typename
407
+ }
408
+
409
+ fragment ConfigFieldValues on ConfigField {
410
+ key
411
+ displayName
412
+ description
413
+ type
414
+ format
415
+ defaultValue
416
+ helperText
417
+ inputAdornment
418
+ mask
419
+ optional
420
+ immutable
421
+ readonly
422
+ computed
423
+ options {
424
+ value
425
+ description
426
+ label
427
+ webLink
428
+ default
429
+ __typename
430
+ }
431
+ __typename
432
+ }
433
+ `;
434
+ export const GET_INTEGRATION_INSTANCES = `
435
+ query IntegrationInstances($definitionId: String, $cursor: String, $limit: Int, $filter: ListIntegrationInstancesSearchFilter) {
436
+ integrationInstancesV2(
437
+ definitionId: $definitionId
438
+ cursor: $cursor
439
+ limit: $limit
440
+ filter: $filter
441
+ ) {
442
+ instances {
443
+ ...IntegrationInstanceLiteValues
444
+ __typename
445
+ }
446
+ pageInfo {
447
+ endCursor
448
+ __typename
449
+ }
450
+ __typename
451
+ }
452
+ }
453
+
454
+ fragment IntegrationInstanceLiteValues on IntegrationInstanceLite {
455
+ id
456
+ name
457
+ accountId
458
+ sourceIntegrationInstanceId
459
+ pollingInterval
460
+ pollingIntervalCronExpression {
461
+ hour
462
+ dayOfWeek
463
+ __typename
464
+ }
465
+ integrationDefinitionId
466
+ description
467
+ config
468
+ instanceRelationship
469
+ resourceGroupId
470
+ createdOn
471
+ createdBy
472
+ updatedOn
473
+ updatedBy
474
+ mostRecentJob {
475
+ status
476
+ hasSkippedSteps
477
+ createDate
478
+ __typename
479
+ }
480
+ __typename
481
+ }
482
+ `;
483
+ export const GET_INTEGRATION_JOBS = `
484
+ query IntegrationJobs($status: IntegrationJobStatus, $integrationInstanceId: String, $integrationDefinitionId: String, $integrationInstanceIds: [String], $cursor: String, $size: Int) {
485
+ integrationJobs(
486
+ status: $status
487
+ integrationInstanceId: $integrationInstanceId
488
+ integrationDefinitionId: $integrationDefinitionId
489
+ integrationInstanceIds: $integrationInstanceIds
490
+ cursor: $cursor
491
+ size: $size
492
+ ) {
493
+ jobs {
494
+ ...IntegrationJobValues
495
+ __typename
496
+ }
497
+ pageInfo {
498
+ endCursor
499
+ __typename
500
+ }
501
+ __typename
502
+ }
503
+ }
504
+
505
+ fragment IntegrationJobValues on IntegrationJob {
506
+ id
507
+ status
508
+ integrationInstanceId
509
+ createDate
510
+ endDate
511
+ hasSkippedSteps
512
+ integrationInstance {
513
+ id
514
+ name
515
+ __typename
516
+ }
517
+ integrationDefinition {
518
+ id
519
+ title
520
+ integrationType
521
+ __typename
522
+ }
523
+ __typename
524
+ }
525
+ `;
526
+ export const GET_INTEGRATION_JOB = `
527
+ query IntegrationJob($integrationJobId: ID!, $integrationInstanceId: String!) {
528
+ integrationJob(
529
+ id: $integrationJobId
530
+ integrationInstanceId: $integrationInstanceId
531
+ ) {
532
+ ...IntegrationJobValues
533
+ __typename
534
+ }
535
+ }
536
+
537
+ fragment IntegrationJobValues on IntegrationJob {
538
+ id
539
+ status
540
+ integrationInstanceId
541
+ createDate
542
+ endDate
543
+ hasSkippedSteps
544
+ integrationInstance {
545
+ id
546
+ name
547
+ __typename
548
+ }
549
+ integrationDefinition {
550
+ id
551
+ title
552
+ integrationType
553
+ __typename
554
+ }
555
+ __typename
556
+ }
557
+ `;
558
+ export const GET_INTEGRATION_EVENTS = `
559
+ query ListEvents($jobId: String!, $integrationInstanceId: String!, $cursor: String, $size: Int) {
560
+ integrationEvents(
561
+ size: $size
562
+ cursor: $cursor
563
+ jobId: $jobId
564
+ integrationInstanceId: $integrationInstanceId
565
+ ) {
566
+ events {
567
+ ...IntegrationInstanceEventValues
568
+ __typename
569
+ }
570
+ pageInfo {
571
+ endCursor
572
+ hasNextPage
573
+ __typename
574
+ }
575
+ __typename
576
+ }
577
+ }
578
+
579
+ fragment IntegrationInstanceEventValues on IntegrationEvent {
580
+ id
581
+ name
582
+ description
583
+ createDate
584
+ jobId
585
+ level
586
+ eventCode
587
+ __typename
588
+ }
589
+ `;
590
+ export const LIST_RULE_EVALUATIONS = `
591
+ query listCollectionResults($collectionType: CollectionType!, $collectionOwnerId: String!, $beginTimestamp: Long!, $endTimestamp: Long!, $limit: Int, $cursor: String, $tag: String) {
592
+ listCollectionResults(
593
+ collectionType: $collectionType
594
+ collectionOwnerId: $collectionOwnerId
595
+ beginTimestamp: $beginTimestamp
596
+ endTimestamp: $endTimestamp
597
+ limit: $limit
598
+ cursor: $cursor
599
+ tag: $tag
600
+ ) {
601
+ results {
602
+ accountId
603
+ collectionOwnerId
604
+ collectionOwnerVersion
605
+ collectionType
606
+ outputs {
607
+ name
608
+ value
609
+ __typename
610
+ }
611
+ rawDataDescriptors {
612
+ name
613
+ persistedResultType
614
+ rawDataKey
615
+ recordCount
616
+ recordCreateCount
617
+ recordDeleteCount
618
+ recordUpdateCount
619
+ __typename
620
+ }
621
+ tag
622
+ timestamp
623
+ __typename
624
+ }
625
+ pageInfo {
626
+ endCursor
627
+ hasNextPage
628
+ __typename
629
+ }
630
+ __typename
631
+ }
632
+ }
633
+ `;
634
+ export const GET_RULE_EVALUATION_DETAILS = `
635
+ query ruleEvaluationDetails($ruleEvaluationDetailsInput: RuleEvaluationDetailsInput!) {
636
+ ruleEvaluationDetails(input: $ruleEvaluationDetailsInput) {
637
+ accountRuleId
638
+ startedOn
639
+ question {
640
+ totalDuration
641
+ queries {
642
+ status
643
+ queryEvaluationDetails {
644
+ name
645
+ duration
646
+ status
647
+ error
648
+ __typename
649
+ }
650
+ __typename
651
+ }
652
+ __typename
653
+ }
654
+ conditions {
655
+ status
656
+ condition
657
+ __typename
658
+ }
659
+ actions {
660
+ status
661
+ actionEvaluationDetails {
662
+ actionId
663
+ action
664
+ status
665
+ duration
666
+ finishedOn
667
+ logs
668
+ __typename
669
+ }
670
+ __typename
671
+ }
672
+ ruleEvaluationOrigin
673
+ __typename
674
+ }
675
+ }
676
+ `;
677
+ export const GET_RAW_DATA_DOWNLOAD_URL = `
678
+ query getRawDataDownloadUrl($rawDataKey: String!) {
679
+ getRawDataDownloadUrl(rawDataKey: $rawDataKey)
680
+ }
681
+ `;
682
+ // J1QL Query Executor
683
+ export const QUERY_V1 = `
684
+ query J1QL($query: String!, $variables: JSON, $cursor: String, $scopeFilters: [JSON!], $flags: QueryV1Flags) {
685
+ queryV1(query: $query, variables: $variables, cursor: $cursor, scopeFilters: $scopeFilters, flags: $flags) {
686
+ type
687
+ data
688
+ cursor
689
+ }
690
+ }
691
+ `;
692
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/client/graphql/queries.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEnC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmElC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;CAa/B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB7B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHpC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6I1C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDxC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BlC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CpC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C1C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;CAIxC,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;CAQvB,CAAC"}