@wundergraph/composition 0.6.2 → 0.7.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.
@@ -1,12 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefinedArgumentsForDirective = exports.getDirectiveDefinitionArgumentSets = exports.validateEntityKeys = exports.areNodeKindAndDirectiveLocationCompatible = exports.unionContainerToNode = exports.schemaContainerToNode = exports.scalarContainerToNode = exports.objectLikeContainerToNode = exports.inputObjectContainerToNode = exports.enumContainerToNode = void 0;
3
+ exports.validateDirectivesWithFieldSet = exports.getNormalizedFieldSet = exports.extractFieldSetValue = exports.addNonExternalFieldsToSet = exports.getDefinedArgumentsForDirective = exports.getDirectiveDefinitionArgumentSets = exports.areNodeKindAndDirectiveLocationCompatible = exports.unionContainerToNode = exports.schemaContainerToNode = exports.scalarContainerToNode = exports.objectLikeContainerToNode = exports.inputObjectContainerToNode = exports.enumContainerToNode = exports.newFieldSetContainer = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  const utils_1 = require("../utils/utils");
6
6
  const utils_2 = require("../ast/utils");
7
7
  const string_constants_1 = require("../utils/string-constants");
8
8
  const type_merging_1 = require("../type-merging/type-merging");
9
9
  const errors_1 = require("../errors/errors");
10
+ const constants_1 = require("../utils/constants");
11
+ function newFieldSetContainer() {
12
+ return {
13
+ keys: new Set(),
14
+ provides: new Map(),
15
+ requires: new Map(),
16
+ };
17
+ }
18
+ exports.newFieldSetContainer = newFieldSetContainer;
10
19
  function childMapToValueArray(factory, map, parentTypeName) {
11
20
  const valueArray = [];
12
21
  for (const childContainer of map.values()) {
@@ -182,115 +191,464 @@ function areNodeKindAndDirectiveLocationCompatible(kind, directiveDefinitionNode
182
191
  return false;
183
192
  }
184
193
  exports.areNodeKindAndDirectiveLocationCompatible = areNodeKindAndDirectiveLocationCompatible;
185
- function validateEntityKeys(factory, objectTypeName, isExtension = false) {
186
- const entityKeyMap = factory.entityMap.get(objectTypeName);
187
- if (!entityKeyMap) {
188
- return;
189
- }
190
- for (const entityKey of entityKeyMap.values()) {
191
- const errorMessages = [];
192
- if (isExtension) {
193
- validateExtensionEntityKey(factory, objectTypeName, entityKey, errorMessages);
194
- }
195
- else {
196
- validateBaseObjectEntityKey(factory, objectTypeName, entityKey, errorMessages);
197
- }
198
- if (errorMessages.length > 0) {
199
- factory.errors.push((0, errors_1.invalidKeyDirectiveError)(objectTypeName, errorMessages));
194
+ function getDirectiveDefinitionArgumentSets(args, allArguments, requiredArguments) {
195
+ for (const argument of args) {
196
+ const argumentName = argument.name.value;
197
+ allArguments.add(argumentName);
198
+ // If the definition defines a default argument, it's not necessary to include it
199
+ if (argument.type.kind === graphql_1.Kind.NON_NULL_TYPE && !argument.defaultValue) {
200
+ requiredArguments.add(argumentName);
200
201
  }
201
202
  }
202
203
  }
203
- exports.validateEntityKeys = validateEntityKeys;
204
- function validateEntityKey(factory, entityKey, object, objectTypeName, errorMessages) {
205
- const keyFields = new Set();
206
- for (const fieldName of entityKey.siblings) {
207
- const field = object.fields.get(fieldName);
208
- if (!field) {
209
- errorMessages.push((0, errors_1.undefinedEntityKeyErrorMessage)(fieldName, objectTypeName));
204
+ exports.getDirectiveDefinitionArgumentSets = getDirectiveDefinitionArgumentSets;
205
+ function getDefinedArgumentsForDirective(args, allArguments, directiveName, hostPath, errorMessages) {
206
+ const definedArguments = new Set();
207
+ for (const argument of args) {
208
+ const argumentName = argument.name.value;
209
+ if (!allArguments.has(argumentName)) {
210
+ errorMessages.push((0, errors_1.unexpectedDirectiveArgumentErrorMessage)(directiveName, argumentName));
210
211
  continue;
211
212
  }
212
- // Entity keys are always shareable
213
- keyFields.add(fieldName);
214
- if (entityKey.nestedKeys?.some((nestedKey) => nestedKey.parent === fieldName)) {
213
+ if (definedArguments.has(argumentName)) {
214
+ errorMessages.push((0, errors_1.duplicateDirectiveArgumentDefinitionErrorMessage)(directiveName, hostPath, argumentName));
215
215
  continue;
216
216
  }
217
- const fieldPath = `${objectTypeName}.${fieldName}`;
218
- const fieldTypeName = (0, type_merging_1.getNamedTypeForChild)(fieldPath, field.node.type);
219
- const parentContainer = factory.parents.get(fieldTypeName);
220
- if (parentContainer && parentContainer.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION) {
221
- errorMessages.push((0, errors_1.objectInCompositeKeyWithoutSelectionsErrorMessage)(fieldName, fieldTypeName));
222
- }
217
+ definedArguments.add(argumentName);
223
218
  }
224
- if (keyFields.size > 0) {
225
- const entityKeyParent = factory.keyFieldsByParentTypeName.get(objectTypeName);
226
- if (entityKeyParent) {
227
- (0, utils_1.addIterableValuesToSet)(keyFields, entityKeyParent);
228
- }
229
- else {
230
- factory.keyFieldsByParentTypeName.set(objectTypeName, keyFields);
219
+ return definedArguments;
220
+ }
221
+ exports.getDefinedArgumentsForDirective = getDefinedArgumentsForDirective;
222
+ function addNonExternalFieldsToSet(fields, fieldNames) {
223
+ for (const [fieldName, fieldContainer] of fields) {
224
+ if (fieldContainer.directives.has(string_constants_1.EXTERNAL)) {
225
+ continue;
231
226
  }
227
+ fieldNames.add(fieldName);
232
228
  }
233
- if (errorMessages.length > 0 || !entityKey.nestedKeys) {
229
+ }
230
+ exports.addNonExternalFieldsToSet = addNonExternalFieldsToSet;
231
+ function extractFieldSetValue(name, map, directives) {
232
+ // ALl directive validation errors are accounted for later
233
+ // Requires and provides should not be repeatable, so the length should be no more than 1
234
+ if (!directives || directives.length > 1) {
234
235
  return;
235
236
  }
236
- for (const nestedKey of entityKey.nestedKeys) {
237
- const field = object.fields.get(nestedKey.parent);
238
- if (!field) {
239
- errorMessages.push((0, errors_1.undefinedEntityKeyErrorMessage)(nestedKey.parent, objectTypeName));
240
- continue;
241
- }
242
- const fieldPath = `${objectTypeName}.${field.name}`;
243
- validateBaseObjectEntityKey(factory, (0, type_merging_1.getNamedTypeForChild)(fieldPath, field.node.type), nestedKey, errorMessages);
237
+ // There should be exactly one argument
238
+ const args = directives[0].arguments;
239
+ if (!args || args.length !== 1) {
240
+ return;
244
241
  }
242
+ // The argument should be a string type named "fields"
243
+ const fieldsArgument = args[0];
244
+ if (fieldsArgument.name.value !== string_constants_1.FIELDS || fieldsArgument.value.kind !== graphql_1.Kind.STRING) {
245
+ return;
246
+ }
247
+ map.set(name, fieldsArgument.value.value);
248
+ }
249
+ exports.extractFieldSetValue = extractFieldSetValue;
250
+ function getNormalizedFieldSet(documentNode) {
251
+ /*
252
+ 1. Lexicographically sort the DocumentNode
253
+ 2. Convert to a string
254
+ 3. Replace consecutive whitespace with a single space
255
+ 4. Remove the leading and trailing "{ " and " }", respectively
256
+ */
257
+ return (0, graphql_1.print)((0, utils_2.lexicographicallySortDocumentNode)(documentNode))
258
+ .replaceAll(/\s+/g, ' ')
259
+ .slice(2, -2);
245
260
  }
246
- function validateBaseObjectEntityKey(factory, objectTypeName, entityKey, errorMessages) {
247
- const object = factory.parents.get(objectTypeName) || factory.extensions.get(objectTypeName);
248
- if (!object) {
249
- throw (0, errors_1.undefinedParentFatalError)(objectTypeName);
261
+ exports.getNormalizedFieldSet = getNormalizedFieldSet;
262
+ function validateNonRepeatableFieldSet(factory, parentContainer, fieldSet, directiveFieldName) {
263
+ // Create a new selection set so that the value can be parsed as a new DocumentNode
264
+ const { error, documentNode } = (0, utils_2.safeParse)('{' + fieldSet + '}');
265
+ if (error || !documentNode) {
266
+ return { errorMessage: (0, errors_1.unparsableFieldSetErrorMessage)(fieldSet, error) };
250
267
  }
251
- if (object.kind !== graphql_1.Kind.OBJECT_TYPE_DEFINITION && object.kind !== graphql_1.Kind.OBJECT_TYPE_EXTENSION) {
252
- errorMessages.push((0, errors_1.unexpectedParentKindErrorMessage)(objectTypeName, 'object or object extension', (0, utils_1.kindToTypeString)(object.kind)));
253
- return;
268
+ let errorMessage;
269
+ const parentContainers = [parentContainer];
270
+ const definedFields = [];
271
+ let currentDepth = -1;
272
+ let shouldDefineSelectionSet = true;
273
+ let lastFieldName = directiveFieldName;
274
+ let fieldPath = parentContainer.name.value;
275
+ (0, graphql_1.visit)(documentNode, {
276
+ Argument: {
277
+ enter(node) {
278
+ return false;
279
+ },
280
+ },
281
+ Field: {
282
+ enter(node) {
283
+ // const grandparentContainer = parentContainers[currentDepth - 1];
284
+ const parentContainer = parentContainers[currentDepth];
285
+ const parentTypeName = parentContainer.name.value;
286
+ if (parentContainer.kind === graphql_1.Kind.UNION_TYPE_DEFINITION) {
287
+ errorMessage = (0, errors_1.invalidSelectionOnUnionErrorMessage)(fieldSet, fieldPath, parentTypeName);
288
+ return graphql_1.BREAK;
289
+ }
290
+ // If an object-like was just visited, a selection set should have been entered
291
+ if (shouldDefineSelectionSet) {
292
+ errorMessage = (0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, fieldPath, parentTypeName, (0, utils_1.kindToTypeString)(parentContainer.kind));
293
+ return graphql_1.BREAK;
294
+ }
295
+ const fieldName = node.name.value;
296
+ fieldPath = `${parentTypeName}.${fieldName}`;
297
+ lastFieldName = fieldName;
298
+ const fieldContainer = parentContainer.fields.get(fieldName);
299
+ // undefined if the field does not exist on the parent
300
+ if (!fieldContainer) {
301
+ errorMessage = (0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, parentTypeName, fieldName);
302
+ return graphql_1.BREAK;
303
+ }
304
+ if (fieldContainer.arguments.size) {
305
+ errorMessage = (0, errors_1.argumentsInKeyFieldSetErrorMessage)(fieldSet, fieldPath);
306
+ return graphql_1.BREAK;
307
+ }
308
+ if (definedFields[currentDepth].has(fieldName)) {
309
+ errorMessage = (0, errors_1.duplicateFieldInFieldSetErrorMessage)(fieldSet, fieldPath);
310
+ return graphql_1.BREAK;
311
+ }
312
+ definedFields[currentDepth].add(fieldName);
313
+ const namedTypeName = (0, type_merging_1.getNamedTypeForChild)(fieldPath, fieldContainer.node.type);
314
+ // The base scalars are not in the parents map
315
+ if (constants_1.BASE_SCALARS.has(namedTypeName)) {
316
+ return;
317
+ }
318
+ // The child could itself be a parent and could exist as an object extension
319
+ const childContainer = factory.parents.get(namedTypeName)
320
+ || factory.extensions.get(namedTypeName);
321
+ if (!childContainer) {
322
+ // Should not be possible to receive this error
323
+ errorMessage = (0, errors_1.unknownTypeInFieldSetErrorMessage)(fieldSet, fieldPath, namedTypeName);
324
+ return graphql_1.BREAK;
325
+ }
326
+ if (childContainer.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION
327
+ || childContainer.kind === graphql_1.Kind.OBJECT_TYPE_EXTENSION
328
+ || childContainer.kind === graphql_1.Kind.INTERFACE_TYPE_DEFINITION
329
+ || childContainer.kind === graphql_1.Kind.UNION_TYPE_DEFINITION) {
330
+ shouldDefineSelectionSet = true;
331
+ parentContainers.push(childContainer);
332
+ return;
333
+ }
334
+ },
335
+ },
336
+ InlineFragment: {
337
+ enter(node) {
338
+ const parentContainer = parentContainers[currentDepth];
339
+ const parentTypeName = parentContainer.name.value;
340
+ if (!node.typeCondition) {
341
+ errorMessage = (0, errors_1.inlineFragmentWithoutTypeConditionErrorMessage)(fieldSet, fieldPath);
342
+ return graphql_1.BREAK;
343
+ }
344
+ const typeConditionName = node.typeCondition.name.value;
345
+ // It's possible to infinitely define fragments
346
+ if (typeConditionName === parentTypeName) {
347
+ parentContainers.push(parentContainer);
348
+ shouldDefineSelectionSet = true;
349
+ return;
350
+ }
351
+ if (!(0, utils_2.isKindAbstract)(parentContainer.kind)) {
352
+ errorMessage = (0, errors_1.invalidInlineFragmentTypeErrorMessage)(fieldSet, fieldPath, typeConditionName, parentTypeName);
353
+ return graphql_1.BREAK;
354
+ }
355
+ const fragmentTypeContainer = factory.parents.get(typeConditionName)
356
+ || factory.extensions.get(typeConditionName);
357
+ if (!fragmentTypeContainer) {
358
+ errorMessage = (0, errors_1.unknownInlineFragmentTypeConditionErrorMessage)(fieldSet, fieldPath, typeConditionName);
359
+ return graphql_1.BREAK;
360
+ }
361
+ if (fragmentTypeContainer.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION
362
+ && fragmentTypeContainer.kind !== graphql_1.Kind.OBJECT_TYPE_DEFINITION
363
+ && fragmentTypeContainer.kind !== graphql_1.Kind.OBJECT_TYPE_EXTENSION
364
+ && fragmentTypeContainer.kind !== graphql_1.Kind.UNION_TYPE_DEFINITION) {
365
+ errorMessage = (0, errors_1.invalidInlineFragmentTypeConditionTypeErrorMessage)(fieldSet, fieldPath, typeConditionName, (0, utils_1.kindToTypeString)(fragmentTypeContainer.kind));
366
+ return graphql_1.BREAK;
367
+ }
368
+ const concreteTypeNames = factory.abstractToConcreteTypeNames.get(parentTypeName);
369
+ if (!concreteTypeNames || !concreteTypeNames.has(typeConditionName)) {
370
+ errorMessage = (0, errors_1.invalidInlineFragmentTypeConditionErrorMessage)(fieldSet, fieldPath, typeConditionName, (0, utils_1.kindToTypeString)(parentContainer.kind), parentTypeName);
371
+ return graphql_1.BREAK;
372
+ }
373
+ shouldDefineSelectionSet = true;
374
+ parentContainers.push(fragmentTypeContainer);
375
+ },
376
+ leave() {
377
+ parentContainers.pop();
378
+ },
379
+ },
380
+ SelectionSet: {
381
+ enter() {
382
+ if (!shouldDefineSelectionSet) {
383
+ const parentContainer = parentContainers[currentDepth];
384
+ if (parentContainer.kind === graphql_1.Kind.UNION_TYPE_DEFINITION) {
385
+ // Should never happen
386
+ errorMessage = (0, errors_1.unparsableFieldSetSelectionErrorMessage)(fieldSet, lastFieldName);
387
+ return graphql_1.BREAK;
388
+ }
389
+ const fieldContainer = parentContainer.fields.get(lastFieldName);
390
+ if (!fieldContainer) {
391
+ errorMessage = (0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, fieldPath, lastFieldName);
392
+ return graphql_1.BREAK;
393
+ }
394
+ const fieldNamedTypeName = (0, type_merging_1.getNamedTypeForChild)(fieldPath, fieldContainer.node.type);
395
+ // If the child is not found, it's a base scalar. Undefined types would have already been handled.
396
+ const childContainer = factory.parents.get(fieldNamedTypeName);
397
+ const childKind = childContainer
398
+ ? childContainer.kind : graphql_1.Kind.SCALAR_TYPE_DEFINITION;
399
+ errorMessage = (0, errors_1.invalidSelectionSetDefinitionErrorMessage)(fieldSet, fieldPath, fieldNamedTypeName, (0, utils_1.kindToTypeString)(childKind));
400
+ return graphql_1.BREAK;
401
+ }
402
+ currentDepth += 1;
403
+ shouldDefineSelectionSet = false;
404
+ if (currentDepth < 0 || currentDepth >= parentContainers.length) {
405
+ errorMessage = (0, errors_1.unparsableFieldSetSelectionErrorMessage)(fieldSet, lastFieldName);
406
+ return graphql_1.BREAK;
407
+ }
408
+ definedFields.push(new Set());
409
+ },
410
+ leave() {
411
+ if (shouldDefineSelectionSet) {
412
+ const parentContainer = parentContainers[currentDepth + 1];
413
+ errorMessage = (0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, fieldPath, parentContainer.name.value, (0, utils_1.kindToTypeString)(parentContainer.kind));
414
+ shouldDefineSelectionSet = false;
415
+ }
416
+ // Empty selection sets would be a parse error, so it is unnecessary to handle them
417
+ currentDepth -= 1;
418
+ parentContainers.pop();
419
+ definedFields.pop();
420
+ },
421
+ },
422
+ });
423
+ if (errorMessage) {
424
+ return { errorMessage };
254
425
  }
255
- validateEntityKey(factory, entityKey, object, objectTypeName, errorMessages);
426
+ return { configuration: { fieldName: directiveFieldName, selectionSet: getNormalizedFieldSet(documentNode) } };
256
427
  }
257
- function validateExtensionEntityKey(factory, objectTypeName, entityKey, errorMessages) {
258
- const objectExtension = factory.extensions.get(objectTypeName);
259
- if (!objectExtension) {
260
- throw (0, errors_1.undefinedParentFatalError)(objectTypeName);
428
+ function validateKeyFieldSets(factory, entityContainer, fieldSets, fieldNames) {
429
+ const entityTypeName = entityContainer.name.value;
430
+ const errorMessages = [];
431
+ const configurations = [];
432
+ const keyFieldNames = new Set();
433
+ for (const fieldSet of fieldSets) {
434
+ // Create a new selection set so that the value can be parsed as a new DocumentNode
435
+ const { error, documentNode } = (0, utils_2.safeParse)('{' + fieldSet + '}');
436
+ if (error || !documentNode) {
437
+ errorMessages.push((0, errors_1.unparsableFieldSetErrorMessage)(fieldSet, error));
438
+ continue;
439
+ }
440
+ const parentContainers = [entityContainer];
441
+ const definedFields = [];
442
+ let currentDepth = -1;
443
+ let shouldDefineSelectionSet = true;
444
+ let lastFieldName = '';
445
+ (0, graphql_1.visit)(documentNode, {
446
+ Argument: {
447
+ enter(node) {
448
+ errorMessages.push((0, errors_1.unexpectedArgumentErrorMessage)(fieldSet, `${parentContainers[currentDepth].name.value}.${lastFieldName}`, node.name.value));
449
+ return graphql_1.BREAK;
450
+ },
451
+ },
452
+ Field: {
453
+ enter(node) {
454
+ const grandparentContainer = parentContainers[currentDepth - 1];
455
+ const parentContainer = parentContainers[currentDepth];
456
+ const parentTypeName = parentContainer.name.value;
457
+ // If an object-like was just visited, a selection set should have been entered
458
+ if (shouldDefineSelectionSet) {
459
+ errorMessages.push((0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, `${grandparentContainer.name.value}.${lastFieldName}`, parentTypeName, (0, utils_1.kindToTypeString)(parentContainer.kind)));
460
+ return graphql_1.BREAK;
461
+ }
462
+ const fieldName = node.name.value;
463
+ const fieldPath = `${parentTypeName}.${fieldName}`;
464
+ lastFieldName = fieldName;
465
+ const fieldContainer = parentContainer.fields.get(fieldName);
466
+ // undefined if the field does not exist on the parent
467
+ if (!fieldContainer) {
468
+ errorMessages.push((0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, parentTypeName, fieldName));
469
+ return graphql_1.BREAK;
470
+ }
471
+ if (fieldContainer.arguments.size) {
472
+ errorMessages.push((0, errors_1.argumentsInKeyFieldSetErrorMessage)(fieldSet, fieldPath));
473
+ return graphql_1.BREAK;
474
+ }
475
+ if (definedFields[currentDepth].has(fieldName)) {
476
+ errorMessages.push((0, errors_1.duplicateFieldInFieldSetErrorMessage)(fieldSet, fieldPath));
477
+ return graphql_1.BREAK;
478
+ }
479
+ definedFields[currentDepth].add(fieldName);
480
+ // Depth 0 is the original parent type
481
+ // If a field is external, but it's part of a key FieldSet, it will be included in the root configuration
482
+ if (currentDepth === 0) {
483
+ keyFieldNames.add(fieldName);
484
+ fieldNames.add(fieldName);
485
+ }
486
+ (0, utils_1.getValueOrDefault)(factory.keyFieldsByParentTypeName, parentTypeName, () => new Set)
487
+ .add(fieldName);
488
+ const namedTypeName = (0, type_merging_1.getNamedTypeForChild)(fieldPath, fieldContainer.node.type);
489
+ // The base scalars are not in the parents map
490
+ if (constants_1.BASE_SCALARS.has(namedTypeName)) {
491
+ return;
492
+ }
493
+ // The child could itself be a parent and could exist as an object extension
494
+ const childContainer = factory.parents.get(namedTypeName)
495
+ || factory.extensions.get(namedTypeName);
496
+ if (!childContainer) {
497
+ // Should not be possible to receive this error
498
+ errorMessages.push((0, errors_1.unknownTypeInFieldSetErrorMessage)(fieldSet, fieldPath, namedTypeName));
499
+ return graphql_1.BREAK;
500
+ }
501
+ if (childContainer.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION
502
+ || childContainer.kind === graphql_1.Kind.OBJECT_TYPE_EXTENSION) {
503
+ shouldDefineSelectionSet = true;
504
+ parentContainers.push(childContainer);
505
+ return;
506
+ }
507
+ // interfaces and unions are invalid in a key directive
508
+ if ((0, utils_2.isKindAbstract)(childContainer.kind)) {
509
+ errorMessages.push((0, errors_1.abstractTypeInKeyFieldSetErrorMessage)(fieldSet, fieldPath, namedTypeName, (0, utils_1.kindToTypeString)(childContainer.kind)));
510
+ return graphql_1.BREAK;
511
+ }
512
+ },
513
+ },
514
+ InlineFragment: {
515
+ enter() {
516
+ errorMessages.push(errors_1.inlineFragmentInFieldSetErrorMessage);
517
+ return graphql_1.BREAK;
518
+ },
519
+ },
520
+ SelectionSet: {
521
+ enter() {
522
+ if (!shouldDefineSelectionSet) {
523
+ const parentContainer = parentContainers[currentDepth];
524
+ const parentTypeName = parentContainer.name.value;
525
+ const fieldPath = `${parentTypeName}.${lastFieldName}`;
526
+ // If the last field is not an object-like
527
+ const fieldContainer = parentContainer.fields.get(lastFieldName);
528
+ if (!fieldContainer) {
529
+ errorMessages.push((0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, fieldPath, lastFieldName));
530
+ return graphql_1.BREAK;
531
+ }
532
+ const fieldNamedTypeName = (0, type_merging_1.getNamedTypeForChild)(fieldPath, fieldContainer.node.type);
533
+ // If the child is not found, it's a base scalar. Undefined types would have already been handled.
534
+ const childContainer = factory.parents.get(fieldNamedTypeName);
535
+ const childKind = childContainer
536
+ ? childContainer.kind : graphql_1.Kind.SCALAR_TYPE_DEFINITION;
537
+ errorMessages.push((0, errors_1.invalidSelectionSetDefinitionErrorMessage)(fieldSet, fieldPath, fieldNamedTypeName, (0, utils_1.kindToTypeString)(childKind)));
538
+ return graphql_1.BREAK;
539
+ }
540
+ currentDepth += 1;
541
+ shouldDefineSelectionSet = false;
542
+ if (currentDepth < 0 || currentDepth >= parentContainers.length) {
543
+ errorMessages.push((0, errors_1.unparsableFieldSetSelectionErrorMessage)(fieldSet, lastFieldName));
544
+ return graphql_1.BREAK;
545
+ }
546
+ definedFields.push(new Set());
547
+ },
548
+ leave() {
549
+ if (shouldDefineSelectionSet) {
550
+ const grandparentContainer = parentContainers[currentDepth];
551
+ const grandparentTypeName = grandparentContainer.name.value;
552
+ const parentContainer = parentContainers[currentDepth + 1];
553
+ const fieldPath = `${grandparentTypeName}.${lastFieldName}`;
554
+ errorMessages.push((0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, fieldPath, parentContainer.name.value, (0, utils_1.kindToTypeString)(parentContainer.kind)));
555
+ shouldDefineSelectionSet = false;
556
+ }
557
+ // Empty selection sets would be a parse error, so it is unnecessary to handle them
558
+ currentDepth -= 1;
559
+ parentContainers.pop();
560
+ definedFields.pop();
561
+ },
562
+ },
563
+ });
564
+ if (!errorMessages.length) {
565
+ configurations.push({ fieldName: '', selectionSet: getNormalizedFieldSet(documentNode) });
566
+ }
261
567
  }
262
- if (objectExtension.kind !== graphql_1.Kind.OBJECT_TYPE_EXTENSION) {
263
- errorMessages.push((0, errors_1.unexpectedParentKindErrorMessage)(objectTypeName, objectExtension.kind, graphql_1.Kind.OBJECT_TYPE_EXTENSION));
568
+ if (errorMessages.length) {
569
+ factory.errors.push((0, errors_1.invalidKeyDirectivesError)(entityTypeName, errorMessages));
264
570
  return;
265
571
  }
266
- validateEntityKey(factory, entityKey, objectExtension, objectTypeName, errorMessages);
572
+ if (configurations.length) {
573
+ return configurations;
574
+ }
267
575
  }
268
- function getDirectiveDefinitionArgumentSets(args, allArguments, requiredArguments) {
269
- for (const argument of args) {
270
- const argumentName = argument.name.value;
271
- allArguments.add(argumentName);
272
- // If the definition defines a default argument, it's not necessary to include it
273
- if (argument.type.kind === graphql_1.Kind.NON_NULL_TYPE && !argument.defaultValue) {
274
- requiredArguments.add(argumentName);
275
- }
576
+ var FieldSetDirective;
577
+ (function (FieldSetDirective) {
578
+ FieldSetDirective["PROVIDES"] = "provides";
579
+ FieldSetDirective["REQUIRES"] = "requires";
580
+ })(FieldSetDirective || (FieldSetDirective = {}));
581
+ function getFieldSetParent(factory, fieldSetDirective, parentContainer, fieldName, parentTypeName) {
582
+ if (fieldSetDirective !== FieldSetDirective.PROVIDES) {
583
+ return factory.entities.has(parentTypeName) ? { fieldSetParentContainer: parentContainer } : {};
584
+ }
585
+ const fieldContainer = (0, utils_1.getOrThrowError)(parentContainer.fields, fieldName, `${parentTypeName}.fields`);
586
+ const fieldNamedTypeName = (0, type_merging_1.getNamedTypeForChild)(`${parentTypeName}.${fieldName}`, fieldContainer.node.type);
587
+ if (!factory.entities.has(fieldNamedTypeName)) {
588
+ return {};
589
+ }
590
+ const childContainer = factory.parents.get(fieldNamedTypeName)
591
+ || factory.extensions.get(fieldNamedTypeName);
592
+ if (!childContainer
593
+ || (childContainer.kind !== graphql_1.Kind.OBJECT_TYPE_DEFINITION && childContainer.kind !== graphql_1.Kind.OBJECT_TYPE_EXTENSION)) {
594
+ return {
595
+ errorString: (0, errors_1.unknownProvidesEntityErrorMessage)(`${parentTypeName}.${fieldName}`, fieldNamedTypeName),
596
+ };
276
597
  }
598
+ return { fieldSetParentContainer: childContainer };
277
599
  }
278
- exports.getDirectiveDefinitionArgumentSets = getDirectiveDefinitionArgumentSets;
279
- function getDefinedArgumentsForDirective(args, allArguments, directiveName, hostPath, errorMessages) {
280
- const definedArguments = new Set();
281
- for (const argument of args) {
282
- const argumentName = argument.name.value;
283
- if (!allArguments.has(argumentName)) {
284
- errorMessages.push((0, errors_1.unexpectedDirectiveArgumentErrorMessage)(directiveName, argumentName));
600
+ function validateProvidesOrRequires(factory, parentContainer, fieldSetByFieldName, fieldSetDirective) {
601
+ const errorMessages = [];
602
+ const configurations = [];
603
+ const parentTypeName = parentContainer.name.value;
604
+ for (const [fieldName, fieldSet] of fieldSetByFieldName) {
605
+ /* It is possible to encounter a field before encountering the type definition.
606
+ Consequently, at that time, it is unknown whether the named type is an entity.
607
+ If it isn't, the @provides directive does not make sense and can be ignored.
608
+ */
609
+ const { fieldSetParentContainer, errorString } = getFieldSetParent(factory, fieldSetDirective, parentContainer, fieldName, parentTypeName);
610
+ const fieldPath = `${parentTypeName}.${fieldName}`;
611
+ if (errorString) {
612
+ errorMessages.push(errorString);
285
613
  continue;
286
614
  }
287
- if (definedArguments.has(argumentName)) {
288
- errorMessages.push((0, errors_1.duplicateDirectiveArgumentDefinitionErrorMessage)(directiveName, hostPath, argumentName));
615
+ if (!fieldSetParentContainer) {
289
616
  continue;
290
617
  }
291
- definedArguments.add(argumentName);
618
+ const { errorMessage, configuration } = validateNonRepeatableFieldSet(factory, fieldSetParentContainer, fieldSet, fieldName);
619
+ if (errorMessage) {
620
+ errorMessages.push(` On "${parentTypeName}.${fieldName}" —` + errorMessage);
621
+ continue;
622
+ }
623
+ if (configuration) {
624
+ configurations.push(configuration);
625
+ continue;
626
+ }
627
+ // Should never happen
628
+ throw (0, errors_1.invalidConfigurationResultFatalError)(fieldPath);
629
+ }
630
+ if (errorMessages.length) {
631
+ factory.errors.push((0, errors_1.invalidProvidesOrRequiresDirectivesError)(fieldSetDirective, errorMessages));
632
+ return;
633
+ }
634
+ if (configurations.length) {
635
+ return configurations;
292
636
  }
293
- return definedArguments;
294
637
  }
295
- exports.getDefinedArgumentsForDirective = getDefinedArgumentsForDirective;
638
+ function validateDirectivesWithFieldSet(factory, parentContainer, fieldSetContainer) {
639
+ const configurationData = (0, utils_1.getOrThrowError)(factory.configurationDataMap, parentContainer.name.value, 'configurationDataMap');
640
+ const keys = validateKeyFieldSets(factory, parentContainer, fieldSetContainer.keys, configurationData.fieldNames);
641
+ if (keys) {
642
+ configurationData.keys = keys;
643
+ }
644
+ const provides = validateProvidesOrRequires(factory, parentContainer, fieldSetContainer.provides, FieldSetDirective.PROVIDES);
645
+ if (provides) {
646
+ configurationData.provides = provides;
647
+ }
648
+ const requires = validateProvidesOrRequires(factory, parentContainer, fieldSetContainer.requires, FieldSetDirective.REQUIRES);
649
+ if (requires) {
650
+ configurationData.requires = requires;
651
+ }
652
+ }
653
+ exports.validateDirectivesWithFieldSet = validateDirectivesWithFieldSet;
296
654
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/normalization/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/normalization/utils.ts"],"names":[],"mappings":";;;AAAA,qCAyBiB;AACjB,0CAA0G;AAC1G,wCAAqH;AACrH,gEAsBmC;AAEnC,+DAAoE;AACpE,6CAyB0B;AAC1B,kDAAkD;AA2GlD,SAAgB,oBAAoB;IAClC,OAAO;QACL,IAAI,EAAE,IAAI,GAAG,EAAU;QACvB,QAAQ,EAAE,IAAI,GAAG,EAAkB;QACnC,QAAQ,EAAE,IAAI,GAAG,EAAkB;KACpC,CAAC;AACJ,CAAC;AAND,oDAMC;AAuDD,SAAS,oBAAoB,CAC3B,OAA6B,EAC7B,GAAmB,EACnB,cAAsB;IAEtB,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,KAAK,MAAM,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,GAAG,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,CAAC,uBAAuB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC3D,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KACtC;IACD,OAAO,UAAiB,CAAC;AAC3B,CAAC;AAED,SAAgB,mBAAmB,CACjC,OAA6B,EAC7B,QAAuB,EACvB,aAAkC;IAElC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC5D,OAAO;QACL,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,UAAU,EAAE,OAAO,CAAC,yCAAyC,CAAC,QAAQ,CAAC;QACvE,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;KAC5E,CAAC;AACJ,CAAC;AAbD,kDAaC;AAED,SAAgB,0BAA0B,CACxC,OAA6B,EAC7B,eAAqC,EACrC,oBAAoD;IAEpD,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC1E,OAAO;QACL,WAAW,EAAE,eAAe,CAAC,WAAW;QACxC,UAAU,EAAE,OAAO,CAAC,yCAAyC,CAAC,eAAe,CAAC;QAC9E,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QACzF,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,IAAI,EAAE,eAAe,CAAC,IAAI;KAC3B,CAAC;AACJ,CAAC;AAbD,gEAaC;AAED,SAAgB,yBAAyB,CACvC,OAA6B,EAC7B,cAAkE,EAClE,mBAAkD;IAElD,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC;IAChH,OAAO;QACL,WAAW;QACX,UAAU,EAAE,OAAO,CAAC,yCAAyC,CAAC,cAAc,CAAC;QAC7E,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QACvF,UAAU,EAAE,IAAA,+BAAuB,EAAC,cAAc,CAAC,UAAU,CAAC;QAC9D,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,IAAI,EAAE,cAAc,CAAC,IAAI;KAC1B,CAAC;AACJ,CAAC;AAfD,8DAeC;AAED,SAAgB,qBAAqB,CACnC,OAA6B,EAC7B,UAA2B,EAC3B,eAA0C;IAE1C,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAChE,OAAO;QACL,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,UAAU,EAAE,OAAO,CAAC,yCAAyC,CAAC,UAAU,CAAC;QACzE,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC;AAZD,sDAYC;AAED,SAAgB,qBAAqB,CACnC,OAA6B,EAC7B,UAA2B;IAE3B,OAAO;QACL,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,UAAU,EAAE,OAAO,CAAC,yCAAyC,CAAC,UAAU,CAAC;QACzE,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,cAAc,EAAE,IAAA,0BAAkB,EAAC,UAAU,CAAC,cAAc,CAAC;KAC9D,CAAC;AACJ,CAAC;AAVD,sDAUC;AAED,SAAgB,oBAAoB,CAClC,OAA6B,EAC7B,SAAyB,EACzB,cAAwC;IAExC,OAAO,CAAC,uBAAuB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC3D,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9D,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,UAAU,EAAE,OAAO,CAAC,yCAAyC,CAAC,SAAS,CAAC;QACxE,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,KAAK,EAAE,IAAA,0BAAkB,EAAC,SAAS,CAAC,KAAK,CAAC;KAC3C,CAAC;AACJ,CAAC;AAdD,oDAcC;AAED,SAAgB,yCAAyC,CACvD,IAAU,EACV,uBAAgD;IAEhD,KAAK,MAAM,QAAQ,IAAI,uBAAuB,CAAC,SAAS,EAAE;QACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAClD,QAAQ,YAAY,EAAE;YACpB,KAAK,4CAAyB;gBAC5B,IAAI,IAAI,KAAK,cAAI,CAAC,sBAAsB,EAAE;oBACxC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,6BAAU;gBACb,IAAI,IAAI,KAAK,cAAI,CAAC,oBAAoB,IAAI,IAAI,KAAK,cAAI,CAAC,mBAAmB,EAAE;oBAC3E,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,mCAAgB;gBACnB,IAAI,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAAE;oBACvC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,8BAAW;gBACd,IAAI,IAAI,KAAK,cAAI,CAAC,KAAK,EAAE;oBACvB,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,yCAAsB;gBACzB,IAAI,IAAI,KAAK,cAAI,CAAC,gBAAgB,EAAE;oBAClC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,wCAAqB;gBACxB,IAAI,IAAI,KAAK,cAAI,CAAC,eAAe,EAAE;oBACjC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,+CAA4B;gBAC/B,IAAI,IAAI,KAAK,cAAI,CAAC,sBAAsB,EAAE;oBACxC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,qCAAkB;gBACrB,IAAI,IAAI,KAAK,cAAI,CAAC,4BAA4B,IAAI,IAAI,KAAK,cAAI,CAAC,2BAA2B,EAAE;oBAC3F,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,kCAAe;gBAClB,IAAI,IAAI,KAAK,cAAI,CAAC,yBAAyB,IAAI,IAAI,KAAK,cAAI,CAAC,wBAAwB,EAAE;oBACrF,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,+BAAY;gBACf,IAAI,IAAI,KAAK,cAAI,CAAC,sBAAsB,IAAI,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAAE;oBAC/E,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,4CAAyB;gBAC5B,IAAI,IAAI,KAAK,cAAI,CAAC,mBAAmB,EAAE;oBACrC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,wCAAqB;gBACxB,IAAI,IAAI,KAAK,cAAI,CAAC,eAAe,EAAE;oBACjC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,+BAAY;gBACf,IAAI,IAAI,KAAK,cAAI,CAAC,sBAAsB,IAAI,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAAE;oBAC/E,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,+BAAY;gBACf,IAAI,IAAI,KAAK,cAAI,CAAC,iBAAiB,IAAI,IAAI,KAAK,cAAI,CAAC,gBAAgB,EAAE;oBACrE,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,8BAAW;gBACd,IAAI,IAAI,KAAK,cAAI,CAAC,qBAAqB,IAAI,IAAI,KAAK,cAAI,CAAC,oBAAoB,EAAE;oBAC7E,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,4CAAyB;gBAC5B,IAAI,IAAI,KAAK,cAAI,CAAC,mBAAmB,EAAE;oBACrC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR,KAAK,8BAAW,CAAC;YACjB,0BAA0B;YAC1B,KAAK,iCAAc,CAAC;YACpB,0BAA0B;YAC1B,KAAK,qCAAkB;gBACrB,IAAI,IAAI,KAAK,cAAI,CAAC,oBAAoB,EAAE;oBACtC,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM;YACR;gBACE,MAAM,IAAA,yCAAgC,EAAC,YAAY,CAAC,CAAC;SACxD;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AArGD,8FAqGC;AAED,SAAgB,kCAAkC,CAChD,IAAyC,EACzC,YAAyB,EACzB,iBAA8B;IAE9B,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE;QAC3B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/B,iFAAiF;QACjF,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,cAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YACvE,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SACrC;KACF;AACH,CAAC;AAbD,gFAaC;AAED,SAAgB,+BAA+B,CAC7C,IAAkC,EAClC,YAAyB,EACzB,aAAqB,EACrB,QAAgB,EAChB,aAAuB;IAEvB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE;QAC3B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACnC,aAAa,CAAC,IAAI,CAAC,IAAA,gDAAuC,EAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;YACzF,SAAS;SACV;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACtC,aAAa,CAAC,IAAI,CAAC,IAAA,yDAAgD,EAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YAC5G,SAAS;SACV;QACD,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACpC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AArBD,0EAqBC;AAOD,SAAgB,yBAAyB,CAAC,MAAmC,EAAE,UAAuB;IACpG,KAAK,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,MAAM,EAAE;QAChD,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,2BAAQ,CAAC,EAAE;YAC3C,SAAS;SACV;QACD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAC3B;AACH,CAAC;AAPD,8DAOC;AAED,SAAgB,oBAAoB,CAAC,IAAY,EAAE,GAAwB,EAAE,UAAiC;IAC5G,0DAA0D;IAC1D,yFAAyF;IACzF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACxC,OAAO;KACR;IACD,uCAAuC;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO;KACR;IACD,sDAAsD;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,KAAK,yBAAM,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,cAAI,CAAC,MAAM,EAAE;QACrF,OAAO;KACR;IACD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAjBD,oDAiBC;AAOD,SAAgB,qBAAqB,CAAC,YAA0B;IAC9D;;;;;OAKG;IACH,OAAO,IAAA,eAAK,EAAC,IAAA,yCAAiC,EAAC,YAAY,CAAC,CAAC;SAC1D,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAVD,sDAUC;AAED,SAAS,6BAA6B,CACpC,OAA6B,EAC7B,eAA2D,EAC3D,QAAgB,EAChB,kBAA0B;IAE1B,mFAAmF;IACnF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAA,iBAAS,EAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;IAChE,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;QAC1B,OAAO,EAAE,YAAY,EAAE,IAAA,uCAA8B,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;KAC1E;IACD,IAAI,YAAY,CAAC;IACjB,MAAM,gBAAgB,GAEhB,CAAC,eAAe,CAAC,CAAC;IACxB,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,wBAAwB,GAAG,IAAI,CAAC;IACpC,IAAI,aAAa,GAAG,kBAAkB,CAAC;IACvC,IAAI,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3C,IAAA,eAAK,EAAC,YAAY,EAAE;QAClB,QAAQ,EAAE;YACR,KAAK,CAAC,IAAI;gBACR,OAAO,KAAK,CAAC;YACf,CAAC;SACF;QACD,KAAK,EAAE;YACL,KAAK,CAAC,IAAI;gBACR,mEAAmE;gBACnE,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBACvD,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClD,IAAI,eAAe,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAAE;oBACvD,YAAY,GAAG,IAAA,4CAAmC,EAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;oBACxF,OAAO,eAAK,CAAC;iBACd;gBACD,+EAA+E;gBAC/E,IAAI,wBAAwB,EAAE;oBAC5B,YAAY,GAAG,IAAA,wCAA+B,EAC5C,QAAQ,EACR,SAAS,EACT,cAAc,EACd,IAAA,wBAAgB,EAAC,eAAe,CAAC,IAAI,CAAC,CACvC,CAAC;oBACF,OAAO,eAAK,CAAC;iBACd;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClC,SAAS,GAAG,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC;gBAC7C,aAAa,GAAG,SAAS,CAAC;gBAC1B,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC7D,sDAAsD;gBACtD,IAAI,CAAC,cAAc,EAAE;oBACnB,YAAY,GAAG,IAAA,6CAAoC,EAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;oBACzF,OAAO,eAAK,CAAC;iBACd;gBACD,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE;oBACjC,YAAY,GAAG,IAAA,2CAAkC,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACvE,OAAO,eAAK,CAAC;iBACd;gBACD,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBAC9C,YAAY,GAAG,IAAA,6CAAoC,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACzE,OAAO,eAAK,CAAC;iBACd;gBACD,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAM,aAAa,GAAG,IAAA,mCAAoB,EAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChF,8CAA8C;gBAC9C,IAAI,wBAAY,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;oBACnC,OAAO;iBACR;gBACD,4EAA4E;gBAC5E,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;uBACpD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC3C,IAAI,CAAC,cAAc,EAAE;oBACnB,+CAA+C;oBAC/C,YAAY,GAAG,IAAA,0CAAiC,EAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;oBACrF,OAAO,eAAK,CAAC;iBACd;gBACD,IACE,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,sBAAsB;uBAChD,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB;uBAClD,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,yBAAyB;uBACtD,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EACrD;oBACA,wBAAwB,GAAG,IAAI,CAAC;oBAChC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACtC,OAAO;iBACR;YACH,CAAC;SACF;QACD,cAAc,EAAE;YACd,KAAK,CAAC,IAAI;gBACR,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBACvD,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,YAAY,GAAG,IAAA,uDAA8C,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACnF,OAAO,eAAK,CAAC;iBACd;gBACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxD,+CAA+C;gBAC/C,IAAI,iBAAiB,KAAK,cAAc,EAAE;oBACxC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBACvC,wBAAwB,GAAG,IAAI,CAAC;oBAChC,OAAO;iBACR;gBACD,IAAI,CAAC,IAAA,sBAAc,EAAC,eAAe,CAAC,IAAI,CAAC,EAAE;oBACzC,YAAY,GAAG,IAAA,8CAAqC,EAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;oBAC7G,OAAO,eAAK,CAAC;iBACd;gBACD,MAAM,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;uBAC/D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/C,IAAI,CAAC,qBAAqB,EAAE;oBAC1B,YAAY,GAAG,IAAA,uDAA8C,EAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;oBACtG,OAAO,eAAK,CAAC;iBACd;gBACD,IACE,qBAAqB,CAAC,IAAI,KAAK,cAAI,CAAC,yBAAyB;uBAC1D,qBAAqB,CAAC,IAAI,KAAK,cAAI,CAAC,sBAAsB;uBAC1D,qBAAqB,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB;uBACzD,qBAAqB,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAC5D;oBACA,YAAY,GAAG,IAAA,2DAAkD,EAC/D,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAA,wBAAgB,EAAC,qBAAqB,CAAC,IAAI,CAAC,CACrF,CAAC;oBACF,OAAO,eAAK,CAAC;iBACd;gBACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAClF,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;oBACnE,YAAY,GAAG,IAAA,uDAA8C,EAC3D,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAA,wBAAgB,EAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc,CAC/F,CAAC;oBACF,OAAO,eAAK,CAAC;iBACd;gBACD,wBAAwB,GAAG,IAAI,CAAC;gBAChC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC/C,CAAC;YACD,KAAK;gBACH,gBAAgB,CAAC,GAAG,EAAE,CAAC;YACzB,CAAC;SACF;QACD,YAAY,EAAE;YACZ,KAAK;gBACH,IAAI,CAAC,wBAAwB,EAAE;oBAC7B,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;oBACvD,IAAI,eAAe,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAAE;wBACvD,sBAAsB;wBACtB,YAAY,GAAG,IAAA,gDAAuC,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;wBAChF,OAAO,eAAK,CAAC;qBACd;oBACD,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACjE,IAAI,CAAC,cAAc,EAAE;wBACnB,YAAY,GAAG,IAAA,6CAAoC,EAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;wBACxF,OAAO,eAAK,CAAC;qBACd;oBACD,MAAM,kBAAkB,GAAG,IAAA,mCAAoB,EAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrF,kGAAkG;oBAClG,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;oBAC/D,MAAM,SAAS,GAAG,cAAc;wBAC9B,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,sBAAsB,CAAC;oBACtD,YAAY,GAAG,IAAA,kDAAyC,EACtD,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAA,wBAAgB,EAAC,SAAS,CAAC,CACrE,CAAC;oBACF,OAAO,eAAK,CAAC;iBACd;gBACD,YAAY,IAAI,CAAC,CAAC;gBAClB,wBAAwB,GAAG,KAAK,CAAC;gBACjC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,gBAAgB,CAAC,MAAM,EAAE;oBAC/D,YAAY,GAAG,IAAA,gDAAuC,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;oBAChF,OAAO,eAAK,CAAC;iBACd;gBACD,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;YACxC,CAAC;YACD,KAAK;gBACH,IAAI,wBAAwB,EAAE;oBAC5B,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;oBAC3D,YAAY,GAAG,IAAA,wCAA+B,EAC5C,QAAQ,EACR,SAAS,EACT,eAAe,CAAC,IAAI,CAAC,KAAK,EAC1B,IAAA,wBAAgB,EAAC,eAAe,CAAC,IAAI,CAAC,CACvC,CAAC;oBACF,wBAAwB,GAAG,KAAK,CAAC;iBAClC;gBACD,mFAAmF;gBACnF,YAAY,IAAI,CAAC,CAAC;gBAClB,gBAAgB,CAAC,GAAG,EAAE,CAAC;gBACvB,aAAa,CAAC,GAAG,EAAE,CAAC;YACtB,CAAC;SACF;KACF,CAAC,CAAC;IACH,IAAI,YAAY,EAAE;QAChB,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB;IACD,OAAO,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,qBAAqB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;AACjH,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAA6B,EAC7B,eAA2D,EAC3D,SAAsB,EACtB,UAAuB;IAEvB,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,cAAc,GAAiC,EAAE,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,mFAAmF;QACnF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAA,iBAAS,EAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;QAChE,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;YAC1B,aAAa,CAAC,IAAI,CAAC,IAAA,uCAA8B,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACpE,SAAS;SACV;QACD,MAAM,gBAAgB,GAAmD,CAAC,eAAe,CAAC,CAAC;QAC3F,MAAM,aAAa,GAAkB,EAAE,CAAC;QACxC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,wBAAwB,GAAG,IAAI,CAAC;QACpC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAA,eAAK,EAAC,YAAY,EAAE;YAClB,QAAQ,EAAE;gBACR,KAAK,CAAC,IAAI;oBACR,aAAa,CAAC,IAAI,CAAC,IAAA,uCAA8B,EAC/C,QAAQ,EACR,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,EAAE,EAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CAAC,CAAC;oBACH,OAAO,eAAK,CAAC;gBACf,CAAC;aACF;YACD,KAAK,EAAE;gBACL,KAAK,CAAC,IAAI;oBACR,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;oBAChE,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;oBACvD,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClD,+EAA+E;oBAC/E,IAAI,wBAAwB,EAAE;wBAC5B,aAAa,CAAC,IAAI,CAAC,IAAA,wCAA+B,EAChD,QAAQ,EACR,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,EAAE,EACrD,cAAc,EACd,IAAA,wBAAgB,EAAC,eAAe,CAAC,IAAI,CAAC,CACvC,CAAC,CAAC;wBACH,OAAO,eAAK,CAAC;qBACd;oBACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClC,MAAM,SAAS,GAAG,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC;oBACnD,aAAa,GAAG,SAAS,CAAC;oBAC1B,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC7D,sDAAsD;oBACtD,IAAI,CAAC,cAAc,EAAE;wBACnB,aAAa,CAAC,IAAI,CAAC,IAAA,6CAAoC,EAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;wBAC9F,OAAO,eAAK,CAAC;qBACd;oBACD,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE;wBACjC,aAAa,CAAC,IAAI,CAAC,IAAA,2CAAkC,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;wBAC5E,OAAO,eAAK,CAAC;qBACd;oBACD,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;wBAC9C,aAAa,CAAC,IAAI,CAAC,IAAA,6CAAoC,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;wBAC9E,OAAO,eAAK,CAAC;qBACd;oBACD,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC3C,sCAAsC;oBACtC,yGAAyG;oBACzG,IAAI,YAAY,KAAK,CAAC,EAAE;wBACtB,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC7B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;qBAC3B;oBACD,IAAA,yBAAiB,EAAC,OAAO,CAAC,yBAAyB,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,GAAW,CAAC;yBACxF,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClB,MAAM,aAAa,GAAG,IAAA,mCAAoB,EAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChF,8CAA8C;oBAC9C,IAAI,wBAAY,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;wBACnC,OAAO;qBACR;oBACD,4EAA4E;oBAC5E,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;2BACpD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3C,IAAI,CAAC,cAAc,EAAE;wBACnB,+CAA+C;wBAC/C,aAAa,CAAC,IAAI,CAAC,IAAA,0CAAiC,EAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;wBAC1F,OAAO,eAAK,CAAC;qBACd;oBACD,IACE,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,sBAAsB;2BAChD,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EACrD;wBACA,wBAAwB,GAAG,IAAI,CAAC;wBAChC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACtC,OAAO;qBACR;oBACD,uDAAuD;oBACvD,IAAI,IAAA,sBAAc,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE;wBACvC,aAAa,CAAC,IAAI,CAAC,IAAA,8CAAqC,EACtD,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,IAAA,wBAAgB,EAAC,cAAc,CAAC,IAAI,CAAC,CAC1E,CAAC,CAAC;wBACH,OAAO,eAAK,CAAC;qBACd;gBACH,CAAC;aACF;YACD,cAAc,EAAE;gBACd,KAAK;oBACH,aAAa,CAAC,IAAI,CAAC,6CAAoC,CAAC,CAAC;oBACzD,OAAO,eAAK,CAAC;gBACf,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,KAAK;oBACH,IAAI,CAAC,wBAAwB,EAAE;wBAC7B,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;wBACvD,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;wBAClD,MAAM,SAAS,GAAG,GAAG,cAAc,IAAI,aAAa,EAAE,CAAC;wBACvD,0CAA0C;wBAC1C,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBACjE,IAAI,CAAC,cAAc,EAAE;4BACnB,aAAa,CAAC,IAAI,CAAC,IAAA,6CAAoC,EAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;4BAC7F,OAAO,eAAK,CAAC;yBACd;wBACD,MAAM,kBAAkB,GAAG,IAAA,mCAAoB,EAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrF,kGAAkG;wBAClG,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;wBAC/D,MAAM,SAAS,GAAG,cAAc;4BAC9B,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,sBAAsB,CAAC;wBACtD,aAAa,CAAC,IAAI,CAAC,IAAA,kDAAyC,EAC1D,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAA,wBAAgB,EAAC,SAAS,CAAC,CACrE,CAAC,CAAC;wBACH,OAAO,eAAK,CAAC;qBACd;oBACD,YAAY,IAAI,CAAC,CAAC;oBAClB,wBAAwB,GAAG,KAAK,CAAC;oBACjC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,gBAAgB,CAAC,MAAM,EAAE;wBAC/D,aAAa,CAAC,IAAI,CAAC,IAAA,gDAAuC,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;wBACrF,OAAO,eAAK,CAAC;qBACd;oBACD,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;gBACxC,CAAC;gBACD,KAAK;oBACH,IAAI,wBAAwB,EAAE;wBAC5B,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;wBAC5D,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;wBAC5D,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;wBAC3D,MAAM,SAAS,GAAG,GAAG,mBAAmB,IAAI,aAAa,EAAE,CAAC;wBAC5D,aAAa,CAAC,IAAI,CAAC,IAAA,wCAA+B,EAChD,QAAQ,EACR,SAAS,EACT,eAAe,CAAC,IAAI,CAAC,KAAK,EAC1B,IAAA,wBAAgB,EAAC,eAAe,CAAC,IAAI,CAAC,CACvC,CAAC,CAAC;wBACH,wBAAwB,GAAG,KAAK,CAAC;qBAClC;oBACD,mFAAmF;oBACnF,YAAY,IAAI,CAAC,CAAC;oBAClB,gBAAgB,CAAC,GAAG,EAAE,CAAC;oBACvB,aAAa,CAAC,GAAG,EAAE,CAAC;gBACtB,CAAC;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzB,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,qBAAqB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SAC3F;KACF;IACD,IAAI,aAAa,CAAC,MAAM,EAAE;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,kCAAyB,EAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;QAC9E,OAAO;KACR;IACD,IAAI,cAAc,CAAC,MAAM,EAAE;QACzB,OAAO,cAAc,CAAC;KACvB;AACH,CAAC;AAED,IAAK,iBAGJ;AAHD,WAAK,iBAAiB;IACpB,0CAAqB,CAAA;IACrB,0CAAqB,CAAA;AACvB,CAAC,EAHI,iBAAiB,KAAjB,iBAAiB,QAGrB;AAOD,SAAS,iBAAiB,CACxB,OAA6B,EAC7B,iBAAoC,EACpC,eAA2D,EAC3D,SAAiB,EACjB,cAAsB;IAEtB,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,QAAQ,EAAE;QACpD,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjG;IACD,MAAM,cAAc,GAAG,IAAA,uBAAe,EACpC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,SAAS,CAC9D,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,mCAAoB,EAC7C,GAAG,cAAc,IAAI,SAAS,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAC3D,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;QAC7C,OAAO,EAAE,CAAC;KACX;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;WACzD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChD,IACE,CAAC,cAAc;WACZ,CAAC,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,sBAAsB,IAAI,cAAc,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,CAAC,EAC9G;QACA,OAAO;YACL,WAAW,EAAE,IAAA,0CAAiC,EAC5C,GAAG,cAAc,IAAI,SAAS,EAAE,EAAE,kBAAkB,CACrD;SACF,CAAC;KACH;IACD,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,0BAA0B,CACjC,OAA6B,EAC7B,eAA2D,EAC3D,mBAAwC,EACxC,iBAAoC;IAEpC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,cAAc,GAAiC,EAAE,CAAC;IACxD,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClD,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,mBAAmB,EAAE;QACvD;;;UAGE;QACF,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAChE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,CACvE,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC;QACnD,IAAI,WAAW,EAAE;YACf,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,SAAS;SACV;QACD,IAAI,CAAC,uBAAuB,EAAE;YAC5B,SAAS;SACV;QACD,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,6BAA6B,CACnE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,CACtD,CAAC;QACF,IAAI,YAAY,EAAE;YAChB,aAAa,CAAC,IAAI,CAAC,QAAQ,cAAc,IAAI,SAAS,KAAK,GAAG,YAAY,CAAC,CAAC;YAC5E,SAAS;SACV;QACD,IAAI,aAAa,EAAE;YACjB,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,SAAS;SACV;QACD,sBAAsB;QACtB,MAAM,IAAA,6CAAoC,EAAC,SAAS,CAAC,CAAC;KACvD;IACD,IAAI,aAAa,CAAC,MAAM,EAAE;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,iDAAwC,EAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;QAChG,OAAO;KACR;IACD,IAAI,cAAc,CAAC,MAAM,EAAE;QACzB,OAAO,cAAc,CAAC;KACvB;AACH,CAAC;AAED,SAAgB,8BAA8B,CAC5C,OAA6B,EAC7B,eAA2D,EAC3D,iBAAoC;IAEpC,MAAM,iBAAiB,GAAG,IAAA,uBAAe,EACvC,OAAO,CAAC,oBAAoB,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,sBAAsB,CACjF,CAAC;IACF,MAAM,IAAI,GAAG,oBAAoB,CAC/B,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,UAAU,CAC/E,CAAC;IACF,IAAI,IAAI,EAAE;QACR,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;KAC/B;IACD,MAAM,QAAQ,GAAG,0BAA0B,CACzC,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CACjF,CAAC;IACF,IAAI,QAAQ,EAAE;QACZ,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC;KACvC;IACD,MAAM,QAAQ,GAAG,0BAA0B,CACzC,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CACjF,CAAC;IACF,IAAI,QAAQ,EAAE;QACZ,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC;KACvC;AACH,CAAC;AA1BD,wEA0BC"}