zarr-metadata 0.1.0 → 0.3.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.
package/README.md CHANGED
@@ -76,9 +76,13 @@ package's flat problem lists; `flattenTree`/`treeOf` convert between the
76
76
  two, and the flat path+kind form remains the cross-language interchange
77
77
  format the conformance corpus asserts on.
78
78
 
79
- Validation is structural (key presence, value shapes, fixed literals), not
80
- domain-level: extension points (codecs, chunk grids, data types) are never
81
- interpreted, matching the Python package's layering.
79
+ The structural validators check key presence, value shapes, and fixed
80
+ literals without interpreting extension points, matching the Python
81
+ package's layering. `validateArraySemanticsV3` is a separate,
82
+ TS-only semantic layer on top: it interprets the well-known core extension
83
+ points to enforce the specs' cross-field prose rules (regular chunk grid
84
+ arity, transpose permutations, sharding divisibility, fill_value vs data
85
+ type), skipping unrecognized names — the extension name space is open.
82
86
 
83
87
  Consumers include the
84
88
  [Zarr Metadata VS Code extension](https://github.com/d-v-b/vscode-zarr).
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@
8
8
  export type { JSONValue, ZarrV3MetadataFieldJSON, ZarrV3NamedConfigJSON } from "./common.js";
9
9
  export { flattenTree, formatTree, isEmptyTree, MetadataValidationError, treeOf, type ErrorTree, type Issue, type IssueKind, type IssuePath, type ParseResult, type PathedIssue, } from "./errors.js";
10
10
  export * from "./schemas.js";
11
+ export * from "./semantics.js";
11
12
  export type { StandardSchemaV1 } from "./standard-schema.js";
12
13
  export * from "./v2.js";
13
14
  export * from "./v3.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@
7
7
  */
8
8
  export { flattenTree, formatTree, isEmptyTree, MetadataValidationError, treeOf, } from "./errors.js";
9
9
  export * from "./schemas.js";
10
+ export * from "./semantics.js";
10
11
  export * from "./v2.js";
11
12
  export * from "./v3.js";
12
13
  export * from "./validation.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,GAOP,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC;AAE7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,MAAM,GAOP,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Semantic (cross-field) validation for v3 array metadata.
3
+ *
4
+ * The structural validators never interpret what an extension point names;
5
+ * this module deliberately interprets a small set of WELL-KNOWN core
6
+ * extension points to enforce the cross-field rules the specs state in
7
+ * prose:
8
+ *
9
+ * - the `regular` chunk grid's `chunk_shape` has one length per dimension
10
+ * of `shape`;
11
+ * - a `transpose` codec's `order` is a permutation of `0..n-1`, with one
12
+ * entry per array dimension;
13
+ * - a `sharding_indexed` codec's inner `chunk_shape` matches the array's
14
+ * dimensionality and evenly divides the shape of the chunk it shards
15
+ * (the regular grid's chunk at the top level, the parent shard's inner
16
+ * chunk when sharding nests);
17
+ * - `fill_value` has a JSON shape permitted for the named core data type
18
+ * (booleans for `bool`, ranged integers for the int types, numbers /
19
+ * the "NaN"-family sentinels / width-checked "0x…" strings for the
20
+ * float types, two-element arrays for the complex types).
21
+ *
22
+ * Unrecognized names are skipped everywhere — the extension name space is
23
+ * open, and a rule that guessed would lie. This layer has no counterpart
24
+ * in the Python reference implementation (which stops at structure), so it
25
+ * is covered by this package's own tests rather than the conformance
26
+ * corpus.
27
+ */
28
+ import { type ErrorTree } from "./errors.js";
29
+ /**
30
+ * Every semantic (cross-field) problem in a v3 array metadata document, as
31
+ * an error tree; an empty tree means no rule found a violation. Values that
32
+ * are not v3 array documents yield an empty tree; run the structural
33
+ * validators for structure.
34
+ */
35
+ export declare function validateArraySemanticsV3(value: unknown): ErrorTree;
36
+ //# sourceMappingURL=semantics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantics.d.ts","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAoB,MAAM,aAAa,CAAC;AAqLvE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAoClE"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Semantic (cross-field) validation for v3 array metadata.
3
+ *
4
+ * The structural validators never interpret what an extension point names;
5
+ * this module deliberately interprets a small set of WELL-KNOWN core
6
+ * extension points to enforce the cross-field rules the specs state in
7
+ * prose:
8
+ *
9
+ * - the `regular` chunk grid's `chunk_shape` has one length per dimension
10
+ * of `shape`;
11
+ * - a `transpose` codec's `order` is a permutation of `0..n-1`, with one
12
+ * entry per array dimension;
13
+ * - a `sharding_indexed` codec's inner `chunk_shape` matches the array's
14
+ * dimensionality and evenly divides the shape of the chunk it shards
15
+ * (the regular grid's chunk at the top level, the parent shard's inner
16
+ * chunk when sharding nests);
17
+ * - `fill_value` has a JSON shape permitted for the named core data type
18
+ * (booleans for `bool`, ranged integers for the int types, numbers /
19
+ * the "NaN"-family sentinels / width-checked "0x…" strings for the
20
+ * float types, two-element arrays for the complex types).
21
+ *
22
+ * Unrecognized names are skipped everywhere — the extension name space is
23
+ * open, and a rule that guessed would lie. This layer has no counterpart
24
+ * in the Python reference implementation (which stops at structure), so it
25
+ * is covered by this package's own tests rather than the conformance
26
+ * corpus.
27
+ */
28
+ import { treeOf } from "./errors.js";
29
+ function isPlainObject(value) {
30
+ if (typeof value !== "object" || value === null || Array.isArray(value))
31
+ return false;
32
+ const proto = Object.getPrototypeOf(value);
33
+ return proto === null || proto === Object.prototype;
34
+ }
35
+ function isIntArray(value) {
36
+ return (Array.isArray(value) &&
37
+ Object.keys(value).length === value.length &&
38
+ value.every((item) => Number.isInteger(item)));
39
+ }
40
+ /** The `{name, configuration}` of a metadata field, when extractable. */
41
+ function fieldParts(field) {
42
+ if (typeof field === "string")
43
+ return { name: field, configuration: undefined };
44
+ if (isPlainObject(field) && typeof field["name"] === "string") {
45
+ const configuration = field["configuration"];
46
+ return {
47
+ name: field["name"],
48
+ configuration: isPlainObject(configuration) ? configuration : undefined,
49
+ };
50
+ }
51
+ return undefined;
52
+ }
53
+ // --- fill_value vs data_type ----------------------------------------------
54
+ const INT_RANGES = {
55
+ int8: [-128, 127],
56
+ int16: [-32768, 32767],
57
+ int32: [-2147483648, 2147483647],
58
+ int64: [-9223372036854775808, 9223372036854775807],
59
+ uint8: [0, 255],
60
+ uint16: [0, 65535],
61
+ uint32: [0, 4294967295],
62
+ uint64: [0, 18446744073709551615],
63
+ };
64
+ const FLOAT_HEX_DIGITS = {
65
+ float16: 4,
66
+ float32: 8,
67
+ float64: 16,
68
+ };
69
+ /** Hex digit width of each complex type's component floats. */
70
+ const COMPLEX_COMPONENT_HEX_DIGITS = {
71
+ complex64: 8,
72
+ complex128: 16,
73
+ };
74
+ function isFloatFill(value, hexDigits) {
75
+ if (typeof value === "number")
76
+ return true;
77
+ if (typeof value !== "string")
78
+ return false;
79
+ if (value === "NaN" || value === "Infinity" || value === "-Infinity")
80
+ return true;
81
+ return new RegExp(`^0x[0-9a-fA-F]{${hexDigits}}$`).test(value);
82
+ }
83
+ function floatFillMessage(name, hexDigits) {
84
+ return (`expected a number, "NaN", "Infinity", "-Infinity", or a ` +
85
+ `${hexDigits}-hex-digit "0x..." string for data type ${JSON.stringify(name)}`);
86
+ }
87
+ /** The fill_value issue for a KNOWN core data type, if any; undefined otherwise. */
88
+ function fillValueIssue(dataTypeName, fill) {
89
+ if (dataTypeName === "bool") {
90
+ return typeof fill === "boolean"
91
+ ? undefined
92
+ : 'expected a boolean fill value for data type "bool"';
93
+ }
94
+ const intRange = INT_RANGES[dataTypeName];
95
+ if (intRange !== undefined) {
96
+ const [low, high] = intRange;
97
+ return Number.isInteger(fill) && fill >= low && fill <= high
98
+ ? undefined
99
+ : `expected an integer in [${low}, ${high}] for data type ${JSON.stringify(dataTypeName)}`;
100
+ }
101
+ const floatDigits = FLOAT_HEX_DIGITS[dataTypeName];
102
+ if (floatDigits !== undefined) {
103
+ return isFloatFill(fill, floatDigits)
104
+ ? undefined
105
+ : floatFillMessage(dataTypeName, floatDigits);
106
+ }
107
+ const complexDigits = COMPLEX_COMPONENT_HEX_DIGITS[dataTypeName];
108
+ if (complexDigits !== undefined) {
109
+ const ok = Array.isArray(fill) &&
110
+ fill.length === 2 &&
111
+ fill.every((part) => isFloatFill(part, complexDigits));
112
+ return ok
113
+ ? undefined
114
+ : `expected a two-element [real, imaginary] array for data type ${JSON.stringify(dataTypeName)}`;
115
+ }
116
+ return undefined; // unrecognized data type: no verdict
117
+ }
118
+ // --- codec pipelines (transpose / sharding) --------------------------------
119
+ function isPermutation(order) {
120
+ const seen = new Set(order);
121
+ return seen.size === order.length && order.every((entry) => entry >= 0 && entry < order.length);
122
+ }
123
+ /**
124
+ * Walk one codec pipeline. `dims` is the array dimensionality at this point
125
+ * (undefined when unknowable); `outerChunkShape` is the shape of the chunk
126
+ * this pipeline encodes — what a sharding codec's inner chunks must divide.
127
+ */
128
+ function pipelineIssues(pipeline, path, dims, outerChunkShape) {
129
+ const issues = [];
130
+ pipeline.forEach((entry, index) => {
131
+ const parts = fieldParts(entry);
132
+ if (parts === undefined)
133
+ return;
134
+ const { name, configuration } = parts;
135
+ if (name === "transpose") {
136
+ const order = configuration?.["order"];
137
+ if (!isIntArray(order))
138
+ return; // shape errors are the schema layer's
139
+ const orderPath = [...path, index, "configuration", "order"];
140
+ if (!isPermutation(order)) {
141
+ issues.push({
142
+ path: orderPath,
143
+ message: `expected a permutation of the integers 0..${order.length - 1}`,
144
+ kind: "invalid_value",
145
+ });
146
+ }
147
+ if (dims !== undefined && order.length !== dims) {
148
+ issues.push({
149
+ path: orderPath,
150
+ message: `expected one entry per array dimension (${dims})`,
151
+ kind: "invalid_value",
152
+ });
153
+ }
154
+ }
155
+ else if (name === "sharding_indexed") {
156
+ const chunkShape = configuration?.["chunk_shape"];
157
+ if (!isIntArray(chunkShape))
158
+ return;
159
+ const chunkShapePath = [...path, index, "configuration", "chunk_shape"];
160
+ if (dims !== undefined && chunkShape.length !== dims) {
161
+ issues.push({
162
+ path: chunkShapePath,
163
+ message: `expected one length per array dimension (${dims})`,
164
+ kind: "invalid_value",
165
+ });
166
+ }
167
+ else if (outerChunkShape !== undefined &&
168
+ chunkShape.length === outerChunkShape.length &&
169
+ chunkShape.every((length) => length > 0) &&
170
+ outerChunkShape.some((outer, axis) => outer % chunkShape[axis] !== 0)) {
171
+ issues.push({
172
+ path: chunkShapePath,
173
+ message: `expected ${JSON.stringify(chunkShape)} to evenly divide the outer chunk shape ${JSON.stringify(outerChunkShape)}`,
174
+ kind: "invalid_value",
175
+ });
176
+ }
177
+ const inner = configuration?.["codecs"];
178
+ if (Array.isArray(inner)) {
179
+ issues.push(...pipelineIssues(inner, [...path, index, "configuration", "codecs"], dims, chunkShape));
180
+ }
181
+ // index_codecs encode the shard index, whose shape differs from the
182
+ // array's — no dimensional context applies there.
183
+ }
184
+ });
185
+ return issues;
186
+ }
187
+ /**
188
+ * Every semantic (cross-field) problem in a v3 array metadata document, as
189
+ * an error tree; an empty tree means no rule found a violation. Values that
190
+ * are not v3 array documents yield an empty tree; run the structural
191
+ * validators for structure.
192
+ */
193
+ export function validateArraySemanticsV3(value) {
194
+ if (!isPlainObject(value) || value["node_type"] !== "array")
195
+ return treeOf([]);
196
+ const issues = [];
197
+ const shape = isIntArray(value["shape"]) ? value["shape"] : undefined;
198
+ const dims = shape?.length;
199
+ const grid = fieldParts(value["chunk_grid"]);
200
+ let chunkShape;
201
+ if (grid?.name === "regular") {
202
+ const configured = grid.configuration?.["chunk_shape"];
203
+ if (isIntArray(configured)) {
204
+ chunkShape = configured;
205
+ if (dims !== undefined && configured.length !== dims) {
206
+ issues.push({
207
+ path: ["chunk_grid", "configuration", "chunk_shape"],
208
+ message: `expected one length per dimension of shape (${dims})`,
209
+ kind: "invalid_value",
210
+ });
211
+ chunkShape = undefined; // wrong arity: unusable as division context
212
+ }
213
+ }
214
+ }
215
+ const dataType = fieldParts(value["data_type"]);
216
+ if (dataType !== undefined && "fill_value" in value) {
217
+ const message = fillValueIssue(dataType.name, value["fill_value"]);
218
+ if (message !== undefined) {
219
+ issues.push({ path: ["fill_value"], message, kind: "invalid_value" });
220
+ }
221
+ }
222
+ const codecs = value["codecs"];
223
+ if (Array.isArray(codecs)) {
224
+ issues.push(...pipelineIssues(codecs, ["codecs"], dims, chunkShape));
225
+ }
226
+ return treeOf(issues);
227
+ }
228
+ //# sourceMappingURL=semantics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"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"}
@@ -133,4 +133,20 @@ export declare function validateConsolidatedMetadataV2(value: unknown): ErrorTre
133
133
  export declare function isConsolidatedMetadataV2(value: unknown): value is ZarrV2ConsolidatedMetadataJSON;
134
134
  export declare function parseConsolidatedMetadataV2(value: unknown): ZarrV2ConsolidatedMetadataJSON;
135
135
  export declare function safeParseConsolidatedMetadataV2(value: unknown): ParseResult<ZarrV2ConsolidatedMetadataJSON>;
136
+ /**
137
+ * The extension-field keys of a v3 metadata document that a reader is
138
+ * obligated to understand.
139
+ *
140
+ * Per the v3 spec an extension field is implicitly `must_understand: true`
141
+ * unless it is an object carrying the explicit member
142
+ * `"must_understand": false`, and an implementation MUST refuse to open a
143
+ * node with obligated fields it does not recognize. This reports the
144
+ * obligation only — which fields a reader actually recognizes is the
145
+ * reader's business, so these keys are advisory, not validation problems
146
+ * (the document is structurally valid). Returns `[]` for anything that is
147
+ * not shaped like a v3 array or group document. The
148
+ * reference-implementation `consolidated_metadata` convention on groups is
149
+ * treated as recognized.
150
+ */
151
+ export declare function mustUnderstandExtensionFieldsV3(value: unknown): string[];
136
152
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -781,4 +781,40 @@ export function parseConsolidatedMetadataV2(value) {
781
781
  export function safeParseConsolidatedMetadataV2(value) {
782
782
  return toResult(value, consolidatedMetadataV2Problems(value));
783
783
  }
784
+ /**
785
+ * The extension-field keys of a v3 metadata document that a reader is
786
+ * obligated to understand.
787
+ *
788
+ * Per the v3 spec an extension field is implicitly `must_understand: true`
789
+ * unless it is an object carrying the explicit member
790
+ * `"must_understand": false`, and an implementation MUST refuse to open a
791
+ * node with obligated fields it does not recognize. This reports the
792
+ * obligation only — which fields a reader actually recognizes is the
793
+ * reader's business, so these keys are advisory, not validation problems
794
+ * (the document is structurally valid). Returns `[]` for anything that is
795
+ * not shaped like a v3 array or group document. The
796
+ * reference-implementation `consolidated_metadata` convention on groups is
797
+ * treated as recognized.
798
+ */
799
+ export function mustUnderstandExtensionFieldsV3(value) {
800
+ if (!isPlainObject(value))
801
+ return [];
802
+ const nodeType = value["node_type"];
803
+ let reserved;
804
+ if (nodeType === "array") {
805
+ reserved = ARRAY_METADATA_STANDARD_KEYS_V3;
806
+ }
807
+ else if (nodeType === "group") {
808
+ reserved = [...GROUP_METADATA_STANDARD_KEYS_V3, ZARR_V3_CONSOLIDATED_METADATA_KEY];
809
+ }
810
+ else {
811
+ return [];
812
+ }
813
+ return Object.keys(value).filter((key) => {
814
+ if (reserved.includes(key))
815
+ return false;
816
+ const field = value[key];
817
+ return !(isPlainObject(field) && field["must_understand"] === false);
818
+ });
819
+ }
784
820
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EACL,uBAAuB,EACvB,MAAM,GAMP,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,EACjC,mBAAmB,EACnB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,GAIhC,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,GAKlC,MAAM,SAAS,CAAC;AAEjB,4EAA4E;AAC5E,uEAAuE;AACvE,2BAA2B;AAC3B,SAAS,OAAO,CAAC,IAAe,EAAE,OAAe,EAAE,IAAe;IAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,MAAM,CAAC,IAAqB,EAAE,MAAqB;IAC1D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,KAAK,GAAY,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,qFAAqF;AACrF,SAAS,GAAG,CAAC,GAA4B,EAAE,GAAW;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,gEAAgE;QAChE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,KAAa;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,qBAAqB,KAAK,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,4BAA4B,cAAc,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,CAAC,EAAE,EAAE,6CAA6C,EAAE,cAAc,CAAC;aAC3E,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,4BAA4B,cAAc,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,kCAAkC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AACxF,CAAC;AAGD,oEAAoE;AACpE,SAAS,WAAW,CAClB,QAA+B,EAC/B,GAA4B;IAE5B,OAAO,CAAC,GAAG,QAAQ,CAAC;SACjB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACjC,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,yEAAyE;AACzE,SAAS,cAAc,CACrB,OAA8B,EAC9B,GAA4B;IAE5B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,4BAA4B,EAAE,eAAe,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,+EAA+E;AAC/E,SAAS,YAAY,CACnB,GAA4B,EAC5B,GAAW,EACX,QAAmC;IAEnC,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QACpF,OAAO;YACL,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC;SACrF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,yDAAyD;AACzD,SAAS,yBAAyB,CAChC,GAA4B,EAC5B,YAAmC,EACnC,yBAAgD,EAAE;IAElD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAC9B,KAAc,EACd,UAAkD,EAAE;IAEpD,MAAM,EAAE,wBAAwB,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,CAAC,EAAE,EAAE,wDAAwD,EAAE,cAAc,CAAC;SACtF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,kCAAkC,EAAE,eAAe,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAI,OAAO,cAAc,KAAK,SAAS,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;QACpF,CAAC;aAAM,IAAI,CAAC,wBAAwB,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CACX,OAAO,CACL,CAAC,iBAAiB,CAAC,EACnB,gDAAgD,EAChD,eAAe,CAChB,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAGD;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAA4B,EAAE,GAAW;IACpE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,4BAA4B,EAAE,cAAc,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,gCAAgC,EAAE,eAAe,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,sEAAsE;IACtE,oEAAoE;IACpE,IAAI,KAAK,IAAI,cAAc;QAAE,OAAO,KAAK,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7D,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACnD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sFAAsF;AACtF,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AACjE,CAAC;AAED,0EAA0E;AAC1E,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,mDAAmD,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,EAAE,qCAAqC,EAAE,cAAc,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,QAAQ,GAAkB,WAAW,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC,CAAC;IAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACpE,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CACP,GAAG,EACH,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CACvE,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,EAAE,CAAC;QACrD,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,qBAAqB,EAAE,cAAc,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,6BAA6B,EAAE,eAAe,CAAC,CAAC,CAAC;gBACrF,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAChC,0EAA0E;QAC1E,0EAA0E;QAC1E,2DAA2D;QAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,cAAc,CAAC,CAAC,CAAC;QACrF,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC7E,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAAE,+BAA+B,EAAE,cAAc,CAAC,CAC9E,CAAC;QACJ,CAAC;aAAM,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/E,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAAE,0CAA0C,EAAE,eAAe,CAAC,CAC1F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAGD;;;;;;GAMG;AACH,SAAS,8BAA8B,CAAC,KAAc;IACpD,OAAO,qCAAqC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,qCAAqC,CAC5C,KAAc,EACd,KAAa;IAEb,0EAA0E;IAC1E,qEAAqE;IACrE,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;QAC5B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,4BAA4B,cAAc,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,QAAQ,GAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC;SACpE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/E,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,IAAI,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,KAAK,EAAE,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvE,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpF,CAAC;qBAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,8BAA8B,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACrF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,6BAA6B,EAAE,eAAe,CAAC,CACxF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,OAAO,8BAA8B,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,8BAA8B,CAAC,KAAc,EAAE,KAAa;IACnE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,QAAQ,GAAkB,WAAW,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IAClF,QAAQ,CAAC,IAAI,CACX,GAAG,yBAAyB,CAAC,GAAG,EAAE,+BAA+B,EAAE;QACjE,iCAAiC;KAClC,CAAC,CACH,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IACE,GAAG,CAAC,GAAG,EAAE,iCAAiC,CAAC;QAC3C,GAAG,CAAC,iCAAiC,CAAC,KAAK,IAAI,EAC/C,CAAC;QACD,gEAAgE;QAChE,yDAAyD;QACzD,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CACP,iCAAiC,EACjC,qCAAqC,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CACzF,CACF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAGD;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO;QACL,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,oCAAoC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,QAAQ,GAAkB,WAAW,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,EAAE,GAAG,cAAc,CAAC,CAAC;IACnD,IACE,aAAa,CAAC,MAAM,KAAK,CAAC;QAC1B,cAAc,CAAC,MAAM,KAAK,CAAC;QAC3B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAC5C,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,iDAAiD,EAAE,eAAe,CAAC,CACxF,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,2DAA2D,EAAE,cAAc,CAAC,CAChG,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAE,mBAA0C,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC7F,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,4BAA4B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC9E,QAAQ,CAAC,IAAI,CACX,OAAO,CACL,CAAC,SAAS,CAAC,EACX,uEAAuE,EACvE,cAAc,CACf,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,8BAA8B,EAAE,eAAe,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IACE,GAAG,CAAC,GAAG,EAAE,qBAAqB,CAAC;QAC/B,CAAE,iCAAwD,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,EAC/F,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,OAAO,CACL,CAAC,qBAAqB,CAAC,EACvB,4BAA4B,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,EAAE,EAC9D,eAAe,CAChB,CACF,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAGD;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,QAAQ,GAAkB,WAAW,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAGD;;;;;;;;;GASG;AACH,SAAS,8BAA8B,CAAC,KAAc;IACpD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,QAAQ,GAAkB,CAAC,0BAA0B,EAAE,UAAU,CAAC;SACrE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,0BAA0B,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,qCAAqC,EAAE,cAAc,CAAC,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAqBD,SAAS,QAAQ,CAAC,OAAqB,EAAE,GAAW;IAClD,IAAI,OAAO,YAAY,GAAG,EAAE,CAAC;QAC3B,OAAQ,OAAoD,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,OAA0D,CAAC;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE,GAAW;IAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GACR,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,uBAAuB,CAC/B,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,iBAAiB,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc,EACd,UAAwC,EAAE;IAE1C,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8BAA8B;AAC9B,EAAE;AACF,mEAAmE;AACnE,oCAAoC;AACpC,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E,SAAS,QAAQ,CAAI,KAAc,EAAE,QAAuB;IAC1D,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAU,EAAE;QACtC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAI,KAAc,EAAE,QAAuB;IAC1D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AACD,yDAAyD;AACzD,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1C,CAAC;AACD,kFAAkF;AAClF,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,uBAAuB,CACrC,KAAc,EACd,UAAkD,EAAE;IAEpD,OAAO,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,OAAO,MAAM,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AACD,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,MAAM,UAAU,+BAA+B,CAC7C,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,OAAO,MAAM,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AACD,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,MAAM,UAAU,+BAA+B,CAC7C,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zarr-metadata",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Spec-defined metadata types and validators for Zarr v2 and v3.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -21,6 +21,7 @@ export {
21
21
  type PathedIssue,
22
22
  } from "./errors.js";
23
23
  export * from "./schemas.js";
24
+ export * from "./semantics.js";
24
25
  export type { StandardSchemaV1 } from "./standard-schema.js";
25
26
  export * from "./v2.js";
26
27
  export * from "./v3.js";
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Semantic (cross-field) validation for v3 array metadata.
3
+ *
4
+ * The structural validators never interpret what an extension point names;
5
+ * this module deliberately interprets a small set of WELL-KNOWN core
6
+ * extension points to enforce the cross-field rules the specs state in
7
+ * prose:
8
+ *
9
+ * - the `regular` chunk grid's `chunk_shape` has one length per dimension
10
+ * of `shape`;
11
+ * - a `transpose` codec's `order` is a permutation of `0..n-1`, with one
12
+ * entry per array dimension;
13
+ * - a `sharding_indexed` codec's inner `chunk_shape` matches the array's
14
+ * dimensionality and evenly divides the shape of the chunk it shards
15
+ * (the regular grid's chunk at the top level, the parent shard's inner
16
+ * chunk when sharding nests);
17
+ * - `fill_value` has a JSON shape permitted for the named core data type
18
+ * (booleans for `bool`, ranged integers for the int types, numbers /
19
+ * the "NaN"-family sentinels / width-checked "0x…" strings for the
20
+ * float types, two-element arrays for the complex types).
21
+ *
22
+ * Unrecognized names are skipped everywhere — the extension name space is
23
+ * open, and a rule that guessed would lie. This layer has no counterpart
24
+ * in the Python reference implementation (which stops at structure), so it
25
+ * is covered by this package's own tests rather than the conformance
26
+ * corpus.
27
+ */
28
+
29
+ import { treeOf, type ErrorTree, type PathedIssue } from "./errors.js";
30
+
31
+ type Path = ReadonlyArray<string | number>;
32
+
33
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
34
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
35
+ const proto: unknown = Object.getPrototypeOf(value);
36
+ return proto === null || proto === Object.prototype;
37
+ }
38
+
39
+ function isIntArray(value: unknown): value is number[] {
40
+ return (
41
+ Array.isArray(value) &&
42
+ Object.keys(value).length === value.length &&
43
+ value.every((item) => Number.isInteger(item))
44
+ );
45
+ }
46
+
47
+ /** The `{name, configuration}` of a metadata field, when extractable. */
48
+ function fieldParts(
49
+ field: unknown,
50
+ ): { name: string; configuration: Record<string, unknown> | undefined } | undefined {
51
+ if (typeof field === "string") return { name: field, configuration: undefined };
52
+ if (isPlainObject(field) && typeof field["name"] === "string") {
53
+ const configuration = field["configuration"];
54
+ return {
55
+ name: field["name"],
56
+ configuration: isPlainObject(configuration) ? configuration : undefined,
57
+ };
58
+ }
59
+ return undefined;
60
+ }
61
+
62
+ // --- fill_value vs data_type ----------------------------------------------
63
+
64
+ const INT_RANGES: Record<string, readonly [number, number]> = {
65
+ int8: [-128, 127],
66
+ int16: [-32768, 32767],
67
+ int32: [-2147483648, 2147483647],
68
+ int64: [-9223372036854775808, 9223372036854775807],
69
+ uint8: [0, 255],
70
+ uint16: [0, 65535],
71
+ uint32: [0, 4294967295],
72
+ uint64: [0, 18446744073709551615],
73
+ };
74
+
75
+ const FLOAT_HEX_DIGITS: Record<string, number> = {
76
+ float16: 4,
77
+ float32: 8,
78
+ float64: 16,
79
+ };
80
+
81
+ /** Hex digit width of each complex type's component floats. */
82
+ const COMPLEX_COMPONENT_HEX_DIGITS: Record<string, number> = {
83
+ complex64: 8,
84
+ complex128: 16,
85
+ };
86
+
87
+ function isFloatFill(value: unknown, hexDigits: number): boolean {
88
+ if (typeof value === "number") return true;
89
+ if (typeof value !== "string") return false;
90
+ if (value === "NaN" || value === "Infinity" || value === "-Infinity") return true;
91
+ return new RegExp(`^0x[0-9a-fA-F]{${hexDigits}}$`).test(value);
92
+ }
93
+
94
+ function floatFillMessage(name: string, hexDigits: number): string {
95
+ return (
96
+ `expected a number, "NaN", "Infinity", "-Infinity", or a ` +
97
+ `${hexDigits}-hex-digit "0x..." string for data type ${JSON.stringify(name)}`
98
+ );
99
+ }
100
+
101
+ /** The fill_value issue for a KNOWN core data type, if any; undefined otherwise. */
102
+ function fillValueIssue(dataTypeName: string, fill: unknown): string | undefined {
103
+ if (dataTypeName === "bool") {
104
+ return typeof fill === "boolean"
105
+ ? undefined
106
+ : 'expected a boolean fill value for data type "bool"';
107
+ }
108
+ const intRange = INT_RANGES[dataTypeName];
109
+ if (intRange !== undefined) {
110
+ const [low, high] = intRange;
111
+ return Number.isInteger(fill) && (fill as number) >= low && (fill as number) <= high
112
+ ? undefined
113
+ : `expected an integer in [${low}, ${high}] for data type ${JSON.stringify(dataTypeName)}`;
114
+ }
115
+ const floatDigits = FLOAT_HEX_DIGITS[dataTypeName];
116
+ if (floatDigits !== undefined) {
117
+ return isFloatFill(fill, floatDigits)
118
+ ? undefined
119
+ : floatFillMessage(dataTypeName, floatDigits);
120
+ }
121
+ const complexDigits = COMPLEX_COMPONENT_HEX_DIGITS[dataTypeName];
122
+ if (complexDigits !== undefined) {
123
+ const ok =
124
+ Array.isArray(fill) &&
125
+ fill.length === 2 &&
126
+ fill.every((part) => isFloatFill(part, complexDigits));
127
+ return ok
128
+ ? undefined
129
+ : `expected a two-element [real, imaginary] array for data type ${JSON.stringify(dataTypeName)}`;
130
+ }
131
+ return undefined; // unrecognized data type: no verdict
132
+ }
133
+
134
+ // --- codec pipelines (transpose / sharding) --------------------------------
135
+
136
+ function isPermutation(order: number[]): boolean {
137
+ const seen = new Set(order);
138
+ return seen.size === order.length && order.every((entry) => entry >= 0 && entry < order.length);
139
+ }
140
+
141
+ /**
142
+ * Walk one codec pipeline. `dims` is the array dimensionality at this point
143
+ * (undefined when unknowable); `outerChunkShape` is the shape of the chunk
144
+ * this pipeline encodes — what a sharding codec's inner chunks must divide.
145
+ */
146
+ function pipelineIssues(
147
+ pipeline: unknown[],
148
+ path: Path,
149
+ dims: number | undefined,
150
+ outerChunkShape: number[] | undefined,
151
+ ): PathedIssue[] {
152
+ const issues: PathedIssue[] = [];
153
+ pipeline.forEach((entry, index) => {
154
+ const parts = fieldParts(entry);
155
+ if (parts === undefined) return;
156
+ const { name, configuration } = parts;
157
+ if (name === "transpose") {
158
+ const order = configuration?.["order"];
159
+ if (!isIntArray(order)) return; // shape errors are the schema layer's
160
+ const orderPath = [...path, index, "configuration", "order"];
161
+ if (!isPermutation(order)) {
162
+ issues.push({
163
+ path: orderPath,
164
+ message: `expected a permutation of the integers 0..${order.length - 1}`,
165
+ kind: "invalid_value",
166
+ });
167
+ }
168
+ if (dims !== undefined && order.length !== dims) {
169
+ issues.push({
170
+ path: orderPath,
171
+ message: `expected one entry per array dimension (${dims})`,
172
+ kind: "invalid_value",
173
+ });
174
+ }
175
+ } else if (name === "sharding_indexed") {
176
+ const chunkShape = configuration?.["chunk_shape"];
177
+ if (!isIntArray(chunkShape)) return;
178
+ const chunkShapePath = [...path, index, "configuration", "chunk_shape"];
179
+ if (dims !== undefined && chunkShape.length !== dims) {
180
+ issues.push({
181
+ path: chunkShapePath,
182
+ message: `expected one length per array dimension (${dims})`,
183
+ kind: "invalid_value",
184
+ });
185
+ } else if (
186
+ outerChunkShape !== undefined &&
187
+ chunkShape.length === outerChunkShape.length &&
188
+ chunkShape.every((length) => length > 0) &&
189
+ outerChunkShape.some((outer, axis) => outer % (chunkShape[axis] as number) !== 0)
190
+ ) {
191
+ issues.push({
192
+ path: chunkShapePath,
193
+ message: `expected ${JSON.stringify(chunkShape)} to evenly divide the outer chunk shape ${JSON.stringify(outerChunkShape)}`,
194
+ kind: "invalid_value",
195
+ });
196
+ }
197
+ const inner = configuration?.["codecs"];
198
+ if (Array.isArray(inner)) {
199
+ issues.push(
200
+ ...pipelineIssues(inner, [...path, index, "configuration", "codecs"], dims, chunkShape),
201
+ );
202
+ }
203
+ // index_codecs encode the shard index, whose shape differs from the
204
+ // array's — no dimensional context applies there.
205
+ }
206
+ });
207
+ return issues;
208
+ }
209
+
210
+ /**
211
+ * Every semantic (cross-field) problem in a v3 array metadata document, as
212
+ * an error tree; an empty tree means no rule found a violation. Values that
213
+ * are not v3 array documents yield an empty tree; run the structural
214
+ * validators for structure.
215
+ */
216
+ export function validateArraySemanticsV3(value: unknown): ErrorTree {
217
+ if (!isPlainObject(value) || value["node_type"] !== "array") return treeOf([]);
218
+ const issues: PathedIssue[] = [];
219
+ const shape = isIntArray(value["shape"]) ? value["shape"] : undefined;
220
+ const dims = shape?.length;
221
+
222
+ const grid = fieldParts(value["chunk_grid"]);
223
+ let chunkShape: number[] | undefined;
224
+ if (grid?.name === "regular") {
225
+ const configured = grid.configuration?.["chunk_shape"];
226
+ if (isIntArray(configured)) {
227
+ chunkShape = configured;
228
+ if (dims !== undefined && configured.length !== dims) {
229
+ issues.push({
230
+ path: ["chunk_grid", "configuration", "chunk_shape"],
231
+ message: `expected one length per dimension of shape (${dims})`,
232
+ kind: "invalid_value",
233
+ });
234
+ chunkShape = undefined; // wrong arity: unusable as division context
235
+ }
236
+ }
237
+ }
238
+
239
+ const dataType = fieldParts(value["data_type"]);
240
+ if (dataType !== undefined && "fill_value" in value) {
241
+ const message = fillValueIssue(dataType.name, value["fill_value"]);
242
+ if (message !== undefined) {
243
+ issues.push({ path: ["fill_value"], message, kind: "invalid_value" });
244
+ }
245
+ }
246
+
247
+ const codecs = value["codecs"];
248
+ if (Array.isArray(codecs)) {
249
+ issues.push(...pipelineIssues(codecs, ["codecs"], dims, chunkShape));
250
+ }
251
+ return treeOf(issues);
252
+ }
package/src/validation.ts CHANGED
@@ -935,3 +935,36 @@ export function safeParseConsolidatedMetadataV2(
935
935
  ): ParseResult<ZarrV2ConsolidatedMetadataJSON> {
936
936
  return toResult(value, consolidatedMetadataV2Problems(value));
937
937
  }
938
+
939
+ /**
940
+ * The extension-field keys of a v3 metadata document that a reader is
941
+ * obligated to understand.
942
+ *
943
+ * Per the v3 spec an extension field is implicitly `must_understand: true`
944
+ * unless it is an object carrying the explicit member
945
+ * `"must_understand": false`, and an implementation MUST refuse to open a
946
+ * node with obligated fields it does not recognize. This reports the
947
+ * obligation only — which fields a reader actually recognizes is the
948
+ * reader's business, so these keys are advisory, not validation problems
949
+ * (the document is structurally valid). Returns `[]` for anything that is
950
+ * not shaped like a v3 array or group document. The
951
+ * reference-implementation `consolidated_metadata` convention on groups is
952
+ * treated as recognized.
953
+ */
954
+ export function mustUnderstandExtensionFieldsV3(value: unknown): string[] {
955
+ if (!isPlainObject(value)) return [];
956
+ const nodeType = value["node_type"];
957
+ let reserved: ReadonlyArray<string>;
958
+ if (nodeType === "array") {
959
+ reserved = ARRAY_METADATA_STANDARD_KEYS_V3;
960
+ } else if (nodeType === "group") {
961
+ reserved = [...GROUP_METADATA_STANDARD_KEYS_V3, ZARR_V3_CONSOLIDATED_METADATA_KEY];
962
+ } else {
963
+ return [];
964
+ }
965
+ return Object.keys(value).filter((key) => {
966
+ if (reserved.includes(key)) return false;
967
+ const field = value[key];
968
+ return !(isPlainObject(field) && field["must_understand"] === false);
969
+ });
970
+ }