@carlonicora/nestjs-neo4jsonapi 6.5.2 → 6.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/common/helpers/define-entity.d.ts.map +1 -1
  2. package/dist/common/helpers/define-entity.js +18 -1
  3. package/dist/common/helpers/define-entity.js.map +1 -1
  4. package/dist/common/interfaces/entity.schema.interface.d.ts +33 -0
  5. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  6. package/dist/common/registries/entity-tenancy.registry.d.ts +81 -0
  7. package/dist/common/registries/entity-tenancy.registry.d.ts.map +1 -0
  8. package/dist/common/registries/entity-tenancy.registry.js +78 -0
  9. package/dist/common/registries/entity-tenancy.registry.js.map +1 -0
  10. package/dist/common/registries/index.d.ts +1 -0
  11. package/dist/common/registries/index.d.ts.map +1 -1
  12. package/dist/common/registries/index.js +1 -0
  13. package/dist/common/registries/index.js.map +1 -1
  14. package/dist/core/neo4j/abstracts/abstract.repository.d.ts +34 -0
  15. package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
  16. package/dist/core/neo4j/abstracts/abstract.repository.js +72 -48
  17. package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
  18. package/dist/core/neo4j/queries/update.relationship.d.ts +7 -2
  19. package/dist/core/neo4j/queries/update.relationship.d.ts.map +1 -1
  20. package/dist/core/neo4j/queries/update.relationship.js +28 -13
  21. package/dist/core/neo4j/queries/update.relationship.js.map +1 -1
  22. package/dist/core/neo4j/services/neo4j.service.d.ts +24 -0
  23. package/dist/core/neo4j/services/neo4j.service.d.ts.map +1 -1
  24. package/dist/core/neo4j/services/neo4j.service.js +94 -0
  25. package/dist/core/neo4j/services/neo4j.service.js.map +1 -1
  26. package/dist/foundations/ai-connection/entities/ai-connection.d.ts +1 -0
  27. package/dist/foundations/ai-connection/entities/ai-connection.d.ts.map +1 -1
  28. package/dist/foundations/ai-connection/entities/ai-connection.js +3 -0
  29. package/dist/foundations/ai-connection/entities/ai-connection.js.map +1 -1
  30. package/dist/foundations/ai-connection/repositories/ai-connection.repository.d.ts +1 -0
  31. package/dist/foundations/ai-connection/repositories/ai-connection.repository.d.ts.map +1 -1
  32. package/dist/foundations/ai-connection/services/ai-connection.service.d.ts +1 -0
  33. package/dist/foundations/ai-connection/services/ai-connection.service.d.ts.map +1 -1
  34. package/dist/foundations/role/entities/role.d.ts.map +1 -1
  35. package/dist/foundations/role/entities/role.js +4 -0
  36. package/dist/foundations/role/entities/role.js.map +1 -1
  37. package/package.json +1 -1
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractRepository = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
+ const entity_tenancy_registry_1 = require("../../../common/registries/entity-tenancy.registry");
5
6
  const registry_1 = require("../../../common/registries/registry");
6
7
  const build_filter_clauses_1 = require("../helpers/build-filter-clauses");
7
8
  const build_fulltext_term_1 = require("../helpers/build-fulltext-term");
@@ -677,6 +678,61 @@ class AbstractRepository {
677
678
  `;
678
679
  return this.neo4j.readMany(query);
679
680
  }
681
+ /**
682
+ * True for the company BELONGS_TO edge of a company-scoped entity, which the framework writes
683
+ * itself and the generic writers never take from params.
684
+ */
685
+ isManagedCompanyRelationship(rel) {
686
+ return this.descriptor.isCompanyScoped && rel.relationship === "BELONGS_TO" && rel.model.labelName === "Company";
687
+ }
688
+ /**
689
+ * The relationships the generic writer for `mode` writes from params: never readOnly, never
690
+ * the managed company edge, and on PUT never immutable. assertRelatedInCompany() checks
691
+ * exactly this set.
692
+ */
693
+ writtenRelationships(mode) {
694
+ return Object.entries(this.descriptor.relationships).filter(([, rel]) => !rel.readOnly && !this.isManagedCompanyRelationship(rel) && !(mode === "put" && rel.immutable));
695
+ }
696
+ /**
697
+ * Refuses (400 "One or more related nodes do not exist.") a write whose related ids do not
698
+ * exist or point outside the caller's CLS company. Called by create / put / patch /
699
+ * addToRelationship BEFORE the write; a foreign id looks exactly like a missing one.
700
+ *
701
+ * Per target (see `relatedNodeRule` / `Neo4jService.validateRelatedNodes`):
702
+ * - company-scoped label: BELONGS_TO the CLS company (any edge, for multi-company users);
703
+ * - tenancy "self": the CLS company itself; tenancy { via }: its parent belongs to it;
704
+ * - linkScope "own-or-platform": also a platform row (no company edge);
705
+ * - tenancy "global" / "internal", unknown labels, `crossCompany` relationships and
706
+ * server-filled `contextKey` values: existence only;
707
+ * - the CLS user's own id: existence only (owner / created-by = me, also for a platform
708
+ * administrator working inside a customer company).
709
+ * With no CLS company (system jobs, workers) every target is existence-only.
710
+ *
711
+ * Override to tighten or relax the check for one repository.
712
+ */
713
+ async assertRelatedInCompany(input) {
714
+ const callerId = this.clsService.get("userId") ?? undefined;
715
+ const relationships = input.mode === "add"
716
+ ? [[input.relationship, this.descriptor.relationships[input.relationship]]]
717
+ : this.writtenRelationships(input.mode);
718
+ const nodes = [];
719
+ for (const [name, rel] of relationships) {
720
+ const value = input.params[name];
721
+ if (!value)
722
+ continue;
723
+ const rule = (0, entity_tenancy_registry_1.relatedNodeRule)(rel);
724
+ for (const id of Array.isArray(value) ? value : [value]) {
725
+ nodes.push({
726
+ id,
727
+ label: rel.model.labelName,
728
+ rule: callerId && id === callerId ? { kind: "exists" } : rule,
729
+ });
730
+ }
731
+ }
732
+ if (nodes.length === 0)
733
+ return;
734
+ await this.neo4j.validateRelatedNodes({ nodes, companyId: this.clsService.get("companyId") ?? null });
735
+ }
680
736
  /**
681
737
  * Create a new entity with relationships
682
738
  * Uses descriptor.fieldNames and descriptor.fieldDefaults for properties
@@ -687,21 +743,8 @@ class AbstractRepository {
687
743
  const { fieldNames, fieldDefaults, fields, relationships } = this.descriptor;
688
744
  this.assertCompanyBindable();
689
745
  const query = this.neo4j.initQuery();
690
- // Validate related nodes exist
691
- const nodesToValidate = [];
692
- for (const [name, rel] of Object.entries(relationships)) {
693
- // Read-only relationships are serialisation-only and never written on create
694
- if (rel.readOnly)
695
- continue;
696
- const paramValue = params[name];
697
- if (paramValue) {
698
- const ids = Array.isArray(paramValue) ? paramValue : [paramValue];
699
- nodesToValidate.push(...ids.map((id) => ({ id, label: rel.model.labelName })));
700
- }
701
- }
702
- if (nodesToValidate.length > 0) {
703
- await this.neo4j.validateExistingNodes({ nodes: nodesToValidate.filter(Boolean) });
704
- }
746
+ // Every related id must exist and belong to the caller's company (see assertRelatedInCompany)
747
+ await this.assertRelatedInCompany({ params, mode: "create" });
705
748
  // Apply defaults for fields not provided in params
706
749
  const mergedParams = { ...fieldDefaults, ...params };
707
750
  // Only include fields that have actual values (not undefined)
@@ -815,23 +858,8 @@ class AbstractRepository {
815
858
  const { fieldNames, fields, relationships } = this.descriptor;
816
859
  this.assertCompanyBindable();
817
860
  const query = this.neo4j.initQuery();
818
- // Validate related nodes exist
819
- const nodesToValidate = [];
820
- for (const [name, rel] of Object.entries(relationships)) {
821
- if (rel.immutable)
822
- continue;
823
- // Read-only relationships are serialisation-only and never written on PUT
824
- if (rel.readOnly)
825
- continue;
826
- const paramValue = params[name];
827
- if (paramValue) {
828
- const ids = Array.isArray(paramValue) ? paramValue : [paramValue];
829
- nodesToValidate.push(...ids.map((id) => ({ id, label: rel.model.labelName })));
830
- }
831
- }
832
- if (nodesToValidate.length > 0) {
833
- await this.neo4j.validateExistingNodes({ nodes: nodesToValidate.filter(Boolean) });
834
- }
861
+ // Every related id must exist and belong to the caller's company (see assertRelatedInCompany)
862
+ await this.assertRelatedInCompany({ params, mode: "put" });
835
863
  // Build query parameters
836
864
  query.queryParams = {
837
865
  ...query.queryParams,
@@ -936,21 +964,9 @@ class AbstractRepository {
936
964
  // Read-only relationships are serialisation-only and never written by PATCH.
937
965
  // The company BELONGS_TO edge of a company-scoped entity is managed by the
938
966
  // framework and never rewritten (same rule as create/put).
939
- const relationshipsToUpdate = Object.entries(relationships).filter(([name, rel]) => params[name] !== undefined &&
940
- !rel.readOnly &&
941
- !(this.descriptor.isCompanyScoped && rel.relationship === "BELONGS_TO" && rel.model.labelName === "Company"));
942
- // Validate related nodes exist
943
- const nodesToValidate = [];
944
- for (const [name, rel] of relationshipsToUpdate) {
945
- const paramValue = params[name];
946
- if (paramValue) {
947
- const ids = Array.isArray(paramValue) ? paramValue : [paramValue];
948
- nodesToValidate.push(...ids.map((id) => ({ id, label: rel.model.labelName })));
949
- }
950
- }
951
- if (nodesToValidate.length > 0) {
952
- await this.neo4j.validateExistingNodes({ nodes: nodesToValidate.filter(Boolean) });
953
- }
967
+ const relationshipsToUpdate = this.writtenRelationships("patch").filter(([name]) => params[name] !== undefined);
968
+ // Every related id must exist and belong to the caller's company (see assertRelatedInCompany)
969
+ await this.assertRelatedInCompany({ params, mode: "patch" });
954
970
  // Build query parameters (only include fields that are being updated)
955
971
  query.queryParams = {
956
972
  ...query.queryParams,
@@ -1093,6 +1109,14 @@ class AbstractRepository {
1093
1109
  throw new common_1.BadRequestException(`Relationship '${params.relationship}' is read-only`);
1094
1110
  }
1095
1111
  this.assertCompanyBindable();
1112
+ // Every item must exist and belong to the caller's company (see assertRelatedInCompany).
1113
+ // Runs before the write, so the MATCH below needs no company filter on the target -
1114
+ // which also lets a global / platform target be linked.
1115
+ await this.assertRelatedInCompany({
1116
+ mode: "add",
1117
+ relationship: params.relationship,
1118
+ params: { [params.relationship]: params.items.map((item) => item.id) },
1119
+ });
1096
1120
  const query = this.neo4j.initQuery();
1097
1121
  // Build items array with edge properties
1098
1122
  const itemsWithProps = params.items.map((item) => ({
@@ -1122,7 +1146,7 @@ class AbstractRepository {
1122
1146
  query.query += `
1123
1147
  ${matchClause}
1124
1148
  UNWIND $items AS item
1125
- MATCH (related:${rel.model.labelName} {id: item.id})${this.descriptor.isCompanyScoped ? "-[:BELONGS_TO]->(company)" : ""}
1149
+ MATCH (related:${rel.model.labelName} {id: item.id})
1126
1150
  MERGE (parent)${relPattern}(related)
1127
1151
  ${setClause}
1128
1152
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.repository.js","sourceRoot":"","sources":["../../../../src/core/neo4j/abstracts/abstract.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract.repository.js","sourceRoot":"","sources":["../../../../src/core/neo4j/abstracts/abstract.repository.ts"],"names":[],"mappings":";;;AAAA,2CAA8F;AAG9F,gGAAsG;AACtG,kEAAoE;AAGpE,0EAAqE;AACrE,wEAAmE;AACnE,8DAAyF;AACzF,wEAAyE;AAIzE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAsB,kBAAkB;IAMtC,YACqB,KAAmB,EACnB,eAAgC,EAChC,UAAsB;QAFtB,UAAK,GAAL,KAAK,CAAc;QACnB,oBAAe,GAAf,eAAe,CAAiB;QAChC,eAAU,GAAV,UAAU,CAAY;IACxC,CAAC;IAEJ,KAAK,CAAC,YAAY;QAChB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACxD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAEtC,qBAAqB;QACrB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACxB,KAAK,EAAE,qBAAqB,QAAQ,IAAI,UAAU,CAAC,QAAQ,uBAAuB,QAAQ,IAAI,SAAS,aAAa,QAAQ,IAAI,UAAU,CAAC,QAAQ,YAAY;aAChK,CAAC,CAAC;QACL,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9B,2DAA2D;oBAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC;;;;;WAKD,EACC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAC1B,CAAC;oBAEF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC1C,MAAM,UAAU,GAAG,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBAElD,MAAM,WAAW,GAAG,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE7G,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9F,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;4BACxB,KAAK,EAAE;0CACqB,KAAK,CAAC,IAAI;yBAC3B,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;2BAC5C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;eAChE;4BACD,WAAW,EAAE,EAAE;yBAChB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,mBAAmB;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,KAAK;YAAE,OAAO,EAAE,CAAC;QACxD,OAAO;YACL,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,qBAAqB;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,KAAK;YAAE,OAAO;QACrD,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,eAAe,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtF,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,4FAA4F,CAC1H,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,OAAiE;QAC3F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtD,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAErD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE/E,qFAAqF;QACrF,0FAA0F;QAC1F,yEAAyE;QACzE,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC;YACzF,IAAI,SAAiB,CAAC;YACtB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,SAAS,GAAG,GAAG,QAAQ,kBAAkB,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,kBAAkB,OAAO,CAAC,GAAG,6CAA6C,CACxG,CAAC;gBACJ,CAAC;gBACD,qFAAqF;gBACrF,wFAAwF;gBACxF,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;gBACzD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;gBAC1E,MAAM,GAAG,GACP,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,YAAY,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACxG,SAAS,GAAG;mBACD,QAAQ,IAAI,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B;UAC5E,CAAC;YACL,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC;YACvC,OAAO;iBACI,QAAQ,IAAI,SAAS,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,iBAAiB,CAAC,CAAC,CAAC,EAAE;;aAEjG,SAAS;eACP,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;OAC/C,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO;iBACI,QAAQ,IAAI,SAAS,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,iBAAiB,CAAC,CAAC,CAAC,EAAE;eAC/F,QAAQ;OAChB,CAAC;QACJ,CAAC;QAED,+CAA+C;QAC/C,OAAO;eACI,QAAQ,IAAI,SAAS,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,iBAAiB,CAAC,CAAC,CAAC,EAAE;;;iBAG3F,QAAQ;;aAEZ,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,kBAAkB;QAC1B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3C,OAAO,QAAQ,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACO,oBAAoB;QAC5B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtD,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAE3D,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;QAChD,MAAM,YAAY,GAAa,EAAE,CAAC,CAAC,0CAA0C;QAC7E,MAAM,2BAA2B,GAAqD,EAAE,CAAC;QAEzF,8DAA8D;QAC9D,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,IAAI,UAAU,QAAQ,IAAI,SAAS,qBAAqB,QAAQ,qBAAqB,CAAC;YAC3F,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,6CAA6C;QAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,gFAAgF;YAChF,IAAI,eAAe,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBAC/E,SAAS;YACX,CAAC;YACD,MAAM,eAAe,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,IAAI,eAAe,CAAC;YACpD,8FAA8F;YAC9F,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC;YACxE,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;YAE1D,8EAA8E;YAC9E,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,GAAG,CAAC;YAE9F,4EAA4E;YAC5E,wEAAwE;YACxE,0EAA0E;YAC1E,0EAA0E;YAC1E,yEAAyE;YACzE,uEAAuE;YACvE,gDAAgD;YAChD,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;YAC3F,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAE1E,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC3B,2BAA2B;gBAC3B,KAAK,IAAI,GAAG,SAAS,KAAK,QAAQ,MAAM,UAAU,KAAK,eAAe,GAAG,eAAe,KAAK,CAAC;YAChG,CAAC;iBAAM,CAAC;gBACN,2BAA2B;gBAC3B,KAAK,IAAI,GAAG,SAAS,KAAK,QAAQ,KAAK,UAAU,MAAM,eAAe,GAAG,eAAe,KAAK,CAAC;YAChG,CAAC;YAED,qEAAqE;YACrE,oEAAoE;YACpE,gDAAgD;YAChD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,IAAI,SAAS,eAAe,+BAA+B,eAAe,4BAA4B,IAAI,KAAK,CAAC;YACvH,CAAC;YAED,gDAAgD;YAChD,IAAI,GAAG,CAAC,WAAW,EAAE,yBAAyB,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,yBAAyB,CAAC;gBAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,sBAAsB,IAAI,KAAK,CAAC;gBAChE,MAAM,cAAc,GAAG,GAAG,eAAe,YAAY,CAAC;gBACtD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;oBACtB,WAAW,CAAC,IAAI,CAAC,WAAW,eAAe,OAAO,OAAO,aAAa,cAAc,EAAE,CAAC,CAAC;gBAC1F,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,IAAI,CAAC,WAAW,eAAe,QAAQ,OAAO,YAAY,cAAc,EAAE,CAAC,CAAC;gBAC1F,CAAC;gBAED,mEAAmE;gBACnE,IAAI,GAAG,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC;oBAC/C,MAAM,kBAAkB,GAAG,GAAG,eAAe,aAAa,CAAC;oBAC3D,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;wBACtB,KAAK,IAAI,mBAAmB,eAAe,OAAO,OAAO,OAAO,kBAAkB,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC;oBACjH,CAAC;yBAAM,CAAC;wBACN,KAAK,IAAI,mBAAmB,eAAe,QAAQ,OAAO,MAAM,kBAAkB,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC;oBACjH,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YAED,+BAA+B;YAC/B,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,GAAG,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;oBAC9B,+EAA+E;oBAC/E,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC/E,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAO,EAAE,CAAC;wBAChC,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,OAAO,QAAQ,IAAI,IAAI,iBAAiB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAClG,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,yEAAyE;oBACzE,+DAA+D;oBAC/D,2BAA2B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;oBAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;oBACpG,YAAY,CAAC,IAAI,CAAC,oBAAoB,SAAS,QAAQ,eAAe,GAAG,CAAC,CAAC;oBAC3E,MAAM,eAAe,GAAG,GAAG,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9F,YAAY,CAAC,IAAI,CACf,qBAAqB,eAAe,+BAA+B,eAAe,oBAAoB,eAAe,eAAe,QAAQ,IAAI,IAAI,sBAAsB,CAC3K,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,qDAAqD;gBACrD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YACjF,CAAC;YAED,4EAA4E;YAC5E,oEAAoE;YACpE,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,YAAY,GAAG,eAAe,CAAC,CAAC,qBAAqB;oBACzD,IAAI,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,cAAc;oBACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjC,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;wBACzD,MAAM,WAAW,GAAG,wBAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;wBACvD,MAAM,UAAU,GAAG;4BACjB,GAAG,CAAC,WAAW,EAAE,2BAA2B,IAAI,EAAE,CAAC;4BACnD,GAAG,CAAC,WAAW,EAAE,qBAAqB,IAAI,EAAE,CAAC;yBAC9C,CAAC;wBACF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,OAAO,CAAC,CAAC;wBACtE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;4BACzD,mEAAmE;4BACnE,kEAAkE;4BAClE,2DAA2D;4BAC3D,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,oBAAoB,OAAO,mBAAmB,eAAe,KAAK;gCAChF,2EAA2E,CAC9E,CAAC;wBACJ,CAAC;wBACD,MAAM,WAAW,GAAG,wBAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;wBAClE,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,oBAAoB,MAAM,CAAC,QAAQ,kBAAkB,OAAO,uBAAuB;gCACjG,+EAA+E,CAClF,CAAC;wBACJ,CAAC;wBACD,MAAM,UAAU,GAAG,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC;wBAChD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC3C,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BACtC,MAAM,OAAO,GACX,MAAM,CAAC,SAAS,KAAK,IAAI;gCACvB,CAAC,CAAC,IAAI,YAAY,QAAQ,MAAM,CAAC,YAAY,MAAM,UAAU,IAAI,WAAW,GAAG;gCAC/E,CAAC,CAAC,IAAI,YAAY,OAAO,MAAM,CAAC,YAAY,OAAO,UAAU,IAAI,WAAW,GAAG,CAAC;4BACpF,KAAK,IAAI,kBAAkB,OAAO,IAAI,CAAC;4BACvC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;wBAC/E,CAAC;wBACD,IAAI,MAAM,CAAC,cAAc,IAAI,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAChE,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,oBAAoB,OAAO,SAAS,eAAe,yBAAyB;gCAC1F,yFAAyF,CAC5F,CAAC;wBACJ,CAAC;wBACD,YAAY,GAAG,UAAU,CAAC;wBAC1B,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,wEAAwE;YACxE,KAAK,IAAI,QAAQ,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAExE,yDAAyD;YACzD,2DAA2D;YAC3D,KAAK,MAAM,EAAE,eAAe,EAAE,IAAI,2BAA2B,EAAE,CAAC;gBAC9D,KAAK,IAAI,yBAAyB,eAAe,eAAe,eAAe,wBAAwB,eAAe,IAAI,CAAC;gBAC3H,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,CAAC;YAED,4DAA4D;YAC5D,MAAM,wBAAwB,GAAG,YAAY;iBAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;iBACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,uEAAuE;YACvE,iDAAiD;YACjD,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,CAAC,CAAC,CAAC;YACH,KAAK,IAAI,UAAU,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,UAAU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACO,oBAAoB,CAAC,KAAa;QAC1C,OAAO,aAAa,KAAK,4CAA4C,KAAK,wBAAwB,KAAK,aAAa,CAAC;IACvH,CAAC;IAED,yHAAyH;IAC/G,kBAAkB,CAAC,KAAa,EAAE,cAAwB;QAClE,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACpF,CAAC;IAED;;;;;;;;;;OAUG;IACO,kBAAkB;QAC1B,MAAM,GAAG,GAA6B,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,IAAI,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAI,GAAuB,CAAC,WAAW,CAAC;YAClD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBAC5C,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,kBAAkB,CAAC,MAIlC;QACC,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAChF,WAAW,CAAC,WAAW,GAAG;YACxB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,GAAG,IAAI,CAAC,kBAAkB,EAAE;SAC7B,CAAC;QACF,WAAW,CAAC,KAAK,GAAG;QAChB,IAAI,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;QACtF,IAAI,CAAC,oBAAoB,EAAE;KAC9B,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,MAAM;YAAE,MAAM,IAAI,sBAAa,CAAC,WAAW,EAAE,mBAAU,CAAC,SAAS,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,+BAA+B,CAAC,MAAqD;QAC7F,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElD,OAAO,sCAAsC,IAAI,CAAC,UAAU,CAAC,iBAAiB;;QAE1E,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;aAC9C,CAAC,UAAU,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;eAErD,OAAO;UACZ,IAAI,CAAC,iBAAiB,EAAE;UACxB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;yBACnE,QAAQ;;;aAGpB,OAAO;QACZ,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;KAE5D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAC,MAOV;QACC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,IAAI,EAAE,IAAA,uCAAiB,EAAC,MAAM,CAAC,IAAI,CAAC;YACpC,GAAG,IAAI,CAAC,kBAAkB,EAAE;SAC7B,CAAC;QAEF,MAAM,YAAY,GAAG,IAAA,yCAAkB,EAAC;YACtC,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAErE,MAAM,aAAa,GACjB,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM;YACjD,CAAC,CAAC,IAAA,mCAAkB,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;YACzE,CAAC,CAAC,IAAA,yCAAwB,EAAC;gBACvB,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;aACzC,CAAC,CAAC;QAET,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACrD,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,+BAA+B,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,IAAI;QACb,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAClF,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;;QAEzD,aAAa;KAChB,CAAC;QACF,CAAC;QAED,KAAK,CAAC,KAAK,IAAI;;;QAGX,IAAI,CAAC,oBAAoB,EAAE;KAC9B,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAsB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1E,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,WAAW,EAAE,MAAM,CAAC,EAAE;YACtB,GAAG,IAAI,CAAC,kBAAkB,EAAE;SAC7B,CAAC;QAEF,KAAK,CAAC,KAAK,IAAI;QACX,IAAI,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAClF,IAAI,CAAC,oBAAoB,EAAE;KAC9B,CAAC;QAEF,OAAO,IAAI,CAAC,kBAAkB,CAAC;YAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACzC,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAyB;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1E,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,IAAI,CAAC,kBAAkB,EAAE;SAC7B,CAAC;QAEF,KAAK,CAAC,KAAK,IAAI;QACX,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;cAC5E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ;QACpC,IAAI,CAAC,oBAAoB,EAAE;KAC9B,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,aAAa,CAAC,MASnB;QACC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE/D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,sBAAa,CAAC,yBAAyB,MAAM,CAAC,YAAY,EAAE,EAAE,mBAAU,CAAC,WAAW,CAAC,CAAC;QAClG,CAAC;QAED,mFAAmF;QACnF,iFAAiF;QACjF,qFAAqF;QACrF,6EAA6E;QAC7E,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAmB,CAAC,iBAAiB,MAAM,CAAC,YAAY,gBAAgB,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,UAAU;YACV,IAAI,EAAE,IAAA,uCAAiB,EAAC,MAAM,CAAC,IAAI,CAAC;YACpC,GAAG,IAAI,CAAC,kBAAkB,EAAE;SAC7B,CAAC;QAEF,MAAM,YAAY,GAAG,IAAA,yCAAkB,EAAC;YACtC,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAErE,MAAM,aAAa,GACjB,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM;YACjD,CAAC,CAAC,IAAA,mCAAkB,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;YACzE,CAAC,CAAC,IAAA,yCAAwB,EAAC;gBACvB,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;aACzC,CAAC,CAAC;QAET,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACrD,0EAA0E;YAC1E,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,aAAa,GACjB,GAAG,CAAC,SAAS,KAAK,IAAI;gBACpB,CAAC,CAAC,4BAA4B,GAAG,CAAC,YAAY,cAAc,GAAG,CAAC,KAAK,CAAC,SAAS,qCAAqC;gBACpH,CAAC,CAAC,2BAA2B,GAAG,CAAC,YAAY,eAAe,GAAG,CAAC,KAAK,CAAC,SAAS,qCAAqC,CAAC;YAEzH,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,+BAA+B,CAAC;gBAClD,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,YAAY,CAAC,MAAM;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,KAAK,CAAC,KAAK,IAAI;QACb,IAAI,CAAC,iBAAiB,EAAE;OACzB,CAAC;YAEF,4CAA4C;YAC5C,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC3B,KAAK,CAAC,KAAK,IAAI,UAAU,QAAQ,QAAQ,GAAG,CAAC,YAAY,cAAc,GAAG,CAAC,KAAK,CAAC,SAAS;0CACxD,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,KAAK,IAAI,UAAU,QAAQ,OAAO,GAAG,CAAC,YAAY,eAAe,GAAG,CAAC,KAAK,CAAC,SAAS;0CACxD,CAAC;YACrC,CAAC;YAED,KAAK,CAAC,KAAK,IAAI;QACb,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAClF,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;;QAEzD,aAAa;KAChB,CAAC;QACF,CAAC;QAED,KAAK,CAAC,KAAK,IAAI;;;QAGX,IAAI,CAAC,oBAAoB,EAAE;KAC9B,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,iBAAiB,CAAC,MASvB;QACC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,UAAU;YACV,GAAG,IAAI,CAAC,kBAAkB,EAAE;SAC7B,CAAC;QAEF,MAAM,YAAY,GAAG,IAAA,yCAAkB,EAAC;YACtC,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAErE,MAAM,aAAa,GACjB,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM;YACjD,CAAC,CAAC,IAAA,mCAAkB,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;YACzE,CAAC,CAAC,IAAA,yCAAwB,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;QAElG,KAAK,CAAC,KAAK,IAAI;QACX,IAAI,CAAC,iBAAiB,EAAE;KAC3B,CAAC;QAEF,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YACpC,KAAK,CAAC,KAAK,IAAI,UAAU,QAAQ,QAAQ,MAAM,CAAC,WAAW,cAAc,MAAM,CAAC,YAAY;0CACxD,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,IAAI,UAAU,QAAQ,OAAO,MAAM,CAAC,WAAW,eAAe,MAAM,CAAC,YAAY;0CACxD,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,KAAK,IAAI;QACX,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAClF,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;;QAEzD,aAAa;KAChB,CAAC;QAEF,KAAK,CAAC,KAAK,IAAI;;;QAGX,IAAI,CAAC,oBAAoB,EAAE;KAC9B,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,4BAA4B,CAAC,GAAoB;QACvD,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;IACnH,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,IAAgC;QAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,MAAM,CACzD,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,SAAS,CAAC,CAC5G,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACO,KAAK,CAAC,sBAAsB,CAAC,KAKtC;QACC,MAAM,QAAQ,GAAuB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;QAEhF,MAAM,aAAa,GACjB,KAAK,CAAC,IAAI,KAAK,KAAK;YAClB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAa,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,YAAa,CAAC,CAAC,CAAC;YAC7E,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,KAAK,GAA2D,EAAE,CAAC;QACzE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,IAAI,GAAG,IAAA,yCAAe,EAAC,GAAG,CAAC,CAAC;YAClC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE;oBACF,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;oBAC1B,IAAI,EAAE,QAAQ,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACxG,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,MAA0C;QACrD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtD,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7E,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAErC,8FAA8F;QAC9F,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE9D,mDAAmD;QACnD,MAAM,YAAY,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAErD,8DAA8D;QAC9D,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAEzF,uDAAuD;QACvD,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,EAAE,EAAE,YAAY,CAAC,EAAE;SACpB,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,qEAAqE;QACrE,uCAAuC;QACvC,MAAM,gBAAgB,GAAG,gBAAgB;aACtC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAgC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,QAAQ,EAAE,IAAI,CAAC;YACjC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,OAAO,GAAG,SAAS,eAAe,SAAS,GAAG,CAAC;YACjD,CAAC;iBAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,SAAS,gBAAgB,SAAS,QAAQ,CAAC;YACvD,CAAC;iBAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBACtC,OAAO,GAAG,SAAS,YAAY,SAAS,iBAAiB,CAAC;YAC5D,CAAC;iBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,GAAG,SAAS,YAAY,SAAS,uBAAuB,CAAC;YAClE,CAAC;iBAAM,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5C,uEAAuE;gBACvE,uEAAuE;gBACvE,+DAA+D;gBAC/D,OAAO,GAAG,SAAS,gBAAgB,SAAS,GAAG,CAAC;YAClD,CAAC;YACD,OAAO,GAAG,SAAS,MAAM,SAAS,EAAE,CAAC;QACvC,CAAC,CAAC;aACD,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvB,0CAA0C;QAC1C,KAAK,CAAC,KAAK,IAAI;gBACH,QAAQ,IAAI,SAAS;;UAE3B,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE;;;;KAInD,CAAC;QAEF,6EAA6E;QAC7E,wEAAwE;QACxE,oEAAoE;QACpE,0EAA0E;QAC1E,4BAA4B;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YACnE,KAAK,CAAC,KAAK,IAAI,WAAW,QAAQ,8BAA8B,CAAC;QACnE,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,4EAA4E;YAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC9G,SAAS;YACX,CAAC;YAED,8FAA8F;YAC9F,IAAI,GAAG,CAAC,QAAQ;gBAAE,SAAS;YAE3B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACtC,4BAA4B;YAC5B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpG,oEAAoE;YACpE,IAAI,sBAAyE,CAAC;YAC9E,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;gBACtD,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;gBAEtD,IAAI,YAAY,EAAE,CAAC;oBACjB,sDAAsD;oBACtD,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE;wBACvC,MAAM,KAAK,GAAwB,EAAE,CAAC;wBACtC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAO,EAAE,CAAC;4BAChC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gCAC3C,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC/C,CAAC;wBACH,CAAC;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE5F,KAAK,CAAC,KAAK,IAAI,IAAA,6CAAuB,EAAC;gBACrC,IAAI,EAAE,QAAQ;gBACd,gBAAgB,EAAE,GAAG,CAAC,YAAY;gBAClC,kBAAkB,EAAE,GAAG,CAAC,SAAS,KAAK,KAAK;gBAC3C,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,SAAS;gBACjB,sBAAsB;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,MAA0C;QAClD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9D,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAErC,8FAA8F;QAC9F,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3D,yBAAyB;QACzB,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,GAAG,MAAM;SACV,CAAC;QAEF,wEAAwE;QACxE,8EAA8E;QAC9E,iFAAiF;QACjF,MAAM,cAAc,GAAG,UAAU;aAC9B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAgC,CAAC,EAAE,SAAS,CAAC;aAC3E,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAgC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,QAAQ,EAAE,IAAI,CAAC;YACjC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,OAAO,GAAG,QAAQ,IAAI,SAAS,gBAAgB,SAAS,GAAG,CAAC;YAC9D,CAAC;iBAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,QAAQ,IAAI,SAAS,iBAAiB,SAAS,QAAQ,CAAC;YACpE,CAAC;iBAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBACtC,OAAO,GAAG,QAAQ,IAAI,SAAS,aAAa,SAAS,iBAAiB,CAAC;YACzE,CAAC;iBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,GAAG,QAAQ,IAAI,SAAS,aAAa,SAAS,uBAAuB,CAAC;YAC/E,CAAC;iBAAM,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5C,OAAO,GAAG,QAAQ,IAAI,SAAS,iBAAiB,SAAS,GAAG,CAAC;YAC/D,CAAC;YACD,OAAO,GAAG,QAAQ,IAAI,SAAS,OAAO,SAAS,EAAE,CAAC;QACpD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,0CAA0C;QAC1C,2DAA2D;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe;YACjD,CAAC,CAAC,UAAU,QAAQ,IAAI,SAAS,sCAAsC;YACvE,CAAC,CAAC,UAAU,QAAQ,IAAI,SAAS,aAAa,CAAC;QAEjD,KAAK,CAAC,KAAK,IAAI;QACX,WAAW;YACP,QAAQ,0BAA0B,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE;KACpF,CAAC;QAEF,uBAAuB;QACvB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,4EAA4E;YAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,GAAG,CAAC,YAAY,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC9G,SAAS;YACX,CAAC;YAED,qEAAqE;YACrE,IAAI,GAAG,CAAC,SAAS;gBAAE,SAAS;YAE5B,2FAA2F;YAC3F,IAAI,GAAG,CAAC,QAAQ;gBAAE,SAAS;YAE3B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,4BAA4B;YAC5B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpG,oEAAoE;YACpE,IAAI,sBAAyE,CAAC;YAC9E,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;gBACtD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;gBAEhD,IAAI,YAAY,EAAE,CAAC;oBACjB,sDAAsD;oBACtD,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE;wBACvC,MAAM,KAAK,GAAwB,EAAE,CAAC;wBACtC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAO,EAAE,CAAC;4BAChC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gCACrC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACzC,CAAC;wBACH,CAAC;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,KAAK,CAAC,KAAK,IAAI,IAAA,6CAAuB,EAAC;gBACrC,IAAI,EAAE,QAAQ;gBACd,gBAAgB,EAAE,GAAG,CAAC,YAAY;gBAClC,kBAAkB,EAAE,GAAG,CAAC,SAAS,KAAK,KAAK;gBAC3C,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjF,sBAAsB;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,MAA0C;QACpD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9D,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAErC,4EAA4E;QAC5E,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAEjF,kEAAkE;QAClE,6EAA6E;QAC7E,2EAA2E;QAC3E,2DAA2D;QAC3D,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;QAEhH,8FAA8F;QAC9F,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAE7D,sEAAsE;QACtE,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,EAAE,EAAE,MAAM,CAAC,EAAE;SACd,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,CAAC;QAED,0FAA0F;QAC1F,MAAM,cAAc,GAAG,cAAc;aAClC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAgC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,QAAQ,EAAE,IAAI,CAAC;YACjC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,OAAO,GAAG,QAAQ,IAAI,SAAS,gBAAgB,SAAS,GAAG,CAAC;YAC9D,CAAC;iBAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBAChC,OAAO,GAAG,QAAQ,IAAI,SAAS,iBAAiB,SAAS,QAAQ,CAAC;YACpE,CAAC;iBAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBACtC,OAAO,GAAG,QAAQ,IAAI,SAAS,aAAa,SAAS,iBAAiB,CAAC;YACzE,CAAC;iBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,GAAG,QAAQ,IAAI,SAAS,aAAa,SAAS,uBAAuB,CAAC;YAC/E,CAAC;iBAAM,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5C,OAAO,GAAG,QAAQ,IAAI,SAAS,iBAAiB,SAAS,GAAG,CAAC;YAC/D,CAAC;YACD,OAAO,GAAG,QAAQ,IAAI,SAAS,OAAO,SAAS,EAAE,CAAC;QACpD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,4CAA4C;QAC5C,2DAA2D;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe;YACjD,CAAC,CAAC,UAAU,QAAQ,IAAI,SAAS,sCAAsC;YACvE,CAAC,CAAC,UAAU,QAAQ,IAAI,SAAS,aAAa,CAAC;QAEjD,KAAK,CAAC,KAAK,IAAI;QACX,WAAW;YACP,QAAQ,0BAA0B,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE;KACpF,CAAC;QAEF,iDAAiD;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,qBAAqB,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEhC,oEAAoE;YACpE,IAAI,sBAAyE,CAAC;YAC9E,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC;gBACtD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;gBAEhD,IAAI,YAAY,EAAE,CAAC;oBACjB,sDAAsD;oBACtD,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE;wBACvC,MAAM,KAAK,GAAwB,EAAE,CAAC;wBACtC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAO,EAAE,CAAC;4BAChC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gCACrC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACzC,CAAC;wBACH,CAAC;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,KAAK,CAAC,KAAK,IAAI,IAAA,6CAAuB,EAAC;gBACrC,IAAI,EAAE,QAAQ;gBACd,gBAAgB,EAAE,GAAG,CAAC,YAAY;gBAClC,kBAAkB,EAAE,GAAG,CAAC,SAAS,KAAK,KAAK;gBAC3C,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjF,sBAAsB;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,kFAAkF;QAClF,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,mFAAmF;YACnF,IAAI,GAAG,CAAC,QAAQ;gBAAE,SAAS;YAE3B,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC;YACzD,IAAI,eAAe,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,eAAe,CAAC;gBAC3D,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,IAAI,2BAA2B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3G,KAAK,CAAC,KAAK,IAAI;iBACN,QAAQ;yBACA,IAAI;mBACV,QAAQ,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,KAAK,CAAC,SAAS;gBAClJ,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAsB;QACjC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAErC,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,EAAE,EAAE,MAAM,CAAC,EAAE;SACd,CAAC;QAEF,2DAA2D;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe;YACjD,CAAC,CAAC,UAAU,QAAQ,IAAI,SAAS,sCAAsC;YACvE,CAAC,CAAC,UAAU,QAAQ,IAAI,SAAS,aAAa,CAAC;QAEjD,KAAK,CAAC,KAAK,IAAI;QACX,WAAW;sBACG,QAAQ;KACzB,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAIvB;QACC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEtC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE/D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,sBAAa,CAAC,yBAAyB,MAAM,CAAC,YAAY,EAAE,EAAE,mBAAU,CAAC,WAAW,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,sBAAa,CACrB,oEAAoE,EACpE,mBAAU,CAAC,WAAW,CACvB,CAAC;QACJ,CAAC;QAED,qFAAqF;QACrF,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAmB,CAAC,iBAAiB,MAAM,CAAC,YAAY,gBAAgB,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,yFAAyF;QACzF,oFAAoF;QACpF,wDAAwD;QACxD,MAAM,IAAI,CAAC,sBAAsB,CAAC;YAChC,IAAI,EAAE,KAAK;YACX,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;SACvE,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAErC,yCAAyC;QACzC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjD,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;SAChC,CAAC,CAAC,CAAC;QAEJ,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,KAAK,EAAE,cAAc;SACtB,CAAC;QAEF,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe;YACjD,CAAC,CAAC,iBAAiB,SAAS,4CAA4C;YACxE,CAAC,CAAC,iBAAiB,SAAS,mBAAmB,CAAC;QAElD,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,YAAY,IAAI,CAAC;QAEzG,sEAAsE;QACtE,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClF,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,6EAA6E,CAAC;QACvH,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,+EAA+E,CAAC;QAC9F,CAAC;QAED,sEAAsE;QACtE,KAAK,CAAC,KAAK,IAAI;QACX,WAAW;;uBAEI,GAAG,CAAC,KAAK,CAAC,SAAS;sBACpB,UAAU;QACxB,SAAS;KACZ,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,sBAAsB,CAAC,MAI5B;QACC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE/D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,sBAAa,CAAC,yBAAyB,MAAM,CAAC,YAAY,EAAE,EAAE,mBAAU,CAAC,WAAW,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,sBAAa,CACrB,yEAAyE,EACzE,mBAAU,CAAC,WAAW,CACvB,CAAC;QACJ,CAAC;QAED,qFAAqF;QACrF,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAmB,CAAC,iBAAiB,MAAM,CAAC,YAAY,gBAAgB,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAErC,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;QAEF,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe;YACjD,CAAC,CAAC,iBAAiB,SAAS,4CAA4C;YACxE,CAAC,CAAC,iBAAiB,SAAS,mBAAmB,CAAC;QAElD,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,YAAY,IAAI,CAAC;QAEzG,KAAK,CAAC,KAAK,IAAI;QACX,WAAW;sBACG,UAAU,YAAY,GAAG,CAAC,KAAK,CAAC,SAAS;;;KAG1D,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AAj1CD,gDAi1CC"}
@@ -15,8 +15,13 @@ export declare const updateRelationshipQuery: (params: {
15
15
  * Opt-in: only link target nodes that BELONG_TO the company in `$companyId`
16
16
  * (set by `Neo4jService.initQuery()`). For writes whose target ids come from
17
17
  * request input, so an id of another firm's node never gets an edge. Pair it
18
- * with `Neo4jService.validateExistingNodes()` (per-node `companyId`) to
19
- * refuse the request instead of silently skipping the foreign id.
18
+ * with `Neo4jService.validateRelatedNodes()` to refuse the request instead of
19
+ * silently skipping the foreign id.
20
+ *
21
+ * The linking runs inside a unit `CALL {}` subquery, so ids filtered out here
22
+ * never reduce the outer row count: clauses appended after this fragment
23
+ * (further relationships, SETs) still run once for `node`, even when every id
24
+ * was filtered out.
20
25
  */
21
26
  companyScoped?: boolean;
22
27
  }) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"update.relationship.d.ts","sourceRoot":"","sources":["../../../../src/core/neo4j/queries/update.relationship.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,GAAI,QAAQ;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sBAAsB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAC;IAC7F,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,KAAG,MA6EH,CAAC"}
1
+ {"version":3,"file":"update.relationship.d.ts","sourceRoot":"","sources":["../../../../src/core/neo4j/queries/update.relationship.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,GAAI,QAAQ;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sBAAsB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAC;IAC7F,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,KAAG,MA0FH,CAAC"}
@@ -44,24 +44,39 @@ const updateRelationshipQuery = (params) => {
44
44
  .join(", ");
45
45
  }
46
46
  }
47
+ const relPattern = `${params.relationshipToNode ? "-" : "<-"}[rel:${params.relationshipName}]${params.relationshipToNode ? "->" : "-"}`;
48
+ const setClause = relationshipProps
49
+ ? `SET ${relationshipProps}, rel.updatedAt = datetime()`
50
+ : `SET rel.updatedAt = datetime()`;
51
+ let linkClause = ``;
52
+ if (params.values && params.values.length > 0) {
53
+ linkClause = params.companyScoped
54
+ ? `
55
+ WITH ${params.node}
56
+ CALL {
57
+ WITH ${params.node}
58
+ UNWIND $${paramAlias} AS id
59
+ MATCH (new:${params.label} {id: id})
60
+ WHERE EXISTS { (new)-[:BELONGS_TO]->(:Company {id: $companyId}) }
61
+ MERGE (${params.node})${relPattern}(new)
62
+ ${setClause}
63
+ }
64
+ `
65
+ : `
66
+ WITH ${params.node}, $${paramAlias} AS ${paramAlias}
67
+ UNWIND ${paramAlias} AS id
68
+ MATCH (new:${params.label} {id: id})
69
+ MERGE (${params.node})${relPattern}(new)
70
+ ${setClause}
71
+ `;
72
+ }
47
73
  return `
48
74
  WITH ${params.node}
49
- OPTIONAL MATCH (${params.node})${params.relationshipToNode ? "-" : "<-"}[rel:${params.relationshipName}]${params.relationshipToNode ? "->" : "-"}(existing:${params.label})
75
+ OPTIONAL MATCH (${params.node})${relPattern}(existing:${params.label})
50
76
  WHERE NOT existing.id IN $${paramAlias}
51
77
  DELETE rel
52
78
 
53
- ${params.values && params.values.length > 0
54
- ? `
55
- WITH ${params.node}, $${paramAlias} AS ${paramAlias}
56
- UNWIND ${paramAlias} AS id
57
- MATCH (new:${params.label} {id: id})${params.companyScoped
58
- ? `
59
- WHERE EXISTS { (new)-[:BELONGS_TO]->(:Company {id: $companyId}) }`
60
- : ``}
61
- MERGE (${params.node})${params.relationshipToNode ? "-" : "<-"}[rel:${params.relationshipName}]${params.relationshipToNode ? "->" : "-"}(new)
62
- ${relationshipProps ? `SET ${relationshipProps}, rel.updatedAt = datetime()` : `SET rel.updatedAt = datetime()`}
63
- `
64
- : ``}
79
+ ${linkClause}
65
80
  `;
66
81
  };
67
82
  exports.updateRelationshipQuery = updateRelationshipQuery;
@@ -1 +1 @@
1
- {"version":3,"file":"update.relationship.js","sourceRoot":"","sources":["../../../../src/core/neo4j/queries/update.relationship.ts"],"names":[],"mappings":";;;AAAO,MAAM,uBAAuB,GAAG,CAAC,MAiBvC,EAAU,EAAE;IACX,6DAA6D;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAEnH,6EAA6E;IAC7E,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACnF,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAC3B,MAAM,kBAAkB,GAAG,GAAG,UAAU,eAAe,CAAC;IAExD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClC,oCAAoC;QACpC,IAAI,OAAO,MAAM,CAAC,sBAAsB,KAAK,UAAU,EAAE,CAAC;YACxD,sCAAsC;YACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,sBAAgE,CAAC;YAEzF,kDAAkD;YAClD,MAAM,aAAa,GAA6C,EAAE,CAAC;YAEnE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC3B,aAAa,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACnC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,yCAAyC;YACzC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;YACzD,CAAC;YAED,yCAAyC;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtC,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;qBACzC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,OAAO,kBAAkB,QAAQ,GAAG,EAAE,CAAC;qBAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,iBAAiB,GAAG,MAAM,CAAC,sBAAsB;iBAC9C,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CACzB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,MAAM,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAC1F,CACF;iBACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO;WACE,MAAM,CAAC,IAAI;sBACA,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,MAAM,CAAC,KAAK;gCAC7I,UAAU;;;MAIpC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvC,CAAC,CAAC;eACK,MAAM,CAAC,IAAI,MAAM,UAAU,OAAO,UAAU;iBAC1C,UAAU;qBACN,MAAM,CAAC,KAAK,aACvB,MAAM,CAAC,aAAa;YAClB,CAAC,CAAC;0EAC4D;YAC9D,CAAC,CAAC,EACN;iBACS,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;UACrI,iBAAiB,CAAC,CAAC,CAAC,OAAO,iBAAiB,8BAA8B,CAAC,CAAC,CAAC,gCAAgC;SAC9G;QACD,CAAC,CAAC,EACN;KACC,CAAC;AACN,CAAC,CAAC;AA9FW,QAAA,uBAAuB,2BA8FlC"}
1
+ {"version":3,"file":"update.relationship.js","sourceRoot":"","sources":["../../../../src/core/neo4j/queries/update.relationship.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { ConfigService } from "@nestjs/config";
3
3
  import { Driver } from "neo4j-driver";
4
4
  import { ClsService } from "nestjs-cls";
5
5
  import { DataModelInterface } from "../../../common/interfaces/datamodel.interface";
6
+ import { RelatedNodeRule } from "../../../common/registries/entity-tenancy.registry";
6
7
  import { JsonApiCursorInterface } from "../../jsonapi/interfaces/jsonapi.cursor.interface";
7
8
  import { AppLoggingService } from "../../logging/services/logging.service";
8
9
  import { EntityFactory } from "../factories/entity.factory";
@@ -67,6 +68,29 @@ export declare class Neo4jService implements OnModuleInit, OnModuleDestroy {
67
68
  companyId?: string;
68
69
  }[];
69
70
  }): Promise<void>;
71
+ /**
72
+ * Throws `BadRequestException("One or more related nodes do not exist.")` unless every node
73
+ * exists AND satisfies its company rule for `companyId` (default: the CLS company). A node of
74
+ * another company fails exactly like a missing one, so a caller cannot probe foreign ids.
75
+ *
76
+ * `rule` defaults to the one the target label declares (`relatedNodeRuleForLabel`, filled by
77
+ * `defineEntity`). With no company (system jobs, workers) every rule is existence-only.
78
+ *
79
+ * One read query: nodes are grouped by label + rule, each group is one
80
+ * `UNWIND $ids MATCH ... WHERE <rule> RETURN count(DISTINCT t)` subquery, and the summed count
81
+ * must equal the number of distinct ids.
82
+ *
83
+ * Custom repositories that write client-supplied relationship ids with their own Cypher call
84
+ * this before the write. `AbstractRepository` calls it from create/put/patch/addToRelationship.
85
+ */
86
+ validateRelatedNodes(params: {
87
+ nodes: {
88
+ id: string;
89
+ label: string;
90
+ rule?: RelatedNodeRule;
91
+ }[];
92
+ companyId?: string | null;
93
+ }): Promise<void>;
70
94
  private withRetry;
71
95
  private write;
72
96
  getActiveConnections(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"neo4j.service.d.ts","sourceRoot":"","sources":["../../../../src/core/neo4j/services/neo4j.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neo4j.service.d.ts","sourceRoot":"","sources":["../../../../src/core/neo4j/services/neo4j.service.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,48 @@ const common_1 = require("@nestjs/common");
14
14
  const config_1 = require("@nestjs/config");
15
15
  const neo4j_driver_1 = require("neo4j-driver");
16
16
  const nestjs_cls_1 = require("nestjs-cls");
17
+ const entity_tenancy_registry_1 = require("../../../common/registries/entity-tenancy.registry");
17
18
  const base_config_1 = require("../../../config/base.config");
18
19
  const logging_service_1 = require("../../logging/services/logging.service");
19
20
  const entity_factory_1 = require("../factories/entity.factory");
21
+ const CYPHER_IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/;
22
+ /** Labels and relationship types are interpolated into Cypher: accept plain identifiers only. */
23
+ const assertCypherIdentifier = (value) => {
24
+ if (!CYPHER_IDENTIFIER.test(value))
25
+ throw new common_1.BadRequestException("Invalid related node label");
26
+ };
27
+ /**
28
+ * The WHERE predicate a related node bound to `alias` must satisfy for `$companyId`, or "" for
29
+ * existence only. See RelatedNodeRule.
30
+ */
31
+ const relatedNodePredicate = (alias, rule) => {
32
+ switch (rule.kind) {
33
+ case "exists":
34
+ return "";
35
+ case "self":
36
+ return `${alias}.id = $companyId`;
37
+ case "company": {
38
+ const own = `EXISTS { MATCH (${alias})-[:BELONGS_TO]->(:Company {id: $companyId}) }`;
39
+ if (!rule.allowPlatform)
40
+ return own;
41
+ return `(NOT EXISTS { MATCH (${alias})-[:BELONGS_TO]->(:Company) } OR ${own})`;
42
+ }
43
+ case "via": {
44
+ const { relationship, direction, label } = rule.hop;
45
+ assertCypherIdentifier(relationship);
46
+ assertCypherIdentifier(label);
47
+ const edge = direction === "out" ? `-[:${relationship}]->` : `<-[:${relationship}]-`;
48
+ // A hop that ends at the Company itself is matched by id (a Company has no BELONGS_TO),
49
+ // mirroring AbstractRepository.buildDefaultMatch() for tenancy { via }.
50
+ const own = label === "Company"
51
+ ? `EXISTS { MATCH (${alias})${edge}(:Company {id: $companyId}) }`
52
+ : `EXISTS { MATCH (${alias})${edge}(:${label})-[:BELONGS_TO]->(:Company {id: $companyId}) }`;
53
+ if (!rule.allowPlatform)
54
+ return own;
55
+ return `(NOT EXISTS { MATCH (${alias})${edge}(:${label}) } OR ${own})`;
56
+ }
57
+ }
58
+ };
20
59
  let Neo4jService = class Neo4jService {
21
60
  constructor(entityFactory, cls, logger, configService) {
22
61
  this.entityFactory = entityFactory;
@@ -293,6 +332,61 @@ let Neo4jService = class Neo4jService {
293
332
  throw new common_1.BadRequestException("One or more related nodes do not exist.");
294
333
  }
295
334
  }
335
+ /**
336
+ * Throws `BadRequestException("One or more related nodes do not exist.")` unless every node
337
+ * exists AND satisfies its company rule for `companyId` (default: the CLS company). A node of
338
+ * another company fails exactly like a missing one, so a caller cannot probe foreign ids.
339
+ *
340
+ * `rule` defaults to the one the target label declares (`relatedNodeRuleForLabel`, filled by
341
+ * `defineEntity`). With no company (system jobs, workers) every rule is existence-only.
342
+ *
343
+ * One read query: nodes are grouped by label + rule, each group is one
344
+ * `UNWIND $ids MATCH ... WHERE <rule> RETURN count(DISTINCT t)` subquery, and the summed count
345
+ * must equal the number of distinct ids.
346
+ *
347
+ * Custom repositories that write client-supplied relationship ids with their own Cypher call
348
+ * this before the write. `AbstractRepository` calls it from create/put/patch/addToRelationship.
349
+ */
350
+ async validateRelatedNodes(params) {
351
+ if (params.nodes.length === 0)
352
+ return;
353
+ const companyId = params.companyId !== undefined ? params.companyId : this.cls.has("companyId") ? this.cls.get("companyId") : null;
354
+ const groups = new Map();
355
+ for (const node of params.nodes) {
356
+ const rule = companyId ? (node.rule ?? (0, entity_tenancy_registry_1.relatedNodeRuleForLabel)(node.label)) : { kind: "exists" };
357
+ const key = `${node.label}|${JSON.stringify(rule)}`;
358
+ let group = groups.get(key);
359
+ if (!group) {
360
+ group = { label: node.label, rule, ids: new Set() };
361
+ groups.set(key, group);
362
+ }
363
+ group.ids.add(node.id);
364
+ }
365
+ const queryParams = { companyId: companyId ?? null };
366
+ const subqueries = [];
367
+ const counts = [];
368
+ let expected = 0;
369
+ [...groups.values()].forEach((group, index) => {
370
+ assertCypherIdentifier(group.label);
371
+ const predicate = relatedNodePredicate("t", group.rule);
372
+ queryParams[`ids${index}`] = [...group.ids];
373
+ expected += group.ids.size;
374
+ subqueries.push(`
375
+ CALL {
376
+ UNWIND $ids${index} AS relatedId
377
+ MATCH (t:${group.label} {id: relatedId})
378
+ ${predicate ? `WHERE ${predicate}` : ""}
379
+ RETURN count(DISTINCT t) AS found${index}
380
+ }`);
381
+ counts.push(`found${index}`);
382
+ });
383
+ const result = await this.read(`${subqueries.join("\n")}\nRETURN ${counts.join(" + ")} AS found`, queryParams);
384
+ const raw = result?.records?.[0]?.get("found");
385
+ const found = typeof raw === "number" ? raw : (raw?.toNumber?.() ?? 0);
386
+ if (found !== expected) {
387
+ throw new common_1.BadRequestException("One or more related nodes do not exist.");
388
+ }
389
+ }
296
390
  async withRetry(operation) {
297
391
  let lastError = null;
298
392
  for (let attempt = 1; attempt <= this.maxRetries; attempt++) {