@blockcast/fec-worker 0.1.0-main.ffdace838275 → 0.3.0-main.0bde85f7082f
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 +8 -2
- package/dist/block-order.d.ts +38 -0
- package/dist/block-order.d.ts.map +1 -0
- package/dist/block-order.js +78 -0
- package/dist/block-order.js.map +1 -0
- package/dist/fec-worker-client.d.ts +4 -2
- package/dist/fec-worker-client.d.ts.map +1 -1
- package/dist/fec-worker-client.js +4 -2
- package/dist/fec-worker-client.js.map +1 -1
- package/dist/fec-worker-types.d.ts +106 -17
- package/dist/fec-worker-types.d.ts.map +1 -1
- package/dist/fec-worker.js +330 -54
- package/dist/fec-worker.js.map +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/shred-fec-worker.js +23 -2
- package/dist/shred-fec-worker.js.map +2 -2
- package/dist/shred-worker-types.d.ts +16 -1
- package/dist/shred-worker-types.d.ts.map +1 -1
- package/dist/shred-worker-types.js +16 -1
- package/dist/shred-worker-types.js.map +1 -1
- package/package.json +2 -2
- package/src/block-order.ts +93 -0
- package/src/fec-worker-client.ts +4 -2
- package/src/fec-worker-types.ts +106 -16
- package/src/fec-worker.ts +504 -82
- package/src/index.ts +1 -0
- package/src/shred-fec-worker.ts +34 -3
- package/src/shred-worker-types.ts +16 -1
package/README.md
CHANGED
|
@@ -38,7 +38,8 @@ const config: FecTrackConfig = {
|
|
|
38
38
|
resolution: { w: 1920, h: 1080 },
|
|
39
39
|
framerate: 30,
|
|
40
40
|
algorithm: "raptor",
|
|
41
|
-
k:
|
|
41
|
+
blockProfile: "k-padded-v1", // catalog fec.blockProfile: required, never defaulted
|
|
42
|
+
k: 32, // under "iso-ssbg1-v1", the maximum SSB_length
|
|
42
43
|
repairCount: 8,
|
|
43
44
|
symbolSize: 1312,
|
|
44
45
|
interleaveDepth: 30,
|
|
@@ -143,7 +144,8 @@ new FecWorkerClient(url)
|
|
|
143
144
|
│ worker spawned with { type: "module" }
|
|
144
145
|
▼
|
|
145
146
|
client.configure(config, wasmModule [, altaPublicKey, altaWasmModule])
|
|
146
|
-
│ worker initSyncs WASM, instantiates MmtFecDecoder(interleaveDepth),
|
|
147
|
+
│ worker initSyncs WASM, instantiates MmtFecDecoder(interleaveDepth, blockProfile),
|
|
148
|
+
│ refuses a decoder whose get_block_profile() differs,
|
|
147
149
|
│ immediately configures exact catalog K/T (no decoder defaults),
|
|
148
150
|
│ derives pendingVerifyCap = ceil(D × 1.5) and TTL = ceil(K × interleaveMs × 1.5)
|
|
149
151
|
│ from catalog values, throws if any of K / D / interleaveMs ≤ 0,
|
|
@@ -187,9 +189,13 @@ The `snapshot` event delivers a `FecTrackStats` every 200 ms (catalog-derived; n
|
|
|
187
189
|
| `recoveryRate` | `recovered / (recovered + failed)`, 0–100 |
|
|
188
190
|
| `avgRecoveryMs`, `maxRecoveryMs` | Rolling decode latency (capped at 1000 samples) |
|
|
189
191
|
| `liveSbn` | Highest source-block number observed |
|
|
192
|
+
| `repairSymbolSizeMismatch` | Repair symbols rejected before WASM because their byte length did not match `T` |
|
|
193
|
+
| `sourceDroppedRetired` / `sourceDroppedTerminal` / `sourceDroppedDuplicate` | Source symbols dropped before WASM, by **first matching** cause (see below) |
|
|
190
194
|
| `blocks` | Up to `max(D × 3, 24)` recent `FecBlockSnapshot`s for live visualization |
|
|
191
195
|
| `interleaveWindowBlocks` | `D` from config |
|
|
192
196
|
|
|
197
|
+
The three `sourceDropped*` counters split by cause for the same reason the ALTA four-way split exists — so a dashboard can tell the failure modes apart. They are tested in a fixed order, each returning early — `Retired` → `Terminal` → `Duplicate` — so a symbol counts once, under the **first** cause that matches: a symbol that is both past retention and a repeat counts only as `Retired`, and `Terminal` absorbs every post-settle duplicate. A block that settles at K-1 source symbols (BLO-35597 defect 2) is explained by a late symbol past retention (`Retired`), a symbol for a block that had already settled — complete, recovered **or failed** (`Terminal`), or a repeated `(SBN, ESI)` (`Duplicate`). `Retired` and `Terminal` narrow the cause; they do not attribute it. `Duplicate` does: it cannot fire once a block settles — the `Terminal` check returns first, and `markBlockTerminal` retires the block's accepted-ESI set anyway — so a non-zero `Duplicate` is positive evidence that a repeated `(SBN, ESI)` reached the worker while the block was **still collecting** — usually a duplicate packet on the wire, sometimes an SBN/ESI derivation collision. It attributes the **timing**, not the origin. A symbol lost in transit never reaches the worker and increments nothing, so **all three reading zero is not evidence of a publisher defect** — wire loss produces an identical shape. Separate those with `FecBlockSnapshot.ssbLength`: below `k` is a genuinely short authored block, equal to `k` with fewer accepted is loss-or-late, undefined (no repair symbol yet) leaves both open. All three are cumulative across decoder epochs, so they stay comparable against the `sourceSymbols` denominator; only a reset zeroes them.
|
|
198
|
+
|
|
193
199
|
When ALTA is enabled, the snapshot also carries the four-state verification accounting — `altaVerified` (crypto passed), `altaFailed` (tamper-confirmed), `altaPending` (unverifiable, e.g. missing trailer / late-joiner anchor gap), `altaError` (verifier threw — infrastructure flake, not tamper) — plus `altaInitFailed` (true if the ALTA WASM didn't initialize), `altaPendingEvictedCap` / `altaPendingEvictedTtl` (deferred-queue eviction reasons), and a bounded `altaFailedDetails[]` ring with the last ≤16 tamper events. The four-way split exists so ops alerting can distinguish a network problem (`altaPending` rising) from an attack (`altaFailed` rising) from a runtime bug (`altaError` rising).
|
|
194
200
|
|
|
195
201
|
`FecTrackStats` is also the shape consumed downstream by `@blockcast/mmt-container`'s `CmcdProducer` and the diagnostics `fec-panel` — keep it stable when you extend it.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order of K-stride FEC blocks on the 32-bit SS_ID (ISO/IEC 23008-1:2023
|
|
3
|
+
* C.5.2; RFC 1982 serial arithmetic, SERIAL_BITS = 32; BLO-35597 iso:5).
|
|
4
|
+
*
|
|
5
|
+
* Block `sbn` starts at SS_ID `sbn * K mod 2^32`, and blocks are ordered by
|
|
6
|
+
* serial comparison of their starts. That is identical to comparing SBNs
|
|
7
|
+
* with < for any two blocks less than 2^31 SS_IDs apart, so only the order
|
|
8
|
+
* across the SS_ID wrap changes.
|
|
9
|
+
*
|
|
10
|
+
* The canonical helpers are @blockcast/mmt-base `kStrideBlockPrecedes` /
|
|
11
|
+
* `kStrideBlocksBehind`. This worker bundle does not depend on mmt-base, so
|
|
12
|
+
* it carries these two, and block-order.test.ts pins them to the same wrap
|
|
13
|
+
* vectors.
|
|
14
|
+
*/
|
|
15
|
+
/** Whether block `a` precedes block `b`. */
|
|
16
|
+
export declare function blockPrecedes(a: number, b: number, k: number): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* How many blocks `a` lies behind `b`: 0 unless `a` precedes `b`. Across the
|
|
19
|
+
* wrap the short pre-wrap block (2^32 mod K symbols) counts as one block.
|
|
20
|
+
*/
|
|
21
|
+
export declare function blocksBehind(a: number, b: number, k: number): number;
|
|
22
|
+
/** Forward RFC 1982 distance from `from` to `to` on the 32-bit SS_ID, in 0..2^32-1. */
|
|
23
|
+
export declare function serialDistance(from: number, to: number): number;
|
|
24
|
+
/** Whether `a` precedes `b` under RFC 1982 serial comparison (SERIAL_BITS = 32). */
|
|
25
|
+
export declare function serialPrecedes(a: number, b: number): boolean;
|
|
26
|
+
/** Whether `ssId` is one of the `ssbLength` consecutive SS_IDs starting at `ssStart`, mod 2^32. */
|
|
27
|
+
export declare function isoBlockContains(ssStart: number, ssbLength: number, ssId: number): boolean;
|
|
28
|
+
/** Whether two SS_ID ranges `[start, start + length)` share any SS_ID, mod 2^32. */
|
|
29
|
+
export declare function isoBlocksOverlap(aStart: number, aLength: number, bStart: number, bLength: number): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* How many blocks SS_ID `a` lies behind SS_ID `b` (0 unless `a` precedes `b`):
|
|
32
|
+
* a lower bound, because an iso-ssbg1-v1 block holds at most `kMax` source
|
|
33
|
+
* symbols, so `n * kMax` SS_IDs always span at least `n` blocks. This is the
|
|
34
|
+
* one interleave-horizon metric every ISO receiver layer shares (decoder
|
|
35
|
+
* retention, worker retirement, ordered-relay settlement).
|
|
36
|
+
*/
|
|
37
|
+
export declare function isoBlocksBehind(a: number, b: number, kMax: number): number;
|
|
38
|
+
//# sourceMappingURL=block-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-order.d.ts","sourceRoot":"","sources":["../src/block-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgBH,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpE;AAaD,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1F;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACb,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK1E"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order of K-stride FEC blocks on the 32-bit SS_ID (ISO/IEC 23008-1:2023
|
|
3
|
+
* C.5.2; RFC 1982 serial arithmetic, SERIAL_BITS = 32; BLO-35597 iso:5).
|
|
4
|
+
*
|
|
5
|
+
* Block `sbn` starts at SS_ID `sbn * K mod 2^32`, and blocks are ordered by
|
|
6
|
+
* serial comparison of their starts. That is identical to comparing SBNs
|
|
7
|
+
* with < for any two blocks less than 2^31 SS_IDs apart, so only the order
|
|
8
|
+
* across the SS_ID wrap changes.
|
|
9
|
+
*
|
|
10
|
+
* The canonical helpers are @blockcast/mmt-base `kStrideBlockPrecedes` /
|
|
11
|
+
* `kStrideBlocksBehind`. This worker bundle does not depend on mmt-base, so
|
|
12
|
+
* it carries these two, and block-order.test.ts pins them to the same wrap
|
|
13
|
+
* vectors.
|
|
14
|
+
*/
|
|
15
|
+
const SPAN = 0x1_0000_0000;
|
|
16
|
+
const HALF = 0x8000_0000;
|
|
17
|
+
function blockStart(sbn, k) {
|
|
18
|
+
// sbn < 2^32 and k <= 56 403 keep the product below 2^48: exact.
|
|
19
|
+
return (sbn * k) % SPAN;
|
|
20
|
+
}
|
|
21
|
+
/** Forward SS_ID distance from block `a`'s start to block `b`'s, or null when `a` does not precede `b`. */
|
|
22
|
+
function precedingDistance(a, b, k) {
|
|
23
|
+
const distance = (blockStart(b, k) - blockStart(a, k) + SPAN) % SPAN;
|
|
24
|
+
return distance !== 0 && distance < HALF ? distance : null;
|
|
25
|
+
}
|
|
26
|
+
/** Whether block `a` precedes block `b`. */
|
|
27
|
+
export function blockPrecedes(a, b, k) {
|
|
28
|
+
return precedingDistance(a, b, k) !== null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* How many blocks `a` lies behind `b`: 0 unless `a` precedes `b`. Across the
|
|
32
|
+
* wrap the short pre-wrap block (2^32 mod K symbols) counts as one block.
|
|
33
|
+
*/
|
|
34
|
+
export function blocksBehind(a, b, k) {
|
|
35
|
+
const distance = precedingDistance(a, b, k);
|
|
36
|
+
return distance === null ? 0 : Math.ceil(distance / k);
|
|
37
|
+
}
|
|
38
|
+
// --- iso-ssbg1-v1 (ISO/IEC 23008-1 C.3.3 ssbg_mode1; C.5.2/C.5.3) ---------
|
|
39
|
+
//
|
|
40
|
+
// Under the ISO profile SS_ID increments by one per FEC source packet and
|
|
41
|
+
// wraps at 2^32, and a block is the SSB_length consecutive SS_IDs
|
|
42
|
+
// `[SS_Start, SS_Start + SSB_length)`. Blocks are keyed and ordered by their
|
|
43
|
+
// SS_Start, never by an SBN derived from K: the catalog K is only the maximum
|
|
44
|
+
// block length (kMax). The canonical helpers are @blockcast/mmt-base
|
|
45
|
+
// `serial32Distance` / `serial32Precedes` / `isoBlockContains` /
|
|
46
|
+
// `isoBlocksBehindLowerBound`; this bundle carries its own copies (it does not
|
|
47
|
+
// depend on mmt-base), and block-order.test.ts pins them to the same vectors.
|
|
48
|
+
/** Forward RFC 1982 distance from `from` to `to` on the 32-bit SS_ID, in 0..2^32-1. */
|
|
49
|
+
export function serialDistance(from, to) {
|
|
50
|
+
return (to - from + SPAN) % SPAN;
|
|
51
|
+
}
|
|
52
|
+
/** Whether `a` precedes `b` under RFC 1982 serial comparison (SERIAL_BITS = 32). */
|
|
53
|
+
export function serialPrecedes(a, b) {
|
|
54
|
+
const distance = serialDistance(a, b);
|
|
55
|
+
return distance !== 0 && distance < HALF;
|
|
56
|
+
}
|
|
57
|
+
/** Whether `ssId` is one of the `ssbLength` consecutive SS_IDs starting at `ssStart`, mod 2^32. */
|
|
58
|
+
export function isoBlockContains(ssStart, ssbLength, ssId) {
|
|
59
|
+
return serialDistance(ssStart, ssId) < ssbLength;
|
|
60
|
+
}
|
|
61
|
+
/** Whether two SS_ID ranges `[start, start + length)` share any SS_ID, mod 2^32. */
|
|
62
|
+
export function isoBlocksOverlap(aStart, aLength, bStart, bLength) {
|
|
63
|
+
return isoBlockContains(aStart, aLength, bStart) || isoBlockContains(bStart, bLength, aStart);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* How many blocks SS_ID `a` lies behind SS_ID `b` (0 unless `a` precedes `b`):
|
|
67
|
+
* a lower bound, because an iso-ssbg1-v1 block holds at most `kMax` source
|
|
68
|
+
* symbols, so `n * kMax` SS_IDs always span at least `n` blocks. This is the
|
|
69
|
+
* one interleave-horizon metric every ISO receiver layer shares (decoder
|
|
70
|
+
* retention, worker retirement, ordered-relay settlement).
|
|
71
|
+
*/
|
|
72
|
+
export function isoBlocksBehind(a, b, kMax) {
|
|
73
|
+
if (!Number.isSafeInteger(kMax) || kMax <= 0) {
|
|
74
|
+
throw new Error(`iso-ssbg1-v1 block horizon needs a positive maximum K (got ${kMax})`);
|
|
75
|
+
}
|
|
76
|
+
return serialPrecedes(a, b) ? Math.floor(serialDistance(a, b) / kMax) : 0;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=block-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-order.js","sourceRoot":"","sources":["../src/block-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,IAAI,GAAG,aAAa,CAAC;AAC3B,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,SAAS,UAAU,CAAC,GAAW,EAAE,CAAS;IACzC,iEAAiE;IACjE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,2GAA2G;AAC3G,SAAS,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACzD,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,OAAO,QAAQ,KAAK,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC5D,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC3D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,6EAA6E;AAC7E,EAAE;AACF,0EAA0E;AAC1E,kEAAkE;AAClE,6EAA6E;AAC7E,8EAA8E;AAC9E,qEAAqE;AACrE,iEAAiE;AACjE,+EAA+E;AAC/E,8EAA8E;AAE9E,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,EAAU;IACtD,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,QAAQ,KAAK,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC;AAC1C,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,SAAiB,EAAE,IAAY;IAChF,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;AAClD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,gBAAgB,CAC/B,MAAc,EACd,OAAe,EACf,MAAc,EACd,OAAe;IAEf,OAAO,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;IACjE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,8DAA8D,IAAI,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -42,7 +42,8 @@ export declare class FecWorkerClient {
|
|
|
42
42
|
* Caller must not access data after this call — it is detached.
|
|
43
43
|
*
|
|
44
44
|
* Carries the wire-level Repair FEC Payload ID fields (ISO 23008-1 §C.5.3):
|
|
45
|
-
* - ssStart: SS_ID of first source symbol in the block (= SBN * configured K
|
|
45
|
+
* - ssStart: SS_ID of first source symbol in the block (= SBN * configured K
|
|
46
|
+
* under `k-padded-v1`; any uint32, the block key, under `iso-ssbg1-v1`)
|
|
46
47
|
* - ssbLength: authored source-symbol count (1..configured K)
|
|
47
48
|
* - rsId: repair symbol index within the block
|
|
48
49
|
*/
|
|
@@ -52,7 +53,8 @@ export declare class FecWorkerClient {
|
|
|
52
53
|
*/
|
|
53
54
|
relayBlockSig(sbn: number, sig: ArrayBuffer, hash: ArrayBuffer): void;
|
|
54
55
|
/**
|
|
55
|
-
* Trigger cleanup after a block's inactivity deadline.
|
|
56
|
+
* Trigger cleanup after a block's inactivity deadline. `currentSbn` is the
|
|
57
|
+
* block key: the SBN under `k-padded-v1`, the SS_Start under `iso-ssbg1-v1`.
|
|
56
58
|
*
|
|
57
59
|
* While one queue-drain barrier is in flight, later SBNs are coalesced into
|
|
58
60
|
* the next command without losing their individual acknowledgement identity.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fec-worker-client.d.ts","sourceRoot":"","sources":["../src/fec-worker-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAIX,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,eAAe;;IA2B3B;;;OAGG;gBACS,WAAW,EAAE,MAAM,GAAG,GAAG;IAgBrC;;;;;;OAMG;IACH,SAAS,CACR,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,WAAW,CAAC,MAAM,EAC9B,aAAa,CAAC,EAAE,WAAW,EAC3B,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,GACjC,IAAI;IAmBP;;;;;;;;;OASG;IACH,UAAU,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAC9C,IAAI;IAoBP
|
|
1
|
+
{"version":3,"file":"fec-worker-client.d.ts","sourceRoot":"","sources":["../src/fec-worker-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAIX,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,eAAe;;IA2B3B;;;OAGG;gBACS,WAAW,EAAE,MAAM,GAAG,GAAG;IAgBrC;;;;;;OAMG;IACH,SAAS,CACR,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,WAAW,CAAC,MAAM,EAC9B,aAAa,CAAC,EAAE,WAAW,EAC3B,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,GACjC,IAAI;IAmBP;;;;;;;;;OASG;IACH,UAAU,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAC9C,IAAI;IAoBP;;;;;;;;;OASG;IACH,UAAU,CACT,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,MAAM,GACR,IAAI;IAqCP;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IASrE;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBjC,8EAA8E;IAC9E,KAAK,IAAI,IAAI;IAoBb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI;IAI/D,+DAA+D;IAC/D,UAAU,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAIpD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAkB1D,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIlD,2CAA2C;IAC3C,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,KAAK,IAAI,GAAG,IAAI;IAIvE;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,OAAO,IAAI,IAAI;CA6Df"}
|
|
@@ -111,7 +111,8 @@ export class FecWorkerClient {
|
|
|
111
111
|
* Caller must not access data after this call — it is detached.
|
|
112
112
|
*
|
|
113
113
|
* Carries the wire-level Repair FEC Payload ID fields (ISO 23008-1 §C.5.3):
|
|
114
|
-
* - ssStart: SS_ID of first source symbol in the block (= SBN * configured K
|
|
114
|
+
* - ssStart: SS_ID of first source symbol in the block (= SBN * configured K
|
|
115
|
+
* under `k-padded-v1`; any uint32, the block key, under `iso-ssbg1-v1`)
|
|
115
116
|
* - ssbLength: authored source-symbol count (1..configured K)
|
|
116
117
|
* - rsId: repair symbol index within the block
|
|
117
118
|
*/
|
|
@@ -160,7 +161,8 @@ export class FecWorkerClient {
|
|
|
160
161
|
this.#worker.postMessage({ type: "relayBlockSig", sbn, sig, hash }, [sig, hash]);
|
|
161
162
|
}
|
|
162
163
|
/**
|
|
163
|
-
* Trigger cleanup after a block's inactivity deadline.
|
|
164
|
+
* Trigger cleanup after a block's inactivity deadline. `currentSbn` is the
|
|
165
|
+
* block key: the SBN under `k-padded-v1`, the SS_Start under `iso-ssbg1-v1`.
|
|
164
166
|
*
|
|
165
167
|
* While one queue-drain barrier is in flight, later SBNs are coalesced into
|
|
166
168
|
* the next command without losing their individual acknowledgement identity.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fec-worker-client.js","sourceRoot":"","sources":["../src/fec-worker-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fec-worker-client.js","sourceRoot":"","sources":["../src/fec-worker-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,21 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Types here are importable from both main thread and Worker contexts.
|
|
9
9
|
*/
|
|
10
|
+
/**
|
|
11
|
+
* FEC block profile (BLO-35597, ISO/IEC 23008-1 Annex C): the catalog
|
|
12
|
+
* `fec.blockProfile` token. Both profiles carry identical wire tuples whose
|
|
13
|
+
* block math differs, so it is required and never inferred.
|
|
14
|
+
*
|
|
15
|
+
* - `k-padded-v1` (legacy): SBN = floor(SS_ID / K), ESI = SS_ID % K;
|
|
16
|
+
* SS_Start = SBN * K; repair ESI = K + RS_ID.
|
|
17
|
+
* - `iso-ssbg1-v1` (C.3.3 ssbg_mode1): SS_ID increments by one per source
|
|
18
|
+
* packet mod 2^32; a block is `[SS_Start, SS_Start + SSB_length)` keyed by
|
|
19
|
+
* SS_Start; `k` is only the maximum SSB_length; repair ESI =
|
|
20
|
+
* SSB_length + RS_ID.
|
|
21
|
+
*
|
|
22
|
+
* Mirrors @blockcast/mmt-base `FecBlockProfile`.
|
|
23
|
+
*/
|
|
24
|
+
export type FecBlockProfile = "k-padded-v1" | "iso-ssbg1-v1";
|
|
10
25
|
/** Per-track FEC configuration. Matches design spec section 3.2 FecTrackConfig. */
|
|
11
26
|
export interface FecTrackConfig {
|
|
12
27
|
/** Codec string, e.g. 'avc1.64001f', 'mp4a.40.2' */
|
|
@@ -26,13 +41,22 @@ export interface FecTrackConfig {
|
|
|
26
41
|
sampleRate?: number;
|
|
27
42
|
/** FEC algorithm identifier: 'raptor', 'reed-solomon', 'none' */
|
|
28
43
|
algorithm: string;
|
|
29
|
-
/**
|
|
44
|
+
/** Block profile; the Worker refuses to configure without a known token. */
|
|
45
|
+
blockProfile: FecBlockProfile;
|
|
46
|
+
/** Source symbols per block (K). Under `iso-ssbg1-v1` the maximum SSB_length (kMax). */
|
|
30
47
|
k: number;
|
|
31
48
|
/** Repair symbols per block (P). NOT symbol size. */
|
|
32
49
|
repairCount: number;
|
|
33
50
|
/** Bytes per symbol */
|
|
34
51
|
symbolSize: number;
|
|
35
|
-
/**
|
|
52
|
+
/** Retained decoder horizon as a BLOCK COUNT (SBN distance), not D.
|
|
53
|
+
* `isRetiredSbn` retires blocks more than this many blocks behind
|
|
54
|
+
* `liveSbn` (serial order on SS_ID, BLO-35597 iso:5) and
|
|
55
|
+
* `MmtFecDecoder::new` documents it as "the number of interleaved blocks".
|
|
56
|
+
* Under `iso-ssbg1-v1` the distance is `isoBlocksBehind(SS_ID, live SS_ID, k)`
|
|
57
|
+
* (block-order.ts), the lower bound every ISO receiver layer shares.
|
|
58
|
+
* Never assign `deriveFecInterleaveDepth()` here — that returns media units
|
|
59
|
+
* per block, which is a different quantity (BLO-35597). */
|
|
36
60
|
interleaveDepth: number;
|
|
37
61
|
/** Interleave depth in milliseconds (D * frameDurationMs) */
|
|
38
62
|
interleaveMs: number;
|
|
@@ -49,7 +73,8 @@ export interface FecTrackConfig {
|
|
|
49
73
|
}
|
|
50
74
|
/** Per-block snapshot for live block visualization and stats. */
|
|
51
75
|
export interface FecBlockSnapshot {
|
|
52
|
-
/**
|
|
76
|
+
/** Block key: the source block number under `k-padded-v1`, the block's
|
|
77
|
+
* SS_Start under `iso-ssbg1-v1`. */
|
|
53
78
|
sbn: number;
|
|
54
79
|
/** Current block state */
|
|
55
80
|
state: "collecting" | "complete" | "recovered" | "failed";
|
|
@@ -57,9 +82,12 @@ export interface FecBlockSnapshot {
|
|
|
57
82
|
sourceReceived: number;
|
|
58
83
|
/** Number of repair symbols received */
|
|
59
84
|
repairReceived: number;
|
|
60
|
-
/** Configured source-block geometry (K) */
|
|
85
|
+
/** Configured source-block geometry (K); under `iso-ssbg1-v1` the block's SSB_length. */
|
|
61
86
|
k: number;
|
|
62
|
-
/** Authored source symbols (SSB_length) once a repair symbol declared it
|
|
87
|
+
/** Authored source symbols (SSB_length) once a repair symbol declared it.
|
|
88
|
+
* Under `iso-ssbg1-v1` a block is only known from a repair symbol, so it is
|
|
89
|
+
* always set — except on a cleanup tombstone for a block the Worker never
|
|
90
|
+
* saw, whose length nothing declared. */
|
|
63
91
|
ssbLength?: number;
|
|
64
92
|
/** Expected repair symbols (P) */
|
|
65
93
|
repairCount: number;
|
|
@@ -128,7 +156,8 @@ export interface FecTrackStats {
|
|
|
128
156
|
relayBlocksVerified: number;
|
|
129
157
|
/** Blocks with invalid relay signature */
|
|
130
158
|
relayBlocksFailed: number;
|
|
131
|
-
/**
|
|
159
|
+
/** Live media position: the newest source block number under
|
|
160
|
+
* `k-padded-v1`, the newest accepted SS_ID / SS_Start under `iso-ssbg1-v1`. */
|
|
132
161
|
liveSbn: number;
|
|
133
162
|
/** Active block snapshots */
|
|
134
163
|
blocks: FecBlockSnapshot[];
|
|
@@ -140,6 +169,51 @@ export interface FecTrackStats {
|
|
|
140
169
|
maxRecoveryMs: number;
|
|
141
170
|
/** Repair symbols rejected before WASM because their byte length did not match T. */
|
|
142
171
|
repairSymbolSizeMismatch?: number;
|
|
172
|
+
/**
|
|
173
|
+
* Source symbols whose SBN had already fallen below the retained window.
|
|
174
|
+
*
|
|
175
|
+
* This and its two peers below are dropped before WASM and narrow the
|
|
176
|
+
* explanations for a block that settles at K-1 source symbols (BLO-35597
|
|
177
|
+
* defect 2): a late symbol past retention, a symbol for a block that had
|
|
178
|
+
* already settled (complete, recovered *or failed*), or a repeated
|
|
179
|
+
* (SBN, ESI).
|
|
180
|
+
*
|
|
181
|
+
* They narrow; they do not uniquely attribute. A symbol lost in transit
|
|
182
|
+
* never reaches the worker and increments nothing, so all three reading
|
|
183
|
+
* zero on a short block means only that no *receiver-side* drop was
|
|
184
|
+
* recorded — wire loss and a short authored block both remain open. Use
|
|
185
|
+
* `FecBlockSnapshot.ssbLength` to separate them: below `k` is a genuinely
|
|
186
|
+
* short authored block, equal to `k` with fewer accepted is loss-or-late.
|
|
187
|
+
* `ssbLength` is undefined until a repair symbol declares it, in which case
|
|
188
|
+
* both stay open.
|
|
189
|
+
*
|
|
190
|
+
* All three are cumulative across decoder epochs: `configure` clears block
|
|
191
|
+
* tracking but none of them, so they stay comparable against the
|
|
192
|
+
* `sourceSymbols` denominator. Only a reset zeroes them.
|
|
193
|
+
*/
|
|
194
|
+
sourceDroppedRetired?: number;
|
|
195
|
+
/** Source symbols for a block that had already completed, recovered or failed. */
|
|
196
|
+
sourceDroppedTerminal?: number;
|
|
197
|
+
/**
|
|
198
|
+
* Source symbols repeating an (SBN, ESI) already accepted in the current
|
|
199
|
+
* epoch; `configure` clears the accepted-ESI sets.
|
|
200
|
+
*
|
|
201
|
+
* Unlike the other two, this one cannot fire once a block settles — the
|
|
202
|
+
* terminal check returns first, and marking a block terminal retires its
|
|
203
|
+
* accepted-ESI set anyway — so a non-zero value means the repeat reached
|
|
204
|
+
* the worker while the block was **still collecting**. It attributes the
|
|
205
|
+
* timing, not the origin: usually a duplicate packet on the wire,
|
|
206
|
+
* sometimes an SBN/ESI derivation collision.
|
|
207
|
+
*/
|
|
208
|
+
sourceDroppedDuplicate?: number;
|
|
209
|
+
/**
|
|
210
|
+
* `iso-ssbg1-v1` only: accepted source symbols whose block never became
|
|
211
|
+
* known (no repair symbol named a range containing them) before their
|
|
212
|
+
* SS_ID fell behind the retained horizon. They were already fed to the
|
|
213
|
+
* decoder and routed directly; this counts the bookkeeping retired with
|
|
214
|
+
* them, i.e. evidence that a block's repair symbols never arrived.
|
|
215
|
+
*/
|
|
216
|
+
sourceUnplacedRetired?: number;
|
|
143
217
|
/** Native decoder counters, converted to numbers so browser diagnostics remain JSON-safe. */
|
|
144
218
|
decoder?: {
|
|
145
219
|
sourcePackets: number;
|
|
@@ -152,16 +226,25 @@ export interface FecTrackStats {
|
|
|
152
226
|
};
|
|
153
227
|
}
|
|
154
228
|
/** Stable identities for Worker failures whose message text contains live values. */
|
|
155
|
-
export type FecWorkerErrorCode = "recovered-symbol-size-unconfigured" | "recovered-block-too-short" | "recovered-symbol-ssb-length-invalid" | "repair-symbol-size-mismatch" | "repair-ssb-length-conflict"
|
|
229
|
+
export type FecWorkerErrorCode = "recovered-symbol-size-unconfigured" | "recovered-block-too-short" | "recovered-symbol-ssb-length-invalid" | "repair-symbol-size-mismatch" | "repair-ssb-length-conflict"
|
|
230
|
+
/** `iso-ssbg1-v1`: a repair's `[SS_Start, SS_Start + SSB_length)` overlaps a different known block. */
|
|
231
|
+
| "repair-block-overlap"
|
|
232
|
+
/** `iso-ssbg1-v1`: a recovered symbol's ssbg_mode1 length field exceeds T-2 or its padding is non-zero. */
|
|
233
|
+
| "recovered-ssbg1-symbol-invalid"
|
|
234
|
+
/** `iso-ssbg1-v1`: the decoder returned a recovered block for a source the Worker could not place in a known block. */
|
|
235
|
+
| "recovered-block-unplaced" | "reset-failed" | "unknown-command" | "command-failed" | "worker-runtime" | "worker-message";
|
|
156
236
|
/** Per-frame metadata emitted with frame events from Worker. */
|
|
157
237
|
export interface FrameMeta {
|
|
158
238
|
/** ALTA verification result: true/false after check, null when ALTA not configured (AUTH-04) */
|
|
159
239
|
altaVerified: boolean | null;
|
|
160
240
|
/** Whether this frame was recovered via FEC (not received directly) */
|
|
161
241
|
recovered: boolean;
|
|
162
|
-
/**
|
|
242
|
+
/** Block key this frame belongs to: SBN (`k-padded-v1`) or SS_Start (`iso-ssbg1-v1`) */
|
|
163
243
|
sbn: number;
|
|
164
|
-
/** Encoding Symbol ID within the recovered source block (0..ssbLength-1).
|
|
244
|
+
/** Encoding Symbol ID within the recovered source block (0..ssbLength-1).
|
|
245
|
+
* Under `iso-ssbg1-v1` a recovered frame is the full T-byte ssbg_mode1
|
|
246
|
+
* symbol (length field, packet, zero padding); the Worker validates but
|
|
247
|
+
* never trims it. */
|
|
165
248
|
esi?: number;
|
|
166
249
|
/**
|
|
167
250
|
* Authored source-symbol count of the recovered block (the repair
|
|
@@ -186,9 +269,13 @@ export type FecWorkerCommand = {
|
|
|
186
269
|
} | {
|
|
187
270
|
type: "feedSource";
|
|
188
271
|
/** Flat 32-bit Source Symbol ID from the MMTP Source FEC Payload ID
|
|
189
|
-
* (ISO 23008-1 §C.5.2).
|
|
190
|
-
* and ESI = ssId % K internally — do NOT
|
|
272
|
+
* (ISO 23008-1 §C.5.2). Under `k-padded-v1` the WASM decoder derives
|
|
273
|
+
* SBN = floor(ssId/K) and ESI = ssId % K internally — do NOT
|
|
274
|
+
* pre-compute. Under `iso-ssbg1-v1` SS_IDs are consecutive per source
|
|
275
|
+
* packet mod 2^32 and the block comes from a repair's range. */
|
|
191
276
|
ssId: number;
|
|
277
|
+
/** `k-padded-v1`: the source symbol. `iso-ssbg1-v1`: the protected
|
|
278
|
+
* packet exactly, unpadded and without its SS_ID (at most T-2 bytes). */
|
|
192
279
|
data: ArrayBuffer;
|
|
193
280
|
ts: number;
|
|
194
281
|
/** Optional ALTA authenticator bytes (detached mode — 08-07 MMTP
|
|
@@ -205,14 +292,15 @@ export type FecWorkerCommand = {
|
|
|
205
292
|
altaPayloadEnd?: number;
|
|
206
293
|
} | {
|
|
207
294
|
type: "feedRepair";
|
|
208
|
-
/** SS_Start: SS_ID of the first source symbol in the block
|
|
209
|
-
*
|
|
210
|
-
*
|
|
295
|
+
/** SS_Start: SS_ID of the first source symbol in the block, from the
|
|
296
|
+
* MMTP Repair FEC Payload ID (ISO 23008-1 §C.5.3). `k-padded-v1`:
|
|
297
|
+
* = SBN * configured K. `iso-ssbg1-v1`: any uint32; the block key. */
|
|
211
298
|
ssStart: number;
|
|
212
299
|
/** Authored source-symbol count for this block; 1..configured K. */
|
|
213
300
|
ssbLength: number;
|
|
214
|
-
/** RS_ID: repair symbol index within the block; WASM maps to
|
|
215
|
-
*
|
|
301
|
+
/** RS_ID: repair symbol index within the block; WASM maps to repair
|
|
302
|
+
* ESI = configured K + RS_ID (`k-padded-v1`) or SSB_length + RS_ID
|
|
303
|
+
* (`iso-ssbg1-v1`). */
|
|
216
304
|
rsId: number;
|
|
217
305
|
data: ArrayBuffer;
|
|
218
306
|
ts: number;
|
|
@@ -233,7 +321,8 @@ export type FecWorkerCommand = {
|
|
|
233
321
|
hash: ArrayBuffer;
|
|
234
322
|
} | {
|
|
235
323
|
type: "cleanup";
|
|
236
|
-
/** Every timed-out block covered by this coalesced queue-drain barrier
|
|
324
|
+
/** Every timed-out block covered by this coalesced queue-drain barrier,
|
|
325
|
+
* by block key: SBN (`k-padded-v1`) or SS_Start (`iso-ssbg1-v1`). */
|
|
237
326
|
sbns: number[];
|
|
238
327
|
} | {
|
|
239
328
|
type: "reset";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fec-worker-types.d.ts","sourceRoot":"","sources":["../src/fec-worker-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC9B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,2CAA2C;IAC3C,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"fec-worker-types.d.ts","sourceRoot":"","sources":["../src/fec-worker-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC;AAE7D,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC9B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,2CAA2C;IAC3C,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,YAAY,EAAE,eAAe,CAAC;IAC9B,wFAAwF;IACxF,CAAC,EAAE,MAAM,CAAC;IACV,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;gEAO4D;IAC5D,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC/B,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB,sEAAsE;IACtE,oBAAoB,EAAE,OAAO,CAAC;CAC9B;AAID,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAChC;yCACqC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,CAAC,EAAE,MAAM,CAAC;IACV;;;8CAG0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,wGAAwG;IACxG,kBAAkB,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAID,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC7B,0BAA0B;IAC1B,MAAM,EAAE,cAAc,CAAC;IAEvB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IAErB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB;mFAC+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB;oFACgF;IAChF,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oEAAoE;IACpE,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;wDAEoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB;;kFAE8E;IAC9E,cAAc,EAAE,OAAO,CAAC;IACxB;;;;mDAI+C;IAC/C,iBAAiB,CAAC,EAAE,KAAK,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;IACH,wCAAwC;IACxC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAE1B;oFACgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,6CAA6C;IAC7C,sBAAsB,EAAE,MAAM,CAAC;IAE/B,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kFAAkF;IAClF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6FAA6F;IAC7F,OAAO,CAAC,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACtB,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAC3B,oCAAoC,GACpC,2BAA2B,GAC3B,qCAAqC,GACrC,6BAA6B,GAC7B,4BAA4B;AAC9B,uGAAuG;GACrG,sBAAsB;AACxB,2GAA2G;GACzG,gCAAgC;AAClC,uHAAuH;GACrH,0BAA0B,GAC1B,cAAc,GACd,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,CAAC;AAIpB,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACzB,gGAAgG;IAChG,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,GAAG,EAAE,MAAM,CAAC;IACZ;;;0BAGsB;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GACzB;IACA,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC;IAC/B;;;;OAIG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,4GAA4G;IAC5G,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;CACnC,GACD;IACA,IAAI,EAAE,YAAY,CAAC;IACnB;;;;qEAIiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb;8EAC0E;IAC1E,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX;;;;mCAI+B;IAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB;;;;+CAI2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;CACvB,GACD;IACA,IAAI,EAAE,YAAY,CAAC;IACnB;;2EAEuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB;;4BAEwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACV,GACD;IACA;;;;;;OAMG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC3B,GACD;IACA,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACjB,GACD;IACA,IAAI,EAAE,SAAS,CAAC;IAChB;0EACsE;IACtE,IAAI,EAAE,MAAM,EAAE,CAAC;CACd,GACD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE;AACnB;;;;;GAKG;GACD;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEvB,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACrC,gBAAgB,EAChB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAC/C,CAAC;AAIF,4EAA4E;AAC5E,MAAM,MAAM,cAAc,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE;AAC3B;;;;;GAKG;GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEjE,uEAAuE;AACvE,MAAM,MAAM,wBAAwB,GAAG,aAAa,GAAG,uBAAuB,CAAC"}
|