@aws-amplify/datastore 5.0.82 → 5.0.83-local-stack.00864ae.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,27 @@
1
1
  'use strict';
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getIdentifierValue = exports.getTokenForCustomAuth = exports.getClientSideAuthError = exports.resolveServiceErrorStatusCode = exports.getForbiddenError = exports.getModelAuthModes = exports.getUserGroupsFromToken = exports.generateRTFRemediation = exports.RTFError = exports.repeatedFieldInGroup = exports.countFilterCombinations = exports.dynamicAuthFields = exports.filterFields = exports.predicateToGraphQLFilter = exports.predicateToGraphQLCondition = exports.createMutationInstanceFromModelOperation = exports.buildGraphQLOperation = exports.buildSubscriptionGraphQLOperation = exports.getAuthorizationRules = exports.generateSelectionSet = exports.getMetadataFields = exports.TransformerMutationType = void 0;
4
+ exports.RTFError = exports.TransformerMutationType = void 0;
5
+ exports.getMetadataFields = getMetadataFields;
6
+ exports.generateSelectionSet = generateSelectionSet;
7
+ exports.getAuthorizationRules = getAuthorizationRules;
8
+ exports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;
9
+ exports.buildGraphQLOperation = buildGraphQLOperation;
10
+ exports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;
11
+ exports.predicateToGraphQLCondition = predicateToGraphQLCondition;
12
+ exports.predicateToGraphQLFilter = predicateToGraphQLFilter;
13
+ exports.filterFields = filterFields;
14
+ exports.dynamicAuthFields = dynamicAuthFields;
15
+ exports.countFilterCombinations = countFilterCombinations;
16
+ exports.repeatedFieldInGroup = repeatedFieldInGroup;
17
+ exports.generateRTFRemediation = generateRTFRemediation;
18
+ exports.getUserGroupsFromToken = getUserGroupsFromToken;
19
+ exports.getModelAuthModes = getModelAuthModes;
20
+ exports.getForbiddenError = getForbiddenError;
21
+ exports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;
22
+ exports.getClientSideAuthError = getClientSideAuthError;
23
+ exports.getTokenForCustomAuth = getTokenForCustomAuth;
24
+ exports.getIdentifierValue = getIdentifierValue;
5
25
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
26
  // SPDX-License-Identifier: Apache-2.0
7
27
  const api_1 = require("@aws-amplify/api");
@@ -22,7 +42,7 @@ var TransformerMutationType;
22
42
  TransformerMutationType["UPDATE"] = "Update";
23
43
  TransformerMutationType["DELETE"] = "Delete";
24
44
  TransformerMutationType["GET"] = "Get";
25
- })(TransformerMutationType = exports.TransformerMutationType || (exports.TransformerMutationType = {}));
45
+ })(TransformerMutationType || (exports.TransformerMutationType = TransformerMutationType = {}));
26
46
  const dummyMetadata = {
27
47
  _version: undefined,
28
48
  _lastChangedAt: undefined,
@@ -32,7 +52,6 @@ const metadataFields = Object.keys(dummyMetadata);
32
52
  function getMetadataFields() {
33
53
  return metadataFields;
34
54
  }
35
- exports.getMetadataFields = getMetadataFields;
36
55
  function generateSelectionSet(namespace, modelDefinition) {
37
56
  const scalarFields = getScalarFields(modelDefinition);
38
57
  const nonModelFields = getNonModelFields(namespace, modelDefinition);
@@ -49,7 +68,6 @@ function generateSelectionSet(namespace, modelDefinition) {
49
68
  const result = scalarAndMetadataFields.join('\n');
50
69
  return result;
51
70
  }
52
- exports.generateSelectionSet = generateSelectionSet;
53
71
  function getImplicitOwnerField(modelDefinition, scalarFields) {
54
72
  const ownerFields = getOwnerFields(modelDefinition);
55
73
  if (!scalarFields.owner && ownerFields.includes('owner')) {
@@ -190,7 +208,6 @@ function getAuthorizationRules(modelDefinition) {
190
208
  });
191
209
  return resultRules;
192
210
  }
193
- exports.getAuthorizationRules = getAuthorizationRules;
194
211
  function buildSubscriptionGraphQLOperation(namespace, modelDefinition, transformerMutationType, isOwnerAuthorization, ownerField, filterArg = false) {
195
212
  const selectionSet = generateSelectionSet(namespace, modelDefinition);
196
213
  const { name: typeName } = modelDefinition;
@@ -217,7 +234,6 @@ function buildSubscriptionGraphQLOperation(namespace, modelDefinition, transform
217
234
  }`,
218
235
  ];
219
236
  }
220
- exports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;
221
237
  function buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {
222
238
  let selectionSet = generateSelectionSet(namespace, modelDefinition);
223
239
  const { name: typeName, pluralName: pluralTypeName } = modelDefinition;
@@ -276,7 +292,6 @@ function buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {
276
292
  ],
277
293
  ];
278
294
  }
279
- exports.buildGraphQLOperation = buildGraphQLOperation;
280
295
  function createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {
281
296
  let operation;
282
297
  switch (opType) {
@@ -318,7 +333,6 @@ function createMutationInstanceFromModelOperation(relationships, modelDefinition
318
333
  });
319
334
  return mutationEvent;
320
335
  }
321
- exports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;
322
336
  function predicateToGraphQLCondition(predicate, modelDefinition) {
323
337
  const result = {};
324
338
  if (!predicate || !Array.isArray(predicate.predicates)) {
@@ -334,7 +348,6 @@ function predicateToGraphQLCondition(predicate, modelDefinition) {
334
348
  const keyFields = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);
335
349
  return predicateToGraphQLFilter(predicate, keyFields);
336
350
  }
337
- exports.predicateToGraphQLCondition = predicateToGraphQLCondition;
338
351
  /**
339
352
  * @param predicatesGroup - Predicate Group
340
353
  @returns GQL Filter Expression from Predicate Group
@@ -406,7 +419,6 @@ function predicateToGraphQLFilter(predicatesGroup, fieldsToOmit = [], root = tru
406
419
  }
407
420
  return result;
408
421
  }
409
- exports.predicateToGraphQLFilter = predicateToGraphQLFilter;
410
422
  /**
411
423
  *
412
424
  * @param group - selective sync predicate group
@@ -429,7 +441,6 @@ function filterFields(group) {
429
441
  }
430
442
  return fields;
431
443
  }
432
- exports.filterFields = filterFields;
433
444
  /**
434
445
  *
435
446
  * @param modelDefinition
@@ -449,7 +460,6 @@ function dynamicAuthFields(modelDefinition) {
449
460
  }
450
461
  return fields;
451
462
  }
452
- exports.dynamicAuthFields = dynamicAuthFields;
453
463
  /**
454
464
  *
455
465
  * @param group - selective sync predicate group
@@ -482,7 +492,6 @@ function countFilterCombinations(group) {
482
492
  // if we didn't encounter any OR groups, default to 1
483
493
  return count || 1;
484
494
  }
485
- exports.countFilterCombinations = countFilterCombinations;
486
495
  /**
487
496
  *
488
497
  * @param group - selective sync predicate group
@@ -534,7 +543,6 @@ function repeatedFieldInGroup(group) {
534
543
  }
535
544
  return null;
536
545
  }
537
- exports.repeatedFieldInGroup = repeatedFieldInGroup;
538
546
  var RTFError;
539
547
  (function (RTFError) {
540
548
  RTFError[RTFError["UnknownField"] = 0] = "UnknownField";
@@ -543,7 +551,7 @@ var RTFError;
543
551
  RTFError[RTFError["RepeatedFieldname"] = 3] = "RepeatedFieldname";
544
552
  RTFError[RTFError["NotGroup"] = 4] = "NotGroup";
545
553
  RTFError[RTFError["FieldNotInType"] = 5] = "FieldNotInType";
546
- })(RTFError = exports.RTFError || (exports.RTFError = {}));
554
+ })(RTFError || (exports.RTFError = RTFError = {}));
547
555
  function generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {
548
556
  const selSyncFields = filterFields(predicatesGroup);
549
557
  const selSyncFieldStr = [...selSyncFields].join(', ');
@@ -585,7 +593,6 @@ function generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {
585
593
  return '';
586
594
  }
587
595
  }
588
- exports.generateRTFRemediation = generateRTFRemediation;
589
596
  function getUserGroupsFromToken(token, rule) {
590
597
  // validate token against groupClaim
591
598
  let userGroups = token[rule.groupClaim] || [];
@@ -601,7 +608,6 @@ function getUserGroupsFromToken(token, rule) {
601
608
  }
602
609
  return userGroups;
603
610
  }
604
- exports.getUserGroupsFromToken = getUserGroupsFromToken;
605
611
  async function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {
606
612
  const operations = Object.values(types_1.ModelOperation);
607
613
  const modelAuthModes = {
@@ -634,7 +640,6 @@ async function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName,
634
640
  }
635
641
  return modelAuthModes;
636
642
  }
637
- exports.getModelAuthModes = getModelAuthModes;
638
643
  function getForbiddenError(error) {
639
644
  const forbiddenErrorCodes = [401, 403];
640
645
  let forbiddenError;
@@ -650,7 +655,6 @@ function getForbiddenError(error) {
650
655
  }
651
656
  return null;
652
657
  }
653
- exports.getForbiddenError = getForbiddenError;
654
658
  function resolveServiceErrorStatusCode(error) {
655
659
  if (error?.$metadata?.httpStatusCode) {
656
660
  return Number(error?.$metadata?.httpStatusCode);
@@ -662,7 +666,6 @@ function resolveServiceErrorStatusCode(error) {
662
666
  return null;
663
667
  }
664
668
  }
665
- exports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;
666
669
  function getClientSideAuthError(error) {
667
670
  const clientSideAuthErrors = Object.values(api_1.GraphQLAuthError);
668
671
  const clientSideError = error &&
@@ -670,7 +673,6 @@ function getClientSideAuthError(error) {
670
673
  clientSideAuthErrors.find(clientError => error.message.includes(clientError));
671
674
  return clientSideError || null;
672
675
  }
673
- exports.getClientSideAuthError = getClientSideAuthError;
674
676
  async function getTokenForCustomAuth(authMode, amplifyConfig = {}) {
675
677
  if (authMode === 'lambda') {
676
678
  const { authProviders: { functionAuthProvider } = { functionAuthProvider: null }, } = amplifyConfig;
@@ -689,12 +691,10 @@ async function getTokenForCustomAuth(authMode, amplifyConfig = {}) {
689
691
  }
690
692
  }
691
693
  }
692
- exports.getTokenForCustomAuth = getTokenForCustomAuth;
693
694
  // Util that takes a modelDefinition and model and returns either the id value(s) or the custom primary key value(s)
694
695
  function getIdentifierValue(modelDefinition, model) {
695
696
  const pkFieldNames = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);
696
697
  const idOrPk = pkFieldNames.map(f => model[f]).join(util_1.IDENTIFIER_KEY_SEPARATOR);
697
698
  return idOrPk;
698
699
  }
699
- exports.getIdentifierValue = getIdentifierValue;
700
700
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/sync/utils.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIdentifierValue = exports.getTokenForCustomAuth = exports.getClientSideAuthError = exports.resolveServiceErrorStatusCode = exports.getForbiddenError = exports.getModelAuthModes = exports.getUserGroupsFromToken = exports.generateRTFRemediation = exports.RTFError = exports.repeatedFieldInGroup = exports.countFilterCombinations = exports.dynamicAuthFields = exports.filterFields = exports.predicateToGraphQLFilter = exports.predicateToGraphQLCondition = exports.createMutationInstanceFromModelOperation = exports.buildGraphQLOperation = exports.buildSubscriptionGraphQLOperation = exports.getAuthorizationRules = exports.generateSelectionSet = exports.getMetadataFields = exports.TransformerMutationType = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst api_1 = require(\"@aws-amplify/api\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nconst GraphQLOperationType = {\n LIST: 'query',\n CREATE: 'mutation',\n UPDATE: 'mutation',\n DELETE: 'mutation',\n GET: 'query',\n};\nvar TransformerMutationType;\n(function (TransformerMutationType) {\n TransformerMutationType[\"CREATE\"] = \"Create\";\n TransformerMutationType[\"UPDATE\"] = \"Update\";\n TransformerMutationType[\"DELETE\"] = \"Delete\";\n TransformerMutationType[\"GET\"] = \"Get\";\n})(TransformerMutationType = exports.TransformerMutationType || (exports.TransformerMutationType = {}));\nconst dummyMetadata = {\n _version: undefined,\n _lastChangedAt: undefined,\n _deleted: undefined,\n};\nconst metadataFields = Object.keys(dummyMetadata);\nfunction getMetadataFields() {\n return metadataFields;\n}\nexports.getMetadataFields = getMetadataFields;\nfunction generateSelectionSet(namespace, modelDefinition) {\n const scalarFields = getScalarFields(modelDefinition);\n const nonModelFields = getNonModelFields(namespace, modelDefinition);\n const implicitOwnerField = getImplicitOwnerField(modelDefinition, scalarFields);\n let scalarAndMetadataFields = Object.values(scalarFields)\n .map(({ name }) => name)\n .concat(implicitOwnerField)\n .concat(nonModelFields);\n if ((0, types_1.isSchemaModel)(modelDefinition)) {\n scalarAndMetadataFields = scalarAndMetadataFields\n .concat(getMetadataFields())\n .concat(getConnectionFields(modelDefinition, namespace));\n }\n const result = scalarAndMetadataFields.join('\\n');\n return result;\n}\nexports.generateSelectionSet = generateSelectionSet;\nfunction getImplicitOwnerField(modelDefinition, scalarFields) {\n const ownerFields = getOwnerFields(modelDefinition);\n if (!scalarFields.owner && ownerFields.includes('owner')) {\n return ['owner'];\n }\n return [];\n}\nfunction getOwnerFields(modelDefinition) {\n const ownerFields = [];\n if ((0, types_1.isSchemaModelWithAttributes)(modelDefinition)) {\n modelDefinition.attributes.forEach(attr => {\n if (attr.properties && attr.properties.rules) {\n const rule = attr.properties.rules.find(currentRule => currentRule.allow === 'owner');\n if (rule && rule.ownerField) {\n ownerFields.push(rule.ownerField);\n }\n }\n });\n }\n return ownerFields;\n}\nfunction getScalarFields(modelDefinition) {\n const { fields } = modelDefinition;\n const result = Object.values(fields)\n .filter(field => {\n if ((0, types_1.isGraphQLScalarType)(field.type) || (0, types_1.isEnumFieldType)(field.type)) {\n return true;\n }\n return false;\n })\n .reduce((acc, field) => {\n acc[field.name] = field;\n return acc;\n }, {});\n return result;\n}\n// Used for generating the selection set for queries and mutations\nfunction getConnectionFields(modelDefinition, namespace) {\n const result = [];\n Object.values(modelDefinition.fields)\n .filter(({ association }) => association && Object.keys(association).length)\n .forEach(({ name, association }) => {\n const { connectionType } = association || {};\n switch (connectionType) {\n case 'HAS_ONE':\n case 'HAS_MANY':\n // Intentionally blank\n break;\n case 'BELONGS_TO':\n if ((0, types_1.isTargetNameAssociation)(association)) {\n // New codegen (CPK)\n if (association.targetNames && association.targetNames.length > 0) {\n // Need to retrieve relations in order to get connected model keys\n const [relations] = (0, util_1.establishRelationAndKeys)(namespace);\n const connectedModelName = modelDefinition.fields[name].type.model;\n const byPkIndex = relations[connectedModelName].indexes.find(([currentName]) => currentName === 'byPk');\n const keyFields = byPkIndex && byPkIndex[1];\n const keyFieldSelectionSet = keyFields?.join(' ');\n // We rely on `_deleted` when we process the sync query (e.g. in batchSave in the adapters)\n result.push(`${name} { ${keyFieldSelectionSet} _deleted }`);\n }\n else {\n // backwards-compatability for schema generated prior to custom primary key support\n result.push(`${name} { id _deleted }`);\n }\n }\n break;\n default:\n throw new Error(`Invalid connection type ${connectionType}`);\n }\n });\n return result;\n}\nfunction getNonModelFields(namespace, modelDefinition) {\n const result = [];\n Object.values(modelDefinition.fields).forEach(({ name, type }) => {\n if ((0, types_1.isNonModelFieldType)(type)) {\n const typeDefinition = namespace.nonModels[type.nonModel];\n const scalarFields = Object.values(getScalarFields(typeDefinition)).map(({ name: currentName }) => currentName);\n const nested = [];\n Object.values(typeDefinition.fields).forEach(field => {\n const { type: fieldType, name: fieldName } = field;\n if ((0, types_1.isNonModelFieldType)(fieldType)) {\n const nonModelTypeDefinition = namespace.nonModels[fieldType.nonModel];\n nested.push(`${fieldName} { ${generateSelectionSet(namespace, nonModelTypeDefinition)} }`);\n }\n });\n result.push(`${name} { ${scalarFields.join(' ')} ${nested.join(' ')} }`);\n }\n });\n return result;\n}\nfunction getAuthorizationRules(modelDefinition) {\n // Searching for owner authorization on attributes\n const authConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'auth');\n const { properties: { rules = [] } = {} } = authConfig || {};\n const resultRules = [];\n // Multiple rules can be declared for allow: owner\n rules.forEach(rule => {\n // setting defaults for backwards compatibility with old cli\n const { identityClaim = 'cognito:username', ownerField = 'owner', operations = ['create', 'update', 'delete', 'read'], provider = 'userPools', groupClaim = 'cognito:groups', allow: authStrategy = 'iam', groups = [], groupsField = '', } = rule;\n const isReadAuthorized = operations.includes('read');\n const isOwnerAuth = authStrategy === 'owner';\n if (!isReadAuthorized && !isOwnerAuth) {\n return;\n }\n const authRule = {\n identityClaim,\n ownerField,\n provider,\n groupClaim,\n authStrategy,\n groups,\n groupsField,\n areSubscriptionsPublic: false,\n };\n if (isOwnerAuth) {\n // look for the subscription level override\n // only pay attention to the public level\n const modelConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'model');\n // find the subscriptions level. ON is default\n const { properties: { subscriptions: { level = 'on' } = {} } = {} } = modelConfig || {};\n // treat subscriptions as public for owner auth with unprotected reads\n // when `read` is omitted from `operations`\n authRule.areSubscriptionsPublic =\n !operations.includes('read') || level === 'public';\n }\n if (isOwnerAuth) {\n // owner rules has least priority\n resultRules.push(authRule);\n return;\n }\n resultRules.unshift(authRule);\n });\n return resultRules;\n}\nexports.getAuthorizationRules = getAuthorizationRules;\nfunction buildSubscriptionGraphQLOperation(namespace, modelDefinition, transformerMutationType, isOwnerAuthorization, ownerField, filterArg = false) {\n const selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName } = modelDefinition;\n const opName = `on${transformerMutationType}${typeName}`;\n const docArgs = [];\n const opArgs = [];\n if (filterArg) {\n docArgs.push(`$filter: ModelSubscription${typeName}FilterInput`);\n opArgs.push('filter: $filter');\n }\n if (isOwnerAuthorization) {\n docArgs.push(`$${ownerField}: String!`);\n opArgs.push(`${ownerField}: $${ownerField}`);\n }\n const docStr = docArgs.length ? `(${docArgs.join(',')})` : '';\n const opStr = opArgs.length ? `(${opArgs.join(',')})` : '';\n return [\n transformerMutationType,\n opName,\n `subscription operation${docStr}{\n\t\t\t${opName}${opStr}{\n\t\t\t\t${selectionSet}\n\t\t\t}\n\t\t}`,\n ];\n}\nexports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;\nfunction buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {\n let selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName, pluralName: pluralTypeName } = modelDefinition;\n let operation;\n let documentArgs;\n let operationArgs;\n let transformerMutationType;\n switch (graphQLOpType) {\n case 'LIST':\n operation = `sync${pluralTypeName}`;\n documentArgs = `($limit: Int, $nextToken: String, $lastSync: AWSTimestamp, $filter: Model${typeName}FilterInput)`;\n operationArgs =\n '(limit: $limit, nextToken: $nextToken, lastSync: $lastSync, filter: $filter)';\n selectionSet = `items {\n\t\t\t\t\t\t\t${selectionSet}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextToken\n\t\t\t\t\t\tstartedAt`;\n break;\n case 'CREATE':\n operation = `create${typeName}`;\n documentArgs = `($input: Create${typeName}Input!)`;\n operationArgs = '(input: $input)';\n transformerMutationType = TransformerMutationType.CREATE;\n break;\n case 'UPDATE':\n operation = `update${typeName}`;\n documentArgs = `($input: Update${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.UPDATE;\n break;\n case 'DELETE':\n operation = `delete${typeName}`;\n documentArgs = `($input: Delete${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.DELETE;\n break;\n case 'GET':\n operation = `get${typeName}`;\n documentArgs = `($id: ID!)`;\n operationArgs = '(id: $id)';\n transformerMutationType = TransformerMutationType.GET;\n break;\n default:\n throw new Error(`Invalid graphQlOpType ${graphQLOpType}`);\n }\n return [\n [\n transformerMutationType,\n operation,\n `${GraphQLOperationType[graphQLOpType]} operation${documentArgs}{\n\t\t${operation}${operationArgs}{\n\t\t\t${selectionSet}\n\t\t}\n\t}`,\n ],\n ];\n}\nexports.buildGraphQLOperation = buildGraphQLOperation;\nfunction createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {\n let operation;\n switch (opType) {\n case types_1.OpType.INSERT:\n operation = TransformerMutationType.CREATE;\n break;\n case types_1.OpType.UPDATE:\n operation = TransformerMutationType.UPDATE;\n break;\n case types_1.OpType.DELETE:\n operation = TransformerMutationType.DELETE;\n break;\n default:\n throw new Error(`Invalid opType ${opType}`);\n }\n // stringify nested objects of type AWSJSON\n // this allows us to return parsed JSON to users (see `castInstanceType()` in datastore.ts),\n // but still send the object correctly over the wire\n const replacer = (k, v) => {\n const isAWSJSON = k &&\n v !== null &&\n typeof v === 'object' &&\n modelDefinition.fields[k] &&\n modelDefinition.fields[k].type === 'AWSJSON';\n if (isAWSJSON) {\n return JSON.stringify(v);\n }\n return v;\n };\n const modelId = getIdentifierValue(modelDefinition, element);\n const optionalId = types_1.OpType.INSERT && id ? { id } : {};\n const mutationEvent = modelInstanceCreator(MutationEventConstructor, {\n ...optionalId,\n data: JSON.stringify(element, replacer),\n modelId,\n model: model.name,\n operation: operation,\n condition: JSON.stringify(condition),\n });\n return mutationEvent;\n}\nexports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;\nfunction predicateToGraphQLCondition(predicate, modelDefinition) {\n const result = {};\n if (!predicate || !Array.isArray(predicate.predicates)) {\n return result;\n }\n // This is compatible with how the GQL Transform currently generates the Condition Input,\n // i.e. any PK and SK fields are omitted and can't be used as conditions.\n // However, I think this limits usability.\n // What if we want to delete all records where SK > some value\n // Or all records where PK = some value but SKs are different values\n // TODO: if the Transform gets updated we'll need to modify this logic to only omit\n // key fields from the predicate/condition when ALL of the keyFields are present and using `eq` operators\n const keyFields = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n return predicateToGraphQLFilter(predicate, keyFields);\n}\nexports.predicateToGraphQLCondition = predicateToGraphQLCondition;\n/**\n * @param predicatesGroup - Predicate Group\n @returns GQL Filter Expression from Predicate Group\n\n @remarks Flattens redundant list predicates\n @example\n\n ```js\n { and:[{ and:[{ username: { eq: 'bob' }}] }] }\n ```\n Becomes\n ```js\n { and:[{ username: { eq: 'bob' }}] }\n ```\n */\nfunction predicateToGraphQLFilter(predicatesGroup, fieldsToOmit = [], root = true) {\n const result = {};\n if (!predicatesGroup || !Array.isArray(predicatesGroup.predicates)) {\n return result;\n }\n const { type, predicates } = predicatesGroup;\n const isList = type === 'and' || type === 'or';\n result[type] = isList ? [] : {};\n const children = [];\n predicates.forEach(predicate => {\n if ((0, types_1.isPredicateObj)(predicate)) {\n const { field, operator, operand } = predicate;\n if (fieldsToOmit.includes(field))\n return;\n const gqlField = {\n [field]: { [operator]: operand },\n };\n children.push(gqlField);\n return;\n }\n const child = predicateToGraphQLFilter(predicate, fieldsToOmit, false);\n if (Object.keys(child).length > 0) {\n children.push(child);\n }\n });\n // flatten redundant list predicates\n if (children.length === 1) {\n const [child] = children;\n if (\n // any nested list node\n (isList && !root) ||\n // root list node where the only child is also a list node\n (isList && root && ('and' in child || 'or' in child))) {\n delete result[type];\n Object.assign(result, child);\n return result;\n }\n }\n children.forEach(child => {\n if (isList) {\n result[type].push(child);\n }\n else {\n result[type] = child;\n }\n });\n if (isList) {\n if (result[type].length === 0)\n return {};\n }\n else {\n if (Object.keys(result[type]).length === 0)\n return {};\n }\n return result;\n}\nexports.predicateToGraphQLFilter = predicateToGraphQLFilter;\n/**\n *\n * @param group - selective sync predicate group\n * @returns set of distinct field names in the filter group\n */\nfunction filterFields(group) {\n const fields = new Set();\n if (!group || !Array.isArray(group.predicates))\n return fields;\n const { predicates } = group;\n const stack = [...predicates];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateObj)(current)) {\n fields.add(current.field);\n }\n else if ((0, types_1.isPredicateGroup)(current)) {\n stack.push(...current.predicates);\n }\n }\n return fields;\n}\nexports.filterFields = filterFields;\n/**\n *\n * @param modelDefinition\n * @returns set of field names used with dynamic auth modes configured for the provided model definition\n */\nfunction dynamicAuthFields(modelDefinition) {\n const rules = getAuthorizationRules(modelDefinition);\n const fields = new Set();\n for (const rule of rules) {\n if (rule.groupsField && !rule.groups.length) {\n // dynamic group rule will have no values in `rule.groups`\n fields.add(rule.groupsField);\n }\n else if (rule.ownerField) {\n fields.add(rule.ownerField);\n }\n }\n return fields;\n}\nexports.dynamicAuthFields = dynamicAuthFields;\n/**\n *\n * @param group - selective sync predicate group\n * @returns the total number of OR'd predicates in the filter group\n *\n * @example returns 2\n * ```js\n * { type: \"or\", predicates: [\n * { field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * { field: \"title\", operator: \"contains\", operand: \"abc\" },\n * ]}\n * ```\n */\nfunction countFilterCombinations(group) {\n if (!group || !Array.isArray(group.predicates))\n return 0;\n let count = 0;\n const stack = [group];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateGroup)(current)) {\n const { predicates, type } = current;\n // ignore length = 1; groups with 1 predicate will get flattened when converted to gqlFilter\n if (type === 'or' && predicates.length > 1) {\n count += predicates.length;\n }\n stack.push(...predicates);\n }\n }\n // if we didn't encounter any OR groups, default to 1\n return count || 1;\n}\nexports.countFilterCombinations = countFilterCombinations;\n/**\n *\n * @param group - selective sync predicate group\n * @returns name of repeated field | null\n *\n * @example returns \"username\"\n * ```js\n * { type: \"and\", predicates: [\n * \t\t{ field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * \t\t{ field: \"username\", operator: \"contains\", operand: \"abc\" },\n * ] }\n * ```\n */\nfunction repeatedFieldInGroup(group) {\n if (!group || !Array.isArray(group.predicates))\n return null;\n // convert to filter in order to flatten redundant groups\n const gqlFilter = predicateToGraphQLFilter(group);\n const stack = [gqlFilter];\n const hasGroupRepeatedFields = (fields) => {\n const seen = {};\n for (const f of fields) {\n const [fieldName] = Object.keys(f);\n if (seen[fieldName]) {\n return fieldName;\n }\n seen[fieldName] = true;\n }\n return null;\n };\n while (stack.length > 0) {\n const current = stack.pop();\n const [key] = Object.keys(current);\n const values = current[key];\n if (!Array.isArray(values)) {\n return null;\n }\n // field value will be single object\n const predicateObjects = values.filter(v => !Array.isArray(Object.values(v)[0]));\n // group value will be an array\n const predicateGroups = values.filter(v => Array.isArray(Object.values(v)[0]));\n if (key === 'and') {\n const repeatedField = hasGroupRepeatedFields(predicateObjects);\n if (repeatedField) {\n return repeatedField;\n }\n }\n stack.push(...predicateGroups);\n }\n return null;\n}\nexports.repeatedFieldInGroup = repeatedFieldInGroup;\nvar RTFError;\n(function (RTFError) {\n RTFError[RTFError[\"UnknownField\"] = 0] = \"UnknownField\";\n RTFError[RTFError[\"MaxAttributes\"] = 1] = \"MaxAttributes\";\n RTFError[RTFError[\"MaxCombinations\"] = 2] = \"MaxCombinations\";\n RTFError[RTFError[\"RepeatedFieldname\"] = 3] = \"RepeatedFieldname\";\n RTFError[RTFError[\"NotGroup\"] = 4] = \"NotGroup\";\n RTFError[RTFError[\"FieldNotInType\"] = 5] = \"FieldNotInType\";\n})(RTFError = exports.RTFError || (exports.RTFError = {}));\nfunction generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {\n const selSyncFields = filterFields(predicatesGroup);\n const selSyncFieldStr = [...selSyncFields].join(', ');\n const dynamicAuthModeFields = dynamicAuthFields(modelDefinition);\n const dynamicAuthFieldsStr = [...dynamicAuthModeFields].join(', ');\n const filterCombinations = countFilterCombinations(predicatesGroup);\n const repeatedField = repeatedFieldInGroup(predicatesGroup);\n switch (errorType) {\n case RTFError.UnknownField:\n return (`Your API was generated with an older version of the CLI that doesn't support backend subscription filtering.` +\n 'To enable backend subscription filtering, upgrade your Amplify CLI to the latest version and push your app by running `amplify upgrade` followed by `amplify push`');\n case RTFError.MaxAttributes: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${selSyncFields.size} different model fields: ${selSyncFieldStr}.\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth each utilize 1 field.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.MaxCombinations: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${filterCombinations} field combinations (total number of predicates in an OR expression).\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth factor in to the number of combinations you're using.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.RepeatedFieldname:\n return `Your selective sync expression for ${modelDefinition.name} contains multiple entries for ${repeatedField} in the same AND group.`;\n case RTFError.NotGroup:\n return (`Your selective sync expression for ${modelDefinition.name} uses a \\`not\\` group. If you'd like to filter subscriptions in the backend, ` +\n `rewrite your expression using \\`ne\\` or \\`notContains\\` operators.`);\n case RTFError.FieldNotInType:\n // no remediation instructions. We'll surface the message directly\n return '';\n }\n}\nexports.generateRTFRemediation = generateRTFRemediation;\nfunction getUserGroupsFromToken(token, rule) {\n // validate token against groupClaim\n let userGroups = token[rule.groupClaim] || [];\n if (typeof userGroups === 'string') {\n let parsedGroups;\n try {\n parsedGroups = JSON.parse(userGroups);\n }\n catch (e) {\n parsedGroups = userGroups;\n }\n userGroups = [].concat(parsedGroups);\n }\n return userGroups;\n}\nexports.getUserGroupsFromToken = getUserGroupsFromToken;\nasync function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {\n const operations = Object.values(types_1.ModelOperation);\n const modelAuthModes = {\n CREATE: [],\n READ: [],\n UPDATE: [],\n DELETE: [],\n };\n try {\n await Promise.all(operations.map(async (operation) => {\n const authModes = await authModeStrategy({\n schema,\n modelName,\n operation,\n });\n if (typeof authModes === 'string') {\n modelAuthModes[operation] = [authModes];\n }\n else if (Array.isArray(authModes) && authModes.length) {\n modelAuthModes[operation] = authModes;\n }\n else {\n // Use default auth mode if nothing is returned from authModeStrategy\n modelAuthModes[operation] = [defaultAuthMode];\n }\n }));\n }\n catch (error) {\n logger.debug(`Error getting auth modes for model: ${modelName}`, error);\n }\n return modelAuthModes;\n}\nexports.getModelAuthModes = getModelAuthModes;\nfunction getForbiddenError(error) {\n const forbiddenErrorCodes = [401, 403];\n let forbiddenError;\n if (error && error.errors) {\n forbiddenError = error.errors.find(err => forbiddenErrorCodes.includes(resolveServiceErrorStatusCode(err)));\n }\n else if (error && error.message) {\n forbiddenError = error;\n }\n if (forbiddenError) {\n return (forbiddenError.message ??\n `Request failed with status code ${resolveServiceErrorStatusCode(forbiddenError)}`);\n }\n return null;\n}\nexports.getForbiddenError = getForbiddenError;\nfunction resolveServiceErrorStatusCode(error) {\n if (error?.$metadata?.httpStatusCode) {\n return Number(error?.$metadata?.httpStatusCode);\n }\n else if (error?.originalError) {\n return resolveServiceErrorStatusCode(error?.originalError);\n }\n else {\n return null;\n }\n}\nexports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;\nfunction getClientSideAuthError(error) {\n const clientSideAuthErrors = Object.values(api_1.GraphQLAuthError);\n const clientSideError = error &&\n error.message &&\n clientSideAuthErrors.find(clientError => error.message.includes(clientError));\n return clientSideError || null;\n}\nexports.getClientSideAuthError = getClientSideAuthError;\nasync function getTokenForCustomAuth(authMode, amplifyConfig = {}) {\n if (authMode === 'lambda') {\n const { authProviders: { functionAuthProvider } = { functionAuthProvider: null }, } = amplifyConfig;\n if (functionAuthProvider && typeof functionAuthProvider === 'function') {\n try {\n const { token } = await functionAuthProvider();\n return token;\n }\n catch (error) {\n throw new Error(`Error retrieving token from \\`functionAuthProvider\\`: ${error}`);\n }\n }\n else {\n // TODO: add docs link once available\n throw new Error('You must provide a `functionAuthProvider` function to `DataStore.configure` when using lambda');\n }\n }\n}\nexports.getTokenForCustomAuth = getTokenForCustomAuth;\n// Util that takes a modelDefinition and model and returns either the id value(s) or the custom primary key value(s)\nfunction getIdentifierValue(modelDefinition, model) {\n const pkFieldNames = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n const idOrPk = pkFieldNames.map(f => model[f]).join(util_1.IDENTIFIER_KEY_SEPARATOR);\n return idOrPk;\n}\nexports.getIdentifierValue = getIdentifierValue;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/sync/utils.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RTFError = exports.TransformerMutationType = void 0;\nexports.getMetadataFields = getMetadataFields;\nexports.generateSelectionSet = generateSelectionSet;\nexports.getAuthorizationRules = getAuthorizationRules;\nexports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;\nexports.buildGraphQLOperation = buildGraphQLOperation;\nexports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;\nexports.predicateToGraphQLCondition = predicateToGraphQLCondition;\nexports.predicateToGraphQLFilter = predicateToGraphQLFilter;\nexports.filterFields = filterFields;\nexports.dynamicAuthFields = dynamicAuthFields;\nexports.countFilterCombinations = countFilterCombinations;\nexports.repeatedFieldInGroup = repeatedFieldInGroup;\nexports.generateRTFRemediation = generateRTFRemediation;\nexports.getUserGroupsFromToken = getUserGroupsFromToken;\nexports.getModelAuthModes = getModelAuthModes;\nexports.getForbiddenError = getForbiddenError;\nexports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;\nexports.getClientSideAuthError = getClientSideAuthError;\nexports.getTokenForCustomAuth = getTokenForCustomAuth;\nexports.getIdentifierValue = getIdentifierValue;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst api_1 = require(\"@aws-amplify/api\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nconst GraphQLOperationType = {\n LIST: 'query',\n CREATE: 'mutation',\n UPDATE: 'mutation',\n DELETE: 'mutation',\n GET: 'query',\n};\nvar TransformerMutationType;\n(function (TransformerMutationType) {\n TransformerMutationType[\"CREATE\"] = \"Create\";\n TransformerMutationType[\"UPDATE\"] = \"Update\";\n TransformerMutationType[\"DELETE\"] = \"Delete\";\n TransformerMutationType[\"GET\"] = \"Get\";\n})(TransformerMutationType || (exports.TransformerMutationType = TransformerMutationType = {}));\nconst dummyMetadata = {\n _version: undefined,\n _lastChangedAt: undefined,\n _deleted: undefined,\n};\nconst metadataFields = Object.keys(dummyMetadata);\nfunction getMetadataFields() {\n return metadataFields;\n}\nfunction generateSelectionSet(namespace, modelDefinition) {\n const scalarFields = getScalarFields(modelDefinition);\n const nonModelFields = getNonModelFields(namespace, modelDefinition);\n const implicitOwnerField = getImplicitOwnerField(modelDefinition, scalarFields);\n let scalarAndMetadataFields = Object.values(scalarFields)\n .map(({ name }) => name)\n .concat(implicitOwnerField)\n .concat(nonModelFields);\n if ((0, types_1.isSchemaModel)(modelDefinition)) {\n scalarAndMetadataFields = scalarAndMetadataFields\n .concat(getMetadataFields())\n .concat(getConnectionFields(modelDefinition, namespace));\n }\n const result = scalarAndMetadataFields.join('\\n');\n return result;\n}\nfunction getImplicitOwnerField(modelDefinition, scalarFields) {\n const ownerFields = getOwnerFields(modelDefinition);\n if (!scalarFields.owner && ownerFields.includes('owner')) {\n return ['owner'];\n }\n return [];\n}\nfunction getOwnerFields(modelDefinition) {\n const ownerFields = [];\n if ((0, types_1.isSchemaModelWithAttributes)(modelDefinition)) {\n modelDefinition.attributes.forEach(attr => {\n if (attr.properties && attr.properties.rules) {\n const rule = attr.properties.rules.find(currentRule => currentRule.allow === 'owner');\n if (rule && rule.ownerField) {\n ownerFields.push(rule.ownerField);\n }\n }\n });\n }\n return ownerFields;\n}\nfunction getScalarFields(modelDefinition) {\n const { fields } = modelDefinition;\n const result = Object.values(fields)\n .filter(field => {\n if ((0, types_1.isGraphQLScalarType)(field.type) || (0, types_1.isEnumFieldType)(field.type)) {\n return true;\n }\n return false;\n })\n .reduce((acc, field) => {\n acc[field.name] = field;\n return acc;\n }, {});\n return result;\n}\n// Used for generating the selection set for queries and mutations\nfunction getConnectionFields(modelDefinition, namespace) {\n const result = [];\n Object.values(modelDefinition.fields)\n .filter(({ association }) => association && Object.keys(association).length)\n .forEach(({ name, association }) => {\n const { connectionType } = association || {};\n switch (connectionType) {\n case 'HAS_ONE':\n case 'HAS_MANY':\n // Intentionally blank\n break;\n case 'BELONGS_TO':\n if ((0, types_1.isTargetNameAssociation)(association)) {\n // New codegen (CPK)\n if (association.targetNames && association.targetNames.length > 0) {\n // Need to retrieve relations in order to get connected model keys\n const [relations] = (0, util_1.establishRelationAndKeys)(namespace);\n const connectedModelName = modelDefinition.fields[name].type.model;\n const byPkIndex = relations[connectedModelName].indexes.find(([currentName]) => currentName === 'byPk');\n const keyFields = byPkIndex && byPkIndex[1];\n const keyFieldSelectionSet = keyFields?.join(' ');\n // We rely on `_deleted` when we process the sync query (e.g. in batchSave in the adapters)\n result.push(`${name} { ${keyFieldSelectionSet} _deleted }`);\n }\n else {\n // backwards-compatability for schema generated prior to custom primary key support\n result.push(`${name} { id _deleted }`);\n }\n }\n break;\n default:\n throw new Error(`Invalid connection type ${connectionType}`);\n }\n });\n return result;\n}\nfunction getNonModelFields(namespace, modelDefinition) {\n const result = [];\n Object.values(modelDefinition.fields).forEach(({ name, type }) => {\n if ((0, types_1.isNonModelFieldType)(type)) {\n const typeDefinition = namespace.nonModels[type.nonModel];\n const scalarFields = Object.values(getScalarFields(typeDefinition)).map(({ name: currentName }) => currentName);\n const nested = [];\n Object.values(typeDefinition.fields).forEach(field => {\n const { type: fieldType, name: fieldName } = field;\n if ((0, types_1.isNonModelFieldType)(fieldType)) {\n const nonModelTypeDefinition = namespace.nonModels[fieldType.nonModel];\n nested.push(`${fieldName} { ${generateSelectionSet(namespace, nonModelTypeDefinition)} }`);\n }\n });\n result.push(`${name} { ${scalarFields.join(' ')} ${nested.join(' ')} }`);\n }\n });\n return result;\n}\nfunction getAuthorizationRules(modelDefinition) {\n // Searching for owner authorization on attributes\n const authConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'auth');\n const { properties: { rules = [] } = {} } = authConfig || {};\n const resultRules = [];\n // Multiple rules can be declared for allow: owner\n rules.forEach(rule => {\n // setting defaults for backwards compatibility with old cli\n const { identityClaim = 'cognito:username', ownerField = 'owner', operations = ['create', 'update', 'delete', 'read'], provider = 'userPools', groupClaim = 'cognito:groups', allow: authStrategy = 'iam', groups = [], groupsField = '', } = rule;\n const isReadAuthorized = operations.includes('read');\n const isOwnerAuth = authStrategy === 'owner';\n if (!isReadAuthorized && !isOwnerAuth) {\n return;\n }\n const authRule = {\n identityClaim,\n ownerField,\n provider,\n groupClaim,\n authStrategy,\n groups,\n groupsField,\n areSubscriptionsPublic: false,\n };\n if (isOwnerAuth) {\n // look for the subscription level override\n // only pay attention to the public level\n const modelConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'model');\n // find the subscriptions level. ON is default\n const { properties: { subscriptions: { level = 'on' } = {} } = {} } = modelConfig || {};\n // treat subscriptions as public for owner auth with unprotected reads\n // when `read` is omitted from `operations`\n authRule.areSubscriptionsPublic =\n !operations.includes('read') || level === 'public';\n }\n if (isOwnerAuth) {\n // owner rules has least priority\n resultRules.push(authRule);\n return;\n }\n resultRules.unshift(authRule);\n });\n return resultRules;\n}\nfunction buildSubscriptionGraphQLOperation(namespace, modelDefinition, transformerMutationType, isOwnerAuthorization, ownerField, filterArg = false) {\n const selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName } = modelDefinition;\n const opName = `on${transformerMutationType}${typeName}`;\n const docArgs = [];\n const opArgs = [];\n if (filterArg) {\n docArgs.push(`$filter: ModelSubscription${typeName}FilterInput`);\n opArgs.push('filter: $filter');\n }\n if (isOwnerAuthorization) {\n docArgs.push(`$${ownerField}: String!`);\n opArgs.push(`${ownerField}: $${ownerField}`);\n }\n const docStr = docArgs.length ? `(${docArgs.join(',')})` : '';\n const opStr = opArgs.length ? `(${opArgs.join(',')})` : '';\n return [\n transformerMutationType,\n opName,\n `subscription operation${docStr}{\n\t\t\t${opName}${opStr}{\n\t\t\t\t${selectionSet}\n\t\t\t}\n\t\t}`,\n ];\n}\nfunction buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {\n let selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName, pluralName: pluralTypeName } = modelDefinition;\n let operation;\n let documentArgs;\n let operationArgs;\n let transformerMutationType;\n switch (graphQLOpType) {\n case 'LIST':\n operation = `sync${pluralTypeName}`;\n documentArgs = `($limit: Int, $nextToken: String, $lastSync: AWSTimestamp, $filter: Model${typeName}FilterInput)`;\n operationArgs =\n '(limit: $limit, nextToken: $nextToken, lastSync: $lastSync, filter: $filter)';\n selectionSet = `items {\n\t\t\t\t\t\t\t${selectionSet}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextToken\n\t\t\t\t\t\tstartedAt`;\n break;\n case 'CREATE':\n operation = `create${typeName}`;\n documentArgs = `($input: Create${typeName}Input!)`;\n operationArgs = '(input: $input)';\n transformerMutationType = TransformerMutationType.CREATE;\n break;\n case 'UPDATE':\n operation = `update${typeName}`;\n documentArgs = `($input: Update${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.UPDATE;\n break;\n case 'DELETE':\n operation = `delete${typeName}`;\n documentArgs = `($input: Delete${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.DELETE;\n break;\n case 'GET':\n operation = `get${typeName}`;\n documentArgs = `($id: ID!)`;\n operationArgs = '(id: $id)';\n transformerMutationType = TransformerMutationType.GET;\n break;\n default:\n throw new Error(`Invalid graphQlOpType ${graphQLOpType}`);\n }\n return [\n [\n transformerMutationType,\n operation,\n `${GraphQLOperationType[graphQLOpType]} operation${documentArgs}{\n\t\t${operation}${operationArgs}{\n\t\t\t${selectionSet}\n\t\t}\n\t}`,\n ],\n ];\n}\nfunction createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {\n let operation;\n switch (opType) {\n case types_1.OpType.INSERT:\n operation = TransformerMutationType.CREATE;\n break;\n case types_1.OpType.UPDATE:\n operation = TransformerMutationType.UPDATE;\n break;\n case types_1.OpType.DELETE:\n operation = TransformerMutationType.DELETE;\n break;\n default:\n throw new Error(`Invalid opType ${opType}`);\n }\n // stringify nested objects of type AWSJSON\n // this allows us to return parsed JSON to users (see `castInstanceType()` in datastore.ts),\n // but still send the object correctly over the wire\n const replacer = (k, v) => {\n const isAWSJSON = k &&\n v !== null &&\n typeof v === 'object' &&\n modelDefinition.fields[k] &&\n modelDefinition.fields[k].type === 'AWSJSON';\n if (isAWSJSON) {\n return JSON.stringify(v);\n }\n return v;\n };\n const modelId = getIdentifierValue(modelDefinition, element);\n const optionalId = types_1.OpType.INSERT && id ? { id } : {};\n const mutationEvent = modelInstanceCreator(MutationEventConstructor, {\n ...optionalId,\n data: JSON.stringify(element, replacer),\n modelId,\n model: model.name,\n operation: operation,\n condition: JSON.stringify(condition),\n });\n return mutationEvent;\n}\nfunction predicateToGraphQLCondition(predicate, modelDefinition) {\n const result = {};\n if (!predicate || !Array.isArray(predicate.predicates)) {\n return result;\n }\n // This is compatible with how the GQL Transform currently generates the Condition Input,\n // i.e. any PK and SK fields are omitted and can't be used as conditions.\n // However, I think this limits usability.\n // What if we want to delete all records where SK > some value\n // Or all records where PK = some value but SKs are different values\n // TODO: if the Transform gets updated we'll need to modify this logic to only omit\n // key fields from the predicate/condition when ALL of the keyFields are present and using `eq` operators\n const keyFields = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n return predicateToGraphQLFilter(predicate, keyFields);\n}\n/**\n * @param predicatesGroup - Predicate Group\n @returns GQL Filter Expression from Predicate Group\n\n @remarks Flattens redundant list predicates\n @example\n\n ```js\n { and:[{ and:[{ username: { eq: 'bob' }}] }] }\n ```\n Becomes\n ```js\n { and:[{ username: { eq: 'bob' }}] }\n ```\n */\nfunction predicateToGraphQLFilter(predicatesGroup, fieldsToOmit = [], root = true) {\n const result = {};\n if (!predicatesGroup || !Array.isArray(predicatesGroup.predicates)) {\n return result;\n }\n const { type, predicates } = predicatesGroup;\n const isList = type === 'and' || type === 'or';\n result[type] = isList ? [] : {};\n const children = [];\n predicates.forEach(predicate => {\n if ((0, types_1.isPredicateObj)(predicate)) {\n const { field, operator, operand } = predicate;\n if (fieldsToOmit.includes(field))\n return;\n const gqlField = {\n [field]: { [operator]: operand },\n };\n children.push(gqlField);\n return;\n }\n const child = predicateToGraphQLFilter(predicate, fieldsToOmit, false);\n if (Object.keys(child).length > 0) {\n children.push(child);\n }\n });\n // flatten redundant list predicates\n if (children.length === 1) {\n const [child] = children;\n if (\n // any nested list node\n (isList && !root) ||\n // root list node where the only child is also a list node\n (isList && root && ('and' in child || 'or' in child))) {\n delete result[type];\n Object.assign(result, child);\n return result;\n }\n }\n children.forEach(child => {\n if (isList) {\n result[type].push(child);\n }\n else {\n result[type] = child;\n }\n });\n if (isList) {\n if (result[type].length === 0)\n return {};\n }\n else {\n if (Object.keys(result[type]).length === 0)\n return {};\n }\n return result;\n}\n/**\n *\n * @param group - selective sync predicate group\n * @returns set of distinct field names in the filter group\n */\nfunction filterFields(group) {\n const fields = new Set();\n if (!group || !Array.isArray(group.predicates))\n return fields;\n const { predicates } = group;\n const stack = [...predicates];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateObj)(current)) {\n fields.add(current.field);\n }\n else if ((0, types_1.isPredicateGroup)(current)) {\n stack.push(...current.predicates);\n }\n }\n return fields;\n}\n/**\n *\n * @param modelDefinition\n * @returns set of field names used with dynamic auth modes configured for the provided model definition\n */\nfunction dynamicAuthFields(modelDefinition) {\n const rules = getAuthorizationRules(modelDefinition);\n const fields = new Set();\n for (const rule of rules) {\n if (rule.groupsField && !rule.groups.length) {\n // dynamic group rule will have no values in `rule.groups`\n fields.add(rule.groupsField);\n }\n else if (rule.ownerField) {\n fields.add(rule.ownerField);\n }\n }\n return fields;\n}\n/**\n *\n * @param group - selective sync predicate group\n * @returns the total number of OR'd predicates in the filter group\n *\n * @example returns 2\n * ```js\n * { type: \"or\", predicates: [\n * { field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * { field: \"title\", operator: \"contains\", operand: \"abc\" },\n * ]}\n * ```\n */\nfunction countFilterCombinations(group) {\n if (!group || !Array.isArray(group.predicates))\n return 0;\n let count = 0;\n const stack = [group];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateGroup)(current)) {\n const { predicates, type } = current;\n // ignore length = 1; groups with 1 predicate will get flattened when converted to gqlFilter\n if (type === 'or' && predicates.length > 1) {\n count += predicates.length;\n }\n stack.push(...predicates);\n }\n }\n // if we didn't encounter any OR groups, default to 1\n return count || 1;\n}\n/**\n *\n * @param group - selective sync predicate group\n * @returns name of repeated field | null\n *\n * @example returns \"username\"\n * ```js\n * { type: \"and\", predicates: [\n * \t\t{ field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * \t\t{ field: \"username\", operator: \"contains\", operand: \"abc\" },\n * ] }\n * ```\n */\nfunction repeatedFieldInGroup(group) {\n if (!group || !Array.isArray(group.predicates))\n return null;\n // convert to filter in order to flatten redundant groups\n const gqlFilter = predicateToGraphQLFilter(group);\n const stack = [gqlFilter];\n const hasGroupRepeatedFields = (fields) => {\n const seen = {};\n for (const f of fields) {\n const [fieldName] = Object.keys(f);\n if (seen[fieldName]) {\n return fieldName;\n }\n seen[fieldName] = true;\n }\n return null;\n };\n while (stack.length > 0) {\n const current = stack.pop();\n const [key] = Object.keys(current);\n const values = current[key];\n if (!Array.isArray(values)) {\n return null;\n }\n // field value will be single object\n const predicateObjects = values.filter(v => !Array.isArray(Object.values(v)[0]));\n // group value will be an array\n const predicateGroups = values.filter(v => Array.isArray(Object.values(v)[0]));\n if (key === 'and') {\n const repeatedField = hasGroupRepeatedFields(predicateObjects);\n if (repeatedField) {\n return repeatedField;\n }\n }\n stack.push(...predicateGroups);\n }\n return null;\n}\nvar RTFError;\n(function (RTFError) {\n RTFError[RTFError[\"UnknownField\"] = 0] = \"UnknownField\";\n RTFError[RTFError[\"MaxAttributes\"] = 1] = \"MaxAttributes\";\n RTFError[RTFError[\"MaxCombinations\"] = 2] = \"MaxCombinations\";\n RTFError[RTFError[\"RepeatedFieldname\"] = 3] = \"RepeatedFieldname\";\n RTFError[RTFError[\"NotGroup\"] = 4] = \"NotGroup\";\n RTFError[RTFError[\"FieldNotInType\"] = 5] = \"FieldNotInType\";\n})(RTFError || (exports.RTFError = RTFError = {}));\nfunction generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {\n const selSyncFields = filterFields(predicatesGroup);\n const selSyncFieldStr = [...selSyncFields].join(', ');\n const dynamicAuthModeFields = dynamicAuthFields(modelDefinition);\n const dynamicAuthFieldsStr = [...dynamicAuthModeFields].join(', ');\n const filterCombinations = countFilterCombinations(predicatesGroup);\n const repeatedField = repeatedFieldInGroup(predicatesGroup);\n switch (errorType) {\n case RTFError.UnknownField:\n return (`Your API was generated with an older version of the CLI that doesn't support backend subscription filtering.` +\n 'To enable backend subscription filtering, upgrade your Amplify CLI to the latest version and push your app by running `amplify upgrade` followed by `amplify push`');\n case RTFError.MaxAttributes: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${selSyncFields.size} different model fields: ${selSyncFieldStr}.\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth each utilize 1 field.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.MaxCombinations: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${filterCombinations} field combinations (total number of predicates in an OR expression).\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth factor in to the number of combinations you're using.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.RepeatedFieldname:\n return `Your selective sync expression for ${modelDefinition.name} contains multiple entries for ${repeatedField} in the same AND group.`;\n case RTFError.NotGroup:\n return (`Your selective sync expression for ${modelDefinition.name} uses a \\`not\\` group. If you'd like to filter subscriptions in the backend, ` +\n `rewrite your expression using \\`ne\\` or \\`notContains\\` operators.`);\n case RTFError.FieldNotInType:\n // no remediation instructions. We'll surface the message directly\n return '';\n }\n}\nfunction getUserGroupsFromToken(token, rule) {\n // validate token against groupClaim\n let userGroups = token[rule.groupClaim] || [];\n if (typeof userGroups === 'string') {\n let parsedGroups;\n try {\n parsedGroups = JSON.parse(userGroups);\n }\n catch (e) {\n parsedGroups = userGroups;\n }\n userGroups = [].concat(parsedGroups);\n }\n return userGroups;\n}\nasync function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {\n const operations = Object.values(types_1.ModelOperation);\n const modelAuthModes = {\n CREATE: [],\n READ: [],\n UPDATE: [],\n DELETE: [],\n };\n try {\n await Promise.all(operations.map(async (operation) => {\n const authModes = await authModeStrategy({\n schema,\n modelName,\n operation,\n });\n if (typeof authModes === 'string') {\n modelAuthModes[operation] = [authModes];\n }\n else if (Array.isArray(authModes) && authModes.length) {\n modelAuthModes[operation] = authModes;\n }\n else {\n // Use default auth mode if nothing is returned from authModeStrategy\n modelAuthModes[operation] = [defaultAuthMode];\n }\n }));\n }\n catch (error) {\n logger.debug(`Error getting auth modes for model: ${modelName}`, error);\n }\n return modelAuthModes;\n}\nfunction getForbiddenError(error) {\n const forbiddenErrorCodes = [401, 403];\n let forbiddenError;\n if (error && error.errors) {\n forbiddenError = error.errors.find(err => forbiddenErrorCodes.includes(resolveServiceErrorStatusCode(err)));\n }\n else if (error && error.message) {\n forbiddenError = error;\n }\n if (forbiddenError) {\n return (forbiddenError.message ??\n `Request failed with status code ${resolveServiceErrorStatusCode(forbiddenError)}`);\n }\n return null;\n}\nfunction resolveServiceErrorStatusCode(error) {\n if (error?.$metadata?.httpStatusCode) {\n return Number(error?.$metadata?.httpStatusCode);\n }\n else if (error?.originalError) {\n return resolveServiceErrorStatusCode(error?.originalError);\n }\n else {\n return null;\n }\n}\nfunction getClientSideAuthError(error) {\n const clientSideAuthErrors = Object.values(api_1.GraphQLAuthError);\n const clientSideError = error &&\n error.message &&\n clientSideAuthErrors.find(clientError => error.message.includes(clientError));\n return clientSideError || null;\n}\nasync function getTokenForCustomAuth(authMode, amplifyConfig = {}) {\n if (authMode === 'lambda') {\n const { authProviders: { functionAuthProvider } = { functionAuthProvider: null }, } = amplifyConfig;\n if (functionAuthProvider && typeof functionAuthProvider === 'function') {\n try {\n const { token } = await functionAuthProvider();\n return token;\n }\n catch (error) {\n throw new Error(`Error retrieving token from \\`functionAuthProvider\\`: ${error}`);\n }\n }\n else {\n // TODO: add docs link once available\n throw new Error('You must provide a `functionAuthProvider` function to `DataStore.configure` when using lambda');\n }\n }\n}\n// Util that takes a modelDefinition and model and returns either the id value(s) or the custom primary key value(s)\nfunction getIdentifierValue(modelDefinition, model) {\n const pkFieldNames = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n const idOrPk = pkFieldNames.map(f => model[f]).join(util_1.IDENTIFIER_KEY_SEPARATOR);\n return idOrPk;\n}\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,uBAAuB,GAAG,MAAM;AAC3D,OAAO,CAAC,iBAAiB,GAAG,iBAAiB;AAC7C,OAAO,CAAC,oBAAoB,GAAG,oBAAoB;AACnD,OAAO,CAAC,qBAAqB,GAAG,qBAAqB;AACrD,OAAO,CAAC,iCAAiC,GAAG,iCAAiC;AAC7E,OAAO,CAAC,qBAAqB,GAAG,qBAAqB;AACrD,OAAO,CAAC,wCAAwC,GAAG,wCAAwC;AAC3F,OAAO,CAAC,2BAA2B,GAAG,2BAA2B;AACjE,OAAO,CAAC,wBAAwB,GAAG,wBAAwB;AAC3D,OAAO,CAAC,YAAY,GAAG,YAAY;AACnC,OAAO,CAAC,iBAAiB,GAAG,iBAAiB;AAC7C,OAAO,CAAC,uBAAuB,GAAG,uBAAuB;AACzD,OAAO,CAAC,oBAAoB,GAAG,oBAAoB;AACnD,OAAO,CAAC,sBAAsB,GAAG,sBAAsB;AACvD,OAAO,CAAC,sBAAsB,GAAG,sBAAsB;AACvD,OAAO,CAAC,iBAAiB,GAAG,iBAAiB;AAC7C,OAAO,CAAC,iBAAiB,GAAG,iBAAiB;AAC7C,OAAO,CAAC,6BAA6B,GAAG,6BAA6B;AACrE,OAAO,CAAC,sBAAsB,GAAG,sBAAsB;AACvD,OAAO,CAAC,qBAAqB,GAAG,qBAAqB;AACrD,OAAO,CAAC,kBAAkB,GAAG,kBAAkB;AAC/C;AACA;AACA,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACzC,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;AACnC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;AACjC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;AACpD,MAAM,oBAAoB,GAAG;AAC7B,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,GAAG,EAAE,OAAO;AAChB,CAAC;AACD,IAAI,uBAAuB;AAC3B,CAAC,UAAU,uBAAuB,EAAE;AACpC,IAAI,uBAAuB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAChD,IAAI,uBAAuB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAChD,IAAI,uBAAuB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAChD,IAAI,uBAAuB,CAAC,KAAK,CAAC,GAAG,KAAK;AAC1C,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,GAAG,uBAAuB,GAAG,EAAE,CAAC,CAAC;AAC/F,MAAM,aAAa,GAAG;AACtB,IAAI,QAAQ,EAAE,SAAS;AACvB,IAAI,cAAc,EAAE,SAAS;AAC7B,IAAI,QAAQ,EAAE,SAAS;AACvB,CAAC;AACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AACjD,SAAS,iBAAiB,GAAG;AAC7B,IAAI,OAAO,cAAc;AACzB;AACA,SAAS,oBAAoB,CAAC,SAAS,EAAE,eAAe,EAAE;AAC1D,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC;AACzD,IAAI,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC;AACxE,IAAI,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,eAAe,EAAE,YAAY,CAAC;AACnF,IAAI,IAAI,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY;AAC5D,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI;AAC/B,SAAS,MAAM,CAAC,kBAAkB;AAClC,SAAS,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAI,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE;AACrD,QAAQ,uBAAuB,GAAG;AAClC,aAAa,MAAM,CAAC,iBAAiB,EAAE;AACvC,aAAa,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AACpE;AACA,IAAI,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE;AAC9D,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC;AACvD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC9D,QAAQ,OAAO,CAAC,OAAO,CAAC;AACxB;AACA,IAAI,OAAO,EAAE;AACb;AACA,SAAS,cAAc,CAAC,eAAe,EAAE;AACzC,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B,IAAI,IAAI,IAAI,OAAO,CAAC,2BAA2B,EAAE,eAAe,CAAC,EAAE;AACnE,QAAQ,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI;AACnD,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC1D,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC;AACrG,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AAC7C,oBAAoB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACrD;AACA;AACA,SAAS,CAAC;AACV;AACA,IAAI,OAAO,WAAW;AACtB;AACA,SAAS,eAAe,CAAC,eAAe,EAAE;AAC1C,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe;AACtC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;AACvC,SAAS,MAAM,CAAC,KAAK,IAAI;AACzB,QAAQ,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AACtG,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,KAAK;AACpB,KAAK;AACL,SAAS,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK;AAChC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;AAC/B,QAAQ,OAAO,GAAG;AAClB,KAAK,EAAE,EAAE,CAAC;AACV,IAAI,OAAO,MAAM;AACjB;AACA;AACA,SAAS,mBAAmB,CAAC,eAAe,EAAE,SAAS,EAAE;AACzD,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM;AACxC,SAAS,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM;AACnF,SAAS,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK;AAC5C,QAAQ,MAAM,EAAE,cAAc,EAAE,GAAG,WAAW,IAAI,EAAE;AACpD,QAAQ,QAAQ,cAAc;AAC9B,YAAY,KAAK,SAAS;AAC1B,YAAY,KAAK,UAAU;AAC3B;AACA,gBAAgB;AAChB,YAAY,KAAK,YAAY;AAC7B,gBAAgB,IAAI,IAAI,OAAO,CAAC,uBAAuB,EAAE,WAAW,CAAC,EAAE;AACvE;AACA,oBAAoB,IAAI,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACvF;AACA,wBAAwB,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,MAAM,CAAC,wBAAwB,EAAE,SAAS,CAAC;AAC3F,wBAAwB,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;AAC1F,wBAAwB,MAAM,SAAS,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,WAAW,KAAK,MAAM,CAAC;AAC/H,wBAAwB,MAAM,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC;AACnE,wBAAwB,MAAM,oBAAoB,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC;AACzE;AACA,wBAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACnF;AACA,yBAAyB;AACzB;AACA,wBAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC9D;AACA;AACA,gBAAgB;AAChB,YAAY;AACZ,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC,CAAC;AAC5E;AACA,KAAK,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE;AACvD,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;AACtE,QAAQ,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE;AACpD,YAAY,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrE,YAAY,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,WAAW,CAAC;AAC3H,YAAY,MAAM,MAAM,GAAG,EAAE;AAC7B,YAAY,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI;AAClE,gBAAgB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK;AAClE,gBAAgB,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAAE;AACjE,oBAAoB,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1F,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,oBAAoB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9G;AACA,aAAa,CAAC;AACd,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF;AACA,KAAK,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,qBAAqB,CAAC,eAAe,EAAE;AAChD;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,SAAS,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,EAAE;AAChD,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AACnD,IAAI,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,UAAU,IAAI,EAAE;AAChE,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B;AACA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;AAC1B;AACA,QAAQ,MAAM,EAAE,aAAa,GAAG,kBAAkB,EAAE,UAAU,GAAG,OAAO,EAAE,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,UAAU,GAAG,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG,IAAI;AAC1P,QAAQ,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5D,QAAQ,MAAM,WAAW,GAAG,YAAY,KAAK,OAAO;AACpD,QAAQ,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE;AAC/C,YAAY;AACZ;AACA,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,YAAY;AACxB,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,sBAAsB,EAAE,KAAK;AACzC,SAAS;AACT,QAAQ,IAAI,WAAW,EAAE;AACzB;AACA;AACA,YAAY,MAAM,WAAW,GAAG;AAChC,iBAAiB,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,EAAE;AACxD,iBAAiB,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5D;AACA,YAAY,MAAM,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,WAAW,IAAI,EAAE;AACnG;AACA;AACA,YAAY,QAAQ,CAAC,sBAAsB;AAC3C,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,QAAQ;AAClE;AACA,QAAQ,IAAI,WAAW,EAAE;AACzB;AACA,YAAY,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtC,YAAY;AACZ;AACA,QAAQ,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrC,KAAK,CAAC;AACN,IAAI,OAAO,WAAW;AACtB;AACA,SAAS,iCAAiC,CAAC,SAAS,EAAE,eAAe,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,UAAU,EAAE,SAAS,GAAG,KAAK,EAAE;AACrJ,IAAI,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC;AACzE,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,eAAe;AAC9C,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,uBAAuB,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5D,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;AACxE,QAAQ,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtC;AACA,IAAI,IAAI,oBAAoB,EAAE;AAC9B,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;AACpD;AACA,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC9D,IAAI,OAAO;AACX,QAAQ,uBAAuB;AAC/B,QAAQ,MAAM;AACd,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;AACxC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC;AACpB,IAAI,EAAE,YAAY;AAClB;AACA,GAAG,CAAC;AACJ,KAAK;AACL;AACA,SAAS,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE;AAC1E,IAAI,IAAI,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC;AACvE,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,eAAe;AAC1E,IAAI,IAAI,SAAS;AACjB,IAAI,IAAI,YAAY;AACpB,IAAI,IAAI,aAAa;AACrB,IAAI,IAAI,uBAAuB;AAC/B,IAAI,QAAQ,aAAa;AACzB,QAAQ,KAAK,MAAM;AACnB,YAAY,SAAS,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC/C,YAAY,YAAY,GAAG,CAAC,yEAAyE,EAAE,QAAQ,CAAC,YAAY,CAAC;AAC7H,YAAY,aAAa;AACzB,gBAAgB,8EAA8E;AAC9F,YAAY,YAAY,GAAG,CAAC;AAC5B,OAAO,EAAE,YAAY;AACrB;AACA;AACA,eAAe,CAAC;AAChB,YAAY;AACZ,QAAQ,KAAK,QAAQ;AACrB,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,YAAY,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC9D,YAAY,aAAa,GAAG,iBAAiB;AAC7C,YAAY,uBAAuB,GAAG,uBAAuB,CAAC,MAAM;AACpE,YAAY;AACZ,QAAQ,KAAK,QAAQ;AACrB,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,YAAY,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,yBAAyB,EAAE,QAAQ,CAAC,eAAe,CAAC;AAC1G,YAAY,aAAa,GAAG,wCAAwC;AACpE,YAAY,uBAAuB,GAAG,uBAAuB,CAAC,MAAM;AACpE,YAAY;AACZ,QAAQ,KAAK,QAAQ;AACrB,YAAY,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,YAAY,YAAY,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,yBAAyB,EAAE,QAAQ,CAAC,eAAe,CAAC;AAC1G,YAAY,aAAa,GAAG,wCAAwC;AACpE,YAAY,uBAAuB,GAAG,uBAAuB,CAAC,MAAM;AACpE,YAAY;AACZ,QAAQ,KAAK,KAAK;AAClB,YAAY,SAAS,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxC,YAAY,YAAY,GAAG,CAAC,UAAU,CAAC;AACvC,YAAY,aAAa,GAAG,WAAW;AACvC,YAAY,uBAAuB,GAAG,uBAAuB,CAAC,GAAG;AACjE,YAAY;AACZ,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;AACrE;AACA,IAAI,OAAO;AACX,QAAQ;AACR,YAAY,uBAAuB;AACnC,YAAY,SAAS;AACrB,YAAY,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC;AAC5E,EAAE,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC;AAC9B,GAAG,EAAE,YAAY;AACjB;AACA,EAAE,CAAC;AACH,SAAS;AACT,KAAK;AACL;AACA,SAAS,wCAAwC,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,EAAE,EAAE;AACzK,IAAI,IAAI,SAAS;AACjB,IAAI,QAAQ,MAAM;AAClB,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM;AAClC,YAAY,SAAS,GAAG,uBAAuB,CAAC,MAAM;AACtD,YAAY;AACZ,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM;AAClC,YAAY,SAAS,GAAG,uBAAuB,CAAC,MAAM;AACtD,YAAY;AACZ,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM;AAClC,YAAY,SAAS,GAAG,uBAAuB,CAAC,MAAM;AACtD,YAAY;AACZ,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD;AACA;AACA;AACA;AACA,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,QAAQ,MAAM,SAAS,GAAG,CAAC;AAC3B,YAAY,CAAC,KAAK,IAAI;AACtB,YAAY,OAAO,CAAC,KAAK,QAAQ;AACjC,YAAY,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,YAAY,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS;AACxD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACpC;AACA,QAAQ,OAAO,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,kBAAkB,CAAC,eAAe,EAAE,OAAO,CAAC;AAChE,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;AAChE,IAAI,MAAM,aAAa,GAAG,oBAAoB,CAAC,wBAAwB,EAAE;AACzE,QAAQ,GAAG,UAAU;AACrB,QAAQ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC/C,QAAQ,OAAO;AACf,QAAQ,KAAK,EAAE,KAAK,CAAC,IAAI;AACzB,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAC5C,KAAK,CAAC;AACN,IAAI,OAAO,aAAa;AACxB;AACA,SAAS,2BAA2B,CAAC,SAAS,EAAE,eAAe,EAAE;AACjE,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;AAC5D,QAAQ,OAAO,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,2BAA2B,EAAE,eAAe,CAAC;AAC9E,IAAI,OAAO,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC;AACzD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,eAAe,EAAE,YAAY,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE;AACnF,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACxE,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,eAAe;AAChD,IAAI,MAAM,MAAM,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI;AAClD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE;AACnC,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI;AACpC,QAAQ,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE;AACpD,YAAY,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS;AAC1D,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5C,gBAAgB;AAChB,YAAY,MAAM,QAAQ,GAAG;AAC7B,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,GAAG,OAAO,EAAE;AAChD,aAAa;AACb,YAAY,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,YAAY;AACZ;AACA,QAAQ,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;AAC9E,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAY,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC;AACA,KAAK,CAAC;AACN;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ;AAChC,QAAQ;AACR;AACA,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI;AACxB;AACA,aAAa,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;AACnE,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC;AAC/B,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;AACxC,YAAY,OAAO,MAAM;AACzB;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI;AAC9B,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC;AACA,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK;AAChC;AACA,KAAK,CAAC;AACN,IAAI,IAAI,MAAM,EAAE;AAChB,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;AACrC,YAAY,OAAO,EAAE;AACrB;AACA,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;AAClD,YAAY,OAAO,EAAE;AACrB;AACA,IAAI,OAAO,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AAClD,QAAQ,OAAO,MAAM;AACrB,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK;AAChC,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;AACjC,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE;AACnC,QAAQ,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;AAClD,YAAY,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC;AACA,aAAa,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;AACzD,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;AAC7C;AACA;AACA,IAAI,OAAO,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,eAAe,EAAE;AAC5C,IAAI,MAAM,KAAK,GAAG,qBAAqB,CAAC,eAAe,CAAC;AACxD,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AAC5B,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrD;AACA,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC;AACA,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;AAClC,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC;AACA;AACA,IAAI,OAAO,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AAClD,QAAQ,OAAO,CAAC;AAChB,IAAI,IAAI,KAAK,GAAG,CAAC;AACjB,IAAI,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC;AACzB,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE;AACnC,QAAQ,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;AACpD,YAAY,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO;AAChD;AACA,YAAY,IAAI,IAAI,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,gBAAgB,KAAK,IAAI,UAAU,CAAC,MAAM;AAC1C;AACA,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;AACrC;AACA;AACA;AACA,IAAI,OAAO,KAAK,IAAI,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AAClD,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC;AACrD,IAAI,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC;AAC7B,IAAI,MAAM,sBAAsB,GAAG,CAAC,MAAM,KAAK;AAC/C,QAAQ,MAAM,IAAI,GAAG,EAAE;AACvB,QAAQ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AAChC,YAAY,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;AACjC,gBAAgB,OAAO,SAAS;AAChC;AACA,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI;AAClC;AACA,QAAQ,OAAO,IAAI;AACnB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE;AACnC,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpC,YAAY,OAAO,IAAI;AACvB;AACA;AACA,QAAQ,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF;AACA,QAAQ,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,QAAQ,IAAI,GAAG,KAAK,KAAK,EAAE;AAC3B,YAAY,MAAM,aAAa,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;AAC1E,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,OAAO,aAAa;AACpC;AACA;AACA,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC;AACtC;AACA,IAAI,OAAO,IAAI;AACf;AACA,IAAI,QAAQ;AACZ,CAAC,UAAU,QAAQ,EAAE;AACrB,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc;AAC3D,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe;AAC7D,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB;AACjE,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB;AACrE,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB;AAC/D,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;AAClD,SAAS,sBAAsB,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE;AAC7E,IAAI,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC;AACvD,IAAI,MAAM,eAAe,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,IAAI,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,eAAe,CAAC;AACpE,IAAI,MAAM,oBAAoB,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACtE,IAAI,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,eAAe,CAAC;AACvE,IAAI,MAAM,aAAa,GAAG,oBAAoB,CAAC,eAAe,CAAC;AAC/D,IAAI,QAAQ,SAAS;AACrB,QAAQ,KAAK,QAAQ,CAAC,YAAY;AAClC,YAAY,QAAQ,CAAC,4GAA4G,CAAC;AAClI,gBAAgB,oKAAoK;AACpL,QAAQ,KAAK,QAAQ,CAAC,aAAa,EAAE;AACrC,YAAY,IAAI,OAAO,GAAG,CAAC,mCAAmC,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAC,KAAK,CAAC;AACrK,YAAY,IAAI,qBAAqB,CAAC,IAAI,GAAG,CAAC,EAAE;AAChD,gBAAgB,OAAO;AACvB,oBAAoB,CAAC,kHAAkH,CAAC;AACxI,wBAAwB,CAAC,qFAAqF,CAAC;AAC/G,wBAAwB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,IAAI,CAAC,gDAAgD,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAClJ;AACA,YAAY,OAAO,OAAO;AAC1B;AACA,QAAQ,KAAK,QAAQ,CAAC,eAAe,EAAE;AACvC,YAAY,IAAI,OAAO,GAAG,CAAC,mCAAmC,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,yEAAyE,CAAC;AAC9L,YAAY,IAAI,qBAAqB,CAAC,IAAI,GAAG,CAAC,EAAE;AAChD,gBAAgB,OAAO;AACvB,oBAAoB,CAAC,kHAAkH,CAAC;AACxI,wBAAwB,CAAC,qHAAqH,CAAC;AAC/I,wBAAwB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,IAAI,CAAC,gDAAgD,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAClJ;AACA,YAAY,OAAO,OAAO;AAC1B;AACA,QAAQ,KAAK,QAAQ,CAAC,iBAAiB;AACvC,YAAY,OAAO,CAAC,mCAAmC,EAAE,eAAe,CAAC,IAAI,CAAC,+BAA+B,EAAE,aAAa,CAAC,uBAAuB,CAAC;AACrJ,QAAQ,KAAK,QAAQ,CAAC,QAAQ;AAC9B,YAAY,QAAQ,CAAC,mCAAmC,EAAE,eAAe,CAAC,IAAI,CAAC,6EAA6E,CAAC;AAC7J,gBAAgB,CAAC,kEAAkE,CAAC;AACpF,QAAQ,KAAK,QAAQ,CAAC,cAAc;AACpC;AACA,YAAY,OAAO,EAAE;AACrB;AACA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC7C;AACA,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACjD,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACxC,QAAQ,IAAI,YAAY;AACxB,QAAQ,IAAI;AACZ,YAAY,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACjD;AACA,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,YAAY,GAAG,UAAU;AACrC;AACA,QAAQ,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC5C;AACA,IAAI,OAAO,UAAU;AACrB;AACA,eAAe,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE;AAC5F,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;AAC5D,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,MAAM,EAAE,EAAE;AAClB,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,MAAM,EAAE,EAAE;AAClB,QAAQ,MAAM,EAAE,EAAE;AAClB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,SAAS,KAAK;AAC9D,YAAY,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;AACrD,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB,gBAAgB,SAAS;AACzB,aAAa,CAAC;AACd,YAAY,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AAC/C,gBAAgB,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AACvD;AACA,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE;AACnE,gBAAgB,cAAc,CAAC,SAAS,CAAC,GAAG,SAAS;AACrD;AACA,iBAAiB;AACjB;AACA,gBAAgB,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;AAC7D;AACA,SAAS,CAAC,CAAC;AACX;AACA,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;AAC/E;AACA,IAAI,OAAO,cAAc;AACzB;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC1C,IAAI,IAAI,cAAc;AACtB,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AAC/B,QAAQ,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,mBAAmB,CAAC,QAAQ,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC;AACnH;AACA,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AACrC,QAAQ,cAAc,GAAG,KAAK;AAC9B;AACA,IAAI,IAAI,cAAc,EAAE;AACxB,QAAQ,QAAQ,cAAc,CAAC,OAAO;AACtC,YAAY,CAAC,gCAAgC,EAAE,6BAA6B,CAAC,cAAc,CAAC,CAAC,CAAC;AAC9F;AACA,IAAI,OAAO,IAAI;AACf;AACA,SAAS,6BAA6B,CAAC,KAAK,EAAE;AAC9C,IAAI,IAAI,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE;AAC1C,QAAQ,OAAO,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC;AACvD;AACA,SAAS,IAAI,KAAK,EAAE,aAAa,EAAE;AACnC,QAAQ,OAAO,6BAA6B,CAAC,KAAK,EAAE,aAAa,CAAC;AAClE;AACA,SAAS;AACT,QAAQ,OAAO,IAAI;AACnB;AACA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,IAAI,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACtE,IAAI,MAAM,eAAe,GAAG,KAAK;AACjC,QAAQ,KAAK,CAAC,OAAO;AACrB,QAAQ,oBAAoB,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACrF,IAAI,OAAO,eAAe,IAAI,IAAI;AAClC;AACA,eAAe,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,EAAE,EAAE;AACnE,IAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC/B,QAAQ,MAAM,EAAE,aAAa,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,GAAG,aAAa;AAC3G,QAAQ,IAAI,oBAAoB,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE;AAChF,YAAY,IAAI;AAChB,gBAAgB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,oBAAoB,EAAE;AAC9D,gBAAgB,OAAO,KAAK;AAC5B;AACA,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC,CAAC;AACjG;AACA;AACA,aAAa;AACb;AACA,YAAY,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC;AAC5H;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,eAAe,EAAE,KAAK,EAAE;AACpD,IAAI,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,2BAA2B,EAAE,eAAe,CAAC;AACjF,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;AACxF,IAAI,OAAO,MAAM;AACjB;;"}