@blackwell-systems/gcf 2.1.2 → 2.2.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.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/index.cjs +189 -3
  3. package/dist/cli.js +0 -0
  4. package/dist/decode_generic.js +74 -0
  5. package/dist/decode_generic.js.map +1 -1
  6. package/dist/generic.js +162 -5
  7. package/dist/generic.js.map +1 -1
  8. package/package.json +2 -2
  9. package/src/decode_generic.ts +80 -0
  10. package/src/generic.ts +157 -5
  11. package/dist/cjs/browser.d.ts +0 -9
  12. package/dist/cjs/browser.js +0 -25
  13. package/dist/cjs/browser.js.map +0 -1
  14. package/dist/cjs/cli.d.ts +0 -5
  15. package/dist/cjs/cli.js +0 -136
  16. package/dist/cjs/cli.js.map +0 -1
  17. package/dist/cjs/constants.d.ts +0 -8
  18. package/dist/cjs/constants.js +0 -46
  19. package/dist/cjs/constants.js.map +0 -1
  20. package/dist/cjs/decode.d.ts +0 -5
  21. package/dist/cjs/decode.js +0 -197
  22. package/dist/cjs/decode.js.map +0 -1
  23. package/dist/cjs/decode_generic.d.ts +0 -4
  24. package/dist/cjs/decode_generic.js +0 -678
  25. package/dist/cjs/decode_generic.js.map +0 -1
  26. package/dist/cjs/delta.d.ts +0 -15
  27. package/dist/cjs/delta.js +0 -73
  28. package/dist/cjs/delta.js.map +0 -1
  29. package/dist/cjs/encode.d.ts +0 -5
  30. package/dist/cjs/encode.js +0 -89
  31. package/dist/cjs/encode.js.map +0 -1
  32. package/dist/cjs/generic.d.ts +0 -1
  33. package/dist/cjs/generic.js +0 -332
  34. package/dist/cjs/generic.js.map +0 -1
  35. package/dist/cjs/index.d.ts +0 -11
  36. package/dist/cjs/index.js +0 -32
  37. package/dist/cjs/index.js.map +0 -1
  38. package/dist/cjs/packroot.d.ts +0 -13
  39. package/dist/cjs/packroot.js +0 -50
  40. package/dist/cjs/packroot.js.map +0 -1
  41. package/dist/cjs/scalar.d.ts +0 -26
  42. package/dist/cjs/scalar.js +0 -339
  43. package/dist/cjs/scalar.js.map +0 -1
  44. package/dist/cjs/session.d.ts +0 -30
  45. package/dist/cjs/session.js +0 -140
  46. package/dist/cjs/session.js.map +0 -1
  47. package/dist/cjs/stream.d.ts +0 -66
  48. package/dist/cjs/stream.js +0 -127
  49. package/dist/cjs/stream.js.map +0 -1
  50. package/dist/cjs/stream_generic.d.ts +0 -37
  51. package/dist/cjs/stream_generic.js +0 -87
  52. package/dist/cjs/stream_generic.js.map +0 -1
  53. package/dist/cjs/types.d.ts +0 -75
  54. package/dist/cjs/types.js +0 -3
  55. package/dist/cjs/types.js.map +0 -1
package/dist/generic.js CHANGED
@@ -162,12 +162,142 @@ function sharedArraySchema(arr, fieldName) {
162
162
  }
163
163
  return canonicalFields;
164
164
  }
165
+ function analyzeFlattenable(arr, fieldName, parentPath) {
166
+ let canonicalShape = null;
167
+ for (const item of arr) {
168
+ const obj = item;
169
+ if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined)
170
+ continue;
171
+ const v = obj[fieldName];
172
+ if (typeof v !== 'object' || Array.isArray(v))
173
+ return null;
174
+ const keys = Object.keys(v);
175
+ if (!canonicalShape) {
176
+ canonicalShape = {};
177
+ for (const k of keys) {
178
+ if (k.includes('>'))
179
+ return null;
180
+ const val = v[k];
181
+ if (val !== null && val !== undefined && typeof val === 'object' && !Array.isArray(val)) {
182
+ canonicalShape[k] = 'nested';
183
+ }
184
+ else if (Array.isArray(val)) {
185
+ return null;
186
+ }
187
+ else {
188
+ canonicalShape[k] = 'scalar';
189
+ }
190
+ }
191
+ }
192
+ else {
193
+ if (keys.length !== Object.keys(canonicalShape).length)
194
+ return null;
195
+ for (const k of keys) {
196
+ if (!(k in canonicalShape))
197
+ return null;
198
+ const val = v[k];
199
+ const expected = canonicalShape[k];
200
+ if (expected === 'scalar') {
201
+ if (val !== null && val !== undefined && typeof val === 'object')
202
+ return null;
203
+ }
204
+ else if (expected === 'nested') {
205
+ if (val !== null && val !== undefined) {
206
+ if (typeof val !== 'object' || Array.isArray(val))
207
+ return null;
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+ if (!canonicalShape)
214
+ return null;
215
+ const currentPath = parentPath ? parentPath + '>' + fieldName : fieldName;
216
+ const parentKeys = parentPath ? [...parentPath.split('>'), fieldName] : [fieldName];
217
+ const leaves = [];
218
+ for (const k of Object.keys(canonicalShape)) {
219
+ if (canonicalShape[k] === 'scalar') {
220
+ leaves.push({ path: currentPath + '>' + k, keys: [...parentKeys, k] });
221
+ }
222
+ else {
223
+ const subArr = arr.map(item => {
224
+ const obj = item;
225
+ if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined)
226
+ return {};
227
+ return obj[fieldName];
228
+ });
229
+ const subLeaves = analyzeFlattenable(subArr, k, currentPath);
230
+ if (!subLeaves || subLeaves.length === 0)
231
+ return null;
232
+ leaves.push(...subLeaves);
233
+ }
234
+ }
235
+ // Guard: reject if any row has non-null object with all-null leaves.
236
+ if (leaves.length > 0) {
237
+ for (const item of arr) {
238
+ const obj = item;
239
+ if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined)
240
+ continue;
241
+ const allNull = leaves.every(leaf => {
242
+ const val = resolveKeyChain(item, leaf.keys);
243
+ return val.exists && val.value === null;
244
+ });
245
+ if (allNull)
246
+ return null;
247
+ }
248
+ }
249
+ return leaves;
250
+ }
251
+ function resolveKeyChain(item, keys) {
252
+ if (keys.length === 0)
253
+ return { value: undefined, exists: false };
254
+ const obj = item;
255
+ if (typeof obj !== 'object' || obj === null)
256
+ return { value: undefined, exists: false };
257
+ if (!(keys[0] in obj))
258
+ return { value: undefined, exists: false };
259
+ let current = obj[keys[0]];
260
+ if (current === null || current === undefined)
261
+ return { value: current, exists: true };
262
+ for (let i = 1; i < keys.length; i++) {
263
+ if (typeof current !== 'object' || current === null)
264
+ return { value: undefined, exists: false };
265
+ const c = current;
266
+ if (!(keys[i] in c))
267
+ return { value: undefined, exists: false };
268
+ current = c[keys[i]];
269
+ }
270
+ return { value: current, exists: true };
271
+ }
272
+ // ── End flattening helpers ───────────────────────────────────────────────
165
273
  function encodeTabular(headerPrefix, arr, fields, depth) {
166
274
  const prefix = indent(depth);
167
- // Pre-compute inline schemas and shared array schemas.
275
+ // Phase 0: Analyze fields for flattening.
276
+ const flattenMap = new Map();
277
+ for (const f of fields) {
278
+ const leaves = analyzeFlattenable(arr, f, '');
279
+ if (leaves && leaves.length > 0) {
280
+ flattenMap.set(f, leaves);
281
+ }
282
+ }
283
+ const columns = [];
284
+ for (const f of fields) {
285
+ const leaves = flattenMap.get(f);
286
+ if (leaves) {
287
+ for (const leaf of leaves) {
288
+ columns.push({ headerName: formatKey(leaf.path), colType: 'flat', field: f, keys: leaf.keys });
289
+ }
290
+ }
291
+ else {
292
+ columns.push({ headerName: formatKey(f), colType: 'original', field: f, keys: [] });
293
+ }
294
+ }
295
+ // Pre-compute inline schemas and shared array schemas (skip flattened fields).
168
296
  const inlineSchemas = new Map();
169
297
  const sharedArrSchemas = new Map();
170
298
  for (const f of fields) {
299
+ if (flattenMap.has(f))
300
+ continue;
171
301
  const ifs = inlineSchemaFields(arr, f);
172
302
  if (ifs)
173
303
  inlineSchemas.set(f, ifs);
@@ -175,14 +305,42 @@ function encodeTabular(headerPrefix, arr, fields, depth) {
175
305
  if (sas)
176
306
  sharedArrSchemas.set(f, sas);
177
307
  }
178
- const fmtFields = fields.map(f => formatKey(f));
179
- let out = `${headerPrefix}[${arr.length}]{${fmtFields.join(',')}}\n`;
308
+ const headerFields = columns.map(c => c.headerName);
309
+ let out = `${headerPrefix}[${arr.length}]{${headerFields.join(',')}}\n`;
180
310
  for (let i = 0; i < arr.length; i++) {
181
311
  const obj = arr[i];
182
312
  const cells = [];
183
313
  const attachments = [];
184
314
  let rowHasAttachment = false;
185
- for (const f of fields) {
315
+ for (const col of columns) {
316
+ if (col.colType === 'flat') {
317
+ // Resolve value via key chain.
318
+ if (!(col.keys[0] in obj)) {
319
+ cells.push('~');
320
+ }
321
+ else {
322
+ // Check if top-level field is null.
323
+ const topVal = obj[col.keys[0]];
324
+ if (topVal === null || topVal === undefined) {
325
+ cells.push(topVal === null ? '-' : '~');
326
+ }
327
+ else {
328
+ const resolved = resolveKeyChain(obj, col.keys);
329
+ if (!resolved.exists) {
330
+ cells.push('~');
331
+ }
332
+ else if (resolved.value === null || resolved.value === undefined) {
333
+ cells.push('-');
334
+ }
335
+ else {
336
+ cells.push(formatScalar(resolved.value, 0x7c));
337
+ }
338
+ }
339
+ }
340
+ continue;
341
+ }
342
+ // Original (non-flattened) field.
343
+ const f = col.field;
186
344
  if (!(f in obj)) {
187
345
  cells.push('~');
188
346
  continue;
@@ -195,7 +353,6 @@ function encodeTabular(headerPrefix, arr, fields, depth) {
195
353
  if (typeof v === 'object') {
196
354
  const ifs = inlineSchemas.get(f);
197
355
  if (ifs && !Array.isArray(v)) {
198
- // Inline schema: first row declares, subsequent use bare ^.
199
356
  if (i === 0) {
200
357
  const fmtIF = ifs.map(k => formatKey(k));
201
358
  cells.push(`^{${fmtIF.join(',')}}`);
@@ -1 +1 @@
1
- {"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAElE,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,IAAI,GAAG,GAAG,uBAAuB,CAAC;IAClC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,CAA4B,EAAE,CAAC,CAAC,CAAC;IAChF,OAAO,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B,EAAE,KAAa;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACvD,GAAG,IAAI,GAAG,MAAM,MAAM,EAAE,IAAI,CAAC;YAC7B,GAAG,IAAI,YAAY,CAAC,KAAgC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,GAAG,MAAM,GAAG,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,GAAc;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IACxC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,OAAO,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAAc,EAAE,KAAa;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,MAAM,MAAM,IAAI,QAAQ,CAAC;IACzD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,GAAG,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAChE,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,aAAa,CAAC,GAAG,MAAM,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7E,OAAO,cAAc,CAAC,GAAG,MAAM,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,GAAc;IACnC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,yGAAyG;AACzG,SAAS,kBAAkB,CAAC,GAAc,EAAE,SAAiB;IAC3D,iCAAiC;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAwC,CAAC;IAC5D,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAExH,IAAI,aAAa,GAAoB,IAAI,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,SAAS;QAC7F,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC,CAAC;QACvD,8BAA8B;QAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAI,CAA6B,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,8HAA8H;AAC9H,SAAS,iBAAiB,CAAC,GAAc,EAAE,SAAiB;IAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAwC,CAAC;IAC5D,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,IAAI,eAAe,GAAoB,IAAI,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,SAAS;QAC7F,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,8BAA8B;QAC9B,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,OAAkC,CAAC,EAAE,CAAC;gBACpE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;YAChF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAe,GAAG,MAAM,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AASD,SAAS,kBAAkB,CAAC,GAAc,EAAE,SAAiB,EAAE,UAAkB;IAC/E,IAAI,cAAc,GAA+C,IAAI,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,SAAS;QAC7F,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAE3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC,CAAC;QAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACjC,MAAM,GAAG,GAAI,CAA6B,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxF,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;gBAC/B,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACpE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACxC,MAAM,GAAG,GAAI,CAA6B,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ;wBAAE,OAAO,IAAI,CAAC;gBAChF,CAAC;qBAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;4BAAE,OAAO,IAAI,CAAC;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEpF,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5C,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,MAAM,GAAG,GAAG,IAA+B,CAAC;gBAC5C,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAC;gBAC9F,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAmB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAA+B,CAAC;YAC5C,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS;gBAAE,SAAS;YAC7F,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAClC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7C,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,IAAI,OAAO;gBAAE,OAAO,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAa,EAAE,IAAc;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClE,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACxF,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClE,IAAI,OAAO,GAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAChG,MAAM,CAAC,GAAG,OAAkC,CAAC;QAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAChE,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,4EAA4E;AAE5E,SAAS,aAAa,CAAC,YAAoB,EAAE,GAAc,EAAE,MAAgB,EAAE,KAAa;IAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,0CAA0C;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAKD,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAChC,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,GAAG;YAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG;YAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAExE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAA4B,CAAC;QAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAiF,EAAE,CAAC;QACrG,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC3B,+BAA+B;gBAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,oCAAoC;oBACpC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC5C,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;wBAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;4BACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAClB,CAAC;6BAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;4BACnE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAClB,CAAC;6BAAM,CAAC;4BACN,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,SAAS;YACX,CAAC;YAED,kCAAkC;YAClC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACjE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACZ,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtC,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChB,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzD,CAAC;gBACD,gBAAgB,GAAG,IAAI,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,gBAAgB,EAAE,CAAC;YACrB,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACnC,2DAA2D;gBAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACtC,MAAM,GAAG,GAAI,GAAG,CAAC,KAAiC,CAAC,GAAG,CAAC,CAAC;oBACxD,IAAI,GAAG,KAAK,SAAS;wBAAE,OAAO,GAAG,CAAC;oBAClC,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBACH,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACxC,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,yDAAyD;gBACzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjB,GAAG,IAAI,2BAA2B,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,KAAkB,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzF,CAAC;qBAAM,CAAC;oBACN,GAAG,IAAI,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,KAAkB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,IAAI,GAAG,MAAM,IAAI,EAAE,OAAO,CAAC;gBAC9B,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,KAAgC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,EAAU,EAAE,GAAc,EAAE,KAAa;IACzF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,SAAS,IAAI,EAAE,QAAQ,CAAC;IACxD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,GAAG,SAAS,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACnE,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,aAAa,CAAC,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5E,OAAO,cAAc,CAAC,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAiB,EAAE,EAAU,EAAE,GAAc,EAAE,KAAa,EAAE,YAAsB;IACvH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,SAAS,IAAI,EAAE,QAAQ,CAAC;IACxD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,GAAG,SAAS,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACnE,CAAC;IACD,qCAAqC;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,oCAAoC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,GAAG,GAAG,GAAG,SAAS,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAA+B,CAAC;YAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACjC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;gBAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS;oBAAE,OAAO,GAAG,CAAC;gBACxD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACzC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,kDAAkD;IAClD,OAAO,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAC,YAAoB,EAAE,GAAc,EAAE,KAAa;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,GAAG,GAAG,GAAG,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,GAAG,IAAI,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACrD,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC7B,GAAG,IAAI,YAAY,CAAC,IAA+B,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc,EAAE,GAAW,EAAE,GAAc,EAAE,KAAa;IACzF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,GAAG,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,aAAa,CAAC,GAAG,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9E,OAAO,cAAc,CAAC,GAAG,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,GAAc;IACnC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC7D,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@blackwell-systems/gcf",
3
- "version": "2.1.2",
4
- "description": "Drop-in JSON replacement for AI pipelines. 79% fewer tokens. 90.7% comprehension across 10 models. Zero dependencies.",
3
+ "version": "2.2.0",
4
+ "description": "The AI-native wire format for structured data. 50-92% fewer tokens than JSON. 100% comprehension on every frontier model. Zero dependencies.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -258,11 +258,68 @@ function findClosingBrace(s: string): number {
258
258
  return -1;
259
259
  }
260
260
 
261
+ function unflattenPaths(
262
+ pathColumns: Map<string, string[]>,
263
+ flatValues: Map<string, any>,
264
+ flatAbsent: Set<string>,
265
+ ): Record<string, any> {
266
+ // Group by top-level parent.
267
+ const groups = new Map<string, string[]>();
268
+ const groupOrder: string[] = [];
269
+ for (const [fieldName, paths] of pathColumns) {
270
+ if (paths.length === 0) continue;
271
+ const top = paths[0];
272
+ if (!groups.has(top)) {
273
+ groups.set(top, []);
274
+ groupOrder.push(top);
275
+ }
276
+ groups.get(top)!.push(fieldName);
277
+ }
278
+
279
+ const result: Record<string, any> = {};
280
+
281
+ for (const top of groupOrder) {
282
+ const fieldNames = groups.get(top)!;
283
+ const allAbsent = fieldNames.every(f => flatAbsent.has(f));
284
+ const allNull = fieldNames.every(f => {
285
+ if (flatAbsent.has(f)) return false;
286
+ const val = flatValues.get(f);
287
+ return val === null;
288
+ });
289
+
290
+ if (allAbsent) continue;
291
+ if (allNull) { result[top] = null; continue; }
292
+
293
+ for (const fieldName of fieldNames) {
294
+ if (flatAbsent.has(fieldName)) continue;
295
+ const paths = pathColumns.get(fieldName)!;
296
+ const val = flatValues.has(fieldName) ? flatValues.get(fieldName) : null;
297
+
298
+ let current = result;
299
+ for (let k = 0; k < paths.length - 1; k++) {
300
+ if (!(paths[k] in current)) current[paths[k]] = {};
301
+ current = current[paths[k]];
302
+ }
303
+ current[paths[paths.length - 1]] = val;
304
+ }
305
+ }
306
+
307
+ return result;
308
+ }
309
+
261
310
  function parseTabularBody(lines: string[], start: number, depth: number, fields: string[], expectedCount: number): [any[], number] {
262
311
  const ind = ' '.repeat(depth);
263
312
  const rows: any[] = [];
264
313
  let i = start;
265
314
 
315
+ // Detect path columns: fields containing ">".
316
+ const pathColumnMap = new Map<string, string[]>();
317
+ for (const f of fields) {
318
+ if (f.includes('>')) {
319
+ pathColumnMap.set(f, f.split('>'));
320
+ }
321
+ }
322
+
266
323
  // Track inline schemas and shared array schemas.
267
324
  const inlineSchemas = new Map<string, string[]>();
268
325
  const sharedArraySchemas = new Map<string, string[]>();
@@ -303,9 +360,24 @@ function parseTabularBody(lines: string[], start: number, depth: number, fields:
303
360
  const inlineAttOrder: string[] = [];
304
361
  const missingFields = new Set<string>();
305
362
 
363
+ // Collect path column values for unflattening.
364
+ const flatValues = new Map<string, any>();
365
+ const flatAbsent = new Set<string>();
366
+
306
367
  for (let j = 0; j < fields.length; j++) {
307
368
  const cellVal = vals[j];
308
369
 
370
+ // Path columns: store values for later unflattening.
371
+ if (pathColumnMap.has(fields[j])) {
372
+ const parsed = parseScalar(cellVal, true);
373
+ if (parsed === MISSING) {
374
+ flatAbsent.add(fields[j]);
375
+ } else {
376
+ flatValues.set(fields[j], parsed);
377
+ }
378
+ continue;
379
+ }
380
+
309
381
  // Check for ^{fields} inline schema declaration.
310
382
  if (cellVal.startsWith('^{') && cellVal.endsWith('}')) {
311
383
  const schemaStr = cellVal.slice(1);
@@ -467,6 +539,14 @@ function parseTabularBody(lines: string[], start: number, depth: number, fields:
467
539
  }
468
540
  }
469
541
 
542
+ // Unflatten path columns into nested objects.
543
+ if (pathColumnMap.size > 0) {
544
+ const nested = unflattenPaths(pathColumnMap, flatValues, flatAbsent);
545
+ for (const [k, v] of Object.entries(nested)) {
546
+ row[k] = v;
547
+ }
548
+ }
549
+
470
550
  rows.push(row);
471
551
  if (expectedCount >= 0 && rows.length >= expectedCount) break;
472
552
  }
package/src/generic.ts CHANGED
@@ -141,21 +141,149 @@ function sharedArraySchema(arr: unknown[], fieldName: string): string[] | null {
141
141
  return canonicalFields;
142
142
  }
143
143
 
144
+ // ── Nested object flattening (v3.2) ──────────────────────────────────────
145
+
146
+ interface FlatLeaf {
147
+ path: string; // ">" separated path (e.g. "customer>name")
148
+ keys: string[]; // key chain to traverse from row object
149
+ }
150
+
151
+ function analyzeFlattenable(arr: unknown[], fieldName: string, parentPath: string): FlatLeaf[] | null {
152
+ let canonicalShape: Record<string, 'scalar' | 'nested'> | null = null;
153
+
154
+ for (const item of arr) {
155
+ const obj = item as Record<string, unknown>;
156
+ if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined) continue;
157
+ const v = obj[fieldName];
158
+ if (typeof v !== 'object' || Array.isArray(v)) return null;
159
+
160
+ const keys = Object.keys(v as Record<string, unknown>);
161
+
162
+ if (!canonicalShape) {
163
+ canonicalShape = {};
164
+ for (const k of keys) {
165
+ if (k.includes('>')) return null;
166
+ const val = (v as Record<string, unknown>)[k];
167
+ if (val !== null && val !== undefined && typeof val === 'object' && !Array.isArray(val)) {
168
+ canonicalShape[k] = 'nested';
169
+ } else if (Array.isArray(val)) {
170
+ return null;
171
+ } else {
172
+ canonicalShape[k] = 'scalar';
173
+ }
174
+ }
175
+ } else {
176
+ if (keys.length !== Object.keys(canonicalShape).length) return null;
177
+ for (const k of keys) {
178
+ if (!(k in canonicalShape)) return null;
179
+ const val = (v as Record<string, unknown>)[k];
180
+ const expected = canonicalShape[k];
181
+ if (expected === 'scalar') {
182
+ if (val !== null && val !== undefined && typeof val === 'object') return null;
183
+ } else if (expected === 'nested') {
184
+ if (val !== null && val !== undefined) {
185
+ if (typeof val !== 'object' || Array.isArray(val)) return null;
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+
192
+ if (!canonicalShape) return null;
193
+
194
+ const currentPath = parentPath ? parentPath + '>' + fieldName : fieldName;
195
+ const parentKeys = parentPath ? [...parentPath.split('>'), fieldName] : [fieldName];
196
+
197
+ const leaves: FlatLeaf[] = [];
198
+ for (const k of Object.keys(canonicalShape)) {
199
+ if (canonicalShape[k] === 'scalar') {
200
+ leaves.push({ path: currentPath + '>' + k, keys: [...parentKeys, k] });
201
+ } else {
202
+ const subArr = arr.map(item => {
203
+ const obj = item as Record<string, unknown>;
204
+ if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined) return {};
205
+ return obj[fieldName];
206
+ });
207
+ const subLeaves = analyzeFlattenable(subArr as unknown[], k, currentPath);
208
+ if (!subLeaves || subLeaves.length === 0) return null;
209
+ leaves.push(...subLeaves);
210
+ }
211
+ }
212
+
213
+ // Guard: reject if any row has non-null object with all-null leaves.
214
+ if (leaves.length > 0) {
215
+ for (const item of arr) {
216
+ const obj = item as Record<string, unknown>;
217
+ if (!(fieldName in obj) || obj[fieldName] === null || obj[fieldName] === undefined) continue;
218
+ const allNull = leaves.every(leaf => {
219
+ const val = resolveKeyChain(item, leaf.keys);
220
+ return val.exists && val.value === null;
221
+ });
222
+ if (allNull) return null;
223
+ }
224
+ }
225
+
226
+ return leaves;
227
+ }
228
+
229
+ function resolveKeyChain(item: unknown, keys: string[]): { value: unknown; exists: boolean } {
230
+ if (keys.length === 0) return { value: undefined, exists: false };
231
+ const obj = item as Record<string, unknown>;
232
+ if (typeof obj !== 'object' || obj === null) return { value: undefined, exists: false };
233
+ if (!(keys[0] in obj)) return { value: undefined, exists: false };
234
+ let current: unknown = obj[keys[0]];
235
+ if (current === null || current === undefined) return { value: current, exists: true };
236
+ for (let i = 1; i < keys.length; i++) {
237
+ if (typeof current !== 'object' || current === null) return { value: undefined, exists: false };
238
+ const c = current as Record<string, unknown>;
239
+ if (!(keys[i] in c)) return { value: undefined, exists: false };
240
+ current = c[keys[i]];
241
+ }
242
+ return { value: current, exists: true };
243
+ }
244
+
245
+ // ── End flattening helpers ───────────────────────────────────────────────
246
+
144
247
  function encodeTabular(headerPrefix: string, arr: unknown[], fields: string[], depth: number): string {
145
248
  const prefix = indent(depth);
146
249
 
147
- // Pre-compute inline schemas and shared array schemas.
250
+ // Phase 0: Analyze fields for flattening.
251
+ const flattenMap = new Map<string, FlatLeaf[]>();
252
+ for (const f of fields) {
253
+ const leaves = analyzeFlattenable(arr, f, '');
254
+ if (leaves && leaves.length > 0) {
255
+ flattenMap.set(f, leaves);
256
+ }
257
+ }
258
+
259
+ // Build expanded column list.
260
+ type ColType = 'flat' | 'original';
261
+ interface FlatColumn { headerName: string; colType: ColType; field: string; keys: string[]; }
262
+ const columns: FlatColumn[] = [];
263
+ for (const f of fields) {
264
+ const leaves = flattenMap.get(f);
265
+ if (leaves) {
266
+ for (const leaf of leaves) {
267
+ columns.push({ headerName: formatKey(leaf.path), colType: 'flat', field: f, keys: leaf.keys });
268
+ }
269
+ } else {
270
+ columns.push({ headerName: formatKey(f), colType: 'original', field: f, keys: [] });
271
+ }
272
+ }
273
+
274
+ // Pre-compute inline schemas and shared array schemas (skip flattened fields).
148
275
  const inlineSchemas = new Map<string, string[]>();
149
276
  const sharedArrSchemas = new Map<string, string[]>();
150
277
  for (const f of fields) {
278
+ if (flattenMap.has(f)) continue;
151
279
  const ifs = inlineSchemaFields(arr, f);
152
280
  if (ifs) inlineSchemas.set(f, ifs);
153
281
  const sas = sharedArraySchema(arr, f);
154
282
  if (sas) sharedArrSchemas.set(f, sas);
155
283
  }
156
284
 
157
- const fmtFields = fields.map(f => formatKey(f));
158
- let out = `${headerPrefix}[${arr.length}]{${fmtFields.join(',')}}\n`;
285
+ const headerFields = columns.map(c => c.headerName);
286
+ let out = `${headerPrefix}[${arr.length}]{${headerFields.join(',')}}\n`;
159
287
 
160
288
  for (let i = 0; i < arr.length; i++) {
161
289
  const obj = arr[i] as Record<string, unknown>;
@@ -163,14 +291,38 @@ function encodeTabular(headerPrefix: string, arr: unknown[], fields: string[], d
163
291
  const attachments: { name: string; value: unknown; inline: boolean; inlineFields?: string[] }[] = [];
164
292
  let rowHasAttachment = false;
165
293
 
166
- for (const f of fields) {
294
+ for (const col of columns) {
295
+ if (col.colType === 'flat') {
296
+ // Resolve value via key chain.
297
+ if (!(col.keys[0] in obj)) {
298
+ cells.push('~');
299
+ } else {
300
+ // Check if top-level field is null.
301
+ const topVal = obj[col.keys[0]];
302
+ if (topVal === null || topVal === undefined) {
303
+ cells.push(topVal === null ? '-' : '~');
304
+ } else {
305
+ const resolved = resolveKeyChain(obj, col.keys);
306
+ if (!resolved.exists) {
307
+ cells.push('~');
308
+ } else if (resolved.value === null || resolved.value === undefined) {
309
+ cells.push('-');
310
+ } else {
311
+ cells.push(formatScalar(resolved.value, 0x7c));
312
+ }
313
+ }
314
+ }
315
+ continue;
316
+ }
317
+
318
+ // Original (non-flattened) field.
319
+ const f = col.field;
167
320
  if (!(f in obj)) { cells.push('~'); continue; }
168
321
  const v = obj[f];
169
322
  if (v === null || v === undefined) { cells.push('-'); continue; }
170
323
  if (typeof v === 'object') {
171
324
  const ifs = inlineSchemas.get(f);
172
325
  if (ifs && !Array.isArray(v)) {
173
- // Inline schema: first row declares, subsequent use bare ^.
174
326
  if (i === 0) {
175
327
  const fmtIF = ifs.map(k => formatKey(k));
176
328
  cells.push(`^{${fmtIF.join(',')}}`);
@@ -1,9 +0,0 @@
1
- export type { Symbol, Edge, Payload, DeltaPayload, Components } from './types.js';
2
- export { KIND_ABBREV, KIND_EXPAND } from './constants.js';
3
- export { encode } from './encode.js';
4
- export { decode } from './decode.js';
5
- export { encodeGeneric } from './generic.js';
6
- export { decodeGeneric } from './decode_generic.js';
7
- export { formatScalar, formatKey, parseScalar, needsQuote, quoteString } from './scalar.js';
8
- export { StreamEncoder, type StreamWriter, type StreamOptions } from './stream.js';
9
- export { GenericStreamEncoder } from './stream_generic.js';
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GenericStreamEncoder = exports.StreamEncoder = exports.quoteString = exports.needsQuote = exports.parseScalar = exports.formatKey = exports.formatScalar = exports.decodeGeneric = exports.encodeGeneric = exports.decode = exports.encode = exports.KIND_EXPAND = exports.KIND_ABBREV = void 0;
4
- var constants_js_1 = require("./constants.js");
5
- Object.defineProperty(exports, "KIND_ABBREV", { enumerable: true, get: function () { return constants_js_1.KIND_ABBREV; } });
6
- Object.defineProperty(exports, "KIND_EXPAND", { enumerable: true, get: function () { return constants_js_1.KIND_EXPAND; } });
7
- var encode_js_1 = require("./encode.js");
8
- Object.defineProperty(exports, "encode", { enumerable: true, get: function () { return encode_js_1.encode; } });
9
- var decode_js_1 = require("./decode.js");
10
- Object.defineProperty(exports, "decode", { enumerable: true, get: function () { return decode_js_1.decode; } });
11
- var generic_js_1 = require("./generic.js");
12
- Object.defineProperty(exports, "encodeGeneric", { enumerable: true, get: function () { return generic_js_1.encodeGeneric; } });
13
- var decode_generic_js_1 = require("./decode_generic.js");
14
- Object.defineProperty(exports, "decodeGeneric", { enumerable: true, get: function () { return decode_generic_js_1.decodeGeneric; } });
15
- var scalar_js_1 = require("./scalar.js");
16
- Object.defineProperty(exports, "formatScalar", { enumerable: true, get: function () { return scalar_js_1.formatScalar; } });
17
- Object.defineProperty(exports, "formatKey", { enumerable: true, get: function () { return scalar_js_1.formatKey; } });
18
- Object.defineProperty(exports, "parseScalar", { enumerable: true, get: function () { return scalar_js_1.parseScalar; } });
19
- Object.defineProperty(exports, "needsQuote", { enumerable: true, get: function () { return scalar_js_1.needsQuote; } });
20
- Object.defineProperty(exports, "quoteString", { enumerable: true, get: function () { return scalar_js_1.quoteString; } });
21
- var stream_js_1 = require("./stream.js");
22
- Object.defineProperty(exports, "StreamEncoder", { enumerable: true, get: function () { return stream_js_1.StreamEncoder; } });
23
- var stream_generic_js_1 = require("./stream_generic.js");
24
- Object.defineProperty(exports, "GenericStreamEncoder", { enumerable: true, get: function () { return stream_generic_js_1.GenericStreamEncoder; } });
25
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":";;;AAEA,+CAA0D;AAAjD,2GAAA,WAAW,OAAA;AAAE,2GAAA,WAAW,OAAA;AACjC,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AACf,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AACf,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AACtB,yCAA4F;AAAnF,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,wGAAA,WAAW,OAAA;AACtE,yCAAmF;AAA1E,0GAAA,aAAa,OAAA;AACtB,yDAA2D;AAAlD,yHAAA,oBAAoB,OAAA"}
package/dist/cjs/cli.d.ts DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * GCF command-line interface: encode, decode, stats.
4
- */
5
- export {};