@miadi/ava8-measure 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"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"}
package/dist/fft.d.ts ADDED
@@ -0,0 +1,51 @@
1
+ /**
2
+ * A radix-2 Cooley–Tukey FFT, written out longhand.
3
+ *
4
+ * There is no npm FFT here on purpose. This package builds with `tsc` and no
5
+ * bundler, and a hand-written radix-2 is smaller than the argument about which
6
+ * package to trust — every call site in `audio.ts` transforms a power-of-two
7
+ * length, so radix-2 covers 100 % of the usage without a mixed-radix fallback
8
+ * nobody would ever exercise.
9
+ *
10
+ * The names and semantics follow `numpy.fft`, because the measurements in
11
+ * `audio.ts` are a port of a numpy program and must return the same numbers:
12
+ *
13
+ * · `rfft(x, n)` zero-pads or truncates `x` to `n` and returns `n/2 + 1`
14
+ * complex bins, exactly like `np.fft.rfft`.
15
+ * · `irfft(X, n)` inverts it, returning `n` real samples. Like numpy, the
16
+ * imaginary parts of the DC and Nyquist bins are IGNORED —
17
+ * a real signal's spectrum is real at both, and numpy's
18
+ * complex-to-real transform discards whatever is there.
19
+ * · `rfftfreq` computes `k * (1 / (n * d))`, not `k / (n * d)`. The two
20
+ * can differ by an ulp, and a band mask in `audio.ts` is
21
+ * half-open — `>= lo & < hi` — so an ulp at a bin edge is
22
+ * the difference between counting a bin and dropping it.
23
+ */
24
+ export interface Spectrum {
25
+ /** Real parts, one per bin. */
26
+ re: Float64Array;
27
+ /** Imaginary parts, one per bin. */
28
+ im: Float64Array;
29
+ }
30
+ /**
31
+ * In-place complex FFT. `inverse` conjugates the twiddles and divides by `n`,
32
+ * so `fft(re, im, true)` is the exact inverse of `fft(re, im)`.
33
+ */
34
+ export declare function fft(re: Float64Array, im: Float64Array, inverse?: boolean): void;
35
+ /**
36
+ * Real-input FFT: `n/2 + 1` bins from `n` real samples, `n` a power of two.
37
+ *
38
+ * Packs the real signal into a half-length complex transform and untangles it,
39
+ * so the cost is one `n/2` FFT rather than one `n` FFT. `out` may be supplied
40
+ * to transform without allocating — its arrays must hold `n/2 + 1` values.
41
+ */
42
+ export declare function rfft(x: ArrayLike<number>, n?: number, out?: Spectrum): Spectrum;
43
+ /**
44
+ * Inverse real FFT: `n` real samples from `n/2 + 1` bins, `n` a power of two.
45
+ *
46
+ * The imaginary parts of bin 0 and bin `n/2` are ignored, matching numpy.
47
+ */
48
+ export declare function irfft(spec: Spectrum, n?: number, out?: Float64Array): Float64Array;
49
+ /** Bin centre frequencies for `rfft`, as `np.fft.rfftfreq(n, d)`. */
50
+ export declare function rfftfreq(n: number, d?: number): Float64Array;
51
+ //# sourceMappingURL=fft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../src/fft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,EAAE,EAAE,YAAY,CAAA;IAChB,oCAAoC;IACpC,EAAE,EAAE,YAAY,CAAA;CACjB;AAyDD;;;GAGG;AACH,wBAAgB,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,UAAQ,GAAG,IAAI,CA2C7E;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CA0D/E;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,YAAY,CAqClF;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAM,GAAG,YAAY,CAMzD"}
package/dist/fft.js ADDED
@@ -0,0 +1,246 @@
1
+ /**
2
+ * A radix-2 Cooley–Tukey FFT, written out longhand.
3
+ *
4
+ * There is no npm FFT here on purpose. This package builds with `tsc` and no
5
+ * bundler, and a hand-written radix-2 is smaller than the argument about which
6
+ * package to trust — every call site in `audio.ts` transforms a power-of-two
7
+ * length, so radix-2 covers 100 % of the usage without a mixed-radix fallback
8
+ * nobody would ever exercise.
9
+ *
10
+ * The names and semantics follow `numpy.fft`, because the measurements in
11
+ * `audio.ts` are a port of a numpy program and must return the same numbers:
12
+ *
13
+ * · `rfft(x, n)` zero-pads or truncates `x` to `n` and returns `n/2 + 1`
14
+ * complex bins, exactly like `np.fft.rfft`.
15
+ * · `irfft(X, n)` inverts it, returning `n` real samples. Like numpy, the
16
+ * imaginary parts of the DC and Nyquist bins are IGNORED —
17
+ * a real signal's spectrum is real at both, and numpy's
18
+ * complex-to-real transform discards whatever is there.
19
+ * · `rfftfreq` computes `k * (1 / (n * d))`, not `k / (n * d)`. The two
20
+ * can differ by an ulp, and a band mask in `audio.ts` is
21
+ * half-open — `>= lo & < hi` — so an ulp at a bin edge is
22
+ * the difference between counting a bin and dropping it.
23
+ */
24
+ const TWIDDLES = new Map();
25
+ /** `e^(-2πik/n)` for `k = 0 … n/2`, cached per size. */
26
+ function twiddles(n) {
27
+ const hit = TWIDDLES.get(n);
28
+ if (hit)
29
+ return hit;
30
+ const half = n >> 1;
31
+ const cos = new Float64Array(half + 1);
32
+ const sin = new Float64Array(half + 1);
33
+ for (let k = 0; k <= half; k += 1) {
34
+ const angle = (-2 * Math.PI * k) / n;
35
+ cos[k] = Math.cos(angle);
36
+ sin[k] = Math.sin(angle);
37
+ }
38
+ // Pin the cardinal angles. `Math.sin(-Math.PI)` is -1.22e-16 and
39
+ // `Math.cos(-Math.PI/2)` is 6.12e-17; left alone they smear a spurious
40
+ // imaginary part onto bins that are real by construction.
41
+ cos[0] = 1;
42
+ sin[0] = 0;
43
+ if (half >= 1) {
44
+ cos[half] = -1;
45
+ sin[half] = 0;
46
+ }
47
+ if (n % 4 === 0) {
48
+ cos[n >> 2] = 0;
49
+ sin[n >> 2] = -1;
50
+ }
51
+ const table = { cos, sin };
52
+ TWIDDLES.set(n, table);
53
+ return table;
54
+ }
55
+ /**
56
+ * Reusable half-size work buffers for `irfft`, one per transform length.
57
+ *
58
+ * Every index is written before it is read on each call, so the reuse is
59
+ * invisible — but it does make `irfft` non-reentrant, which costs nothing
60
+ * because it takes no callback and cannot be re-entered.
61
+ */
62
+ const WORK = new Map();
63
+ function work(n) {
64
+ const hit = WORK.get(n);
65
+ if (hit)
66
+ return hit;
67
+ const made = { re: new Float64Array(n), im: new Float64Array(n) };
68
+ WORK.set(n, made);
69
+ return made;
70
+ }
71
+ function assertPow2(n, what) {
72
+ if (!Number.isInteger(n) || n < 1 || (n & (n - 1)) !== 0) {
73
+ throw new RangeError(`${what} must be a positive power of two, got ${n}`);
74
+ }
75
+ }
76
+ /**
77
+ * In-place complex FFT. `inverse` conjugates the twiddles and divides by `n`,
78
+ * so `fft(re, im, true)` is the exact inverse of `fft(re, im)`.
79
+ */
80
+ export function fft(re, im, inverse = false) {
81
+ const n = re.length;
82
+ assertPow2(n, "fft length");
83
+ if (im.length !== n)
84
+ throw new RangeError("re and im must be the same length");
85
+ for (let i = 1, j = 0; i < n; i += 1) {
86
+ let bit = n >> 1;
87
+ for (; j & bit; bit >>= 1)
88
+ j ^= bit;
89
+ j ^= bit;
90
+ if (i < j) {
91
+ let t = re[i];
92
+ re[i] = re[j];
93
+ re[j] = t;
94
+ t = im[i];
95
+ im[i] = im[j];
96
+ im[j] = t;
97
+ }
98
+ }
99
+ const { cos, sin } = twiddles(n);
100
+ for (let len = 2; len <= n; len <<= 1) {
101
+ const half = len >> 1;
102
+ const step = n / len;
103
+ for (let base = 0; base < n; base += len) {
104
+ for (let k = 0; k < half; k += 1) {
105
+ const t = k * step;
106
+ const wr = cos[t];
107
+ const wi = inverse ? -sin[t] : sin[t];
108
+ const a = base + k;
109
+ const b = a + half;
110
+ const xr = re[b] * wr - im[b] * wi;
111
+ const xi = re[b] * wi + im[b] * wr;
112
+ re[b] = re[a] - xr;
113
+ im[b] = im[a] - xi;
114
+ re[a] = re[a] + xr;
115
+ im[a] = im[a] + xi;
116
+ }
117
+ }
118
+ }
119
+ if (inverse) {
120
+ for (let i = 0; i < n; i += 1) {
121
+ re[i] /= n;
122
+ im[i] /= n;
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Real-input FFT: `n/2 + 1` bins from `n` real samples, `n` a power of two.
128
+ *
129
+ * Packs the real signal into a half-length complex transform and untangles it,
130
+ * so the cost is one `n/2` FFT rather than one `n` FFT. `out` may be supplied
131
+ * to transform without allocating — its arrays must hold `n/2 + 1` values.
132
+ */
133
+ export function rfft(x, n, out) {
134
+ const size = n ?? x.length;
135
+ assertPow2(size, "rfft length");
136
+ const half = size >> 1;
137
+ const re = out?.re ?? new Float64Array(half + 1);
138
+ const im = out?.im ?? new Float64Array(half + 1);
139
+ if (re.length < half + 1 || im.length < half + 1) {
140
+ throw new RangeError(`rfft output needs ${half + 1} bins`);
141
+ }
142
+ const avail = Math.min(x.length, size);
143
+ if (size === 1) {
144
+ re[0] = avail > 0 ? x[0] : 0;
145
+ im[0] = 0;
146
+ return { re, im };
147
+ }
148
+ // z[j] = x[2j] + i·x[2j+1]
149
+ const zr = re.subarray(0, half);
150
+ const zi = im.subarray(0, half);
151
+ for (let j = 0; j < half; j += 1) {
152
+ const a = 2 * j;
153
+ zr[j] = a < avail ? x[a] : 0;
154
+ zi[j] = a + 1 < avail ? x[a + 1] : 0;
155
+ }
156
+ fft(zr, zi, false);
157
+ const { cos, sin } = twiddles(size);
158
+ const z0r = zr[0];
159
+ const z0i = zi[0];
160
+ // Fe[k] = (Z[k] + conj(Z[-k]))/2, Fo[k] = (Z[k] - conj(Z[-k]))/(2i),
161
+ // X[k] = Fe[k] + W^k·Fo[k]. Bins k and half-k are produced together
162
+ // because they read each other, and `zr`/`zi` alias the output.
163
+ for (let k = 1; k <= half >> 1; k += 1) {
164
+ const j = half - k;
165
+ const ar = zr[k];
166
+ const ai = zi[k];
167
+ const br = zr[j];
168
+ const bi = zi[j];
169
+ const ek = 0.5 * (ar + br);
170
+ const eki = 0.5 * (ai - bi);
171
+ const ok = 0.5 * (ai + bi);
172
+ const oki = -0.5 * (ar - br);
173
+ re[k] = ek + ok * cos[k] - oki * sin[k];
174
+ im[k] = eki + ok * sin[k] + oki * cos[k];
175
+ if (j !== k) {
176
+ // the mirrored bin: swap the roles of Z[k] and Z[half-k]
177
+ const ej = 0.5 * (br + ar);
178
+ const eji = 0.5 * (bi - ai);
179
+ const oj = 0.5 * (bi + ai);
180
+ const oji = -0.5 * (br - ar);
181
+ re[j] = ej + oj * cos[j] - oji * sin[j];
182
+ im[j] = eji + oj * sin[j] + oji * cos[j];
183
+ }
184
+ }
185
+ // DC and Nyquist fall out of Z[0] alone, and are real by construction.
186
+ re[0] = z0r + z0i;
187
+ im[0] = 0;
188
+ re[half] = z0r - z0i;
189
+ im[half] = 0;
190
+ return { re, im };
191
+ }
192
+ /**
193
+ * Inverse real FFT: `n` real samples from `n/2 + 1` bins, `n` a power of two.
194
+ *
195
+ * The imaginary parts of bin 0 and bin `n/2` are ignored, matching numpy.
196
+ */
197
+ export function irfft(spec, n, out) {
198
+ const size = n ?? (spec.re.length - 1) * 2;
199
+ assertPow2(size, "irfft length");
200
+ const half = size >> 1;
201
+ const res = out ?? new Float64Array(size);
202
+ if (res.length < size)
203
+ throw new RangeError(`irfft output needs ${size} samples`);
204
+ const bins = Math.min(spec.re.length, spec.im.length);
205
+ const xr = (k) => (k < bins ? spec.re[k] : 0);
206
+ const xi = (k) => (k === 0 || k === half || k >= bins ? 0 : spec.im[k]);
207
+ if (size === 1) {
208
+ res[0] = xr(0);
209
+ return res;
210
+ }
211
+ const { re: zr, im: zi } = work(half);
212
+ const { cos, sin } = twiddles(size);
213
+ for (let k = 0; k < half; k += 1) {
214
+ const j = half - k;
215
+ const ar = xr(k);
216
+ const ai = xi(k);
217
+ const br = xr(j);
218
+ const bi = xi(j);
219
+ const fer = 0.5 * (ar + br);
220
+ const fei = 0.5 * (ai - bi);
221
+ const gr = 0.5 * (ar - br);
222
+ const gi = 0.5 * (ai + bi);
223
+ // Fo[k] = G·conj(W^k)
224
+ const for_ = gr * cos[k] + gi * sin[k];
225
+ const foi = gi * cos[k] - gr * sin[k];
226
+ zr[k] = fer - foi;
227
+ zi[k] = fei + for_;
228
+ }
229
+ fft(zr, zi, true);
230
+ for (let j = 0; j < half; j += 1) {
231
+ res[2 * j] = zr[j];
232
+ res[2 * j + 1] = zi[j];
233
+ }
234
+ return res;
235
+ }
236
+ /** Bin centre frequencies for `rfft`, as `np.fft.rfftfreq(n, d)`. */
237
+ export function rfftfreq(n, d = 1.0) {
238
+ if (!Number.isInteger(n) || n < 1)
239
+ throw new RangeError(`rfftfreq needs n >= 1, got ${n}`);
240
+ const val = 1.0 / (n * d);
241
+ const out = new Float64Array((n >> 1) + 1);
242
+ for (let k = 0; k < out.length; k += 1)
243
+ out[k] = k * val;
244
+ return out;
245
+ }
246
+ //# sourceMappingURL=fft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fft.js","sourceRoot":"","sources":["../src/fft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoD,CAAA;AAE5E,wDAAwD;AACxD,SAAS,QAAQ,CAAC,CAAS;IACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC3B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAA;IACnB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;IACnB,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IACtC,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IACD,iEAAiE;IACjE,uEAAuE;IACvE,0DAA0D;IAC1D,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACV,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACV,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACf,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACtB,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkD,CAAA;AAEtE,SAAS,IAAI,CAAC,CAAS;IACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,GAAG;QAAE,OAAO,GAAG,CAAA;IACnB,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACjB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,UAAU,CAAC,CAAS,EAAE,IAAY;IACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,yCAAyC,CAAC,EAAE,CAAC,CAAA;IAC3E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,EAAgB,EAAE,EAAgB,EAAE,OAAO,GAAG,KAAK;IACrE,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAA;IACnB,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IAC3B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAA;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;YAAE,CAAC,IAAI,GAAG,CAAA;QACnC,CAAC,IAAI,GAAG,CAAA;QACR,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACb,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACb,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACT,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACT,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACb,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAChC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAA;QACpB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;gBAClB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;gBACjB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACrC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;gBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;gBAClB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAC,CAAoB,EAAE,CAAU,EAAE,GAAc;IACnE,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;IAC1B,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAA;IACtB,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAChD,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,qBAAqB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5D,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACT,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;IACnB,CAAC;IACD,2BAA2B;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACf,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IACD,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IAClB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IACjB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IACjB,qEAAqE;IACrE,oEAAoE;IACpE,gEAAgE;IAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAClB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3B,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1B,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACvC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,yDAAyD;YACzD,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3B,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1B,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YACvC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,uEAAuE;IACvE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;IACjB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACT,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;IACpB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAc,EAAE,CAAU,EAAE,GAAkB;IAClE,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAC1C,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAA;IACtB,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,sBAAsB,IAAI,UAAU,CAAC,CAAA;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IACrD,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACvF,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAClB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3B,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1B,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1B,sBAAsB;QACtB,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACrC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;QACjB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAA;IACpB,CAAC;IACD,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAClB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAC,GAAG,GAAG;IACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAA;IAC1F,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACzB,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACxD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * `@miadi/ava8-measure` — read a rendered artefact and hold it to a claim.
3
+ *
4
+ * Everything else in the family writes. This reads back, and the difference is
5
+ * the whole point: a generator's header states an intention, and at least three
6
+ * tools sit between that intention and the bytes on disk. Each of them has
7
+ * silently changed something at least once.
8
+ *
9
+ * The three measurement surfaces stay behind namespaces, because they are
10
+ * three different subjects and their vocabularies collide on purpose — `read`
11
+ * means one thing for a MIDI file and another for a movement capture, and
12
+ * flattening them into one namespace would force one of them to be renamed to
13
+ * something less honest.
14
+ *
15
+ * ```js
16
+ * import { midi, verify } from "@miadi/ava8-measure"
17
+ *
18
+ * const m = midi.read(bytes)
19
+ * const verdict = verify(bytes, { voidBand: {lo: 45, hi: 53}, mode: "ddorian" })
20
+ * if (!verdict.ok) for (const f of verdict.failed) console.error(f.detail)
21
+ * ```
22
+ */
23
+ export * as midi from "./midi.js";
24
+ export * as movement from "./movement.js";
25
+ export * as fft from "./fft.js";
26
+ export * as audio from "./audio.js";
27
+ import * as midiNS from "./midi.js";
28
+ /**
29
+ * What a piece says about itself.
30
+ *
31
+ * Every field is optional and every field present becomes one finding. A claim
32
+ * nobody made is not a claim that passed — `verify` reports which claims it
33
+ * actually checked, so an empty claim object cannot read as a clean bill.
34
+ */
35
+ export interface Claim {
36
+ /** A register band that must contain no melodic note. Channel 9 is excluded. */
37
+ readonly voidBand?: {
38
+ readonly lo: number;
39
+ readonly hi: number;
40
+ readonly name?: string;
41
+ };
42
+ /** A mode spelling `@miadi/ava8-atelier` can parse, e.g. `"ddorian"`. */
43
+ readonly mode?: string;
44
+ /** Minimum share of duration inside that mode. Defaults to 1 — exactly pure. */
45
+ readonly minPurity?: number;
46
+ /** Tempo values in beats per minute, in order, as the piece claims to change them. */
47
+ readonly tempos?: readonly number[];
48
+ /** Tolerance in bpm when matching tempos. Defaults to 0.5. */
49
+ readonly tempoTolerance?: number;
50
+ /** The eighth-note positions the kick claims to land on, e.g. `[0, 2, 4, 6]`. */
51
+ readonly kickPositions?: readonly number[];
52
+ /** Total length in seconds, and how far off is allowed. */
53
+ readonly seconds?: {
54
+ readonly value: number;
55
+ readonly tolerance: number;
56
+ };
57
+ /** Another rendering this one claims to be the same material as. */
58
+ readonly source?: Uint8Array;
59
+ /** How `source` must match: note-for-note, or the same multiset in any order. */
60
+ readonly sourceMatch?: "notes" | "multiset";
61
+ /** The number of notes the piece claims to have. */
62
+ readonly noteCount?: number;
63
+ }
64
+ /** One claim, checked. */
65
+ export interface Finding {
66
+ /** Which claim this is — `"voidBand"`, `"mode"`, `"tempos"`, … */
67
+ readonly claim: string;
68
+ /** Did the artefact hold it. */
69
+ readonly held: boolean;
70
+ /** What was claimed, as the caller stated it. */
71
+ readonly claimed: unknown;
72
+ /** What the file actually contains. */
73
+ readonly found: unknown;
74
+ /** A sentence a person can act on. */
75
+ readonly detail: string;
76
+ }
77
+ /** The verdict on a whole artefact. */
78
+ export interface Verdict {
79
+ /** True only when every claim checked held. */
80
+ readonly ok: boolean;
81
+ /** Every claim, in the order they were checked. */
82
+ readonly findings: readonly Finding[];
83
+ /** Just the ones that failed. */
84
+ readonly failed: readonly Finding[];
85
+ /** The names of the claims actually checked — an empty list is not a pass. */
86
+ readonly checked: readonly string[];
87
+ /** The parsed file, so a caller can ask further questions without re-reading. */
88
+ readonly read: midiNS.MidiRead;
89
+ }
90
+ /**
91
+ * Hold a rendered MIDI to what its author says about it.
92
+ *
93
+ * Nothing here trusts a generator's header. Every number comes out of the
94
+ * bytes.
95
+ *
96
+ * @param bytes the rendered file — not the ABC, not the score, the artefact
97
+ * @param claim what the piece says about itself
98
+ * @param parseMode a mode parser, normally `parseMode` from `@miadi/ava8-atelier`.
99
+ * It is injected rather than imported so that this function stays usable
100
+ * when a caller has their own vocabulary, and so a missing mode name is the
101
+ * caller's error rather than a silent pass.
102
+ */
103
+ export declare function verify(bytes: Uint8Array, claim: Claim, parseMode?: (spec: string) => number[]): Verdict;
104
+ /**
105
+ * One line per finding, for a terminal.
106
+ *
107
+ * A verdict with nothing checked prints as such rather than as a pass — the
108
+ * shape of the output has to make "I verified nothing" look different from
109
+ * "I verified everything and it held".
110
+ */
111
+ export declare function formatVerdict(verdict: Verdict): string;
112
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AAOnC;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxF,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACzE,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC5B,iFAAiF;IACjF,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IAC3C,oDAAoD;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,0BAA0B;AAC1B,MAAM,WAAW,OAAO;IACtB,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,uCAAuC;AACvC,MAAM,WAAW,OAAO;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAA;CAC/B;AAoBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,EACZ,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,GACrC,OAAO,CAoLT;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAYtD"}